Implement BE8 support for ARM.
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2017 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 "observer.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 ignore_command (char *, int);
100
101 static void breakpoint_re_set_default (struct breakpoint *);
102
103 static void
104   create_sals_from_location_default (const struct event_location *location,
105                                      struct linespec_result *canonical,
106                                      enum bptype type_wanted);
107
108 static void create_breakpoints_sal_default (struct gdbarch *,
109                                             struct linespec_result *,
110                                             gdb::unique_xmalloc_ptr<char>,
111                                             gdb::unique_xmalloc_ptr<char>,
112                                             enum bptype,
113                                             enum bpdisp, int, int,
114                                             int,
115                                             const struct breakpoint_ops *,
116                                             int, int, int, unsigned);
117
118 static std::vector<symtab_and_line> decode_location_default
119   (struct breakpoint *b, const struct event_location *location,
120    struct program_space *search_pspace);
121
122 static void clear_command (char *, int);
123
124 static int can_use_hardware_watchpoint (struct value *);
125
126 static void mention (struct breakpoint *);
127
128 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
129                                                                enum bptype,
130                                                                const struct breakpoint_ops *);
131 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
132                                                        const struct symtab_and_line *);
133
134 /* This function is used in gdbtk sources and thus can not be made
135    static.  */
136 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
137                                        struct symtab_and_line,
138                                        enum bptype,
139                                        const struct breakpoint_ops *);
140
141 static struct breakpoint *
142   momentary_breakpoint_from_master (struct breakpoint *orig,
143                                     enum bptype type,
144                                     const struct breakpoint_ops *ops,
145                                     int loc_enabled);
146
147 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
148
149 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
150                                             CORE_ADDR bpaddr,
151                                             enum bptype bptype);
152
153 static void describe_other_breakpoints (struct gdbarch *,
154                                         struct program_space *, CORE_ADDR,
155                                         struct obj_section *, int);
156
157 static int watchpoint_locations_match (struct bp_location *loc1,
158                                        struct bp_location *loc2);
159
160 static int breakpoint_location_address_match (struct bp_location *bl,
161                                               struct address_space *aspace,
162                                               CORE_ADDR addr);
163
164 static int breakpoint_location_address_range_overlap (struct bp_location *,
165                                                       struct address_space *,
166                                                       CORE_ADDR, int);
167
168 static void info_breakpoints_command (char *, int);
169
170 static void info_watchpoints_command (char *, int);
171
172 static void commands_command (char *, int);
173
174 static void condition_command (char *, int);
175
176 static int remove_breakpoint (struct bp_location *);
177 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
178
179 static enum print_stop_action print_bp_stop_message (bpstat bs);
180
181 static int hw_breakpoint_used_count (void);
182
183 static int hw_watchpoint_use_count (struct breakpoint *);
184
185 static int hw_watchpoint_used_count_others (struct breakpoint *except,
186                                             enum bptype type,
187                                             int *other_type_used);
188
189 static void hbreak_command (char *, int);
190
191 static void thbreak_command (char *, int);
192
193 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
194                                     int count);
195
196 static void stop_command (char *arg, int from_tty);
197
198 static void free_bp_location (struct bp_location *loc);
199 static void incref_bp_location (struct bp_location *loc);
200 static void decref_bp_location (struct bp_location **loc);
201
202 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
203
204 /* update_global_location_list's modes of operation wrt to whether to
205    insert locations now.  */
206 enum ugll_insert_mode
207 {
208   /* Don't insert any breakpoint locations into the inferior, only
209      remove already-inserted locations that no longer should be
210      inserted.  Functions that delete a breakpoint or breakpoints
211      should specify this mode, so that deleting a breakpoint doesn't
212      have the side effect of inserting the locations of other
213      breakpoints that are marked not-inserted, but should_be_inserted
214      returns true on them.
215
216      This behavior is useful is situations close to tear-down -- e.g.,
217      after an exec, while the target still has execution, but
218      breakpoint shadows of the previous executable image should *NOT*
219      be restored to the new image; or before detaching, where the
220      target still has execution and wants to delete breakpoints from
221      GDB's lists, and all breakpoints had already been removed from
222      the inferior.  */
223   UGLL_DONT_INSERT,
224
225   /* May insert breakpoints iff breakpoints_should_be_inserted_now
226      claims breakpoints should be inserted now.  */
227   UGLL_MAY_INSERT,
228
229   /* Insert locations now, irrespective of
230      breakpoints_should_be_inserted_now.  E.g., say all threads are
231      stopped right now, and the user did "continue".  We need to
232      insert breakpoints _before_ resuming the target, but
233      UGLL_MAY_INSERT wouldn't insert them, because
234      breakpoints_should_be_inserted_now returns false at that point,
235      as no thread is running yet.  */
236   UGLL_INSERT
237 };
238
239 static void update_global_location_list (enum ugll_insert_mode);
240
241 static void update_global_location_list_nothrow (enum ugll_insert_mode);
242
243 static int is_hardware_watchpoint (const struct breakpoint *bpt);
244
245 static void insert_breakpoint_locations (void);
246
247 static void info_tracepoints_command (char *, int);
248
249 static void enable_trace_command (char *, int);
250
251 static void disable_trace_command (char *, int);
252
253 static void trace_pass_command (char *, int);
254
255 static void set_tracepoint_count (int num);
256
257 static int is_masked_watchpoint (const struct breakpoint *b);
258
259 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
260
261 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
262    otherwise.  */
263
264 static int strace_marker_p (struct breakpoint *b);
265
266 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
267    that are implemented on top of software or hardware breakpoints
268    (user breakpoints, internal and momentary breakpoints, etc.).  */
269 static struct breakpoint_ops bkpt_base_breakpoint_ops;
270
271 /* Internal breakpoints class type.  */
272 static struct breakpoint_ops internal_breakpoint_ops;
273
274 /* Momentary breakpoints class type.  */
275 static struct breakpoint_ops momentary_breakpoint_ops;
276
277 /* The breakpoint_ops structure to be used in regular user created
278    breakpoints.  */
279 struct breakpoint_ops bkpt_breakpoint_ops;
280
281 /* Breakpoints set on probes.  */
282 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
283
284 /* Dynamic printf class type.  */
285 struct breakpoint_ops dprintf_breakpoint_ops;
286
287 /* The style in which to perform a dynamic printf.  This is a user
288    option because different output options have different tradeoffs;
289    if GDB does the printing, there is better error handling if there
290    is a problem with any of the arguments, but using an inferior
291    function lets you have special-purpose printers and sending of
292    output to the same place as compiled-in print functions.  */
293
294 static const char dprintf_style_gdb[] = "gdb";
295 static const char dprintf_style_call[] = "call";
296 static const char dprintf_style_agent[] = "agent";
297 static const char *const dprintf_style_enums[] = {
298   dprintf_style_gdb,
299   dprintf_style_call,
300   dprintf_style_agent,
301   NULL
302 };
303 static const char *dprintf_style = dprintf_style_gdb;
304
305 /* The function to use for dynamic printf if the preferred style is to
306    call into the inferior.  The value is simply a string that is
307    copied into the command, so it can be anything that GDB can
308    evaluate to a callable address, not necessarily a function name.  */
309
310 static char *dprintf_function;
311
312 /* The channel to use for dynamic printf if the preferred style is to
313    call into the inferior; if a nonempty string, it will be passed to
314    the call as the first argument, with the format string as the
315    second.  As with the dprintf function, this can be anything that
316    GDB knows how to evaluate, so in addition to common choices like
317    "stderr", this could be an app-specific expression like
318    "mystreams[curlogger]".  */
319
320 static char *dprintf_channel;
321
322 /* True if dprintf commands should continue to operate even if GDB
323    has disconnected.  */
324 static int disconnected_dprintf = 1;
325
326 struct command_line *
327 breakpoint_commands (struct breakpoint *b)
328 {
329   return b->commands ? b->commands.get () : NULL;
330 }
331
332 /* Flag indicating that a command has proceeded the inferior past the
333    current breakpoint.  */
334
335 static int breakpoint_proceeded;
336
337 const char *
338 bpdisp_text (enum bpdisp disp)
339 {
340   /* NOTE: the following values are a part of MI protocol and
341      represent values of 'disp' field returned when inferior stops at
342      a breakpoint.  */
343   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
344
345   return bpdisps[(int) disp];
346 }
347
348 /* Prototypes for exported functions.  */
349 /* If FALSE, gdb will not use hardware support for watchpoints, even
350    if such is available.  */
351 static int can_use_hw_watchpoints;
352
353 static void
354 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
355                              struct cmd_list_element *c,
356                              const char *value)
357 {
358   fprintf_filtered (file,
359                     _("Debugger's willingness to use "
360                       "watchpoint hardware is %s.\n"),
361                     value);
362 }
363
364 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
365    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
366    for unrecognized breakpoint locations.
367    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
368 static enum auto_boolean pending_break_support;
369 static void
370 show_pending_break_support (struct ui_file *file, int from_tty,
371                             struct cmd_list_element *c,
372                             const char *value)
373 {
374   fprintf_filtered (file,
375                     _("Debugger's behavior regarding "
376                       "pending breakpoints is %s.\n"),
377                     value);
378 }
379
380 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
381    set with "break" but falling in read-only memory.
382    If 0, gdb will warn about such breakpoints, but won't automatically
383    use hardware breakpoints.  */
384 static int automatic_hardware_breakpoints;
385 static void
386 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
387                                      struct cmd_list_element *c,
388                                      const char *value)
389 {
390   fprintf_filtered (file,
391                     _("Automatic usage of hardware breakpoints is %s.\n"),
392                     value);
393 }
394
395 /* If on, GDB keeps breakpoints inserted even if the inferior is
396    stopped, and immediately inserts any new breakpoints as soon as
397    they're created.  If off (default), GDB keeps breakpoints off of
398    the target as long as possible.  That is, it delays inserting
399    breakpoints until the next resume, and removes them again when the
400    target fully stops.  This is a bit safer in case GDB crashes while
401    processing user input.  */
402 static int always_inserted_mode = 0;
403
404 static void
405 show_always_inserted_mode (struct ui_file *file, int from_tty,
406                      struct cmd_list_element *c, const char *value)
407 {
408   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
409                     value);
410 }
411
412 /* See breakpoint.h.  */
413
414 int
415 breakpoints_should_be_inserted_now (void)
416 {
417   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
418     {
419       /* If breakpoints are global, they should be inserted even if no
420          thread under gdb's control is running, or even if there are
421          no threads under GDB's control yet.  */
422       return 1;
423     }
424   else if (target_has_execution)
425     {
426       struct thread_info *tp;
427
428       if (always_inserted_mode)
429         {
430           /* The user wants breakpoints inserted even if all threads
431              are stopped.  */
432           return 1;
433         }
434
435       if (threads_are_executing ())
436         return 1;
437
438       /* Don't remove breakpoints yet if, even though all threads are
439          stopped, we still have events to process.  */
440       ALL_NON_EXITED_THREADS (tp)
441         if (tp->resumed
442             && tp->suspend.waitstatus_pending_p)
443           return 1;
444     }
445   return 0;
446 }
447
448 static const char condition_evaluation_both[] = "host or target";
449
450 /* Modes for breakpoint condition evaluation.  */
451 static const char condition_evaluation_auto[] = "auto";
452 static const char condition_evaluation_host[] = "host";
453 static const char condition_evaluation_target[] = "target";
454 static const char *const condition_evaluation_enums[] = {
455   condition_evaluation_auto,
456   condition_evaluation_host,
457   condition_evaluation_target,
458   NULL
459 };
460
461 /* Global that holds the current mode for breakpoint condition evaluation.  */
462 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
463
464 /* Global that we use to display information to the user (gets its value from
465    condition_evaluation_mode_1.  */
466 static const char *condition_evaluation_mode = condition_evaluation_auto;
467
468 /* Translate a condition evaluation mode MODE into either "host"
469    or "target".  This is used mostly to translate from "auto" to the
470    real setting that is being used.  It returns the translated
471    evaluation mode.  */
472
473 static const char *
474 translate_condition_evaluation_mode (const char *mode)
475 {
476   if (mode == condition_evaluation_auto)
477     {
478       if (target_supports_evaluation_of_breakpoint_conditions ())
479         return condition_evaluation_target;
480       else
481         return condition_evaluation_host;
482     }
483   else
484     return mode;
485 }
486
487 /* Discovers what condition_evaluation_auto translates to.  */
488
489 static const char *
490 breakpoint_condition_evaluation_mode (void)
491 {
492   return translate_condition_evaluation_mode (condition_evaluation_mode);
493 }
494
495 /* Return true if GDB should evaluate breakpoint conditions or false
496    otherwise.  */
497
498 static int
499 gdb_evaluates_breakpoint_condition_p (void)
500 {
501   const char *mode = breakpoint_condition_evaluation_mode ();
502
503   return (mode == condition_evaluation_host);
504 }
505
506 /* Are we executing breakpoint commands?  */
507 static int executing_breakpoint_commands;
508
509 /* Are overlay event breakpoints enabled? */
510 static int overlay_events_enabled;
511
512 /* See description in breakpoint.h. */
513 int target_exact_watchpoints = 0;
514
515 /* Walk the following statement or block through all breakpoints.
516    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
517    current breakpoint.  */
518
519 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
520
521 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
522         for (B = breakpoint_chain;      \
523              B ? (TMP=B->next, 1): 0;   \
524              B = TMP)
525
526 /* Similar iterator for the low-level breakpoints.  SAFE variant is
527    not provided so update_global_location_list must not be called
528    while executing the block of ALL_BP_LOCATIONS.  */
529
530 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
531         for (BP_TMP = bp_locations;                                     \
532              BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
533              BP_TMP++)
534
535 /* Iterates through locations with address ADDRESS for the currently selected
536    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
537    to where the loop should start from.
538    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
539    appropriate location to start with.  */
540
541 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
542         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
543              BP_LOCP_TMP = BP_LOCP_START;                               \
544              BP_LOCP_START                                              \
545              && (BP_LOCP_TMP < bp_locations + bp_locations_count        \
546              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
547              BP_LOCP_TMP++)
548
549 /* Iterator for tracepoints only.  */
550
551 #define ALL_TRACEPOINTS(B)  \
552   for (B = breakpoint_chain; B; B = B->next)  \
553     if (is_tracepoint (B))
554
555 /* Chains of all breakpoints defined.  */
556
557 struct breakpoint *breakpoint_chain;
558
559 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS.  */
560
561 static struct bp_location **bp_locations;
562
563 /* Number of elements of BP_LOCATIONS.  */
564
565 static unsigned bp_locations_count;
566
567 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
568    ADDRESS for the current elements of BP_LOCATIONS which get a valid
569    result from bp_location_has_shadow.  You can use it for roughly
570    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
571    an address you need to read.  */
572
573 static CORE_ADDR bp_locations_placed_address_before_address_max;
574
575 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
576    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
577    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
578    You can use it for roughly limiting the subrange of BP_LOCATIONS to
579    scan for shadow bytes for an address you need to read.  */
580
581 static CORE_ADDR bp_locations_shadow_len_after_address_max;
582
583 /* The locations that no longer correspond to any breakpoint, unlinked
584    from the bp_locations array, but for which a hit may still be
585    reported by a target.  */
586 VEC(bp_location_p) *moribund_locations = NULL;
587
588 /* Number of last breakpoint made.  */
589
590 static int breakpoint_count;
591
592 /* The value of `breakpoint_count' before the last command that
593    created breakpoints.  If the last (break-like) command created more
594    than one breakpoint, then the difference between BREAKPOINT_COUNT
595    and PREV_BREAKPOINT_COUNT is more than one.  */
596 static int prev_breakpoint_count;
597
598 /* Number of last tracepoint made.  */
599
600 static int tracepoint_count;
601
602 static struct cmd_list_element *breakpoint_set_cmdlist;
603 static struct cmd_list_element *breakpoint_show_cmdlist;
604 struct cmd_list_element *save_cmdlist;
605
606 /* See declaration at breakpoint.h.  */
607
608 struct breakpoint *
609 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
610                     void *user_data)
611 {
612   struct breakpoint *b = NULL;
613
614   ALL_BREAKPOINTS (b)
615     {
616       if (func (b, user_data) != 0)
617         break;
618     }
619
620   return b;
621 }
622
623 /* Return whether a breakpoint is an active enabled breakpoint.  */
624 static int
625 breakpoint_enabled (struct breakpoint *b)
626 {
627   return (b->enable_state == bp_enabled);
628 }
629
630 /* Set breakpoint count to NUM.  */
631
632 static void
633 set_breakpoint_count (int num)
634 {
635   prev_breakpoint_count = breakpoint_count;
636   breakpoint_count = num;
637   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
638 }
639
640 /* Used by `start_rbreak_breakpoints' below, to record the current
641    breakpoint count before "rbreak" creates any breakpoint.  */
642 static int rbreak_start_breakpoint_count;
643
644 /* Called at the start an "rbreak" command to record the first
645    breakpoint made.  */
646
647 void
648 start_rbreak_breakpoints (void)
649 {
650   rbreak_start_breakpoint_count = breakpoint_count;
651 }
652
653 /* Called at the end of an "rbreak" command to record the last
654    breakpoint made.  */
655
656 void
657 end_rbreak_breakpoints (void)
658 {
659   prev_breakpoint_count = rbreak_start_breakpoint_count;
660 }
661
662 /* Used in run_command to zero the hit count when a new run starts.  */
663
664 void
665 clear_breakpoint_hit_counts (void)
666 {
667   struct breakpoint *b;
668
669   ALL_BREAKPOINTS (b)
670     b->hit_count = 0;
671 }
672
673 \f
674 /* Return the breakpoint with the specified number, or NULL
675    if the number does not refer to an existing breakpoint.  */
676
677 struct breakpoint *
678 get_breakpoint (int num)
679 {
680   struct breakpoint *b;
681
682   ALL_BREAKPOINTS (b)
683     if (b->number == num)
684       return b;
685   
686   return NULL;
687 }
688
689 \f
690
691 /* Mark locations as "conditions have changed" in case the target supports
692    evaluating conditions on its side.  */
693
694 static void
695 mark_breakpoint_modified (struct breakpoint *b)
696 {
697   struct bp_location *loc;
698
699   /* This is only meaningful if the target is
700      evaluating conditions and if the user has
701      opted for condition evaluation on the target's
702      side.  */
703   if (gdb_evaluates_breakpoint_condition_p ()
704       || !target_supports_evaluation_of_breakpoint_conditions ())
705     return;
706
707   if (!is_breakpoint (b))
708     return;
709
710   for (loc = b->loc; loc; loc = loc->next)
711     loc->condition_changed = condition_modified;
712 }
713
714 /* Mark location as "conditions have changed" in case the target supports
715    evaluating conditions on its side.  */
716
717 static void
718 mark_breakpoint_location_modified (struct bp_location *loc)
719 {
720   /* This is only meaningful if the target is
721      evaluating conditions and if the user has
722      opted for condition evaluation on the target's
723      side.  */
724   if (gdb_evaluates_breakpoint_condition_p ()
725       || !target_supports_evaluation_of_breakpoint_conditions ())
726
727     return;
728
729   if (!is_breakpoint (loc->owner))
730     return;
731
732   loc->condition_changed = condition_modified;
733 }
734
735 /* Sets the condition-evaluation mode using the static global
736    condition_evaluation_mode.  */
737
738 static void
739 set_condition_evaluation_mode (char *args, int from_tty,
740                                struct cmd_list_element *c)
741 {
742   const char *old_mode, *new_mode;
743
744   if ((condition_evaluation_mode_1 == condition_evaluation_target)
745       && !target_supports_evaluation_of_breakpoint_conditions ())
746     {
747       condition_evaluation_mode_1 = condition_evaluation_mode;
748       warning (_("Target does not support breakpoint condition evaluation.\n"
749                  "Using host evaluation mode instead."));
750       return;
751     }
752
753   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
754   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
755
756   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
757      settings was "auto".  */
758   condition_evaluation_mode = condition_evaluation_mode_1;
759
760   /* Only update the mode if the user picked a different one.  */
761   if (new_mode != old_mode)
762     {
763       struct bp_location *loc, **loc_tmp;
764       /* If the user switched to a different evaluation mode, we
765          need to synch the changes with the target as follows:
766
767          "host" -> "target": Send all (valid) conditions to the target.
768          "target" -> "host": Remove all the conditions from the target.
769       */
770
771       if (new_mode == condition_evaluation_target)
772         {
773           /* Mark everything modified and synch conditions with the
774              target.  */
775           ALL_BP_LOCATIONS (loc, loc_tmp)
776             mark_breakpoint_location_modified (loc);
777         }
778       else
779         {
780           /* Manually mark non-duplicate locations to synch conditions
781              with the target.  We do this to remove all the conditions the
782              target knows about.  */
783           ALL_BP_LOCATIONS (loc, loc_tmp)
784             if (is_breakpoint (loc->owner) && loc->inserted)
785               loc->needs_update = 1;
786         }
787
788       /* Do the update.  */
789       update_global_location_list (UGLL_MAY_INSERT);
790     }
791
792   return;
793 }
794
795 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
796    what "auto" is translating to.  */
797
798 static void
799 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
800                                 struct cmd_list_element *c, const char *value)
801 {
802   if (condition_evaluation_mode == condition_evaluation_auto)
803     fprintf_filtered (file,
804                       _("Breakpoint condition evaluation "
805                         "mode is %s (currently %s).\n"),
806                       value,
807                       breakpoint_condition_evaluation_mode ());
808   else
809     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
810                       value);
811 }
812
813 /* A comparison function for bp_location AP and BP that is used by
814    bsearch.  This comparison function only cares about addresses, unlike
815    the more general bp_locations_compare function.  */
816
817 static int
818 bp_locations_compare_addrs (const void *ap, const void *bp)
819 {
820   const struct bp_location *a = *(const struct bp_location **) ap;
821   const struct bp_location *b = *(const struct bp_location **) bp;
822
823   if (a->address == b->address)
824     return 0;
825   else
826     return ((a->address > b->address) - (a->address < b->address));
827 }
828
829 /* Helper function to skip all bp_locations with addresses
830    less than ADDRESS.  It returns the first bp_location that
831    is greater than or equal to ADDRESS.  If none is found, just
832    return NULL.  */
833
834 static struct bp_location **
835 get_first_locp_gte_addr (CORE_ADDR address)
836 {
837   struct bp_location dummy_loc;
838   struct bp_location *dummy_locp = &dummy_loc;
839   struct bp_location **locp_found = NULL;
840
841   /* Initialize the dummy location's address field.  */
842   dummy_loc.address = address;
843
844   /* Find a close match to the first location at ADDRESS.  */
845   locp_found = ((struct bp_location **)
846                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
847                          sizeof (struct bp_location **),
848                          bp_locations_compare_addrs));
849
850   /* Nothing was found, nothing left to do.  */
851   if (locp_found == NULL)
852     return NULL;
853
854   /* We may have found a location that is at ADDRESS but is not the first in the
855      location's list.  Go backwards (if possible) and locate the first one.  */
856   while ((locp_found - 1) >= bp_locations
857          && (*(locp_found - 1))->address == address)
858     locp_found--;
859
860   return locp_found;
861 }
862
863 void
864 set_breakpoint_condition (struct breakpoint *b, const char *exp,
865                           int from_tty)
866 {
867   xfree (b->cond_string);
868   b->cond_string = NULL;
869
870   if (is_watchpoint (b))
871     {
872       struct watchpoint *w = (struct watchpoint *) b;
873
874       w->cond_exp.reset ();
875     }
876   else
877     {
878       struct bp_location *loc;
879
880       for (loc = b->loc; loc; loc = loc->next)
881         {
882           loc->cond.reset ();
883
884           /* No need to free the condition agent expression
885              bytecode (if we have one).  We will handle this
886              when we go through update_global_location_list.  */
887         }
888     }
889
890   if (*exp == 0)
891     {
892       if (from_tty)
893         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
894     }
895   else
896     {
897       const char *arg = exp;
898
899       /* I don't know if it matters whether this is the string the user
900          typed in or the decompiled expression.  */
901       b->cond_string = xstrdup (arg);
902       b->condition_not_parsed = 0;
903
904       if (is_watchpoint (b))
905         {
906           struct watchpoint *w = (struct watchpoint *) b;
907
908           innermost_block = NULL;
909           arg = exp;
910           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
911           if (*arg)
912             error (_("Junk at end of expression"));
913           w->cond_exp_valid_block = innermost_block;
914         }
915       else
916         {
917           struct bp_location *loc;
918
919           for (loc = b->loc; loc; loc = loc->next)
920             {
921               arg = exp;
922               loc->cond =
923                 parse_exp_1 (&arg, loc->address,
924                              block_for_pc (loc->address), 0);
925               if (*arg)
926                 error (_("Junk at end of expression"));
927             }
928         }
929     }
930   mark_breakpoint_modified (b);
931
932   observer_notify_breakpoint_modified (b);
933 }
934
935 /* Completion for the "condition" command.  */
936
937 static void
938 condition_completer (struct cmd_list_element *cmd,
939                      completion_tracker &tracker,
940                      const char *text, const char *word)
941 {
942   const char *space;
943
944   text = skip_spaces (text);
945   space = skip_to_space (text);
946   if (*space == '\0')
947     {
948       int len;
949       struct breakpoint *b;
950       VEC (char_ptr) *result = NULL;
951
952       if (text[0] == '$')
953         {
954           /* We don't support completion of history indices.  */
955           if (!isdigit (text[1]))
956             complete_internalvar (tracker, &text[1]);
957           return;
958         }
959
960       /* We're completing the breakpoint number.  */
961       len = strlen (text);
962
963       ALL_BREAKPOINTS (b)
964         {
965           char number[50];
966
967           xsnprintf (number, sizeof (number), "%d", b->number);
968
969           if (strncmp (number, text, len) == 0)
970             {
971               gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
972               tracker.add_completion (std::move (copy));
973             }
974         }
975
976       return;
977     }
978
979   /* We're completing the expression part.  */
980   text = skip_spaces (space);
981   expression_completer (cmd, tracker, text, word);
982 }
983
984 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
985
986 static void
987 condition_command (char *arg, int from_tty)
988 {
989   struct breakpoint *b;
990   char *p;
991   int bnum;
992
993   if (arg == 0)
994     error_no_arg (_("breakpoint number"));
995
996   p = arg;
997   bnum = get_number (&p);
998   if (bnum == 0)
999     error (_("Bad breakpoint argument: '%s'"), arg);
1000
1001   ALL_BREAKPOINTS (b)
1002     if (b->number == bnum)
1003       {
1004         /* Check if this breakpoint has a "stop" method implemented in an
1005            extension language.  This method and conditions entered into GDB
1006            from the CLI are mutually exclusive.  */
1007         const struct extension_language_defn *extlang
1008           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1009
1010         if (extlang != NULL)
1011           {
1012             error (_("Only one stop condition allowed.  There is currently"
1013                      " a %s stop condition defined for this breakpoint."),
1014                    ext_lang_capitalized_name (extlang));
1015           }
1016         set_breakpoint_condition (b, p, from_tty);
1017
1018         if (is_breakpoint (b))
1019           update_global_location_list (UGLL_MAY_INSERT);
1020
1021         return;
1022       }
1023
1024   error (_("No breakpoint number %d."), bnum);
1025 }
1026
1027 /* Check that COMMAND do not contain commands that are suitable
1028    only for tracepoints and not suitable for ordinary breakpoints.
1029    Throw if any such commands is found.  */
1030
1031 static void
1032 check_no_tracepoint_commands (struct command_line *commands)
1033 {
1034   struct command_line *c;
1035
1036   for (c = commands; c; c = c->next)
1037     {
1038       int i;
1039
1040       if (c->control_type == while_stepping_control)
1041         error (_("The 'while-stepping' command can "
1042                  "only be used for tracepoints"));
1043
1044       for (i = 0; i < c->body_count; ++i)
1045         check_no_tracepoint_commands ((c->body_list)[i]);
1046
1047       /* Not that command parsing removes leading whitespace and comment
1048          lines and also empty lines.  So, we only need to check for
1049          command directly.  */
1050       if (strstr (c->line, "collect ") == c->line)
1051         error (_("The 'collect' command can only be used for tracepoints"));
1052
1053       if (strstr (c->line, "teval ") == c->line)
1054         error (_("The 'teval' command can only be used for tracepoints"));
1055     }
1056 }
1057
1058 struct longjmp_breakpoint : public breakpoint
1059 {
1060   ~longjmp_breakpoint () override;
1061 };
1062
1063 /* Encapsulate tests for different types of tracepoints.  */
1064
1065 static bool
1066 is_tracepoint_type (bptype type)
1067 {
1068   return (type == bp_tracepoint
1069           || type == bp_fast_tracepoint
1070           || type == bp_static_tracepoint);
1071 }
1072
1073 static bool
1074 is_longjmp_type (bptype type)
1075 {
1076   return type == bp_longjmp || type == bp_exception;
1077 }
1078
1079 int
1080 is_tracepoint (const struct breakpoint *b)
1081 {
1082   return is_tracepoint_type (b->type);
1083 }
1084
1085 /* Factory function to create an appropriate instance of breakpoint given
1086    TYPE.  */
1087
1088 static std::unique_ptr<breakpoint>
1089 new_breakpoint_from_type (bptype type)
1090 {
1091   breakpoint *b;
1092
1093   if (is_tracepoint_type (type))
1094     b = new tracepoint ();
1095   else if (is_longjmp_type (type))
1096     b = new longjmp_breakpoint ();
1097   else
1098     b = new breakpoint ();
1099
1100   return std::unique_ptr<breakpoint> (b);
1101 }
1102
1103 /* A helper function that validates that COMMANDS are valid for a
1104    breakpoint.  This function will throw an exception if a problem is
1105    found.  */
1106
1107 static void
1108 validate_commands_for_breakpoint (struct breakpoint *b,
1109                                   struct command_line *commands)
1110 {
1111   if (is_tracepoint (b))
1112     {
1113       struct tracepoint *t = (struct tracepoint *) b;
1114       struct command_line *c;
1115       struct command_line *while_stepping = 0;
1116
1117       /* Reset the while-stepping step count.  The previous commands
1118          might have included a while-stepping action, while the new
1119          ones might not.  */
1120       t->step_count = 0;
1121
1122       /* We need to verify that each top-level element of commands is
1123          valid for tracepoints, that there's at most one
1124          while-stepping element, and that the while-stepping's body
1125          has valid tracing commands excluding nested while-stepping.
1126          We also need to validate the tracepoint action line in the
1127          context of the tracepoint --- validate_actionline actually
1128          has side effects, like setting the tracepoint's
1129          while-stepping STEP_COUNT, in addition to checking if the
1130          collect/teval actions parse and make sense in the
1131          tracepoint's context.  */
1132       for (c = commands; c; c = c->next)
1133         {
1134           if (c->control_type == while_stepping_control)
1135             {
1136               if (b->type == bp_fast_tracepoint)
1137                 error (_("The 'while-stepping' command "
1138                          "cannot be used for fast tracepoint"));
1139               else if (b->type == bp_static_tracepoint)
1140                 error (_("The 'while-stepping' command "
1141                          "cannot be used for static tracepoint"));
1142
1143               if (while_stepping)
1144                 error (_("The 'while-stepping' command "
1145                          "can be used only once"));
1146               else
1147                 while_stepping = c;
1148             }
1149
1150           validate_actionline (c->line, b);
1151         }
1152       if (while_stepping)
1153         {
1154           struct command_line *c2;
1155
1156           gdb_assert (while_stepping->body_count == 1);
1157           c2 = while_stepping->body_list[0];
1158           for (; c2; c2 = c2->next)
1159             {
1160               if (c2->control_type == while_stepping_control)
1161                 error (_("The 'while-stepping' command cannot be nested"));
1162             }
1163         }
1164     }
1165   else
1166     {
1167       check_no_tracepoint_commands (commands);
1168     }
1169 }
1170
1171 /* Return a vector of all the static tracepoints set at ADDR.  The
1172    caller is responsible for releasing the vector.  */
1173
1174 VEC(breakpoint_p) *
1175 static_tracepoints_here (CORE_ADDR addr)
1176 {
1177   struct breakpoint *b;
1178   VEC(breakpoint_p) *found = 0;
1179   struct bp_location *loc;
1180
1181   ALL_BREAKPOINTS (b)
1182     if (b->type == bp_static_tracepoint)
1183       {
1184         for (loc = b->loc; loc; loc = loc->next)
1185           if (loc->address == addr)
1186             VEC_safe_push(breakpoint_p, found, b);
1187       }
1188
1189   return found;
1190 }
1191
1192 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1193    validate that only allowed commands are included.  */
1194
1195 void
1196 breakpoint_set_commands (struct breakpoint *b, 
1197                          command_line_up &&commands)
1198 {
1199   validate_commands_for_breakpoint (b, commands.get ());
1200
1201   b->commands = std::move (commands);
1202   observer_notify_breakpoint_modified (b);
1203 }
1204
1205 /* Set the internal `silent' flag on the breakpoint.  Note that this
1206    is not the same as the "silent" that may appear in the breakpoint's
1207    commands.  */
1208
1209 void
1210 breakpoint_set_silent (struct breakpoint *b, int silent)
1211 {
1212   int old_silent = b->silent;
1213
1214   b->silent = silent;
1215   if (old_silent != silent)
1216     observer_notify_breakpoint_modified (b);
1217 }
1218
1219 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1220    breakpoint work for any thread.  */
1221
1222 void
1223 breakpoint_set_thread (struct breakpoint *b, int thread)
1224 {
1225   int old_thread = b->thread;
1226
1227   b->thread = thread;
1228   if (old_thread != thread)
1229     observer_notify_breakpoint_modified (b);
1230 }
1231
1232 /* Set the task for this breakpoint.  If TASK is 0, make the
1233    breakpoint work for any task.  */
1234
1235 void
1236 breakpoint_set_task (struct breakpoint *b, int task)
1237 {
1238   int old_task = b->task;
1239
1240   b->task = task;
1241   if (old_task != task)
1242     observer_notify_breakpoint_modified (b);
1243 }
1244
1245 void
1246 check_tracepoint_command (char *line, void *closure)
1247 {
1248   struct breakpoint *b = (struct breakpoint *) closure;
1249
1250   validate_actionline (line, b);
1251 }
1252
1253 static void
1254 commands_command_1 (const char *arg, int from_tty,
1255                     struct command_line *control)
1256 {
1257   counted_command_line cmd;
1258
1259   std::string new_arg;
1260
1261   if (arg == NULL || !*arg)
1262     {
1263       if (breakpoint_count - prev_breakpoint_count > 1)
1264         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1265                                  breakpoint_count);
1266       else if (breakpoint_count > 0)
1267         new_arg = string_printf ("%d", breakpoint_count);
1268       arg = new_arg.c_str ();
1269     }
1270
1271   map_breakpoint_numbers
1272     (arg, [&] (breakpoint *b)
1273      {
1274        if (cmd == NULL)
1275          {
1276            if (control != NULL)
1277              cmd = copy_command_lines (control->body_list[0]);
1278            else
1279              {
1280                std::string str
1281                  = string_printf (_("Type commands for breakpoint(s) "
1282                                     "%s, one per line."),
1283                                   arg);
1284
1285                cmd = read_command_lines (&str[0],
1286                                          from_tty, 1,
1287                                          (is_tracepoint (b)
1288                                           ? check_tracepoint_command : 0),
1289                                          b);
1290              }
1291          }
1292
1293        /* If a breakpoint was on the list more than once, we don't need to
1294           do anything.  */
1295        if (b->commands != cmd)
1296          {
1297            validate_commands_for_breakpoint (b, cmd.get ());
1298            b->commands = cmd;
1299            observer_notify_breakpoint_modified (b);
1300          }
1301      });
1302
1303   if (cmd == NULL)
1304     error (_("No breakpoints specified."));
1305 }
1306
1307 static void
1308 commands_command (char *arg, int from_tty)
1309 {
1310   commands_command_1 (arg, from_tty, NULL);
1311 }
1312
1313 /* Like commands_command, but instead of reading the commands from
1314    input stream, takes them from an already parsed command structure.
1315
1316    This is used by cli-script.c to DTRT with breakpoint commands
1317    that are part of if and while bodies.  */
1318 enum command_control_type
1319 commands_from_control_command (const char *arg, struct command_line *cmd)
1320 {
1321   commands_command_1 (arg, 0, cmd);
1322   return simple_control;
1323 }
1324
1325 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1326
1327 static int
1328 bp_location_has_shadow (struct bp_location *bl)
1329 {
1330   if (bl->loc_type != bp_loc_software_breakpoint)
1331     return 0;
1332   if (!bl->inserted)
1333     return 0;
1334   if (bl->target_info.shadow_len == 0)
1335     /* BL isn't valid, or doesn't shadow memory.  */
1336     return 0;
1337   return 1;
1338 }
1339
1340 /* Update BUF, which is LEN bytes read from the target address
1341    MEMADDR, by replacing a memory breakpoint with its shadowed
1342    contents.
1343
1344    If READBUF is not NULL, this buffer must not overlap with the of
1345    the breakpoint location's shadow_contents buffer.  Otherwise, a
1346    failed assertion internal error will be raised.  */
1347
1348 static void
1349 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1350                             const gdb_byte *writebuf_org,
1351                             ULONGEST memaddr, LONGEST len,
1352                             struct bp_target_info *target_info,
1353                             struct gdbarch *gdbarch)
1354 {
1355   /* Now do full processing of the found relevant range of elements.  */
1356   CORE_ADDR bp_addr = 0;
1357   int bp_size = 0;
1358   int bptoffset = 0;
1359
1360   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1361                                  current_program_space->aspace, 0))
1362     {
1363       /* The breakpoint is inserted in a different address space.  */
1364       return;
1365     }
1366
1367   /* Addresses and length of the part of the breakpoint that
1368      we need to copy.  */
1369   bp_addr = target_info->placed_address;
1370   bp_size = target_info->shadow_len;
1371
1372   if (bp_addr + bp_size <= memaddr)
1373     {
1374       /* The breakpoint is entirely before the chunk of memory we are
1375          reading.  */
1376       return;
1377     }
1378
1379   if (bp_addr >= memaddr + len)
1380     {
1381       /* The breakpoint is entirely after the chunk of memory we are
1382          reading.  */
1383       return;
1384     }
1385
1386   /* Offset within shadow_contents.  */
1387   if (bp_addr < memaddr)
1388     {
1389       /* Only copy the second part of the breakpoint.  */
1390       bp_size -= memaddr - bp_addr;
1391       bptoffset = memaddr - bp_addr;
1392       bp_addr = memaddr;
1393     }
1394
1395   if (bp_addr + bp_size > memaddr + len)
1396     {
1397       /* Only copy the first part of the breakpoint.  */
1398       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1399     }
1400
1401   if (readbuf != NULL)
1402     {
1403       /* Verify that the readbuf buffer does not overlap with the
1404          shadow_contents buffer.  */
1405       gdb_assert (target_info->shadow_contents >= readbuf + len
1406                   || readbuf >= (target_info->shadow_contents
1407                                  + target_info->shadow_len));
1408
1409       /* Update the read buffer with this inserted breakpoint's
1410          shadow.  */
1411       memcpy (readbuf + bp_addr - memaddr,
1412               target_info->shadow_contents + bptoffset, bp_size);
1413     }
1414   else
1415     {
1416       const unsigned char *bp;
1417       CORE_ADDR addr = target_info->reqstd_address;
1418       int placed_size;
1419
1420       /* Update the shadow with what we want to write to memory.  */
1421       memcpy (target_info->shadow_contents + bptoffset,
1422               writebuf_org + bp_addr - memaddr, bp_size);
1423
1424       /* Determine appropriate breakpoint contents and size for this
1425          address.  */
1426       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1427
1428       /* Update the final write buffer with this inserted
1429          breakpoint's INSN.  */
1430       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1431     }
1432 }
1433
1434 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1435    by replacing any memory breakpoints with their shadowed contents.
1436
1437    If READBUF is not NULL, this buffer must not overlap with any of
1438    the breakpoint location's shadow_contents buffers.  Otherwise,
1439    a failed assertion internal error will be raised.
1440
1441    The range of shadowed area by each bp_location is:
1442      bl->address - bp_locations_placed_address_before_address_max
1443      up to bl->address + bp_locations_shadow_len_after_address_max
1444    The range we were requested to resolve shadows for is:
1445      memaddr ... memaddr + len
1446    Thus the safe cutoff boundaries for performance optimization are
1447      memaddr + len <= (bl->address
1448                        - bp_locations_placed_address_before_address_max)
1449    and:
1450      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1451
1452 void
1453 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1454                         const gdb_byte *writebuf_org,
1455                         ULONGEST memaddr, LONGEST len)
1456 {
1457   /* Left boundary, right boundary and median element of our binary
1458      search.  */
1459   unsigned bc_l, bc_r, bc;
1460
1461   /* Find BC_L which is a leftmost element which may affect BUF
1462      content.  It is safe to report lower value but a failure to
1463      report higher one.  */
1464
1465   bc_l = 0;
1466   bc_r = bp_locations_count;
1467   while (bc_l + 1 < bc_r)
1468     {
1469       struct bp_location *bl;
1470
1471       bc = (bc_l + bc_r) / 2;
1472       bl = bp_locations[bc];
1473
1474       /* Check first BL->ADDRESS will not overflow due to the added
1475          constant.  Then advance the left boundary only if we are sure
1476          the BC element can in no way affect the BUF content (MEMADDR
1477          to MEMADDR + LEN range).
1478
1479          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1480          offset so that we cannot miss a breakpoint with its shadow
1481          range tail still reaching MEMADDR.  */
1482
1483       if ((bl->address + bp_locations_shadow_len_after_address_max
1484            >= bl->address)
1485           && (bl->address + bp_locations_shadow_len_after_address_max
1486               <= memaddr))
1487         bc_l = bc;
1488       else
1489         bc_r = bc;
1490     }
1491
1492   /* Due to the binary search above, we need to make sure we pick the
1493      first location that's at BC_L's address.  E.g., if there are
1494      multiple locations at the same address, BC_L may end up pointing
1495      at a duplicate location, and miss the "master"/"inserted"
1496      location.  Say, given locations L1, L2 and L3 at addresses A and
1497      B:
1498
1499       L1@A, L2@A, L3@B, ...
1500
1501      BC_L could end up pointing at location L2, while the "master"
1502      location could be L1.  Since the `loc->inserted' flag is only set
1503      on "master" locations, we'd forget to restore the shadow of L1
1504      and L2.  */
1505   while (bc_l > 0
1506          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1507     bc_l--;
1508
1509   /* Now do full processing of the found relevant range of elements.  */
1510
1511   for (bc = bc_l; bc < bp_locations_count; bc++)
1512   {
1513     struct bp_location *bl = bp_locations[bc];
1514
1515     /* bp_location array has BL->OWNER always non-NULL.  */
1516     if (bl->owner->type == bp_none)
1517       warning (_("reading through apparently deleted breakpoint #%d?"),
1518                bl->owner->number);
1519
1520     /* Performance optimization: any further element can no longer affect BUF
1521        content.  */
1522
1523     if (bl->address >= bp_locations_placed_address_before_address_max
1524         && memaddr + len <= (bl->address
1525                              - bp_locations_placed_address_before_address_max))
1526       break;
1527
1528     if (!bp_location_has_shadow (bl))
1529       continue;
1530
1531     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1532                                 memaddr, len, &bl->target_info, bl->gdbarch);
1533   }
1534 }
1535
1536 \f
1537
1538 /* Return true if BPT is either a software breakpoint or a hardware
1539    breakpoint.  */
1540
1541 int
1542 is_breakpoint (const struct breakpoint *bpt)
1543 {
1544   return (bpt->type == bp_breakpoint
1545           || bpt->type == bp_hardware_breakpoint
1546           || bpt->type == bp_dprintf);
1547 }
1548
1549 /* Return true if BPT is of any hardware watchpoint kind.  */
1550
1551 static int
1552 is_hardware_watchpoint (const struct breakpoint *bpt)
1553 {
1554   return (bpt->type == bp_hardware_watchpoint
1555           || bpt->type == bp_read_watchpoint
1556           || bpt->type == bp_access_watchpoint);
1557 }
1558
1559 /* Return true if BPT is of any watchpoint kind, hardware or
1560    software.  */
1561
1562 int
1563 is_watchpoint (const struct breakpoint *bpt)
1564 {
1565   return (is_hardware_watchpoint (bpt)
1566           || bpt->type == bp_watchpoint);
1567 }
1568
1569 /* Returns true if the current thread and its running state are safe
1570    to evaluate or update watchpoint B.  Watchpoints on local
1571    expressions need to be evaluated in the context of the thread that
1572    was current when the watchpoint was created, and, that thread needs
1573    to be stopped to be able to select the correct frame context.
1574    Watchpoints on global expressions can be evaluated on any thread,
1575    and in any state.  It is presently left to the target allowing
1576    memory accesses when threads are running.  */
1577
1578 static int
1579 watchpoint_in_thread_scope (struct watchpoint *b)
1580 {
1581   return (b->pspace == current_program_space
1582           && (ptid_equal (b->watchpoint_thread, null_ptid)
1583               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1584                   && !is_executing (inferior_ptid))));
1585 }
1586
1587 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1588    associated bp_watchpoint_scope breakpoint.  */
1589
1590 static void
1591 watchpoint_del_at_next_stop (struct watchpoint *w)
1592 {
1593   if (w->related_breakpoint != w)
1594     {
1595       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1596       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1597       w->related_breakpoint->disposition = disp_del_at_next_stop;
1598       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1599       w->related_breakpoint = w;
1600     }
1601   w->disposition = disp_del_at_next_stop;
1602 }
1603
1604 /* Extract a bitfield value from value VAL using the bit parameters contained in
1605    watchpoint W.  */
1606
1607 static struct value *
1608 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1609 {
1610   struct value *bit_val;
1611
1612   if (val == NULL)
1613     return NULL;
1614
1615   bit_val = allocate_value (value_type (val));
1616
1617   unpack_value_bitfield (bit_val,
1618                          w->val_bitpos,
1619                          w->val_bitsize,
1620                          value_contents_for_printing (val),
1621                          value_offset (val),
1622                          val);
1623
1624   return bit_val;
1625 }
1626
1627 /* Allocate a dummy location and add it to B, which must be a software
1628    watchpoint.  This is required because even if a software watchpoint
1629    is not watching any memory, bpstat_stop_status requires a location
1630    to be able to report stops.  */
1631
1632 static void
1633 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1634                                             struct program_space *pspace)
1635 {
1636   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1637
1638   b->loc = allocate_bp_location (b);
1639   b->loc->pspace = pspace;
1640   b->loc->address = -1;
1641   b->loc->length = -1;
1642 }
1643
1644 /* Returns true if B is a software watchpoint that is not watching any
1645    memory (e.g., "watch $pc").  */
1646
1647 static int
1648 is_no_memory_software_watchpoint (struct breakpoint *b)
1649 {
1650   return (b->type == bp_watchpoint
1651           && b->loc != NULL
1652           && b->loc->next == NULL
1653           && b->loc->address == -1
1654           && b->loc->length == -1);
1655 }
1656
1657 /* Assuming that B is a watchpoint:
1658    - Reparse watchpoint expression, if REPARSE is non-zero
1659    - Evaluate expression and store the result in B->val
1660    - Evaluate the condition if there is one, and store the result
1661      in b->loc->cond.
1662    - Update the list of values that must be watched in B->loc.
1663
1664    If the watchpoint disposition is disp_del_at_next_stop, then do
1665    nothing.  If this is local watchpoint that is out of scope, delete
1666    it.
1667
1668    Even with `set breakpoint always-inserted on' the watchpoints are
1669    removed + inserted on each stop here.  Normal breakpoints must
1670    never be removed because they might be missed by a running thread
1671    when debugging in non-stop mode.  On the other hand, hardware
1672    watchpoints (is_hardware_watchpoint; processed here) are specific
1673    to each LWP since they are stored in each LWP's hardware debug
1674    registers.  Therefore, such LWP must be stopped first in order to
1675    be able to modify its hardware watchpoints.
1676
1677    Hardware watchpoints must be reset exactly once after being
1678    presented to the user.  It cannot be done sooner, because it would
1679    reset the data used to present the watchpoint hit to the user.  And
1680    it must not be done later because it could display the same single
1681    watchpoint hit during multiple GDB stops.  Note that the latter is
1682    relevant only to the hardware watchpoint types bp_read_watchpoint
1683    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1684    not user-visible - its hit is suppressed if the memory content has
1685    not changed.
1686
1687    The following constraints influence the location where we can reset
1688    hardware watchpoints:
1689
1690    * target_stopped_by_watchpoint and target_stopped_data_address are
1691      called several times when GDB stops.
1692
1693    [linux] 
1694    * Multiple hardware watchpoints can be hit at the same time,
1695      causing GDB to stop.  GDB only presents one hardware watchpoint
1696      hit at a time as the reason for stopping, and all the other hits
1697      are presented later, one after the other, each time the user
1698      requests the execution to be resumed.  Execution is not resumed
1699      for the threads still having pending hit event stored in
1700      LWP_INFO->STATUS.  While the watchpoint is already removed from
1701      the inferior on the first stop the thread hit event is kept being
1702      reported from its cached value by linux_nat_stopped_data_address
1703      until the real thread resume happens after the watchpoint gets
1704      presented and thus its LWP_INFO->STATUS gets reset.
1705
1706    Therefore the hardware watchpoint hit can get safely reset on the
1707    watchpoint removal from inferior.  */
1708
1709 static void
1710 update_watchpoint (struct watchpoint *b, int reparse)
1711 {
1712   int within_current_scope;
1713   struct frame_id saved_frame_id;
1714   int frame_saved;
1715
1716   /* If this is a local watchpoint, we only want to check if the
1717      watchpoint frame is in scope if the current thread is the thread
1718      that was used to create the watchpoint.  */
1719   if (!watchpoint_in_thread_scope (b))
1720     return;
1721
1722   if (b->disposition == disp_del_at_next_stop)
1723     return;
1724  
1725   frame_saved = 0;
1726
1727   /* Determine if the watchpoint is within scope.  */
1728   if (b->exp_valid_block == NULL)
1729     within_current_scope = 1;
1730   else
1731     {
1732       struct frame_info *fi = get_current_frame ();
1733       struct gdbarch *frame_arch = get_frame_arch (fi);
1734       CORE_ADDR frame_pc = get_frame_pc (fi);
1735
1736       /* If we're at a point where the stack has been destroyed
1737          (e.g. in a function epilogue), unwinding may not work
1738          properly. Do not attempt to recreate locations at this
1739          point.  See similar comments in watchpoint_check.  */
1740       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1741         return;
1742
1743       /* Save the current frame's ID so we can restore it after
1744          evaluating the watchpoint expression on its own frame.  */
1745       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1746          took a frame parameter, so that we didn't have to change the
1747          selected frame.  */
1748       frame_saved = 1;
1749       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1750
1751       fi = frame_find_by_id (b->watchpoint_frame);
1752       within_current_scope = (fi != NULL);
1753       if (within_current_scope)
1754         select_frame (fi);
1755     }
1756
1757   /* We don't free locations.  They are stored in the bp_location array
1758      and update_global_location_list will eventually delete them and
1759      remove breakpoints if needed.  */
1760   b->loc = NULL;
1761
1762   if (within_current_scope && reparse)
1763     {
1764       const char *s;
1765
1766       b->exp.reset ();
1767       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1768       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1769       /* If the meaning of expression itself changed, the old value is
1770          no longer relevant.  We don't want to report a watchpoint hit
1771          to the user when the old value and the new value may actually
1772          be completely different objects.  */
1773       value_free (b->val);
1774       b->val = NULL;
1775       b->val_valid = 0;
1776
1777       /* Note that unlike with breakpoints, the watchpoint's condition
1778          expression is stored in the breakpoint object, not in the
1779          locations (re)created below.  */
1780       if (b->cond_string != NULL)
1781         {
1782           b->cond_exp.reset ();
1783
1784           s = b->cond_string;
1785           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1786         }
1787     }
1788
1789   /* If we failed to parse the expression, for example because
1790      it refers to a global variable in a not-yet-loaded shared library,
1791      don't try to insert watchpoint.  We don't automatically delete
1792      such watchpoint, though, since failure to parse expression
1793      is different from out-of-scope watchpoint.  */
1794   if (!target_has_execution)
1795     {
1796       /* Without execution, memory can't change.  No use to try and
1797          set watchpoint locations.  The watchpoint will be reset when
1798          the target gains execution, through breakpoint_re_set.  */
1799       if (!can_use_hw_watchpoints)
1800         {
1801           if (b->ops->works_in_software_mode (b))
1802             b->type = bp_watchpoint;
1803           else
1804             error (_("Can't set read/access watchpoint when "
1805                      "hardware watchpoints are disabled."));
1806         }
1807     }
1808   else if (within_current_scope && b->exp)
1809     {
1810       int pc = 0;
1811       struct value *val_chain, *v, *result, *next;
1812       struct program_space *frame_pspace;
1813
1814       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1815
1816       /* Avoid setting b->val if it's already set.  The meaning of
1817          b->val is 'the last value' user saw, and we should update
1818          it only if we reported that last value to user.  As it
1819          happens, the code that reports it updates b->val directly.
1820          We don't keep track of the memory value for masked
1821          watchpoints.  */
1822       if (!b->val_valid && !is_masked_watchpoint (b))
1823         {
1824           if (b->val_bitsize != 0)
1825             {
1826               v = extract_bitfield_from_watchpoint_value (b, v);
1827               if (v != NULL)
1828                 release_value (v);
1829             }
1830           b->val = v;
1831           b->val_valid = 1;
1832         }
1833
1834       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1835
1836       /* Look at each value on the value chain.  */
1837       for (v = val_chain; v; v = value_next (v))
1838         {
1839           /* If it's a memory location, and GDB actually needed
1840              its contents to evaluate the expression, then we
1841              must watch it.  If the first value returned is
1842              still lazy, that means an error occurred reading it;
1843              watch it anyway in case it becomes readable.  */
1844           if (VALUE_LVAL (v) == lval_memory
1845               && (v == val_chain || ! value_lazy (v)))
1846             {
1847               struct type *vtype = check_typedef (value_type (v));
1848
1849               /* We only watch structs and arrays if user asked
1850                  for it explicitly, never if they just happen to
1851                  appear in the middle of some value chain.  */
1852               if (v == result
1853                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1854                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1855                 {
1856                   CORE_ADDR addr;
1857                   enum target_hw_bp_type type;
1858                   struct bp_location *loc, **tmp;
1859                   int bitpos = 0, bitsize = 0;
1860
1861                   if (value_bitsize (v) != 0)
1862                     {
1863                       /* Extract the bit parameters out from the bitfield
1864                          sub-expression.  */
1865                       bitpos = value_bitpos (v);
1866                       bitsize = value_bitsize (v);
1867                     }
1868                   else if (v == result && b->val_bitsize != 0)
1869                     {
1870                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1871                         lvalue whose bit parameters are saved in the fields
1872                         VAL_BITPOS and VAL_BITSIZE.  */
1873                       bitpos = b->val_bitpos;
1874                       bitsize = b->val_bitsize;
1875                     }
1876
1877                   addr = value_address (v);
1878                   if (bitsize != 0)
1879                     {
1880                       /* Skip the bytes that don't contain the bitfield.  */
1881                       addr += bitpos / 8;
1882                     }
1883
1884                   type = hw_write;
1885                   if (b->type == bp_read_watchpoint)
1886                     type = hw_read;
1887                   else if (b->type == bp_access_watchpoint)
1888                     type = hw_access;
1889
1890                   loc = allocate_bp_location (b);
1891                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1892                     ;
1893                   *tmp = loc;
1894                   loc->gdbarch = get_type_arch (value_type (v));
1895
1896                   loc->pspace = frame_pspace;
1897                   loc->address = addr;
1898
1899                   if (bitsize != 0)
1900                     {
1901                       /* Just cover the bytes that make up the bitfield.  */
1902                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1903                     }
1904                   else
1905                     loc->length = TYPE_LENGTH (value_type (v));
1906
1907                   loc->watchpoint_type = type;
1908                 }
1909             }
1910         }
1911
1912       /* Change the type of breakpoint between hardware assisted or
1913          an ordinary watchpoint depending on the hardware support
1914          and free hardware slots.  REPARSE is set when the inferior
1915          is started.  */
1916       if (reparse)
1917         {
1918           int reg_cnt;
1919           enum bp_loc_type loc_type;
1920           struct bp_location *bl;
1921
1922           reg_cnt = can_use_hardware_watchpoint (val_chain);
1923
1924           if (reg_cnt)
1925             {
1926               int i, target_resources_ok, other_type_used;
1927               enum bptype type;
1928
1929               /* Use an exact watchpoint when there's only one memory region to be
1930                  watched, and only one debug register is needed to watch it.  */
1931               b->exact = target_exact_watchpoints && reg_cnt == 1;
1932
1933               /* We need to determine how many resources are already
1934                  used for all other hardware watchpoints plus this one
1935                  to see if we still have enough resources to also fit
1936                  this watchpoint in as well.  */
1937
1938               /* If this is a software watchpoint, we try to turn it
1939                  to a hardware one -- count resources as if B was of
1940                  hardware watchpoint type.  */
1941               type = b->type;
1942               if (type == bp_watchpoint)
1943                 type = bp_hardware_watchpoint;
1944
1945               /* This watchpoint may or may not have been placed on
1946                  the list yet at this point (it won't be in the list
1947                  if we're trying to create it for the first time,
1948                  through watch_command), so always account for it
1949                  manually.  */
1950
1951               /* Count resources used by all watchpoints except B.  */
1952               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1953
1954               /* Add in the resources needed for B.  */
1955               i += hw_watchpoint_use_count (b);
1956
1957               target_resources_ok
1958                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1959               if (target_resources_ok <= 0)
1960                 {
1961                   int sw_mode = b->ops->works_in_software_mode (b);
1962
1963                   if (target_resources_ok == 0 && !sw_mode)
1964                     error (_("Target does not support this type of "
1965                              "hardware watchpoint."));
1966                   else if (target_resources_ok < 0 && !sw_mode)
1967                     error (_("There are not enough available hardware "
1968                              "resources for this watchpoint."));
1969
1970                   /* Downgrade to software watchpoint.  */
1971                   b->type = bp_watchpoint;
1972                 }
1973               else
1974                 {
1975                   /* If this was a software watchpoint, we've just
1976                      found we have enough resources to turn it to a
1977                      hardware watchpoint.  Otherwise, this is a
1978                      nop.  */
1979                   b->type = type;
1980                 }
1981             }
1982           else if (!b->ops->works_in_software_mode (b))
1983             {
1984               if (!can_use_hw_watchpoints)
1985                 error (_("Can't set read/access watchpoint when "
1986                          "hardware watchpoints are disabled."));
1987               else
1988                 error (_("Expression cannot be implemented with "
1989                          "read/access watchpoint."));
1990             }
1991           else
1992             b->type = bp_watchpoint;
1993
1994           loc_type = (b->type == bp_watchpoint? bp_loc_other
1995                       : bp_loc_hardware_watchpoint);
1996           for (bl = b->loc; bl; bl = bl->next)
1997             bl->loc_type = loc_type;
1998         }
1999
2000       for (v = val_chain; v; v = next)
2001         {
2002           next = value_next (v);
2003           if (v != b->val)
2004             value_free (v);
2005         }
2006
2007       /* If a software watchpoint is not watching any memory, then the
2008          above left it without any location set up.  But,
2009          bpstat_stop_status requires a location to be able to report
2010          stops, so make sure there's at least a dummy one.  */
2011       if (b->type == bp_watchpoint && b->loc == NULL)
2012         software_watchpoint_add_no_memory_location (b, frame_pspace);
2013     }
2014   else if (!within_current_scope)
2015     {
2016       printf_filtered (_("\
2017 Watchpoint %d deleted because the program has left the block\n\
2018 in which its expression is valid.\n"),
2019                        b->number);
2020       watchpoint_del_at_next_stop (b);
2021     }
2022
2023   /* Restore the selected frame.  */
2024   if (frame_saved)
2025     select_frame (frame_find_by_id (saved_frame_id));
2026 }
2027
2028
2029 /* Returns 1 iff breakpoint location should be
2030    inserted in the inferior.  We don't differentiate the type of BL's owner
2031    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2032    breakpoint_ops is not defined, because in insert_bp_location,
2033    tracepoint's insert_location will not be called.  */
2034 static int
2035 should_be_inserted (struct bp_location *bl)
2036 {
2037   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2038     return 0;
2039
2040   if (bl->owner->disposition == disp_del_at_next_stop)
2041     return 0;
2042
2043   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2044     return 0;
2045
2046   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2047     return 0;
2048
2049   /* This is set for example, when we're attached to the parent of a
2050      vfork, and have detached from the child.  The child is running
2051      free, and we expect it to do an exec or exit, at which point the
2052      OS makes the parent schedulable again (and the target reports
2053      that the vfork is done).  Until the child is done with the shared
2054      memory region, do not insert breakpoints in the parent, otherwise
2055      the child could still trip on the parent's breakpoints.  Since
2056      the parent is blocked anyway, it won't miss any breakpoint.  */
2057   if (bl->pspace->breakpoints_not_allowed)
2058     return 0;
2059
2060   /* Don't insert a breakpoint if we're trying to step past its
2061      location, except if the breakpoint is a single-step breakpoint,
2062      and the breakpoint's thread is the thread which is stepping past
2063      a breakpoint.  */
2064   if ((bl->loc_type == bp_loc_software_breakpoint
2065        || bl->loc_type == bp_loc_hardware_breakpoint)
2066       && stepping_past_instruction_at (bl->pspace->aspace,
2067                                        bl->address)
2068       /* The single-step breakpoint may be inserted at the location
2069          we're trying to step if the instruction branches to itself.
2070          However, the instruction won't be executed at all and it may
2071          break the semantics of the instruction, for example, the
2072          instruction is a conditional branch or updates some flags.
2073          We can't fix it unless GDB is able to emulate the instruction
2074          or switch to displaced stepping.  */
2075       && !(bl->owner->type == bp_single_step
2076            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2077     {
2078       if (debug_infrun)
2079         {
2080           fprintf_unfiltered (gdb_stdlog,
2081                               "infrun: skipping breakpoint: "
2082                               "stepping past insn at: %s\n",
2083                               paddress (bl->gdbarch, bl->address));
2084         }
2085       return 0;
2086     }
2087
2088   /* Don't insert watchpoints if we're trying to step past the
2089      instruction that triggered one.  */
2090   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2091       && stepping_past_nonsteppable_watchpoint ())
2092     {
2093       if (debug_infrun)
2094         {
2095           fprintf_unfiltered (gdb_stdlog,
2096                               "infrun: stepping past non-steppable watchpoint. "
2097                               "skipping watchpoint at %s:%d\n",
2098                               paddress (bl->gdbarch, bl->address),
2099                               bl->length);
2100         }
2101       return 0;
2102     }
2103
2104   return 1;
2105 }
2106
2107 /* Same as should_be_inserted but does the check assuming
2108    that the location is not duplicated.  */
2109
2110 static int
2111 unduplicated_should_be_inserted (struct bp_location *bl)
2112 {
2113   int result;
2114   const int save_duplicate = bl->duplicate;
2115
2116   bl->duplicate = 0;
2117   result = should_be_inserted (bl);
2118   bl->duplicate = save_duplicate;
2119   return result;
2120 }
2121
2122 /* Parses a conditional described by an expression COND into an
2123    agent expression bytecode suitable for evaluation
2124    by the bytecode interpreter.  Return NULL if there was
2125    any error during parsing.  */
2126
2127 static agent_expr_up
2128 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2129 {
2130   if (cond == NULL)
2131     return NULL;
2132
2133   agent_expr_up aexpr;
2134
2135   /* We don't want to stop processing, so catch any errors
2136      that may show up.  */
2137   TRY
2138     {
2139       aexpr = gen_eval_for_expr (scope, cond);
2140     }
2141
2142   CATCH (ex, RETURN_MASK_ERROR)
2143     {
2144       /* If we got here, it means the condition could not be parsed to a valid
2145          bytecode expression and thus can't be evaluated on the target's side.
2146          It's no use iterating through the conditions.  */
2147     }
2148   END_CATCH
2149
2150   /* We have a valid agent expression.  */
2151   return aexpr;
2152 }
2153
2154 /* Based on location BL, create a list of breakpoint conditions to be
2155    passed on to the target.  If we have duplicated locations with different
2156    conditions, we will add such conditions to the list.  The idea is that the
2157    target will evaluate the list of conditions and will only notify GDB when
2158    one of them is true.  */
2159
2160 static void
2161 build_target_condition_list (struct bp_location *bl)
2162 {
2163   struct bp_location **locp = NULL, **loc2p;
2164   int null_condition_or_parse_error = 0;
2165   int modified = bl->needs_update;
2166   struct bp_location *loc;
2167
2168   /* Release conditions left over from a previous insert.  */
2169   bl->target_info.conditions.clear ();
2170
2171   /* This is only meaningful if the target is
2172      evaluating conditions and if the user has
2173      opted for condition evaluation on the target's
2174      side.  */
2175   if (gdb_evaluates_breakpoint_condition_p ()
2176       || !target_supports_evaluation_of_breakpoint_conditions ())
2177     return;
2178
2179   /* Do a first pass to check for locations with no assigned
2180      conditions or conditions that fail to parse to a valid agent expression
2181      bytecode.  If any of these happen, then it's no use to send conditions
2182      to the target since this location will always trigger and generate a
2183      response back to GDB.  */
2184   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2185     {
2186       loc = (*loc2p);
2187       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2188         {
2189           if (modified)
2190             {
2191               /* Re-parse the conditions since something changed.  In that
2192                  case we already freed the condition bytecodes (see
2193                  force_breakpoint_reinsertion).  We just
2194                  need to parse the condition to bytecodes again.  */
2195               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2196                                                         loc->cond.get ());
2197             }
2198
2199           /* If we have a NULL bytecode expression, it means something
2200              went wrong or we have a null condition expression.  */
2201           if (!loc->cond_bytecode)
2202             {
2203               null_condition_or_parse_error = 1;
2204               break;
2205             }
2206         }
2207     }
2208
2209   /* If any of these happened, it means we will have to evaluate the conditions
2210      for the location's address on gdb's side.  It is no use keeping bytecodes
2211      for all the other duplicate locations, thus we free all of them here.
2212
2213      This is so we have a finer control over which locations' conditions are
2214      being evaluated by GDB or the remote stub.  */
2215   if (null_condition_or_parse_error)
2216     {
2217       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2218         {
2219           loc = (*loc2p);
2220           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2221             {
2222               /* Only go as far as the first NULL bytecode is
2223                  located.  */
2224               if (!loc->cond_bytecode)
2225                 return;
2226
2227               loc->cond_bytecode.reset ();
2228             }
2229         }
2230     }
2231
2232   /* No NULL conditions or failed bytecode generation.  Build a condition list
2233      for this location's address.  */
2234   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2235     {
2236       loc = (*loc2p);
2237       if (loc->cond
2238           && is_breakpoint (loc->owner)
2239           && loc->pspace->num == bl->pspace->num
2240           && loc->owner->enable_state == bp_enabled
2241           && loc->enabled)
2242         {
2243           /* Add the condition to the vector.  This will be used later
2244              to send the conditions to the target.  */
2245           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2246         }
2247     }
2248
2249   return;
2250 }
2251
2252 /* Parses a command described by string CMD into an agent expression
2253    bytecode suitable for evaluation by the bytecode interpreter.
2254    Return NULL if there was any error during parsing.  */
2255
2256 static agent_expr_up
2257 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2258 {
2259   struct cleanup *old_cleanups = 0;
2260   struct expression **argvec;
2261   const char *cmdrest;
2262   const char *format_start, *format_end;
2263   struct format_piece *fpieces;
2264   int nargs;
2265   struct gdbarch *gdbarch = get_current_arch ();
2266
2267   if (cmd == NULL)
2268     return NULL;
2269
2270   cmdrest = cmd;
2271
2272   if (*cmdrest == ',')
2273     ++cmdrest;
2274   cmdrest = skip_spaces (cmdrest);
2275
2276   if (*cmdrest++ != '"')
2277     error (_("No format string following the location"));
2278
2279   format_start = cmdrest;
2280
2281   fpieces = parse_format_string (&cmdrest);
2282
2283   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2284
2285   format_end = cmdrest;
2286
2287   if (*cmdrest++ != '"')
2288     error (_("Bad format string, non-terminated '\"'."));
2289   
2290   cmdrest = skip_spaces (cmdrest);
2291
2292   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2293     error (_("Invalid argument syntax"));
2294
2295   if (*cmdrest == ',')
2296     cmdrest++;
2297   cmdrest = skip_spaces (cmdrest);
2298
2299   /* For each argument, make an expression.  */
2300
2301   argvec = (struct expression **) alloca (strlen (cmd)
2302                                          * sizeof (struct expression *));
2303
2304   nargs = 0;
2305   while (*cmdrest != '\0')
2306     {
2307       const char *cmd1;
2308
2309       cmd1 = cmdrest;
2310       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2311       argvec[nargs++] = expr.release ();
2312       cmdrest = cmd1;
2313       if (*cmdrest == ',')
2314         ++cmdrest;
2315     }
2316
2317   agent_expr_up aexpr;
2318
2319   /* We don't want to stop processing, so catch any errors
2320      that may show up.  */
2321   TRY
2322     {
2323       aexpr = gen_printf (scope, gdbarch, 0, 0,
2324                           format_start, format_end - format_start,
2325                           fpieces, nargs, argvec);
2326     }
2327   CATCH (ex, RETURN_MASK_ERROR)
2328     {
2329       /* If we got here, it means the command could not be parsed to a valid
2330          bytecode expression and thus can't be evaluated on the target's side.
2331          It's no use iterating through the other commands.  */
2332     }
2333   END_CATCH
2334
2335   do_cleanups (old_cleanups);
2336
2337   /* We have a valid agent expression, return it.  */
2338   return aexpr;
2339 }
2340
2341 /* Based on location BL, create a list of breakpoint commands to be
2342    passed on to the target.  If we have duplicated locations with
2343    different commands, we will add any such to the list.  */
2344
2345 static void
2346 build_target_command_list (struct bp_location *bl)
2347 {
2348   struct bp_location **locp = NULL, **loc2p;
2349   int null_command_or_parse_error = 0;
2350   int modified = bl->needs_update;
2351   struct bp_location *loc;
2352
2353   /* Clear commands left over from a previous insert.  */
2354   bl->target_info.tcommands.clear ();
2355
2356   if (!target_can_run_breakpoint_commands ())
2357     return;
2358
2359   /* For now, limit to agent-style dprintf breakpoints.  */
2360   if (dprintf_style != dprintf_style_agent)
2361     return;
2362
2363   /* For now, if we have any duplicate location that isn't a dprintf,
2364      don't install the target-side commands, as that would make the
2365      breakpoint not be reported to the core, and we'd lose
2366      control.  */
2367   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2368     {
2369       loc = (*loc2p);
2370       if (is_breakpoint (loc->owner)
2371           && loc->pspace->num == bl->pspace->num
2372           && loc->owner->type != bp_dprintf)
2373         return;
2374     }
2375
2376   /* Do a first pass to check for locations with no assigned
2377      conditions or conditions that fail to parse to a valid agent expression
2378      bytecode.  If any of these happen, then it's no use to send conditions
2379      to the target since this location will always trigger and generate a
2380      response back to GDB.  */
2381   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2382     {
2383       loc = (*loc2p);
2384       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2385         {
2386           if (modified)
2387             {
2388               /* Re-parse the commands since something changed.  In that
2389                  case we already freed the command bytecodes (see
2390                  force_breakpoint_reinsertion).  We just
2391                  need to parse the command to bytecodes again.  */
2392               loc->cmd_bytecode
2393                 = parse_cmd_to_aexpr (bl->address,
2394                                       loc->owner->extra_string);
2395             }
2396
2397           /* If we have a NULL bytecode expression, it means something
2398              went wrong or we have a null command expression.  */
2399           if (!loc->cmd_bytecode)
2400             {
2401               null_command_or_parse_error = 1;
2402               break;
2403             }
2404         }
2405     }
2406
2407   /* If anything failed, then we're not doing target-side commands,
2408      and so clean up.  */
2409   if (null_command_or_parse_error)
2410     {
2411       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2412         {
2413           loc = (*loc2p);
2414           if (is_breakpoint (loc->owner)
2415               && loc->pspace->num == bl->pspace->num)
2416             {
2417               /* Only go as far as the first NULL bytecode is
2418                  located.  */
2419               if (loc->cmd_bytecode == NULL)
2420                 return;
2421
2422               loc->cmd_bytecode.reset ();
2423             }
2424         }
2425     }
2426
2427   /* No NULL commands or failed bytecode generation.  Build a command list
2428      for this location's address.  */
2429   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2430     {
2431       loc = (*loc2p);
2432       if (loc->owner->extra_string
2433           && is_breakpoint (loc->owner)
2434           && loc->pspace->num == bl->pspace->num
2435           && loc->owner->enable_state == bp_enabled
2436           && loc->enabled)
2437         {
2438           /* Add the command to the vector.  This will be used later
2439              to send the commands to the target.  */
2440           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2441         }
2442     }
2443
2444   bl->target_info.persist = 0;
2445   /* Maybe flag this location as persistent.  */
2446   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2447     bl->target_info.persist = 1;
2448 }
2449
2450 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2451    of breakpoint according to ADDR except single-step breakpoint.
2452    Get the kind of single-step breakpoint according to the current
2453    registers state.  */
2454
2455 static int
2456 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2457 {
2458   if (bl->owner->type == bp_single_step)
2459     {
2460       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2461       struct regcache *regcache;
2462
2463       regcache = get_thread_regcache (thr->ptid);
2464
2465       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2466                                                          regcache, addr);
2467     }
2468   else
2469     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2470 }
2471
2472 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2473    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2474    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2475    Returns 0 for success, 1 if the bp_location type is not supported or
2476    -1 for failure.
2477
2478    NOTE drow/2003-09-09: This routine could be broken down to an
2479    object-style method for each breakpoint or catchpoint type.  */
2480 static int
2481 insert_bp_location (struct bp_location *bl,
2482                     struct ui_file *tmp_error_stream,
2483                     int *disabled_breaks,
2484                     int *hw_breakpoint_error,
2485                     int *hw_bp_error_explained_already)
2486 {
2487   enum errors bp_err = GDB_NO_ERROR;
2488   const char *bp_err_message = NULL;
2489
2490   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2491     return 0;
2492
2493   /* Note we don't initialize bl->target_info, as that wipes out
2494      the breakpoint location's shadow_contents if the breakpoint
2495      is still inserted at that location.  This in turn breaks
2496      target_read_memory which depends on these buffers when
2497      a memory read is requested at the breakpoint location:
2498      Once the target_info has been wiped, we fail to see that
2499      we have a breakpoint inserted at that address and thus
2500      read the breakpoint instead of returning the data saved in
2501      the breakpoint location's shadow contents.  */
2502   bl->target_info.reqstd_address = bl->address;
2503   bl->target_info.placed_address_space = bl->pspace->aspace;
2504   bl->target_info.length = bl->length;
2505
2506   /* When working with target-side conditions, we must pass all the conditions
2507      for the same breakpoint address down to the target since GDB will not
2508      insert those locations.  With a list of breakpoint conditions, the target
2509      can decide when to stop and notify GDB.  */
2510
2511   if (is_breakpoint (bl->owner))
2512     {
2513       build_target_condition_list (bl);
2514       build_target_command_list (bl);
2515       /* Reset the modification marker.  */
2516       bl->needs_update = 0;
2517     }
2518
2519   if (bl->loc_type == bp_loc_software_breakpoint
2520       || bl->loc_type == bp_loc_hardware_breakpoint)
2521     {
2522       if (bl->owner->type != bp_hardware_breakpoint)
2523         {
2524           /* If the explicitly specified breakpoint type
2525              is not hardware breakpoint, check the memory map to see
2526              if the breakpoint address is in read only memory or not.
2527
2528              Two important cases are:
2529              - location type is not hardware breakpoint, memory
2530              is readonly.  We change the type of the location to
2531              hardware breakpoint.
2532              - location type is hardware breakpoint, memory is
2533              read-write.  This means we've previously made the
2534              location hardware one, but then the memory map changed,
2535              so we undo.
2536              
2537              When breakpoints are removed, remove_breakpoints will use
2538              location types we've just set here, the only possible
2539              problem is that memory map has changed during running
2540              program, but it's not going to work anyway with current
2541              gdb.  */
2542           struct mem_region *mr 
2543             = lookup_mem_region (bl->target_info.reqstd_address);
2544           
2545           if (mr)
2546             {
2547               if (automatic_hardware_breakpoints)
2548                 {
2549                   enum bp_loc_type new_type;
2550                   
2551                   if (mr->attrib.mode != MEM_RW)
2552                     new_type = bp_loc_hardware_breakpoint;
2553                   else 
2554                     new_type = bp_loc_software_breakpoint;
2555                   
2556                   if (new_type != bl->loc_type)
2557                     {
2558                       static int said = 0;
2559
2560                       bl->loc_type = new_type;
2561                       if (!said)
2562                         {
2563                           fprintf_filtered (gdb_stdout,
2564                                             _("Note: automatically using "
2565                                               "hardware breakpoints for "
2566                                               "read-only addresses.\n"));
2567                           said = 1;
2568                         }
2569                     }
2570                 }
2571               else if (bl->loc_type == bp_loc_software_breakpoint
2572                        && mr->attrib.mode != MEM_RW)
2573                 {
2574                   fprintf_unfiltered (tmp_error_stream,
2575                                       _("Cannot insert breakpoint %d.\n"
2576                                         "Cannot set software breakpoint "
2577                                         "at read-only address %s\n"),
2578                                       bl->owner->number,
2579                                       paddress (bl->gdbarch, bl->address));
2580                   return 1;
2581                 }
2582             }
2583         }
2584         
2585       /* First check to see if we have to handle an overlay.  */
2586       if (overlay_debugging == ovly_off
2587           || bl->section == NULL
2588           || !(section_is_overlay (bl->section)))
2589         {
2590           /* No overlay handling: just set the breakpoint.  */
2591           TRY
2592             {
2593               int val;
2594
2595               val = bl->owner->ops->insert_location (bl);
2596               if (val)
2597                 bp_err = GENERIC_ERROR;
2598             }
2599           CATCH (e, RETURN_MASK_ALL)
2600             {
2601               bp_err = e.error;
2602               bp_err_message = e.message;
2603             }
2604           END_CATCH
2605         }
2606       else
2607         {
2608           /* This breakpoint is in an overlay section.
2609              Shall we set a breakpoint at the LMA?  */
2610           if (!overlay_events_enabled)
2611             {
2612               /* Yes -- overlay event support is not active, 
2613                  so we must try to set a breakpoint at the LMA.
2614                  This will not work for a hardware breakpoint.  */
2615               if (bl->loc_type == bp_loc_hardware_breakpoint)
2616                 warning (_("hardware breakpoint %d not supported in overlay!"),
2617                          bl->owner->number);
2618               else
2619                 {
2620                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2621                                                              bl->section);
2622                   /* Set a software (trap) breakpoint at the LMA.  */
2623                   bl->overlay_target_info = bl->target_info;
2624                   bl->overlay_target_info.reqstd_address = addr;
2625
2626                   /* No overlay handling: just set the breakpoint.  */
2627                   TRY
2628                     {
2629                       int val;
2630
2631                       bl->overlay_target_info.kind
2632                         = breakpoint_kind (bl, &addr);
2633                       bl->overlay_target_info.placed_address = addr;
2634                       val = target_insert_breakpoint (bl->gdbarch,
2635                                                       &bl->overlay_target_info);
2636                       if (val)
2637                         bp_err = GENERIC_ERROR;
2638                     }
2639                   CATCH (e, RETURN_MASK_ALL)
2640                     {
2641                       bp_err = e.error;
2642                       bp_err_message = e.message;
2643                     }
2644                   END_CATCH
2645
2646                   if (bp_err != GDB_NO_ERROR)
2647                     fprintf_unfiltered (tmp_error_stream,
2648                                         "Overlay breakpoint %d "
2649                                         "failed: in ROM?\n",
2650                                         bl->owner->number);
2651                 }
2652             }
2653           /* Shall we set a breakpoint at the VMA? */
2654           if (section_is_mapped (bl->section))
2655             {
2656               /* Yes.  This overlay section is mapped into memory.  */
2657               TRY
2658                 {
2659                   int val;
2660
2661                   val = bl->owner->ops->insert_location (bl);
2662                   if (val)
2663                     bp_err = GENERIC_ERROR;
2664                 }
2665               CATCH (e, RETURN_MASK_ALL)
2666                 {
2667                   bp_err = e.error;
2668                   bp_err_message = e.message;
2669                 }
2670               END_CATCH
2671             }
2672           else
2673             {
2674               /* No.  This breakpoint will not be inserted.  
2675                  No error, but do not mark the bp as 'inserted'.  */
2676               return 0;
2677             }
2678         }
2679
2680       if (bp_err != GDB_NO_ERROR)
2681         {
2682           /* Can't set the breakpoint.  */
2683
2684           /* In some cases, we might not be able to insert a
2685              breakpoint in a shared library that has already been
2686              removed, but we have not yet processed the shlib unload
2687              event.  Unfortunately, some targets that implement
2688              breakpoint insertion themselves can't tell why the
2689              breakpoint insertion failed (e.g., the remote target
2690              doesn't define error codes), so we must treat generic
2691              errors as memory errors.  */
2692           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2693               && bl->loc_type == bp_loc_software_breakpoint
2694               && (solib_name_from_address (bl->pspace, bl->address)
2695                   || shared_objfile_contains_address_p (bl->pspace,
2696                                                         bl->address)))
2697             {
2698               /* See also: disable_breakpoints_in_shlibs.  */
2699               bl->shlib_disabled = 1;
2700               observer_notify_breakpoint_modified (bl->owner);
2701               if (!*disabled_breaks)
2702                 {
2703                   fprintf_unfiltered (tmp_error_stream, 
2704                                       "Cannot insert breakpoint %d.\n", 
2705                                       bl->owner->number);
2706                   fprintf_unfiltered (tmp_error_stream, 
2707                                       "Temporarily disabling shared "
2708                                       "library breakpoints:\n");
2709                 }
2710               *disabled_breaks = 1;
2711               fprintf_unfiltered (tmp_error_stream,
2712                                   "breakpoint #%d\n", bl->owner->number);
2713               return 0;
2714             }
2715           else
2716             {
2717               if (bl->loc_type == bp_loc_hardware_breakpoint)
2718                 {
2719                   *hw_breakpoint_error = 1;
2720                   *hw_bp_error_explained_already = bp_err_message != NULL;
2721                   fprintf_unfiltered (tmp_error_stream,
2722                                       "Cannot insert hardware breakpoint %d%s",
2723                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2724                   if (bp_err_message != NULL)
2725                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2726                 }
2727               else
2728                 {
2729                   if (bp_err_message == NULL)
2730                     {
2731                       std::string message
2732                         = memory_error_message (TARGET_XFER_E_IO,
2733                                                 bl->gdbarch, bl->address);
2734
2735                       fprintf_unfiltered (tmp_error_stream,
2736                                           "Cannot insert breakpoint %d.\n"
2737                                           "%s\n",
2738                                           bl->owner->number, message.c_str ());
2739                     }
2740                   else
2741                     {
2742                       fprintf_unfiltered (tmp_error_stream,
2743                                           "Cannot insert breakpoint %d: %s\n",
2744                                           bl->owner->number,
2745                                           bp_err_message);
2746                     }
2747                 }
2748               return 1;
2749
2750             }
2751         }
2752       else
2753         bl->inserted = 1;
2754
2755       return 0;
2756     }
2757
2758   else if (bl->loc_type == bp_loc_hardware_watchpoint
2759            /* NOTE drow/2003-09-08: This state only exists for removing
2760               watchpoints.  It's not clear that it's necessary...  */
2761            && bl->owner->disposition != disp_del_at_next_stop)
2762     {
2763       int val;
2764
2765       gdb_assert (bl->owner->ops != NULL
2766                   && bl->owner->ops->insert_location != NULL);
2767
2768       val = bl->owner->ops->insert_location (bl);
2769
2770       /* If trying to set a read-watchpoint, and it turns out it's not
2771          supported, try emulating one with an access watchpoint.  */
2772       if (val == 1 && bl->watchpoint_type == hw_read)
2773         {
2774           struct bp_location *loc, **loc_temp;
2775
2776           /* But don't try to insert it, if there's already another
2777              hw_access location that would be considered a duplicate
2778              of this one.  */
2779           ALL_BP_LOCATIONS (loc, loc_temp)
2780             if (loc != bl
2781                 && loc->watchpoint_type == hw_access
2782                 && watchpoint_locations_match (bl, loc))
2783               {
2784                 bl->duplicate = 1;
2785                 bl->inserted = 1;
2786                 bl->target_info = loc->target_info;
2787                 bl->watchpoint_type = hw_access;
2788                 val = 0;
2789                 break;
2790               }
2791
2792           if (val == 1)
2793             {
2794               bl->watchpoint_type = hw_access;
2795               val = bl->owner->ops->insert_location (bl);
2796
2797               if (val)
2798                 /* Back to the original value.  */
2799                 bl->watchpoint_type = hw_read;
2800             }
2801         }
2802
2803       bl->inserted = (val == 0);
2804     }
2805
2806   else if (bl->owner->type == bp_catchpoint)
2807     {
2808       int val;
2809
2810       gdb_assert (bl->owner->ops != NULL
2811                   && bl->owner->ops->insert_location != NULL);
2812
2813       val = bl->owner->ops->insert_location (bl);
2814       if (val)
2815         {
2816           bl->owner->enable_state = bp_disabled;
2817
2818           if (val == 1)
2819             warning (_("\
2820 Error inserting catchpoint %d: Your system does not support this type\n\
2821 of catchpoint."), bl->owner->number);
2822           else
2823             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2824         }
2825
2826       bl->inserted = (val == 0);
2827
2828       /* We've already printed an error message if there was a problem
2829          inserting this catchpoint, and we've disabled the catchpoint,
2830          so just return success.  */
2831       return 0;
2832     }
2833
2834   return 0;
2835 }
2836
2837 /* This function is called when program space PSPACE is about to be
2838    deleted.  It takes care of updating breakpoints to not reference
2839    PSPACE anymore.  */
2840
2841 void
2842 breakpoint_program_space_exit (struct program_space *pspace)
2843 {
2844   struct breakpoint *b, *b_temp;
2845   struct bp_location *loc, **loc_temp;
2846
2847   /* Remove any breakpoint that was set through this program space.  */
2848   ALL_BREAKPOINTS_SAFE (b, b_temp)
2849     {
2850       if (b->pspace == pspace)
2851         delete_breakpoint (b);
2852     }
2853
2854   /* Breakpoints set through other program spaces could have locations
2855      bound to PSPACE as well.  Remove those.  */
2856   ALL_BP_LOCATIONS (loc, loc_temp)
2857     {
2858       struct bp_location *tmp;
2859
2860       if (loc->pspace == pspace)
2861         {
2862           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2863           if (loc->owner->loc == loc)
2864             loc->owner->loc = loc->next;
2865           else
2866             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2867               if (tmp->next == loc)
2868                 {
2869                   tmp->next = loc->next;
2870                   break;
2871                 }
2872         }
2873     }
2874
2875   /* Now update the global location list to permanently delete the
2876      removed locations above.  */
2877   update_global_location_list (UGLL_DONT_INSERT);
2878 }
2879
2880 /* Make sure all breakpoints are inserted in inferior.
2881    Throws exception on any error.
2882    A breakpoint that is already inserted won't be inserted
2883    again, so calling this function twice is safe.  */
2884 void
2885 insert_breakpoints (void)
2886 {
2887   struct breakpoint *bpt;
2888
2889   ALL_BREAKPOINTS (bpt)
2890     if (is_hardware_watchpoint (bpt))
2891       {
2892         struct watchpoint *w = (struct watchpoint *) bpt;
2893
2894         update_watchpoint (w, 0 /* don't reparse.  */);
2895       }
2896
2897   /* Updating watchpoints creates new locations, so update the global
2898      location list.  Explicitly tell ugll to insert locations and
2899      ignore breakpoints_always_inserted_mode.  */
2900   update_global_location_list (UGLL_INSERT);
2901 }
2902
2903 /* Invoke CALLBACK for each of bp_location.  */
2904
2905 void
2906 iterate_over_bp_locations (walk_bp_location_callback callback)
2907 {
2908   struct bp_location *loc, **loc_tmp;
2909
2910   ALL_BP_LOCATIONS (loc, loc_tmp)
2911     {
2912       callback (loc, NULL);
2913     }
2914 }
2915
2916 /* This is used when we need to synch breakpoint conditions between GDB and the
2917    target.  It is the case with deleting and disabling of breakpoints when using
2918    always-inserted mode.  */
2919
2920 static void
2921 update_inserted_breakpoint_locations (void)
2922 {
2923   struct bp_location *bl, **blp_tmp;
2924   int error_flag = 0;
2925   int val = 0;
2926   int disabled_breaks = 0;
2927   int hw_breakpoint_error = 0;
2928   int hw_bp_details_reported = 0;
2929
2930   string_file tmp_error_stream;
2931
2932   /* Explicitly mark the warning -- this will only be printed if
2933      there was an error.  */
2934   tmp_error_stream.puts ("Warning:\n");
2935
2936   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2937
2938   ALL_BP_LOCATIONS (bl, blp_tmp)
2939     {
2940       /* We only want to update software breakpoints and hardware
2941          breakpoints.  */
2942       if (!is_breakpoint (bl->owner))
2943         continue;
2944
2945       /* We only want to update locations that are already inserted
2946          and need updating.  This is to avoid unwanted insertion during
2947          deletion of breakpoints.  */
2948       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2949         continue;
2950
2951       switch_to_program_space_and_thread (bl->pspace);
2952
2953       /* For targets that support global breakpoints, there's no need
2954          to select an inferior to insert breakpoint to.  In fact, even
2955          if we aren't attached to any process yet, we should still
2956          insert breakpoints.  */
2957       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2958           && ptid_equal (inferior_ptid, null_ptid))
2959         continue;
2960
2961       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2962                                     &hw_breakpoint_error, &hw_bp_details_reported);
2963       if (val)
2964         error_flag = val;
2965     }
2966
2967   if (error_flag)
2968     {
2969       target_terminal::ours_for_output ();
2970       error_stream (tmp_error_stream);
2971     }
2972 }
2973
2974 /* Used when starting or continuing the program.  */
2975
2976 static void
2977 insert_breakpoint_locations (void)
2978 {
2979   struct breakpoint *bpt;
2980   struct bp_location *bl, **blp_tmp;
2981   int error_flag = 0;
2982   int val = 0;
2983   int disabled_breaks = 0;
2984   int hw_breakpoint_error = 0;
2985   int hw_bp_error_explained_already = 0;
2986
2987   string_file tmp_error_stream;
2988
2989   /* Explicitly mark the warning -- this will only be printed if
2990      there was an error.  */
2991   tmp_error_stream.puts ("Warning:\n");
2992
2993   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2994
2995   ALL_BP_LOCATIONS (bl, blp_tmp)
2996     {
2997       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2998         continue;
2999
3000       /* There is no point inserting thread-specific breakpoints if
3001          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3002          has BL->OWNER always non-NULL.  */
3003       if (bl->owner->thread != -1
3004           && !valid_global_thread_id (bl->owner->thread))
3005         continue;
3006
3007       switch_to_program_space_and_thread (bl->pspace);
3008
3009       /* For targets that support global breakpoints, there's no need
3010          to select an inferior to insert breakpoint to.  In fact, even
3011          if we aren't attached to any process yet, we should still
3012          insert breakpoints.  */
3013       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3014           && ptid_equal (inferior_ptid, null_ptid))
3015         continue;
3016
3017       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3018                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3019       if (val)
3020         error_flag = val;
3021     }
3022
3023   /* If we failed to insert all locations of a watchpoint, remove
3024      them, as half-inserted watchpoint is of limited use.  */
3025   ALL_BREAKPOINTS (bpt)  
3026     {
3027       int some_failed = 0;
3028       struct bp_location *loc;
3029
3030       if (!is_hardware_watchpoint (bpt))
3031         continue;
3032
3033       if (!breakpoint_enabled (bpt))
3034         continue;
3035
3036       if (bpt->disposition == disp_del_at_next_stop)
3037         continue;
3038       
3039       for (loc = bpt->loc; loc; loc = loc->next)
3040         if (!loc->inserted && should_be_inserted (loc))
3041           {
3042             some_failed = 1;
3043             break;
3044           }
3045       if (some_failed)
3046         {
3047           for (loc = bpt->loc; loc; loc = loc->next)
3048             if (loc->inserted)
3049               remove_breakpoint (loc);
3050
3051           hw_breakpoint_error = 1;
3052           tmp_error_stream.printf ("Could not insert "
3053                                    "hardware watchpoint %d.\n",
3054                                    bpt->number);
3055           error_flag = -1;
3056         }
3057     }
3058
3059   if (error_flag)
3060     {
3061       /* If a hardware breakpoint or watchpoint was inserted, add a
3062          message about possibly exhausted resources.  */
3063       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3064         {
3065           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3066 You may have requested too many hardware breakpoints/watchpoints.\n");
3067         }
3068       target_terminal::ours_for_output ();
3069       error_stream (tmp_error_stream);
3070     }
3071 }
3072
3073 /* Used when the program stops.
3074    Returns zero if successful, or non-zero if there was a problem
3075    removing a breakpoint location.  */
3076
3077 int
3078 remove_breakpoints (void)
3079 {
3080   struct bp_location *bl, **blp_tmp;
3081   int val = 0;
3082
3083   ALL_BP_LOCATIONS (bl, blp_tmp)
3084   {
3085     if (bl->inserted && !is_tracepoint (bl->owner))
3086       val |= remove_breakpoint (bl);
3087   }
3088   return val;
3089 }
3090
3091 /* When a thread exits, remove breakpoints that are related to
3092    that thread.  */
3093
3094 static void
3095 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3096 {
3097   struct breakpoint *b, *b_tmp;
3098
3099   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3100     {
3101       if (b->thread == tp->global_num && user_breakpoint_p (b))
3102         {
3103           b->disposition = disp_del_at_next_stop;
3104
3105           printf_filtered (_("\
3106 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3107                            b->number, print_thread_id (tp));
3108
3109           /* Hide it from the user.  */
3110           b->number = 0;
3111        }
3112     }
3113 }
3114
3115 /* Remove breakpoints of process PID.  */
3116
3117 int
3118 remove_breakpoints_pid (int pid)
3119 {
3120   struct bp_location *bl, **blp_tmp;
3121   int val;
3122   struct inferior *inf = find_inferior_pid (pid);
3123
3124   ALL_BP_LOCATIONS (bl, blp_tmp)
3125   {
3126     if (bl->pspace != inf->pspace)
3127       continue;
3128
3129     if (bl->inserted && !bl->target_info.persist)
3130       {
3131         val = remove_breakpoint (bl);
3132         if (val != 0)
3133           return val;
3134       }
3135   }
3136   return 0;
3137 }
3138
3139 static int internal_breakpoint_number = -1;
3140
3141 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3142    If INTERNAL is non-zero, the breakpoint number will be populated
3143    from internal_breakpoint_number and that variable decremented.
3144    Otherwise the breakpoint number will be populated from
3145    breakpoint_count and that value incremented.  Internal breakpoints
3146    do not set the internal var bpnum.  */
3147 static void
3148 set_breakpoint_number (int internal, struct breakpoint *b)
3149 {
3150   if (internal)
3151     b->number = internal_breakpoint_number--;
3152   else
3153     {
3154       set_breakpoint_count (breakpoint_count + 1);
3155       b->number = breakpoint_count;
3156     }
3157 }
3158
3159 static struct breakpoint *
3160 create_internal_breakpoint (struct gdbarch *gdbarch,
3161                             CORE_ADDR address, enum bptype type,
3162                             const struct breakpoint_ops *ops)
3163 {
3164   symtab_and_line sal;
3165   sal.pc = address;
3166   sal.section = find_pc_overlay (sal.pc);
3167   sal.pspace = current_program_space;
3168
3169   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3170   b->number = internal_breakpoint_number--;
3171   b->disposition = disp_donttouch;
3172
3173   return b;
3174 }
3175
3176 static const char *const longjmp_names[] =
3177   {
3178     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3179   };
3180 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3181
3182 /* Per-objfile data private to breakpoint.c.  */
3183 struct breakpoint_objfile_data
3184 {
3185   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3186   struct bound_minimal_symbol overlay_msym;
3187
3188   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3189   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3190
3191   /* True if we have looked for longjmp probes.  */
3192   int longjmp_searched;
3193
3194   /* SystemTap probe points for longjmp (if any).  */
3195   VEC (probe_p) *longjmp_probes;
3196
3197   /* Minimal symbol for "std::terminate()" (if any).  */
3198   struct bound_minimal_symbol terminate_msym;
3199
3200   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3201   struct bound_minimal_symbol exception_msym;
3202
3203   /* True if we have looked for exception probes.  */
3204   int exception_searched;
3205
3206   /* SystemTap probe points for unwinding (if any).  */
3207   VEC (probe_p) *exception_probes;
3208 };
3209
3210 static const struct objfile_data *breakpoint_objfile_key;
3211
3212 /* Minimal symbol not found sentinel.  */
3213 static struct minimal_symbol msym_not_found;
3214
3215 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3216
3217 static int
3218 msym_not_found_p (const struct minimal_symbol *msym)
3219 {
3220   return msym == &msym_not_found;
3221 }
3222
3223 /* Return per-objfile data needed by breakpoint.c.
3224    Allocate the data if necessary.  */
3225
3226 static struct breakpoint_objfile_data *
3227 get_breakpoint_objfile_data (struct objfile *objfile)
3228 {
3229   struct breakpoint_objfile_data *bp_objfile_data;
3230
3231   bp_objfile_data = ((struct breakpoint_objfile_data *)
3232                      objfile_data (objfile, breakpoint_objfile_key));
3233   if (bp_objfile_data == NULL)
3234     {
3235       bp_objfile_data =
3236         XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3237
3238       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3239       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3240     }
3241   return bp_objfile_data;
3242 }
3243
3244 static void
3245 free_breakpoint_probes (struct objfile *obj, void *data)
3246 {
3247   struct breakpoint_objfile_data *bp_objfile_data
3248     = (struct breakpoint_objfile_data *) data;
3249
3250   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3251   VEC_free (probe_p, bp_objfile_data->exception_probes);
3252 }
3253
3254 static void
3255 create_overlay_event_breakpoint (void)
3256 {
3257   struct objfile *objfile;
3258   const char *const func_name = "_ovly_debug_event";
3259
3260   ALL_OBJFILES (objfile)
3261     {
3262       struct breakpoint *b;
3263       struct breakpoint_objfile_data *bp_objfile_data;
3264       CORE_ADDR addr;
3265       struct explicit_location explicit_loc;
3266
3267       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3268
3269       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3270         continue;
3271
3272       if (bp_objfile_data->overlay_msym.minsym == NULL)
3273         {
3274           struct bound_minimal_symbol m;
3275
3276           m = lookup_minimal_symbol_text (func_name, objfile);
3277           if (m.minsym == NULL)
3278             {
3279               /* Avoid future lookups in this objfile.  */
3280               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3281               continue;
3282             }
3283           bp_objfile_data->overlay_msym = m;
3284         }
3285
3286       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3287       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3288                                       bp_overlay_event,
3289                                       &internal_breakpoint_ops);
3290       initialize_explicit_location (&explicit_loc);
3291       explicit_loc.function_name = ASTRDUP (func_name);
3292       b->location = new_explicit_location (&explicit_loc);
3293
3294       if (overlay_debugging == ovly_auto)
3295         {
3296           b->enable_state = bp_enabled;
3297           overlay_events_enabled = 1;
3298         }
3299       else
3300        {
3301          b->enable_state = bp_disabled;
3302          overlay_events_enabled = 0;
3303        }
3304     }
3305 }
3306
3307 static void
3308 create_longjmp_master_breakpoint (void)
3309 {
3310   struct program_space *pspace;
3311
3312   scoped_restore_current_program_space restore_pspace;
3313
3314   ALL_PSPACES (pspace)
3315   {
3316     struct objfile *objfile;
3317
3318     set_current_program_space (pspace);
3319
3320     ALL_OBJFILES (objfile)
3321     {
3322       int i;
3323       struct gdbarch *gdbarch;
3324       struct breakpoint_objfile_data *bp_objfile_data;
3325
3326       gdbarch = get_objfile_arch (objfile);
3327
3328       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3329
3330       if (!bp_objfile_data->longjmp_searched)
3331         {
3332           VEC (probe_p) *ret;
3333
3334           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3335           if (ret != NULL)
3336             {
3337               /* We are only interested in checking one element.  */
3338               struct probe *p = VEC_index (probe_p, ret, 0);
3339
3340               if (!can_evaluate_probe_arguments (p))
3341                 {
3342                   /* We cannot use the probe interface here, because it does
3343                      not know how to evaluate arguments.  */
3344                   VEC_free (probe_p, ret);
3345                   ret = NULL;
3346                 }
3347             }
3348           bp_objfile_data->longjmp_probes = ret;
3349           bp_objfile_data->longjmp_searched = 1;
3350         }
3351
3352       if (bp_objfile_data->longjmp_probes != NULL)
3353         {
3354           int i;
3355           struct probe *probe;
3356           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3357
3358           for (i = 0;
3359                VEC_iterate (probe_p,
3360                             bp_objfile_data->longjmp_probes,
3361                             i, probe);
3362                ++i)
3363             {
3364               struct breakpoint *b;
3365
3366               b = create_internal_breakpoint (gdbarch,
3367                                               get_probe_address (probe,
3368                                                                  objfile),
3369                                               bp_longjmp_master,
3370                                               &internal_breakpoint_ops);
3371               b->location = new_probe_location ("-probe-stap libc:longjmp");
3372               b->enable_state = bp_disabled;
3373             }
3374
3375           continue;
3376         }
3377
3378       if (!gdbarch_get_longjmp_target_p (gdbarch))
3379         continue;
3380
3381       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3382         {
3383           struct breakpoint *b;
3384           const char *func_name;
3385           CORE_ADDR addr;
3386           struct explicit_location explicit_loc;
3387
3388           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3389             continue;
3390
3391           func_name = longjmp_names[i];
3392           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3393             {
3394               struct bound_minimal_symbol m;
3395
3396               m = lookup_minimal_symbol_text (func_name, objfile);
3397               if (m.minsym == NULL)
3398                 {
3399                   /* Prevent future lookups in this objfile.  */
3400                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3401                   continue;
3402                 }
3403               bp_objfile_data->longjmp_msym[i] = m;
3404             }
3405
3406           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3407           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3408                                           &internal_breakpoint_ops);
3409           initialize_explicit_location (&explicit_loc);
3410           explicit_loc.function_name = ASTRDUP (func_name);
3411           b->location = new_explicit_location (&explicit_loc);
3412           b->enable_state = bp_disabled;
3413         }
3414     }
3415   }
3416 }
3417
3418 /* Create a master std::terminate breakpoint.  */
3419 static void
3420 create_std_terminate_master_breakpoint (void)
3421 {
3422   struct program_space *pspace;
3423   const char *const func_name = "std::terminate()";
3424
3425   scoped_restore_current_program_space restore_pspace;
3426
3427   ALL_PSPACES (pspace)
3428   {
3429     struct objfile *objfile;
3430     CORE_ADDR addr;
3431
3432     set_current_program_space (pspace);
3433
3434     ALL_OBJFILES (objfile)
3435     {
3436       struct breakpoint *b;
3437       struct breakpoint_objfile_data *bp_objfile_data;
3438       struct explicit_location explicit_loc;
3439
3440       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3441
3442       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3443         continue;
3444
3445       if (bp_objfile_data->terminate_msym.minsym == NULL)
3446         {
3447           struct bound_minimal_symbol m;
3448
3449           m = lookup_minimal_symbol (func_name, NULL, objfile);
3450           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3451                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3452             {
3453               /* Prevent future lookups in this objfile.  */
3454               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3455               continue;
3456             }
3457           bp_objfile_data->terminate_msym = m;
3458         }
3459
3460       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3461       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3462                                       bp_std_terminate_master,
3463                                       &internal_breakpoint_ops);
3464       initialize_explicit_location (&explicit_loc);
3465       explicit_loc.function_name = ASTRDUP (func_name);
3466       b->location = new_explicit_location (&explicit_loc);
3467       b->enable_state = bp_disabled;
3468     }
3469   }
3470 }
3471
3472 /* Install a master breakpoint on the unwinder's debug hook.  */
3473
3474 static void
3475 create_exception_master_breakpoint (void)
3476 {
3477   struct objfile *objfile;
3478   const char *const func_name = "_Unwind_DebugHook";
3479
3480   ALL_OBJFILES (objfile)
3481     {
3482       struct breakpoint *b;
3483       struct gdbarch *gdbarch;
3484       struct breakpoint_objfile_data *bp_objfile_data;
3485       CORE_ADDR addr;
3486       struct explicit_location explicit_loc;
3487
3488       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3489
3490       /* We prefer the SystemTap probe point if it exists.  */
3491       if (!bp_objfile_data->exception_searched)
3492         {
3493           VEC (probe_p) *ret;
3494
3495           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3496
3497           if (ret != NULL)
3498             {
3499               /* We are only interested in checking one element.  */
3500               struct probe *p = VEC_index (probe_p, ret, 0);
3501
3502               if (!can_evaluate_probe_arguments (p))
3503                 {
3504                   /* We cannot use the probe interface here, because it does
3505                      not know how to evaluate arguments.  */
3506                   VEC_free (probe_p, ret);
3507                   ret = NULL;
3508                 }
3509             }
3510           bp_objfile_data->exception_probes = ret;
3511           bp_objfile_data->exception_searched = 1;
3512         }
3513
3514       if (bp_objfile_data->exception_probes != NULL)
3515         {
3516           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3517           int i;
3518           struct probe *probe;
3519
3520           for (i = 0;
3521                VEC_iterate (probe_p,
3522                             bp_objfile_data->exception_probes,
3523                             i, probe);
3524                ++i)
3525             {
3526               struct breakpoint *b;
3527
3528               b = create_internal_breakpoint (gdbarch,
3529                                               get_probe_address (probe,
3530                                                                  objfile),
3531                                               bp_exception_master,
3532                                               &internal_breakpoint_ops);
3533               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3534               b->enable_state = bp_disabled;
3535             }
3536
3537           continue;
3538         }
3539
3540       /* Otherwise, try the hook function.  */
3541
3542       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3543         continue;
3544
3545       gdbarch = get_objfile_arch (objfile);
3546
3547       if (bp_objfile_data->exception_msym.minsym == NULL)
3548         {
3549           struct bound_minimal_symbol debug_hook;
3550
3551           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3552           if (debug_hook.minsym == NULL)
3553             {
3554               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3555               continue;
3556             }
3557
3558           bp_objfile_data->exception_msym = debug_hook;
3559         }
3560
3561       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3562       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3563                                                  &current_target);
3564       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3565                                       &internal_breakpoint_ops);
3566       initialize_explicit_location (&explicit_loc);
3567       explicit_loc.function_name = ASTRDUP (func_name);
3568       b->location = new_explicit_location (&explicit_loc);
3569       b->enable_state = bp_disabled;
3570     }
3571 }
3572
3573 /* Does B have a location spec?  */
3574
3575 static int
3576 breakpoint_event_location_empty_p (const struct breakpoint *b)
3577 {
3578   return b->location != NULL && event_location_empty_p (b->location.get ());
3579 }
3580
3581 void
3582 update_breakpoints_after_exec (void)
3583 {
3584   struct breakpoint *b, *b_tmp;
3585   struct bp_location *bploc, **bplocp_tmp;
3586
3587   /* We're about to delete breakpoints from GDB's lists.  If the
3588      INSERTED flag is true, GDB will try to lift the breakpoints by
3589      writing the breakpoints' "shadow contents" back into memory.  The
3590      "shadow contents" are NOT valid after an exec, so GDB should not
3591      do that.  Instead, the target is responsible from marking
3592      breakpoints out as soon as it detects an exec.  We don't do that
3593      here instead, because there may be other attempts to delete
3594      breakpoints after detecting an exec and before reaching here.  */
3595   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3596     if (bploc->pspace == current_program_space)
3597       gdb_assert (!bploc->inserted);
3598
3599   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3600   {
3601     if (b->pspace != current_program_space)
3602       continue;
3603
3604     /* Solib breakpoints must be explicitly reset after an exec().  */
3605     if (b->type == bp_shlib_event)
3606       {
3607         delete_breakpoint (b);
3608         continue;
3609       }
3610
3611     /* JIT breakpoints must be explicitly reset after an exec().  */
3612     if (b->type == bp_jit_event)
3613       {
3614         delete_breakpoint (b);
3615         continue;
3616       }
3617
3618     /* Thread event breakpoints must be set anew after an exec(),
3619        as must overlay event and longjmp master breakpoints.  */
3620     if (b->type == bp_thread_event || b->type == bp_overlay_event
3621         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3622         || b->type == bp_exception_master)
3623       {
3624         delete_breakpoint (b);
3625         continue;
3626       }
3627
3628     /* Step-resume breakpoints are meaningless after an exec().  */
3629     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3630       {
3631         delete_breakpoint (b);
3632         continue;
3633       }
3634
3635     /* Just like single-step breakpoints.  */
3636     if (b->type == bp_single_step)
3637       {
3638         delete_breakpoint (b);
3639         continue;
3640       }
3641
3642     /* Longjmp and longjmp-resume breakpoints are also meaningless
3643        after an exec.  */
3644     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3645         || b->type == bp_longjmp_call_dummy
3646         || b->type == bp_exception || b->type == bp_exception_resume)
3647       {
3648         delete_breakpoint (b);
3649         continue;
3650       }
3651
3652     if (b->type == bp_catchpoint)
3653       {
3654         /* For now, none of the bp_catchpoint breakpoints need to
3655            do anything at this point.  In the future, if some of
3656            the catchpoints need to something, we will need to add
3657            a new method, and call this method from here.  */
3658         continue;
3659       }
3660
3661     /* bp_finish is a special case.  The only way we ought to be able
3662        to see one of these when an exec() has happened, is if the user
3663        caught a vfork, and then said "finish".  Ordinarily a finish just
3664        carries them to the call-site of the current callee, by setting
3665        a temporary bp there and resuming.  But in this case, the finish
3666        will carry them entirely through the vfork & exec.
3667
3668        We don't want to allow a bp_finish to remain inserted now.  But
3669        we can't safely delete it, 'cause finish_command has a handle to
3670        the bp on a bpstat, and will later want to delete it.  There's a
3671        chance (and I've seen it happen) that if we delete the bp_finish
3672        here, that its storage will get reused by the time finish_command
3673        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3674        We really must allow finish_command to delete a bp_finish.
3675
3676        In the absence of a general solution for the "how do we know
3677        it's safe to delete something others may have handles to?"
3678        problem, what we'll do here is just uninsert the bp_finish, and
3679        let finish_command delete it.
3680
3681        (We know the bp_finish is "doomed" in the sense that it's
3682        momentary, and will be deleted as soon as finish_command sees
3683        the inferior stopped.  So it doesn't matter that the bp's
3684        address is probably bogus in the new a.out, unlike e.g., the
3685        solib breakpoints.)  */
3686
3687     if (b->type == bp_finish)
3688       {
3689         continue;
3690       }
3691
3692     /* Without a symbolic address, we have little hope of the
3693        pre-exec() address meaning the same thing in the post-exec()
3694        a.out.  */
3695     if (breakpoint_event_location_empty_p (b))
3696       {
3697         delete_breakpoint (b);
3698         continue;
3699       }
3700   }
3701 }
3702
3703 int
3704 detach_breakpoints (ptid_t ptid)
3705 {
3706   struct bp_location *bl, **blp_tmp;
3707   int val = 0;
3708   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3709   struct inferior *inf = current_inferior ();
3710
3711   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3712     error (_("Cannot detach breakpoints of inferior_ptid"));
3713
3714   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3715   inferior_ptid = ptid;
3716   ALL_BP_LOCATIONS (bl, blp_tmp)
3717   {
3718     if (bl->pspace != inf->pspace)
3719       continue;
3720
3721     /* This function must physically remove breakpoints locations
3722        from the specified ptid, without modifying the breakpoint
3723        package's state.  Locations of type bp_loc_other are only
3724        maintained at GDB side.  So, there is no need to remove
3725        these bp_loc_other locations.  Moreover, removing these
3726        would modify the breakpoint package's state.  */
3727     if (bl->loc_type == bp_loc_other)
3728       continue;
3729
3730     if (bl->inserted)
3731       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3732   }
3733
3734   return val;
3735 }
3736
3737 /* Remove the breakpoint location BL from the current address space.
3738    Note that this is used to detach breakpoints from a child fork.
3739    When we get here, the child isn't in the inferior list, and neither
3740    do we have objects to represent its address space --- we should
3741    *not* look at bl->pspace->aspace here.  */
3742
3743 static int
3744 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3745 {
3746   int val;
3747
3748   /* BL is never in moribund_locations by our callers.  */
3749   gdb_assert (bl->owner != NULL);
3750
3751   /* The type of none suggests that owner is actually deleted.
3752      This should not ever happen.  */
3753   gdb_assert (bl->owner->type != bp_none);
3754
3755   if (bl->loc_type == bp_loc_software_breakpoint
3756       || bl->loc_type == bp_loc_hardware_breakpoint)
3757     {
3758       /* "Normal" instruction breakpoint: either the standard
3759          trap-instruction bp (bp_breakpoint), or a
3760          bp_hardware_breakpoint.  */
3761
3762       /* First check to see if we have to handle an overlay.  */
3763       if (overlay_debugging == ovly_off
3764           || bl->section == NULL
3765           || !(section_is_overlay (bl->section)))
3766         {
3767           /* No overlay handling: just remove the breakpoint.  */
3768
3769           /* If we're trying to uninsert a memory breakpoint that we
3770              know is set in a dynamic object that is marked
3771              shlib_disabled, then either the dynamic object was
3772              removed with "remove-symbol-file" or with
3773              "nosharedlibrary".  In the former case, we don't know
3774              whether another dynamic object might have loaded over the
3775              breakpoint's address -- the user might well let us know
3776              about it next with add-symbol-file (the whole point of
3777              add-symbol-file is letting the user manually maintain a
3778              list of dynamically loaded objects).  If we have the
3779              breakpoint's shadow memory, that is, this is a software
3780              breakpoint managed by GDB, check whether the breakpoint
3781              is still inserted in memory, to avoid overwriting wrong
3782              code with stale saved shadow contents.  Note that HW
3783              breakpoints don't have shadow memory, as they're
3784              implemented using a mechanism that is not dependent on
3785              being able to modify the target's memory, and as such
3786              they should always be removed.  */
3787           if (bl->shlib_disabled
3788               && bl->target_info.shadow_len != 0
3789               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3790             val = 0;
3791           else
3792             val = bl->owner->ops->remove_location (bl, reason);
3793         }
3794       else
3795         {
3796           /* This breakpoint is in an overlay section.
3797              Did we set a breakpoint at the LMA?  */
3798           if (!overlay_events_enabled)
3799               {
3800                 /* Yes -- overlay event support is not active, so we
3801                    should have set a breakpoint at the LMA.  Remove it.  
3802                 */
3803                 /* Ignore any failures: if the LMA is in ROM, we will
3804                    have already warned when we failed to insert it.  */
3805                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3806                   target_remove_hw_breakpoint (bl->gdbarch,
3807                                                &bl->overlay_target_info);
3808                 else
3809                   target_remove_breakpoint (bl->gdbarch,
3810                                             &bl->overlay_target_info,
3811                                             reason);
3812               }
3813           /* Did we set a breakpoint at the VMA? 
3814              If so, we will have marked the breakpoint 'inserted'.  */
3815           if (bl->inserted)
3816             {
3817               /* Yes -- remove it.  Previously we did not bother to
3818                  remove the breakpoint if the section had been
3819                  unmapped, but let's not rely on that being safe.  We
3820                  don't know what the overlay manager might do.  */
3821
3822               /* However, we should remove *software* breakpoints only
3823                  if the section is still mapped, or else we overwrite
3824                  wrong code with the saved shadow contents.  */
3825               if (bl->loc_type == bp_loc_hardware_breakpoint
3826                   || section_is_mapped (bl->section))
3827                 val = bl->owner->ops->remove_location (bl, reason);
3828               else
3829                 val = 0;
3830             }
3831           else
3832             {
3833               /* No -- not inserted, so no need to remove.  No error.  */
3834               val = 0;
3835             }
3836         }
3837
3838       /* In some cases, we might not be able to remove a breakpoint in
3839          a shared library that has already been removed, but we have
3840          not yet processed the shlib unload event.  Similarly for an
3841          unloaded add-symbol-file object - the user might not yet have
3842          had the chance to remove-symbol-file it.  shlib_disabled will
3843          be set if the library/object has already been removed, but
3844          the breakpoint hasn't been uninserted yet, e.g., after
3845          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3846          always-inserted mode.  */
3847       if (val
3848           && (bl->loc_type == bp_loc_software_breakpoint
3849               && (bl->shlib_disabled
3850                   || solib_name_from_address (bl->pspace, bl->address)
3851                   || shared_objfile_contains_address_p (bl->pspace,
3852                                                         bl->address))))
3853         val = 0;
3854
3855       if (val)
3856         return val;
3857       bl->inserted = (reason == DETACH_BREAKPOINT);
3858     }
3859   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3860     {
3861       gdb_assert (bl->owner->ops != NULL
3862                   && bl->owner->ops->remove_location != NULL);
3863
3864       bl->inserted = (reason == DETACH_BREAKPOINT);
3865       bl->owner->ops->remove_location (bl, reason);
3866
3867       /* Failure to remove any of the hardware watchpoints comes here.  */
3868       if (reason == REMOVE_BREAKPOINT && bl->inserted)
3869         warning (_("Could not remove hardware watchpoint %d."),
3870                  bl->owner->number);
3871     }
3872   else if (bl->owner->type == bp_catchpoint
3873            && breakpoint_enabled (bl->owner)
3874            && !bl->duplicate)
3875     {
3876       gdb_assert (bl->owner->ops != NULL
3877                   && bl->owner->ops->remove_location != NULL);
3878
3879       val = bl->owner->ops->remove_location (bl, reason);
3880       if (val)
3881         return val;
3882
3883       bl->inserted = (reason == DETACH_BREAKPOINT);
3884     }
3885
3886   return 0;
3887 }
3888
3889 static int
3890 remove_breakpoint (struct bp_location *bl)
3891 {
3892   /* BL is never in moribund_locations by our callers.  */
3893   gdb_assert (bl->owner != NULL);
3894
3895   /* The type of none suggests that owner is actually deleted.
3896      This should not ever happen.  */
3897   gdb_assert (bl->owner->type != bp_none);
3898
3899   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3900
3901   switch_to_program_space_and_thread (bl->pspace);
3902
3903   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3904 }
3905
3906 /* Clear the "inserted" flag in all breakpoints.  */
3907
3908 void
3909 mark_breakpoints_out (void)
3910 {
3911   struct bp_location *bl, **blp_tmp;
3912
3913   ALL_BP_LOCATIONS (bl, blp_tmp)
3914     if (bl->pspace == current_program_space)
3915       bl->inserted = 0;
3916 }
3917
3918 /* Clear the "inserted" flag in all breakpoints and delete any
3919    breakpoints which should go away between runs of the program.
3920
3921    Plus other such housekeeping that has to be done for breakpoints
3922    between runs.
3923
3924    Note: this function gets called at the end of a run (by
3925    generic_mourn_inferior) and when a run begins (by
3926    init_wait_for_inferior).  */
3927
3928
3929
3930 void
3931 breakpoint_init_inferior (enum inf_context context)
3932 {
3933   struct breakpoint *b, *b_tmp;
3934   struct bp_location *bl;
3935   int ix;
3936   struct program_space *pspace = current_program_space;
3937
3938   /* If breakpoint locations are shared across processes, then there's
3939      nothing to do.  */
3940   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3941     return;
3942
3943   mark_breakpoints_out ();
3944
3945   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3946   {
3947     if (b->loc && b->loc->pspace != pspace)
3948       continue;
3949
3950     switch (b->type)
3951       {
3952       case bp_call_dummy:
3953       case bp_longjmp_call_dummy:
3954
3955         /* If the call dummy breakpoint is at the entry point it will
3956            cause problems when the inferior is rerun, so we better get
3957            rid of it.  */
3958
3959       case bp_watchpoint_scope:
3960
3961         /* Also get rid of scope breakpoints.  */
3962
3963       case bp_shlib_event:
3964
3965         /* Also remove solib event breakpoints.  Their addresses may
3966            have changed since the last time we ran the program.
3967            Actually we may now be debugging against different target;
3968            and so the solib backend that installed this breakpoint may
3969            not be used in by the target.  E.g.,
3970
3971            (gdb) file prog-linux
3972            (gdb) run               # native linux target
3973            ...
3974            (gdb) kill
3975            (gdb) file prog-win.exe
3976            (gdb) tar rem :9999     # remote Windows gdbserver.
3977         */
3978
3979       case bp_step_resume:
3980
3981         /* Also remove step-resume breakpoints.  */
3982
3983       case bp_single_step:
3984
3985         /* Also remove single-step breakpoints.  */
3986
3987         delete_breakpoint (b);
3988         break;
3989
3990       case bp_watchpoint:
3991       case bp_hardware_watchpoint:
3992       case bp_read_watchpoint:
3993       case bp_access_watchpoint:
3994         {
3995           struct watchpoint *w = (struct watchpoint *) b;
3996
3997           /* Likewise for watchpoints on local expressions.  */
3998           if (w->exp_valid_block != NULL)
3999             delete_breakpoint (b);
4000           else
4001             {
4002               /* Get rid of existing locations, which are no longer
4003                  valid.  New ones will be created in
4004                  update_watchpoint, when the inferior is restarted.
4005                  The next update_global_location_list call will
4006                  garbage collect them.  */
4007               b->loc = NULL;
4008
4009               if (context == inf_starting)
4010                 {
4011                   /* Reset val field to force reread of starting value in
4012                      insert_breakpoints.  */
4013                   if (w->val)
4014                     value_free (w->val);
4015                   w->val = NULL;
4016                   w->val_valid = 0;
4017                 }
4018             }
4019         }
4020         break;
4021       default:
4022         break;
4023       }
4024   }
4025
4026   /* Get rid of the moribund locations.  */
4027   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4028     decref_bp_location (&bl);
4029   VEC_free (bp_location_p, moribund_locations);
4030 }
4031
4032 /* These functions concern about actual breakpoints inserted in the
4033    target --- to e.g. check if we need to do decr_pc adjustment or if
4034    we need to hop over the bkpt --- so we check for address space
4035    match, not program space.  */
4036
4037 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4038    exists at PC.  It returns ordinary_breakpoint_here if it's an
4039    ordinary breakpoint, or permanent_breakpoint_here if it's a
4040    permanent breakpoint.
4041    - When continuing from a location with an ordinary breakpoint, we
4042      actually single step once before calling insert_breakpoints.
4043    - When continuing from a location with a permanent breakpoint, we
4044      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4045      the target, to advance the PC past the breakpoint.  */
4046
4047 enum breakpoint_here
4048 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4049 {
4050   struct bp_location *bl, **blp_tmp;
4051   int any_breakpoint_here = 0;
4052
4053   ALL_BP_LOCATIONS (bl, blp_tmp)
4054     {
4055       if (bl->loc_type != bp_loc_software_breakpoint
4056           && bl->loc_type != bp_loc_hardware_breakpoint)
4057         continue;
4058
4059       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4060       if ((breakpoint_enabled (bl->owner)
4061            || bl->permanent)
4062           && breakpoint_location_address_match (bl, aspace, pc))
4063         {
4064           if (overlay_debugging 
4065               && section_is_overlay (bl->section)
4066               && !section_is_mapped (bl->section))
4067             continue;           /* unmapped overlay -- can't be a match */
4068           else if (bl->permanent)
4069             return permanent_breakpoint_here;
4070           else
4071             any_breakpoint_here = 1;
4072         }
4073     }
4074
4075   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4076 }
4077
4078 /* See breakpoint.h.  */
4079
4080 int
4081 breakpoint_in_range_p (struct address_space *aspace,
4082                        CORE_ADDR addr, ULONGEST len)
4083 {
4084   struct bp_location *bl, **blp_tmp;
4085
4086   ALL_BP_LOCATIONS (bl, blp_tmp)
4087     {
4088       if (bl->loc_type != bp_loc_software_breakpoint
4089           && bl->loc_type != bp_loc_hardware_breakpoint)
4090         continue;
4091
4092       if ((breakpoint_enabled (bl->owner)
4093            || bl->permanent)
4094           && breakpoint_location_address_range_overlap (bl, aspace,
4095                                                         addr, len))
4096         {
4097           if (overlay_debugging
4098               && section_is_overlay (bl->section)
4099               && !section_is_mapped (bl->section))
4100             {
4101               /* Unmapped overlay -- can't be a match.  */
4102               continue;
4103             }
4104
4105           return 1;
4106         }
4107     }
4108
4109   return 0;
4110 }
4111
4112 /* Return true if there's a moribund breakpoint at PC.  */
4113
4114 int
4115 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4116 {
4117   struct bp_location *loc;
4118   int ix;
4119
4120   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4121     if (breakpoint_location_address_match (loc, aspace, pc))
4122       return 1;
4123
4124   return 0;
4125 }
4126
4127 /* Returns non-zero iff BL is inserted at PC, in address space
4128    ASPACE.  */
4129
4130 static int
4131 bp_location_inserted_here_p (struct bp_location *bl,
4132                              struct address_space *aspace, CORE_ADDR pc)
4133 {
4134   if (bl->inserted
4135       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4136                                    aspace, pc))
4137     {
4138       if (overlay_debugging
4139           && section_is_overlay (bl->section)
4140           && !section_is_mapped (bl->section))
4141         return 0;               /* unmapped overlay -- can't be a match */
4142       else
4143         return 1;
4144     }
4145   return 0;
4146 }
4147
4148 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4149
4150 int
4151 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4152 {
4153   struct bp_location **blp, **blp_tmp = NULL;
4154
4155   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4156     {
4157       struct bp_location *bl = *blp;
4158
4159       if (bl->loc_type != bp_loc_software_breakpoint
4160           && bl->loc_type != bp_loc_hardware_breakpoint)
4161         continue;
4162
4163       if (bp_location_inserted_here_p (bl, aspace, pc))
4164         return 1;
4165     }
4166   return 0;
4167 }
4168
4169 /* This function returns non-zero iff there is a software breakpoint
4170    inserted at PC.  */
4171
4172 int
4173 software_breakpoint_inserted_here_p (struct address_space *aspace,
4174                                      CORE_ADDR pc)
4175 {
4176   struct bp_location **blp, **blp_tmp = NULL;
4177
4178   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4179     {
4180       struct bp_location *bl = *blp;
4181
4182       if (bl->loc_type != bp_loc_software_breakpoint)
4183         continue;
4184
4185       if (bp_location_inserted_here_p (bl, aspace, pc))
4186         return 1;
4187     }
4188
4189   return 0;
4190 }
4191
4192 /* See breakpoint.h.  */
4193
4194 int
4195 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4196                                      CORE_ADDR pc)
4197 {
4198   struct bp_location **blp, **blp_tmp = NULL;
4199
4200   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4201     {
4202       struct bp_location *bl = *blp;
4203
4204       if (bl->loc_type != bp_loc_hardware_breakpoint)
4205         continue;
4206
4207       if (bp_location_inserted_here_p (bl, aspace, pc))
4208         return 1;
4209     }
4210
4211   return 0;
4212 }
4213
4214 int
4215 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4216                                        CORE_ADDR addr, ULONGEST len)
4217 {
4218   struct breakpoint *bpt;
4219
4220   ALL_BREAKPOINTS (bpt)
4221     {
4222       struct bp_location *loc;
4223
4224       if (bpt->type != bp_hardware_watchpoint
4225           && bpt->type != bp_access_watchpoint)
4226         continue;
4227
4228       if (!breakpoint_enabled (bpt))
4229         continue;
4230
4231       for (loc = bpt->loc; loc; loc = loc->next)
4232         if (loc->pspace->aspace == aspace && loc->inserted)
4233           {
4234             CORE_ADDR l, h;
4235
4236             /* Check for intersection.  */
4237             l = std::max<CORE_ADDR> (loc->address, addr);
4238             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4239             if (l < h)
4240               return 1;
4241           }
4242     }
4243   return 0;
4244 }
4245 \f
4246
4247 /* bpstat stuff.  External routines' interfaces are documented
4248    in breakpoint.h.  */
4249
4250 int
4251 is_catchpoint (struct breakpoint *ep)
4252 {
4253   return (ep->type == bp_catchpoint);
4254 }
4255
4256 /* Frees any storage that is part of a bpstat.  Does not walk the
4257    'next' chain.  */
4258
4259 bpstats::~bpstats ()
4260 {
4261   if (old_val != NULL)
4262     value_free (old_val);
4263   if (bp_location_at != NULL)
4264     decref_bp_location (&bp_location_at);
4265 }
4266
4267 /* Clear a bpstat so that it says we are not at any breakpoint.
4268    Also free any storage that is part of a bpstat.  */
4269
4270 void
4271 bpstat_clear (bpstat *bsp)
4272 {
4273   bpstat p;
4274   bpstat q;
4275
4276   if (bsp == 0)
4277     return;
4278   p = *bsp;
4279   while (p != NULL)
4280     {
4281       q = p->next;
4282       delete p;
4283       p = q;
4284     }
4285   *bsp = NULL;
4286 }
4287
4288 bpstats::bpstats (const bpstats &other)
4289   : next (NULL),
4290     bp_location_at (other.bp_location_at),
4291     breakpoint_at (other.breakpoint_at),
4292     commands (other.commands),
4293     old_val (other.old_val),
4294     print (other.print),
4295     stop (other.stop),
4296     print_it (other.print_it)
4297 {
4298   if (old_val != NULL)
4299     {
4300       old_val = value_copy (old_val);
4301       release_value (old_val);
4302     }
4303   incref_bp_location (bp_location_at);
4304 }
4305
4306 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4307    is part of the bpstat is copied as well.  */
4308
4309 bpstat
4310 bpstat_copy (bpstat bs)
4311 {
4312   bpstat p = NULL;
4313   bpstat tmp;
4314   bpstat retval = NULL;
4315
4316   if (bs == NULL)
4317     return bs;
4318
4319   for (; bs != NULL; bs = bs->next)
4320     {
4321       tmp = new bpstats (*bs);
4322
4323       if (p == NULL)
4324         /* This is the first thing in the chain.  */
4325         retval = tmp;
4326       else
4327         p->next = tmp;
4328       p = tmp;
4329     }
4330   p->next = NULL;
4331   return retval;
4332 }
4333
4334 /* Find the bpstat associated with this breakpoint.  */
4335
4336 bpstat
4337 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4338 {
4339   if (bsp == NULL)
4340     return NULL;
4341
4342   for (; bsp != NULL; bsp = bsp->next)
4343     {
4344       if (bsp->breakpoint_at == breakpoint)
4345         return bsp;
4346     }
4347   return NULL;
4348 }
4349
4350 /* See breakpoint.h.  */
4351
4352 int
4353 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4354 {
4355   for (; bsp != NULL; bsp = bsp->next)
4356     {
4357       if (bsp->breakpoint_at == NULL)
4358         {
4359           /* A moribund location can never explain a signal other than
4360              GDB_SIGNAL_TRAP.  */
4361           if (sig == GDB_SIGNAL_TRAP)
4362             return 1;
4363         }
4364       else
4365         {
4366           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4367                                                         sig))
4368             return 1;
4369         }
4370     }
4371
4372   return 0;
4373 }
4374
4375 /* Put in *NUM the breakpoint number of the first breakpoint we are
4376    stopped at.  *BSP upon return is a bpstat which points to the
4377    remaining breakpoints stopped at (but which is not guaranteed to be
4378    good for anything but further calls to bpstat_num).
4379
4380    Return 0 if passed a bpstat which does not indicate any breakpoints.
4381    Return -1 if stopped at a breakpoint that has been deleted since
4382    we set it.
4383    Return 1 otherwise.  */
4384
4385 int
4386 bpstat_num (bpstat *bsp, int *num)
4387 {
4388   struct breakpoint *b;
4389
4390   if ((*bsp) == NULL)
4391     return 0;                   /* No more breakpoint values */
4392
4393   /* We assume we'll never have several bpstats that correspond to a
4394      single breakpoint -- otherwise, this function might return the
4395      same number more than once and this will look ugly.  */
4396   b = (*bsp)->breakpoint_at;
4397   *bsp = (*bsp)->next;
4398   if (b == NULL)
4399     return -1;                  /* breakpoint that's been deleted since */
4400
4401   *num = b->number;             /* We have its number */
4402   return 1;
4403 }
4404
4405 /* See breakpoint.h.  */
4406
4407 void
4408 bpstat_clear_actions (void)
4409 {
4410   struct thread_info *tp;
4411   bpstat bs;
4412
4413   if (ptid_equal (inferior_ptid, null_ptid))
4414     return;
4415
4416   tp = find_thread_ptid (inferior_ptid);
4417   if (tp == NULL)
4418     return;
4419
4420   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4421     {
4422       bs->commands = NULL;
4423
4424       if (bs->old_val != NULL)
4425         {
4426           value_free (bs->old_val);
4427           bs->old_val = NULL;
4428         }
4429     }
4430 }
4431
4432 /* Called when a command is about to proceed the inferior.  */
4433
4434 static void
4435 breakpoint_about_to_proceed (void)
4436 {
4437   if (!ptid_equal (inferior_ptid, null_ptid))
4438     {
4439       struct thread_info *tp = inferior_thread ();
4440
4441       /* Allow inferior function calls in breakpoint commands to not
4442          interrupt the command list.  When the call finishes
4443          successfully, the inferior will be standing at the same
4444          breakpoint as if nothing happened.  */
4445       if (tp->control.in_infcall)
4446         return;
4447     }
4448
4449   breakpoint_proceeded = 1;
4450 }
4451
4452 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4453    or its equivalent.  */
4454
4455 static int
4456 command_line_is_silent (struct command_line *cmd)
4457 {
4458   return cmd && (strcmp ("silent", cmd->line) == 0);
4459 }
4460
4461 /* Execute all the commands associated with all the breakpoints at
4462    this location.  Any of these commands could cause the process to
4463    proceed beyond this point, etc.  We look out for such changes by
4464    checking the global "breakpoint_proceeded" after each command.
4465
4466    Returns true if a breakpoint command resumed the inferior.  In that
4467    case, it is the caller's responsibility to recall it again with the
4468    bpstat of the current thread.  */
4469
4470 static int
4471 bpstat_do_actions_1 (bpstat *bsp)
4472 {
4473   bpstat bs;
4474   int again = 0;
4475
4476   /* Avoid endless recursion if a `source' command is contained
4477      in bs->commands.  */
4478   if (executing_breakpoint_commands)
4479     return 0;
4480
4481   scoped_restore save_executing
4482     = make_scoped_restore (&executing_breakpoint_commands, 1);
4483
4484   scoped_restore preventer = prevent_dont_repeat ();
4485
4486   /* This pointer will iterate over the list of bpstat's.  */
4487   bs = *bsp;
4488
4489   breakpoint_proceeded = 0;
4490   for (; bs != NULL; bs = bs->next)
4491     {
4492       struct command_line *cmd = NULL;
4493
4494       /* Take ownership of the BSP's command tree, if it has one.
4495
4496          The command tree could legitimately contain commands like
4497          'step' and 'next', which call clear_proceed_status, which
4498          frees stop_bpstat's command tree.  To make sure this doesn't
4499          free the tree we're executing out from under us, we need to
4500          take ownership of the tree ourselves.  Since a given bpstat's
4501          commands are only executed once, we don't need to copy it; we
4502          can clear the pointer in the bpstat, and make sure we free
4503          the tree when we're done.  */
4504       counted_command_line ccmd = bs->commands;
4505       bs->commands = NULL;
4506       if (ccmd != NULL)
4507         cmd = ccmd.get ();
4508       if (command_line_is_silent (cmd))
4509         {
4510           /* The action has been already done by bpstat_stop_status.  */
4511           cmd = cmd->next;
4512         }
4513
4514       while (cmd != NULL)
4515         {
4516           execute_control_command (cmd);
4517
4518           if (breakpoint_proceeded)
4519             break;
4520           else
4521             cmd = cmd->next;
4522         }
4523
4524       if (breakpoint_proceeded)
4525         {
4526           if (current_ui->async)
4527             /* If we are in async mode, then the target might be still
4528                running, not stopped at any breakpoint, so nothing for
4529                us to do here -- just return to the event loop.  */
4530             ;
4531           else
4532             /* In sync mode, when execute_control_command returns
4533                we're already standing on the next breakpoint.
4534                Breakpoint commands for that stop were not run, since
4535                execute_command does not run breakpoint commands --
4536                only command_line_handler does, but that one is not
4537                involved in execution of breakpoint commands.  So, we
4538                can now execute breakpoint commands.  It should be
4539                noted that making execute_command do bpstat actions is
4540                not an option -- in this case we'll have recursive
4541                invocation of bpstat for each breakpoint with a
4542                command, and can easily blow up GDB stack.  Instead, we
4543                return true, which will trigger the caller to recall us
4544                with the new stop_bpstat.  */
4545             again = 1;
4546           break;
4547         }
4548     }
4549   return again;
4550 }
4551
4552 void
4553 bpstat_do_actions (void)
4554 {
4555   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4556
4557   /* Do any commands attached to breakpoint we are stopped at.  */
4558   while (!ptid_equal (inferior_ptid, null_ptid)
4559          && target_has_execution
4560          && !is_exited (inferior_ptid)
4561          && !is_executing (inferior_ptid))
4562     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4563        and only return when it is stopped at the next breakpoint, we
4564        keep doing breakpoint actions until it returns false to
4565        indicate the inferior was not resumed.  */
4566     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4567       break;
4568
4569   discard_cleanups (cleanup_if_error);
4570 }
4571
4572 /* Print out the (old or new) value associated with a watchpoint.  */
4573
4574 static void
4575 watchpoint_value_print (struct value *val, struct ui_file *stream)
4576 {
4577   if (val == NULL)
4578     fprintf_unfiltered (stream, _("<unreadable>"));
4579   else
4580     {
4581       struct value_print_options opts;
4582       get_user_print_options (&opts);
4583       value_print (val, stream, &opts);
4584     }
4585 }
4586
4587 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4588    debugging multiple threads.  */
4589
4590 void
4591 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4592 {
4593   if (uiout->is_mi_like_p ())
4594     return;
4595
4596   uiout->text ("\n");
4597
4598   if (show_thread_that_caused_stop ())
4599     {
4600       const char *name;
4601       struct thread_info *thr = inferior_thread ();
4602
4603       uiout->text ("Thread ");
4604       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4605
4606       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4607       if (name != NULL)
4608         {
4609           uiout->text (" \"");
4610           uiout->field_fmt ("name", "%s", name);
4611           uiout->text ("\"");
4612         }
4613
4614       uiout->text (" hit ");
4615     }
4616 }
4617
4618 /* Generic routine for printing messages indicating why we
4619    stopped.  The behavior of this function depends on the value
4620    'print_it' in the bpstat structure.  Under some circumstances we
4621    may decide not to print anything here and delegate the task to
4622    normal_stop().  */
4623
4624 static enum print_stop_action
4625 print_bp_stop_message (bpstat bs)
4626 {
4627   switch (bs->print_it)
4628     {
4629     case print_it_noop:
4630       /* Nothing should be printed for this bpstat entry.  */
4631       return PRINT_UNKNOWN;
4632       break;
4633
4634     case print_it_done:
4635       /* We still want to print the frame, but we already printed the
4636          relevant messages.  */
4637       return PRINT_SRC_AND_LOC;
4638       break;
4639
4640     case print_it_normal:
4641       {
4642         struct breakpoint *b = bs->breakpoint_at;
4643
4644         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4645            which has since been deleted.  */
4646         if (b == NULL)
4647           return PRINT_UNKNOWN;
4648
4649         /* Normal case.  Call the breakpoint's print_it method.  */
4650         return b->ops->print_it (bs);
4651       }
4652       break;
4653
4654     default:
4655       internal_error (__FILE__, __LINE__,
4656                       _("print_bp_stop_message: unrecognized enum value"));
4657       break;
4658     }
4659 }
4660
4661 /* A helper function that prints a shared library stopped event.  */
4662
4663 static void
4664 print_solib_event (int is_catchpoint)
4665 {
4666   int any_deleted
4667     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4668   int any_added
4669     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4670
4671   if (!is_catchpoint)
4672     {
4673       if (any_added || any_deleted)
4674         current_uiout->text (_("Stopped due to shared library event:\n"));
4675       else
4676         current_uiout->text (_("Stopped due to shared library event (no "
4677                                "libraries added or removed)\n"));
4678     }
4679
4680   if (current_uiout->is_mi_like_p ())
4681     current_uiout->field_string ("reason",
4682                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4683
4684   if (any_deleted)
4685     {
4686       char *name;
4687       int ix;
4688
4689       current_uiout->text (_("  Inferior unloaded "));
4690       ui_out_emit_list list_emitter (current_uiout, "removed");
4691       for (ix = 0;
4692            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4693                         ix, name);
4694            ++ix)
4695         {
4696           if (ix > 0)
4697             current_uiout->text ("    ");
4698           current_uiout->field_string ("library", name);
4699           current_uiout->text ("\n");
4700         }
4701     }
4702
4703   if (any_added)
4704     {
4705       struct so_list *iter;
4706       int ix;
4707
4708       current_uiout->text (_("  Inferior loaded "));
4709       ui_out_emit_list list_emitter (current_uiout, "added");
4710       for (ix = 0;
4711            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4712                         ix, iter);
4713            ++ix)
4714         {
4715           if (ix > 0)
4716             current_uiout->text ("    ");
4717           current_uiout->field_string ("library", iter->so_name);
4718           current_uiout->text ("\n");
4719         }
4720     }
4721 }
4722
4723 /* Print a message indicating what happened.  This is called from
4724    normal_stop().  The input to this routine is the head of the bpstat
4725    list - a list of the eventpoints that caused this stop.  KIND is
4726    the target_waitkind for the stopping event.  This
4727    routine calls the generic print routine for printing a message
4728    about reasons for stopping.  This will print (for example) the
4729    "Breakpoint n," part of the output.  The return value of this
4730    routine is one of:
4731
4732    PRINT_UNKNOWN: Means we printed nothing.
4733    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4734    code to print the location.  An example is 
4735    "Breakpoint 1, " which should be followed by
4736    the location.
4737    PRINT_SRC_ONLY: Means we printed something, but there is no need
4738    to also print the location part of the message.
4739    An example is the catch/throw messages, which
4740    don't require a location appended to the end.
4741    PRINT_NOTHING: We have done some printing and we don't need any 
4742    further info to be printed.  */
4743
4744 enum print_stop_action
4745 bpstat_print (bpstat bs, int kind)
4746 {
4747   enum print_stop_action val;
4748
4749   /* Maybe another breakpoint in the chain caused us to stop.
4750      (Currently all watchpoints go on the bpstat whether hit or not.
4751      That probably could (should) be changed, provided care is taken
4752      with respect to bpstat_explains_signal).  */
4753   for (; bs; bs = bs->next)
4754     {
4755       val = print_bp_stop_message (bs);
4756       if (val == PRINT_SRC_ONLY 
4757           || val == PRINT_SRC_AND_LOC 
4758           || val == PRINT_NOTHING)
4759         return val;
4760     }
4761
4762   /* If we had hit a shared library event breakpoint,
4763      print_bp_stop_message would print out this message.  If we hit an
4764      OS-level shared library event, do the same thing.  */
4765   if (kind == TARGET_WAITKIND_LOADED)
4766     {
4767       print_solib_event (0);
4768       return PRINT_NOTHING;
4769     }
4770
4771   /* We reached the end of the chain, or we got a null BS to start
4772      with and nothing was printed.  */
4773   return PRINT_UNKNOWN;
4774 }
4775
4776 /* Evaluate the boolean expression EXP and return the result.  */
4777
4778 static bool
4779 breakpoint_cond_eval (expression *exp)
4780 {
4781   struct value *mark = value_mark ();
4782   bool res = value_true (evaluate_expression (exp));
4783
4784   value_free_to_mark (mark);
4785   return res;
4786 }
4787
4788 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4789
4790 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4791   : next (NULL),
4792     bp_location_at (bl),
4793     breakpoint_at (bl->owner),
4794     commands (NULL),
4795     old_val (NULL),
4796     print (0),
4797     stop (0),
4798     print_it (print_it_normal)
4799 {
4800   incref_bp_location (bl);
4801   **bs_link_pointer = this;
4802   *bs_link_pointer = &next;
4803 }
4804
4805 bpstats::bpstats ()
4806   : next (NULL),
4807     bp_location_at (NULL),
4808     breakpoint_at (NULL),
4809     commands (NULL),
4810     old_val (NULL),
4811     print (0),
4812     stop (0),
4813     print_it (print_it_normal)
4814 {
4815 }
4816 \f
4817 /* The target has stopped with waitstatus WS.  Check if any hardware
4818    watchpoints have triggered, according to the target.  */
4819
4820 int
4821 watchpoints_triggered (struct target_waitstatus *ws)
4822 {
4823   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4824   CORE_ADDR addr;
4825   struct breakpoint *b;
4826
4827   if (!stopped_by_watchpoint)
4828     {
4829       /* We were not stopped by a watchpoint.  Mark all watchpoints
4830          as not triggered.  */
4831       ALL_BREAKPOINTS (b)
4832         if (is_hardware_watchpoint (b))
4833           {
4834             struct watchpoint *w = (struct watchpoint *) b;
4835
4836             w->watchpoint_triggered = watch_triggered_no;
4837           }
4838
4839       return 0;
4840     }
4841
4842   if (!target_stopped_data_address (&current_target, &addr))
4843     {
4844       /* We were stopped by a watchpoint, but we don't know where.
4845          Mark all watchpoints as unknown.  */
4846       ALL_BREAKPOINTS (b)
4847         if (is_hardware_watchpoint (b))
4848           {
4849             struct watchpoint *w = (struct watchpoint *) b;
4850
4851             w->watchpoint_triggered = watch_triggered_unknown;
4852           }
4853
4854       return 1;
4855     }
4856
4857   /* The target could report the data address.  Mark watchpoints
4858      affected by this data address as triggered, and all others as not
4859      triggered.  */
4860
4861   ALL_BREAKPOINTS (b)
4862     if (is_hardware_watchpoint (b))
4863       {
4864         struct watchpoint *w = (struct watchpoint *) b;
4865         struct bp_location *loc;
4866
4867         w->watchpoint_triggered = watch_triggered_no;
4868         for (loc = b->loc; loc; loc = loc->next)
4869           {
4870             if (is_masked_watchpoint (b))
4871               {
4872                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4873                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4874
4875                 if (newaddr == start)
4876                   {
4877                     w->watchpoint_triggered = watch_triggered_yes;
4878                     break;
4879                   }
4880               }
4881             /* Exact match not required.  Within range is sufficient.  */
4882             else if (target_watchpoint_addr_within_range (&current_target,
4883                                                          addr, loc->address,
4884                                                          loc->length))
4885               {
4886                 w->watchpoint_triggered = watch_triggered_yes;
4887                 break;
4888               }
4889           }
4890       }
4891
4892   return 1;
4893 }
4894
4895 /* Possible return values for watchpoint_check.  */
4896 enum wp_check_result
4897   {
4898     /* The watchpoint has been deleted.  */
4899     WP_DELETED = 1,
4900
4901     /* The value has changed.  */
4902     WP_VALUE_CHANGED = 2,
4903
4904     /* The value has not changed.  */
4905     WP_VALUE_NOT_CHANGED = 3,
4906
4907     /* Ignore this watchpoint, no matter if the value changed or not.  */
4908     WP_IGNORE = 4,
4909   };
4910
4911 #define BP_TEMPFLAG 1
4912 #define BP_HARDWAREFLAG 2
4913
4914 /* Evaluate watchpoint condition expression and check if its value
4915    changed.  */
4916
4917 static wp_check_result
4918 watchpoint_check (bpstat bs)
4919 {
4920   struct watchpoint *b;
4921   struct frame_info *fr;
4922   int within_current_scope;
4923
4924   /* BS is built from an existing struct breakpoint.  */
4925   gdb_assert (bs->breakpoint_at != NULL);
4926   b = (struct watchpoint *) bs->breakpoint_at;
4927
4928   /* If this is a local watchpoint, we only want to check if the
4929      watchpoint frame is in scope if the current thread is the thread
4930      that was used to create the watchpoint.  */
4931   if (!watchpoint_in_thread_scope (b))
4932     return WP_IGNORE;
4933
4934   if (b->exp_valid_block == NULL)
4935     within_current_scope = 1;
4936   else
4937     {
4938       struct frame_info *frame = get_current_frame ();
4939       struct gdbarch *frame_arch = get_frame_arch (frame);
4940       CORE_ADDR frame_pc = get_frame_pc (frame);
4941
4942       /* stack_frame_destroyed_p() returns a non-zero value if we're
4943          still in the function but the stack frame has already been
4944          invalidated.  Since we can't rely on the values of local
4945          variables after the stack has been destroyed, we are treating
4946          the watchpoint in that state as `not changed' without further
4947          checking.  Don't mark watchpoints as changed if the current
4948          frame is in an epilogue - even if they are in some other
4949          frame, our view of the stack is likely to be wrong and
4950          frame_find_by_id could error out.  */
4951       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4952         return WP_IGNORE;
4953
4954       fr = frame_find_by_id (b->watchpoint_frame);
4955       within_current_scope = (fr != NULL);
4956
4957       /* If we've gotten confused in the unwinder, we might have
4958          returned a frame that can't describe this variable.  */
4959       if (within_current_scope)
4960         {
4961           struct symbol *function;
4962
4963           function = get_frame_function (fr);
4964           if (function == NULL
4965               || !contained_in (b->exp_valid_block,
4966                                 SYMBOL_BLOCK_VALUE (function)))
4967             within_current_scope = 0;
4968         }
4969
4970       if (within_current_scope)
4971         /* If we end up stopping, the current frame will get selected
4972            in normal_stop.  So this call to select_frame won't affect
4973            the user.  */
4974         select_frame (fr);
4975     }
4976
4977   if (within_current_scope)
4978     {
4979       /* We use value_{,free_to_}mark because it could be a *long*
4980          time before we return to the command level and call
4981          free_all_values.  We can't call free_all_values because we
4982          might be in the middle of evaluating a function call.  */
4983
4984       int pc = 0;
4985       struct value *mark;
4986       struct value *new_val;
4987
4988       if (is_masked_watchpoint (b))
4989         /* Since we don't know the exact trigger address (from
4990            stopped_data_address), just tell the user we've triggered
4991            a mask watchpoint.  */
4992         return WP_VALUE_CHANGED;
4993
4994       mark = value_mark ();
4995       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4996
4997       if (b->val_bitsize != 0)
4998         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4999
5000       /* We use value_equal_contents instead of value_equal because
5001          the latter coerces an array to a pointer, thus comparing just
5002          the address of the array instead of its contents.  This is
5003          not what we want.  */
5004       if ((b->val != NULL) != (new_val != NULL)
5005           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5006         {
5007           if (new_val != NULL)
5008             {
5009               release_value (new_val);
5010               value_free_to_mark (mark);
5011             }
5012           bs->old_val = b->val;
5013           b->val = new_val;
5014           b->val_valid = 1;
5015           return WP_VALUE_CHANGED;
5016         }
5017       else
5018         {
5019           /* Nothing changed.  */
5020           value_free_to_mark (mark);
5021           return WP_VALUE_NOT_CHANGED;
5022         }
5023     }
5024   else
5025     {
5026       /* This seems like the only logical thing to do because
5027          if we temporarily ignored the watchpoint, then when
5028          we reenter the block in which it is valid it contains
5029          garbage (in the case of a function, it may have two
5030          garbage values, one before and one after the prologue).
5031          So we can't even detect the first assignment to it and
5032          watch after that (since the garbage may or may not equal
5033          the first value assigned).  */
5034       /* We print all the stop information in
5035          breakpoint_ops->print_it, but in this case, by the time we
5036          call breakpoint_ops->print_it this bp will be deleted
5037          already.  So we have no choice but print the information
5038          here.  */
5039
5040       SWITCH_THRU_ALL_UIS ()
5041         {
5042           struct ui_out *uiout = current_uiout;
5043
5044           if (uiout->is_mi_like_p ())
5045             uiout->field_string
5046               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5047           uiout->text ("\nWatchpoint ");
5048           uiout->field_int ("wpnum", b->number);
5049           uiout->text (" deleted because the program has left the block in\n"
5050                        "which its expression is valid.\n");
5051         }
5052
5053       /* Make sure the watchpoint's commands aren't executed.  */
5054       b->commands = NULL;
5055       watchpoint_del_at_next_stop (b);
5056
5057       return WP_DELETED;
5058     }
5059 }
5060
5061 /* Return true if it looks like target has stopped due to hitting
5062    breakpoint location BL.  This function does not check if we should
5063    stop, only if BL explains the stop.  */
5064
5065 static int
5066 bpstat_check_location (const struct bp_location *bl,
5067                        struct address_space *aspace, CORE_ADDR bp_addr,
5068                        const struct target_waitstatus *ws)
5069 {
5070   struct breakpoint *b = bl->owner;
5071
5072   /* BL is from an existing breakpoint.  */
5073   gdb_assert (b != NULL);
5074
5075   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5076 }
5077
5078 /* Determine if the watched values have actually changed, and we
5079    should stop.  If not, set BS->stop to 0.  */
5080
5081 static void
5082 bpstat_check_watchpoint (bpstat bs)
5083 {
5084   const struct bp_location *bl;
5085   struct watchpoint *b;
5086
5087   /* BS is built for existing struct breakpoint.  */
5088   bl = bs->bp_location_at;
5089   gdb_assert (bl != NULL);
5090   b = (struct watchpoint *) bs->breakpoint_at;
5091   gdb_assert (b != NULL);
5092
5093     {
5094       int must_check_value = 0;
5095       
5096       if (b->type == bp_watchpoint)
5097         /* For a software watchpoint, we must always check the
5098            watched value.  */
5099         must_check_value = 1;
5100       else if (b->watchpoint_triggered == watch_triggered_yes)
5101         /* We have a hardware watchpoint (read, write, or access)
5102            and the target earlier reported an address watched by
5103            this watchpoint.  */
5104         must_check_value = 1;
5105       else if (b->watchpoint_triggered == watch_triggered_unknown
5106                && b->type == bp_hardware_watchpoint)
5107         /* We were stopped by a hardware watchpoint, but the target could
5108            not report the data address.  We must check the watchpoint's
5109            value.  Access and read watchpoints are out of luck; without
5110            a data address, we can't figure it out.  */
5111         must_check_value = 1;
5112
5113       if (must_check_value)
5114         {
5115           wp_check_result e;
5116
5117           TRY
5118             {
5119               e = watchpoint_check (bs);
5120             }
5121           CATCH (ex, RETURN_MASK_ALL)
5122             {
5123               exception_fprintf (gdb_stderr, ex,
5124                                  "Error evaluating expression "
5125                                  "for watchpoint %d\n",
5126                                  b->number);
5127
5128               SWITCH_THRU_ALL_UIS ()
5129                 {
5130                   printf_filtered (_("Watchpoint %d deleted.\n"),
5131                                    b->number);
5132                 }
5133               watchpoint_del_at_next_stop (b);
5134               e = WP_DELETED;
5135             }
5136           END_CATCH
5137
5138           switch (e)
5139             {
5140             case WP_DELETED:
5141               /* We've already printed what needs to be printed.  */
5142               bs->print_it = print_it_done;
5143               /* Stop.  */
5144               break;
5145             case WP_IGNORE:
5146               bs->print_it = print_it_noop;
5147               bs->stop = 0;
5148               break;
5149             case WP_VALUE_CHANGED:
5150               if (b->type == bp_read_watchpoint)
5151                 {
5152                   /* There are two cases to consider here:
5153
5154                      1. We're watching the triggered memory for reads.
5155                      In that case, trust the target, and always report
5156                      the watchpoint hit to the user.  Even though
5157                      reads don't cause value changes, the value may
5158                      have changed since the last time it was read, and
5159                      since we're not trapping writes, we will not see
5160                      those, and as such we should ignore our notion of
5161                      old value.
5162
5163                      2. We're watching the triggered memory for both
5164                      reads and writes.  There are two ways this may
5165                      happen:
5166
5167                      2.1. This is a target that can't break on data
5168                      reads only, but can break on accesses (reads or
5169                      writes), such as e.g., x86.  We detect this case
5170                      at the time we try to insert read watchpoints.
5171
5172                      2.2. Otherwise, the target supports read
5173                      watchpoints, but, the user set an access or write
5174                      watchpoint watching the same memory as this read
5175                      watchpoint.
5176
5177                      If we're watching memory writes as well as reads,
5178                      ignore watchpoint hits when we find that the
5179                      value hasn't changed, as reads don't cause
5180                      changes.  This still gives false positives when
5181                      the program writes the same value to memory as
5182                      what there was already in memory (we will confuse
5183                      it for a read), but it's much better than
5184                      nothing.  */
5185
5186                   int other_write_watchpoint = 0;
5187
5188                   if (bl->watchpoint_type == hw_read)
5189                     {
5190                       struct breakpoint *other_b;
5191
5192                       ALL_BREAKPOINTS (other_b)
5193                         if (other_b->type == bp_hardware_watchpoint
5194                             || other_b->type == bp_access_watchpoint)
5195                           {
5196                             struct watchpoint *other_w =
5197                               (struct watchpoint *) other_b;
5198
5199                             if (other_w->watchpoint_triggered
5200                                 == watch_triggered_yes)
5201                               {
5202                                 other_write_watchpoint = 1;
5203                                 break;
5204                               }
5205                           }
5206                     }
5207
5208                   if (other_write_watchpoint
5209                       || bl->watchpoint_type == hw_access)
5210                     {
5211                       /* We're watching the same memory for writes,
5212                          and the value changed since the last time we
5213                          updated it, so this trap must be for a write.
5214                          Ignore it.  */
5215                       bs->print_it = print_it_noop;
5216                       bs->stop = 0;
5217                     }
5218                 }
5219               break;
5220             case WP_VALUE_NOT_CHANGED:
5221               if (b->type == bp_hardware_watchpoint
5222                   || b->type == bp_watchpoint)
5223                 {
5224                   /* Don't stop: write watchpoints shouldn't fire if
5225                      the value hasn't changed.  */
5226                   bs->print_it = print_it_noop;
5227                   bs->stop = 0;
5228                 }
5229               /* Stop.  */
5230               break;
5231             default:
5232               /* Can't happen.  */
5233               break;
5234             }
5235         }
5236       else      /* must_check_value == 0 */
5237         {
5238           /* This is a case where some watchpoint(s) triggered, but
5239              not at the address of this watchpoint, or else no
5240              watchpoint triggered after all.  So don't print
5241              anything for this watchpoint.  */
5242           bs->print_it = print_it_noop;
5243           bs->stop = 0;
5244         }
5245     }
5246 }
5247
5248 /* For breakpoints that are currently marked as telling gdb to stop,
5249    check conditions (condition proper, frame, thread and ignore count)
5250    of breakpoint referred to by BS.  If we should not stop for this
5251    breakpoint, set BS->stop to 0.  */
5252
5253 static void
5254 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5255 {
5256   const struct bp_location *bl;
5257   struct breakpoint *b;
5258   /* Assume stop.  */
5259   bool condition_result = true;
5260   struct expression *cond;
5261
5262   gdb_assert (bs->stop);
5263
5264   /* BS is built for existing struct breakpoint.  */
5265   bl = bs->bp_location_at;
5266   gdb_assert (bl != NULL);
5267   b = bs->breakpoint_at;
5268   gdb_assert (b != NULL);
5269
5270   /* Even if the target evaluated the condition on its end and notified GDB, we
5271      need to do so again since GDB does not know if we stopped due to a
5272      breakpoint or a single step breakpoint.  */
5273
5274   if (frame_id_p (b->frame_id)
5275       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5276     {
5277       bs->stop = 0;
5278       return;
5279     }
5280
5281   /* If this is a thread/task-specific breakpoint, don't waste cpu
5282      evaluating the condition if this isn't the specified
5283      thread/task.  */
5284   if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5285       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5286
5287     {
5288       bs->stop = 0;
5289       return;
5290     }
5291
5292   /* Evaluate extension language breakpoints that have a "stop" method
5293      implemented.  */
5294   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5295
5296   if (is_watchpoint (b))
5297     {
5298       struct watchpoint *w = (struct watchpoint *) b;
5299
5300       cond = w->cond_exp.get ();
5301     }
5302   else
5303     cond = bl->cond.get ();
5304
5305   if (cond && b->disposition != disp_del_at_next_stop)
5306     {
5307       int within_current_scope = 1;
5308       struct watchpoint * w;
5309
5310       /* We use value_mark and value_free_to_mark because it could
5311          be a long time before we return to the command level and
5312          call free_all_values.  We can't call free_all_values
5313          because we might be in the middle of evaluating a
5314          function call.  */
5315       struct value *mark = value_mark ();
5316
5317       if (is_watchpoint (b))
5318         w = (struct watchpoint *) b;
5319       else
5320         w = NULL;
5321
5322       /* Need to select the frame, with all that implies so that
5323          the conditions will have the right context.  Because we
5324          use the frame, we will not see an inlined function's
5325          variables when we arrive at a breakpoint at the start
5326          of the inlined function; the current frame will be the
5327          call site.  */
5328       if (w == NULL || w->cond_exp_valid_block == NULL)
5329         select_frame (get_current_frame ());
5330       else
5331         {
5332           struct frame_info *frame;
5333
5334           /* For local watchpoint expressions, which particular
5335              instance of a local is being watched matters, so we
5336              keep track of the frame to evaluate the expression
5337              in.  To evaluate the condition however, it doesn't
5338              really matter which instantiation of the function
5339              where the condition makes sense triggers the
5340              watchpoint.  This allows an expression like "watch
5341              global if q > 10" set in `func', catch writes to
5342              global on all threads that call `func', or catch
5343              writes on all recursive calls of `func' by a single
5344              thread.  We simply always evaluate the condition in
5345              the innermost frame that's executing where it makes
5346              sense to evaluate the condition.  It seems
5347              intuitive.  */
5348           frame = block_innermost_frame (w->cond_exp_valid_block);
5349           if (frame != NULL)
5350             select_frame (frame);
5351           else
5352             within_current_scope = 0;
5353         }
5354       if (within_current_scope)
5355         {
5356           TRY
5357             {
5358               condition_result = breakpoint_cond_eval (cond);
5359             }
5360           CATCH (ex, RETURN_MASK_ALL)
5361             {
5362               exception_fprintf (gdb_stderr, ex,
5363                                  "Error in testing breakpoint condition:\n");
5364             }
5365           END_CATCH
5366         }
5367       else
5368         {
5369           warning (_("Watchpoint condition cannot be tested "
5370                      "in the current scope"));
5371           /* If we failed to set the right context for this
5372              watchpoint, unconditionally report it.  */
5373         }
5374       /* FIXME-someday, should give breakpoint #.  */
5375       value_free_to_mark (mark);
5376     }
5377
5378   if (cond && !condition_result)
5379     {
5380       bs->stop = 0;
5381     }
5382   else if (b->ignore_count > 0)
5383     {
5384       b->ignore_count--;
5385       bs->stop = 0;
5386       /* Increase the hit count even though we don't stop.  */
5387       ++(b->hit_count);
5388       observer_notify_breakpoint_modified (b);
5389     }   
5390 }
5391
5392 /* Returns true if we need to track moribund locations of LOC's type
5393    on the current target.  */
5394
5395 static int
5396 need_moribund_for_location_type (struct bp_location *loc)
5397 {
5398   return ((loc->loc_type == bp_loc_software_breakpoint
5399            && !target_supports_stopped_by_sw_breakpoint ())
5400           || (loc->loc_type == bp_loc_hardware_breakpoint
5401               && !target_supports_stopped_by_hw_breakpoint ()));
5402 }
5403
5404
5405 /* Get a bpstat associated with having just stopped at address
5406    BP_ADDR in thread PTID.
5407
5408    Determine whether we stopped at a breakpoint, etc, or whether we
5409    don't understand this stop.  Result is a chain of bpstat's such
5410    that:
5411
5412    if we don't understand the stop, the result is a null pointer.
5413
5414    if we understand why we stopped, the result is not null.
5415
5416    Each element of the chain refers to a particular breakpoint or
5417    watchpoint at which we have stopped.  (We may have stopped for
5418    several reasons concurrently.)
5419
5420    Each element of the chain has valid next, breakpoint_at,
5421    commands, FIXME??? fields.  */
5422
5423 bpstat
5424 bpstat_stop_status (struct address_space *aspace,
5425                     CORE_ADDR bp_addr, ptid_t ptid,
5426                     const struct target_waitstatus *ws)
5427 {
5428   struct breakpoint *b = NULL;
5429   struct bp_location *bl;
5430   struct bp_location *loc;
5431   /* First item of allocated bpstat's.  */
5432   bpstat bs_head = NULL, *bs_link = &bs_head;
5433   /* Pointer to the last thing in the chain currently.  */
5434   bpstat bs;
5435   int ix;
5436   int need_remove_insert;
5437   int removed_any;
5438
5439   /* First, build the bpstat chain with locations that explain a
5440      target stop, while being careful to not set the target running,
5441      as that may invalidate locations (in particular watchpoint
5442      locations are recreated).  Resuming will happen here with
5443      breakpoint conditions or watchpoint expressions that include
5444      inferior function calls.  */
5445
5446   ALL_BREAKPOINTS (b)
5447     {
5448       if (!breakpoint_enabled (b))
5449         continue;
5450
5451       for (bl = b->loc; bl != NULL; bl = bl->next)
5452         {
5453           /* For hardware watchpoints, we look only at the first
5454              location.  The watchpoint_check function will work on the
5455              entire expression, not the individual locations.  For
5456              read watchpoints, the watchpoints_triggered function has
5457              checked all locations already.  */
5458           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5459             break;
5460
5461           if (!bl->enabled || bl->shlib_disabled)
5462             continue;
5463
5464           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5465             continue;
5466
5467           /* Come here if it's a watchpoint, or if the break address
5468              matches.  */
5469
5470           bs = new bpstats (bl, &bs_link);      /* Alloc a bpstat to
5471                                                    explain stop.  */
5472
5473           /* Assume we stop.  Should we find a watchpoint that is not
5474              actually triggered, or if the condition of the breakpoint
5475              evaluates as false, we'll reset 'stop' to 0.  */
5476           bs->stop = 1;
5477           bs->print = 1;
5478
5479           /* If this is a scope breakpoint, mark the associated
5480              watchpoint as triggered so that we will handle the
5481              out-of-scope event.  We'll get to the watchpoint next
5482              iteration.  */
5483           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5484             {
5485               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5486
5487               w->watchpoint_triggered = watch_triggered_yes;
5488             }
5489         }
5490     }
5491
5492   /* Check if a moribund breakpoint explains the stop.  */
5493   if (!target_supports_stopped_by_sw_breakpoint ()
5494       || !target_supports_stopped_by_hw_breakpoint ())
5495     {
5496       for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5497         {
5498           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5499               && need_moribund_for_location_type (loc))
5500             {
5501               bs = new bpstats (loc, &bs_link);
5502               /* For hits of moribund locations, we should just proceed.  */
5503               bs->stop = 0;
5504               bs->print = 0;
5505               bs->print_it = print_it_noop;
5506             }
5507         }
5508     }
5509
5510   /* A bit of special processing for shlib breakpoints.  We need to
5511      process solib loading here, so that the lists of loaded and
5512      unloaded libraries are correct before we handle "catch load" and
5513      "catch unload".  */
5514   for (bs = bs_head; bs != NULL; bs = bs->next)
5515     {
5516       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5517         {
5518           handle_solib_event ();
5519           break;
5520         }
5521     }
5522
5523   /* Now go through the locations that caused the target to stop, and
5524      check whether we're interested in reporting this stop to higher
5525      layers, or whether we should resume the target transparently.  */
5526
5527   removed_any = 0;
5528
5529   for (bs = bs_head; bs != NULL; bs = bs->next)
5530     {
5531       if (!bs->stop)
5532         continue;
5533
5534       b = bs->breakpoint_at;
5535       b->ops->check_status (bs);
5536       if (bs->stop)
5537         {
5538           bpstat_check_breakpoint_conditions (bs, ptid);
5539
5540           if (bs->stop)
5541             {
5542               ++(b->hit_count);
5543               observer_notify_breakpoint_modified (b);
5544
5545               /* We will stop here.  */
5546               if (b->disposition == disp_disable)
5547                 {
5548                   --(b->enable_count);
5549                   if (b->enable_count <= 0)
5550                     b->enable_state = bp_disabled;
5551                   removed_any = 1;
5552                 }
5553               if (b->silent)
5554                 bs->print = 0;
5555               bs->commands = b->commands;
5556               if (command_line_is_silent (bs->commands
5557                                           ? bs->commands.get () : NULL))
5558                 bs->print = 0;
5559
5560               b->ops->after_condition_true (bs);
5561             }
5562
5563         }
5564
5565       /* Print nothing for this entry if we don't stop or don't
5566          print.  */
5567       if (!bs->stop || !bs->print)
5568         bs->print_it = print_it_noop;
5569     }
5570
5571   /* If we aren't stopping, the value of some hardware watchpoint may
5572      not have changed, but the intermediate memory locations we are
5573      watching may have.  Don't bother if we're stopping; this will get
5574      done later.  */
5575   need_remove_insert = 0;
5576   if (! bpstat_causes_stop (bs_head))
5577     for (bs = bs_head; bs != NULL; bs = bs->next)
5578       if (!bs->stop
5579           && bs->breakpoint_at
5580           && is_hardware_watchpoint (bs->breakpoint_at))
5581         {
5582           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5583
5584           update_watchpoint (w, 0 /* don't reparse.  */);
5585           need_remove_insert = 1;
5586         }
5587
5588   if (need_remove_insert)
5589     update_global_location_list (UGLL_MAY_INSERT);
5590   else if (removed_any)
5591     update_global_location_list (UGLL_DONT_INSERT);
5592
5593   return bs_head;
5594 }
5595
5596 static void
5597 handle_jit_event (void)
5598 {
5599   struct frame_info *frame;
5600   struct gdbarch *gdbarch;
5601
5602   if (debug_infrun)
5603     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5604
5605   /* Switch terminal for any messages produced by
5606      breakpoint_re_set.  */
5607   target_terminal::ours_for_output ();
5608
5609   frame = get_current_frame ();
5610   gdbarch = get_frame_arch (frame);
5611
5612   jit_event_handler (gdbarch);
5613
5614   target_terminal::inferior ();
5615 }
5616
5617 /* Prepare WHAT final decision for infrun.  */
5618
5619 /* Decide what infrun needs to do with this bpstat.  */
5620
5621 struct bpstat_what
5622 bpstat_what (bpstat bs_head)
5623 {
5624   struct bpstat_what retval;
5625   bpstat bs;
5626
5627   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5628   retval.call_dummy = STOP_NONE;
5629   retval.is_longjmp = 0;
5630
5631   for (bs = bs_head; bs != NULL; bs = bs->next)
5632     {
5633       /* Extract this BS's action.  After processing each BS, we check
5634          if its action overrides all we've seem so far.  */
5635       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5636       enum bptype bptype;
5637
5638       if (bs->breakpoint_at == NULL)
5639         {
5640           /* I suspect this can happen if it was a momentary
5641              breakpoint which has since been deleted.  */
5642           bptype = bp_none;
5643         }
5644       else
5645         bptype = bs->breakpoint_at->type;
5646
5647       switch (bptype)
5648         {
5649         case bp_none:
5650           break;
5651         case bp_breakpoint:
5652         case bp_hardware_breakpoint:
5653         case bp_single_step:
5654         case bp_until:
5655         case bp_finish:
5656         case bp_shlib_event:
5657           if (bs->stop)
5658             {
5659               if (bs->print)
5660                 this_action = BPSTAT_WHAT_STOP_NOISY;
5661               else
5662                 this_action = BPSTAT_WHAT_STOP_SILENT;
5663             }
5664           else
5665             this_action = BPSTAT_WHAT_SINGLE;
5666           break;
5667         case bp_watchpoint:
5668         case bp_hardware_watchpoint:
5669         case bp_read_watchpoint:
5670         case bp_access_watchpoint:
5671           if (bs->stop)
5672             {
5673               if (bs->print)
5674                 this_action = BPSTAT_WHAT_STOP_NOISY;
5675               else
5676                 this_action = BPSTAT_WHAT_STOP_SILENT;
5677             }
5678           else
5679             {
5680               /* There was a watchpoint, but we're not stopping.
5681                  This requires no further action.  */
5682             }
5683           break;
5684         case bp_longjmp:
5685         case bp_longjmp_call_dummy:
5686         case bp_exception:
5687           if (bs->stop)
5688             {
5689               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5690               retval.is_longjmp = bptype != bp_exception;
5691             }
5692           else
5693             this_action = BPSTAT_WHAT_SINGLE;
5694           break;
5695         case bp_longjmp_resume:
5696         case bp_exception_resume:
5697           if (bs->stop)
5698             {
5699               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5700               retval.is_longjmp = bptype == bp_longjmp_resume;
5701             }
5702           else
5703             this_action = BPSTAT_WHAT_SINGLE;
5704           break;
5705         case bp_step_resume:
5706           if (bs->stop)
5707             this_action = BPSTAT_WHAT_STEP_RESUME;
5708           else
5709             {
5710               /* It is for the wrong frame.  */
5711               this_action = BPSTAT_WHAT_SINGLE;
5712             }
5713           break;
5714         case bp_hp_step_resume:
5715           if (bs->stop)
5716             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5717           else
5718             {
5719               /* It is for the wrong frame.  */
5720               this_action = BPSTAT_WHAT_SINGLE;
5721             }
5722           break;
5723         case bp_watchpoint_scope:
5724         case bp_thread_event:
5725         case bp_overlay_event:
5726         case bp_longjmp_master:
5727         case bp_std_terminate_master:
5728         case bp_exception_master:
5729           this_action = BPSTAT_WHAT_SINGLE;
5730           break;
5731         case bp_catchpoint:
5732           if (bs->stop)
5733             {
5734               if (bs->print)
5735                 this_action = BPSTAT_WHAT_STOP_NOISY;
5736               else
5737                 this_action = BPSTAT_WHAT_STOP_SILENT;
5738             }
5739           else
5740             {
5741               /* There was a catchpoint, but we're not stopping.
5742                  This requires no further action.  */
5743             }
5744           break;
5745         case bp_jit_event:
5746           this_action = BPSTAT_WHAT_SINGLE;
5747           break;
5748         case bp_call_dummy:
5749           /* Make sure the action is stop (silent or noisy),
5750              so infrun.c pops the dummy frame.  */
5751           retval.call_dummy = STOP_STACK_DUMMY;
5752           this_action = BPSTAT_WHAT_STOP_SILENT;
5753           break;
5754         case bp_std_terminate:
5755           /* Make sure the action is stop (silent or noisy),
5756              so infrun.c pops the dummy frame.  */
5757           retval.call_dummy = STOP_STD_TERMINATE;
5758           this_action = BPSTAT_WHAT_STOP_SILENT;
5759           break;
5760         case bp_tracepoint:
5761         case bp_fast_tracepoint:
5762         case bp_static_tracepoint:
5763           /* Tracepoint hits should not be reported back to GDB, and
5764              if one got through somehow, it should have been filtered
5765              out already.  */
5766           internal_error (__FILE__, __LINE__,
5767                           _("bpstat_what: tracepoint encountered"));
5768           break;
5769         case bp_gnu_ifunc_resolver:
5770           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5771           this_action = BPSTAT_WHAT_SINGLE;
5772           break;
5773         case bp_gnu_ifunc_resolver_return:
5774           /* The breakpoint will be removed, execution will restart from the
5775              PC of the former breakpoint.  */
5776           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5777           break;
5778
5779         case bp_dprintf:
5780           if (bs->stop)
5781             this_action = BPSTAT_WHAT_STOP_SILENT;
5782           else
5783             this_action = BPSTAT_WHAT_SINGLE;
5784           break;
5785
5786         default:
5787           internal_error (__FILE__, __LINE__,
5788                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5789         }
5790
5791       retval.main_action = std::max (retval.main_action, this_action);
5792     }
5793
5794   return retval;
5795 }
5796
5797 void
5798 bpstat_run_callbacks (bpstat bs_head)
5799 {
5800   bpstat bs;
5801
5802   for (bs = bs_head; bs != NULL; bs = bs->next)
5803     {
5804       struct breakpoint *b = bs->breakpoint_at;
5805
5806       if (b == NULL)
5807         continue;
5808       switch (b->type)
5809         {
5810         case bp_jit_event:
5811           handle_jit_event ();
5812           break;
5813         case bp_gnu_ifunc_resolver:
5814           gnu_ifunc_resolver_stop (b);
5815           break;
5816         case bp_gnu_ifunc_resolver_return:
5817           gnu_ifunc_resolver_return_stop (b);
5818           break;
5819         }
5820     }
5821 }
5822
5823 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5824    without hardware support).  This isn't related to a specific bpstat,
5825    just to things like whether watchpoints are set.  */
5826
5827 int
5828 bpstat_should_step (void)
5829 {
5830   struct breakpoint *b;
5831
5832   ALL_BREAKPOINTS (b)
5833     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5834       return 1;
5835   return 0;
5836 }
5837
5838 int
5839 bpstat_causes_stop (bpstat bs)
5840 {
5841   for (; bs != NULL; bs = bs->next)
5842     if (bs->stop)
5843       return 1;
5844
5845   return 0;
5846 }
5847
5848 \f
5849
5850 /* Compute a string of spaces suitable to indent the next line
5851    so it starts at the position corresponding to the table column
5852    named COL_NAME in the currently active table of UIOUT.  */
5853
5854 static char *
5855 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5856 {
5857   static char wrap_indent[80];
5858   int i, total_width, width, align;
5859   const char *text;
5860
5861   total_width = 0;
5862   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5863     {
5864       if (strcmp (text, col_name) == 0)
5865         {
5866           gdb_assert (total_width < sizeof wrap_indent);
5867           memset (wrap_indent, ' ', total_width);
5868           wrap_indent[total_width] = 0;
5869
5870           return wrap_indent;
5871         }
5872
5873       total_width += width + 1;
5874     }
5875
5876   return NULL;
5877 }
5878
5879 /* Determine if the locations of this breakpoint will have their conditions
5880    evaluated by the target, host or a mix of both.  Returns the following:
5881
5882     "host": Host evals condition.
5883     "host or target": Host or Target evals condition.
5884     "target": Target evals condition.
5885 */
5886
5887 static const char *
5888 bp_condition_evaluator (struct breakpoint *b)
5889 {
5890   struct bp_location *bl;
5891   char host_evals = 0;
5892   char target_evals = 0;
5893
5894   if (!b)
5895     return NULL;
5896
5897   if (!is_breakpoint (b))
5898     return NULL;
5899
5900   if (gdb_evaluates_breakpoint_condition_p ()
5901       || !target_supports_evaluation_of_breakpoint_conditions ())
5902     return condition_evaluation_host;
5903
5904   for (bl = b->loc; bl; bl = bl->next)
5905     {
5906       if (bl->cond_bytecode)
5907         target_evals++;
5908       else
5909         host_evals++;
5910     }
5911
5912   if (host_evals && target_evals)
5913     return condition_evaluation_both;
5914   else if (target_evals)
5915     return condition_evaluation_target;
5916   else
5917     return condition_evaluation_host;
5918 }
5919
5920 /* Determine the breakpoint location's condition evaluator.  This is
5921    similar to bp_condition_evaluator, but for locations.  */
5922
5923 static const char *
5924 bp_location_condition_evaluator (struct bp_location *bl)
5925 {
5926   if (bl && !is_breakpoint (bl->owner))
5927     return NULL;
5928
5929   if (gdb_evaluates_breakpoint_condition_p ()
5930       || !target_supports_evaluation_of_breakpoint_conditions ())
5931     return condition_evaluation_host;
5932
5933   if (bl && bl->cond_bytecode)
5934     return condition_evaluation_target;
5935   else
5936     return condition_evaluation_host;
5937 }
5938
5939 /* Print the LOC location out of the list of B->LOC locations.  */
5940
5941 static void
5942 print_breakpoint_location (struct breakpoint *b,
5943                            struct bp_location *loc)
5944 {
5945   struct ui_out *uiout = current_uiout;
5946
5947   scoped_restore_current_program_space restore_pspace;
5948
5949   if (loc != NULL && loc->shlib_disabled)
5950     loc = NULL;
5951
5952   if (loc != NULL)
5953     set_current_program_space (loc->pspace);
5954
5955   if (b->display_canonical)
5956     uiout->field_string ("what", event_location_to_string (b->location.get ()));
5957   else if (loc && loc->symtab)
5958     {
5959       struct symbol *sym 
5960         = find_pc_sect_function (loc->address, loc->section);
5961       if (sym)
5962         {
5963           uiout->text ("in ");
5964           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
5965           uiout->text (" ");
5966           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5967           uiout->text ("at ");
5968         }
5969       uiout->field_string ("file",
5970                            symtab_to_filename_for_display (loc->symtab));
5971       uiout->text (":");
5972
5973       if (uiout->is_mi_like_p ())
5974         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5975       
5976       uiout->field_int ("line", loc->line_number);
5977     }
5978   else if (loc)
5979     {
5980       string_file stb;
5981
5982       print_address_symbolic (loc->gdbarch, loc->address, &stb,
5983                               demangle, "");
5984       uiout->field_stream ("at", stb);
5985     }
5986   else
5987     {
5988       uiout->field_string ("pending",
5989                            event_location_to_string (b->location.get ()));
5990       /* If extra_string is available, it could be holding a condition
5991          or dprintf arguments.  In either case, make sure it is printed,
5992          too, but only for non-MI streams.  */
5993       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5994         {
5995           if (b->type == bp_dprintf)
5996             uiout->text (",");
5997           else
5998             uiout->text (" ");
5999           uiout->text (b->extra_string);
6000         }
6001     }
6002
6003   if (loc && is_breakpoint (b)
6004       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6005       && bp_condition_evaluator (b) == condition_evaluation_both)
6006     {
6007       uiout->text (" (");
6008       uiout->field_string ("evaluated-by",
6009                            bp_location_condition_evaluator (loc));
6010       uiout->text (")");
6011     }
6012 }
6013
6014 static const char *
6015 bptype_string (enum bptype type)
6016 {
6017   struct ep_type_description
6018     {
6019       enum bptype type;
6020       const char *description;
6021     };
6022   static struct ep_type_description bptypes[] =
6023   {
6024     {bp_none, "?deleted?"},
6025     {bp_breakpoint, "breakpoint"},
6026     {bp_hardware_breakpoint, "hw breakpoint"},
6027     {bp_single_step, "sw single-step"},
6028     {bp_until, "until"},
6029     {bp_finish, "finish"},
6030     {bp_watchpoint, "watchpoint"},
6031     {bp_hardware_watchpoint, "hw watchpoint"},
6032     {bp_read_watchpoint, "read watchpoint"},
6033     {bp_access_watchpoint, "acc watchpoint"},
6034     {bp_longjmp, "longjmp"},
6035     {bp_longjmp_resume, "longjmp resume"},
6036     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6037     {bp_exception, "exception"},
6038     {bp_exception_resume, "exception resume"},
6039     {bp_step_resume, "step resume"},
6040     {bp_hp_step_resume, "high-priority step resume"},
6041     {bp_watchpoint_scope, "watchpoint scope"},
6042     {bp_call_dummy, "call dummy"},
6043     {bp_std_terminate, "std::terminate"},
6044     {bp_shlib_event, "shlib events"},
6045     {bp_thread_event, "thread events"},
6046     {bp_overlay_event, "overlay events"},
6047     {bp_longjmp_master, "longjmp master"},
6048     {bp_std_terminate_master, "std::terminate master"},
6049     {bp_exception_master, "exception master"},
6050     {bp_catchpoint, "catchpoint"},
6051     {bp_tracepoint, "tracepoint"},
6052     {bp_fast_tracepoint, "fast tracepoint"},
6053     {bp_static_tracepoint, "static tracepoint"},
6054     {bp_dprintf, "dprintf"},
6055     {bp_jit_event, "jit events"},
6056     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6057     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6058   };
6059
6060   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6061       || ((int) type != bptypes[(int) type].type))
6062     internal_error (__FILE__, __LINE__,
6063                     _("bptypes table does not describe type #%d."),
6064                     (int) type);
6065
6066   return bptypes[(int) type].description;
6067 }
6068
6069 /* For MI, output a field named 'thread-groups' with a list as the value.
6070    For CLI, prefix the list with the string 'inf'. */
6071
6072 static void
6073 output_thread_groups (struct ui_out *uiout,
6074                       const char *field_name,
6075                       VEC(int) *inf_num,
6076                       int mi_only)
6077 {
6078   int is_mi = uiout->is_mi_like_p ();
6079   int inf;
6080   int i;
6081
6082   /* For backward compatibility, don't display inferiors in CLI unless
6083      there are several.  Always display them for MI. */
6084   if (!is_mi && mi_only)
6085     return;
6086
6087   ui_out_emit_list list_emitter (uiout, field_name);
6088
6089   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6090     {
6091       if (is_mi)
6092         {
6093           char mi_group[10];
6094
6095           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6096           uiout->field_string (NULL, mi_group);
6097         }
6098       else
6099         {
6100           if (i == 0)
6101             uiout->text (" inf ");
6102           else
6103             uiout->text (", ");
6104         
6105           uiout->text (plongest (inf));
6106         }
6107     }
6108 }
6109
6110 /* Print B to gdb_stdout.  */
6111
6112 static void
6113 print_one_breakpoint_location (struct breakpoint *b,
6114                                struct bp_location *loc,
6115                                int loc_number,
6116                                struct bp_location **last_loc,
6117                                int allflag)
6118 {
6119   struct command_line *l;
6120   static char bpenables[] = "nynny";
6121
6122   struct ui_out *uiout = current_uiout;
6123   int header_of_multiple = 0;
6124   int part_of_multiple = (loc != NULL);
6125   struct value_print_options opts;
6126
6127   get_user_print_options (&opts);
6128
6129   gdb_assert (!loc || loc_number != 0);
6130   /* See comment in print_one_breakpoint concerning treatment of
6131      breakpoints with single disabled location.  */
6132   if (loc == NULL 
6133       && (b->loc != NULL 
6134           && (b->loc->next != NULL || !b->loc->enabled)))
6135     header_of_multiple = 1;
6136   if (loc == NULL)
6137     loc = b->loc;
6138
6139   annotate_record ();
6140
6141   /* 1 */
6142   annotate_field (0);
6143   if (part_of_multiple)
6144     {
6145       char *formatted;
6146       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6147       uiout->field_string ("number", formatted);
6148       xfree (formatted);
6149     }
6150   else
6151     {
6152       uiout->field_int ("number", b->number);
6153     }
6154
6155   /* 2 */
6156   annotate_field (1);
6157   if (part_of_multiple)
6158     uiout->field_skip ("type");
6159   else
6160     uiout->field_string ("type", bptype_string (b->type));
6161
6162   /* 3 */
6163   annotate_field (2);
6164   if (part_of_multiple)
6165     uiout->field_skip ("disp");
6166   else
6167     uiout->field_string ("disp", bpdisp_text (b->disposition));
6168
6169
6170   /* 4 */
6171   annotate_field (3);
6172   if (part_of_multiple)
6173     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6174   else
6175     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6176   uiout->spaces (2);
6177
6178   
6179   /* 5 and 6 */
6180   if (b->ops != NULL && b->ops->print_one != NULL)
6181     {
6182       /* Although the print_one can possibly print all locations,
6183          calling it here is not likely to get any nice result.  So,
6184          make sure there's just one location.  */
6185       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6186       b->ops->print_one (b, last_loc);
6187     }
6188   else
6189     switch (b->type)
6190       {
6191       case bp_none:
6192         internal_error (__FILE__, __LINE__,
6193                         _("print_one_breakpoint: bp_none encountered\n"));
6194         break;
6195
6196       case bp_watchpoint:
6197       case bp_hardware_watchpoint:
6198       case bp_read_watchpoint:
6199       case bp_access_watchpoint:
6200         {
6201           struct watchpoint *w = (struct watchpoint *) b;
6202
6203           /* Field 4, the address, is omitted (which makes the columns
6204              not line up too nicely with the headers, but the effect
6205              is relatively readable).  */
6206           if (opts.addressprint)
6207             uiout->field_skip ("addr");
6208           annotate_field (5);
6209           uiout->field_string ("what", w->exp_string);
6210         }
6211         break;
6212
6213       case bp_breakpoint:
6214       case bp_hardware_breakpoint:
6215       case bp_single_step:
6216       case bp_until:
6217       case bp_finish:
6218       case bp_longjmp:
6219       case bp_longjmp_resume:
6220       case bp_longjmp_call_dummy:
6221       case bp_exception:
6222       case bp_exception_resume:
6223       case bp_step_resume:
6224       case bp_hp_step_resume:
6225       case bp_watchpoint_scope:
6226       case bp_call_dummy:
6227       case bp_std_terminate:
6228       case bp_shlib_event:
6229       case bp_thread_event:
6230       case bp_overlay_event:
6231       case bp_longjmp_master:
6232       case bp_std_terminate_master:
6233       case bp_exception_master:
6234       case bp_tracepoint:
6235       case bp_fast_tracepoint:
6236       case bp_static_tracepoint:
6237       case bp_dprintf:
6238       case bp_jit_event:
6239       case bp_gnu_ifunc_resolver:
6240       case bp_gnu_ifunc_resolver_return:
6241         if (opts.addressprint)
6242           {
6243             annotate_field (4);
6244             if (header_of_multiple)
6245               uiout->field_string ("addr", "<MULTIPLE>");
6246             else if (b->loc == NULL || loc->shlib_disabled)
6247               uiout->field_string ("addr", "<PENDING>");
6248             else
6249               uiout->field_core_addr ("addr",
6250                                       loc->gdbarch, loc->address);
6251           }
6252         annotate_field (5);
6253         if (!header_of_multiple)
6254           print_breakpoint_location (b, loc);
6255         if (b->loc)
6256           *last_loc = b->loc;
6257         break;
6258       }
6259
6260
6261   if (loc != NULL && !header_of_multiple)
6262     {
6263       struct inferior *inf;
6264       VEC(int) *inf_num = NULL;
6265       int mi_only = 1;
6266
6267       ALL_INFERIORS (inf)
6268         {
6269           if (inf->pspace == loc->pspace)
6270             VEC_safe_push (int, inf_num, inf->num);
6271         }
6272
6273         /* For backward compatibility, don't display inferiors in CLI unless
6274            there are several.  Always display for MI. */
6275         if (allflag
6276             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6277                 && (number_of_program_spaces () > 1
6278                     || number_of_inferiors () > 1)
6279                 /* LOC is for existing B, it cannot be in
6280                    moribund_locations and thus having NULL OWNER.  */
6281                 && loc->owner->type != bp_catchpoint))
6282         mi_only = 0;
6283       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6284       VEC_free (int, inf_num);
6285     }
6286
6287   if (!part_of_multiple)
6288     {
6289       if (b->thread != -1)
6290         {
6291           /* FIXME: This seems to be redundant and lost here; see the
6292              "stop only in" line a little further down.  */
6293           uiout->text (" thread ");
6294           uiout->field_int ("thread", b->thread);
6295         }
6296       else if (b->task != 0)
6297         {
6298           uiout->text (" task ");
6299           uiout->field_int ("task", b->task);
6300         }
6301     }
6302
6303   uiout->text ("\n");
6304
6305   if (!part_of_multiple)
6306     b->ops->print_one_detail (b, uiout);
6307
6308   if (part_of_multiple && frame_id_p (b->frame_id))
6309     {
6310       annotate_field (6);
6311       uiout->text ("\tstop only in stack frame at ");
6312       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6313          the frame ID.  */
6314       uiout->field_core_addr ("frame",
6315                               b->gdbarch, b->frame_id.stack_addr);
6316       uiout->text ("\n");
6317     }
6318   
6319   if (!part_of_multiple && b->cond_string)
6320     {
6321       annotate_field (7);
6322       if (is_tracepoint (b))
6323         uiout->text ("\ttrace only if ");
6324       else
6325         uiout->text ("\tstop only if ");
6326       uiout->field_string ("cond", b->cond_string);
6327
6328       /* Print whether the target is doing the breakpoint's condition
6329          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6330       if (is_breakpoint (b)
6331           && breakpoint_condition_evaluation_mode ()
6332           == condition_evaluation_target)
6333         {
6334           uiout->text (" (");
6335           uiout->field_string ("evaluated-by",
6336                                bp_condition_evaluator (b));
6337           uiout->text (" evals)");
6338         }
6339       uiout->text ("\n");
6340     }
6341
6342   if (!part_of_multiple && b->thread != -1)
6343     {
6344       /* FIXME should make an annotation for this.  */
6345       uiout->text ("\tstop only in thread ");
6346       if (uiout->is_mi_like_p ())
6347         uiout->field_int ("thread", b->thread);
6348       else
6349         {
6350           struct thread_info *thr = find_thread_global_id (b->thread);
6351
6352           uiout->field_string ("thread", print_thread_id (thr));
6353         }
6354       uiout->text ("\n");
6355     }
6356   
6357   if (!part_of_multiple)
6358     {
6359       if (b->hit_count)
6360         {
6361           /* FIXME should make an annotation for this.  */
6362           if (is_catchpoint (b))
6363             uiout->text ("\tcatchpoint");
6364           else if (is_tracepoint (b))
6365             uiout->text ("\ttracepoint");
6366           else
6367             uiout->text ("\tbreakpoint");
6368           uiout->text (" already hit ");
6369           uiout->field_int ("times", b->hit_count);
6370           if (b->hit_count == 1)
6371             uiout->text (" time\n");
6372           else
6373             uiout->text (" times\n");
6374         }
6375       else
6376         {
6377           /* Output the count also if it is zero, but only if this is mi.  */
6378           if (uiout->is_mi_like_p ())
6379             uiout->field_int ("times", b->hit_count);
6380         }
6381     }
6382
6383   if (!part_of_multiple && b->ignore_count)
6384     {
6385       annotate_field (8);
6386       uiout->text ("\tignore next ");
6387       uiout->field_int ("ignore", b->ignore_count);
6388       uiout->text (" hits\n");
6389     }
6390
6391   /* Note that an enable count of 1 corresponds to "enable once"
6392      behavior, which is reported by the combination of enablement and
6393      disposition, so we don't need to mention it here.  */
6394   if (!part_of_multiple && b->enable_count > 1)
6395     {
6396       annotate_field (8);
6397       uiout->text ("\tdisable after ");
6398       /* Tweak the wording to clarify that ignore and enable counts
6399          are distinct, and have additive effect.  */
6400       if (b->ignore_count)
6401         uiout->text ("additional ");
6402       else
6403         uiout->text ("next ");
6404       uiout->field_int ("enable", b->enable_count);
6405       uiout->text (" hits\n");
6406     }
6407
6408   if (!part_of_multiple && is_tracepoint (b))
6409     {
6410       struct tracepoint *tp = (struct tracepoint *) b;
6411
6412       if (tp->traceframe_usage)
6413         {
6414           uiout->text ("\ttrace buffer usage ");
6415           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6416           uiout->text (" bytes\n");
6417         }
6418     }
6419
6420   l = b->commands ? b->commands.get () : NULL;
6421   if (!part_of_multiple && l)
6422     {
6423       annotate_field (9);
6424       ui_out_emit_tuple tuple_emitter (uiout, "script");
6425       print_command_lines (uiout, l, 4);
6426     }
6427
6428   if (is_tracepoint (b))
6429     {
6430       struct tracepoint *t = (struct tracepoint *) b;
6431
6432       if (!part_of_multiple && t->pass_count)
6433         {
6434           annotate_field (10);
6435           uiout->text ("\tpass count ");
6436           uiout->field_int ("pass", t->pass_count);
6437           uiout->text (" \n");
6438         }
6439
6440       /* Don't display it when tracepoint or tracepoint location is
6441          pending.   */
6442       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6443         {
6444           annotate_field (11);
6445
6446           if (uiout->is_mi_like_p ())
6447             uiout->field_string ("installed",
6448                                  loc->inserted ? "y" : "n");
6449           else
6450             {
6451               if (loc->inserted)
6452                 uiout->text ("\t");
6453               else
6454                 uiout->text ("\tnot ");
6455               uiout->text ("installed on target\n");
6456             }
6457         }
6458     }
6459
6460   if (uiout->is_mi_like_p () && !part_of_multiple)
6461     {
6462       if (is_watchpoint (b))
6463         {
6464           struct watchpoint *w = (struct watchpoint *) b;
6465
6466           uiout->field_string ("original-location", w->exp_string);
6467         }
6468       else if (b->location != NULL
6469                && event_location_to_string (b->location.get ()) != NULL)
6470         uiout->field_string ("original-location",
6471                              event_location_to_string (b->location.get ()));
6472     }
6473 }
6474
6475 static void
6476 print_one_breakpoint (struct breakpoint *b,
6477                       struct bp_location **last_loc, 
6478                       int allflag)
6479 {
6480   struct ui_out *uiout = current_uiout;
6481
6482   {
6483     ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
6484
6485     print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6486   }
6487
6488   /* If this breakpoint has custom print function,
6489      it's already printed.  Otherwise, print individual
6490      locations, if any.  */
6491   if (b->ops == NULL || b->ops->print_one == NULL)
6492     {
6493       /* If breakpoint has a single location that is disabled, we
6494          print it as if it had several locations, since otherwise it's
6495          hard to represent "breakpoint enabled, location disabled"
6496          situation.
6497
6498          Note that while hardware watchpoints have several locations
6499          internally, that's not a property exposed to user.  */
6500       if (b->loc 
6501           && !is_hardware_watchpoint (b)
6502           && (b->loc->next || !b->loc->enabled))
6503         {
6504           struct bp_location *loc;
6505           int n = 1;
6506
6507           for (loc = b->loc; loc; loc = loc->next, ++n)
6508             {
6509               ui_out_emit_tuple tuple_emitter (uiout, NULL);
6510               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6511             }
6512         }
6513     }
6514 }
6515
6516 static int
6517 breakpoint_address_bits (struct breakpoint *b)
6518 {
6519   int print_address_bits = 0;
6520   struct bp_location *loc;
6521
6522   /* Software watchpoints that aren't watching memory don't have an
6523      address to print.  */
6524   if (is_no_memory_software_watchpoint (b))
6525     return 0;
6526
6527   for (loc = b->loc; loc; loc = loc->next)
6528     {
6529       int addr_bit;
6530
6531       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6532       if (addr_bit > print_address_bits)
6533         print_address_bits = addr_bit;
6534     }
6535
6536   return print_address_bits;
6537 }
6538
6539 /* See breakpoint.h.  */
6540
6541 void
6542 print_breakpoint (breakpoint *b)
6543 {
6544   struct bp_location *dummy_loc = NULL;
6545   print_one_breakpoint (b, &dummy_loc, 0);
6546 }
6547
6548 /* Return true if this breakpoint was set by the user, false if it is
6549    internal or momentary.  */
6550
6551 int
6552 user_breakpoint_p (struct breakpoint *b)
6553 {
6554   return b->number > 0;
6555 }
6556
6557 /* See breakpoint.h.  */
6558
6559 int
6560 pending_breakpoint_p (struct breakpoint *b)
6561 {
6562   return b->loc == NULL;
6563 }
6564
6565 /* Print information on user settable breakpoint (watchpoint, etc)
6566    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6567    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6568    FILTER is non-NULL, call it on each breakpoint and only include the
6569    ones for which it returns non-zero.  Return the total number of
6570    breakpoints listed.  */
6571
6572 static int
6573 breakpoint_1 (const char *args, int allflag, 
6574               int (*filter) (const struct breakpoint *))
6575 {
6576   struct breakpoint *b;
6577   struct bp_location *last_loc = NULL;
6578   int nr_printable_breakpoints;
6579   struct value_print_options opts;
6580   int print_address_bits = 0;
6581   int print_type_col_width = 14;
6582   struct ui_out *uiout = current_uiout;
6583
6584   get_user_print_options (&opts);
6585
6586   /* Compute the number of rows in the table, as well as the size
6587      required for address fields.  */
6588   nr_printable_breakpoints = 0;
6589   ALL_BREAKPOINTS (b)
6590     {
6591       /* If we have a filter, only list the breakpoints it accepts.  */
6592       if (filter && !filter (b))
6593         continue;
6594
6595       /* If we have an "args" string, it is a list of breakpoints to 
6596          accept.  Skip the others.  */
6597       if (args != NULL && *args != '\0')
6598         {
6599           if (allflag && parse_and_eval_long (args) != b->number)
6600             continue;
6601           if (!allflag && !number_is_in_list (args, b->number))
6602             continue;
6603         }
6604
6605       if (allflag || user_breakpoint_p (b))
6606         {
6607           int addr_bit, type_len;
6608
6609           addr_bit = breakpoint_address_bits (b);
6610           if (addr_bit > print_address_bits)
6611             print_address_bits = addr_bit;
6612
6613           type_len = strlen (bptype_string (b->type));
6614           if (type_len > print_type_col_width)
6615             print_type_col_width = type_len;
6616
6617           nr_printable_breakpoints++;
6618         }
6619     }
6620
6621   {
6622     ui_out_emit_table table_emitter (uiout,
6623                                      opts.addressprint ? 6 : 5,
6624                                      nr_printable_breakpoints,
6625                                      "BreakpointTable");
6626
6627     if (nr_printable_breakpoints > 0)
6628       annotate_breakpoints_headers ();
6629     if (nr_printable_breakpoints > 0)
6630       annotate_field (0);
6631     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6632     if (nr_printable_breakpoints > 0)
6633       annotate_field (1);
6634     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6635     if (nr_printable_breakpoints > 0)
6636       annotate_field (2);
6637     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6638     if (nr_printable_breakpoints > 0)
6639       annotate_field (3);
6640     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6641     if (opts.addressprint)
6642       {
6643         if (nr_printable_breakpoints > 0)
6644           annotate_field (4);
6645         if (print_address_bits <= 32)
6646           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6647         else
6648           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6649       }
6650     if (nr_printable_breakpoints > 0)
6651       annotate_field (5);
6652     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6653     uiout->table_body ();
6654     if (nr_printable_breakpoints > 0)
6655       annotate_breakpoints_table ();
6656
6657     ALL_BREAKPOINTS (b)
6658       {
6659         QUIT;
6660         /* If we have a filter, only list the breakpoints it accepts.  */
6661         if (filter && !filter (b))
6662           continue;
6663
6664         /* If we have an "args" string, it is a list of breakpoints to 
6665            accept.  Skip the others.  */
6666
6667         if (args != NULL && *args != '\0')
6668           {
6669             if (allflag)        /* maintenance info breakpoint */
6670               {
6671                 if (parse_and_eval_long (args) != b->number)
6672                   continue;
6673               }
6674             else                /* all others */
6675               {
6676                 if (!number_is_in_list (args, b->number))
6677                   continue;
6678               }
6679           }
6680         /* We only print out user settable breakpoints unless the
6681            allflag is set.  */
6682         if (allflag || user_breakpoint_p (b))
6683           print_one_breakpoint (b, &last_loc, allflag);
6684       }
6685   }
6686
6687   if (nr_printable_breakpoints == 0)
6688     {
6689       /* If there's a filter, let the caller decide how to report
6690          empty list.  */
6691       if (!filter)
6692         {
6693           if (args == NULL || *args == '\0')
6694             uiout->message ("No breakpoints or watchpoints.\n");
6695           else
6696             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6697                             args);
6698         }
6699     }
6700   else
6701     {
6702       if (last_loc && !server_command)
6703         set_next_address (last_loc->gdbarch, last_loc->address);
6704     }
6705
6706   /* FIXME?  Should this be moved up so that it is only called when
6707      there have been breakpoints? */
6708   annotate_breakpoints_table_end ();
6709
6710   return nr_printable_breakpoints;
6711 }
6712
6713 /* Display the value of default-collect in a way that is generally
6714    compatible with the breakpoint list.  */
6715
6716 static void
6717 default_collect_info (void)
6718 {
6719   struct ui_out *uiout = current_uiout;
6720
6721   /* If it has no value (which is frequently the case), say nothing; a
6722      message like "No default-collect." gets in user's face when it's
6723      not wanted.  */
6724   if (!*default_collect)
6725     return;
6726
6727   /* The following phrase lines up nicely with per-tracepoint collect
6728      actions.  */
6729   uiout->text ("default collect ");
6730   uiout->field_string ("default-collect", default_collect);
6731   uiout->text (" \n");
6732 }
6733   
6734 static void
6735 info_breakpoints_command (char *args, int from_tty)
6736 {
6737   breakpoint_1 (args, 0, NULL);
6738
6739   default_collect_info ();
6740 }
6741
6742 static void
6743 info_watchpoints_command (char *args, int from_tty)
6744 {
6745   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6746   struct ui_out *uiout = current_uiout;
6747
6748   if (num_printed == 0)
6749     {
6750       if (args == NULL || *args == '\0')
6751         uiout->message ("No watchpoints.\n");
6752       else
6753         uiout->message ("No watchpoint matching '%s'.\n", args);
6754     }
6755 }
6756
6757 static void
6758 maintenance_info_breakpoints (const char *args, int from_tty)
6759 {
6760   breakpoint_1 (args, 1, NULL);
6761
6762   default_collect_info ();
6763 }
6764
6765 static int
6766 breakpoint_has_pc (struct breakpoint *b,
6767                    struct program_space *pspace,
6768                    CORE_ADDR pc, struct obj_section *section)
6769 {
6770   struct bp_location *bl = b->loc;
6771
6772   for (; bl; bl = bl->next)
6773     {
6774       if (bl->pspace == pspace
6775           && bl->address == pc
6776           && (!overlay_debugging || bl->section == section))
6777         return 1;         
6778     }
6779   return 0;
6780 }
6781
6782 /* Print a message describing any user-breakpoints set at PC.  This
6783    concerns with logical breakpoints, so we match program spaces, not
6784    address spaces.  */
6785
6786 static void
6787 describe_other_breakpoints (struct gdbarch *gdbarch,
6788                             struct program_space *pspace, CORE_ADDR pc,
6789                             struct obj_section *section, int thread)
6790 {
6791   int others = 0;
6792   struct breakpoint *b;
6793
6794   ALL_BREAKPOINTS (b)
6795     others += (user_breakpoint_p (b)
6796                && breakpoint_has_pc (b, pspace, pc, section));
6797   if (others > 0)
6798     {
6799       if (others == 1)
6800         printf_filtered (_("Note: breakpoint "));
6801       else /* if (others == ???) */
6802         printf_filtered (_("Note: breakpoints "));
6803       ALL_BREAKPOINTS (b)
6804         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6805           {
6806             others--;
6807             printf_filtered ("%d", b->number);
6808             if (b->thread == -1 && thread != -1)
6809               printf_filtered (" (all threads)");
6810             else if (b->thread != -1)
6811               printf_filtered (" (thread %d)", b->thread);
6812             printf_filtered ("%s%s ",
6813                              ((b->enable_state == bp_disabled
6814                                || b->enable_state == bp_call_disabled)
6815                               ? " (disabled)"
6816                               : ""),
6817                              (others > 1) ? "," 
6818                              : ((others == 1) ? " and" : ""));
6819           }
6820       printf_filtered (_("also set at pc "));
6821       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6822       printf_filtered (".\n");
6823     }
6824 }
6825 \f
6826
6827 /* Return true iff it is meaningful to use the address member of
6828    BPT locations.  For some breakpoint types, the locations' address members
6829    are irrelevant and it makes no sense to attempt to compare them to other
6830    addresses (or use them for any other purpose either).
6831
6832    More specifically, each of the following breakpoint types will
6833    always have a zero valued location address and we don't want to mark
6834    breakpoints of any of these types to be a duplicate of an actual
6835    breakpoint location at address zero:
6836
6837       bp_watchpoint
6838       bp_catchpoint
6839
6840 */
6841
6842 static int
6843 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6844 {
6845   enum bptype type = bpt->type;
6846
6847   return (type != bp_watchpoint && type != bp_catchpoint);
6848 }
6849
6850 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6851    true if LOC1 and LOC2 represent the same watchpoint location.  */
6852
6853 static int
6854 watchpoint_locations_match (struct bp_location *loc1, 
6855                             struct bp_location *loc2)
6856 {
6857   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6858   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6859
6860   /* Both of them must exist.  */
6861   gdb_assert (w1 != NULL);
6862   gdb_assert (w2 != NULL);
6863
6864   /* If the target can evaluate the condition expression in hardware,
6865      then we we need to insert both watchpoints even if they are at
6866      the same place.  Otherwise the watchpoint will only trigger when
6867      the condition of whichever watchpoint was inserted evaluates to
6868      true, not giving a chance for GDB to check the condition of the
6869      other watchpoint.  */
6870   if ((w1->cond_exp
6871        && target_can_accel_watchpoint_condition (loc1->address, 
6872                                                  loc1->length,
6873                                                  loc1->watchpoint_type,
6874                                                  w1->cond_exp.get ()))
6875       || (w2->cond_exp
6876           && target_can_accel_watchpoint_condition (loc2->address, 
6877                                                     loc2->length,
6878                                                     loc2->watchpoint_type,
6879                                                     w2->cond_exp.get ())))
6880     return 0;
6881
6882   /* Note that this checks the owner's type, not the location's.  In
6883      case the target does not support read watchpoints, but does
6884      support access watchpoints, we'll have bp_read_watchpoint
6885      watchpoints with hw_access locations.  Those should be considered
6886      duplicates of hw_read locations.  The hw_read locations will
6887      become hw_access locations later.  */
6888   return (loc1->owner->type == loc2->owner->type
6889           && loc1->pspace->aspace == loc2->pspace->aspace
6890           && loc1->address == loc2->address
6891           && loc1->length == loc2->length);
6892 }
6893
6894 /* See breakpoint.h.  */
6895
6896 int
6897 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6898                           struct address_space *aspace2, CORE_ADDR addr2)
6899 {
6900   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6901            || aspace1 == aspace2)
6902           && addr1 == addr2);
6903 }
6904
6905 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6906    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6907    matches ASPACE2.  On targets that have global breakpoints, the address
6908    space doesn't really matter.  */
6909
6910 static int
6911 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6912                                 int len1, struct address_space *aspace2,
6913                                 CORE_ADDR addr2)
6914 {
6915   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6916            || aspace1 == aspace2)
6917           && addr2 >= addr1 && addr2 < addr1 + len1);
6918 }
6919
6920 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6921    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6922    matches the breakpoint's address space.  On targets that have global
6923    breakpoints, the address space doesn't really matter.  */
6924
6925 static int
6926 breakpoint_location_address_match (struct bp_location *bl,
6927                                    struct address_space *aspace,
6928                                    CORE_ADDR addr)
6929 {
6930   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6931                                     aspace, addr)
6932           || (bl->length
6933               && breakpoint_address_match_range (bl->pspace->aspace,
6934                                                  bl->address, bl->length,
6935                                                  aspace, addr)));
6936 }
6937
6938 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6939    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6940    match happens only if ASPACE matches the breakpoint's address
6941    space.  On targets that have global breakpoints, the address space
6942    doesn't really matter.  */
6943
6944 static int
6945 breakpoint_location_address_range_overlap (struct bp_location *bl,
6946                                            struct address_space *aspace,
6947                                            CORE_ADDR addr, int len)
6948 {
6949   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6950       || bl->pspace->aspace == aspace)
6951     {
6952       int bl_len = bl->length != 0 ? bl->length : 1;
6953
6954       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6955         return 1;
6956     }
6957   return 0;
6958 }
6959
6960 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6961    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6962    true, otherwise returns false.  */
6963
6964 static int
6965 tracepoint_locations_match (struct bp_location *loc1,
6966                             struct bp_location *loc2)
6967 {
6968   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6969     /* Since tracepoint locations are never duplicated with others', tracepoint
6970        locations at the same address of different tracepoints are regarded as
6971        different locations.  */
6972     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6973   else
6974     return 0;
6975 }
6976
6977 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6978    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6979    represent the same location.  */
6980
6981 static int
6982 breakpoint_locations_match (struct bp_location *loc1, 
6983                             struct bp_location *loc2)
6984 {
6985   int hw_point1, hw_point2;
6986
6987   /* Both of them must not be in moribund_locations.  */
6988   gdb_assert (loc1->owner != NULL);
6989   gdb_assert (loc2->owner != NULL);
6990
6991   hw_point1 = is_hardware_watchpoint (loc1->owner);
6992   hw_point2 = is_hardware_watchpoint (loc2->owner);
6993
6994   if (hw_point1 != hw_point2)
6995     return 0;
6996   else if (hw_point1)
6997     return watchpoint_locations_match (loc1, loc2);
6998   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6999     return tracepoint_locations_match (loc1, loc2);
7000   else
7001     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7002     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7003                                      loc2->pspace->aspace, loc2->address)
7004             && loc1->length == loc2->length);
7005 }
7006
7007 static void
7008 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7009                                int bnum, int have_bnum)
7010 {
7011   /* The longest string possibly returned by hex_string_custom
7012      is 50 chars.  These must be at least that big for safety.  */
7013   char astr1[64];
7014   char astr2[64];
7015
7016   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7017   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7018   if (have_bnum)
7019     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7020              bnum, astr1, astr2);
7021   else
7022     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7023 }
7024
7025 /* Adjust a breakpoint's address to account for architectural
7026    constraints on breakpoint placement.  Return the adjusted address.
7027    Note: Very few targets require this kind of adjustment.  For most
7028    targets, this function is simply the identity function.  */
7029
7030 static CORE_ADDR
7031 adjust_breakpoint_address (struct gdbarch *gdbarch,
7032                            CORE_ADDR bpaddr, enum bptype bptype)
7033 {
7034   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7035     {
7036       /* Very few targets need any kind of breakpoint adjustment.  */
7037       return bpaddr;
7038     }
7039   else if (bptype == bp_watchpoint
7040            || bptype == bp_hardware_watchpoint
7041            || bptype == bp_read_watchpoint
7042            || bptype == bp_access_watchpoint
7043            || bptype == bp_catchpoint)
7044     {
7045       /* Watchpoints and the various bp_catch_* eventpoints should not
7046          have their addresses modified.  */
7047       return bpaddr;
7048     }
7049   else if (bptype == bp_single_step)
7050     {
7051       /* Single-step breakpoints should not have their addresses
7052          modified.  If there's any architectural constrain that
7053          applies to this address, then it should have already been
7054          taken into account when the breakpoint was created in the
7055          first place.  If we didn't do this, stepping through e.g.,
7056          Thumb-2 IT blocks would break.  */
7057       return bpaddr;
7058     }
7059   else
7060     {
7061       CORE_ADDR adjusted_bpaddr;
7062
7063       /* Some targets have architectural constraints on the placement
7064          of breakpoint instructions.  Obtain the adjusted address.  */
7065       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7066
7067       /* An adjusted breakpoint address can significantly alter
7068          a user's expectations.  Print a warning if an adjustment
7069          is required.  */
7070       if (adjusted_bpaddr != bpaddr)
7071         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7072
7073       return adjusted_bpaddr;
7074     }
7075 }
7076
7077 bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7078 {
7079   bp_location *loc = this;
7080
7081   gdb_assert (ops != NULL);
7082
7083   loc->ops = ops;
7084   loc->owner = owner;
7085   loc->cond_bytecode = NULL;
7086   loc->shlib_disabled = 0;
7087   loc->enabled = 1;
7088
7089   switch (owner->type)
7090     {
7091     case bp_breakpoint:
7092     case bp_single_step:
7093     case bp_until:
7094     case bp_finish:
7095     case bp_longjmp:
7096     case bp_longjmp_resume:
7097     case bp_longjmp_call_dummy:
7098     case bp_exception:
7099     case bp_exception_resume:
7100     case bp_step_resume:
7101     case bp_hp_step_resume:
7102     case bp_watchpoint_scope:
7103     case bp_call_dummy:
7104     case bp_std_terminate:
7105     case bp_shlib_event:
7106     case bp_thread_event:
7107     case bp_overlay_event:
7108     case bp_jit_event:
7109     case bp_longjmp_master:
7110     case bp_std_terminate_master:
7111     case bp_exception_master:
7112     case bp_gnu_ifunc_resolver:
7113     case bp_gnu_ifunc_resolver_return:
7114     case bp_dprintf:
7115       loc->loc_type = bp_loc_software_breakpoint;
7116       mark_breakpoint_location_modified (loc);
7117       break;
7118     case bp_hardware_breakpoint:
7119       loc->loc_type = bp_loc_hardware_breakpoint;
7120       mark_breakpoint_location_modified (loc);
7121       break;
7122     case bp_hardware_watchpoint:
7123     case bp_read_watchpoint:
7124     case bp_access_watchpoint:
7125       loc->loc_type = bp_loc_hardware_watchpoint;
7126       break;
7127     case bp_watchpoint:
7128     case bp_catchpoint:
7129     case bp_tracepoint:
7130     case bp_fast_tracepoint:
7131     case bp_static_tracepoint:
7132       loc->loc_type = bp_loc_other;
7133       break;
7134     default:
7135       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7136     }
7137
7138   loc->refc = 1;
7139 }
7140
7141 /* Allocate a struct bp_location.  */
7142
7143 static struct bp_location *
7144 allocate_bp_location (struct breakpoint *bpt)
7145 {
7146   return bpt->ops->allocate_location (bpt);
7147 }
7148
7149 static void
7150 free_bp_location (struct bp_location *loc)
7151 {
7152   loc->ops->dtor (loc);
7153   delete loc;
7154 }
7155
7156 /* Increment reference count.  */
7157
7158 static void
7159 incref_bp_location (struct bp_location *bl)
7160 {
7161   ++bl->refc;
7162 }
7163
7164 /* Decrement reference count.  If the reference count reaches 0,
7165    destroy the bp_location.  Sets *BLP to NULL.  */
7166
7167 static void
7168 decref_bp_location (struct bp_location **blp)
7169 {
7170   gdb_assert ((*blp)->refc > 0);
7171
7172   if (--(*blp)->refc == 0)
7173     free_bp_location (*blp);
7174   *blp = NULL;
7175 }
7176
7177 /* Add breakpoint B at the end of the global breakpoint chain.  */
7178
7179 static breakpoint *
7180 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7181 {
7182   struct breakpoint *b1;
7183   struct breakpoint *result = b.get ();
7184
7185   /* Add this breakpoint to the end of the chain so that a list of
7186      breakpoints will come out in order of increasing numbers.  */
7187
7188   b1 = breakpoint_chain;
7189   if (b1 == 0)
7190     breakpoint_chain = b.release ();
7191   else
7192     {
7193       while (b1->next)
7194         b1 = b1->next;
7195       b1->next = b.release ();
7196     }
7197
7198   return result;
7199 }
7200
7201 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7202
7203 static void
7204 init_raw_breakpoint_without_location (struct breakpoint *b,
7205                                       struct gdbarch *gdbarch,
7206                                       enum bptype bptype,
7207                                       const struct breakpoint_ops *ops)
7208 {
7209   gdb_assert (ops != NULL);
7210
7211   b->ops = ops;
7212   b->type = bptype;
7213   b->gdbarch = gdbarch;
7214   b->language = current_language->la_language;
7215   b->input_radix = input_radix;
7216   b->related_breakpoint = b;
7217 }
7218
7219 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7220    that has type BPTYPE and has no locations as yet.  */
7221
7222 static struct breakpoint *
7223 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7224                                      enum bptype bptype,
7225                                      const struct breakpoint_ops *ops)
7226 {
7227   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7228
7229   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7230   return add_to_breakpoint_chain (std::move (b));
7231 }
7232
7233 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7234    resolutions should be made as the user specified the location explicitly
7235    enough.  */
7236
7237 static void
7238 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7239 {
7240   gdb_assert (loc->owner != NULL);
7241
7242   if (loc->owner->type == bp_breakpoint
7243       || loc->owner->type == bp_hardware_breakpoint
7244       || is_tracepoint (loc->owner))
7245     {
7246       int is_gnu_ifunc;
7247       const char *function_name;
7248       CORE_ADDR func_addr;
7249
7250       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7251                                           &func_addr, NULL, &is_gnu_ifunc);
7252
7253       if (is_gnu_ifunc && !explicit_loc)
7254         {
7255           struct breakpoint *b = loc->owner;
7256
7257           gdb_assert (loc->pspace == current_program_space);
7258           if (gnu_ifunc_resolve_name (function_name,
7259                                       &loc->requested_address))
7260             {
7261               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7262               loc->address = adjust_breakpoint_address (loc->gdbarch,
7263                                                         loc->requested_address,
7264                                                         b->type);
7265             }
7266           else if (b->type == bp_breakpoint && b->loc == loc
7267                    && loc->next == NULL && b->related_breakpoint == b)
7268             {
7269               /* Create only the whole new breakpoint of this type but do not
7270                  mess more complicated breakpoints with multiple locations.  */
7271               b->type = bp_gnu_ifunc_resolver;
7272               /* Remember the resolver's address for use by the return
7273                  breakpoint.  */
7274               loc->related_address = func_addr;
7275             }
7276         }
7277
7278       if (function_name)
7279         loc->function_name = xstrdup (function_name);
7280     }
7281 }
7282
7283 /* Attempt to determine architecture of location identified by SAL.  */
7284 struct gdbarch *
7285 get_sal_arch (struct symtab_and_line sal)
7286 {
7287   if (sal.section)
7288     return get_objfile_arch (sal.section->objfile);
7289   if (sal.symtab)
7290     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7291
7292   return NULL;
7293 }
7294
7295 /* Low level routine for partially initializing a breakpoint of type
7296    BPTYPE.  The newly created breakpoint's address, section, source
7297    file name, and line number are provided by SAL.
7298
7299    It is expected that the caller will complete the initialization of
7300    the newly created breakpoint struct as well as output any status
7301    information regarding the creation of a new breakpoint.  */
7302
7303 static void
7304 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7305                      struct symtab_and_line sal, enum bptype bptype,
7306                      const struct breakpoint_ops *ops)
7307 {
7308   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7309
7310   add_location_to_breakpoint (b, &sal);
7311
7312   if (bptype != bp_catchpoint)
7313     gdb_assert (sal.pspace != NULL);
7314
7315   /* Store the program space that was used to set the breakpoint,
7316      except for ordinary breakpoints, which are independent of the
7317      program space.  */
7318   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7319     b->pspace = sal.pspace;
7320 }
7321
7322 /* set_raw_breakpoint is a low level routine for allocating and
7323    partially initializing a breakpoint of type BPTYPE.  The newly
7324    created breakpoint's address, section, source file name, and line
7325    number are provided by SAL.  The newly created and partially
7326    initialized breakpoint is added to the breakpoint chain and
7327    is also returned as the value of this function.
7328
7329    It is expected that the caller will complete the initialization of
7330    the newly created breakpoint struct as well as output any status
7331    information regarding the creation of a new breakpoint.  In
7332    particular, set_raw_breakpoint does NOT set the breakpoint
7333    number!  Care should be taken to not allow an error to occur
7334    prior to completing the initialization of the breakpoint.  If this
7335    should happen, a bogus breakpoint will be left on the chain.  */
7336
7337 struct breakpoint *
7338 set_raw_breakpoint (struct gdbarch *gdbarch,
7339                     struct symtab_and_line sal, enum bptype bptype,
7340                     const struct breakpoint_ops *ops)
7341 {
7342   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7343
7344   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7345   return add_to_breakpoint_chain (std::move (b));
7346 }
7347
7348 /* Call this routine when stepping and nexting to enable a breakpoint
7349    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7350    initiated the operation.  */
7351
7352 void
7353 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7354 {
7355   struct breakpoint *b, *b_tmp;
7356   int thread = tp->global_num;
7357
7358   /* To avoid having to rescan all objfile symbols at every step,
7359      we maintain a list of continually-inserted but always disabled
7360      longjmp "master" breakpoints.  Here, we simply create momentary
7361      clones of those and enable them for the requested thread.  */
7362   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7363     if (b->pspace == current_program_space
7364         && (b->type == bp_longjmp_master
7365             || b->type == bp_exception_master))
7366       {
7367         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7368         struct breakpoint *clone;
7369
7370         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7371            after their removal.  */
7372         clone = momentary_breakpoint_from_master (b, type,
7373                                                   &momentary_breakpoint_ops, 1);
7374         clone->thread = thread;
7375       }
7376
7377   tp->initiating_frame = frame;
7378 }
7379
7380 /* Delete all longjmp breakpoints from THREAD.  */
7381 void
7382 delete_longjmp_breakpoint (int thread)
7383 {
7384   struct breakpoint *b, *b_tmp;
7385
7386   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7387     if (b->type == bp_longjmp || b->type == bp_exception)
7388       {
7389         if (b->thread == thread)
7390           delete_breakpoint (b);
7391       }
7392 }
7393
7394 void
7395 delete_longjmp_breakpoint_at_next_stop (int thread)
7396 {
7397   struct breakpoint *b, *b_tmp;
7398
7399   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7400     if (b->type == bp_longjmp || b->type == bp_exception)
7401       {
7402         if (b->thread == thread)
7403           b->disposition = disp_del_at_next_stop;
7404       }
7405 }
7406
7407 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7408    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7409    pointer to any of them.  Return NULL if this system cannot place longjmp
7410    breakpoints.  */
7411
7412 struct breakpoint *
7413 set_longjmp_breakpoint_for_call_dummy (void)
7414 {
7415   struct breakpoint *b, *retval = NULL;
7416
7417   ALL_BREAKPOINTS (b)
7418     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7419       {
7420         struct breakpoint *new_b;
7421
7422         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7423                                                   &momentary_breakpoint_ops,
7424                                                   1);
7425         new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7426
7427         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7428
7429         gdb_assert (new_b->related_breakpoint == new_b);
7430         if (retval == NULL)
7431           retval = new_b;
7432         new_b->related_breakpoint = retval;
7433         while (retval->related_breakpoint != new_b->related_breakpoint)
7434           retval = retval->related_breakpoint;
7435         retval->related_breakpoint = new_b;
7436       }
7437
7438   return retval;
7439 }
7440
7441 /* Verify all existing dummy frames and their associated breakpoints for
7442    TP.  Remove those which can no longer be found in the current frame
7443    stack.
7444
7445    You should call this function only at places where it is safe to currently
7446    unwind the whole stack.  Failed stack unwind would discard live dummy
7447    frames.  */
7448
7449 void
7450 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7451 {
7452   struct breakpoint *b, *b_tmp;
7453
7454   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7455     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7456       {
7457         struct breakpoint *dummy_b = b->related_breakpoint;
7458
7459         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7460           dummy_b = dummy_b->related_breakpoint;
7461         if (dummy_b->type != bp_call_dummy
7462             || frame_find_by_id (dummy_b->frame_id) != NULL)
7463           continue;
7464         
7465         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7466
7467         while (b->related_breakpoint != b)
7468           {
7469             if (b_tmp == b->related_breakpoint)
7470               b_tmp = b->related_breakpoint->next;
7471             delete_breakpoint (b->related_breakpoint);
7472           }
7473         delete_breakpoint (b);
7474       }
7475 }
7476
7477 void
7478 enable_overlay_breakpoints (void)
7479 {
7480   struct breakpoint *b;
7481
7482   ALL_BREAKPOINTS (b)
7483     if (b->type == bp_overlay_event)
7484     {
7485       b->enable_state = bp_enabled;
7486       update_global_location_list (UGLL_MAY_INSERT);
7487       overlay_events_enabled = 1;
7488     }
7489 }
7490
7491 void
7492 disable_overlay_breakpoints (void)
7493 {
7494   struct breakpoint *b;
7495
7496   ALL_BREAKPOINTS (b)
7497     if (b->type == bp_overlay_event)
7498     {
7499       b->enable_state = bp_disabled;
7500       update_global_location_list (UGLL_DONT_INSERT);
7501       overlay_events_enabled = 0;
7502     }
7503 }
7504
7505 /* Set an active std::terminate breakpoint for each std::terminate
7506    master breakpoint.  */
7507 void
7508 set_std_terminate_breakpoint (void)
7509 {
7510   struct breakpoint *b, *b_tmp;
7511
7512   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7513     if (b->pspace == current_program_space
7514         && b->type == bp_std_terminate_master)
7515       {
7516         momentary_breakpoint_from_master (b, bp_std_terminate,
7517                                           &momentary_breakpoint_ops, 1);
7518       }
7519 }
7520
7521 /* Delete all the std::terminate breakpoints.  */
7522 void
7523 delete_std_terminate_breakpoint (void)
7524 {
7525   struct breakpoint *b, *b_tmp;
7526
7527   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7528     if (b->type == bp_std_terminate)
7529       delete_breakpoint (b);
7530 }
7531
7532 struct breakpoint *
7533 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7534 {
7535   struct breakpoint *b;
7536
7537   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7538                                   &internal_breakpoint_ops);
7539
7540   b->enable_state = bp_enabled;
7541   /* location has to be used or breakpoint_re_set will delete me.  */
7542   b->location = new_address_location (b->loc->address, NULL, 0);
7543
7544   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7545
7546   return b;
7547 }
7548
7549 struct lang_and_radix
7550   {
7551     enum language lang;
7552     int radix;
7553   };
7554
7555 /* Create a breakpoint for JIT code registration and unregistration.  */
7556
7557 struct breakpoint *
7558 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7559 {
7560   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7561                                      &internal_breakpoint_ops);
7562 }
7563
7564 /* Remove JIT code registration and unregistration breakpoint(s).  */
7565
7566 void
7567 remove_jit_event_breakpoints (void)
7568 {
7569   struct breakpoint *b, *b_tmp;
7570
7571   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7572     if (b->type == bp_jit_event
7573         && b->loc->pspace == current_program_space)
7574       delete_breakpoint (b);
7575 }
7576
7577 void
7578 remove_solib_event_breakpoints (void)
7579 {
7580   struct breakpoint *b, *b_tmp;
7581
7582   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7583     if (b->type == bp_shlib_event
7584         && b->loc->pspace == current_program_space)
7585       delete_breakpoint (b);
7586 }
7587
7588 /* See breakpoint.h.  */
7589
7590 void
7591 remove_solib_event_breakpoints_at_next_stop (void)
7592 {
7593   struct breakpoint *b, *b_tmp;
7594
7595   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7596     if (b->type == bp_shlib_event
7597         && b->loc->pspace == current_program_space)
7598       b->disposition = disp_del_at_next_stop;
7599 }
7600
7601 /* Helper for create_solib_event_breakpoint /
7602    create_and_insert_solib_event_breakpoint.  Allows specifying which
7603    INSERT_MODE to pass through to update_global_location_list.  */
7604
7605 static struct breakpoint *
7606 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7607                                  enum ugll_insert_mode insert_mode)
7608 {
7609   struct breakpoint *b;
7610
7611   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7612                                   &internal_breakpoint_ops);
7613   update_global_location_list_nothrow (insert_mode);
7614   return b;
7615 }
7616
7617 struct breakpoint *
7618 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7619 {
7620   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7621 }
7622
7623 /* See breakpoint.h.  */
7624
7625 struct breakpoint *
7626 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7627 {
7628   struct breakpoint *b;
7629
7630   /* Explicitly tell update_global_location_list to insert
7631      locations.  */
7632   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7633   if (!b->loc->inserted)
7634     {
7635       delete_breakpoint (b);
7636       return NULL;
7637     }
7638   return b;
7639 }
7640
7641 /* Disable any breakpoints that are on code in shared libraries.  Only
7642    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7643
7644 void
7645 disable_breakpoints_in_shlibs (void)
7646 {
7647   struct bp_location *loc, **locp_tmp;
7648
7649   ALL_BP_LOCATIONS (loc, locp_tmp)
7650   {
7651     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7652     struct breakpoint *b = loc->owner;
7653
7654     /* We apply the check to all breakpoints, including disabled for
7655        those with loc->duplicate set.  This is so that when breakpoint
7656        becomes enabled, or the duplicate is removed, gdb will try to
7657        insert all breakpoints.  If we don't set shlib_disabled here,
7658        we'll try to insert those breakpoints and fail.  */
7659     if (((b->type == bp_breakpoint)
7660          || (b->type == bp_jit_event)
7661          || (b->type == bp_hardware_breakpoint)
7662          || (is_tracepoint (b)))
7663         && loc->pspace == current_program_space
7664         && !loc->shlib_disabled
7665         && solib_name_from_address (loc->pspace, loc->address)
7666         )
7667       {
7668         loc->shlib_disabled = 1;
7669       }
7670   }
7671 }
7672
7673 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7674    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7675    disabled ones can just stay disabled.  */
7676
7677 static void
7678 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7679 {
7680   struct bp_location *loc, **locp_tmp;
7681   int disabled_shlib_breaks = 0;
7682
7683   ALL_BP_LOCATIONS (loc, locp_tmp)
7684   {
7685     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7686     struct breakpoint *b = loc->owner;
7687
7688     if (solib->pspace == loc->pspace
7689         && !loc->shlib_disabled
7690         && (((b->type == bp_breakpoint
7691               || b->type == bp_jit_event
7692               || b->type == bp_hardware_breakpoint)
7693              && (loc->loc_type == bp_loc_hardware_breakpoint
7694                  || loc->loc_type == bp_loc_software_breakpoint))
7695             || is_tracepoint (b))
7696         && solib_contains_address_p (solib, loc->address))
7697       {
7698         loc->shlib_disabled = 1;
7699         /* At this point, we cannot rely on remove_breakpoint
7700            succeeding so we must mark the breakpoint as not inserted
7701            to prevent future errors occurring in remove_breakpoints.  */
7702         loc->inserted = 0;
7703
7704         /* This may cause duplicate notifications for the same breakpoint.  */
7705         observer_notify_breakpoint_modified (b);
7706
7707         if (!disabled_shlib_breaks)
7708           {
7709             target_terminal::ours_for_output ();
7710             warning (_("Temporarily disabling breakpoints "
7711                        "for unloaded shared library \"%s\""),
7712                      solib->so_name);
7713           }
7714         disabled_shlib_breaks = 1;
7715       }
7716   }
7717 }
7718
7719 /* Disable any breakpoints and tracepoints in OBJFILE upon
7720    notification of free_objfile.  Only apply to enabled breakpoints,
7721    disabled ones can just stay disabled.  */
7722
7723 static void
7724 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7725 {
7726   struct breakpoint *b;
7727
7728   if (objfile == NULL)
7729     return;
7730
7731   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7732      managed by the user with add-symbol-file/remove-symbol-file.
7733      Similarly to how breakpoints in shared libraries are handled in
7734      response to "nosharedlibrary", mark breakpoints in such modules
7735      shlib_disabled so they end up uninserted on the next global
7736      location list update.  Shared libraries not loaded by the user
7737      aren't handled here -- they're already handled in
7738      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7739      solib_unloaded observer.  We skip objfiles that are not
7740      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7741      main objfile).  */
7742   if ((objfile->flags & OBJF_SHARED) == 0
7743       || (objfile->flags & OBJF_USERLOADED) == 0)
7744     return;
7745
7746   ALL_BREAKPOINTS (b)
7747     {
7748       struct bp_location *loc;
7749       int bp_modified = 0;
7750
7751       if (!is_breakpoint (b) && !is_tracepoint (b))
7752         continue;
7753
7754       for (loc = b->loc; loc != NULL; loc = loc->next)
7755         {
7756           CORE_ADDR loc_addr = loc->address;
7757
7758           if (loc->loc_type != bp_loc_hardware_breakpoint
7759               && loc->loc_type != bp_loc_software_breakpoint)
7760             continue;
7761
7762           if (loc->shlib_disabled != 0)
7763             continue;
7764
7765           if (objfile->pspace != loc->pspace)
7766             continue;
7767
7768           if (loc->loc_type != bp_loc_hardware_breakpoint
7769               && loc->loc_type != bp_loc_software_breakpoint)
7770             continue;
7771
7772           if (is_addr_in_objfile (loc_addr, objfile))
7773             {
7774               loc->shlib_disabled = 1;
7775               /* At this point, we don't know whether the object was
7776                  unmapped from the inferior or not, so leave the
7777                  inserted flag alone.  We'll handle failure to
7778                  uninsert quietly, in case the object was indeed
7779                  unmapped.  */
7780
7781               mark_breakpoint_location_modified (loc);
7782
7783               bp_modified = 1;
7784             }
7785         }
7786
7787       if (bp_modified)
7788         observer_notify_breakpoint_modified (b);
7789     }
7790 }
7791
7792 /* FORK & VFORK catchpoints.  */
7793
7794 /* An instance of this type is used to represent a fork or vfork
7795    catchpoint.  A breakpoint is really of this type iff its ops pointer points
7796    to CATCH_FORK_BREAKPOINT_OPS.  */
7797
7798 struct fork_catchpoint : public breakpoint
7799 {
7800   /* Process id of a child process whose forking triggered this
7801      catchpoint.  This field is only valid immediately after this
7802      catchpoint has triggered.  */
7803   ptid_t forked_inferior_pid;
7804 };
7805
7806 /* Implement the "insert" breakpoint_ops method for fork
7807    catchpoints.  */
7808
7809 static int
7810 insert_catch_fork (struct bp_location *bl)
7811 {
7812   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7813 }
7814
7815 /* Implement the "remove" breakpoint_ops method for fork
7816    catchpoints.  */
7817
7818 static int
7819 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7820 {
7821   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7822 }
7823
7824 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7825    catchpoints.  */
7826
7827 static int
7828 breakpoint_hit_catch_fork (const struct bp_location *bl,
7829                            struct address_space *aspace, CORE_ADDR bp_addr,
7830                            const struct target_waitstatus *ws)
7831 {
7832   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7833
7834   if (ws->kind != TARGET_WAITKIND_FORKED)
7835     return 0;
7836
7837   c->forked_inferior_pid = ws->value.related_pid;
7838   return 1;
7839 }
7840
7841 /* Implement the "print_it" breakpoint_ops method for fork
7842    catchpoints.  */
7843
7844 static enum print_stop_action
7845 print_it_catch_fork (bpstat bs)
7846 {
7847   struct ui_out *uiout = current_uiout;
7848   struct breakpoint *b = bs->breakpoint_at;
7849   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7850
7851   annotate_catchpoint (b->number);
7852   maybe_print_thread_hit_breakpoint (uiout);
7853   if (b->disposition == disp_del)
7854     uiout->text ("Temporary catchpoint ");
7855   else
7856     uiout->text ("Catchpoint ");
7857   if (uiout->is_mi_like_p ())
7858     {
7859       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7860       uiout->field_string ("disp", bpdisp_text (b->disposition));
7861     }
7862   uiout->field_int ("bkptno", b->number);
7863   uiout->text (" (forked process ");
7864   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7865   uiout->text ("), ");
7866   return PRINT_SRC_AND_LOC;
7867 }
7868
7869 /* Implement the "print_one" breakpoint_ops method for fork
7870    catchpoints.  */
7871
7872 static void
7873 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7874 {
7875   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7876   struct value_print_options opts;
7877   struct ui_out *uiout = current_uiout;
7878
7879   get_user_print_options (&opts);
7880
7881   /* Field 4, the address, is omitted (which makes the columns not
7882      line up too nicely with the headers, but the effect is relatively
7883      readable).  */
7884   if (opts.addressprint)
7885     uiout->field_skip ("addr");
7886   annotate_field (5);
7887   uiout->text ("fork");
7888   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7889     {
7890       uiout->text (", process ");
7891       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7892       uiout->spaces (1);
7893     }
7894
7895   if (uiout->is_mi_like_p ())
7896     uiout->field_string ("catch-type", "fork");
7897 }
7898
7899 /* Implement the "print_mention" breakpoint_ops method for fork
7900    catchpoints.  */
7901
7902 static void
7903 print_mention_catch_fork (struct breakpoint *b)
7904 {
7905   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7906 }
7907
7908 /* Implement the "print_recreate" breakpoint_ops method for fork
7909    catchpoints.  */
7910
7911 static void
7912 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7913 {
7914   fprintf_unfiltered (fp, "catch fork");
7915   print_recreate_thread (b, fp);
7916 }
7917
7918 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7919
7920 static struct breakpoint_ops catch_fork_breakpoint_ops;
7921
7922 /* Implement the "insert" breakpoint_ops method for vfork
7923    catchpoints.  */
7924
7925 static int
7926 insert_catch_vfork (struct bp_location *bl)
7927 {
7928   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7929 }
7930
7931 /* Implement the "remove" breakpoint_ops method for vfork
7932    catchpoints.  */
7933
7934 static int
7935 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7936 {
7937   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7938 }
7939
7940 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7941    catchpoints.  */
7942
7943 static int
7944 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7945                             struct address_space *aspace, CORE_ADDR bp_addr,
7946                             const struct target_waitstatus *ws)
7947 {
7948   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7949
7950   if (ws->kind != TARGET_WAITKIND_VFORKED)
7951     return 0;
7952
7953   c->forked_inferior_pid = ws->value.related_pid;
7954   return 1;
7955 }
7956
7957 /* Implement the "print_it" breakpoint_ops method for vfork
7958    catchpoints.  */
7959
7960 static enum print_stop_action
7961 print_it_catch_vfork (bpstat bs)
7962 {
7963   struct ui_out *uiout = current_uiout;
7964   struct breakpoint *b = bs->breakpoint_at;
7965   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7966
7967   annotate_catchpoint (b->number);
7968   maybe_print_thread_hit_breakpoint (uiout);
7969   if (b->disposition == disp_del)
7970     uiout->text ("Temporary catchpoint ");
7971   else
7972     uiout->text ("Catchpoint ");
7973   if (uiout->is_mi_like_p ())
7974     {
7975       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7976       uiout->field_string ("disp", bpdisp_text (b->disposition));
7977     }
7978   uiout->field_int ("bkptno", b->number);
7979   uiout->text (" (vforked process ");
7980   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7981   uiout->text ("), ");
7982   return PRINT_SRC_AND_LOC;
7983 }
7984
7985 /* Implement the "print_one" breakpoint_ops method for vfork
7986    catchpoints.  */
7987
7988 static void
7989 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7990 {
7991   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7992   struct value_print_options opts;
7993   struct ui_out *uiout = current_uiout;
7994
7995   get_user_print_options (&opts);
7996   /* Field 4, the address, is omitted (which makes the columns not
7997      line up too nicely with the headers, but the effect is relatively
7998      readable).  */
7999   if (opts.addressprint)
8000     uiout->field_skip ("addr");
8001   annotate_field (5);
8002   uiout->text ("vfork");
8003   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8004     {
8005       uiout->text (", process ");
8006       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8007       uiout->spaces (1);
8008     }
8009
8010   if (uiout->is_mi_like_p ())
8011     uiout->field_string ("catch-type", "vfork");
8012 }
8013
8014 /* Implement the "print_mention" breakpoint_ops method for vfork
8015    catchpoints.  */
8016
8017 static void
8018 print_mention_catch_vfork (struct breakpoint *b)
8019 {
8020   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8021 }
8022
8023 /* Implement the "print_recreate" breakpoint_ops method for vfork
8024    catchpoints.  */
8025
8026 static void
8027 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8028 {
8029   fprintf_unfiltered (fp, "catch vfork");
8030   print_recreate_thread (b, fp);
8031 }
8032
8033 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8034
8035 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8036
8037 /* An instance of this type is used to represent an solib catchpoint.
8038    A breakpoint is really of this type iff its ops pointer points to
8039    CATCH_SOLIB_BREAKPOINT_OPS.  */
8040
8041 struct solib_catchpoint : public breakpoint
8042 {
8043   ~solib_catchpoint () override;
8044
8045   /* True for "catch load", false for "catch unload".  */
8046   unsigned char is_load;
8047
8048   /* Regular expression to match, if any.  COMPILED is only valid when
8049      REGEX is non-NULL.  */
8050   char *regex;
8051   std::unique_ptr<compiled_regex> compiled;
8052 };
8053
8054 solib_catchpoint::~solib_catchpoint ()
8055 {
8056   xfree (this->regex);
8057 }
8058
8059 static int
8060 insert_catch_solib (struct bp_location *ignore)
8061 {
8062   return 0;
8063 }
8064
8065 static int
8066 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8067 {
8068   return 0;
8069 }
8070
8071 static int
8072 breakpoint_hit_catch_solib (const struct bp_location *bl,
8073                             struct address_space *aspace,
8074                             CORE_ADDR bp_addr,
8075                             const struct target_waitstatus *ws)
8076 {
8077   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8078   struct breakpoint *other;
8079
8080   if (ws->kind == TARGET_WAITKIND_LOADED)
8081     return 1;
8082
8083   ALL_BREAKPOINTS (other)
8084   {
8085     struct bp_location *other_bl;
8086
8087     if (other == bl->owner)
8088       continue;
8089
8090     if (other->type != bp_shlib_event)
8091       continue;
8092
8093     if (self->pspace != NULL && other->pspace != self->pspace)
8094       continue;
8095
8096     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8097       {
8098         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8099           return 1;
8100       }
8101   }
8102
8103   return 0;
8104 }
8105
8106 static void
8107 check_status_catch_solib (struct bpstats *bs)
8108 {
8109   struct solib_catchpoint *self
8110     = (struct solib_catchpoint *) bs->breakpoint_at;
8111   int ix;
8112
8113   if (self->is_load)
8114     {
8115       struct so_list *iter;
8116
8117       for (ix = 0;
8118            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8119                         ix, iter);
8120            ++ix)
8121         {
8122           if (!self->regex
8123               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
8124             return;
8125         }
8126     }
8127   else
8128     {
8129       char *iter;
8130
8131       for (ix = 0;
8132            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8133                         ix, iter);
8134            ++ix)
8135         {
8136           if (!self->regex
8137               || self->compiled->exec (iter, 0, NULL, 0) == 0)
8138             return;
8139         }
8140     }
8141
8142   bs->stop = 0;
8143   bs->print_it = print_it_noop;
8144 }
8145
8146 static enum print_stop_action
8147 print_it_catch_solib (bpstat bs)
8148 {
8149   struct breakpoint *b = bs->breakpoint_at;
8150   struct ui_out *uiout = current_uiout;
8151
8152   annotate_catchpoint (b->number);
8153   maybe_print_thread_hit_breakpoint (uiout);
8154   if (b->disposition == disp_del)
8155     uiout->text ("Temporary catchpoint ");
8156   else
8157     uiout->text ("Catchpoint ");
8158   uiout->field_int ("bkptno", b->number);
8159   uiout->text ("\n");
8160   if (uiout->is_mi_like_p ())
8161     uiout->field_string ("disp", bpdisp_text (b->disposition));
8162   print_solib_event (1);
8163   return PRINT_SRC_AND_LOC;
8164 }
8165
8166 static void
8167 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8168 {
8169   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8170   struct value_print_options opts;
8171   struct ui_out *uiout = current_uiout;
8172   char *msg;
8173
8174   get_user_print_options (&opts);
8175   /* Field 4, the address, is omitted (which makes the columns not
8176      line up too nicely with the headers, but the effect is relatively
8177      readable).  */
8178   if (opts.addressprint)
8179     {
8180       annotate_field (4);
8181       uiout->field_skip ("addr");
8182     }
8183
8184   annotate_field (5);
8185   if (self->is_load)
8186     {
8187       if (self->regex)
8188         msg = xstrprintf (_("load of library matching %s"), self->regex);
8189       else
8190         msg = xstrdup (_("load of library"));
8191     }
8192   else
8193     {
8194       if (self->regex)
8195         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8196       else
8197         msg = xstrdup (_("unload of library"));
8198     }
8199   uiout->field_string ("what", msg);
8200   xfree (msg);
8201
8202   if (uiout->is_mi_like_p ())
8203     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8204 }
8205
8206 static void
8207 print_mention_catch_solib (struct breakpoint *b)
8208 {
8209   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8210
8211   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8212                    self->is_load ? "load" : "unload");
8213 }
8214
8215 static void
8216 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8217 {
8218   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8219
8220   fprintf_unfiltered (fp, "%s %s",
8221                       b->disposition == disp_del ? "tcatch" : "catch",
8222                       self->is_load ? "load" : "unload");
8223   if (self->regex)
8224     fprintf_unfiltered (fp, " %s", self->regex);
8225   fprintf_unfiltered (fp, "\n");
8226 }
8227
8228 static struct breakpoint_ops catch_solib_breakpoint_ops;
8229
8230 /* Shared helper function (MI and CLI) for creating and installing
8231    a shared object event catchpoint.  If IS_LOAD is non-zero then
8232    the events to be caught are load events, otherwise they are
8233    unload events.  If IS_TEMP is non-zero the catchpoint is a
8234    temporary one.  If ENABLED is non-zero the catchpoint is
8235    created in an enabled state.  */
8236
8237 void
8238 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8239 {
8240   struct gdbarch *gdbarch = get_current_arch ();
8241
8242   if (!arg)
8243     arg = "";
8244   arg = skip_spaces (arg);
8245
8246   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8247
8248   if (*arg != '\0')
8249     {
8250       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8251                                              _("Invalid regexp")));
8252       c->regex = xstrdup (arg);
8253     }
8254
8255   c->is_load = is_load;
8256   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8257                    &catch_solib_breakpoint_ops);
8258
8259   c->enable_state = enabled ? bp_enabled : bp_disabled;
8260
8261   install_breakpoint (0, std::move (c), 1);
8262 }
8263
8264 /* A helper function that does all the work for "catch load" and
8265    "catch unload".  */
8266
8267 static void
8268 catch_load_or_unload (char *arg, int from_tty, int is_load,
8269                       struct cmd_list_element *command)
8270 {
8271   int tempflag;
8272   const int enabled = 1;
8273
8274   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8275
8276   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8277 }
8278
8279 static void
8280 catch_load_command_1 (char *arg, int from_tty,
8281                       struct cmd_list_element *command)
8282 {
8283   catch_load_or_unload (arg, from_tty, 1, command);
8284 }
8285
8286 static void
8287 catch_unload_command_1 (char *arg, int from_tty,
8288                         struct cmd_list_element *command)
8289 {
8290   catch_load_or_unload (arg, from_tty, 0, command);
8291 }
8292
8293 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8294    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8295    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8296    the breakpoint_ops structure associated to the catchpoint.  */
8297
8298 void
8299 init_catchpoint (struct breakpoint *b,
8300                  struct gdbarch *gdbarch, int tempflag,
8301                  const char *cond_string,
8302                  const struct breakpoint_ops *ops)
8303 {
8304   symtab_and_line sal;
8305   sal.pspace = current_program_space;
8306
8307   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8308
8309   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8310   b->disposition = tempflag ? disp_del : disp_donttouch;
8311 }
8312
8313 void
8314 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8315 {
8316   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8317   set_breakpoint_number (internal, b);
8318   if (is_tracepoint (b))
8319     set_tracepoint_count (breakpoint_count);
8320   if (!internal)
8321     mention (b);
8322   observer_notify_breakpoint_created (b);
8323
8324   if (update_gll)
8325     update_global_location_list (UGLL_MAY_INSERT);
8326 }
8327
8328 static void
8329 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8330                                     int tempflag, const char *cond_string,
8331                                     const struct breakpoint_ops *ops)
8332 {
8333   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8334
8335   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8336
8337   c->forked_inferior_pid = null_ptid;
8338
8339   install_breakpoint (0, std::move (c), 1);
8340 }
8341
8342 /* Exec catchpoints.  */
8343
8344 /* An instance of this type is used to represent an exec catchpoint.
8345    A breakpoint is really of this type iff its ops pointer points to
8346    CATCH_EXEC_BREAKPOINT_OPS.  */
8347
8348 struct exec_catchpoint : public breakpoint
8349 {
8350   ~exec_catchpoint () override;
8351
8352   /* Filename of a program whose exec triggered this catchpoint.
8353      This field is only valid immediately after this catchpoint has
8354      triggered.  */
8355   char *exec_pathname;
8356 };
8357
8358 /* Exec catchpoint destructor.  */
8359
8360 exec_catchpoint::~exec_catchpoint ()
8361 {
8362   xfree (this->exec_pathname);
8363 }
8364
8365 static int
8366 insert_catch_exec (struct bp_location *bl)
8367 {
8368   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8369 }
8370
8371 static int
8372 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8373 {
8374   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8375 }
8376
8377 static int
8378 breakpoint_hit_catch_exec (const struct bp_location *bl,
8379                            struct address_space *aspace, CORE_ADDR bp_addr,
8380                            const struct target_waitstatus *ws)
8381 {
8382   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8383
8384   if (ws->kind != TARGET_WAITKIND_EXECD)
8385     return 0;
8386
8387   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8388   return 1;
8389 }
8390
8391 static enum print_stop_action
8392 print_it_catch_exec (bpstat bs)
8393 {
8394   struct ui_out *uiout = current_uiout;
8395   struct breakpoint *b = bs->breakpoint_at;
8396   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8397
8398   annotate_catchpoint (b->number);
8399   maybe_print_thread_hit_breakpoint (uiout);
8400   if (b->disposition == disp_del)
8401     uiout->text ("Temporary catchpoint ");
8402   else
8403     uiout->text ("Catchpoint ");
8404   if (uiout->is_mi_like_p ())
8405     {
8406       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8407       uiout->field_string ("disp", bpdisp_text (b->disposition));
8408     }
8409   uiout->field_int ("bkptno", b->number);
8410   uiout->text (" (exec'd ");
8411   uiout->field_string ("new-exec", c->exec_pathname);
8412   uiout->text ("), ");
8413
8414   return PRINT_SRC_AND_LOC;
8415 }
8416
8417 static void
8418 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8419 {
8420   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8421   struct value_print_options opts;
8422   struct ui_out *uiout = current_uiout;
8423
8424   get_user_print_options (&opts);
8425
8426   /* Field 4, the address, is omitted (which makes the columns
8427      not line up too nicely with the headers, but the effect
8428      is relatively readable).  */
8429   if (opts.addressprint)
8430     uiout->field_skip ("addr");
8431   annotate_field (5);
8432   uiout->text ("exec");
8433   if (c->exec_pathname != NULL)
8434     {
8435       uiout->text (", program \"");
8436       uiout->field_string ("what", c->exec_pathname);
8437       uiout->text ("\" ");
8438     }
8439
8440   if (uiout->is_mi_like_p ())
8441     uiout->field_string ("catch-type", "exec");
8442 }
8443
8444 static void
8445 print_mention_catch_exec (struct breakpoint *b)
8446 {
8447   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8448 }
8449
8450 /* Implement the "print_recreate" breakpoint_ops method for exec
8451    catchpoints.  */
8452
8453 static void
8454 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8455 {
8456   fprintf_unfiltered (fp, "catch exec");
8457   print_recreate_thread (b, fp);
8458 }
8459
8460 static struct breakpoint_ops catch_exec_breakpoint_ops;
8461
8462 static int
8463 hw_breakpoint_used_count (void)
8464 {
8465   int i = 0;
8466   struct breakpoint *b;
8467   struct bp_location *bl;
8468
8469   ALL_BREAKPOINTS (b)
8470   {
8471     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8472       for (bl = b->loc; bl; bl = bl->next)
8473         {
8474           /* Special types of hardware breakpoints may use more than
8475              one register.  */
8476           i += b->ops->resources_needed (bl);
8477         }
8478   }
8479
8480   return i;
8481 }
8482
8483 /* Returns the resources B would use if it were a hardware
8484    watchpoint.  */
8485
8486 static int
8487 hw_watchpoint_use_count (struct breakpoint *b)
8488 {
8489   int i = 0;
8490   struct bp_location *bl;
8491
8492   if (!breakpoint_enabled (b))
8493     return 0;
8494
8495   for (bl = b->loc; bl; bl = bl->next)
8496     {
8497       /* Special types of hardware watchpoints may use more than
8498          one register.  */
8499       i += b->ops->resources_needed (bl);
8500     }
8501
8502   return i;
8503 }
8504
8505 /* Returns the sum the used resources of all hardware watchpoints of
8506    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8507    the sum of the used resources of all hardware watchpoints of other
8508    types _not_ TYPE.  */
8509
8510 static int
8511 hw_watchpoint_used_count_others (struct breakpoint *except,
8512                                  enum bptype type, int *other_type_used)
8513 {
8514   int i = 0;
8515   struct breakpoint *b;
8516
8517   *other_type_used = 0;
8518   ALL_BREAKPOINTS (b)
8519     {
8520       if (b == except)
8521         continue;
8522       if (!breakpoint_enabled (b))
8523         continue;
8524
8525       if (b->type == type)
8526         i += hw_watchpoint_use_count (b);
8527       else if (is_hardware_watchpoint (b))
8528         *other_type_used = 1;
8529     }
8530
8531   return i;
8532 }
8533
8534 void
8535 disable_watchpoints_before_interactive_call_start (void)
8536 {
8537   struct breakpoint *b;
8538
8539   ALL_BREAKPOINTS (b)
8540   {
8541     if (is_watchpoint (b) && breakpoint_enabled (b))
8542       {
8543         b->enable_state = bp_call_disabled;
8544         update_global_location_list (UGLL_DONT_INSERT);
8545       }
8546   }
8547 }
8548
8549 void
8550 enable_watchpoints_after_interactive_call_stop (void)
8551 {
8552   struct breakpoint *b;
8553
8554   ALL_BREAKPOINTS (b)
8555   {
8556     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8557       {
8558         b->enable_state = bp_enabled;
8559         update_global_location_list (UGLL_MAY_INSERT);
8560       }
8561   }
8562 }
8563
8564 void
8565 disable_breakpoints_before_startup (void)
8566 {
8567   current_program_space->executing_startup = 1;
8568   update_global_location_list (UGLL_DONT_INSERT);
8569 }
8570
8571 void
8572 enable_breakpoints_after_startup (void)
8573 {
8574   current_program_space->executing_startup = 0;
8575   breakpoint_re_set ();
8576 }
8577
8578 /* Create a new single-step breakpoint for thread THREAD, with no
8579    locations.  */
8580
8581 static struct breakpoint *
8582 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8583 {
8584   std::unique_ptr<breakpoint> b (new breakpoint ());
8585
8586   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8587                                         &momentary_breakpoint_ops);
8588
8589   b->disposition = disp_donttouch;
8590   b->frame_id = null_frame_id;
8591
8592   b->thread = thread;
8593   gdb_assert (b->thread != 0);
8594
8595   return add_to_breakpoint_chain (std::move (b));
8596 }
8597
8598 /* Set a momentary breakpoint of type TYPE at address specified by
8599    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8600    frame.  */
8601
8602 struct breakpoint *
8603 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8604                           struct frame_id frame_id, enum bptype type)
8605 {
8606   struct breakpoint *b;
8607
8608   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8609      tail-called one.  */
8610   gdb_assert (!frame_id_artificial_p (frame_id));
8611
8612   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8613   b->enable_state = bp_enabled;
8614   b->disposition = disp_donttouch;
8615   b->frame_id = frame_id;
8616
8617   /* If we're debugging a multi-threaded program, then we want
8618      momentary breakpoints to be active in only a single thread of
8619      control.  */
8620   if (in_thread_list (inferior_ptid))
8621     b->thread = ptid_to_global_thread_id (inferior_ptid);
8622
8623   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8624
8625   return b;
8626 }
8627
8628 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8629    The new breakpoint will have type TYPE, use OPS as its
8630    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8631
8632 static struct breakpoint *
8633 momentary_breakpoint_from_master (struct breakpoint *orig,
8634                                   enum bptype type,
8635                                   const struct breakpoint_ops *ops,
8636                                   int loc_enabled)
8637 {
8638   struct breakpoint *copy;
8639
8640   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8641   copy->loc = allocate_bp_location (copy);
8642   set_breakpoint_location_function (copy->loc, 1);
8643
8644   copy->loc->gdbarch = orig->loc->gdbarch;
8645   copy->loc->requested_address = orig->loc->requested_address;
8646   copy->loc->address = orig->loc->address;
8647   copy->loc->section = orig->loc->section;
8648   copy->loc->pspace = orig->loc->pspace;
8649   copy->loc->probe = orig->loc->probe;
8650   copy->loc->line_number = orig->loc->line_number;
8651   copy->loc->symtab = orig->loc->symtab;
8652   copy->loc->enabled = loc_enabled;
8653   copy->frame_id = orig->frame_id;
8654   copy->thread = orig->thread;
8655   copy->pspace = orig->pspace;
8656
8657   copy->enable_state = bp_enabled;
8658   copy->disposition = disp_donttouch;
8659   copy->number = internal_breakpoint_number--;
8660
8661   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8662   return copy;
8663 }
8664
8665 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8666    ORIG is NULL.  */
8667
8668 struct breakpoint *
8669 clone_momentary_breakpoint (struct breakpoint *orig)
8670 {
8671   /* If there's nothing to clone, then return nothing.  */
8672   if (orig == NULL)
8673     return NULL;
8674
8675   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8676 }
8677
8678 struct breakpoint *
8679 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8680                                 enum bptype type)
8681 {
8682   struct symtab_and_line sal;
8683
8684   sal = find_pc_line (pc, 0);
8685   sal.pc = pc;
8686   sal.section = find_pc_overlay (pc);
8687   sal.explicit_pc = 1;
8688
8689   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8690 }
8691 \f
8692
8693 /* Tell the user we have just set a breakpoint B.  */
8694
8695 static void
8696 mention (struct breakpoint *b)
8697 {
8698   b->ops->print_mention (b);
8699   if (current_uiout->is_mi_like_p ())
8700     return;
8701   printf_filtered ("\n");
8702 }
8703 \f
8704
8705 static int bp_loc_is_permanent (struct bp_location *loc);
8706
8707 static struct bp_location *
8708 add_location_to_breakpoint (struct breakpoint *b,
8709                             const struct symtab_and_line *sal)
8710 {
8711   struct bp_location *loc, **tmp;
8712   CORE_ADDR adjusted_address;
8713   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8714
8715   if (loc_gdbarch == NULL)
8716     loc_gdbarch = b->gdbarch;
8717
8718   /* Adjust the breakpoint's address prior to allocating a location.
8719      Once we call allocate_bp_location(), that mostly uninitialized
8720      location will be placed on the location chain.  Adjustment of the
8721      breakpoint may cause target_read_memory() to be called and we do
8722      not want its scan of the location chain to find a breakpoint and
8723      location that's only been partially initialized.  */
8724   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8725                                                 sal->pc, b->type);
8726
8727   /* Sort the locations by their ADDRESS.  */
8728   loc = allocate_bp_location (b);
8729   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8730        tmp = &((*tmp)->next))
8731     ;
8732   loc->next = *tmp;
8733   *tmp = loc;
8734
8735   loc->requested_address = sal->pc;
8736   loc->address = adjusted_address;
8737   loc->pspace = sal->pspace;
8738   loc->probe.probe = sal->probe;
8739   loc->probe.objfile = sal->objfile;
8740   gdb_assert (loc->pspace != NULL);
8741   loc->section = sal->section;
8742   loc->gdbarch = loc_gdbarch;
8743   loc->line_number = sal->line;
8744   loc->symtab = sal->symtab;
8745
8746   set_breakpoint_location_function (loc,
8747                                     sal->explicit_pc || sal->explicit_line);
8748
8749   /* While by definition, permanent breakpoints are already present in the
8750      code, we don't mark the location as inserted.  Normally one would expect
8751      that GDB could rely on that breakpoint instruction to stop the program,
8752      thus removing the need to insert its own breakpoint, except that executing
8753      the breakpoint instruction can kill the target instead of reporting a
8754      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8755      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8756      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8757      breakpoint be inserted normally results in QEMU knowing about the GDB
8758      breakpoint, and thus trap before the breakpoint instruction is executed.
8759      (If GDB later needs to continue execution past the permanent breakpoint,
8760      it manually increments the PC, thus avoiding executing the breakpoint
8761      instruction.)  */
8762   if (bp_loc_is_permanent (loc))
8763     loc->permanent = 1;
8764
8765   return loc;
8766 }
8767 \f
8768
8769 /* See breakpoint.h.  */
8770
8771 int
8772 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8773 {
8774   int len;
8775   CORE_ADDR addr;
8776   const gdb_byte *bpoint;
8777   gdb_byte *target_mem;
8778
8779   addr = address;
8780   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8781
8782   /* Software breakpoints unsupported?  */
8783   if (bpoint == NULL)
8784     return 0;
8785
8786   target_mem = (gdb_byte *) alloca (len);
8787
8788   /* Enable the automatic memory restoration from breakpoints while
8789      we read the memory.  Otherwise we could say about our temporary
8790      breakpoints they are permanent.  */
8791   scoped_restore restore_memory
8792     = make_scoped_restore_show_memory_breakpoints (0);
8793
8794   if (target_read_memory (address, target_mem, len) == 0
8795       && memcmp (target_mem, bpoint, len) == 0)
8796     return 1;
8797
8798   return 0;
8799 }
8800
8801 /* Return 1 if LOC is pointing to a permanent breakpoint,
8802    return 0 otherwise.  */
8803
8804 static int
8805 bp_loc_is_permanent (struct bp_location *loc)
8806 {
8807   gdb_assert (loc != NULL);
8808
8809   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
8810      attempt to read from the addresses the locations of these breakpoint types
8811      point to.  program_breakpoint_here_p, below, will attempt to read
8812      memory.  */
8813   if (!breakpoint_address_is_meaningful (loc->owner))
8814     return 0;
8815
8816   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8817   switch_to_program_space_and_thread (loc->pspace);
8818   return program_breakpoint_here_p (loc->gdbarch, loc->address);
8819 }
8820
8821 /* Build a command list for the dprintf corresponding to the current
8822    settings of the dprintf style options.  */
8823
8824 static void
8825 update_dprintf_command_list (struct breakpoint *b)
8826 {
8827   char *dprintf_args = b->extra_string;
8828   char *printf_line = NULL;
8829
8830   if (!dprintf_args)
8831     return;
8832
8833   dprintf_args = skip_spaces (dprintf_args);
8834
8835   /* Allow a comma, as it may have terminated a location, but don't
8836      insist on it.  */
8837   if (*dprintf_args == ',')
8838     ++dprintf_args;
8839   dprintf_args = skip_spaces (dprintf_args);
8840
8841   if (*dprintf_args != '"')
8842     error (_("Bad format string, missing '\"'."));
8843
8844   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8845     printf_line = xstrprintf ("printf %s", dprintf_args);
8846   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8847     {
8848       if (!dprintf_function)
8849         error (_("No function supplied for dprintf call"));
8850
8851       if (dprintf_channel && strlen (dprintf_channel) > 0)
8852         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8853                                   dprintf_function,
8854                                   dprintf_channel,
8855                                   dprintf_args);
8856       else
8857         printf_line = xstrprintf ("call (void) %s (%s)",
8858                                   dprintf_function,
8859                                   dprintf_args);
8860     }
8861   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8862     {
8863       if (target_can_run_breakpoint_commands ())
8864         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8865       else
8866         {
8867           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8868           printf_line = xstrprintf ("printf %s", dprintf_args);
8869         }
8870     }
8871   else
8872     internal_error (__FILE__, __LINE__,
8873                     _("Invalid dprintf style."));
8874
8875   gdb_assert (printf_line != NULL);
8876   /* Manufacture a printf sequence.  */
8877   {
8878     struct command_line *printf_cmd_line = XNEW (struct command_line);
8879
8880     printf_cmd_line->control_type = simple_control;
8881     printf_cmd_line->body_count = 0;
8882     printf_cmd_line->body_list = NULL;
8883     printf_cmd_line->next = NULL;
8884     printf_cmd_line->line = printf_line;
8885
8886     breakpoint_set_commands (b, command_line_up (printf_cmd_line));
8887   }
8888 }
8889
8890 /* Update all dprintf commands, making their command lists reflect
8891    current style settings.  */
8892
8893 static void
8894 update_dprintf_commands (char *args, int from_tty,
8895                          struct cmd_list_element *c)
8896 {
8897   struct breakpoint *b;
8898
8899   ALL_BREAKPOINTS (b)
8900     {
8901       if (b->type == bp_dprintf)
8902         update_dprintf_command_list (b);
8903     }
8904 }
8905
8906 /* Create a breakpoint with SAL as location.  Use LOCATION
8907    as a description of the location, and COND_STRING
8908    as condition expression.  If LOCATION is NULL then create an
8909    "address location" from the address in the SAL.  */
8910
8911 static void
8912 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8913                      gdb::array_view<const symtab_and_line> sals,
8914                      event_location_up &&location,
8915                      gdb::unique_xmalloc_ptr<char> filter,
8916                      gdb::unique_xmalloc_ptr<char> cond_string,
8917                      gdb::unique_xmalloc_ptr<char> extra_string,
8918                      enum bptype type, enum bpdisp disposition,
8919                      int thread, int task, int ignore_count,
8920                      const struct breakpoint_ops *ops, int from_tty,
8921                      int enabled, int internal, unsigned flags,
8922                      int display_canonical)
8923 {
8924   int i;
8925
8926   if (type == bp_hardware_breakpoint)
8927     {
8928       int target_resources_ok;
8929
8930       i = hw_breakpoint_used_count ();
8931       target_resources_ok =
8932         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8933                                             i + 1, 0);
8934       if (target_resources_ok == 0)
8935         error (_("No hardware breakpoint support in the target."));
8936       else if (target_resources_ok < 0)
8937         error (_("Hardware breakpoints used exceeds limit."));
8938     }
8939
8940   gdb_assert (!sals.empty ());
8941
8942   for (const auto &sal : sals)
8943     {
8944       struct bp_location *loc;
8945
8946       if (from_tty)
8947         {
8948           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8949           if (!loc_gdbarch)
8950             loc_gdbarch = gdbarch;
8951
8952           describe_other_breakpoints (loc_gdbarch,
8953                                       sal.pspace, sal.pc, sal.section, thread);
8954         }
8955
8956       if (&sal == &sals[0])
8957         {
8958           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8959           b->thread = thread;
8960           b->task = task;
8961
8962           b->cond_string = cond_string.release ();
8963           b->extra_string = extra_string.release ();
8964           b->ignore_count = ignore_count;
8965           b->enable_state = enabled ? bp_enabled : bp_disabled;
8966           b->disposition = disposition;
8967
8968           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8969             b->loc->inserted = 1;
8970
8971           if (type == bp_static_tracepoint)
8972             {
8973               struct tracepoint *t = (struct tracepoint *) b;
8974               struct static_tracepoint_marker marker;
8975
8976               if (strace_marker_p (b))
8977                 {
8978                   /* We already know the marker exists, otherwise, we
8979                      wouldn't see a sal for it.  */
8980                   const char *p
8981                     = &event_location_to_string (b->location.get ())[3];
8982                   const char *endp;
8983                   char *marker_str;
8984
8985                   p = skip_spaces (p);
8986
8987                   endp = skip_to_space (p);
8988
8989                   marker_str = savestring (p, endp - p);
8990                   t->static_trace_marker_id = marker_str;
8991
8992                   printf_filtered (_("Probed static tracepoint "
8993                                      "marker \"%s\"\n"),
8994                                    t->static_trace_marker_id);
8995                 }
8996               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8997                 {
8998                   t->static_trace_marker_id = xstrdup (marker.str_id);
8999                   release_static_tracepoint_marker (&marker);
9000
9001                   printf_filtered (_("Probed static tracepoint "
9002                                      "marker \"%s\"\n"),
9003                                    t->static_trace_marker_id);
9004                 }
9005               else
9006                 warning (_("Couldn't determine the static "
9007                            "tracepoint marker to probe"));
9008             }
9009
9010           loc = b->loc;
9011         }
9012       else
9013         {
9014           loc = add_location_to_breakpoint (b, &sal);
9015           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9016             loc->inserted = 1;
9017         }
9018
9019       if (b->cond_string)
9020         {
9021           const char *arg = b->cond_string;
9022
9023           loc->cond = parse_exp_1 (&arg, loc->address,
9024                                    block_for_pc (loc->address), 0);
9025           if (*arg)
9026               error (_("Garbage '%s' follows condition"), arg);
9027         }
9028
9029       /* Dynamic printf requires and uses additional arguments on the
9030          command line, otherwise it's an error.  */
9031       if (type == bp_dprintf)
9032         {
9033           if (b->extra_string)
9034             update_dprintf_command_list (b);
9035           else
9036             error (_("Format string required"));
9037         }
9038       else if (b->extra_string)
9039         error (_("Garbage '%s' at end of command"), b->extra_string);
9040     }
9041
9042   b->display_canonical = display_canonical;
9043   if (location != NULL)
9044     b->location = std::move (location);
9045   else
9046     b->location = new_address_location (b->loc->address, NULL, 0);
9047   b->filter = filter.release ();
9048 }
9049
9050 static void
9051 create_breakpoint_sal (struct gdbarch *gdbarch,
9052                        gdb::array_view<const symtab_and_line> sals,
9053                        event_location_up &&location,
9054                        gdb::unique_xmalloc_ptr<char> filter,
9055                        gdb::unique_xmalloc_ptr<char> cond_string,
9056                        gdb::unique_xmalloc_ptr<char> extra_string,
9057                        enum bptype type, enum bpdisp disposition,
9058                        int thread, int task, int ignore_count,
9059                        const struct breakpoint_ops *ops, int from_tty,
9060                        int enabled, int internal, unsigned flags,
9061                        int display_canonical)
9062 {
9063   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
9064
9065   init_breakpoint_sal (b.get (), gdbarch,
9066                        sals, std::move (location),
9067                        std::move (filter),
9068                        std::move (cond_string),
9069                        std::move (extra_string),
9070                        type, disposition,
9071                        thread, task, ignore_count,
9072                        ops, from_tty,
9073                        enabled, internal, flags,
9074                        display_canonical);
9075
9076   install_breakpoint (internal, std::move (b), 0);
9077 }
9078
9079 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9080    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9081    value.  COND_STRING, if not NULL, specified the condition to be
9082    used for all breakpoints.  Essentially the only case where
9083    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9084    function.  In that case, it's still not possible to specify
9085    separate conditions for different overloaded functions, so
9086    we take just a single condition string.
9087    
9088    NOTE: If the function succeeds, the caller is expected to cleanup
9089    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9090    array contents).  If the function fails (error() is called), the
9091    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9092    COND and SALS arrays and each of those arrays contents.  */
9093
9094 static void
9095 create_breakpoints_sal (struct gdbarch *gdbarch,
9096                         struct linespec_result *canonical,
9097                         gdb::unique_xmalloc_ptr<char> cond_string,
9098                         gdb::unique_xmalloc_ptr<char> extra_string,
9099                         enum bptype type, enum bpdisp disposition,
9100                         int thread, int task, int ignore_count,
9101                         const struct breakpoint_ops *ops, int from_tty,
9102                         int enabled, int internal, unsigned flags)
9103 {
9104   if (canonical->pre_expanded)
9105     gdb_assert (canonical->lsals.size () == 1);
9106
9107   for (const auto &lsal : canonical->lsals)
9108     {
9109       /* Note that 'location' can be NULL in the case of a plain
9110          'break', without arguments.  */
9111       event_location_up location
9112         = (canonical->location != NULL
9113            ? copy_event_location (canonical->location.get ()) : NULL);
9114       gdb::unique_xmalloc_ptr<char> filter_string
9115         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
9116
9117       create_breakpoint_sal (gdbarch, lsal.sals,
9118                              std::move (location),
9119                              std::move (filter_string),
9120                              std::move (cond_string),
9121                              std::move (extra_string),
9122                              type, disposition,
9123                              thread, task, ignore_count, ops,
9124                              from_tty, enabled, internal, flags,
9125                              canonical->special_display);
9126     }
9127 }
9128
9129 /* Parse LOCATION which is assumed to be a SAL specification possibly
9130    followed by conditionals.  On return, SALS contains an array of SAL
9131    addresses found.  LOCATION points to the end of the SAL (for
9132    linespec locations).
9133
9134    The array and the line spec strings are allocated on the heap, it is
9135    the caller's responsibility to free them.  */
9136
9137 static void
9138 parse_breakpoint_sals (const struct event_location *location,
9139                        struct linespec_result *canonical)
9140 {
9141   struct symtab_and_line cursal;
9142
9143   if (event_location_type (location) == LINESPEC_LOCATION)
9144     {
9145       const char *address = get_linespec_location (location);
9146
9147       if (address == NULL)
9148         {
9149           /* The last displayed codepoint, if it's valid, is our default
9150              breakpoint address.  */
9151           if (last_displayed_sal_is_valid ())
9152             {
9153               /* Set sal's pspace, pc, symtab, and line to the values
9154                  corresponding to the last call to print_frame_info.
9155                  Be sure to reinitialize LINE with NOTCURRENT == 0
9156                  as the breakpoint line number is inappropriate otherwise.
9157                  find_pc_line would adjust PC, re-set it back.  */
9158               symtab_and_line sal = get_last_displayed_sal ();
9159               CORE_ADDR pc = sal.pc;
9160
9161               sal = find_pc_line (pc, 0);
9162
9163               /* "break" without arguments is equivalent to "break *PC"
9164                  where PC is the last displayed codepoint's address.  So
9165                  make sure to set sal.explicit_pc to prevent GDB from
9166                  trying to expand the list of sals to include all other
9167                  instances with the same symtab and line.  */
9168               sal.pc = pc;
9169               sal.explicit_pc = 1;
9170
9171               struct linespec_sals lsal;
9172               lsal.sals = {sal};
9173               lsal.canonical = NULL;
9174
9175               canonical->lsals.push_back (std::move (lsal));
9176               return;
9177             }
9178           else
9179             error (_("No default breakpoint address now."));
9180         }
9181     }
9182
9183   /* Force almost all breakpoints to be in terms of the
9184      current_source_symtab (which is decode_line_1's default).
9185      This should produce the results we want almost all of the
9186      time while leaving default_breakpoint_* alone.
9187
9188      ObjC: However, don't match an Objective-C method name which
9189      may have a '+' or '-' succeeded by a '['.  */
9190   cursal = get_current_source_symtab_and_line ();
9191   if (last_displayed_sal_is_valid ())
9192     {
9193       const char *address = NULL;
9194
9195       if (event_location_type (location) == LINESPEC_LOCATION)
9196         address = get_linespec_location (location);
9197
9198       if (!cursal.symtab
9199           || (address != NULL
9200               && strchr ("+-", address[0]) != NULL
9201               && address[1] != '['))
9202         {
9203           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9204                             get_last_displayed_symtab (),
9205                             get_last_displayed_line (),
9206                             canonical, NULL, NULL);
9207           return;
9208         }
9209     }
9210
9211   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9212                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9213 }
9214
9215
9216 /* Convert each SAL into a real PC.  Verify that the PC can be
9217    inserted as a breakpoint.  If it can't throw an error.  */
9218
9219 static void
9220 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9221 {    
9222   for (auto &sal : sals)
9223     resolve_sal_pc (&sal);
9224 }
9225
9226 /* Fast tracepoints may have restrictions on valid locations.  For
9227    instance, a fast tracepoint using a jump instead of a trap will
9228    likely have to overwrite more bytes than a trap would, and so can
9229    only be placed where the instruction is longer than the jump, or a
9230    multi-instruction sequence does not have a jump into the middle of
9231    it, etc.  */
9232
9233 static void
9234 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9235                             gdb::array_view<const symtab_and_line> sals)
9236 {
9237   int rslt;
9238   char *msg;
9239   struct cleanup *old_chain;
9240
9241   for (const auto &sal : sals)
9242     {
9243       struct gdbarch *sarch;
9244
9245       sarch = get_sal_arch (sal);
9246       /* We fall back to GDBARCH if there is no architecture
9247          associated with SAL.  */
9248       if (sarch == NULL)
9249         sarch = gdbarch;
9250       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg);
9251       old_chain = make_cleanup (xfree, msg);
9252
9253       if (!rslt)
9254         error (_("May not have a fast tracepoint at %s%s"),
9255                paddress (sarch, sal.pc), (msg ? msg : ""));
9256
9257       do_cleanups (old_chain);
9258     }
9259 }
9260
9261 /* Given TOK, a string specification of condition and thread, as
9262    accepted by the 'break' command, extract the condition
9263    string and thread number and set *COND_STRING and *THREAD.
9264    PC identifies the context at which the condition should be parsed.
9265    If no condition is found, *COND_STRING is set to NULL.
9266    If no thread is found, *THREAD is set to -1.  */
9267
9268 static void
9269 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9270                            char **cond_string, int *thread, int *task,
9271                            char **rest)
9272 {
9273   *cond_string = NULL;
9274   *thread = -1;
9275   *task = 0;
9276   *rest = NULL;
9277
9278   while (tok && *tok)
9279     {
9280       const char *end_tok;
9281       int toklen;
9282       const char *cond_start = NULL;
9283       const char *cond_end = NULL;
9284
9285       tok = skip_spaces (tok);
9286
9287       if ((*tok == '"' || *tok == ',') && rest)
9288         {
9289           *rest = savestring (tok, strlen (tok));
9290           return;
9291         }
9292
9293       end_tok = skip_to_space (tok);
9294
9295       toklen = end_tok - tok;
9296
9297       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9298         {
9299           tok = cond_start = end_tok + 1;
9300           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9301           cond_end = tok;
9302           *cond_string = savestring (cond_start, cond_end - cond_start);
9303         }
9304       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9305         {
9306           const char *tmptok;
9307           struct thread_info *thr;
9308
9309           tok = end_tok + 1;
9310           thr = parse_thread_id (tok, &tmptok);
9311           if (tok == tmptok)
9312             error (_("Junk after thread keyword."));
9313           *thread = thr->global_num;
9314           tok = tmptok;
9315         }
9316       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9317         {
9318           char *tmptok;
9319
9320           tok = end_tok + 1;
9321           *task = strtol (tok, &tmptok, 0);
9322           if (tok == tmptok)
9323             error (_("Junk after task keyword."));
9324           if (!valid_task_id (*task))
9325             error (_("Unknown task %d."), *task);
9326           tok = tmptok;
9327         }
9328       else if (rest)
9329         {
9330           *rest = savestring (tok, strlen (tok));
9331           return;
9332         }
9333       else
9334         error (_("Junk at end of arguments."));
9335     }
9336 }
9337
9338 /* Decode a static tracepoint marker spec.  */
9339
9340 static std::vector<symtab_and_line>
9341 decode_static_tracepoint_spec (const char **arg_p)
9342 {
9343   VEC(static_tracepoint_marker_p) *markers = NULL;
9344   const char *p = &(*arg_p)[3];
9345   const char *endp;
9346   int i;
9347
9348   p = skip_spaces (p);
9349
9350   endp = skip_to_space (p);
9351
9352   std::string marker_str (p, endp - p);
9353
9354   markers = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9355   if (VEC_empty(static_tracepoint_marker_p, markers))
9356     error (_("No known static tracepoint marker named %s"),
9357            marker_str.c_str ());
9358
9359   std::vector<symtab_and_line> sals;
9360   sals.reserve (VEC_length(static_tracepoint_marker_p, markers));
9361
9362   for (i = 0; i < VEC_length(static_tracepoint_marker_p, markers); i++)
9363     {
9364       struct static_tracepoint_marker *marker;
9365
9366       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9367
9368       symtab_and_line sal = find_pc_line (marker->address, 0);
9369       sal.pc = marker->address;
9370       sals.push_back (sal);
9371
9372       release_static_tracepoint_marker (marker);
9373     }
9374
9375   *arg_p = endp;
9376   return sals;
9377 }
9378
9379 /* See breakpoint.h.  */
9380
9381 int
9382 create_breakpoint (struct gdbarch *gdbarch,
9383                    const struct event_location *location,
9384                    const char *cond_string,
9385                    int thread, const char *extra_string,
9386                    int parse_extra,
9387                    int tempflag, enum bptype type_wanted,
9388                    int ignore_count,
9389                    enum auto_boolean pending_break_support,
9390                    const struct breakpoint_ops *ops,
9391                    int from_tty, int enabled, int internal,
9392                    unsigned flags)
9393 {
9394   struct linespec_result canonical;
9395   struct cleanup *bkpt_chain = NULL;
9396   int pending = 0;
9397   int task = 0;
9398   int prev_bkpt_count = breakpoint_count;
9399
9400   gdb_assert (ops != NULL);
9401
9402   /* If extra_string isn't useful, set it to NULL.  */
9403   if (extra_string != NULL && *extra_string == '\0')
9404     extra_string = NULL;
9405
9406   TRY
9407     {
9408       ops->create_sals_from_location (location, &canonical, type_wanted);
9409     }
9410   CATCH (e, RETURN_MASK_ERROR)
9411     {
9412       /* If caller is interested in rc value from parse, set
9413          value.  */
9414       if (e.error == NOT_FOUND_ERROR)
9415         {
9416           /* If pending breakpoint support is turned off, throw
9417              error.  */
9418
9419           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9420             throw_exception (e);
9421
9422           exception_print (gdb_stderr, e);
9423
9424           /* If pending breakpoint support is auto query and the user
9425              selects no, then simply return the error code.  */
9426           if (pending_break_support == AUTO_BOOLEAN_AUTO
9427               && !nquery (_("Make %s pending on future shared library load? "),
9428                           bptype_string (type_wanted)))
9429             return 0;
9430
9431           /* At this point, either the user was queried about setting
9432              a pending breakpoint and selected yes, or pending
9433              breakpoint behavior is on and thus a pending breakpoint
9434              is defaulted on behalf of the user.  */
9435           pending = 1;
9436         }
9437       else
9438         throw_exception (e);
9439     }
9440   END_CATCH
9441
9442   if (!pending && canonical.lsals.empty ())
9443     return 0;
9444
9445   /* ----------------------------- SNIP -----------------------------
9446      Anything added to the cleanup chain beyond this point is assumed
9447      to be part of a breakpoint.  If the breakpoint create succeeds
9448      then the memory is not reclaimed.  */
9449   bkpt_chain = make_cleanup (null_cleanup, 0);
9450
9451   /* Resolve all line numbers to PC's and verify that the addresses
9452      are ok for the target.  */
9453   if (!pending)
9454     {
9455       for (auto &lsal : canonical.lsals)
9456         breakpoint_sals_to_pc (lsal.sals);
9457     }
9458
9459   /* Fast tracepoints may have additional restrictions on location.  */
9460   if (!pending && type_wanted == bp_fast_tracepoint)
9461     {
9462       for (const auto &lsal : canonical.lsals)
9463         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9464     }
9465
9466   /* Verify that condition can be parsed, before setting any
9467      breakpoints.  Allocate a separate condition expression for each
9468      breakpoint.  */
9469   if (!pending)
9470     {
9471       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9472       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9473
9474       if (parse_extra)
9475         {
9476           char *rest;
9477           char *cond;
9478
9479           const linespec_sals &lsal = canonical.lsals[0];
9480
9481           /* Here we only parse 'arg' to separate condition
9482              from thread number, so parsing in context of first
9483              sal is OK.  When setting the breakpoint we'll
9484              re-parse it in context of each sal.  */
9485
9486           find_condition_and_thread (extra_string, lsal.sals[0].pc,
9487                                      &cond, &thread, &task, &rest);
9488           cond_string_copy.reset (cond);
9489           extra_string_copy.reset (rest);
9490         }
9491       else
9492         {
9493           if (type_wanted != bp_dprintf
9494               && extra_string != NULL && *extra_string != '\0')
9495                 error (_("Garbage '%s' at end of location"), extra_string);
9496
9497           /* Create a private copy of condition string.  */
9498           if (cond_string)
9499             cond_string_copy.reset (xstrdup (cond_string));
9500           /* Create a private copy of any extra string.  */
9501           if (extra_string)
9502             extra_string_copy.reset (xstrdup (extra_string));
9503         }
9504
9505       ops->create_breakpoints_sal (gdbarch, &canonical,
9506                                    std::move (cond_string_copy),
9507                                    std::move (extra_string_copy),
9508                                    type_wanted,
9509                                    tempflag ? disp_del : disp_donttouch,
9510                                    thread, task, ignore_count, ops,
9511                                    from_tty, enabled, internal, flags);
9512     }
9513   else
9514     {
9515       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9516
9517       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9518       b->location = copy_event_location (location);
9519
9520       if (parse_extra)
9521         b->cond_string = NULL;
9522       else
9523         {
9524           /* Create a private copy of condition string.  */
9525           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9526           b->thread = thread;
9527         }
9528
9529       /* Create a private copy of any extra string.  */
9530       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9531       b->ignore_count = ignore_count;
9532       b->disposition = tempflag ? disp_del : disp_donttouch;
9533       b->condition_not_parsed = 1;
9534       b->enable_state = enabled ? bp_enabled : bp_disabled;
9535       if ((type_wanted != bp_breakpoint
9536            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9537         b->pspace = current_program_space;
9538
9539       install_breakpoint (internal, std::move (b), 0);
9540     }
9541   
9542   if (canonical.lsals.size () > 1)
9543     {
9544       warning (_("Multiple breakpoints were set.\nUse the "
9545                  "\"delete\" command to delete unwanted breakpoints."));
9546       prev_breakpoint_count = prev_bkpt_count;
9547     }
9548
9549   /* That's it.  Discard the cleanups for data inserted into the
9550      breakpoint.  */
9551   discard_cleanups (bkpt_chain);
9552
9553   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9554   update_global_location_list (UGLL_MAY_INSERT);
9555
9556   return 1;
9557 }
9558
9559 /* Set a breakpoint.
9560    ARG is a string describing breakpoint address,
9561    condition, and thread.
9562    FLAG specifies if a breakpoint is hardware on,
9563    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9564    and BP_TEMPFLAG.  */
9565
9566 static void
9567 break_command_1 (const char *arg, int flag, int from_tty)
9568 {
9569   int tempflag = flag & BP_TEMPFLAG;
9570   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9571                              ? bp_hardware_breakpoint
9572                              : bp_breakpoint);
9573   struct breakpoint_ops *ops;
9574
9575   event_location_up location = string_to_event_location (&arg, current_language);
9576
9577   /* Matching breakpoints on probes.  */
9578   if (location != NULL
9579       && event_location_type (location.get ()) == PROBE_LOCATION)
9580     ops = &bkpt_probe_breakpoint_ops;
9581   else
9582     ops = &bkpt_breakpoint_ops;
9583
9584   create_breakpoint (get_current_arch (),
9585                      location.get (),
9586                      NULL, 0, arg, 1 /* parse arg */,
9587                      tempflag, type_wanted,
9588                      0 /* Ignore count */,
9589                      pending_break_support,
9590                      ops,
9591                      from_tty,
9592                      1 /* enabled */,
9593                      0 /* internal */,
9594                      0);
9595 }
9596
9597 /* Helper function for break_command_1 and disassemble_command.  */
9598
9599 void
9600 resolve_sal_pc (struct symtab_and_line *sal)
9601 {
9602   CORE_ADDR pc;
9603
9604   if (sal->pc == 0 && sal->symtab != NULL)
9605     {
9606       if (!find_line_pc (sal->symtab, sal->line, &pc))
9607         error (_("No line %d in file \"%s\"."),
9608                sal->line, symtab_to_filename_for_display (sal->symtab));
9609       sal->pc = pc;
9610
9611       /* If this SAL corresponds to a breakpoint inserted using a line
9612          number, then skip the function prologue if necessary.  */
9613       if (sal->explicit_line)
9614         skip_prologue_sal (sal);
9615     }
9616
9617   if (sal->section == 0 && sal->symtab != NULL)
9618     {
9619       const struct blockvector *bv;
9620       const struct block *b;
9621       struct symbol *sym;
9622
9623       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9624                                     SYMTAB_COMPUNIT (sal->symtab));
9625       if (bv != NULL)
9626         {
9627           sym = block_linkage_function (b);
9628           if (sym != NULL)
9629             {
9630               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9631               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9632                                                  sym);
9633             }
9634           else
9635             {
9636               /* It really is worthwhile to have the section, so we'll
9637                  just have to look harder. This case can be executed
9638                  if we have line numbers but no functions (as can
9639                  happen in assembly source).  */
9640
9641               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9642               switch_to_program_space_and_thread (sal->pspace);
9643
9644               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9645               if (msym.minsym)
9646                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9647             }
9648         }
9649     }
9650 }
9651
9652 void
9653 break_command (char *arg, int from_tty)
9654 {
9655   break_command_1 (arg, 0, from_tty);
9656 }
9657
9658 void
9659 tbreak_command (char *arg, int from_tty)
9660 {
9661   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9662 }
9663
9664 static void
9665 hbreak_command (char *arg, int from_tty)
9666 {
9667   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9668 }
9669
9670 static void
9671 thbreak_command (char *arg, int from_tty)
9672 {
9673   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9674 }
9675
9676 static void
9677 stop_command (char *arg, int from_tty)
9678 {
9679   printf_filtered (_("Specify the type of breakpoint to set.\n\
9680 Usage: stop in <function | address>\n\
9681        stop at <line>\n"));
9682 }
9683
9684 static void
9685 stopin_command (const char *arg, int from_tty)
9686 {
9687   int badInput = 0;
9688
9689   if (arg == (char *) NULL)
9690     badInput = 1;
9691   else if (*arg != '*')
9692     {
9693       const char *argptr = arg;
9694       int hasColon = 0;
9695
9696       /* Look for a ':'.  If this is a line number specification, then
9697          say it is bad, otherwise, it should be an address or
9698          function/method name.  */
9699       while (*argptr && !hasColon)
9700         {
9701           hasColon = (*argptr == ':');
9702           argptr++;
9703         }
9704
9705       if (hasColon)
9706         badInput = (*argptr != ':');    /* Not a class::method */
9707       else
9708         badInput = isdigit (*arg);      /* a simple line number */
9709     }
9710
9711   if (badInput)
9712     printf_filtered (_("Usage: stop in <function | address>\n"));
9713   else
9714     break_command_1 (arg, 0, from_tty);
9715 }
9716
9717 static void
9718 stopat_command (const char *arg, int from_tty)
9719 {
9720   int badInput = 0;
9721
9722   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9723     badInput = 1;
9724   else
9725     {
9726       const char *argptr = arg;
9727       int hasColon = 0;
9728
9729       /* Look for a ':'.  If there is a '::' then get out, otherwise
9730          it is probably a line number.  */
9731       while (*argptr && !hasColon)
9732         {
9733           hasColon = (*argptr == ':');
9734           argptr++;
9735         }
9736
9737       if (hasColon)
9738         badInput = (*argptr == ':');    /* we have class::method */
9739       else
9740         badInput = !isdigit (*arg);     /* not a line number */
9741     }
9742
9743   if (badInput)
9744     printf_filtered (_("Usage: stop at <line>\n"));
9745   else
9746     break_command_1 (arg, 0, from_tty);
9747 }
9748
9749 /* The dynamic printf command is mostly like a regular breakpoint, but
9750    with a prewired command list consisting of a single output command,
9751    built from extra arguments supplied on the dprintf command
9752    line.  */
9753
9754 static void
9755 dprintf_command (char *arg_in, int from_tty)
9756 {
9757   const char *arg = arg_in;
9758   event_location_up location = string_to_event_location (&arg, current_language);
9759
9760   /* If non-NULL, ARG should have been advanced past the location;
9761      the next character must be ','.  */
9762   if (arg != NULL)
9763     {
9764       if (arg[0] != ',' || arg[1] == '\0')
9765         error (_("Format string required"));
9766       else
9767         {
9768           /* Skip the comma.  */
9769           ++arg;
9770         }
9771     }
9772
9773   create_breakpoint (get_current_arch (),
9774                      location.get (),
9775                      NULL, 0, arg, 1 /* parse arg */,
9776                      0, bp_dprintf,
9777                      0 /* Ignore count */,
9778                      pending_break_support,
9779                      &dprintf_breakpoint_ops,
9780                      from_tty,
9781                      1 /* enabled */,
9782                      0 /* internal */,
9783                      0);
9784 }
9785
9786 static void
9787 agent_printf_command (char *arg, int from_tty)
9788 {
9789   error (_("May only run agent-printf on the target"));
9790 }
9791
9792 /* Implement the "breakpoint_hit" breakpoint_ops method for
9793    ranged breakpoints.  */
9794
9795 static int
9796 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9797                                   struct address_space *aspace,
9798                                   CORE_ADDR bp_addr,
9799                                   const struct target_waitstatus *ws)
9800 {
9801   if (ws->kind != TARGET_WAITKIND_STOPPED
9802       || ws->value.sig != GDB_SIGNAL_TRAP)
9803     return 0;
9804
9805   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9806                                          bl->length, aspace, bp_addr);
9807 }
9808
9809 /* Implement the "resources_needed" breakpoint_ops method for
9810    ranged breakpoints.  */
9811
9812 static int
9813 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9814 {
9815   return target_ranged_break_num_registers ();
9816 }
9817
9818 /* Implement the "print_it" breakpoint_ops method for
9819    ranged breakpoints.  */
9820
9821 static enum print_stop_action
9822 print_it_ranged_breakpoint (bpstat bs)
9823 {
9824   struct breakpoint *b = bs->breakpoint_at;
9825   struct bp_location *bl = b->loc;
9826   struct ui_out *uiout = current_uiout;
9827
9828   gdb_assert (b->type == bp_hardware_breakpoint);
9829
9830   /* Ranged breakpoints have only one location.  */
9831   gdb_assert (bl && bl->next == NULL);
9832
9833   annotate_breakpoint (b->number);
9834
9835   maybe_print_thread_hit_breakpoint (uiout);
9836
9837   if (b->disposition == disp_del)
9838     uiout->text ("Temporary ranged breakpoint ");
9839   else
9840     uiout->text ("Ranged breakpoint ");
9841   if (uiout->is_mi_like_p ())
9842     {
9843       uiout->field_string ("reason",
9844                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9845       uiout->field_string ("disp", bpdisp_text (b->disposition));
9846     }
9847   uiout->field_int ("bkptno", b->number);
9848   uiout->text (", ");
9849
9850   return PRINT_SRC_AND_LOC;
9851 }
9852
9853 /* Implement the "print_one" breakpoint_ops method for
9854    ranged breakpoints.  */
9855
9856 static void
9857 print_one_ranged_breakpoint (struct breakpoint *b,
9858                              struct bp_location **last_loc)
9859 {
9860   struct bp_location *bl = b->loc;
9861   struct value_print_options opts;
9862   struct ui_out *uiout = current_uiout;
9863
9864   /* Ranged breakpoints have only one location.  */
9865   gdb_assert (bl && bl->next == NULL);
9866
9867   get_user_print_options (&opts);
9868
9869   if (opts.addressprint)
9870     /* We don't print the address range here, it will be printed later
9871        by print_one_detail_ranged_breakpoint.  */
9872     uiout->field_skip ("addr");
9873   annotate_field (5);
9874   print_breakpoint_location (b, bl);
9875   *last_loc = bl;
9876 }
9877
9878 /* Implement the "print_one_detail" breakpoint_ops method for
9879    ranged breakpoints.  */
9880
9881 static void
9882 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9883                                     struct ui_out *uiout)
9884 {
9885   CORE_ADDR address_start, address_end;
9886   struct bp_location *bl = b->loc;
9887   string_file stb;
9888
9889   gdb_assert (bl);
9890
9891   address_start = bl->address;
9892   address_end = address_start + bl->length - 1;
9893
9894   uiout->text ("\taddress range: ");
9895   stb.printf ("[%s, %s]",
9896               print_core_address (bl->gdbarch, address_start),
9897               print_core_address (bl->gdbarch, address_end));
9898   uiout->field_stream ("addr", stb);
9899   uiout->text ("\n");
9900 }
9901
9902 /* Implement the "print_mention" breakpoint_ops method for
9903    ranged breakpoints.  */
9904
9905 static void
9906 print_mention_ranged_breakpoint (struct breakpoint *b)
9907 {
9908   struct bp_location *bl = b->loc;
9909   struct ui_out *uiout = current_uiout;
9910
9911   gdb_assert (bl);
9912   gdb_assert (b->type == bp_hardware_breakpoint);
9913
9914   if (uiout->is_mi_like_p ())
9915     return;
9916
9917   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9918                    b->number, paddress (bl->gdbarch, bl->address),
9919                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9920 }
9921
9922 /* Implement the "print_recreate" breakpoint_ops method for
9923    ranged breakpoints.  */
9924
9925 static void
9926 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9927 {
9928   fprintf_unfiltered (fp, "break-range %s, %s",
9929                       event_location_to_string (b->location.get ()),
9930                       event_location_to_string (b->location_range_end.get ()));
9931   print_recreate_thread (b, fp);
9932 }
9933
9934 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9935
9936 static struct breakpoint_ops ranged_breakpoint_ops;
9937
9938 /* Find the address where the end of the breakpoint range should be
9939    placed, given the SAL of the end of the range.  This is so that if
9940    the user provides a line number, the end of the range is set to the
9941    last instruction of the given line.  */
9942
9943 static CORE_ADDR
9944 find_breakpoint_range_end (struct symtab_and_line sal)
9945 {
9946   CORE_ADDR end;
9947
9948   /* If the user provided a PC value, use it.  Otherwise,
9949      find the address of the end of the given location.  */
9950   if (sal.explicit_pc)
9951     end = sal.pc;
9952   else
9953     {
9954       int ret;
9955       CORE_ADDR start;
9956
9957       ret = find_line_pc_range (sal, &start, &end);
9958       if (!ret)
9959         error (_("Could not find location of the end of the range."));
9960
9961       /* find_line_pc_range returns the start of the next line.  */
9962       end--;
9963     }
9964
9965   return end;
9966 }
9967
9968 /* Implement the "break-range" CLI command.  */
9969
9970 static void
9971 break_range_command (char *arg_in, int from_tty)
9972 {
9973   const char *arg = arg_in;
9974   const char *arg_start;
9975   struct linespec_result canonical_start, canonical_end;
9976   int bp_count, can_use_bp, length;
9977   CORE_ADDR end;
9978   struct breakpoint *b;
9979
9980   /* We don't support software ranged breakpoints.  */
9981   if (target_ranged_break_num_registers () < 0)
9982     error (_("This target does not support hardware ranged breakpoints."));
9983
9984   bp_count = hw_breakpoint_used_count ();
9985   bp_count += target_ranged_break_num_registers ();
9986   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9987                                                    bp_count, 0);
9988   if (can_use_bp < 0)
9989     error (_("Hardware breakpoints used exceeds limit."));
9990
9991   arg = skip_spaces (arg);
9992   if (arg == NULL || arg[0] == '\0')
9993     error(_("No address range specified."));
9994
9995   arg_start = arg;
9996   event_location_up start_location = string_to_event_location (&arg,
9997                                                                current_language);
9998   parse_breakpoint_sals (start_location.get (), &canonical_start);
9999
10000   if (arg[0] != ',')
10001     error (_("Too few arguments."));
10002   else if (canonical_start.lsals.empty ())
10003     error (_("Could not find location of the beginning of the range."));
10004
10005   const linespec_sals &lsal_start = canonical_start.lsals[0];
10006
10007   if (canonical_start.lsals.size () > 1
10008       || lsal_start.sals.size () != 1)
10009     error (_("Cannot create a ranged breakpoint with multiple locations."));
10010
10011   const symtab_and_line &sal_start = lsal_start.sals[0];
10012   std::string addr_string_start (arg_start, arg - arg_start);
10013
10014   arg++;        /* Skip the comma.  */
10015   arg = skip_spaces (arg);
10016
10017   /* Parse the end location.  */
10018
10019   arg_start = arg;
10020
10021   /* We call decode_line_full directly here instead of using
10022      parse_breakpoint_sals because we need to specify the start location's
10023      symtab and line as the default symtab and line for the end of the
10024      range.  This makes it possible to have ranges like "foo.c:27, +14",
10025      where +14 means 14 lines from the start location.  */
10026   event_location_up end_location = string_to_event_location (&arg,
10027                                                              current_language);
10028   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10029                     sal_start.symtab, sal_start.line,
10030                     &canonical_end, NULL, NULL);
10031
10032   if (canonical_end.lsals.empty ())
10033     error (_("Could not find location of the end of the range."));
10034
10035   const linespec_sals &lsal_end = canonical_end.lsals[0];
10036   if (canonical_end.lsals.size () > 1
10037       || lsal_end.sals.size () != 1)
10038     error (_("Cannot create a ranged breakpoint with multiple locations."));
10039
10040   const symtab_and_line &sal_end = lsal_end.sals[0];
10041
10042   end = find_breakpoint_range_end (sal_end);
10043   if (sal_start.pc > end)
10044     error (_("Invalid address range, end precedes start."));
10045
10046   length = end - sal_start.pc + 1;
10047   if (length < 0)
10048     /* Length overflowed.  */
10049     error (_("Address range too large."));
10050   else if (length == 1)
10051     {
10052       /* This range is simple enough to be handled by
10053          the `hbreak' command.  */
10054       hbreak_command (&addr_string_start[0], 1);
10055
10056       return;
10057     }
10058
10059   /* Now set up the breakpoint.  */
10060   b = set_raw_breakpoint (get_current_arch (), sal_start,
10061                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10062   set_breakpoint_count (breakpoint_count + 1);
10063   b->number = breakpoint_count;
10064   b->disposition = disp_donttouch;
10065   b->location = std::move (start_location);
10066   b->location_range_end = std::move (end_location);
10067   b->loc->length = length;
10068
10069   mention (b);
10070   observer_notify_breakpoint_created (b);
10071   update_global_location_list (UGLL_MAY_INSERT);
10072 }
10073
10074 /*  Return non-zero if EXP is verified as constant.  Returned zero
10075     means EXP is variable.  Also the constant detection may fail for
10076     some constant expressions and in such case still falsely return
10077     zero.  */
10078
10079 static int
10080 watchpoint_exp_is_const (const struct expression *exp)
10081 {
10082   int i = exp->nelts;
10083
10084   while (i > 0)
10085     {
10086       int oplenp, argsp;
10087
10088       /* We are only interested in the descriptor of each element.  */
10089       operator_length (exp, i, &oplenp, &argsp);
10090       i -= oplenp;
10091
10092       switch (exp->elts[i].opcode)
10093         {
10094         case BINOP_ADD:
10095         case BINOP_SUB:
10096         case BINOP_MUL:
10097         case BINOP_DIV:
10098         case BINOP_REM:
10099         case BINOP_MOD:
10100         case BINOP_LSH:
10101         case BINOP_RSH:
10102         case BINOP_LOGICAL_AND:
10103         case BINOP_LOGICAL_OR:
10104         case BINOP_BITWISE_AND:
10105         case BINOP_BITWISE_IOR:
10106         case BINOP_BITWISE_XOR:
10107         case BINOP_EQUAL:
10108         case BINOP_NOTEQUAL:
10109         case BINOP_LESS:
10110         case BINOP_GTR:
10111         case BINOP_LEQ:
10112         case BINOP_GEQ:
10113         case BINOP_REPEAT:
10114         case BINOP_COMMA:
10115         case BINOP_EXP:
10116         case BINOP_MIN:
10117         case BINOP_MAX:
10118         case BINOP_INTDIV:
10119         case BINOP_CONCAT:
10120         case TERNOP_COND:
10121         case TERNOP_SLICE:
10122
10123         case OP_LONG:
10124         case OP_DOUBLE:
10125         case OP_DECFLOAT:
10126         case OP_LAST:
10127         case OP_COMPLEX:
10128         case OP_STRING:
10129         case OP_ARRAY:
10130         case OP_TYPE:
10131         case OP_TYPEOF:
10132         case OP_DECLTYPE:
10133         case OP_TYPEID:
10134         case OP_NAME:
10135         case OP_OBJC_NSSTRING:
10136
10137         case UNOP_NEG:
10138         case UNOP_LOGICAL_NOT:
10139         case UNOP_COMPLEMENT:
10140         case UNOP_ADDR:
10141         case UNOP_HIGH:
10142         case UNOP_CAST:
10143
10144         case UNOP_CAST_TYPE:
10145         case UNOP_REINTERPRET_CAST:
10146         case UNOP_DYNAMIC_CAST:
10147           /* Unary, binary and ternary operators: We have to check
10148              their operands.  If they are constant, then so is the
10149              result of that operation.  For instance, if A and B are
10150              determined to be constants, then so is "A + B".
10151
10152              UNOP_IND is one exception to the rule above, because the
10153              value of *ADDR is not necessarily a constant, even when
10154              ADDR is.  */
10155           break;
10156
10157         case OP_VAR_VALUE:
10158           /* Check whether the associated symbol is a constant.
10159
10160              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10161              possible that a buggy compiler could mark a variable as
10162              constant even when it is not, and TYPE_CONST would return
10163              true in this case, while SYMBOL_CLASS wouldn't.
10164
10165              We also have to check for function symbols because they
10166              are always constant.  */
10167           {
10168             struct symbol *s = exp->elts[i + 2].symbol;
10169
10170             if (SYMBOL_CLASS (s) != LOC_BLOCK
10171                 && SYMBOL_CLASS (s) != LOC_CONST
10172                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10173               return 0;
10174             break;
10175           }
10176
10177         /* The default action is to return 0 because we are using
10178            the optimistic approach here: If we don't know something,
10179            then it is not a constant.  */
10180         default:
10181           return 0;
10182         }
10183     }
10184
10185   return 1;
10186 }
10187
10188 /* Watchpoint destructor.  */
10189
10190 watchpoint::~watchpoint ()
10191 {
10192   xfree (this->exp_string);
10193   xfree (this->exp_string_reparse);
10194   value_free (this->val);
10195 }
10196
10197 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10198
10199 static void
10200 re_set_watchpoint (struct breakpoint *b)
10201 {
10202   struct watchpoint *w = (struct watchpoint *) b;
10203
10204   /* Watchpoint can be either on expression using entirely global
10205      variables, or it can be on local variables.
10206
10207      Watchpoints of the first kind are never auto-deleted, and even
10208      persist across program restarts.  Since they can use variables
10209      from shared libraries, we need to reparse expression as libraries
10210      are loaded and unloaded.
10211
10212      Watchpoints on local variables can also change meaning as result
10213      of solib event.  For example, if a watchpoint uses both a local
10214      and a global variables in expression, it's a local watchpoint,
10215      but unloading of a shared library will make the expression
10216      invalid.  This is not a very common use case, but we still
10217      re-evaluate expression, to avoid surprises to the user.
10218
10219      Note that for local watchpoints, we re-evaluate it only if
10220      watchpoints frame id is still valid.  If it's not, it means the
10221      watchpoint is out of scope and will be deleted soon.  In fact,
10222      I'm not sure we'll ever be called in this case.
10223
10224      If a local watchpoint's frame id is still valid, then
10225      w->exp_valid_block is likewise valid, and we can safely use it.
10226
10227      Don't do anything about disabled watchpoints, since they will be
10228      reevaluated again when enabled.  */
10229   update_watchpoint (w, 1 /* reparse */);
10230 }
10231
10232 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10233
10234 static int
10235 insert_watchpoint (struct bp_location *bl)
10236 {
10237   struct watchpoint *w = (struct watchpoint *) bl->owner;
10238   int length = w->exact ? 1 : bl->length;
10239
10240   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10241                                    w->cond_exp.get ());
10242 }
10243
10244 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10245
10246 static int
10247 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10248 {
10249   struct watchpoint *w = (struct watchpoint *) bl->owner;
10250   int length = w->exact ? 1 : bl->length;
10251
10252   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10253                                    w->cond_exp.get ());
10254 }
10255
10256 static int
10257 breakpoint_hit_watchpoint (const struct bp_location *bl,
10258                            struct address_space *aspace, CORE_ADDR bp_addr,
10259                            const struct target_waitstatus *ws)
10260 {
10261   struct breakpoint *b = bl->owner;
10262   struct watchpoint *w = (struct watchpoint *) b;
10263
10264   /* Continuable hardware watchpoints are treated as non-existent if the
10265      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10266      some data address).  Otherwise gdb won't stop on a break instruction
10267      in the code (not from a breakpoint) when a hardware watchpoint has
10268      been defined.  Also skip watchpoints which we know did not trigger
10269      (did not match the data address).  */
10270   if (is_hardware_watchpoint (b)
10271       && w->watchpoint_triggered == watch_triggered_no)
10272     return 0;
10273
10274   return 1;
10275 }
10276
10277 static void
10278 check_status_watchpoint (bpstat bs)
10279 {
10280   gdb_assert (is_watchpoint (bs->breakpoint_at));
10281
10282   bpstat_check_watchpoint (bs);
10283 }
10284
10285 /* Implement the "resources_needed" breakpoint_ops method for
10286    hardware watchpoints.  */
10287
10288 static int
10289 resources_needed_watchpoint (const struct bp_location *bl)
10290 {
10291   struct watchpoint *w = (struct watchpoint *) bl->owner;
10292   int length = w->exact? 1 : bl->length;
10293
10294   return target_region_ok_for_hw_watchpoint (bl->address, length);
10295 }
10296
10297 /* Implement the "works_in_software_mode" breakpoint_ops method for
10298    hardware watchpoints.  */
10299
10300 static int
10301 works_in_software_mode_watchpoint (const struct breakpoint *b)
10302 {
10303   /* Read and access watchpoints only work with hardware support.  */
10304   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10305 }
10306
10307 static enum print_stop_action
10308 print_it_watchpoint (bpstat bs)
10309 {
10310   struct breakpoint *b;
10311   enum print_stop_action result;
10312   struct watchpoint *w;
10313   struct ui_out *uiout = current_uiout;
10314
10315   gdb_assert (bs->bp_location_at != NULL);
10316
10317   b = bs->breakpoint_at;
10318   w = (struct watchpoint *) b;
10319
10320   annotate_watchpoint (b->number);
10321   maybe_print_thread_hit_breakpoint (uiout);
10322
10323   string_file stb;
10324
10325   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10326   switch (b->type)
10327     {
10328     case bp_watchpoint:
10329     case bp_hardware_watchpoint:
10330       if (uiout->is_mi_like_p ())
10331         uiout->field_string
10332           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10333       mention (b);
10334       tuple_emitter.emplace (uiout, "value");
10335       uiout->text ("\nOld value = ");
10336       watchpoint_value_print (bs->old_val, &stb);
10337       uiout->field_stream ("old", stb);
10338       uiout->text ("\nNew value = ");
10339       watchpoint_value_print (w->val, &stb);
10340       uiout->field_stream ("new", stb);
10341       uiout->text ("\n");
10342       /* More than one watchpoint may have been triggered.  */
10343       result = PRINT_UNKNOWN;
10344       break;
10345
10346     case bp_read_watchpoint:
10347       if (uiout->is_mi_like_p ())
10348         uiout->field_string
10349           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10350       mention (b);
10351       tuple_emitter.emplace (uiout, "value");
10352       uiout->text ("\nValue = ");
10353       watchpoint_value_print (w->val, &stb);
10354       uiout->field_stream ("value", stb);
10355       uiout->text ("\n");
10356       result = PRINT_UNKNOWN;
10357       break;
10358
10359     case bp_access_watchpoint:
10360       if (bs->old_val != NULL)
10361         {
10362           if (uiout->is_mi_like_p ())
10363             uiout->field_string
10364               ("reason",
10365                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10366           mention (b);
10367           tuple_emitter.emplace (uiout, "value");
10368           uiout->text ("\nOld value = ");
10369           watchpoint_value_print (bs->old_val, &stb);
10370           uiout->field_stream ("old", stb);
10371           uiout->text ("\nNew value = ");
10372         }
10373       else
10374         {
10375           mention (b);
10376           if (uiout->is_mi_like_p ())
10377             uiout->field_string
10378               ("reason",
10379                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10380           tuple_emitter.emplace (uiout, "value");
10381           uiout->text ("\nValue = ");
10382         }
10383       watchpoint_value_print (w->val, &stb);
10384       uiout->field_stream ("new", stb);
10385       uiout->text ("\n");
10386       result = PRINT_UNKNOWN;
10387       break;
10388     default:
10389       result = PRINT_UNKNOWN;
10390     }
10391
10392   return result;
10393 }
10394
10395 /* Implement the "print_mention" breakpoint_ops method for hardware
10396    watchpoints.  */
10397
10398 static void
10399 print_mention_watchpoint (struct breakpoint *b)
10400 {
10401   struct watchpoint *w = (struct watchpoint *) b;
10402   struct ui_out *uiout = current_uiout;
10403   const char *tuple_name;
10404
10405   switch (b->type)
10406     {
10407     case bp_watchpoint:
10408       uiout->text ("Watchpoint ");
10409       tuple_name = "wpt";
10410       break;
10411     case bp_hardware_watchpoint:
10412       uiout->text ("Hardware watchpoint ");
10413       tuple_name = "wpt";
10414       break;
10415     case bp_read_watchpoint:
10416       uiout->text ("Hardware read watchpoint ");
10417       tuple_name = "hw-rwpt";
10418       break;
10419     case bp_access_watchpoint:
10420       uiout->text ("Hardware access (read/write) watchpoint ");
10421       tuple_name = "hw-awpt";
10422       break;
10423     default:
10424       internal_error (__FILE__, __LINE__,
10425                       _("Invalid hardware watchpoint type."));
10426     }
10427
10428   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10429   uiout->field_int ("number", b->number);
10430   uiout->text (": ");
10431   uiout->field_string ("exp", w->exp_string);
10432 }
10433
10434 /* Implement the "print_recreate" breakpoint_ops method for
10435    watchpoints.  */
10436
10437 static void
10438 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10439 {
10440   struct watchpoint *w = (struct watchpoint *) b;
10441
10442   switch (b->type)
10443     {
10444     case bp_watchpoint:
10445     case bp_hardware_watchpoint:
10446       fprintf_unfiltered (fp, "watch");
10447       break;
10448     case bp_read_watchpoint:
10449       fprintf_unfiltered (fp, "rwatch");
10450       break;
10451     case bp_access_watchpoint:
10452       fprintf_unfiltered (fp, "awatch");
10453       break;
10454     default:
10455       internal_error (__FILE__, __LINE__,
10456                       _("Invalid watchpoint type."));
10457     }
10458
10459   fprintf_unfiltered (fp, " %s", w->exp_string);
10460   print_recreate_thread (b, fp);
10461 }
10462
10463 /* Implement the "explains_signal" breakpoint_ops method for
10464    watchpoints.  */
10465
10466 static int
10467 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10468 {
10469   /* A software watchpoint cannot cause a signal other than
10470      GDB_SIGNAL_TRAP.  */
10471   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10472     return 0;
10473
10474   return 1;
10475 }
10476
10477 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10478
10479 static struct breakpoint_ops watchpoint_breakpoint_ops;
10480
10481 /* Implement the "insert" breakpoint_ops method for
10482    masked hardware watchpoints.  */
10483
10484 static int
10485 insert_masked_watchpoint (struct bp_location *bl)
10486 {
10487   struct watchpoint *w = (struct watchpoint *) bl->owner;
10488
10489   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10490                                         bl->watchpoint_type);
10491 }
10492
10493 /* Implement the "remove" breakpoint_ops method for
10494    masked hardware watchpoints.  */
10495
10496 static int
10497 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10498 {
10499   struct watchpoint *w = (struct watchpoint *) bl->owner;
10500
10501   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10502                                         bl->watchpoint_type);
10503 }
10504
10505 /* Implement the "resources_needed" breakpoint_ops method for
10506    masked hardware watchpoints.  */
10507
10508 static int
10509 resources_needed_masked_watchpoint (const struct bp_location *bl)
10510 {
10511   struct watchpoint *w = (struct watchpoint *) bl->owner;
10512
10513   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10514 }
10515
10516 /* Implement the "works_in_software_mode" breakpoint_ops method for
10517    masked hardware watchpoints.  */
10518
10519 static int
10520 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10521 {
10522   return 0;
10523 }
10524
10525 /* Implement the "print_it" breakpoint_ops method for
10526    masked hardware watchpoints.  */
10527
10528 static enum print_stop_action
10529 print_it_masked_watchpoint (bpstat bs)
10530 {
10531   struct breakpoint *b = bs->breakpoint_at;
10532   struct ui_out *uiout = current_uiout;
10533
10534   /* Masked watchpoints have only one location.  */
10535   gdb_assert (b->loc && b->loc->next == NULL);
10536
10537   annotate_watchpoint (b->number);
10538   maybe_print_thread_hit_breakpoint (uiout);
10539
10540   switch (b->type)
10541     {
10542     case bp_hardware_watchpoint:
10543       if (uiout->is_mi_like_p ())
10544         uiout->field_string
10545           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10546       break;
10547
10548     case bp_read_watchpoint:
10549       if (uiout->is_mi_like_p ())
10550         uiout->field_string
10551           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10552       break;
10553
10554     case bp_access_watchpoint:
10555       if (uiout->is_mi_like_p ())
10556         uiout->field_string
10557           ("reason",
10558            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10559       break;
10560     default:
10561       internal_error (__FILE__, __LINE__,
10562                       _("Invalid hardware watchpoint type."));
10563     }
10564
10565   mention (b);
10566   uiout->text (_("\n\
10567 Check the underlying instruction at PC for the memory\n\
10568 address and value which triggered this watchpoint.\n"));
10569   uiout->text ("\n");
10570
10571   /* More than one watchpoint may have been triggered.  */
10572   return PRINT_UNKNOWN;
10573 }
10574
10575 /* Implement the "print_one_detail" breakpoint_ops method for
10576    masked hardware watchpoints.  */
10577
10578 static void
10579 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10580                                     struct ui_out *uiout)
10581 {
10582   struct watchpoint *w = (struct watchpoint *) b;
10583
10584   /* Masked watchpoints have only one location.  */
10585   gdb_assert (b->loc && b->loc->next == NULL);
10586
10587   uiout->text ("\tmask ");
10588   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10589   uiout->text ("\n");
10590 }
10591
10592 /* Implement the "print_mention" breakpoint_ops method for
10593    masked hardware watchpoints.  */
10594
10595 static void
10596 print_mention_masked_watchpoint (struct breakpoint *b)
10597 {
10598   struct watchpoint *w = (struct watchpoint *) b;
10599   struct ui_out *uiout = current_uiout;
10600   const char *tuple_name;
10601
10602   switch (b->type)
10603     {
10604     case bp_hardware_watchpoint:
10605       uiout->text ("Masked hardware watchpoint ");
10606       tuple_name = "wpt";
10607       break;
10608     case bp_read_watchpoint:
10609       uiout->text ("Masked hardware read watchpoint ");
10610       tuple_name = "hw-rwpt";
10611       break;
10612     case bp_access_watchpoint:
10613       uiout->text ("Masked hardware access (read/write) watchpoint ");
10614       tuple_name = "hw-awpt";
10615       break;
10616     default:
10617       internal_error (__FILE__, __LINE__,
10618                       _("Invalid hardware watchpoint type."));
10619     }
10620
10621   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10622   uiout->field_int ("number", b->number);
10623   uiout->text (": ");
10624   uiout->field_string ("exp", w->exp_string);
10625 }
10626
10627 /* Implement the "print_recreate" breakpoint_ops method for
10628    masked hardware watchpoints.  */
10629
10630 static void
10631 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10632 {
10633   struct watchpoint *w = (struct watchpoint *) b;
10634   char tmp[40];
10635
10636   switch (b->type)
10637     {
10638     case bp_hardware_watchpoint:
10639       fprintf_unfiltered (fp, "watch");
10640       break;
10641     case bp_read_watchpoint:
10642       fprintf_unfiltered (fp, "rwatch");
10643       break;
10644     case bp_access_watchpoint:
10645       fprintf_unfiltered (fp, "awatch");
10646       break;
10647     default:
10648       internal_error (__FILE__, __LINE__,
10649                       _("Invalid hardware watchpoint type."));
10650     }
10651
10652   sprintf_vma (tmp, w->hw_wp_mask);
10653   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10654   print_recreate_thread (b, fp);
10655 }
10656
10657 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10658
10659 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10660
10661 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10662
10663 static int
10664 is_masked_watchpoint (const struct breakpoint *b)
10665 {
10666   return b->ops == &masked_watchpoint_breakpoint_ops;
10667 }
10668
10669 /* accessflag:  hw_write:  watch write, 
10670                 hw_read:   watch read, 
10671                 hw_access: watch access (read or write) */
10672 static void
10673 watch_command_1 (const char *arg, int accessflag, int from_tty,
10674                  int just_location, int internal)
10675 {
10676   struct breakpoint *scope_breakpoint = NULL;
10677   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10678   struct value *val, *mark, *result;
10679   int saved_bitpos = 0, saved_bitsize = 0;
10680   const char *exp_start = NULL;
10681   const char *exp_end = NULL;
10682   const char *tok, *end_tok;
10683   int toklen = -1;
10684   const char *cond_start = NULL;
10685   const char *cond_end = NULL;
10686   enum bptype bp_type;
10687   int thread = -1;
10688   int pc = 0;
10689   /* Flag to indicate whether we are going to use masks for
10690      the hardware watchpoint.  */
10691   int use_mask = 0;
10692   CORE_ADDR mask = 0;
10693
10694   /* Make sure that we actually have parameters to parse.  */
10695   if (arg != NULL && arg[0] != '\0')
10696     {
10697       const char *value_start;
10698
10699       exp_end = arg + strlen (arg);
10700
10701       /* Look for "parameter value" pairs at the end
10702          of the arguments string.  */
10703       for (tok = exp_end - 1; tok > arg; tok--)
10704         {
10705           /* Skip whitespace at the end of the argument list.  */
10706           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10707             tok--;
10708
10709           /* Find the beginning of the last token.
10710              This is the value of the parameter.  */
10711           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10712             tok--;
10713           value_start = tok + 1;
10714
10715           /* Skip whitespace.  */
10716           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10717             tok--;
10718
10719           end_tok = tok;
10720
10721           /* Find the beginning of the second to last token.
10722              This is the parameter itself.  */
10723           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10724             tok--;
10725           tok++;
10726           toklen = end_tok - tok + 1;
10727
10728           if (toklen == 6 && startswith (tok, "thread"))
10729             {
10730               struct thread_info *thr;
10731               /* At this point we've found a "thread" token, which means
10732                  the user is trying to set a watchpoint that triggers
10733                  only in a specific thread.  */
10734               const char *endp;
10735
10736               if (thread != -1)
10737                 error(_("You can specify only one thread."));
10738
10739               /* Extract the thread ID from the next token.  */
10740               thr = parse_thread_id (value_start, &endp);
10741
10742               /* Check if the user provided a valid thread ID.  */
10743               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10744                 invalid_thread_id_error (value_start);
10745
10746               thread = thr->global_num;
10747             }
10748           else if (toklen == 4 && startswith (tok, "mask"))
10749             {
10750               /* We've found a "mask" token, which means the user wants to
10751                  create a hardware watchpoint that is going to have the mask
10752                  facility.  */
10753               struct value *mask_value, *mark;
10754
10755               if (use_mask)
10756                 error(_("You can specify only one mask."));
10757
10758               use_mask = just_location = 1;
10759
10760               mark = value_mark ();
10761               mask_value = parse_to_comma_and_eval (&value_start);
10762               mask = value_as_address (mask_value);
10763               value_free_to_mark (mark);
10764             }
10765           else
10766             /* We didn't recognize what we found.  We should stop here.  */
10767             break;
10768
10769           /* Truncate the string and get rid of the "parameter value" pair before
10770              the arguments string is parsed by the parse_exp_1 function.  */
10771           exp_end = tok;
10772         }
10773     }
10774   else
10775     exp_end = arg;
10776
10777   /* Parse the rest of the arguments.  From here on out, everything
10778      is in terms of a newly allocated string instead of the original
10779      ARG.  */
10780   innermost_block = NULL;
10781   std::string expression (arg, exp_end - arg);
10782   exp_start = arg = expression.c_str ();
10783   expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
10784   exp_end = arg;
10785   /* Remove trailing whitespace from the expression before saving it.
10786      This makes the eventual display of the expression string a bit
10787      prettier.  */
10788   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10789     --exp_end;
10790
10791   /* Checking if the expression is not constant.  */
10792   if (watchpoint_exp_is_const (exp.get ()))
10793     {
10794       int len;
10795
10796       len = exp_end - exp_start;
10797       while (len > 0 && isspace (exp_start[len - 1]))
10798         len--;
10799       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10800     }
10801
10802   exp_valid_block = innermost_block;
10803   mark = value_mark ();
10804   fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
10805
10806   if (val != NULL && just_location)
10807     {
10808       saved_bitpos = value_bitpos (val);
10809       saved_bitsize = value_bitsize (val);
10810     }
10811
10812   if (just_location)
10813     {
10814       int ret;
10815
10816       exp_valid_block = NULL;
10817       val = value_addr (result);
10818       release_value (val);
10819       value_free_to_mark (mark);
10820
10821       if (use_mask)
10822         {
10823           ret = target_masked_watch_num_registers (value_as_address (val),
10824                                                    mask);
10825           if (ret == -1)
10826             error (_("This target does not support masked watchpoints."));
10827           else if (ret == -2)
10828             error (_("Invalid mask or memory region."));
10829         }
10830     }
10831   else if (val != NULL)
10832     release_value (val);
10833
10834   tok = skip_spaces (arg);
10835   end_tok = skip_to_space (tok);
10836
10837   toklen = end_tok - tok;
10838   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10839     {
10840       innermost_block = NULL;
10841       tok = cond_start = end_tok + 1;
10842       parse_exp_1 (&tok, 0, 0, 0);
10843
10844       /* The watchpoint expression may not be local, but the condition
10845          may still be.  E.g.: `watch global if local > 0'.  */
10846       cond_exp_valid_block = innermost_block;
10847
10848       cond_end = tok;
10849     }
10850   if (*tok)
10851     error (_("Junk at end of command."));
10852
10853   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10854
10855   /* Save this because create_internal_breakpoint below invalidates
10856      'wp_frame'.  */
10857   frame_id watchpoint_frame = get_frame_id (wp_frame);
10858
10859   /* If the expression is "local", then set up a "watchpoint scope"
10860      breakpoint at the point where we've left the scope of the watchpoint
10861      expression.  Create the scope breakpoint before the watchpoint, so
10862      that we will encounter it first in bpstat_stop_status.  */
10863   if (exp_valid_block != NULL && wp_frame != NULL)
10864     {
10865       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10866
10867       if (frame_id_p (caller_frame_id))
10868         {
10869           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10870           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10871
10872           scope_breakpoint
10873             = create_internal_breakpoint (caller_arch, caller_pc,
10874                                           bp_watchpoint_scope,
10875                                           &momentary_breakpoint_ops);
10876
10877           /* create_internal_breakpoint could invalidate WP_FRAME.  */
10878           wp_frame = NULL;
10879
10880           scope_breakpoint->enable_state = bp_enabled;
10881
10882           /* Automatically delete the breakpoint when it hits.  */
10883           scope_breakpoint->disposition = disp_del;
10884
10885           /* Only break in the proper frame (help with recursion).  */
10886           scope_breakpoint->frame_id = caller_frame_id;
10887
10888           /* Set the address at which we will stop.  */
10889           scope_breakpoint->loc->gdbarch = caller_arch;
10890           scope_breakpoint->loc->requested_address = caller_pc;
10891           scope_breakpoint->loc->address
10892             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10893                                          scope_breakpoint->loc->requested_address,
10894                                          scope_breakpoint->type);
10895         }
10896     }
10897
10898   /* Now set up the breakpoint.  We create all watchpoints as hardware
10899      watchpoints here even if hardware watchpoints are turned off, a call
10900      to update_watchpoint later in this function will cause the type to
10901      drop back to bp_watchpoint (software watchpoint) if required.  */
10902
10903   if (accessflag == hw_read)
10904     bp_type = bp_read_watchpoint;
10905   else if (accessflag == hw_access)
10906     bp_type = bp_access_watchpoint;
10907   else
10908     bp_type = bp_hardware_watchpoint;
10909
10910   std::unique_ptr<watchpoint> w (new watchpoint ());
10911
10912   if (use_mask)
10913     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10914                                           &masked_watchpoint_breakpoint_ops);
10915   else
10916     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10917                                           &watchpoint_breakpoint_ops);
10918   w->thread = thread;
10919   w->disposition = disp_donttouch;
10920   w->pspace = current_program_space;
10921   w->exp = std::move (exp);
10922   w->exp_valid_block = exp_valid_block;
10923   w->cond_exp_valid_block = cond_exp_valid_block;
10924   if (just_location)
10925     {
10926       struct type *t = value_type (val);
10927       CORE_ADDR addr = value_as_address (val);
10928
10929       w->exp_string_reparse
10930         = current_language->la_watch_location_expression (t, addr).release ();
10931
10932       w->exp_string = xstrprintf ("-location %.*s",
10933                                   (int) (exp_end - exp_start), exp_start);
10934     }
10935   else
10936     w->exp_string = savestring (exp_start, exp_end - exp_start);
10937
10938   if (use_mask)
10939     {
10940       w->hw_wp_mask = mask;
10941     }
10942   else
10943     {
10944       w->val = val;
10945       w->val_bitpos = saved_bitpos;
10946       w->val_bitsize = saved_bitsize;
10947       w->val_valid = 1;
10948     }
10949
10950   if (cond_start)
10951     w->cond_string = savestring (cond_start, cond_end - cond_start);
10952   else
10953     w->cond_string = 0;
10954
10955   if (frame_id_p (watchpoint_frame))
10956     {
10957       w->watchpoint_frame = watchpoint_frame;
10958       w->watchpoint_thread = inferior_ptid;
10959     }
10960   else
10961     {
10962       w->watchpoint_frame = null_frame_id;
10963       w->watchpoint_thread = null_ptid;
10964     }
10965
10966   if (scope_breakpoint != NULL)
10967     {
10968       /* The scope breakpoint is related to the watchpoint.  We will
10969          need to act on them together.  */
10970       w->related_breakpoint = scope_breakpoint;
10971       scope_breakpoint->related_breakpoint = w.get ();
10972     }
10973
10974   if (!just_location)
10975     value_free_to_mark (mark);
10976
10977   /* Finally update the new watchpoint.  This creates the locations
10978      that should be inserted.  */
10979   update_watchpoint (w.get (), 1);
10980
10981   install_breakpoint (internal, std::move (w), 1);
10982 }
10983
10984 /* Return count of debug registers needed to watch the given expression.
10985    If the watchpoint cannot be handled in hardware return zero.  */
10986
10987 static int
10988 can_use_hardware_watchpoint (struct value *v)
10989 {
10990   int found_memory_cnt = 0;
10991   struct value *head = v;
10992
10993   /* Did the user specifically forbid us to use hardware watchpoints? */
10994   if (!can_use_hw_watchpoints)
10995     return 0;
10996
10997   /* Make sure that the value of the expression depends only upon
10998      memory contents, and values computed from them within GDB.  If we
10999      find any register references or function calls, we can't use a
11000      hardware watchpoint.
11001
11002      The idea here is that evaluating an expression generates a series
11003      of values, one holding the value of every subexpression.  (The
11004      expression a*b+c has five subexpressions: a, b, a*b, c, and
11005      a*b+c.)  GDB's values hold almost enough information to establish
11006      the criteria given above --- they identify memory lvalues,
11007      register lvalues, computed values, etcetera.  So we can evaluate
11008      the expression, and then scan the chain of values that leaves
11009      behind to decide whether we can detect any possible change to the
11010      expression's final value using only hardware watchpoints.
11011
11012      However, I don't think that the values returned by inferior
11013      function calls are special in any way.  So this function may not
11014      notice that an expression involving an inferior function call
11015      can't be watched with hardware watchpoints.  FIXME.  */
11016   for (; v; v = value_next (v))
11017     {
11018       if (VALUE_LVAL (v) == lval_memory)
11019         {
11020           if (v != head && value_lazy (v))
11021             /* A lazy memory lvalue in the chain is one that GDB never
11022                needed to fetch; we either just used its address (e.g.,
11023                `a' in `a.b') or we never needed it at all (e.g., `a'
11024                in `a,b').  This doesn't apply to HEAD; if that is
11025                lazy then it was not readable, but watch it anyway.  */
11026             ;
11027           else
11028             {
11029               /* Ahh, memory we actually used!  Check if we can cover
11030                  it with hardware watchpoints.  */
11031               struct type *vtype = check_typedef (value_type (v));
11032
11033               /* We only watch structs and arrays if user asked for it
11034                  explicitly, never if they just happen to appear in a
11035                  middle of some value chain.  */
11036               if (v == head
11037                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11038                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11039                 {
11040                   CORE_ADDR vaddr = value_address (v);
11041                   int len;
11042                   int num_regs;
11043
11044                   len = (target_exact_watchpoints
11045                          && is_scalar_type_recursive (vtype))?
11046                     1 : TYPE_LENGTH (value_type (v));
11047
11048                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11049                   if (!num_regs)
11050                     return 0;
11051                   else
11052                     found_memory_cnt += num_regs;
11053                 }
11054             }
11055         }
11056       else if (VALUE_LVAL (v) != not_lval
11057                && deprecated_value_modifiable (v) == 0)
11058         return 0;       /* These are values from the history (e.g., $1).  */
11059       else if (VALUE_LVAL (v) == lval_register)
11060         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11061     }
11062
11063   /* The expression itself looks suitable for using a hardware
11064      watchpoint, but give the target machine a chance to reject it.  */
11065   return found_memory_cnt;
11066 }
11067
11068 void
11069 watch_command_wrapper (const char *arg, int from_tty, int internal)
11070 {
11071   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11072 }
11073
11074 /* A helper function that looks for the "-location" argument and then
11075    calls watch_command_1.  */
11076
11077 static void
11078 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11079 {
11080   int just_location = 0;
11081
11082   if (arg
11083       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11084           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11085     {
11086       arg = skip_spaces (arg);
11087       just_location = 1;
11088     }
11089
11090   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11091 }
11092
11093 static void
11094 watch_command (char *arg, int from_tty)
11095 {
11096   watch_maybe_just_location (arg, hw_write, from_tty);
11097 }
11098
11099 void
11100 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
11101 {
11102   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11103 }
11104
11105 static void
11106 rwatch_command (char *arg, int from_tty)
11107 {
11108   watch_maybe_just_location (arg, hw_read, from_tty);
11109 }
11110
11111 void
11112 awatch_command_wrapper (const char *arg, int from_tty, int internal)
11113 {
11114   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11115 }
11116
11117 static void
11118 awatch_command (char *arg, int from_tty)
11119 {
11120   watch_maybe_just_location (arg, hw_access, from_tty);
11121 }
11122 \f
11123
11124 /* Data for the FSM that manages the until(location)/advance commands
11125    in infcmd.c.  Here because it uses the mechanisms of
11126    breakpoints.  */
11127
11128 struct until_break_fsm
11129 {
11130   /* The base class.  */
11131   struct thread_fsm thread_fsm;
11132
11133   /* The thread that as current when the command was executed.  */
11134   int thread;
11135
11136   /* The breakpoint set at the destination location.  */
11137   struct breakpoint *location_breakpoint;
11138
11139   /* Breakpoint set at the return address in the caller frame.  May be
11140      NULL.  */
11141   struct breakpoint *caller_breakpoint;
11142 };
11143
11144 static void until_break_fsm_clean_up (struct thread_fsm *self,
11145                                       struct thread_info *thread);
11146 static int until_break_fsm_should_stop (struct thread_fsm *self,
11147                                         struct thread_info *thread);
11148 static enum async_reply_reason
11149   until_break_fsm_async_reply_reason (struct thread_fsm *self);
11150
11151 /* until_break_fsm's vtable.  */
11152
11153 static struct thread_fsm_ops until_break_fsm_ops =
11154 {
11155   NULL, /* dtor */
11156   until_break_fsm_clean_up,
11157   until_break_fsm_should_stop,
11158   NULL, /* return_value */
11159   until_break_fsm_async_reply_reason,
11160 };
11161
11162 /* Allocate a new until_break_command_fsm.  */
11163
11164 static struct until_break_fsm *
11165 new_until_break_fsm (struct interp *cmd_interp, int thread,
11166                      struct breakpoint *location_breakpoint,
11167                      struct breakpoint *caller_breakpoint)
11168 {
11169   struct until_break_fsm *sm;
11170
11171   sm = XCNEW (struct until_break_fsm);
11172   thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11173
11174   sm->thread = thread;
11175   sm->location_breakpoint = location_breakpoint;
11176   sm->caller_breakpoint = caller_breakpoint;
11177
11178   return sm;
11179 }
11180
11181 /* Implementation of the 'should_stop' FSM method for the
11182    until(location)/advance commands.  */
11183
11184 static int
11185 until_break_fsm_should_stop (struct thread_fsm *self,
11186                              struct thread_info *tp)
11187 {
11188   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11189
11190   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11191                               sm->location_breakpoint) != NULL
11192       || (sm->caller_breakpoint != NULL
11193           && bpstat_find_breakpoint (tp->control.stop_bpstat,
11194                                      sm->caller_breakpoint) != NULL))
11195     thread_fsm_set_finished (self);
11196
11197   return 1;
11198 }
11199
11200 /* Implementation of the 'clean_up' FSM method for the
11201    until(location)/advance commands.  */
11202
11203 static void
11204 until_break_fsm_clean_up (struct thread_fsm *self,
11205                           struct thread_info *thread)
11206 {
11207   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11208
11209   /* Clean up our temporary breakpoints.  */
11210   if (sm->location_breakpoint != NULL)
11211     {
11212       delete_breakpoint (sm->location_breakpoint);
11213       sm->location_breakpoint = NULL;
11214     }
11215   if (sm->caller_breakpoint != NULL)
11216     {
11217       delete_breakpoint (sm->caller_breakpoint);
11218       sm->caller_breakpoint = NULL;
11219     }
11220   delete_longjmp_breakpoint (sm->thread);
11221 }
11222
11223 /* Implementation of the 'async_reply_reason' FSM method for the
11224    until(location)/advance commands.  */
11225
11226 static enum async_reply_reason
11227 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11228 {
11229   return EXEC_ASYNC_LOCATION_REACHED;
11230 }
11231
11232 void
11233 until_break_command (const char *arg, int from_tty, int anywhere)
11234 {
11235   struct frame_info *frame;
11236   struct gdbarch *frame_gdbarch;
11237   struct frame_id stack_frame_id;
11238   struct frame_id caller_frame_id;
11239   struct breakpoint *location_breakpoint;
11240   struct breakpoint *caller_breakpoint = NULL;
11241   struct cleanup *old_chain;
11242   int thread;
11243   struct thread_info *tp;
11244   struct until_break_fsm *sm;
11245
11246   clear_proceed_status (0);
11247
11248   /* Set a breakpoint where the user wants it and at return from
11249      this function.  */
11250
11251   event_location_up location = string_to_event_location (&arg, current_language);
11252
11253   std::vector<symtab_and_line> sals
11254     = (last_displayed_sal_is_valid ()
11255        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11256                         get_last_displayed_symtab (),
11257                         get_last_displayed_line ())
11258        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11259                         NULL, (struct symtab *) NULL, 0));
11260
11261   if (sals.size () != 1)
11262     error (_("Couldn't get information on specified line."));
11263
11264   symtab_and_line &sal = sals[0];
11265
11266   if (*arg)
11267     error (_("Junk at end of arguments."));
11268
11269   resolve_sal_pc (&sal);
11270
11271   tp = inferior_thread ();
11272   thread = tp->global_num;
11273
11274   old_chain = make_cleanup (null_cleanup, NULL);
11275
11276   /* Note linespec handling above invalidates the frame chain.
11277      Installing a breakpoint also invalidates the frame chain (as it
11278      may need to switch threads), so do any frame handling before
11279      that.  */
11280
11281   frame = get_selected_frame (NULL);
11282   frame_gdbarch = get_frame_arch (frame);
11283   stack_frame_id = get_stack_frame_id (frame);
11284   caller_frame_id = frame_unwind_caller_id (frame);
11285
11286   /* Keep within the current frame, or in frames called by the current
11287      one.  */
11288
11289   if (frame_id_p (caller_frame_id))
11290     {
11291       struct symtab_and_line sal2;
11292       struct gdbarch *caller_gdbarch;
11293
11294       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11295       sal2.pc = frame_unwind_caller_pc (frame);
11296       caller_gdbarch = frame_unwind_caller_arch (frame);
11297       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11298                                                     sal2,
11299                                                     caller_frame_id,
11300                                                     bp_until);
11301       make_cleanup_delete_breakpoint (caller_breakpoint);
11302
11303       set_longjmp_breakpoint (tp, caller_frame_id);
11304       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11305     }
11306
11307   /* set_momentary_breakpoint could invalidate FRAME.  */
11308   frame = NULL;
11309
11310   if (anywhere)
11311     /* If the user told us to continue until a specified location,
11312        we don't specify a frame at which we need to stop.  */
11313     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11314                                                     null_frame_id, bp_until);
11315   else
11316     /* Otherwise, specify the selected frame, because we want to stop
11317        only at the very same frame.  */
11318     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11319                                                     stack_frame_id, bp_until);
11320   make_cleanup_delete_breakpoint (location_breakpoint);
11321
11322   sm = new_until_break_fsm (command_interp (), tp->global_num,
11323                             location_breakpoint, caller_breakpoint);
11324   tp->thread_fsm = &sm->thread_fsm;
11325
11326   discard_cleanups (old_chain);
11327
11328   proceed (-1, GDB_SIGNAL_DEFAULT);
11329 }
11330
11331 /* This function attempts to parse an optional "if <cond>" clause
11332    from the arg string.  If one is not found, it returns NULL.
11333
11334    Else, it returns a pointer to the condition string.  (It does not
11335    attempt to evaluate the string against a particular block.)  And,
11336    it updates arg to point to the first character following the parsed
11337    if clause in the arg string.  */
11338
11339 const char *
11340 ep_parse_optional_if_clause (const char **arg)
11341 {
11342   const char *cond_string;
11343
11344   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11345     return NULL;
11346
11347   /* Skip the "if" keyword.  */
11348   (*arg) += 2;
11349
11350   /* Skip any extra leading whitespace, and record the start of the
11351      condition string.  */
11352   *arg = skip_spaces (*arg);
11353   cond_string = *arg;
11354
11355   /* Assume that the condition occupies the remainder of the arg
11356      string.  */
11357   (*arg) += strlen (cond_string);
11358
11359   return cond_string;
11360 }
11361
11362 /* Commands to deal with catching events, such as signals, exceptions,
11363    process start/exit, etc.  */
11364
11365 typedef enum
11366 {
11367   catch_fork_temporary, catch_vfork_temporary,
11368   catch_fork_permanent, catch_vfork_permanent
11369 }
11370 catch_fork_kind;
11371
11372 static void
11373 catch_fork_command_1 (char *arg_entry, int from_tty,
11374                       struct cmd_list_element *command)
11375 {
11376   const char *arg = arg_entry;
11377   struct gdbarch *gdbarch = get_current_arch ();
11378   const char *cond_string = NULL;
11379   catch_fork_kind fork_kind;
11380   int tempflag;
11381
11382   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11383   tempflag = (fork_kind == catch_fork_temporary
11384               || fork_kind == catch_vfork_temporary);
11385
11386   if (!arg)
11387     arg = "";
11388   arg = skip_spaces (arg);
11389
11390   /* The allowed syntax is:
11391      catch [v]fork
11392      catch [v]fork if <cond>
11393
11394      First, check if there's an if clause.  */
11395   cond_string = ep_parse_optional_if_clause (&arg);
11396
11397   if ((*arg != '\0') && !isspace (*arg))
11398     error (_("Junk at end of arguments."));
11399
11400   /* If this target supports it, create a fork or vfork catchpoint
11401      and enable reporting of such events.  */
11402   switch (fork_kind)
11403     {
11404     case catch_fork_temporary:
11405     case catch_fork_permanent:
11406       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11407                                           &catch_fork_breakpoint_ops);
11408       break;
11409     case catch_vfork_temporary:
11410     case catch_vfork_permanent:
11411       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11412                                           &catch_vfork_breakpoint_ops);
11413       break;
11414     default:
11415       error (_("unsupported or unknown fork kind; cannot catch it"));
11416       break;
11417     }
11418 }
11419
11420 static void
11421 catch_exec_command_1 (char *arg_entry, int from_tty,
11422                       struct cmd_list_element *command)
11423 {
11424   const char *arg = arg_entry;
11425   struct gdbarch *gdbarch = get_current_arch ();
11426   int tempflag;
11427   const char *cond_string = NULL;
11428
11429   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11430
11431   if (!arg)
11432     arg = "";
11433   arg = skip_spaces (arg);
11434
11435   /* The allowed syntax is:
11436      catch exec
11437      catch exec if <cond>
11438
11439      First, check if there's an if clause.  */
11440   cond_string = ep_parse_optional_if_clause (&arg);
11441
11442   if ((*arg != '\0') && !isspace (*arg))
11443     error (_("Junk at end of arguments."));
11444
11445   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11446   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11447                    &catch_exec_breakpoint_ops);
11448   c->exec_pathname = NULL;
11449
11450   install_breakpoint (0, std::move (c), 1);
11451 }
11452
11453 void
11454 init_ada_exception_breakpoint (struct breakpoint *b,
11455                                struct gdbarch *gdbarch,
11456                                struct symtab_and_line sal,
11457                                const char *addr_string,
11458                                const struct breakpoint_ops *ops,
11459                                int tempflag,
11460                                int enabled,
11461                                int from_tty)
11462 {
11463   if (from_tty)
11464     {
11465       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11466       if (!loc_gdbarch)
11467         loc_gdbarch = gdbarch;
11468
11469       describe_other_breakpoints (loc_gdbarch,
11470                                   sal.pspace, sal.pc, sal.section, -1);
11471       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11472          version for exception catchpoints, because two catchpoints
11473          used for different exception names will use the same address.
11474          In this case, a "breakpoint ... also set at..." warning is
11475          unproductive.  Besides, the warning phrasing is also a bit
11476          inappropriate, we should use the word catchpoint, and tell
11477          the user what type of catchpoint it is.  The above is good
11478          enough for now, though.  */
11479     }
11480
11481   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11482
11483   b->enable_state = enabled ? bp_enabled : bp_disabled;
11484   b->disposition = tempflag ? disp_del : disp_donttouch;
11485   b->location = string_to_event_location (&addr_string,
11486                                           language_def (language_ada));
11487   b->language = language_ada;
11488 }
11489
11490 static void
11491 catch_command (const char *arg, int from_tty)
11492 {
11493   error (_("Catch requires an event name."));
11494 }
11495 \f
11496
11497 static void
11498 tcatch_command (const char *arg, int from_tty)
11499 {
11500   error (_("Catch requires an event name."));
11501 }
11502
11503 /* Compare two breakpoints and return a strcmp-like result.  */
11504
11505 static int
11506 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11507 {
11508   uintptr_t ua = (uintptr_t) a;
11509   uintptr_t ub = (uintptr_t) b;
11510
11511   if (a->number < b->number)
11512     return -1;
11513   else if (a->number > b->number)
11514     return 1;
11515
11516   /* Now sort by address, in case we see, e..g, two breakpoints with
11517      the number 0.  */
11518   if (ua < ub)
11519     return -1;
11520   return ua > ub ? 1 : 0;
11521 }
11522
11523 /* Delete breakpoints by address or line.  */
11524
11525 static void
11526 clear_command (char *arg, int from_tty)
11527 {
11528   struct breakpoint *b;
11529   int default_match;
11530   int i;
11531
11532   std::vector<symtab_and_line> decoded_sals;
11533   symtab_and_line last_sal;
11534   gdb::array_view<symtab_and_line> sals;
11535   if (arg)
11536     {
11537       decoded_sals
11538         = decode_line_with_current_source (arg,
11539                                            (DECODE_LINE_FUNFIRSTLINE
11540                                             | DECODE_LINE_LIST_MODE));
11541       default_match = 0;
11542       sals = decoded_sals;
11543     }
11544   else
11545     {
11546       /* Set sal's line, symtab, pc, and pspace to the values
11547          corresponding to the last call to print_frame_info.  If the
11548          codepoint is not valid, this will set all the fields to 0.  */
11549       last_sal = get_last_displayed_sal ();
11550       if (last_sal.symtab == 0)
11551         error (_("No source file specified."));
11552
11553       default_match = 1;
11554       sals = last_sal;
11555     }
11556
11557   /* We don't call resolve_sal_pc here.  That's not as bad as it
11558      seems, because all existing breakpoints typically have both
11559      file/line and pc set.  So, if clear is given file/line, we can
11560      match this to existing breakpoint without obtaining pc at all.
11561
11562      We only support clearing given the address explicitly 
11563      present in breakpoint table.  Say, we've set breakpoint 
11564      at file:line.  There were several PC values for that file:line,
11565      due to optimization, all in one block.
11566
11567      We've picked one PC value.  If "clear" is issued with another
11568      PC corresponding to the same file:line, the breakpoint won't
11569      be cleared.  We probably can still clear the breakpoint, but 
11570      since the other PC value is never presented to user, user
11571      can only find it by guessing, and it does not seem important
11572      to support that.  */
11573
11574   /* For each line spec given, delete bps which correspond to it.  Do
11575      it in two passes, solely to preserve the current behavior that
11576      from_tty is forced true if we delete more than one
11577      breakpoint.  */
11578
11579   std::vector<struct breakpoint *> found;
11580   for (const auto &sal : sals)
11581     {
11582       const char *sal_fullname;
11583
11584       /* If exact pc given, clear bpts at that pc.
11585          If line given (pc == 0), clear all bpts on specified line.
11586          If defaulting, clear all bpts on default line
11587          or at default pc.
11588
11589          defaulting    sal.pc != 0    tests to do
11590
11591          0              1             pc
11592          1              1             pc _and_ line
11593          0              0             line
11594          1              0             <can't happen> */
11595
11596       sal_fullname = (sal.symtab == NULL
11597                       ? NULL : symtab_to_fullname (sal.symtab));
11598
11599       /* Find all matching breakpoints and add them to 'found'.  */
11600       ALL_BREAKPOINTS (b)
11601         {
11602           int match = 0;
11603           /* Are we going to delete b?  */
11604           if (b->type != bp_none && !is_watchpoint (b))
11605             {
11606               struct bp_location *loc = b->loc;
11607               for (; loc; loc = loc->next)
11608                 {
11609                   /* If the user specified file:line, don't allow a PC
11610                      match.  This matches historical gdb behavior.  */
11611                   int pc_match = (!sal.explicit_line
11612                                   && sal.pc
11613                                   && (loc->pspace == sal.pspace)
11614                                   && (loc->address == sal.pc)
11615                                   && (!section_is_overlay (loc->section)
11616                                       || loc->section == sal.section));
11617                   int line_match = 0;
11618
11619                   if ((default_match || sal.explicit_line)
11620                       && loc->symtab != NULL
11621                       && sal_fullname != NULL
11622                       && sal.pspace == loc->pspace
11623                       && loc->line_number == sal.line
11624                       && filename_cmp (symtab_to_fullname (loc->symtab),
11625                                        sal_fullname) == 0)
11626                     line_match = 1;
11627
11628                   if (pc_match || line_match)
11629                     {
11630                       match = 1;
11631                       break;
11632                     }
11633                 }
11634             }
11635
11636           if (match)
11637             found.push_back (b);
11638         }
11639     }
11640
11641   /* Now go thru the 'found' chain and delete them.  */
11642   if (found.empty ())
11643     {
11644       if (arg)
11645         error (_("No breakpoint at %s."), arg);
11646       else
11647         error (_("No breakpoint at this line."));
11648     }
11649
11650   /* Remove duplicates from the vec.  */
11651   std::sort (found.begin (), found.end (),
11652              [] (const breakpoint *a, const breakpoint *b)
11653              {
11654                return compare_breakpoints (a, b) < 0;
11655              });
11656   found.erase (std::unique (found.begin (), found.end (),
11657                             [] (const breakpoint *a, const breakpoint *b)
11658                             {
11659                               return compare_breakpoints (a, b) == 0;
11660                             }),
11661                found.end ());
11662
11663   if (found.size () > 1)
11664     from_tty = 1;       /* Always report if deleted more than one.  */
11665   if (from_tty)
11666     {
11667       if (found.size () == 1)
11668         printf_unfiltered (_("Deleted breakpoint "));
11669       else
11670         printf_unfiltered (_("Deleted breakpoints "));
11671     }
11672
11673   for (breakpoint *iter : found)
11674     {
11675       if (from_tty)
11676         printf_unfiltered ("%d ", iter->number);
11677       delete_breakpoint (iter);
11678     }
11679   if (from_tty)
11680     putchar_unfiltered ('\n');
11681 }
11682 \f
11683 /* Delete breakpoint in BS if they are `delete' breakpoints and
11684    all breakpoints that are marked for deletion, whether hit or not.
11685    This is called after any breakpoint is hit, or after errors.  */
11686
11687 void
11688 breakpoint_auto_delete (bpstat bs)
11689 {
11690   struct breakpoint *b, *b_tmp;
11691
11692   for (; bs; bs = bs->next)
11693     if (bs->breakpoint_at
11694         && bs->breakpoint_at->disposition == disp_del
11695         && bs->stop)
11696       delete_breakpoint (bs->breakpoint_at);
11697
11698   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11699   {
11700     if (b->disposition == disp_del_at_next_stop)
11701       delete_breakpoint (b);
11702   }
11703 }
11704
11705 /* A comparison function for bp_location AP and BP being interfaced to
11706    qsort.  Sort elements primarily by their ADDRESS (no matter what
11707    does breakpoint_address_is_meaningful say for its OWNER),
11708    secondarily by ordering first permanent elements and
11709    terciarily just ensuring the array is sorted stable way despite
11710    qsort being an unstable algorithm.  */
11711
11712 static int
11713 bp_locations_compare (const void *ap, const void *bp)
11714 {
11715   const struct bp_location *a = *(const struct bp_location **) ap;
11716   const struct bp_location *b = *(const struct bp_location **) bp;
11717
11718   if (a->address != b->address)
11719     return (a->address > b->address) - (a->address < b->address);
11720
11721   /* Sort locations at the same address by their pspace number, keeping
11722      locations of the same inferior (in a multi-inferior environment)
11723      grouped.  */
11724
11725   if (a->pspace->num != b->pspace->num)
11726     return ((a->pspace->num > b->pspace->num)
11727             - (a->pspace->num < b->pspace->num));
11728
11729   /* Sort permanent breakpoints first.  */
11730   if (a->permanent != b->permanent)
11731     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11732
11733   /* Make the internal GDB representation stable across GDB runs
11734      where A and B memory inside GDB can differ.  Breakpoint locations of
11735      the same type at the same address can be sorted in arbitrary order.  */
11736
11737   if (a->owner->number != b->owner->number)
11738     return ((a->owner->number > b->owner->number)
11739             - (a->owner->number < b->owner->number));
11740
11741   return (a > b) - (a < b);
11742 }
11743
11744 /* Set bp_locations_placed_address_before_address_max and
11745    bp_locations_shadow_len_after_address_max according to the current
11746    content of the bp_locations array.  */
11747
11748 static void
11749 bp_locations_target_extensions_update (void)
11750 {
11751   struct bp_location *bl, **blp_tmp;
11752
11753   bp_locations_placed_address_before_address_max = 0;
11754   bp_locations_shadow_len_after_address_max = 0;
11755
11756   ALL_BP_LOCATIONS (bl, blp_tmp)
11757     {
11758       CORE_ADDR start, end, addr;
11759
11760       if (!bp_location_has_shadow (bl))
11761         continue;
11762
11763       start = bl->target_info.placed_address;
11764       end = start + bl->target_info.shadow_len;
11765
11766       gdb_assert (bl->address >= start);
11767       addr = bl->address - start;
11768       if (addr > bp_locations_placed_address_before_address_max)
11769         bp_locations_placed_address_before_address_max = addr;
11770
11771       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11772
11773       gdb_assert (bl->address < end);
11774       addr = end - bl->address;
11775       if (addr > bp_locations_shadow_len_after_address_max)
11776         bp_locations_shadow_len_after_address_max = addr;
11777     }
11778 }
11779
11780 /* Download tracepoint locations if they haven't been.  */
11781
11782 static void
11783 download_tracepoint_locations (void)
11784 {
11785   struct breakpoint *b;
11786   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11787
11788   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11789
11790   ALL_TRACEPOINTS (b)
11791     {
11792       struct bp_location *bl;
11793       struct tracepoint *t;
11794       int bp_location_downloaded = 0;
11795
11796       if ((b->type == bp_fast_tracepoint
11797            ? !may_insert_fast_tracepoints
11798            : !may_insert_tracepoints))
11799         continue;
11800
11801       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11802         {
11803           if (target_can_download_tracepoint ())
11804             can_download_tracepoint = TRIBOOL_TRUE;
11805           else
11806             can_download_tracepoint = TRIBOOL_FALSE;
11807         }
11808
11809       if (can_download_tracepoint == TRIBOOL_FALSE)
11810         break;
11811
11812       for (bl = b->loc; bl; bl = bl->next)
11813         {
11814           /* In tracepoint, locations are _never_ duplicated, so
11815              should_be_inserted is equivalent to
11816              unduplicated_should_be_inserted.  */
11817           if (!should_be_inserted (bl) || bl->inserted)
11818             continue;
11819
11820           switch_to_program_space_and_thread (bl->pspace);
11821
11822           target_download_tracepoint (bl);
11823
11824           bl->inserted = 1;
11825           bp_location_downloaded = 1;
11826         }
11827       t = (struct tracepoint *) b;
11828       t->number_on_target = b->number;
11829       if (bp_location_downloaded)
11830         observer_notify_breakpoint_modified (b);
11831     }
11832 }
11833
11834 /* Swap the insertion/duplication state between two locations.  */
11835
11836 static void
11837 swap_insertion (struct bp_location *left, struct bp_location *right)
11838 {
11839   const int left_inserted = left->inserted;
11840   const int left_duplicate = left->duplicate;
11841   const int left_needs_update = left->needs_update;
11842   const struct bp_target_info left_target_info = left->target_info;
11843
11844   /* Locations of tracepoints can never be duplicated.  */
11845   if (is_tracepoint (left->owner))
11846     gdb_assert (!left->duplicate);
11847   if (is_tracepoint (right->owner))
11848     gdb_assert (!right->duplicate);
11849
11850   left->inserted = right->inserted;
11851   left->duplicate = right->duplicate;
11852   left->needs_update = right->needs_update;
11853   left->target_info = right->target_info;
11854   right->inserted = left_inserted;
11855   right->duplicate = left_duplicate;
11856   right->needs_update = left_needs_update;
11857   right->target_info = left_target_info;
11858 }
11859
11860 /* Force the re-insertion of the locations at ADDRESS.  This is called
11861    once a new/deleted/modified duplicate location is found and we are evaluating
11862    conditions on the target's side.  Such conditions need to be updated on
11863    the target.  */
11864
11865 static void
11866 force_breakpoint_reinsertion (struct bp_location *bl)
11867 {
11868   struct bp_location **locp = NULL, **loc2p;
11869   struct bp_location *loc;
11870   CORE_ADDR address = 0;
11871   int pspace_num;
11872
11873   address = bl->address;
11874   pspace_num = bl->pspace->num;
11875
11876   /* This is only meaningful if the target is
11877      evaluating conditions and if the user has
11878      opted for condition evaluation on the target's
11879      side.  */
11880   if (gdb_evaluates_breakpoint_condition_p ()
11881       || !target_supports_evaluation_of_breakpoint_conditions ())
11882     return;
11883
11884   /* Flag all breakpoint locations with this address and
11885      the same program space as the location
11886      as "its condition has changed".  We need to
11887      update the conditions on the target's side.  */
11888   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11889     {
11890       loc = *loc2p;
11891
11892       if (!is_breakpoint (loc->owner)
11893           || pspace_num != loc->pspace->num)
11894         continue;
11895
11896       /* Flag the location appropriately.  We use a different state to
11897          let everyone know that we already updated the set of locations
11898          with addr bl->address and program space bl->pspace.  This is so
11899          we don't have to keep calling these functions just to mark locations
11900          that have already been marked.  */
11901       loc->condition_changed = condition_updated;
11902
11903       /* Free the agent expression bytecode as well.  We will compute
11904          it later on.  */
11905       loc->cond_bytecode.reset ();
11906     }
11907 }
11908 /* Called whether new breakpoints are created, or existing breakpoints
11909    deleted, to update the global location list and recompute which
11910    locations are duplicate of which.
11911
11912    The INSERT_MODE flag determines whether locations may not, may, or
11913    shall be inserted now.  See 'enum ugll_insert_mode' for more
11914    info.  */
11915
11916 static void
11917 update_global_location_list (enum ugll_insert_mode insert_mode)
11918 {
11919   struct breakpoint *b;
11920   struct bp_location **locp, *loc;
11921   /* Last breakpoint location address that was marked for update.  */
11922   CORE_ADDR last_addr = 0;
11923   /* Last breakpoint location program space that was marked for update.  */
11924   int last_pspace_num = -1;
11925
11926   /* Used in the duplicates detection below.  When iterating over all
11927      bp_locations, points to the first bp_location of a given address.
11928      Breakpoints and watchpoints of different types are never
11929      duplicates of each other.  Keep one pointer for each type of
11930      breakpoint/watchpoint, so we only need to loop over all locations
11931      once.  */
11932   struct bp_location *bp_loc_first;  /* breakpoint */
11933   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11934   struct bp_location *awp_loc_first; /* access watchpoint */
11935   struct bp_location *rwp_loc_first; /* read watchpoint */
11936
11937   /* Saved former bp_locations array which we compare against the newly
11938      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11939   struct bp_location **old_locp;
11940   unsigned old_locations_count;
11941   gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11942
11943   old_locations_count = bp_locations_count;
11944   bp_locations = NULL;
11945   bp_locations_count = 0;
11946
11947   ALL_BREAKPOINTS (b)
11948     for (loc = b->loc; loc; loc = loc->next)
11949       bp_locations_count++;
11950
11951   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11952   locp = bp_locations;
11953   ALL_BREAKPOINTS (b)
11954     for (loc = b->loc; loc; loc = loc->next)
11955       *locp++ = loc;
11956   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11957          bp_locations_compare);
11958
11959   bp_locations_target_extensions_update ();
11960
11961   /* Identify bp_location instances that are no longer present in the
11962      new list, and therefore should be freed.  Note that it's not
11963      necessary that those locations should be removed from inferior --
11964      if there's another location at the same address (previously
11965      marked as duplicate), we don't need to remove/insert the
11966      location.
11967      
11968      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11969      and former bp_location array state respectively.  */
11970
11971   locp = bp_locations;
11972   for (old_locp = old_locations.get ();
11973        old_locp < old_locations.get () + old_locations_count;
11974        old_locp++)
11975     {
11976       struct bp_location *old_loc = *old_locp;
11977       struct bp_location **loc2p;
11978
11979       /* Tells if 'old_loc' is found among the new locations.  If
11980          not, we have to free it.  */
11981       int found_object = 0;
11982       /* Tells if the location should remain inserted in the target.  */
11983       int keep_in_target = 0;
11984       int removed = 0;
11985
11986       /* Skip LOCP entries which will definitely never be needed.
11987          Stop either at or being the one matching OLD_LOC.  */
11988       while (locp < bp_locations + bp_locations_count
11989              && (*locp)->address < old_loc->address)
11990         locp++;
11991
11992       for (loc2p = locp;
11993            (loc2p < bp_locations + bp_locations_count
11994             && (*loc2p)->address == old_loc->address);
11995            loc2p++)
11996         {
11997           /* Check if this is a new/duplicated location or a duplicated
11998              location that had its condition modified.  If so, we want to send
11999              its condition to the target if evaluation of conditions is taking
12000              place there.  */
12001           if ((*loc2p)->condition_changed == condition_modified
12002               && (last_addr != old_loc->address
12003                   || last_pspace_num != old_loc->pspace->num))
12004             {
12005               force_breakpoint_reinsertion (*loc2p);
12006               last_pspace_num = old_loc->pspace->num;
12007             }
12008
12009           if (*loc2p == old_loc)
12010             found_object = 1;
12011         }
12012
12013       /* We have already handled this address, update it so that we don't
12014          have to go through updates again.  */
12015       last_addr = old_loc->address;
12016
12017       /* Target-side condition evaluation: Handle deleted locations.  */
12018       if (!found_object)
12019         force_breakpoint_reinsertion (old_loc);
12020
12021       /* If this location is no longer present, and inserted, look if
12022          there's maybe a new location at the same address.  If so,
12023          mark that one inserted, and don't remove this one.  This is
12024          needed so that we don't have a time window where a breakpoint
12025          at certain location is not inserted.  */
12026
12027       if (old_loc->inserted)
12028         {
12029           /* If the location is inserted now, we might have to remove
12030              it.  */
12031
12032           if (found_object && should_be_inserted (old_loc))
12033             {
12034               /* The location is still present in the location list,
12035                  and still should be inserted.  Don't do anything.  */
12036               keep_in_target = 1;
12037             }
12038           else
12039             {
12040               /* This location still exists, but it won't be kept in the
12041                  target since it may have been disabled.  We proceed to
12042                  remove its target-side condition.  */
12043
12044               /* The location is either no longer present, or got
12045                  disabled.  See if there's another location at the
12046                  same address, in which case we don't need to remove
12047                  this one from the target.  */
12048
12049               /* OLD_LOC comes from existing struct breakpoint.  */
12050               if (breakpoint_address_is_meaningful (old_loc->owner))
12051                 {
12052                   for (loc2p = locp;
12053                        (loc2p < bp_locations + bp_locations_count
12054                         && (*loc2p)->address == old_loc->address);
12055                        loc2p++)
12056                     {
12057                       struct bp_location *loc2 = *loc2p;
12058
12059                       if (breakpoint_locations_match (loc2, old_loc))
12060                         {
12061                           /* Read watchpoint locations are switched to
12062                              access watchpoints, if the former are not
12063                              supported, but the latter are.  */
12064                           if (is_hardware_watchpoint (old_loc->owner))
12065                             {
12066                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12067                               loc2->watchpoint_type = old_loc->watchpoint_type;
12068                             }
12069
12070                           /* loc2 is a duplicated location. We need to check
12071                              if it should be inserted in case it will be
12072                              unduplicated.  */
12073                           if (loc2 != old_loc
12074                               && unduplicated_should_be_inserted (loc2))
12075                             {
12076                               swap_insertion (old_loc, loc2);
12077                               keep_in_target = 1;
12078                               break;
12079                             }
12080                         }
12081                     }
12082                 }
12083             }
12084
12085           if (!keep_in_target)
12086             {
12087               if (remove_breakpoint (old_loc))
12088                 {
12089                   /* This is just about all we can do.  We could keep
12090                      this location on the global list, and try to
12091                      remove it next time, but there's no particular
12092                      reason why we will succeed next time.
12093                      
12094                      Note that at this point, old_loc->owner is still
12095                      valid, as delete_breakpoint frees the breakpoint
12096                      only after calling us.  */
12097                   printf_filtered (_("warning: Error removing "
12098                                      "breakpoint %d\n"), 
12099                                    old_loc->owner->number);
12100                 }
12101               removed = 1;
12102             }
12103         }
12104
12105       if (!found_object)
12106         {
12107           if (removed && target_is_non_stop_p ()
12108               && need_moribund_for_location_type (old_loc))
12109             {
12110               /* This location was removed from the target.  In
12111                  non-stop mode, a race condition is possible where
12112                  we've removed a breakpoint, but stop events for that
12113                  breakpoint are already queued and will arrive later.
12114                  We apply an heuristic to be able to distinguish such
12115                  SIGTRAPs from other random SIGTRAPs: we keep this
12116                  breakpoint location for a bit, and will retire it
12117                  after we see some number of events.  The theory here
12118                  is that reporting of events should, "on the average",
12119                  be fair, so after a while we'll see events from all
12120                  threads that have anything of interest, and no longer
12121                  need to keep this breakpoint location around.  We
12122                  don't hold locations forever so to reduce chances of
12123                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12124                  SIGTRAP.
12125
12126                  The heuristic failing can be disastrous on
12127                  decr_pc_after_break targets.
12128
12129                  On decr_pc_after_break targets, like e.g., x86-linux,
12130                  if we fail to recognize a late breakpoint SIGTRAP,
12131                  because events_till_retirement has reached 0 too
12132                  soon, we'll fail to do the PC adjustment, and report
12133                  a random SIGTRAP to the user.  When the user resumes
12134                  the inferior, it will most likely immediately crash
12135                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12136                  corrupted, because of being resumed e.g., in the
12137                  middle of a multi-byte instruction, or skipped a
12138                  one-byte instruction.  This was actually seen happen
12139                  on native x86-linux, and should be less rare on
12140                  targets that do not support new thread events, like
12141                  remote, due to the heuristic depending on
12142                  thread_count.
12143
12144                  Mistaking a random SIGTRAP for a breakpoint trap
12145                  causes similar symptoms (PC adjustment applied when
12146                  it shouldn't), but then again, playing with SIGTRAPs
12147                  behind the debugger's back is asking for trouble.
12148
12149                  Since hardware watchpoint traps are always
12150                  distinguishable from other traps, so we don't need to
12151                  apply keep hardware watchpoint moribund locations
12152                  around.  We simply always ignore hardware watchpoint
12153                  traps we can no longer explain.  */
12154
12155               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12156               old_loc->owner = NULL;
12157
12158               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12159             }
12160           else
12161             {
12162               old_loc->owner = NULL;
12163               decref_bp_location (&old_loc);
12164             }
12165         }
12166     }
12167
12168   /* Rescan breakpoints at the same address and section, marking the
12169      first one as "first" and any others as "duplicates".  This is so
12170      that the bpt instruction is only inserted once.  If we have a
12171      permanent breakpoint at the same place as BPT, make that one the
12172      official one, and the rest as duplicates.  Permanent breakpoints
12173      are sorted first for the same address.
12174
12175      Do the same for hardware watchpoints, but also considering the
12176      watchpoint's type (regular/access/read) and length.  */
12177
12178   bp_loc_first = NULL;
12179   wp_loc_first = NULL;
12180   awp_loc_first = NULL;
12181   rwp_loc_first = NULL;
12182   ALL_BP_LOCATIONS (loc, locp)
12183     {
12184       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12185          non-NULL.  */
12186       struct bp_location **loc_first_p;
12187       b = loc->owner;
12188
12189       if (!unduplicated_should_be_inserted (loc)
12190           || !breakpoint_address_is_meaningful (b)
12191           /* Don't detect duplicate for tracepoint locations because they are
12192            never duplicated.  See the comments in field `duplicate' of
12193            `struct bp_location'.  */
12194           || is_tracepoint (b))
12195         {
12196           /* Clear the condition modification flag.  */
12197           loc->condition_changed = condition_unchanged;
12198           continue;
12199         }
12200
12201       if (b->type == bp_hardware_watchpoint)
12202         loc_first_p = &wp_loc_first;
12203       else if (b->type == bp_read_watchpoint)
12204         loc_first_p = &rwp_loc_first;
12205       else if (b->type == bp_access_watchpoint)
12206         loc_first_p = &awp_loc_first;
12207       else
12208         loc_first_p = &bp_loc_first;
12209
12210       if (*loc_first_p == NULL
12211           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12212           || !breakpoint_locations_match (loc, *loc_first_p))
12213         {
12214           *loc_first_p = loc;
12215           loc->duplicate = 0;
12216
12217           if (is_breakpoint (loc->owner) && loc->condition_changed)
12218             {
12219               loc->needs_update = 1;
12220               /* Clear the condition modification flag.  */
12221               loc->condition_changed = condition_unchanged;
12222             }
12223           continue;
12224         }
12225
12226
12227       /* This and the above ensure the invariant that the first location
12228          is not duplicated, and is the inserted one.
12229          All following are marked as duplicated, and are not inserted.  */
12230       if (loc->inserted)
12231         swap_insertion (loc, *loc_first_p);
12232       loc->duplicate = 1;
12233
12234       /* Clear the condition modification flag.  */
12235       loc->condition_changed = condition_unchanged;
12236     }
12237
12238   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12239     {
12240       if (insert_mode != UGLL_DONT_INSERT)
12241         insert_breakpoint_locations ();
12242       else
12243         {
12244           /* Even though the caller told us to not insert new
12245              locations, we may still need to update conditions on the
12246              target's side of breakpoints that were already inserted
12247              if the target is evaluating breakpoint conditions.  We
12248              only update conditions for locations that are marked
12249              "needs_update".  */
12250           update_inserted_breakpoint_locations ();
12251         }
12252     }
12253
12254   if (insert_mode != UGLL_DONT_INSERT)
12255     download_tracepoint_locations ();
12256 }
12257
12258 void
12259 breakpoint_retire_moribund (void)
12260 {
12261   struct bp_location *loc;
12262   int ix;
12263
12264   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12265     if (--(loc->events_till_retirement) == 0)
12266       {
12267         decref_bp_location (&loc);
12268         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12269         --ix;
12270       }
12271 }
12272
12273 static void
12274 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12275 {
12276
12277   TRY
12278     {
12279       update_global_location_list (insert_mode);
12280     }
12281   CATCH (e, RETURN_MASK_ERROR)
12282     {
12283     }
12284   END_CATCH
12285 }
12286
12287 /* Clear BKP from a BPS.  */
12288
12289 static void
12290 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12291 {
12292   bpstat bs;
12293
12294   for (bs = bps; bs; bs = bs->next)
12295     if (bs->breakpoint_at == bpt)
12296       {
12297         bs->breakpoint_at = NULL;
12298         bs->old_val = NULL;
12299         /* bs->commands will be freed later.  */
12300       }
12301 }
12302
12303 /* Callback for iterate_over_threads.  */
12304 static int
12305 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12306 {
12307   struct breakpoint *bpt = (struct breakpoint *) data;
12308
12309   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12310   return 0;
12311 }
12312
12313 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12314    callbacks.  */
12315
12316 static void
12317 say_where (struct breakpoint *b)
12318 {
12319   struct value_print_options opts;
12320
12321   get_user_print_options (&opts);
12322
12323   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12324      single string.  */
12325   if (b->loc == NULL)
12326     {
12327       /* For pending locations, the output differs slightly based
12328          on b->extra_string.  If this is non-NULL, it contains either
12329          a condition or dprintf arguments.  */
12330       if (b->extra_string == NULL)
12331         {
12332           printf_filtered (_(" (%s) pending."),
12333                            event_location_to_string (b->location.get ()));
12334         }
12335       else if (b->type == bp_dprintf)
12336         {
12337           printf_filtered (_(" (%s,%s) pending."),
12338                            event_location_to_string (b->location.get ()),
12339                            b->extra_string);
12340         }
12341       else
12342         {
12343           printf_filtered (_(" (%s %s) pending."),
12344                            event_location_to_string (b->location.get ()),
12345                            b->extra_string);
12346         }
12347     }
12348   else
12349     {
12350       if (opts.addressprint || b->loc->symtab == NULL)
12351         {
12352           printf_filtered (" at ");
12353           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12354                           gdb_stdout);
12355         }
12356       if (b->loc->symtab != NULL)
12357         {
12358           /* If there is a single location, we can print the location
12359              more nicely.  */
12360           if (b->loc->next == NULL)
12361             printf_filtered (": file %s, line %d.",
12362                              symtab_to_filename_for_display (b->loc->symtab),
12363                              b->loc->line_number);
12364           else
12365             /* This is not ideal, but each location may have a
12366                different file name, and this at least reflects the
12367                real situation somewhat.  */
12368             printf_filtered (": %s.",
12369                              event_location_to_string (b->location.get ()));
12370         }
12371
12372       if (b->loc->next)
12373         {
12374           struct bp_location *loc = b->loc;
12375           int n = 0;
12376           for (; loc; loc = loc->next)
12377             ++n;
12378           printf_filtered (" (%d locations)", n);
12379         }
12380     }
12381 }
12382
12383 /* Default bp_location_ops methods.  */
12384
12385 static void
12386 bp_location_dtor (struct bp_location *self)
12387 {
12388   xfree (self->function_name);
12389 }
12390
12391 static const struct bp_location_ops bp_location_ops =
12392 {
12393   bp_location_dtor
12394 };
12395
12396 /* Destructor for the breakpoint base class.  */
12397
12398 breakpoint::~breakpoint ()
12399 {
12400   xfree (this->cond_string);
12401   xfree (this->extra_string);
12402   xfree (this->filter);
12403 }
12404
12405 static struct bp_location *
12406 base_breakpoint_allocate_location (struct breakpoint *self)
12407 {
12408   return new bp_location (&bp_location_ops, self);
12409 }
12410
12411 static void
12412 base_breakpoint_re_set (struct breakpoint *b)
12413 {
12414   /* Nothing to re-set. */
12415 }
12416
12417 #define internal_error_pure_virtual_called() \
12418   gdb_assert_not_reached ("pure virtual function called")
12419
12420 static int
12421 base_breakpoint_insert_location (struct bp_location *bl)
12422 {
12423   internal_error_pure_virtual_called ();
12424 }
12425
12426 static int
12427 base_breakpoint_remove_location (struct bp_location *bl,
12428                                  enum remove_bp_reason reason)
12429 {
12430   internal_error_pure_virtual_called ();
12431 }
12432
12433 static int
12434 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12435                                 struct address_space *aspace,
12436                                 CORE_ADDR bp_addr,
12437                                 const struct target_waitstatus *ws)
12438 {
12439   internal_error_pure_virtual_called ();
12440 }
12441
12442 static void
12443 base_breakpoint_check_status (bpstat bs)
12444 {
12445   /* Always stop.   */
12446 }
12447
12448 /* A "works_in_software_mode" breakpoint_ops method that just internal
12449    errors.  */
12450
12451 static int
12452 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12453 {
12454   internal_error_pure_virtual_called ();
12455 }
12456
12457 /* A "resources_needed" breakpoint_ops method that just internal
12458    errors.  */
12459
12460 static int
12461 base_breakpoint_resources_needed (const struct bp_location *bl)
12462 {
12463   internal_error_pure_virtual_called ();
12464 }
12465
12466 static enum print_stop_action
12467 base_breakpoint_print_it (bpstat bs)
12468 {
12469   internal_error_pure_virtual_called ();
12470 }
12471
12472 static void
12473 base_breakpoint_print_one_detail (const struct breakpoint *self,
12474                                   struct ui_out *uiout)
12475 {
12476   /* nothing */
12477 }
12478
12479 static void
12480 base_breakpoint_print_mention (struct breakpoint *b)
12481 {
12482   internal_error_pure_virtual_called ();
12483 }
12484
12485 static void
12486 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12487 {
12488   internal_error_pure_virtual_called ();
12489 }
12490
12491 static void
12492 base_breakpoint_create_sals_from_location
12493   (const struct event_location *location,
12494    struct linespec_result *canonical,
12495    enum bptype type_wanted)
12496 {
12497   internal_error_pure_virtual_called ();
12498 }
12499
12500 static void
12501 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12502                                         struct linespec_result *c,
12503                                         gdb::unique_xmalloc_ptr<char> cond_string,
12504                                         gdb::unique_xmalloc_ptr<char> extra_string,
12505                                         enum bptype type_wanted,
12506                                         enum bpdisp disposition,
12507                                         int thread,
12508                                         int task, int ignore_count,
12509                                         const struct breakpoint_ops *o,
12510                                         int from_tty, int enabled,
12511                                         int internal, unsigned flags)
12512 {
12513   internal_error_pure_virtual_called ();
12514 }
12515
12516 static std::vector<symtab_and_line>
12517 base_breakpoint_decode_location (struct breakpoint *b,
12518                                  const struct event_location *location,
12519                                  struct program_space *search_pspace)
12520 {
12521   internal_error_pure_virtual_called ();
12522 }
12523
12524 /* The default 'explains_signal' method.  */
12525
12526 static int
12527 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12528 {
12529   return 1;
12530 }
12531
12532 /* The default "after_condition_true" method.  */
12533
12534 static void
12535 base_breakpoint_after_condition_true (struct bpstats *bs)
12536 {
12537   /* Nothing to do.   */
12538 }
12539
12540 struct breakpoint_ops base_breakpoint_ops =
12541 {
12542   base_breakpoint_allocate_location,
12543   base_breakpoint_re_set,
12544   base_breakpoint_insert_location,
12545   base_breakpoint_remove_location,
12546   base_breakpoint_breakpoint_hit,
12547   base_breakpoint_check_status,
12548   base_breakpoint_resources_needed,
12549   base_breakpoint_works_in_software_mode,
12550   base_breakpoint_print_it,
12551   NULL,
12552   base_breakpoint_print_one_detail,
12553   base_breakpoint_print_mention,
12554   base_breakpoint_print_recreate,
12555   base_breakpoint_create_sals_from_location,
12556   base_breakpoint_create_breakpoints_sal,
12557   base_breakpoint_decode_location,
12558   base_breakpoint_explains_signal,
12559   base_breakpoint_after_condition_true,
12560 };
12561
12562 /* Default breakpoint_ops methods.  */
12563
12564 static void
12565 bkpt_re_set (struct breakpoint *b)
12566 {
12567   /* FIXME: is this still reachable?  */
12568   if (breakpoint_event_location_empty_p (b))
12569     {
12570       /* Anything without a location can't be re-set.  */
12571       delete_breakpoint (b);
12572       return;
12573     }
12574
12575   breakpoint_re_set_default (b);
12576 }
12577
12578 static int
12579 bkpt_insert_location (struct bp_location *bl)
12580 {
12581   CORE_ADDR addr = bl->target_info.reqstd_address;
12582
12583   bl->target_info.kind = breakpoint_kind (bl, &addr);
12584   bl->target_info.placed_address = addr;
12585
12586   if (bl->loc_type == bp_loc_hardware_breakpoint)
12587     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12588   else
12589     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12590 }
12591
12592 static int
12593 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12594 {
12595   if (bl->loc_type == bp_loc_hardware_breakpoint)
12596     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12597   else
12598     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12599 }
12600
12601 static int
12602 bkpt_breakpoint_hit (const struct bp_location *bl,
12603                      struct address_space *aspace, CORE_ADDR bp_addr,
12604                      const struct target_waitstatus *ws)
12605 {
12606   if (ws->kind != TARGET_WAITKIND_STOPPED
12607       || ws->value.sig != GDB_SIGNAL_TRAP)
12608     return 0;
12609
12610   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12611                                  aspace, bp_addr))
12612     return 0;
12613
12614   if (overlay_debugging         /* unmapped overlay section */
12615       && section_is_overlay (bl->section)
12616       && !section_is_mapped (bl->section))
12617     return 0;
12618
12619   return 1;
12620 }
12621
12622 static int
12623 dprintf_breakpoint_hit (const struct bp_location *bl,
12624                         struct address_space *aspace, CORE_ADDR bp_addr,
12625                         const struct target_waitstatus *ws)
12626 {
12627   if (dprintf_style == dprintf_style_agent
12628       && target_can_run_breakpoint_commands ())
12629     {
12630       /* An agent-style dprintf never causes a stop.  If we see a trap
12631          for this address it must be for a breakpoint that happens to
12632          be set at the same address.  */
12633       return 0;
12634     }
12635
12636   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12637 }
12638
12639 static int
12640 bkpt_resources_needed (const struct bp_location *bl)
12641 {
12642   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12643
12644   return 1;
12645 }
12646
12647 static enum print_stop_action
12648 bkpt_print_it (bpstat bs)
12649 {
12650   struct breakpoint *b;
12651   const struct bp_location *bl;
12652   int bp_temp;
12653   struct ui_out *uiout = current_uiout;
12654
12655   gdb_assert (bs->bp_location_at != NULL);
12656
12657   bl = bs->bp_location_at;
12658   b = bs->breakpoint_at;
12659
12660   bp_temp = b->disposition == disp_del;
12661   if (bl->address != bl->requested_address)
12662     breakpoint_adjustment_warning (bl->requested_address,
12663                                    bl->address,
12664                                    b->number, 1);
12665   annotate_breakpoint (b->number);
12666   maybe_print_thread_hit_breakpoint (uiout);
12667
12668   if (bp_temp)
12669     uiout->text ("Temporary breakpoint ");
12670   else
12671     uiout->text ("Breakpoint ");
12672   if (uiout->is_mi_like_p ())
12673     {
12674       uiout->field_string ("reason",
12675                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12676       uiout->field_string ("disp", bpdisp_text (b->disposition));
12677     }
12678   uiout->field_int ("bkptno", b->number);
12679   uiout->text (", ");
12680
12681   return PRINT_SRC_AND_LOC;
12682 }
12683
12684 static void
12685 bkpt_print_mention (struct breakpoint *b)
12686 {
12687   if (current_uiout->is_mi_like_p ())
12688     return;
12689
12690   switch (b->type)
12691     {
12692     case bp_breakpoint:
12693     case bp_gnu_ifunc_resolver:
12694       if (b->disposition == disp_del)
12695         printf_filtered (_("Temporary breakpoint"));
12696       else
12697         printf_filtered (_("Breakpoint"));
12698       printf_filtered (_(" %d"), b->number);
12699       if (b->type == bp_gnu_ifunc_resolver)
12700         printf_filtered (_(" at gnu-indirect-function resolver"));
12701       break;
12702     case bp_hardware_breakpoint:
12703       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12704       break;
12705     case bp_dprintf:
12706       printf_filtered (_("Dprintf %d"), b->number);
12707       break;
12708     }
12709
12710   say_where (b);
12711 }
12712
12713 static void
12714 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12715 {
12716   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12717     fprintf_unfiltered (fp, "tbreak");
12718   else if (tp->type == bp_breakpoint)
12719     fprintf_unfiltered (fp, "break");
12720   else if (tp->type == bp_hardware_breakpoint
12721            && tp->disposition == disp_del)
12722     fprintf_unfiltered (fp, "thbreak");
12723   else if (tp->type == bp_hardware_breakpoint)
12724     fprintf_unfiltered (fp, "hbreak");
12725   else
12726     internal_error (__FILE__, __LINE__,
12727                     _("unhandled breakpoint type %d"), (int) tp->type);
12728
12729   fprintf_unfiltered (fp, " %s",
12730                       event_location_to_string (tp->location.get ()));
12731
12732   /* Print out extra_string if this breakpoint is pending.  It might
12733      contain, for example, conditions that were set by the user.  */
12734   if (tp->loc == NULL && tp->extra_string != NULL)
12735     fprintf_unfiltered (fp, " %s", tp->extra_string);
12736
12737   print_recreate_thread (tp, fp);
12738 }
12739
12740 static void
12741 bkpt_create_sals_from_location (const struct event_location *location,
12742                                 struct linespec_result *canonical,
12743                                 enum bptype type_wanted)
12744 {
12745   create_sals_from_location_default (location, canonical, type_wanted);
12746 }
12747
12748 static void
12749 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12750                              struct linespec_result *canonical,
12751                              gdb::unique_xmalloc_ptr<char> cond_string,
12752                              gdb::unique_xmalloc_ptr<char> extra_string,
12753                              enum bptype type_wanted,
12754                              enum bpdisp disposition,
12755                              int thread,
12756                              int task, int ignore_count,
12757                              const struct breakpoint_ops *ops,
12758                              int from_tty, int enabled,
12759                              int internal, unsigned flags)
12760 {
12761   create_breakpoints_sal_default (gdbarch, canonical,
12762                                   std::move (cond_string),
12763                                   std::move (extra_string),
12764                                   type_wanted,
12765                                   disposition, thread, task,
12766                                   ignore_count, ops, from_tty,
12767                                   enabled, internal, flags);
12768 }
12769
12770 static std::vector<symtab_and_line>
12771 bkpt_decode_location (struct breakpoint *b,
12772                       const struct event_location *location,
12773                       struct program_space *search_pspace)
12774 {
12775   return decode_location_default (b, location, search_pspace);
12776 }
12777
12778 /* Virtual table for internal breakpoints.  */
12779
12780 static void
12781 internal_bkpt_re_set (struct breakpoint *b)
12782 {
12783   switch (b->type)
12784     {
12785       /* Delete overlay event and longjmp master breakpoints; they
12786          will be reset later by breakpoint_re_set.  */
12787     case bp_overlay_event:
12788     case bp_longjmp_master:
12789     case bp_std_terminate_master:
12790     case bp_exception_master:
12791       delete_breakpoint (b);
12792       break;
12793
12794       /* This breakpoint is special, it's set up when the inferior
12795          starts and we really don't want to touch it.  */
12796     case bp_shlib_event:
12797
12798       /* Like bp_shlib_event, this breakpoint type is special.  Once
12799          it is set up, we do not want to touch it.  */
12800     case bp_thread_event:
12801       break;
12802     }
12803 }
12804
12805 static void
12806 internal_bkpt_check_status (bpstat bs)
12807 {
12808   if (bs->breakpoint_at->type == bp_shlib_event)
12809     {
12810       /* If requested, stop when the dynamic linker notifies GDB of
12811          events.  This allows the user to get control and place
12812          breakpoints in initializer routines for dynamically loaded
12813          objects (among other things).  */
12814       bs->stop = stop_on_solib_events;
12815       bs->print = stop_on_solib_events;
12816     }
12817   else
12818     bs->stop = 0;
12819 }
12820
12821 static enum print_stop_action
12822 internal_bkpt_print_it (bpstat bs)
12823 {
12824   struct breakpoint *b;
12825
12826   b = bs->breakpoint_at;
12827
12828   switch (b->type)
12829     {
12830     case bp_shlib_event:
12831       /* Did we stop because the user set the stop_on_solib_events
12832          variable?  (If so, we report this as a generic, "Stopped due
12833          to shlib event" message.) */
12834       print_solib_event (0);
12835       break;
12836
12837     case bp_thread_event:
12838       /* Not sure how we will get here.
12839          GDB should not stop for these breakpoints.  */
12840       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12841       break;
12842
12843     case bp_overlay_event:
12844       /* By analogy with the thread event, GDB should not stop for these.  */
12845       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12846       break;
12847
12848     case bp_longjmp_master:
12849       /* These should never be enabled.  */
12850       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12851       break;
12852
12853     case bp_std_terminate_master:
12854       /* These should never be enabled.  */
12855       printf_filtered (_("std::terminate Master Breakpoint: "
12856                          "gdb should not stop!\n"));
12857       break;
12858
12859     case bp_exception_master:
12860       /* These should never be enabled.  */
12861       printf_filtered (_("Exception Master Breakpoint: "
12862                          "gdb should not stop!\n"));
12863       break;
12864     }
12865
12866   return PRINT_NOTHING;
12867 }
12868
12869 static void
12870 internal_bkpt_print_mention (struct breakpoint *b)
12871 {
12872   /* Nothing to mention.  These breakpoints are internal.  */
12873 }
12874
12875 /* Virtual table for momentary breakpoints  */
12876
12877 static void
12878 momentary_bkpt_re_set (struct breakpoint *b)
12879 {
12880   /* Keep temporary breakpoints, which can be encountered when we step
12881      over a dlopen call and solib_add is resetting the breakpoints.
12882      Otherwise these should have been blown away via the cleanup chain
12883      or by breakpoint_init_inferior when we rerun the executable.  */
12884 }
12885
12886 static void
12887 momentary_bkpt_check_status (bpstat bs)
12888 {
12889   /* Nothing.  The point of these breakpoints is causing a stop.  */
12890 }
12891
12892 static enum print_stop_action
12893 momentary_bkpt_print_it (bpstat bs)
12894 {
12895   return PRINT_UNKNOWN;
12896 }
12897
12898 static void
12899 momentary_bkpt_print_mention (struct breakpoint *b)
12900 {
12901   /* Nothing to mention.  These breakpoints are internal.  */
12902 }
12903
12904 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12905
12906    It gets cleared already on the removal of the first one of such placed
12907    breakpoints.  This is OK as they get all removed altogether.  */
12908
12909 longjmp_breakpoint::~longjmp_breakpoint ()
12910 {
12911   thread_info *tp = find_thread_global_id (this->thread);
12912
12913   if (tp != NULL)
12914     tp->initiating_frame = null_frame_id;
12915 }
12916
12917 /* Specific methods for probe breakpoints.  */
12918
12919 static int
12920 bkpt_probe_insert_location (struct bp_location *bl)
12921 {
12922   int v = bkpt_insert_location (bl);
12923
12924   if (v == 0)
12925     {
12926       /* The insertion was successful, now let's set the probe's semaphore
12927          if needed.  */
12928       if (bl->probe.probe->pops->set_semaphore != NULL)
12929         bl->probe.probe->pops->set_semaphore (bl->probe.probe,
12930                                               bl->probe.objfile,
12931                                               bl->gdbarch);
12932     }
12933
12934   return v;
12935 }
12936
12937 static int
12938 bkpt_probe_remove_location (struct bp_location *bl,
12939                             enum remove_bp_reason reason)
12940 {
12941   /* Let's clear the semaphore before removing the location.  */
12942   if (bl->probe.probe->pops->clear_semaphore != NULL)
12943     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
12944                                             bl->probe.objfile,
12945                                             bl->gdbarch);
12946
12947   return bkpt_remove_location (bl, reason);
12948 }
12949
12950 static void
12951 bkpt_probe_create_sals_from_location (const struct event_location *location,
12952                                       struct linespec_result *canonical,
12953                                       enum bptype type_wanted)
12954 {
12955   struct linespec_sals lsal;
12956
12957   lsal.sals = parse_probes (location, NULL, canonical);
12958   lsal.canonical
12959     = xstrdup (event_location_to_string (canonical->location.get ()));
12960   canonical->lsals.push_back (std::move (lsal));
12961 }
12962
12963 static std::vector<symtab_and_line>
12964 bkpt_probe_decode_location (struct breakpoint *b,
12965                             const struct event_location *location,
12966                             struct program_space *search_pspace)
12967 {
12968   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12969   if (sals.empty ())
12970     error (_("probe not found"));
12971   return sals;
12972 }
12973
12974 /* The breakpoint_ops structure to be used in tracepoints.  */
12975
12976 static void
12977 tracepoint_re_set (struct breakpoint *b)
12978 {
12979   breakpoint_re_set_default (b);
12980 }
12981
12982 static int
12983 tracepoint_breakpoint_hit (const struct bp_location *bl,
12984                            struct address_space *aspace, CORE_ADDR bp_addr,
12985                            const struct target_waitstatus *ws)
12986 {
12987   /* By definition, the inferior does not report stops at
12988      tracepoints.  */
12989   return 0;
12990 }
12991
12992 static void
12993 tracepoint_print_one_detail (const struct breakpoint *self,
12994                              struct ui_out *uiout)
12995 {
12996   struct tracepoint *tp = (struct tracepoint *) self;
12997   if (tp->static_trace_marker_id)
12998     {
12999       gdb_assert (self->type == bp_static_tracepoint);
13000
13001       uiout->text ("\tmarker id is ");
13002       uiout->field_string ("static-tracepoint-marker-string-id",
13003                            tp->static_trace_marker_id);
13004       uiout->text ("\n");
13005     }
13006 }
13007
13008 static void
13009 tracepoint_print_mention (struct breakpoint *b)
13010 {
13011   if (current_uiout->is_mi_like_p ())
13012     return;
13013
13014   switch (b->type)
13015     {
13016     case bp_tracepoint:
13017       printf_filtered (_("Tracepoint"));
13018       printf_filtered (_(" %d"), b->number);
13019       break;
13020     case bp_fast_tracepoint:
13021       printf_filtered (_("Fast tracepoint"));
13022       printf_filtered (_(" %d"), b->number);
13023       break;
13024     case bp_static_tracepoint:
13025       printf_filtered (_("Static tracepoint"));
13026       printf_filtered (_(" %d"), b->number);
13027       break;
13028     default:
13029       internal_error (__FILE__, __LINE__,
13030                       _("unhandled tracepoint type %d"), (int) b->type);
13031     }
13032
13033   say_where (b);
13034 }
13035
13036 static void
13037 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13038 {
13039   struct tracepoint *tp = (struct tracepoint *) self;
13040
13041   if (self->type == bp_fast_tracepoint)
13042     fprintf_unfiltered (fp, "ftrace");
13043   else if (self->type == bp_static_tracepoint)
13044     fprintf_unfiltered (fp, "strace");
13045   else if (self->type == bp_tracepoint)
13046     fprintf_unfiltered (fp, "trace");
13047   else
13048     internal_error (__FILE__, __LINE__,
13049                     _("unhandled tracepoint type %d"), (int) self->type);
13050
13051   fprintf_unfiltered (fp, " %s",
13052                       event_location_to_string (self->location.get ()));
13053   print_recreate_thread (self, fp);
13054
13055   if (tp->pass_count)
13056     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13057 }
13058
13059 static void
13060 tracepoint_create_sals_from_location (const struct event_location *location,
13061                                       struct linespec_result *canonical,
13062                                       enum bptype type_wanted)
13063 {
13064   create_sals_from_location_default (location, canonical, type_wanted);
13065 }
13066
13067 static void
13068 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13069                                    struct linespec_result *canonical,
13070                                    gdb::unique_xmalloc_ptr<char> cond_string,
13071                                    gdb::unique_xmalloc_ptr<char> extra_string,
13072                                    enum bptype type_wanted,
13073                                    enum bpdisp disposition,
13074                                    int thread,
13075                                    int task, int ignore_count,
13076                                    const struct breakpoint_ops *ops,
13077                                    int from_tty, int enabled,
13078                                    int internal, unsigned flags)
13079 {
13080   create_breakpoints_sal_default (gdbarch, canonical,
13081                                   std::move (cond_string),
13082                                   std::move (extra_string),
13083                                   type_wanted,
13084                                   disposition, thread, task,
13085                                   ignore_count, ops, from_tty,
13086                                   enabled, internal, flags);
13087 }
13088
13089 static std::vector<symtab_and_line>
13090 tracepoint_decode_location (struct breakpoint *b,
13091                             const struct event_location *location,
13092                             struct program_space *search_pspace)
13093 {
13094   return decode_location_default (b, location, search_pspace);
13095 }
13096
13097 struct breakpoint_ops tracepoint_breakpoint_ops;
13098
13099 /* The breakpoint_ops structure to be use on tracepoints placed in a
13100    static probe.  */
13101
13102 static void
13103 tracepoint_probe_create_sals_from_location
13104   (const struct event_location *location,
13105    struct linespec_result *canonical,
13106    enum bptype type_wanted)
13107 {
13108   /* We use the same method for breakpoint on probes.  */
13109   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13110 }
13111
13112 static std::vector<symtab_and_line>
13113 tracepoint_probe_decode_location (struct breakpoint *b,
13114                                   const struct event_location *location,
13115                                   struct program_space *search_pspace)
13116 {
13117   /* We use the same method for breakpoint on probes.  */
13118   return bkpt_probe_decode_location (b, location, search_pspace);
13119 }
13120
13121 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13122
13123 /* Dprintf breakpoint_ops methods.  */
13124
13125 static void
13126 dprintf_re_set (struct breakpoint *b)
13127 {
13128   breakpoint_re_set_default (b);
13129
13130   /* extra_string should never be non-NULL for dprintf.  */
13131   gdb_assert (b->extra_string != NULL);
13132
13133   /* 1 - connect to target 1, that can run breakpoint commands.
13134      2 - create a dprintf, which resolves fine.
13135      3 - disconnect from target 1
13136      4 - connect to target 2, that can NOT run breakpoint commands.
13137
13138      After steps #3/#4, you'll want the dprintf command list to
13139      be updated, because target 1 and 2 may well return different
13140      answers for target_can_run_breakpoint_commands().
13141      Given absence of finer grained resetting, we get to do
13142      it all the time.  */
13143   if (b->extra_string != NULL)
13144     update_dprintf_command_list (b);
13145 }
13146
13147 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13148
13149 static void
13150 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13151 {
13152   fprintf_unfiltered (fp, "dprintf %s,%s",
13153                       event_location_to_string (tp->location.get ()),
13154                       tp->extra_string);
13155   print_recreate_thread (tp, fp);
13156 }
13157
13158 /* Implement the "after_condition_true" breakpoint_ops method for
13159    dprintf.
13160
13161    dprintf's are implemented with regular commands in their command
13162    list, but we run the commands here instead of before presenting the
13163    stop to the user, as dprintf's don't actually cause a stop.  This
13164    also makes it so that the commands of multiple dprintfs at the same
13165    address are all handled.  */
13166
13167 static void
13168 dprintf_after_condition_true (struct bpstats *bs)
13169 {
13170   struct bpstats tmp_bs;
13171   struct bpstats *tmp_bs_p = &tmp_bs;
13172
13173   /* dprintf's never cause a stop.  This wasn't set in the
13174      check_status hook instead because that would make the dprintf's
13175      condition not be evaluated.  */
13176   bs->stop = 0;
13177
13178   /* Run the command list here.  Take ownership of it instead of
13179      copying.  We never want these commands to run later in
13180      bpstat_do_actions, if a breakpoint that causes a stop happens to
13181      be set at same address as this dprintf, or even if running the
13182      commands here throws.  */
13183   tmp_bs.commands = bs->commands;
13184   bs->commands = NULL;
13185
13186   bpstat_do_actions_1 (&tmp_bs_p);
13187
13188   /* 'tmp_bs.commands' will usually be NULL by now, but
13189      bpstat_do_actions_1 may return early without processing the whole
13190      list.  */
13191 }
13192
13193 /* The breakpoint_ops structure to be used on static tracepoints with
13194    markers (`-m').  */
13195
13196 static void
13197 strace_marker_create_sals_from_location (const struct event_location *location,
13198                                          struct linespec_result *canonical,
13199                                          enum bptype type_wanted)
13200 {
13201   struct linespec_sals lsal;
13202   const char *arg_start, *arg;
13203
13204   arg = arg_start = get_linespec_location (location);
13205   lsal.sals = decode_static_tracepoint_spec (&arg);
13206
13207   std::string str (arg_start, arg - arg_start);
13208   const char *ptr = str.c_str ();
13209   canonical->location = new_linespec_location (&ptr);
13210
13211   lsal.canonical
13212     = xstrdup (event_location_to_string (canonical->location.get ()));
13213   canonical->lsals.push_back (std::move (lsal));
13214 }
13215
13216 static void
13217 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13218                                       struct linespec_result *canonical,
13219                                       gdb::unique_xmalloc_ptr<char> cond_string,
13220                                       gdb::unique_xmalloc_ptr<char> extra_string,
13221                                       enum bptype type_wanted,
13222                                       enum bpdisp disposition,
13223                                       int thread,
13224                                       int task, int ignore_count,
13225                                       const struct breakpoint_ops *ops,
13226                                       int from_tty, int enabled,
13227                                       int internal, unsigned flags)
13228 {
13229   const linespec_sals &lsal = canonical->lsals[0];
13230
13231   /* If the user is creating a static tracepoint by marker id
13232      (strace -m MARKER_ID), then store the sals index, so that
13233      breakpoint_re_set can try to match up which of the newly
13234      found markers corresponds to this one, and, don't try to
13235      expand multiple locations for each sal, given than SALS
13236      already should contain all sals for MARKER_ID.  */
13237
13238   for (size_t i = 0; i < lsal.sals.size (); i++)
13239     {
13240       event_location_up location
13241         = copy_event_location (canonical->location.get ());
13242
13243       std::unique_ptr<tracepoint> tp (new tracepoint ());
13244       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13245                            std::move (location), NULL,
13246                            std::move (cond_string),
13247                            std::move (extra_string),
13248                            type_wanted, disposition,
13249                            thread, task, ignore_count, ops,
13250                            from_tty, enabled, internal, flags,
13251                            canonical->special_display);
13252       /* Given that its possible to have multiple markers with
13253          the same string id, if the user is creating a static
13254          tracepoint by marker id ("strace -m MARKER_ID"), then
13255          store the sals index, so that breakpoint_re_set can
13256          try to match up which of the newly found markers
13257          corresponds to this one  */
13258       tp->static_trace_marker_id_idx = i;
13259
13260       install_breakpoint (internal, std::move (tp), 0);
13261     }
13262 }
13263
13264 static std::vector<symtab_and_line>
13265 strace_marker_decode_location (struct breakpoint *b,
13266                                const struct event_location *location,
13267                                struct program_space *search_pspace)
13268 {
13269   struct tracepoint *tp = (struct tracepoint *) b;
13270   const char *s = get_linespec_location (location);
13271
13272   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13273   if (sals.size () > tp->static_trace_marker_id_idx)
13274     {
13275       sals[0] = sals[tp->static_trace_marker_id_idx];
13276       sals.resize (1);
13277       return sals;
13278     }
13279   else
13280     error (_("marker %s not found"), tp->static_trace_marker_id);
13281 }
13282
13283 static struct breakpoint_ops strace_marker_breakpoint_ops;
13284
13285 static int
13286 strace_marker_p (struct breakpoint *b)
13287 {
13288   return b->ops == &strace_marker_breakpoint_ops;
13289 }
13290
13291 /* Delete a breakpoint and clean up all traces of it in the data
13292    structures.  */
13293
13294 void
13295 delete_breakpoint (struct breakpoint *bpt)
13296 {
13297   struct breakpoint *b;
13298
13299   gdb_assert (bpt != NULL);
13300
13301   /* Has this bp already been deleted?  This can happen because
13302      multiple lists can hold pointers to bp's.  bpstat lists are
13303      especial culprits.
13304
13305      One example of this happening is a watchpoint's scope bp.  When
13306      the scope bp triggers, we notice that the watchpoint is out of
13307      scope, and delete it.  We also delete its scope bp.  But the
13308      scope bp is marked "auto-deleting", and is already on a bpstat.
13309      That bpstat is then checked for auto-deleting bp's, which are
13310      deleted.
13311
13312      A real solution to this problem might involve reference counts in
13313      bp's, and/or giving them pointers back to their referencing
13314      bpstat's, and teaching delete_breakpoint to only free a bp's
13315      storage when no more references were extent.  A cheaper bandaid
13316      was chosen.  */
13317   if (bpt->type == bp_none)
13318     return;
13319
13320   /* At least avoid this stale reference until the reference counting
13321      of breakpoints gets resolved.  */
13322   if (bpt->related_breakpoint != bpt)
13323     {
13324       struct breakpoint *related;
13325       struct watchpoint *w;
13326
13327       if (bpt->type == bp_watchpoint_scope)
13328         w = (struct watchpoint *) bpt->related_breakpoint;
13329       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13330         w = (struct watchpoint *) bpt;
13331       else
13332         w = NULL;
13333       if (w != NULL)
13334         watchpoint_del_at_next_stop (w);
13335
13336       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13337       for (related = bpt; related->related_breakpoint != bpt;
13338            related = related->related_breakpoint);
13339       related->related_breakpoint = bpt->related_breakpoint;
13340       bpt->related_breakpoint = bpt;
13341     }
13342
13343   /* watch_command_1 creates a watchpoint but only sets its number if
13344      update_watchpoint succeeds in creating its bp_locations.  If there's
13345      a problem in that process, we'll be asked to delete the half-created
13346      watchpoint.  In that case, don't announce the deletion.  */
13347   if (bpt->number)
13348     observer_notify_breakpoint_deleted (bpt);
13349
13350   if (breakpoint_chain == bpt)
13351     breakpoint_chain = bpt->next;
13352
13353   ALL_BREAKPOINTS (b)
13354     if (b->next == bpt)
13355     {
13356       b->next = bpt->next;
13357       break;
13358     }
13359
13360   /* Be sure no bpstat's are pointing at the breakpoint after it's
13361      been freed.  */
13362   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13363      in all threads for now.  Note that we cannot just remove bpstats
13364      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13365      commands are associated with the bpstat; if we remove it here,
13366      then the later call to bpstat_do_actions (&stop_bpstat); in
13367      event-top.c won't do anything, and temporary breakpoints with
13368      commands won't work.  */
13369
13370   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13371
13372   /* Now that breakpoint is removed from breakpoint list, update the
13373      global location list.  This will remove locations that used to
13374      belong to this breakpoint.  Do this before freeing the breakpoint
13375      itself, since remove_breakpoint looks at location's owner.  It
13376      might be better design to have location completely
13377      self-contained, but it's not the case now.  */
13378   update_global_location_list (UGLL_DONT_INSERT);
13379
13380   /* On the chance that someone will soon try again to delete this
13381      same bp, we mark it as deleted before freeing its storage.  */
13382   bpt->type = bp_none;
13383   delete bpt;
13384 }
13385
13386 static void
13387 do_delete_breakpoint_cleanup (void *b)
13388 {
13389   delete_breakpoint ((struct breakpoint *) b);
13390 }
13391
13392 struct cleanup *
13393 make_cleanup_delete_breakpoint (struct breakpoint *b)
13394 {
13395   return make_cleanup (do_delete_breakpoint_cleanup, b);
13396 }
13397
13398 /* Iterator function to call a user-provided callback function once
13399    for each of B and its related breakpoints.  */
13400
13401 static void
13402 iterate_over_related_breakpoints (struct breakpoint *b,
13403                                   gdb::function_view<void (breakpoint *)> function)
13404 {
13405   struct breakpoint *related;
13406
13407   related = b;
13408   do
13409     {
13410       struct breakpoint *next;
13411
13412       /* FUNCTION may delete RELATED.  */
13413       next = related->related_breakpoint;
13414
13415       if (next == related)
13416         {
13417           /* RELATED is the last ring entry.  */
13418           function (related);
13419
13420           /* FUNCTION may have deleted it, so we'd never reach back to
13421              B.  There's nothing left to do anyway, so just break
13422              out.  */
13423           break;
13424         }
13425       else
13426         function (related);
13427
13428       related = next;
13429     }
13430   while (related != b);
13431 }
13432
13433 static void
13434 delete_command (const char *arg, int from_tty)
13435 {
13436   struct breakpoint *b, *b_tmp;
13437
13438   dont_repeat ();
13439
13440   if (arg == 0)
13441     {
13442       int breaks_to_delete = 0;
13443
13444       /* Delete all breakpoints if no argument.  Do not delete
13445          internal breakpoints, these have to be deleted with an
13446          explicit breakpoint number argument.  */
13447       ALL_BREAKPOINTS (b)
13448         if (user_breakpoint_p (b))
13449           {
13450             breaks_to_delete = 1;
13451             break;
13452           }
13453
13454       /* Ask user only if there are some breakpoints to delete.  */
13455       if (!from_tty
13456           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13457         {
13458           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13459             if (user_breakpoint_p (b))
13460               delete_breakpoint (b);
13461         }
13462     }
13463   else
13464     map_breakpoint_numbers
13465       (arg, [&] (breakpoint *b)
13466        {
13467          iterate_over_related_breakpoints (b, delete_breakpoint);
13468        });
13469 }
13470
13471 /* Return true if all locations of B bound to PSPACE are pending.  If
13472    PSPACE is NULL, all locations of all program spaces are
13473    considered.  */
13474
13475 static int
13476 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13477 {
13478   struct bp_location *loc;
13479
13480   for (loc = b->loc; loc != NULL; loc = loc->next)
13481     if ((pspace == NULL
13482          || loc->pspace == pspace)
13483         && !loc->shlib_disabled
13484         && !loc->pspace->executing_startup)
13485       return 0;
13486   return 1;
13487 }
13488
13489 /* Subroutine of update_breakpoint_locations to simplify it.
13490    Return non-zero if multiple fns in list LOC have the same name.
13491    Null names are ignored.  */
13492
13493 static int
13494 ambiguous_names_p (struct bp_location *loc)
13495 {
13496   struct bp_location *l;
13497   htab_t htab = htab_create_alloc (13, htab_hash_string,
13498                                    (int (*) (const void *, 
13499                                              const void *)) streq,
13500                                    NULL, xcalloc, xfree);
13501
13502   for (l = loc; l != NULL; l = l->next)
13503     {
13504       const char **slot;
13505       const char *name = l->function_name;
13506
13507       /* Allow for some names to be NULL, ignore them.  */
13508       if (name == NULL)
13509         continue;
13510
13511       slot = (const char **) htab_find_slot (htab, (const void *) name,
13512                                              INSERT);
13513       /* NOTE: We can assume slot != NULL here because xcalloc never
13514          returns NULL.  */
13515       if (*slot != NULL)
13516         {
13517           htab_delete (htab);
13518           return 1;
13519         }
13520       *slot = name;
13521     }
13522
13523   htab_delete (htab);
13524   return 0;
13525 }
13526
13527 /* When symbols change, it probably means the sources changed as well,
13528    and it might mean the static tracepoint markers are no longer at
13529    the same address or line numbers they used to be at last we
13530    checked.  Losing your static tracepoints whenever you rebuild is
13531    undesirable.  This function tries to resync/rematch gdb static
13532    tracepoints with the markers on the target, for static tracepoints
13533    that have not been set by marker id.  Static tracepoint that have
13534    been set by marker id are reset by marker id in breakpoint_re_set.
13535    The heuristic is:
13536
13537    1) For a tracepoint set at a specific address, look for a marker at
13538    the old PC.  If one is found there, assume to be the same marker.
13539    If the name / string id of the marker found is different from the
13540    previous known name, assume that means the user renamed the marker
13541    in the sources, and output a warning.
13542
13543    2) For a tracepoint set at a given line number, look for a marker
13544    at the new address of the old line number.  If one is found there,
13545    assume to be the same marker.  If the name / string id of the
13546    marker found is different from the previous known name, assume that
13547    means the user renamed the marker in the sources, and output a
13548    warning.
13549
13550    3) If a marker is no longer found at the same address or line, it
13551    may mean the marker no longer exists.  But it may also just mean
13552    the code changed a bit.  Maybe the user added a few lines of code
13553    that made the marker move up or down (in line number terms).  Ask
13554    the target for info about the marker with the string id as we knew
13555    it.  If found, update line number and address in the matching
13556    static tracepoint.  This will get confused if there's more than one
13557    marker with the same ID (possible in UST, although unadvised
13558    precisely because it confuses tools).  */
13559
13560 static struct symtab_and_line
13561 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13562 {
13563   struct tracepoint *tp = (struct tracepoint *) b;
13564   struct static_tracepoint_marker marker;
13565   CORE_ADDR pc;
13566
13567   pc = sal.pc;
13568   if (sal.line)
13569     find_line_pc (sal.symtab, sal.line, &pc);
13570
13571   if (target_static_tracepoint_marker_at (pc, &marker))
13572     {
13573       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13574         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13575                  b->number,
13576                  tp->static_trace_marker_id, marker.str_id);
13577
13578       xfree (tp->static_trace_marker_id);
13579       tp->static_trace_marker_id = xstrdup (marker.str_id);
13580       release_static_tracepoint_marker (&marker);
13581
13582       return sal;
13583     }
13584
13585   /* Old marker wasn't found on target at lineno.  Try looking it up
13586      by string ID.  */
13587   if (!sal.explicit_pc
13588       && sal.line != 0
13589       && sal.symtab != NULL
13590       && tp->static_trace_marker_id != NULL)
13591     {
13592       VEC(static_tracepoint_marker_p) *markers;
13593
13594       markers
13595         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13596
13597       if (!VEC_empty(static_tracepoint_marker_p, markers))
13598         {
13599           struct symbol *sym;
13600           struct static_tracepoint_marker *tpmarker;
13601           struct ui_out *uiout = current_uiout;
13602           struct explicit_location explicit_loc;
13603
13604           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13605
13606           xfree (tp->static_trace_marker_id);
13607           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13608
13609           warning (_("marker for static tracepoint %d (%s) not "
13610                      "found at previous line number"),
13611                    b->number, tp->static_trace_marker_id);
13612
13613           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13614           sym = find_pc_sect_function (tpmarker->address, NULL);
13615           uiout->text ("Now in ");
13616           if (sym)
13617             {
13618               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13619               uiout->text (" at ");
13620             }
13621           uiout->field_string ("file",
13622                                symtab_to_filename_for_display (sal2.symtab));
13623           uiout->text (":");
13624
13625           if (uiout->is_mi_like_p ())
13626             {
13627               const char *fullname = symtab_to_fullname (sal2.symtab);
13628
13629               uiout->field_string ("fullname", fullname);
13630             }
13631
13632           uiout->field_int ("line", sal2.line);
13633           uiout->text ("\n");
13634
13635           b->loc->line_number = sal2.line;
13636           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13637
13638           b->location.reset (NULL);
13639           initialize_explicit_location (&explicit_loc);
13640           explicit_loc.source_filename
13641             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13642           explicit_loc.line_offset.offset = b->loc->line_number;
13643           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13644           b->location = new_explicit_location (&explicit_loc);
13645
13646           /* Might be nice to check if function changed, and warn if
13647              so.  */
13648
13649           release_static_tracepoint_marker (tpmarker);
13650         }
13651     }
13652   return sal;
13653 }
13654
13655 /* Returns 1 iff locations A and B are sufficiently same that
13656    we don't need to report breakpoint as changed.  */
13657
13658 static int
13659 locations_are_equal (struct bp_location *a, struct bp_location *b)
13660 {
13661   while (a && b)
13662     {
13663       if (a->address != b->address)
13664         return 0;
13665
13666       if (a->shlib_disabled != b->shlib_disabled)
13667         return 0;
13668
13669       if (a->enabled != b->enabled)
13670         return 0;
13671
13672       a = a->next;
13673       b = b->next;
13674     }
13675
13676   if ((a == NULL) != (b == NULL))
13677     return 0;
13678
13679   return 1;
13680 }
13681
13682 /* Split all locations of B that are bound to PSPACE out of B's
13683    location list to a separate list and return that list's head.  If
13684    PSPACE is NULL, hoist out all locations of B.  */
13685
13686 static struct bp_location *
13687 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13688 {
13689   struct bp_location head;
13690   struct bp_location *i = b->loc;
13691   struct bp_location **i_link = &b->loc;
13692   struct bp_location *hoisted = &head;
13693
13694   if (pspace == NULL)
13695     {
13696       i = b->loc;
13697       b->loc = NULL;
13698       return i;
13699     }
13700
13701   head.next = NULL;
13702
13703   while (i != NULL)
13704     {
13705       if (i->pspace == pspace)
13706         {
13707           *i_link = i->next;
13708           i->next = NULL;
13709           hoisted->next = i;
13710           hoisted = i;
13711         }
13712       else
13713         i_link = &i->next;
13714       i = *i_link;
13715     }
13716
13717   return head.next;
13718 }
13719
13720 /* Create new breakpoint locations for B (a hardware or software
13721    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13722    zero, then B is a ranged breakpoint.  Only recreates locations for
13723    FILTER_PSPACE.  Locations of other program spaces are left
13724    untouched.  */
13725
13726 void
13727 update_breakpoint_locations (struct breakpoint *b,
13728                              struct program_space *filter_pspace,
13729                              gdb::array_view<const symtab_and_line> sals,
13730                              gdb::array_view<const symtab_and_line> sals_end)
13731 {
13732   int i;
13733   struct bp_location *existing_locations;
13734
13735   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13736     {
13737       /* Ranged breakpoints have only one start location and one end
13738          location.  */
13739       b->enable_state = bp_disabled;
13740       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13741                            "multiple locations found\n"),
13742                          b->number);
13743       return;
13744     }
13745
13746   /* If there's no new locations, and all existing locations are
13747      pending, don't do anything.  This optimizes the common case where
13748      all locations are in the same shared library, that was unloaded.
13749      We'd like to retain the location, so that when the library is
13750      loaded again, we don't loose the enabled/disabled status of the
13751      individual locations.  */
13752   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13753     return;
13754
13755   existing_locations = hoist_existing_locations (b, filter_pspace);
13756
13757   for (const auto &sal : sals)
13758     {
13759       struct bp_location *new_loc;
13760
13761       switch_to_program_space_and_thread (sal.pspace);
13762
13763       new_loc = add_location_to_breakpoint (b, &sal);
13764
13765       /* Reparse conditions, they might contain references to the
13766          old symtab.  */
13767       if (b->cond_string != NULL)
13768         {
13769           const char *s;
13770
13771           s = b->cond_string;
13772           TRY
13773             {
13774               new_loc->cond = parse_exp_1 (&s, sal.pc,
13775                                            block_for_pc (sal.pc),
13776                                            0);
13777             }
13778           CATCH (e, RETURN_MASK_ERROR)
13779             {
13780               warning (_("failed to reevaluate condition "
13781                          "for breakpoint %d: %s"), 
13782                        b->number, e.message);
13783               new_loc->enabled = 0;
13784             }
13785           END_CATCH
13786         }
13787
13788       if (!sals_end.empty ())
13789         {
13790           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13791
13792           new_loc->length = end - sals[0].pc + 1;
13793         }
13794     }
13795
13796   /* If possible, carry over 'disable' status from existing
13797      breakpoints.  */
13798   {
13799     struct bp_location *e = existing_locations;
13800     /* If there are multiple breakpoints with the same function name,
13801        e.g. for inline functions, comparing function names won't work.
13802        Instead compare pc addresses; this is just a heuristic as things
13803        may have moved, but in practice it gives the correct answer
13804        often enough until a better solution is found.  */
13805     int have_ambiguous_names = ambiguous_names_p (b->loc);
13806
13807     for (; e; e = e->next)
13808       {
13809         if (!e->enabled && e->function_name)
13810           {
13811             struct bp_location *l = b->loc;
13812             if (have_ambiguous_names)
13813               {
13814                 for (; l; l = l->next)
13815                   if (breakpoint_locations_match (e, l))
13816                     {
13817                       l->enabled = 0;
13818                       break;
13819                     }
13820               }
13821             else
13822               {
13823                 for (; l; l = l->next)
13824                   if (l->function_name
13825                       && strcmp (e->function_name, l->function_name) == 0)
13826                     {
13827                       l->enabled = 0;
13828                       break;
13829                     }
13830               }
13831           }
13832       }
13833   }
13834
13835   if (!locations_are_equal (existing_locations, b->loc))
13836     observer_notify_breakpoint_modified (b);
13837 }
13838
13839 /* Find the SaL locations corresponding to the given LOCATION.
13840    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13841
13842 static std::vector<symtab_and_line>
13843 location_to_sals (struct breakpoint *b, struct event_location *location,
13844                   struct program_space *search_pspace, int *found)
13845 {
13846   struct gdb_exception exception = exception_none;
13847
13848   gdb_assert (b->ops != NULL);
13849
13850   std::vector<symtab_and_line> sals;
13851
13852   TRY
13853     {
13854       sals = b->ops->decode_location (b, location, search_pspace);
13855     }
13856   CATCH (e, RETURN_MASK_ERROR)
13857     {
13858       int not_found_and_ok = 0;
13859
13860       exception = e;
13861
13862       /* For pending breakpoints, it's expected that parsing will
13863          fail until the right shared library is loaded.  User has
13864          already told to create pending breakpoints and don't need
13865          extra messages.  If breakpoint is in bp_shlib_disabled
13866          state, then user already saw the message about that
13867          breakpoint being disabled, and don't want to see more
13868          errors.  */
13869       if (e.error == NOT_FOUND_ERROR
13870           && (b->condition_not_parsed
13871               || (b->loc != NULL
13872                   && search_pspace != NULL
13873                   && b->loc->pspace != search_pspace)
13874               || (b->loc && b->loc->shlib_disabled)
13875               || (b->loc && b->loc->pspace->executing_startup)
13876               || b->enable_state == bp_disabled))
13877         not_found_and_ok = 1;
13878
13879       if (!not_found_and_ok)
13880         {
13881           /* We surely don't want to warn about the same breakpoint
13882              10 times.  One solution, implemented here, is disable
13883              the breakpoint on error.  Another solution would be to
13884              have separate 'warning emitted' flag.  Since this
13885              happens only when a binary has changed, I don't know
13886              which approach is better.  */
13887           b->enable_state = bp_disabled;
13888           throw_exception (e);
13889         }
13890     }
13891   END_CATCH
13892
13893   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13894     {
13895       for (auto &sal : sals)
13896         resolve_sal_pc (&sal);
13897       if (b->condition_not_parsed && b->extra_string != NULL)
13898         {
13899           char *cond_string, *extra_string;
13900           int thread, task;
13901
13902           find_condition_and_thread (b->extra_string, sals[0].pc,
13903                                      &cond_string, &thread, &task,
13904                                      &extra_string);
13905           gdb_assert (b->cond_string == NULL);
13906           if (cond_string)
13907             b->cond_string = cond_string;
13908           b->thread = thread;
13909           b->task = task;
13910           if (extra_string)
13911             {
13912               xfree (b->extra_string);
13913               b->extra_string = extra_string;
13914             }
13915           b->condition_not_parsed = 0;
13916         }
13917
13918       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13919         sals[0] = update_static_tracepoint (b, sals[0]);
13920
13921       *found = 1;
13922     }
13923   else
13924     *found = 0;
13925
13926   return sals;
13927 }
13928
13929 /* The default re_set method, for typical hardware or software
13930    breakpoints.  Reevaluate the breakpoint and recreate its
13931    locations.  */
13932
13933 static void
13934 breakpoint_re_set_default (struct breakpoint *b)
13935 {
13936   struct program_space *filter_pspace = current_program_space;
13937   std::vector<symtab_and_line> expanded, expanded_end;
13938
13939   int found;
13940   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13941                                                         filter_pspace, &found);
13942   if (found)
13943     expanded = std::move (sals);
13944
13945   if (b->location_range_end != NULL)
13946     {
13947       std::vector<symtab_and_line> sals_end
13948         = location_to_sals (b, b->location_range_end.get (),
13949                             filter_pspace, &found);
13950       if (found)
13951         expanded_end = std::move (sals_end);
13952     }
13953
13954   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13955 }
13956
13957 /* Default method for creating SALs from an address string.  It basically
13958    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13959
13960 static void
13961 create_sals_from_location_default (const struct event_location *location,
13962                                    struct linespec_result *canonical,
13963                                    enum bptype type_wanted)
13964 {
13965   parse_breakpoint_sals (location, canonical);
13966 }
13967
13968 /* Call create_breakpoints_sal for the given arguments.  This is the default
13969    function for the `create_breakpoints_sal' method of
13970    breakpoint_ops.  */
13971
13972 static void
13973 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13974                                 struct linespec_result *canonical,
13975                                 gdb::unique_xmalloc_ptr<char> cond_string,
13976                                 gdb::unique_xmalloc_ptr<char> extra_string,
13977                                 enum bptype type_wanted,
13978                                 enum bpdisp disposition,
13979                                 int thread,
13980                                 int task, int ignore_count,
13981                                 const struct breakpoint_ops *ops,
13982                                 int from_tty, int enabled,
13983                                 int internal, unsigned flags)
13984 {
13985   create_breakpoints_sal (gdbarch, canonical,
13986                           std::move (cond_string),
13987                           std::move (extra_string),
13988                           type_wanted, disposition,
13989                           thread, task, ignore_count, ops, from_tty,
13990                           enabled, internal, flags);
13991 }
13992
13993 /* Decode the line represented by S by calling decode_line_full.  This is the
13994    default function for the `decode_location' method of breakpoint_ops.  */
13995
13996 static std::vector<symtab_and_line>
13997 decode_location_default (struct breakpoint *b,
13998                          const struct event_location *location,
13999                          struct program_space *search_pspace)
14000 {
14001   struct linespec_result canonical;
14002
14003   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14004                     (struct symtab *) NULL, 0,
14005                     &canonical, multiple_symbols_all,
14006                     b->filter);
14007
14008   /* We should get 0 or 1 resulting SALs.  */
14009   gdb_assert (canonical.lsals.size () < 2);
14010
14011   if (!canonical.lsals.empty ())
14012     {
14013       const linespec_sals &lsal = canonical.lsals[0];
14014       return std::move (lsal.sals);
14015     }
14016   return {};
14017 }
14018
14019 /* Reset a breakpoint.  */
14020
14021 static void
14022 breakpoint_re_set_one (breakpoint *b)
14023 {
14024   input_radix = b->input_radix;
14025   set_language (b->language);
14026
14027   b->ops->re_set (b);
14028 }
14029
14030 /* Re-set breakpoint locations for the current program space.
14031    Locations bound to other program spaces are left untouched.  */
14032
14033 void
14034 breakpoint_re_set (void)
14035 {
14036   struct breakpoint *b, *b_tmp;
14037
14038   {
14039     scoped_restore_current_language save_language;
14040     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
14041     scoped_restore_current_pspace_and_thread restore_pspace_thread;
14042
14043     /* Note: we must not try to insert locations until after all
14044        breakpoints have been re-set.  Otherwise, e.g., when re-setting
14045        breakpoint 1, we'd insert the locations of breakpoint 2, which
14046        hadn't been re-set yet, and thus may have stale locations.  */
14047
14048     ALL_BREAKPOINTS_SAFE (b, b_tmp)
14049       {
14050         TRY
14051           {
14052             breakpoint_re_set_one (b);
14053           }
14054         CATCH (ex, RETURN_MASK_ALL)
14055           {
14056             exception_fprintf (gdb_stderr, ex,
14057                                "Error in re-setting breakpoint %d: ",
14058                                b->number);
14059           }
14060         END_CATCH
14061       }
14062
14063     jit_breakpoint_re_set ();
14064   }
14065
14066   create_overlay_event_breakpoint ();
14067   create_longjmp_master_breakpoint ();
14068   create_std_terminate_master_breakpoint ();
14069   create_exception_master_breakpoint ();
14070
14071   /* Now we can insert.  */
14072   update_global_location_list (UGLL_MAY_INSERT);
14073 }
14074 \f
14075 /* Reset the thread number of this breakpoint:
14076
14077    - If the breakpoint is for all threads, leave it as-is.
14078    - Else, reset it to the current thread for inferior_ptid.  */
14079 void
14080 breakpoint_re_set_thread (struct breakpoint *b)
14081 {
14082   if (b->thread != -1)
14083     {
14084       if (in_thread_list (inferior_ptid))
14085         b->thread = ptid_to_global_thread_id (inferior_ptid);
14086
14087       /* We're being called after following a fork.  The new fork is
14088          selected as current, and unless this was a vfork will have a
14089          different program space from the original thread.  Reset that
14090          as well.  */
14091       b->loc->pspace = current_program_space;
14092     }
14093 }
14094
14095 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14096    If from_tty is nonzero, it prints a message to that effect,
14097    which ends with a period (no newline).  */
14098
14099 void
14100 set_ignore_count (int bptnum, int count, int from_tty)
14101 {
14102   struct breakpoint *b;
14103
14104   if (count < 0)
14105     count = 0;
14106
14107   ALL_BREAKPOINTS (b)
14108     if (b->number == bptnum)
14109     {
14110       if (is_tracepoint (b))
14111         {
14112           if (from_tty && count != 0)
14113             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14114                              bptnum);
14115           return;
14116         }
14117       
14118       b->ignore_count = count;
14119       if (from_tty)
14120         {
14121           if (count == 0)
14122             printf_filtered (_("Will stop next time "
14123                                "breakpoint %d is reached."),
14124                              bptnum);
14125           else if (count == 1)
14126             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14127                              bptnum);
14128           else
14129             printf_filtered (_("Will ignore next %d "
14130                                "crossings of breakpoint %d."),
14131                              count, bptnum);
14132         }
14133       observer_notify_breakpoint_modified (b);
14134       return;
14135     }
14136
14137   error (_("No breakpoint number %d."), bptnum);
14138 }
14139
14140 /* Command to set ignore-count of breakpoint N to COUNT.  */
14141
14142 static void
14143 ignore_command (char *args, int from_tty)
14144 {
14145   char *p = args;
14146   int num;
14147
14148   if (p == 0)
14149     error_no_arg (_("a breakpoint number"));
14150
14151   num = get_number (&p);
14152   if (num == 0)
14153     error (_("bad breakpoint number: '%s'"), args);
14154   if (*p == 0)
14155     error (_("Second argument (specified ignore-count) is missing."));
14156
14157   set_ignore_count (num,
14158                     longest_to_int (value_as_long (parse_and_eval (p))),
14159                     from_tty);
14160   if (from_tty)
14161     printf_filtered ("\n");
14162 }
14163 \f
14164 /* Call FUNCTION on each of the breakpoints
14165    whose numbers are given in ARGS.  */
14166
14167 static void
14168 map_breakpoint_numbers (const char *args,
14169                         gdb::function_view<void (breakpoint *)> function)
14170 {
14171   int num;
14172   struct breakpoint *b, *tmp;
14173
14174   if (args == 0 || *args == '\0')
14175     error_no_arg (_("one or more breakpoint numbers"));
14176
14177   number_or_range_parser parser (args);
14178
14179   while (!parser.finished ())
14180     {
14181       const char *p = parser.cur_tok ();
14182       bool match = false;
14183
14184       num = parser.get_number ();
14185       if (num == 0)
14186         {
14187           warning (_("bad breakpoint number at or near '%s'"), p);
14188         }
14189       else
14190         {
14191           ALL_BREAKPOINTS_SAFE (b, tmp)
14192             if (b->number == num)
14193               {
14194                 match = true;
14195                 function (b);
14196                 break;
14197               }
14198           if (!match)
14199             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14200         }
14201     }
14202 }
14203
14204 static struct bp_location *
14205 find_location_by_number (const char *number)
14206 {
14207   const char *p1;
14208   int bp_num;
14209   int loc_num;
14210   struct breakpoint *b;
14211   struct bp_location *loc;  
14212
14213   p1 = number;
14214   bp_num = get_number_trailer (&p1, '.');
14215   if (bp_num == 0 || p1[0] != '.')
14216     error (_("Bad breakpoint number '%s'"), number);
14217
14218   ALL_BREAKPOINTS (b)
14219     if (b->number == bp_num)
14220       {
14221         break;
14222       }
14223
14224   if (!b || b->number != bp_num)
14225     error (_("Bad breakpoint number '%s'"), number);
14226   
14227   /* Skip the dot.  */
14228   ++p1;
14229   const char *save = p1;
14230   loc_num = get_number (&p1);
14231   if (loc_num == 0)
14232     error (_("Bad breakpoint location number '%s'"), number);
14233
14234   --loc_num;
14235   loc = b->loc;
14236   for (;loc_num && loc; --loc_num, loc = loc->next)
14237     ;
14238   if (!loc)
14239     error (_("Bad breakpoint location number '%s'"), save);
14240     
14241   return loc;  
14242 }
14243
14244
14245 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14246    If from_tty is nonzero, it prints a message to that effect,
14247    which ends with a period (no newline).  */
14248
14249 void
14250 disable_breakpoint (struct breakpoint *bpt)
14251 {
14252   /* Never disable a watchpoint scope breakpoint; we want to
14253      hit them when we leave scope so we can delete both the
14254      watchpoint and its scope breakpoint at that time.  */
14255   if (bpt->type == bp_watchpoint_scope)
14256     return;
14257
14258   bpt->enable_state = bp_disabled;
14259
14260   /* Mark breakpoint locations modified.  */
14261   mark_breakpoint_modified (bpt);
14262
14263   if (target_supports_enable_disable_tracepoint ()
14264       && current_trace_status ()->running && is_tracepoint (bpt))
14265     {
14266       struct bp_location *location;
14267      
14268       for (location = bpt->loc; location; location = location->next)
14269         target_disable_tracepoint (location);
14270     }
14271
14272   update_global_location_list (UGLL_DONT_INSERT);
14273
14274   observer_notify_breakpoint_modified (bpt);
14275 }
14276
14277 static void
14278 disable_command (const char *args, int from_tty)
14279 {
14280   if (args == 0)
14281     {
14282       struct breakpoint *bpt;
14283
14284       ALL_BREAKPOINTS (bpt)
14285         if (user_breakpoint_p (bpt))
14286           disable_breakpoint (bpt);
14287     }
14288   else
14289     {
14290       std::string num = extract_arg (&args);
14291
14292       while (!num.empty ())
14293         {
14294           if (num.find ('.') != std::string::npos)
14295             {
14296               struct bp_location *loc = find_location_by_number (num.c_str ());
14297
14298               if (loc)
14299                 {
14300                   if (loc->enabled)
14301                     {
14302                       loc->enabled = 0;
14303                       mark_breakpoint_location_modified (loc);
14304                     }
14305                   if (target_supports_enable_disable_tracepoint ()
14306                       && current_trace_status ()->running && loc->owner
14307                       && is_tracepoint (loc->owner))
14308                     target_disable_tracepoint (loc);
14309                 }
14310               update_global_location_list (UGLL_DONT_INSERT);
14311             }
14312           else
14313             map_breakpoint_numbers
14314               (num.c_str (), [&] (breakpoint *b)
14315                {
14316                  iterate_over_related_breakpoints (b, disable_breakpoint);
14317                });
14318           num = extract_arg (&args);
14319         }
14320     }
14321 }
14322
14323 static void
14324 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14325                         int count)
14326 {
14327   int target_resources_ok;
14328
14329   if (bpt->type == bp_hardware_breakpoint)
14330     {
14331       int i;
14332       i = hw_breakpoint_used_count ();
14333       target_resources_ok = 
14334         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14335                                             i + 1, 0);
14336       if (target_resources_ok == 0)
14337         error (_("No hardware breakpoint support in the target."));
14338       else if (target_resources_ok < 0)
14339         error (_("Hardware breakpoints used exceeds limit."));
14340     }
14341
14342   if (is_watchpoint (bpt))
14343     {
14344       /* Initialize it just to avoid a GCC false warning.  */
14345       enum enable_state orig_enable_state = bp_disabled;
14346
14347       TRY
14348         {
14349           struct watchpoint *w = (struct watchpoint *) bpt;
14350
14351           orig_enable_state = bpt->enable_state;
14352           bpt->enable_state = bp_enabled;
14353           update_watchpoint (w, 1 /* reparse */);
14354         }
14355       CATCH (e, RETURN_MASK_ALL)
14356         {
14357           bpt->enable_state = orig_enable_state;
14358           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14359                              bpt->number);
14360           return;
14361         }
14362       END_CATCH
14363     }
14364
14365   bpt->enable_state = bp_enabled;
14366
14367   /* Mark breakpoint locations modified.  */
14368   mark_breakpoint_modified (bpt);
14369
14370   if (target_supports_enable_disable_tracepoint ()
14371       && current_trace_status ()->running && is_tracepoint (bpt))
14372     {
14373       struct bp_location *location;
14374
14375       for (location = bpt->loc; location; location = location->next)
14376         target_enable_tracepoint (location);
14377     }
14378
14379   bpt->disposition = disposition;
14380   bpt->enable_count = count;
14381   update_global_location_list (UGLL_MAY_INSERT);
14382
14383   observer_notify_breakpoint_modified (bpt);
14384 }
14385
14386
14387 void
14388 enable_breakpoint (struct breakpoint *bpt)
14389 {
14390   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14391 }
14392
14393 /* The enable command enables the specified breakpoints (or all defined
14394    breakpoints) so they once again become (or continue to be) effective
14395    in stopping the inferior.  */
14396
14397 static void
14398 enable_command (const char *args, int from_tty)
14399 {
14400   if (args == 0)
14401     {
14402       struct breakpoint *bpt;
14403
14404       ALL_BREAKPOINTS (bpt)
14405         if (user_breakpoint_p (bpt))
14406           enable_breakpoint (bpt);
14407     }
14408   else
14409     {
14410       std::string num = extract_arg (&args);
14411
14412       while (!num.empty ())
14413         {
14414           if (num.find ('.') != std::string::npos)
14415             {
14416               struct bp_location *loc = find_location_by_number (num.c_str ());
14417
14418               if (loc)
14419                 {
14420                   if (!loc->enabled)
14421                     {
14422                       loc->enabled = 1;
14423                       mark_breakpoint_location_modified (loc);
14424                     }
14425                   if (target_supports_enable_disable_tracepoint ()
14426                       && current_trace_status ()->running && loc->owner
14427                       && is_tracepoint (loc->owner))
14428                     target_enable_tracepoint (loc);
14429                 }
14430               update_global_location_list (UGLL_MAY_INSERT);
14431             }
14432           else
14433             map_breakpoint_numbers
14434               (num.c_str (), [&] (breakpoint *b)
14435                {
14436                  iterate_over_related_breakpoints (b, enable_breakpoint);
14437                });
14438           num = extract_arg (&args);
14439         }
14440     }
14441 }
14442
14443 static void
14444 enable_once_command (const char *args, int from_tty)
14445 {
14446   map_breakpoint_numbers
14447     (args, [&] (breakpoint *b)
14448      {
14449        iterate_over_related_breakpoints
14450          (b, [&] (breakpoint *bpt)
14451           {
14452             enable_breakpoint_disp (bpt, disp_disable, 1);
14453           });
14454      });
14455 }
14456
14457 static void
14458 enable_count_command (const char *args, int from_tty)
14459 {
14460   int count;
14461
14462   if (args == NULL)
14463     error_no_arg (_("hit count"));
14464
14465   count = get_number (&args);
14466
14467   map_breakpoint_numbers
14468     (args, [&] (breakpoint *b)
14469      {
14470        iterate_over_related_breakpoints
14471          (b, [&] (breakpoint *bpt)
14472           {
14473             enable_breakpoint_disp (bpt, disp_disable, count);
14474           });
14475      });
14476 }
14477
14478 static void
14479 enable_delete_command (const char *args, int from_tty)
14480 {
14481   map_breakpoint_numbers
14482     (args, [&] (breakpoint *b)
14483      {
14484        iterate_over_related_breakpoints
14485          (b, [&] (breakpoint *bpt)
14486           {
14487             enable_breakpoint_disp (bpt, disp_del, 1);
14488           });
14489      });
14490 }
14491 \f
14492 static void
14493 set_breakpoint_cmd (const char *args, int from_tty)
14494 {
14495 }
14496
14497 static void
14498 show_breakpoint_cmd (const char *args, int from_tty)
14499 {
14500 }
14501
14502 /* Invalidate last known value of any hardware watchpoint if
14503    the memory which that value represents has been written to by
14504    GDB itself.  */
14505
14506 static void
14507 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14508                                       CORE_ADDR addr, ssize_t len,
14509                                       const bfd_byte *data)
14510 {
14511   struct breakpoint *bp;
14512
14513   ALL_BREAKPOINTS (bp)
14514     if (bp->enable_state == bp_enabled
14515         && bp->type == bp_hardware_watchpoint)
14516       {
14517         struct watchpoint *wp = (struct watchpoint *) bp;
14518
14519         if (wp->val_valid && wp->val)
14520           {
14521             struct bp_location *loc;
14522
14523             for (loc = bp->loc; loc != NULL; loc = loc->next)
14524               if (loc->loc_type == bp_loc_hardware_watchpoint
14525                   && loc->address + loc->length > addr
14526                   && addr + len > loc->address)
14527                 {
14528                   value_free (wp->val);
14529                   wp->val = NULL;
14530                   wp->val_valid = 0;
14531                 }
14532           }
14533       }
14534 }
14535
14536 /* Create and insert a breakpoint for software single step.  */
14537
14538 void
14539 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14540                                struct address_space *aspace, 
14541                                CORE_ADDR next_pc)
14542 {
14543   struct thread_info *tp = inferior_thread ();
14544   struct symtab_and_line sal;
14545   CORE_ADDR pc = next_pc;
14546
14547   if (tp->control.single_step_breakpoints == NULL)
14548     {
14549       tp->control.single_step_breakpoints
14550         = new_single_step_breakpoint (tp->global_num, gdbarch);
14551     }
14552
14553   sal = find_pc_line (pc, 0);
14554   sal.pc = pc;
14555   sal.section = find_pc_overlay (pc);
14556   sal.explicit_pc = 1;
14557   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14558
14559   update_global_location_list (UGLL_INSERT);
14560 }
14561
14562 /* Insert single step breakpoints according to the current state.  */
14563
14564 int
14565 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14566 {
14567   struct regcache *regcache = get_current_regcache ();
14568   std::vector<CORE_ADDR> next_pcs;
14569
14570   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14571
14572   if (!next_pcs.empty ())
14573     {
14574       struct frame_info *frame = get_current_frame ();
14575       struct address_space *aspace = get_frame_address_space (frame);
14576
14577       for (CORE_ADDR pc : next_pcs)
14578         insert_single_step_breakpoint (gdbarch, aspace, pc);
14579
14580       return 1;
14581     }
14582   else
14583     return 0;
14584 }
14585
14586 /* See breakpoint.h.  */
14587
14588 int
14589 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14590                                        struct address_space *aspace,
14591                                        CORE_ADDR pc)
14592 {
14593   struct bp_location *loc;
14594
14595   for (loc = bp->loc; loc != NULL; loc = loc->next)
14596     if (loc->inserted
14597         && breakpoint_location_address_match (loc, aspace, pc))
14598       return 1;
14599
14600   return 0;
14601 }
14602
14603 /* Check whether a software single-step breakpoint is inserted at
14604    PC.  */
14605
14606 int
14607 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
14608                                         CORE_ADDR pc)
14609 {
14610   struct breakpoint *bpt;
14611
14612   ALL_BREAKPOINTS (bpt)
14613     {
14614       if (bpt->type == bp_single_step
14615           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14616         return 1;
14617     }
14618   return 0;
14619 }
14620
14621 /* Tracepoint-specific operations.  */
14622
14623 /* Set tracepoint count to NUM.  */
14624 static void
14625 set_tracepoint_count (int num)
14626 {
14627   tracepoint_count = num;
14628   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14629 }
14630
14631 static void
14632 trace_command (char *arg_in, int from_tty)
14633 {
14634   const char *arg = arg_in;
14635   struct breakpoint_ops *ops;
14636
14637   event_location_up location = string_to_event_location (&arg,
14638                                                          current_language);
14639   if (location != NULL
14640       && event_location_type (location.get ()) == PROBE_LOCATION)
14641     ops = &tracepoint_probe_breakpoint_ops;
14642   else
14643     ops = &tracepoint_breakpoint_ops;
14644
14645   create_breakpoint (get_current_arch (),
14646                      location.get (),
14647                      NULL, 0, arg, 1 /* parse arg */,
14648                      0 /* tempflag */,
14649                      bp_tracepoint /* type_wanted */,
14650                      0 /* Ignore count */,
14651                      pending_break_support,
14652                      ops,
14653                      from_tty,
14654                      1 /* enabled */,
14655                      0 /* internal */, 0);
14656 }
14657
14658 static void
14659 ftrace_command (char *arg_in, int from_tty)
14660 {
14661   const char *arg = arg_in;
14662   event_location_up location = string_to_event_location (&arg,
14663                                                          current_language);
14664   create_breakpoint (get_current_arch (),
14665                      location.get (),
14666                      NULL, 0, arg, 1 /* parse arg */,
14667                      0 /* tempflag */,
14668                      bp_fast_tracepoint /* type_wanted */,
14669                      0 /* Ignore count */,
14670                      pending_break_support,
14671                      &tracepoint_breakpoint_ops,
14672                      from_tty,
14673                      1 /* enabled */,
14674                      0 /* internal */, 0);
14675 }
14676
14677 /* strace command implementation.  Creates a static tracepoint.  */
14678
14679 static void
14680 strace_command (char *arg_in, int from_tty)
14681 {
14682   const char *arg = arg_in;
14683   struct breakpoint_ops *ops;
14684   event_location_up location;
14685
14686   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14687      or with a normal static tracepoint.  */
14688   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14689     {
14690       ops = &strace_marker_breakpoint_ops;
14691       location = new_linespec_location (&arg);
14692     }
14693   else
14694     {
14695       ops = &tracepoint_breakpoint_ops;
14696       location = string_to_event_location (&arg, current_language);
14697     }
14698
14699   create_breakpoint (get_current_arch (),
14700                      location.get (),
14701                      NULL, 0, arg, 1 /* parse arg */,
14702                      0 /* tempflag */,
14703                      bp_static_tracepoint /* type_wanted */,
14704                      0 /* Ignore count */,
14705                      pending_break_support,
14706                      ops,
14707                      from_tty,
14708                      1 /* enabled */,
14709                      0 /* internal */, 0);
14710 }
14711
14712 /* Set up a fake reader function that gets command lines from a linked
14713    list that was acquired during tracepoint uploading.  */
14714
14715 static struct uploaded_tp *this_utp;
14716 static int next_cmd;
14717
14718 static char *
14719 read_uploaded_action (void)
14720 {
14721   char *rslt;
14722
14723   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
14724
14725   next_cmd++;
14726
14727   return rslt;
14728 }
14729
14730 /* Given information about a tracepoint as recorded on a target (which
14731    can be either a live system or a trace file), attempt to create an
14732    equivalent GDB tracepoint.  This is not a reliable process, since
14733    the target does not necessarily have all the information used when
14734    the tracepoint was originally defined.  */
14735   
14736 struct tracepoint *
14737 create_tracepoint_from_upload (struct uploaded_tp *utp)
14738 {
14739   const char *addr_str;
14740   char small_buf[100];
14741   struct tracepoint *tp;
14742
14743   if (utp->at_string)
14744     addr_str = utp->at_string;
14745   else
14746     {
14747       /* In the absence of a source location, fall back to raw
14748          address.  Since there is no way to confirm that the address
14749          means the same thing as when the trace was started, warn the
14750          user.  */
14751       warning (_("Uploaded tracepoint %d has no "
14752                  "source location, using raw address"),
14753                utp->number);
14754       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14755       addr_str = small_buf;
14756     }
14757
14758   /* There's not much we can do with a sequence of bytecodes.  */
14759   if (utp->cond && !utp->cond_string)
14760     warning (_("Uploaded tracepoint %d condition "
14761                "has no source form, ignoring it"),
14762              utp->number);
14763
14764   event_location_up location = string_to_event_location (&addr_str,
14765                                                          current_language);
14766   if (!create_breakpoint (get_current_arch (),
14767                           location.get (),
14768                           utp->cond_string, -1, addr_str,
14769                           0 /* parse cond/thread */,
14770                           0 /* tempflag */,
14771                           utp->type /* type_wanted */,
14772                           0 /* Ignore count */,
14773                           pending_break_support,
14774                           &tracepoint_breakpoint_ops,
14775                           0 /* from_tty */,
14776                           utp->enabled /* enabled */,
14777                           0 /* internal */,
14778                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14779     return NULL;
14780
14781   /* Get the tracepoint we just created.  */
14782   tp = get_tracepoint (tracepoint_count);
14783   gdb_assert (tp != NULL);
14784
14785   if (utp->pass > 0)
14786     {
14787       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14788                  tp->number);
14789
14790       trace_pass_command (small_buf, 0);
14791     }
14792
14793   /* If we have uploaded versions of the original commands, set up a
14794      special-purpose "reader" function and call the usual command line
14795      reader, then pass the result to the breakpoint command-setting
14796      function.  */
14797   if (!VEC_empty (char_ptr, utp->cmd_strings))
14798     {
14799       command_line_up cmd_list;
14800
14801       this_utp = utp;
14802       next_cmd = 0;
14803
14804       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14805
14806       breakpoint_set_commands (tp, std::move (cmd_list));
14807     }
14808   else if (!VEC_empty (char_ptr, utp->actions)
14809            || !VEC_empty (char_ptr, utp->step_actions))
14810     warning (_("Uploaded tracepoint %d actions "
14811                "have no source form, ignoring them"),
14812              utp->number);
14813
14814   /* Copy any status information that might be available.  */
14815   tp->hit_count = utp->hit_count;
14816   tp->traceframe_usage = utp->traceframe_usage;
14817
14818   return tp;
14819 }
14820   
14821 /* Print information on tracepoint number TPNUM_EXP, or all if
14822    omitted.  */
14823
14824 static void
14825 info_tracepoints_command (char *args, int from_tty)
14826 {
14827   struct ui_out *uiout = current_uiout;
14828   int num_printed;
14829
14830   num_printed = breakpoint_1 (args, 0, is_tracepoint);
14831
14832   if (num_printed == 0)
14833     {
14834       if (args == NULL || *args == '\0')
14835         uiout->message ("No tracepoints.\n");
14836       else
14837         uiout->message ("No tracepoint matching '%s'.\n", args);
14838     }
14839
14840   default_collect_info ();
14841 }
14842
14843 /* The 'enable trace' command enables tracepoints.
14844    Not supported by all targets.  */
14845 static void
14846 enable_trace_command (char *args, int from_tty)
14847 {
14848   enable_command (args, from_tty);
14849 }
14850
14851 /* The 'disable trace' command disables tracepoints.
14852    Not supported by all targets.  */
14853 static void
14854 disable_trace_command (char *args, int from_tty)
14855 {
14856   disable_command (args, from_tty);
14857 }
14858
14859 /* Remove a tracepoint (or all if no argument).  */
14860 static void
14861 delete_trace_command (const char *arg, int from_tty)
14862 {
14863   struct breakpoint *b, *b_tmp;
14864
14865   dont_repeat ();
14866
14867   if (arg == 0)
14868     {
14869       int breaks_to_delete = 0;
14870
14871       /* Delete all breakpoints if no argument.
14872          Do not delete internal or call-dummy breakpoints, these
14873          have to be deleted with an explicit breakpoint number 
14874          argument.  */
14875       ALL_TRACEPOINTS (b)
14876         if (is_tracepoint (b) && user_breakpoint_p (b))
14877           {
14878             breaks_to_delete = 1;
14879             break;
14880           }
14881
14882       /* Ask user only if there are some breakpoints to delete.  */
14883       if (!from_tty
14884           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14885         {
14886           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14887             if (is_tracepoint (b) && user_breakpoint_p (b))
14888               delete_breakpoint (b);
14889         }
14890     }
14891   else
14892     map_breakpoint_numbers
14893       (arg, [&] (breakpoint *b)
14894        {
14895          iterate_over_related_breakpoints (b, delete_breakpoint);
14896        });
14897 }
14898
14899 /* Helper function for trace_pass_command.  */
14900
14901 static void
14902 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14903 {
14904   tp->pass_count = count;
14905   observer_notify_breakpoint_modified (tp);
14906   if (from_tty)
14907     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14908                      tp->number, count);
14909 }
14910
14911 /* Set passcount for tracepoint.
14912
14913    First command argument is passcount, second is tracepoint number.
14914    If tracepoint number omitted, apply to most recently defined.
14915    Also accepts special argument "all".  */
14916
14917 static void
14918 trace_pass_command (char *args, int from_tty)
14919 {
14920   struct tracepoint *t1;
14921   unsigned int count;
14922
14923   if (args == 0 || *args == 0)
14924     error (_("passcount command requires an "
14925              "argument (count + optional TP num)"));
14926
14927   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
14928
14929   args = skip_spaces (args);
14930   if (*args && strncasecmp (args, "all", 3) == 0)
14931     {
14932       struct breakpoint *b;
14933
14934       args += 3;                        /* Skip special argument "all".  */
14935       if (*args)
14936         error (_("Junk at end of arguments."));
14937
14938       ALL_TRACEPOINTS (b)
14939       {
14940         t1 = (struct tracepoint *) b;
14941         trace_pass_set_count (t1, count, from_tty);
14942       }
14943     }
14944   else if (*args == '\0')
14945     {
14946       t1 = get_tracepoint_by_number (&args, NULL);
14947       if (t1)
14948         trace_pass_set_count (t1, count, from_tty);
14949     }
14950   else
14951     {
14952       number_or_range_parser parser (args);
14953       while (!parser.finished ())
14954         {
14955           t1 = get_tracepoint_by_number (&args, &parser);
14956           if (t1)
14957             trace_pass_set_count (t1, count, from_tty);
14958         }
14959     }
14960 }
14961
14962 struct tracepoint *
14963 get_tracepoint (int num)
14964 {
14965   struct breakpoint *t;
14966
14967   ALL_TRACEPOINTS (t)
14968     if (t->number == num)
14969       return (struct tracepoint *) t;
14970
14971   return NULL;
14972 }
14973
14974 /* Find the tracepoint with the given target-side number (which may be
14975    different from the tracepoint number after disconnecting and
14976    reconnecting).  */
14977
14978 struct tracepoint *
14979 get_tracepoint_by_number_on_target (int num)
14980 {
14981   struct breakpoint *b;
14982
14983   ALL_TRACEPOINTS (b)
14984     {
14985       struct tracepoint *t = (struct tracepoint *) b;
14986
14987       if (t->number_on_target == num)
14988         return t;
14989     }
14990
14991   return NULL;
14992 }
14993
14994 /* Utility: parse a tracepoint number and look it up in the list.
14995    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14996    If the argument is missing, the most recent tracepoint
14997    (tracepoint_count) is returned.  */
14998
14999 struct tracepoint *
15000 get_tracepoint_by_number (char **arg,
15001                           number_or_range_parser *parser)
15002 {
15003   struct breakpoint *t;
15004   int tpnum;
15005   char *instring = arg == NULL ? NULL : *arg;
15006
15007   if (parser != NULL)
15008     {
15009       gdb_assert (!parser->finished ());
15010       tpnum = parser->get_number ();
15011     }
15012   else if (arg == NULL || *arg == NULL || ! **arg)
15013     tpnum = tracepoint_count;
15014   else
15015     tpnum = get_number (arg);
15016
15017   if (tpnum <= 0)
15018     {
15019       if (instring && *instring)
15020         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15021                          instring);
15022       else
15023         printf_filtered (_("No previous tracepoint\n"));
15024       return NULL;
15025     }
15026
15027   ALL_TRACEPOINTS (t)
15028     if (t->number == tpnum)
15029     {
15030       return (struct tracepoint *) t;
15031     }
15032
15033   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15034   return NULL;
15035 }
15036
15037 void
15038 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15039 {
15040   if (b->thread != -1)
15041     fprintf_unfiltered (fp, " thread %d", b->thread);
15042
15043   if (b->task != 0)
15044     fprintf_unfiltered (fp, " task %d", b->task);
15045
15046   fprintf_unfiltered (fp, "\n");
15047 }
15048
15049 /* Save information on user settable breakpoints (watchpoints, etc) to
15050    a new script file named FILENAME.  If FILTER is non-NULL, call it
15051    on each breakpoint and only include the ones for which it returns
15052    non-zero.  */
15053
15054 static void
15055 save_breakpoints (const char *filename, int from_tty,
15056                   int (*filter) (const struct breakpoint *))
15057 {
15058   struct breakpoint *tp;
15059   int any = 0;
15060   int extra_trace_bits = 0;
15061
15062   if (filename == 0 || *filename == 0)
15063     error (_("Argument required (file name in which to save)"));
15064
15065   /* See if we have anything to save.  */
15066   ALL_BREAKPOINTS (tp)
15067   {
15068     /* Skip internal and momentary breakpoints.  */
15069     if (!user_breakpoint_p (tp))
15070       continue;
15071
15072     /* If we have a filter, only save the breakpoints it accepts.  */
15073     if (filter && !filter (tp))
15074       continue;
15075
15076     any = 1;
15077
15078     if (is_tracepoint (tp))
15079       {
15080         extra_trace_bits = 1;
15081
15082         /* We can stop searching.  */
15083         break;
15084       }
15085   }
15086
15087   if (!any)
15088     {
15089       warning (_("Nothing to save."));
15090       return;
15091     }
15092
15093   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
15094
15095   stdio_file fp;
15096
15097   if (!fp.open (expanded_filename.get (), "w"))
15098     error (_("Unable to open file '%s' for saving (%s)"),
15099            expanded_filename.get (), safe_strerror (errno));
15100
15101   if (extra_trace_bits)
15102     save_trace_state_variables (&fp);
15103
15104   ALL_BREAKPOINTS (tp)
15105   {
15106     /* Skip internal and momentary breakpoints.  */
15107     if (!user_breakpoint_p (tp))
15108       continue;
15109
15110     /* If we have a filter, only save the breakpoints it accepts.  */
15111     if (filter && !filter (tp))
15112       continue;
15113
15114     tp->ops->print_recreate (tp, &fp);
15115
15116     /* Note, we can't rely on tp->number for anything, as we can't
15117        assume the recreated breakpoint numbers will match.  Use $bpnum
15118        instead.  */
15119
15120     if (tp->cond_string)
15121       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
15122
15123     if (tp->ignore_count)
15124       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
15125
15126     if (tp->type != bp_dprintf && tp->commands)
15127       {
15128         fp.puts ("  commands\n");
15129         
15130         current_uiout->redirect (&fp);
15131         TRY
15132           {
15133             print_command_lines (current_uiout, tp->commands.get (), 2);
15134           }
15135         CATCH (ex, RETURN_MASK_ALL)
15136           {
15137           current_uiout->redirect (NULL);
15138             throw_exception (ex);
15139           }
15140         END_CATCH
15141
15142         current_uiout->redirect (NULL);
15143         fp.puts ("  end\n");
15144       }
15145
15146     if (tp->enable_state == bp_disabled)
15147       fp.puts ("disable $bpnum\n");
15148
15149     /* If this is a multi-location breakpoint, check if the locations
15150        should be individually disabled.  Watchpoint locations are
15151        special, and not user visible.  */
15152     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15153       {
15154         struct bp_location *loc;
15155         int n = 1;
15156
15157         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15158           if (!loc->enabled)
15159             fp.printf ("disable $bpnum.%d\n", n);
15160       }
15161   }
15162
15163   if (extra_trace_bits && *default_collect)
15164     fp.printf ("set default-collect %s\n", default_collect);
15165
15166   if (from_tty)
15167     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15168 }
15169
15170 /* The `save breakpoints' command.  */
15171
15172 static void
15173 save_breakpoints_command (const char *args, int from_tty)
15174 {
15175   save_breakpoints (args, from_tty, NULL);
15176 }
15177
15178 /* The `save tracepoints' command.  */
15179
15180 static void
15181 save_tracepoints_command (const char *args, int from_tty)
15182 {
15183   save_breakpoints (args, from_tty, is_tracepoint);
15184 }
15185
15186 /* Create a vector of all tracepoints.  */
15187
15188 VEC(breakpoint_p) *
15189 all_tracepoints (void)
15190 {
15191   VEC(breakpoint_p) *tp_vec = 0;
15192   struct breakpoint *tp;
15193
15194   ALL_TRACEPOINTS (tp)
15195   {
15196     VEC_safe_push (breakpoint_p, tp_vec, tp);
15197   }
15198
15199   return tp_vec;
15200 }
15201
15202 \f
15203 /* This help string is used to consolidate all the help string for specifying
15204    locations used by several commands.  */
15205
15206 #define LOCATION_HELP_STRING \
15207 "Linespecs are colon-separated lists of location parameters, such as\n\
15208 source filename, function name, label name, and line number.\n\
15209 Example: To specify the start of a label named \"the_top\" in the\n\
15210 function \"fact\" in the file \"factorial.c\", use\n\
15211 \"factorial.c:fact:the_top\".\n\
15212 \n\
15213 Address locations begin with \"*\" and specify an exact address in the\n\
15214 program.  Example: To specify the fourth byte past the start function\n\
15215 \"main\", use \"*main + 4\".\n\
15216 \n\
15217 Explicit locations are similar to linespecs but use an option/argument\n\
15218 syntax to specify location parameters.\n\
15219 Example: To specify the start of the label named \"the_top\" in the\n\
15220 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15221 -function fact -label the_top\".\n"
15222
15223 /* This help string is used for the break, hbreak, tbreak and thbreak
15224    commands.  It is defined as a macro to prevent duplication.
15225    COMMAND should be a string constant containing the name of the
15226    command.  */
15227
15228 #define BREAK_ARGS_HELP(command) \
15229 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15230 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15231 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15232 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15233 `-probe-dtrace' (for a DTrace probe).\n\
15234 LOCATION may be a linespec, address, or explicit location as described\n\
15235 below.\n\
15236 \n\
15237 With no LOCATION, uses current execution address of the selected\n\
15238 stack frame.  This is useful for breaking on return to a stack frame.\n\
15239 \n\
15240 THREADNUM is the number from \"info threads\".\n\
15241 CONDITION is a boolean expression.\n\
15242 \n" LOCATION_HELP_STRING "\n\
15243 Multiple breakpoints at one place are permitted, and useful if their\n\
15244 conditions are different.\n\
15245 \n\
15246 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15247
15248 /* List of subcommands for "catch".  */
15249 static struct cmd_list_element *catch_cmdlist;
15250
15251 /* List of subcommands for "tcatch".  */
15252 static struct cmd_list_element *tcatch_cmdlist;
15253
15254 void
15255 add_catch_command (const char *name, const char *docstring,
15256                    cmd_sfunc_ftype *sfunc,
15257                    completer_ftype *completer,
15258                    void *user_data_catch,
15259                    void *user_data_tcatch)
15260 {
15261   struct cmd_list_element *command;
15262
15263   command = add_cmd (name, class_breakpoint, docstring,
15264                      &catch_cmdlist);
15265   set_cmd_sfunc (command, sfunc);
15266   set_cmd_context (command, user_data_catch);
15267   set_cmd_completer (command, completer);
15268
15269   command = add_cmd (name, class_breakpoint, docstring,
15270                      &tcatch_cmdlist);
15271   set_cmd_sfunc (command, sfunc);
15272   set_cmd_context (command, user_data_tcatch);
15273   set_cmd_completer (command, completer);
15274 }
15275
15276 static void
15277 save_command (const char *arg, int from_tty)
15278 {
15279   printf_unfiltered (_("\"save\" must be followed by "
15280                        "the name of a save subcommand.\n"));
15281   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15282 }
15283
15284 struct breakpoint *
15285 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15286                           void *data)
15287 {
15288   struct breakpoint *b, *b_tmp;
15289
15290   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15291     {
15292       if ((*callback) (b, data))
15293         return b;
15294     }
15295
15296   return NULL;
15297 }
15298
15299 /* Zero if any of the breakpoint's locations could be a location where
15300    functions have been inlined, nonzero otherwise.  */
15301
15302 static int
15303 is_non_inline_function (struct breakpoint *b)
15304 {
15305   /* The shared library event breakpoint is set on the address of a
15306      non-inline function.  */
15307   if (b->type == bp_shlib_event)
15308     return 1;
15309
15310   return 0;
15311 }
15312
15313 /* Nonzero if the specified PC cannot be a location where functions
15314    have been inlined.  */
15315
15316 int
15317 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15318                            const struct target_waitstatus *ws)
15319 {
15320   struct breakpoint *b;
15321   struct bp_location *bl;
15322
15323   ALL_BREAKPOINTS (b)
15324     {
15325       if (!is_non_inline_function (b))
15326         continue;
15327
15328       for (bl = b->loc; bl != NULL; bl = bl->next)
15329         {
15330           if (!bl->shlib_disabled
15331               && bpstat_check_location (bl, aspace, pc, ws))
15332             return 1;
15333         }
15334     }
15335
15336   return 0;
15337 }
15338
15339 /* Remove any references to OBJFILE which is going to be freed.  */
15340
15341 void
15342 breakpoint_free_objfile (struct objfile *objfile)
15343 {
15344   struct bp_location **locp, *loc;
15345
15346   ALL_BP_LOCATIONS (loc, locp)
15347     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15348       loc->symtab = NULL;
15349 }
15350
15351 void
15352 initialize_breakpoint_ops (void)
15353 {
15354   static int initialized = 0;
15355
15356   struct breakpoint_ops *ops;
15357
15358   if (initialized)
15359     return;
15360   initialized = 1;
15361
15362   /* The breakpoint_ops structure to be inherit by all kinds of
15363      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15364      internal and momentary breakpoints, etc.).  */
15365   ops = &bkpt_base_breakpoint_ops;
15366   *ops = base_breakpoint_ops;
15367   ops->re_set = bkpt_re_set;
15368   ops->insert_location = bkpt_insert_location;
15369   ops->remove_location = bkpt_remove_location;
15370   ops->breakpoint_hit = bkpt_breakpoint_hit;
15371   ops->create_sals_from_location = bkpt_create_sals_from_location;
15372   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15373   ops->decode_location = bkpt_decode_location;
15374
15375   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15376   ops = &bkpt_breakpoint_ops;
15377   *ops = bkpt_base_breakpoint_ops;
15378   ops->re_set = bkpt_re_set;
15379   ops->resources_needed = bkpt_resources_needed;
15380   ops->print_it = bkpt_print_it;
15381   ops->print_mention = bkpt_print_mention;
15382   ops->print_recreate = bkpt_print_recreate;
15383
15384   /* Ranged breakpoints.  */
15385   ops = &ranged_breakpoint_ops;
15386   *ops = bkpt_breakpoint_ops;
15387   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15388   ops->resources_needed = resources_needed_ranged_breakpoint;
15389   ops->print_it = print_it_ranged_breakpoint;
15390   ops->print_one = print_one_ranged_breakpoint;
15391   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15392   ops->print_mention = print_mention_ranged_breakpoint;
15393   ops->print_recreate = print_recreate_ranged_breakpoint;
15394
15395   /* Internal breakpoints.  */
15396   ops = &internal_breakpoint_ops;
15397   *ops = bkpt_base_breakpoint_ops;
15398   ops->re_set = internal_bkpt_re_set;
15399   ops->check_status = internal_bkpt_check_status;
15400   ops->print_it = internal_bkpt_print_it;
15401   ops->print_mention = internal_bkpt_print_mention;
15402
15403   /* Momentary breakpoints.  */
15404   ops = &momentary_breakpoint_ops;
15405   *ops = bkpt_base_breakpoint_ops;
15406   ops->re_set = momentary_bkpt_re_set;
15407   ops->check_status = momentary_bkpt_check_status;
15408   ops->print_it = momentary_bkpt_print_it;
15409   ops->print_mention = momentary_bkpt_print_mention;
15410
15411   /* Probe breakpoints.  */
15412   ops = &bkpt_probe_breakpoint_ops;
15413   *ops = bkpt_breakpoint_ops;
15414   ops->insert_location = bkpt_probe_insert_location;
15415   ops->remove_location = bkpt_probe_remove_location;
15416   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15417   ops->decode_location = bkpt_probe_decode_location;
15418
15419   /* Watchpoints.  */
15420   ops = &watchpoint_breakpoint_ops;
15421   *ops = base_breakpoint_ops;
15422   ops->re_set = re_set_watchpoint;
15423   ops->insert_location = insert_watchpoint;
15424   ops->remove_location = remove_watchpoint;
15425   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15426   ops->check_status = check_status_watchpoint;
15427   ops->resources_needed = resources_needed_watchpoint;
15428   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15429   ops->print_it = print_it_watchpoint;
15430   ops->print_mention = print_mention_watchpoint;
15431   ops->print_recreate = print_recreate_watchpoint;
15432   ops->explains_signal = explains_signal_watchpoint;
15433
15434   /* Masked watchpoints.  */
15435   ops = &masked_watchpoint_breakpoint_ops;
15436   *ops = watchpoint_breakpoint_ops;
15437   ops->insert_location = insert_masked_watchpoint;
15438   ops->remove_location = remove_masked_watchpoint;
15439   ops->resources_needed = resources_needed_masked_watchpoint;
15440   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15441   ops->print_it = print_it_masked_watchpoint;
15442   ops->print_one_detail = print_one_detail_masked_watchpoint;
15443   ops->print_mention = print_mention_masked_watchpoint;
15444   ops->print_recreate = print_recreate_masked_watchpoint;
15445
15446   /* Tracepoints.  */
15447   ops = &tracepoint_breakpoint_ops;
15448   *ops = base_breakpoint_ops;
15449   ops->re_set = tracepoint_re_set;
15450   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15451   ops->print_one_detail = tracepoint_print_one_detail;
15452   ops->print_mention = tracepoint_print_mention;
15453   ops->print_recreate = tracepoint_print_recreate;
15454   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15455   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15456   ops->decode_location = tracepoint_decode_location;
15457
15458   /* Probe tracepoints.  */
15459   ops = &tracepoint_probe_breakpoint_ops;
15460   *ops = tracepoint_breakpoint_ops;
15461   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15462   ops->decode_location = tracepoint_probe_decode_location;
15463
15464   /* Static tracepoints with marker (`-m').  */
15465   ops = &strace_marker_breakpoint_ops;
15466   *ops = tracepoint_breakpoint_ops;
15467   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15468   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15469   ops->decode_location = strace_marker_decode_location;
15470
15471   /* Fork catchpoints.  */
15472   ops = &catch_fork_breakpoint_ops;
15473   *ops = base_breakpoint_ops;
15474   ops->insert_location = insert_catch_fork;
15475   ops->remove_location = remove_catch_fork;
15476   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15477   ops->print_it = print_it_catch_fork;
15478   ops->print_one = print_one_catch_fork;
15479   ops->print_mention = print_mention_catch_fork;
15480   ops->print_recreate = print_recreate_catch_fork;
15481
15482   /* Vfork catchpoints.  */
15483   ops = &catch_vfork_breakpoint_ops;
15484   *ops = base_breakpoint_ops;
15485   ops->insert_location = insert_catch_vfork;
15486   ops->remove_location = remove_catch_vfork;
15487   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15488   ops->print_it = print_it_catch_vfork;
15489   ops->print_one = print_one_catch_vfork;
15490   ops->print_mention = print_mention_catch_vfork;
15491   ops->print_recreate = print_recreate_catch_vfork;
15492
15493   /* Exec catchpoints.  */
15494   ops = &catch_exec_breakpoint_ops;
15495   *ops = base_breakpoint_ops;
15496   ops->insert_location = insert_catch_exec;
15497   ops->remove_location = remove_catch_exec;
15498   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15499   ops->print_it = print_it_catch_exec;
15500   ops->print_one = print_one_catch_exec;
15501   ops->print_mention = print_mention_catch_exec;
15502   ops->print_recreate = print_recreate_catch_exec;
15503
15504   /* Solib-related catchpoints.  */
15505   ops = &catch_solib_breakpoint_ops;
15506   *ops = base_breakpoint_ops;
15507   ops->insert_location = insert_catch_solib;
15508   ops->remove_location = remove_catch_solib;
15509   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15510   ops->check_status = check_status_catch_solib;
15511   ops->print_it = print_it_catch_solib;
15512   ops->print_one = print_one_catch_solib;
15513   ops->print_mention = print_mention_catch_solib;
15514   ops->print_recreate = print_recreate_catch_solib;
15515
15516   ops = &dprintf_breakpoint_ops;
15517   *ops = bkpt_base_breakpoint_ops;
15518   ops->re_set = dprintf_re_set;
15519   ops->resources_needed = bkpt_resources_needed;
15520   ops->print_it = bkpt_print_it;
15521   ops->print_mention = bkpt_print_mention;
15522   ops->print_recreate = dprintf_print_recreate;
15523   ops->after_condition_true = dprintf_after_condition_true;
15524   ops->breakpoint_hit = dprintf_breakpoint_hit;
15525 }
15526
15527 /* Chain containing all defined "enable breakpoint" subcommands.  */
15528
15529 static struct cmd_list_element *enablebreaklist = NULL;
15530
15531 void
15532 _initialize_breakpoint (void)
15533 {
15534   struct cmd_list_element *c;
15535
15536   initialize_breakpoint_ops ();
15537
15538   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15539   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
15540   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15541
15542   breakpoint_objfile_key
15543     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15544
15545   breakpoint_chain = 0;
15546   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15547      before a breakpoint is set.  */
15548   breakpoint_count = 0;
15549
15550   tracepoint_count = 0;
15551
15552   add_com ("ignore", class_breakpoint, ignore_command, _("\
15553 Set ignore-count of breakpoint number N to COUNT.\n\
15554 Usage is `ignore N COUNT'."));
15555
15556   add_com ("commands", class_breakpoint, commands_command, _("\
15557 Set commands to be executed when the given breakpoints are hit.\n\
15558 Give a space-separated breakpoint list as argument after \"commands\".\n\
15559 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15560 (e.g. `5-7').\n\
15561 With no argument, the targeted breakpoint is the last one set.\n\
15562 The commands themselves follow starting on the next line.\n\
15563 Type a line containing \"end\" to indicate the end of them.\n\
15564 Give \"silent\" as the first line to make the breakpoint silent;\n\
15565 then no output is printed when it is hit, except what the commands print."));
15566
15567   c = add_com ("condition", class_breakpoint, condition_command, _("\
15568 Specify breakpoint number N to break only if COND is true.\n\
15569 Usage is `condition N COND', where N is an integer and COND is an\n\
15570 expression to be evaluated whenever breakpoint N is reached."));
15571   set_cmd_completer (c, condition_completer);
15572
15573   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15574 Set a temporary breakpoint.\n\
15575 Like \"break\" except the breakpoint is only temporary,\n\
15576 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15577 by using \"enable delete\" on the breakpoint number.\n\
15578 \n"
15579 BREAK_ARGS_HELP ("tbreak")));
15580   set_cmd_completer (c, location_completer);
15581
15582   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15583 Set a hardware assisted breakpoint.\n\
15584 Like \"break\" except the breakpoint requires hardware support,\n\
15585 some target hardware may not have this support.\n\
15586 \n"
15587 BREAK_ARGS_HELP ("hbreak")));
15588   set_cmd_completer (c, location_completer);
15589
15590   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15591 Set a temporary hardware assisted breakpoint.\n\
15592 Like \"hbreak\" except the breakpoint is only temporary,\n\
15593 so it will be deleted when hit.\n\
15594 \n"
15595 BREAK_ARGS_HELP ("thbreak")));
15596   set_cmd_completer (c, location_completer);
15597
15598   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15599 Enable some breakpoints.\n\
15600 Give breakpoint numbers (separated by spaces) as arguments.\n\
15601 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15602 This is used to cancel the effect of the \"disable\" command.\n\
15603 With a subcommand you can enable temporarily."),
15604                   &enablelist, "enable ", 1, &cmdlist);
15605
15606   add_com_alias ("en", "enable", class_breakpoint, 1);
15607
15608   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15609 Enable some breakpoints.\n\
15610 Give breakpoint numbers (separated by spaces) as arguments.\n\
15611 This is used to cancel the effect of the \"disable\" command.\n\
15612 May be abbreviated to simply \"enable\".\n"),
15613                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15614
15615   add_cmd ("once", no_class, enable_once_command, _("\
15616 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15617 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15618            &enablebreaklist);
15619
15620   add_cmd ("delete", no_class, enable_delete_command, _("\
15621 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15622 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15623            &enablebreaklist);
15624
15625   add_cmd ("count", no_class, enable_count_command, _("\
15626 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15627 If a breakpoint is hit while enabled in this fashion,\n\
15628 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15629            &enablebreaklist);
15630
15631   add_cmd ("delete", no_class, enable_delete_command, _("\
15632 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15633 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15634            &enablelist);
15635
15636   add_cmd ("once", no_class, enable_once_command, _("\
15637 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15638 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15639            &enablelist);
15640
15641   add_cmd ("count", no_class, enable_count_command, _("\
15642 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15643 If a breakpoint is hit while enabled in this fashion,\n\
15644 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15645            &enablelist);
15646
15647   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15648 Disable some breakpoints.\n\
15649 Arguments are breakpoint numbers with spaces in between.\n\
15650 To disable all breakpoints, give no argument.\n\
15651 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15652                   &disablelist, "disable ", 1, &cmdlist);
15653   add_com_alias ("dis", "disable", class_breakpoint, 1);
15654   add_com_alias ("disa", "disable", class_breakpoint, 1);
15655
15656   add_cmd ("breakpoints", class_alias, disable_command, _("\
15657 Disable some breakpoints.\n\
15658 Arguments are breakpoint numbers with spaces in between.\n\
15659 To disable all breakpoints, give no argument.\n\
15660 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15661 This command may be abbreviated \"disable\"."),
15662            &disablelist);
15663
15664   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15665 Delete some breakpoints or auto-display expressions.\n\
15666 Arguments are breakpoint numbers with spaces in between.\n\
15667 To delete all breakpoints, give no argument.\n\
15668 \n\
15669 Also a prefix command for deletion of other GDB objects.\n\
15670 The \"unset\" command is also an alias for \"delete\"."),
15671                   &deletelist, "delete ", 1, &cmdlist);
15672   add_com_alias ("d", "delete", class_breakpoint, 1);
15673   add_com_alias ("del", "delete", class_breakpoint, 1);
15674
15675   add_cmd ("breakpoints", class_alias, delete_command, _("\
15676 Delete some breakpoints or auto-display expressions.\n\
15677 Arguments are breakpoint numbers with spaces in between.\n\
15678 To delete all breakpoints, give no argument.\n\
15679 This command may be abbreviated \"delete\"."),
15680            &deletelist);
15681
15682   add_com ("clear", class_breakpoint, clear_command, _("\
15683 Clear breakpoint at specified location.\n\
15684 Argument may be a linespec, explicit, or address location as described below.\n\
15685 \n\
15686 With no argument, clears all breakpoints in the line that the selected frame\n\
15687 is executing in.\n"
15688 "\n" LOCATION_HELP_STRING "\n\
15689 See also the \"delete\" command which clears breakpoints by number."));
15690   add_com_alias ("cl", "clear", class_breakpoint, 1);
15691
15692   c = add_com ("break", class_breakpoint, break_command, _("\
15693 Set breakpoint at specified location.\n"
15694 BREAK_ARGS_HELP ("break")));
15695   set_cmd_completer (c, location_completer);
15696
15697   add_com_alias ("b", "break", class_run, 1);
15698   add_com_alias ("br", "break", class_run, 1);
15699   add_com_alias ("bre", "break", class_run, 1);
15700   add_com_alias ("brea", "break", class_run, 1);
15701
15702   if (dbx_commands)
15703     {
15704       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15705 Break in function/address or break at a line in the current file."),
15706                              &stoplist, "stop ", 1, &cmdlist);
15707       add_cmd ("in", class_breakpoint, stopin_command,
15708                _("Break in function or address."), &stoplist);
15709       add_cmd ("at", class_breakpoint, stopat_command,
15710                _("Break at a line in the current file."), &stoplist);
15711       add_com ("status", class_info, info_breakpoints_command, _("\
15712 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15713 The \"Type\" column indicates one of:\n\
15714 \tbreakpoint     - normal breakpoint\n\
15715 \twatchpoint     - watchpoint\n\
15716 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15717 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15718 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15719 address and file/line number respectively.\n\
15720 \n\
15721 Convenience variable \"$_\" and default examine address for \"x\"\n\
15722 are set to the address of the last breakpoint listed unless the command\n\
15723 is prefixed with \"server \".\n\n\
15724 Convenience variable \"$bpnum\" contains the number of the last\n\
15725 breakpoint set."));
15726     }
15727
15728   add_info ("breakpoints", info_breakpoints_command, _("\
15729 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15730 The \"Type\" column indicates one of:\n\
15731 \tbreakpoint     - normal breakpoint\n\
15732 \twatchpoint     - watchpoint\n\
15733 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15734 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15735 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15736 address and file/line number respectively.\n\
15737 \n\
15738 Convenience variable \"$_\" and default examine address for \"x\"\n\
15739 are set to the address of the last breakpoint listed unless the command\n\
15740 is prefixed with \"server \".\n\n\
15741 Convenience variable \"$bpnum\" contains the number of the last\n\
15742 breakpoint set."));
15743
15744   add_info_alias ("b", "breakpoints", 1);
15745
15746   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15747 Status of all breakpoints, or breakpoint number NUMBER.\n\
15748 The \"Type\" column indicates one of:\n\
15749 \tbreakpoint     - normal breakpoint\n\
15750 \twatchpoint     - watchpoint\n\
15751 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15752 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15753 \tuntil          - internal breakpoint used by the \"until\" command\n\
15754 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15755 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15756 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15757 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15758 address and file/line number respectively.\n\
15759 \n\
15760 Convenience variable \"$_\" and default examine address for \"x\"\n\
15761 are set to the address of the last breakpoint listed unless the command\n\
15762 is prefixed with \"server \".\n\n\
15763 Convenience variable \"$bpnum\" contains the number of the last\n\
15764 breakpoint set."),
15765            &maintenanceinfolist);
15766
15767   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15768 Set catchpoints to catch events."),
15769                   &catch_cmdlist, "catch ",
15770                   0/*allow-unknown*/, &cmdlist);
15771
15772   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15773 Set temporary catchpoints to catch events."),
15774                   &tcatch_cmdlist, "tcatch ",
15775                   0/*allow-unknown*/, &cmdlist);
15776
15777   add_catch_command ("fork", _("Catch calls to fork."),
15778                      catch_fork_command_1,
15779                      NULL,
15780                      (void *) (uintptr_t) catch_fork_permanent,
15781                      (void *) (uintptr_t) catch_fork_temporary);
15782   add_catch_command ("vfork", _("Catch calls to vfork."),
15783                      catch_fork_command_1,
15784                      NULL,
15785                      (void *) (uintptr_t) catch_vfork_permanent,
15786                      (void *) (uintptr_t) catch_vfork_temporary);
15787   add_catch_command ("exec", _("Catch calls to exec."),
15788                      catch_exec_command_1,
15789                      NULL,
15790                      CATCH_PERMANENT,
15791                      CATCH_TEMPORARY);
15792   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15793 Usage: catch load [REGEX]\n\
15794 If REGEX is given, only stop for libraries matching the regular expression."),
15795                      catch_load_command_1,
15796                      NULL,
15797                      CATCH_PERMANENT,
15798                      CATCH_TEMPORARY);
15799   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15800 Usage: catch unload [REGEX]\n\
15801 If REGEX is given, only stop for libraries matching the regular expression."),
15802                      catch_unload_command_1,
15803                      NULL,
15804                      CATCH_PERMANENT,
15805                      CATCH_TEMPORARY);
15806
15807   c = add_com ("watch", class_breakpoint, watch_command, _("\
15808 Set a watchpoint for an expression.\n\
15809 Usage: watch [-l|-location] EXPRESSION\n\
15810 A watchpoint stops execution of your program whenever the value of\n\
15811 an expression changes.\n\
15812 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15813 the memory to which it refers."));
15814   set_cmd_completer (c, expression_completer);
15815
15816   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15817 Set a read watchpoint for an expression.\n\
15818 Usage: rwatch [-l|-location] EXPRESSION\n\
15819 A watchpoint stops execution of your program whenever the value of\n\
15820 an expression is read.\n\
15821 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15822 the memory to which it refers."));
15823   set_cmd_completer (c, expression_completer);
15824
15825   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15826 Set a watchpoint for an expression.\n\
15827 Usage: awatch [-l|-location] EXPRESSION\n\
15828 A watchpoint stops execution of your program whenever the value of\n\
15829 an expression is either read or written.\n\
15830 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15831 the memory to which it refers."));
15832   set_cmd_completer (c, expression_completer);
15833
15834   add_info ("watchpoints", info_watchpoints_command, _("\
15835 Status of specified watchpoints (all watchpoints if no argument)."));
15836
15837   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15838      respond to changes - contrary to the description.  */
15839   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15840                             &can_use_hw_watchpoints, _("\
15841 Set debugger's willingness to use watchpoint hardware."), _("\
15842 Show debugger's willingness to use watchpoint hardware."), _("\
15843 If zero, gdb will not use hardware for new watchpoints, even if\n\
15844 such is available.  (However, any hardware watchpoints that were\n\
15845 created before setting this to nonzero, will continue to use watchpoint\n\
15846 hardware.)"),
15847                             NULL,
15848                             show_can_use_hw_watchpoints,
15849                             &setlist, &showlist);
15850
15851   can_use_hw_watchpoints = 1;
15852
15853   /* Tracepoint manipulation commands.  */
15854
15855   c = add_com ("trace", class_breakpoint, trace_command, _("\
15856 Set a tracepoint at specified location.\n\
15857 \n"
15858 BREAK_ARGS_HELP ("trace") "\n\
15859 Do \"help tracepoints\" for info on other tracepoint commands."));
15860   set_cmd_completer (c, location_completer);
15861
15862   add_com_alias ("tp", "trace", class_alias, 0);
15863   add_com_alias ("tr", "trace", class_alias, 1);
15864   add_com_alias ("tra", "trace", class_alias, 1);
15865   add_com_alias ("trac", "trace", class_alias, 1);
15866
15867   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15868 Set a fast tracepoint at specified location.\n\
15869 \n"
15870 BREAK_ARGS_HELP ("ftrace") "\n\
15871 Do \"help tracepoints\" for info on other tracepoint commands."));
15872   set_cmd_completer (c, location_completer);
15873
15874   c = add_com ("strace", class_breakpoint, strace_command, _("\
15875 Set a static tracepoint at location or marker.\n\
15876 \n\
15877 strace [LOCATION] [if CONDITION]\n\
15878 LOCATION may be a linespec, explicit, or address location (described below) \n\
15879 or -m MARKER_ID.\n\n\
15880 If a marker id is specified, probe the marker with that name.  With\n\
15881 no LOCATION, uses current execution address of the selected stack frame.\n\
15882 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15883 This collects arbitrary user data passed in the probe point call to the\n\
15884 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15885 by printing the $_sdata variable like any other convenience variable.\n\
15886 \n\
15887 CONDITION is a boolean expression.\n\
15888 \n" LOCATION_HELP_STRING "\n\
15889 Multiple tracepoints at one place are permitted, and useful if their\n\
15890 conditions are different.\n\
15891 \n\
15892 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15893 Do \"help tracepoints\" for info on other tracepoint commands."));
15894   set_cmd_completer (c, location_completer);
15895
15896   add_info ("tracepoints", info_tracepoints_command, _("\
15897 Status of specified tracepoints (all tracepoints if no argument).\n\
15898 Convenience variable \"$tpnum\" contains the number of the\n\
15899 last tracepoint set."));
15900
15901   add_info_alias ("tp", "tracepoints", 1);
15902
15903   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15904 Delete specified tracepoints.\n\
15905 Arguments are tracepoint numbers, separated by spaces.\n\
15906 No argument means delete all tracepoints."),
15907            &deletelist);
15908   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15909
15910   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15911 Disable specified tracepoints.\n\
15912 Arguments are tracepoint numbers, separated by spaces.\n\
15913 No argument means disable all tracepoints."),
15914            &disablelist);
15915   deprecate_cmd (c, "disable");
15916
15917   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15918 Enable specified tracepoints.\n\
15919 Arguments are tracepoint numbers, separated by spaces.\n\
15920 No argument means enable all tracepoints."),
15921            &enablelist);
15922   deprecate_cmd (c, "enable");
15923
15924   add_com ("passcount", class_trace, trace_pass_command, _("\
15925 Set the passcount for a tracepoint.\n\
15926 The trace will end when the tracepoint has been passed 'count' times.\n\
15927 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15928 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15929
15930   add_prefix_cmd ("save", class_breakpoint, save_command,
15931                   _("Save breakpoint definitions as a script."),
15932                   &save_cmdlist, "save ",
15933                   0/*allow-unknown*/, &cmdlist);
15934
15935   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15936 Save current breakpoint definitions as a script.\n\
15937 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15938 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15939 session to restore them."),
15940                &save_cmdlist);
15941   set_cmd_completer (c, filename_completer);
15942
15943   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15944 Save current tracepoint definitions as a script.\n\
15945 Use the 'source' command in another debug session to restore them."),
15946                &save_cmdlist);
15947   set_cmd_completer (c, filename_completer);
15948
15949   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15950   deprecate_cmd (c, "save tracepoints");
15951
15952   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15953 Breakpoint specific settings\n\
15954 Configure various breakpoint-specific variables such as\n\
15955 pending breakpoint behavior"),
15956                   &breakpoint_set_cmdlist, "set breakpoint ",
15957                   0/*allow-unknown*/, &setlist);
15958   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15959 Breakpoint specific settings\n\
15960 Configure various breakpoint-specific variables such as\n\
15961 pending breakpoint behavior"),
15962                   &breakpoint_show_cmdlist, "show breakpoint ",
15963                   0/*allow-unknown*/, &showlist);
15964
15965   add_setshow_auto_boolean_cmd ("pending", no_class,
15966                                 &pending_break_support, _("\
15967 Set debugger's behavior regarding pending breakpoints."), _("\
15968 Show debugger's behavior regarding pending breakpoints."), _("\
15969 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15970 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15971 an error.  If auto, an unrecognized breakpoint location results in a\n\
15972 user-query to see if a pending breakpoint should be created."),
15973                                 NULL,
15974                                 show_pending_break_support,
15975                                 &breakpoint_set_cmdlist,
15976                                 &breakpoint_show_cmdlist);
15977
15978   pending_break_support = AUTO_BOOLEAN_AUTO;
15979
15980   add_setshow_boolean_cmd ("auto-hw", no_class,
15981                            &automatic_hardware_breakpoints, _("\
15982 Set automatic usage of hardware breakpoints."), _("\
15983 Show automatic usage of hardware breakpoints."), _("\
15984 If set, the debugger will automatically use hardware breakpoints for\n\
15985 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15986 a warning will be emitted for such breakpoints."),
15987                            NULL,
15988                            show_automatic_hardware_breakpoints,
15989                            &breakpoint_set_cmdlist,
15990                            &breakpoint_show_cmdlist);
15991
15992   add_setshow_boolean_cmd ("always-inserted", class_support,
15993                            &always_inserted_mode, _("\
15994 Set mode for inserting breakpoints."), _("\
15995 Show mode for inserting breakpoints."), _("\
15996 When this mode is on, breakpoints are inserted immediately as soon as\n\
15997 they're created, kept inserted even when execution stops, and removed\n\
15998 only when the user deletes them.  When this mode is off (the default),\n\
15999 breakpoints are inserted only when execution continues, and removed\n\
16000 when execution stops."),
16001                                 NULL,
16002                                 &show_always_inserted_mode,
16003                                 &breakpoint_set_cmdlist,
16004                                 &breakpoint_show_cmdlist);
16005
16006   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16007                         condition_evaluation_enums,
16008                         &condition_evaluation_mode_1, _("\
16009 Set mode of breakpoint condition evaluation."), _("\
16010 Show mode of breakpoint condition evaluation."), _("\
16011 When this is set to \"host\", breakpoint conditions will be\n\
16012 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16013 breakpoint conditions will be downloaded to the target (if the target\n\
16014 supports such feature) and conditions will be evaluated on the target's side.\n\
16015 If this is set to \"auto\" (default), this will be automatically set to\n\
16016 \"target\" if it supports condition evaluation, otherwise it will\n\
16017 be set to \"gdb\""),
16018                            &set_condition_evaluation_mode,
16019                            &show_condition_evaluation_mode,
16020                            &breakpoint_set_cmdlist,
16021                            &breakpoint_show_cmdlist);
16022
16023   add_com ("break-range", class_breakpoint, break_range_command, _("\
16024 Set a breakpoint for an address range.\n\
16025 break-range START-LOCATION, END-LOCATION\n\
16026 where START-LOCATION and END-LOCATION can be one of the following:\n\
16027   LINENUM, for that line in the current file,\n\
16028   FILE:LINENUM, for that line in that file,\n\
16029   +OFFSET, for that number of lines after the current line\n\
16030            or the start of the range\n\
16031   FUNCTION, for the first line in that function,\n\
16032   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16033   *ADDRESS, for the instruction at that address.\n\
16034 \n\
16035 The breakpoint will stop execution of the inferior whenever it executes\n\
16036 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16037 range (including START-LOCATION and END-LOCATION)."));
16038
16039   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16040 Set a dynamic printf at specified location.\n\
16041 dprintf location,format string,arg1,arg2,...\n\
16042 location may be a linespec, explicit, or address location.\n"
16043 "\n" LOCATION_HELP_STRING));
16044   set_cmd_completer (c, location_completer);
16045
16046   add_setshow_enum_cmd ("dprintf-style", class_support,
16047                         dprintf_style_enums, &dprintf_style, _("\
16048 Set the style of usage for dynamic printf."), _("\
16049 Show the style of usage for dynamic printf."), _("\
16050 This setting chooses how GDB will do a dynamic printf.\n\
16051 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16052 console, as with the \"printf\" command.\n\
16053 If the value is \"call\", the print is done by calling a function in your\n\
16054 program; by default printf(), but you can choose a different function or\n\
16055 output stream by setting dprintf-function and dprintf-channel."),
16056                         update_dprintf_commands, NULL,
16057                         &setlist, &showlist);
16058
16059   dprintf_function = xstrdup ("printf");
16060   add_setshow_string_cmd ("dprintf-function", class_support,
16061                           &dprintf_function, _("\
16062 Set the function to use for dynamic printf"), _("\
16063 Show the function to use for dynamic printf"), NULL,
16064                           update_dprintf_commands, NULL,
16065                           &setlist, &showlist);
16066
16067   dprintf_channel = xstrdup ("");
16068   add_setshow_string_cmd ("dprintf-channel", class_support,
16069                           &dprintf_channel, _("\
16070 Set the channel to use for dynamic printf"), _("\
16071 Show the channel to use for dynamic printf"), NULL,
16072                           update_dprintf_commands, NULL,
16073                           &setlist, &showlist);
16074
16075   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16076                            &disconnected_dprintf, _("\
16077 Set whether dprintf continues after GDB disconnects."), _("\
16078 Show whether dprintf continues after GDB disconnects."), _("\
16079 Use this to let dprintf commands continue to hit and produce output\n\
16080 even if GDB disconnects or detaches from the target."),
16081                            NULL,
16082                            NULL,
16083                            &setlist, &showlist);
16084
16085   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16086 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16087 (target agent only) This is useful for formatted output in user-defined commands."));
16088
16089   automatic_hardware_breakpoints = 1;
16090
16091   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16092   observer_attach_thread_exit (remove_threaded_breakpoints);
16093 }