Rename _const functions to use overloading instead
[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 "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "block.h"
51 #include "solib.h"
52 #include "solist.h"
53 #include "observer.h"
54 #include "memattr.h"
55 #include "ada-lang.h"
56 #include "top.h"
57 #include "valprint.h"
58 #include "jit.h"
59 #include "parser-defs.h"
60 #include "gdb_regex.h"
61 #include "probe.h"
62 #include "cli/cli-utils.h"
63 #include "continuations.h"
64 #include "stack.h"
65 #include "skip.h"
66 #include "ax-gdb.h"
67 #include "dummy-frame.h"
68 #include "interps.h"
69 #include "format.h"
70 #include "thread-fsm.h"
71 #include "tid-parse.h"
72
73 /* readline include files */
74 #include "readline/readline.h"
75 #include "readline/history.h"
76
77 /* readline defines this.  */
78 #undef savestring
79
80 #include "mi/mi-common.h"
81 #include "extension.h"
82 #include <algorithm>
83 #include "progspace-and-thread.h"
84 #include "common/array-view.h"
85 #include "common/gdb_optional.h"
86
87 /* Enums for exception-handling support.  */
88 enum exception_event_kind
89 {
90   EX_EVENT_THROW,
91   EX_EVENT_RETHROW,
92   EX_EVENT_CATCH
93 };
94
95 /* Prototypes for local functions.  */
96
97 static void enable_delete_command (char *, int);
98
99 static void enable_once_command (char *, int);
100
101 static void enable_count_command (char *, int);
102
103 static void disable_command (char *, int);
104
105 static void enable_command (char *, int);
106
107 static void map_breakpoint_numbers (const char *,
108                                     void (*) (struct breakpoint *,
109                                               void *),
110                                     void *);
111
112 static void ignore_command (char *, int);
113
114 static int breakpoint_re_set_one (void *);
115
116 static void breakpoint_re_set_default (struct breakpoint *);
117
118 static void
119   create_sals_from_location_default (const struct event_location *location,
120                                      struct linespec_result *canonical,
121                                      enum bptype type_wanted);
122
123 static void create_breakpoints_sal_default (struct gdbarch *,
124                                             struct linespec_result *,
125                                             gdb::unique_xmalloc_ptr<char>,
126                                             gdb::unique_xmalloc_ptr<char>,
127                                             enum bptype,
128                                             enum bpdisp, int, int,
129                                             int,
130                                             const struct breakpoint_ops *,
131                                             int, int, int, unsigned);
132
133 static std::vector<symtab_and_line> decode_location_default
134   (struct breakpoint *b, const struct event_location *location,
135    struct program_space *search_pspace);
136
137 static void clear_command (char *, int);
138
139 static void catch_command (char *, int);
140
141 static int can_use_hardware_watchpoint (struct value *);
142
143 static void break_command_1 (char *, int, int);
144
145 static void mention (struct breakpoint *);
146
147 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
148                                                                enum bptype,
149                                                                const struct breakpoint_ops *);
150 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
151                                                        const struct symtab_and_line *);
152
153 /* This function is used in gdbtk sources and thus can not be made
154    static.  */
155 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
156                                        struct symtab_and_line,
157                                        enum bptype,
158                                        const struct breakpoint_ops *);
159
160 static struct breakpoint *
161   momentary_breakpoint_from_master (struct breakpoint *orig,
162                                     enum bptype type,
163                                     const struct breakpoint_ops *ops,
164                                     int loc_enabled);
165
166 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
167
168 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
169                                             CORE_ADDR bpaddr,
170                                             enum bptype bptype);
171
172 static void describe_other_breakpoints (struct gdbarch *,
173                                         struct program_space *, CORE_ADDR,
174                                         struct obj_section *, int);
175
176 static int watchpoint_locations_match (struct bp_location *loc1,
177                                        struct bp_location *loc2);
178
179 static int breakpoint_location_address_match (struct bp_location *bl,
180                                               struct address_space *aspace,
181                                               CORE_ADDR addr);
182
183 static int breakpoint_location_address_range_overlap (struct bp_location *,
184                                                       struct address_space *,
185                                                       CORE_ADDR, int);
186
187 static void info_breakpoints_command (char *, int);
188
189 static void info_watchpoints_command (char *, int);
190
191 static int breakpoint_1 (char *, int, 
192                          int (*) (const struct breakpoint *));
193
194 static int breakpoint_cond_eval (void *);
195
196 static void cleanup_executing_breakpoints (void *);
197
198 static void commands_command (char *, int);
199
200 static void condition_command (char *, int);
201
202 static int remove_breakpoint (struct bp_location *);
203 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
204
205 static enum print_stop_action print_bp_stop_message (bpstat bs);
206
207 static int watchpoint_check (void *);
208
209 static void maintenance_info_breakpoints (char *, int);
210
211 static int hw_breakpoint_used_count (void);
212
213 static int hw_watchpoint_use_count (struct breakpoint *);
214
215 static int hw_watchpoint_used_count_others (struct breakpoint *except,
216                                             enum bptype type,
217                                             int *other_type_used);
218
219 static void hbreak_command (char *, int);
220
221 static void thbreak_command (char *, int);
222
223 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
224                                     int count);
225
226 static void stop_command (char *arg, int from_tty);
227
228 static void stopin_command (char *arg, int from_tty);
229
230 static void stopat_command (char *arg, int from_tty);
231
232 static void tcatch_command (char *arg, int from_tty);
233
234 static void free_bp_location (struct bp_location *loc);
235 static void incref_bp_location (struct bp_location *loc);
236 static void decref_bp_location (struct bp_location **loc);
237
238 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
239
240 /* update_global_location_list's modes of operation wrt to whether to
241    insert locations now.  */
242 enum ugll_insert_mode
243 {
244   /* Don't insert any breakpoint locations into the inferior, only
245      remove already-inserted locations that no longer should be
246      inserted.  Functions that delete a breakpoint or breakpoints
247      should specify this mode, so that deleting a breakpoint doesn't
248      have the side effect of inserting the locations of other
249      breakpoints that are marked not-inserted, but should_be_inserted
250      returns true on them.
251
252      This behavior is useful is situations close to tear-down -- e.g.,
253      after an exec, while the target still has execution, but
254      breakpoint shadows of the previous executable image should *NOT*
255      be restored to the new image; or before detaching, where the
256      target still has execution and wants to delete breakpoints from
257      GDB's lists, and all breakpoints had already been removed from
258      the inferior.  */
259   UGLL_DONT_INSERT,
260
261   /* May insert breakpoints iff breakpoints_should_be_inserted_now
262      claims breakpoints should be inserted now.  */
263   UGLL_MAY_INSERT,
264
265   /* Insert locations now, irrespective of
266      breakpoints_should_be_inserted_now.  E.g., say all threads are
267      stopped right now, and the user did "continue".  We need to
268      insert breakpoints _before_ resuming the target, but
269      UGLL_MAY_INSERT wouldn't insert them, because
270      breakpoints_should_be_inserted_now returns false at that point,
271      as no thread is running yet.  */
272   UGLL_INSERT
273 };
274
275 static void update_global_location_list (enum ugll_insert_mode);
276
277 static void update_global_location_list_nothrow (enum ugll_insert_mode);
278
279 static int is_hardware_watchpoint (const struct breakpoint *bpt);
280
281 static void insert_breakpoint_locations (void);
282
283 static void info_tracepoints_command (char *, int);
284
285 static void delete_trace_command (char *, int);
286
287 static void enable_trace_command (char *, int);
288
289 static void disable_trace_command (char *, int);
290
291 static void trace_pass_command (char *, int);
292
293 static void set_tracepoint_count (int num);
294
295 static int is_masked_watchpoint (const struct breakpoint *b);
296
297 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
298
299 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
300    otherwise.  */
301
302 static int strace_marker_p (struct breakpoint *b);
303
304 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
305    that are implemented on top of software or hardware breakpoints
306    (user breakpoints, internal and momentary breakpoints, etc.).  */
307 static struct breakpoint_ops bkpt_base_breakpoint_ops;
308
309 /* Internal breakpoints class type.  */
310 static struct breakpoint_ops internal_breakpoint_ops;
311
312 /* Momentary breakpoints class type.  */
313 static struct breakpoint_ops momentary_breakpoint_ops;
314
315 /* The breakpoint_ops structure to be used in regular user created
316    breakpoints.  */
317 struct breakpoint_ops bkpt_breakpoint_ops;
318
319 /* Breakpoints set on probes.  */
320 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
321
322 /* Dynamic printf class type.  */
323 struct breakpoint_ops dprintf_breakpoint_ops;
324
325 /* The style in which to perform a dynamic printf.  This is a user
326    option because different output options have different tradeoffs;
327    if GDB does the printing, there is better error handling if there
328    is a problem with any of the arguments, but using an inferior
329    function lets you have special-purpose printers and sending of
330    output to the same place as compiled-in print functions.  */
331
332 static const char dprintf_style_gdb[] = "gdb";
333 static const char dprintf_style_call[] = "call";
334 static const char dprintf_style_agent[] = "agent";
335 static const char *const dprintf_style_enums[] = {
336   dprintf_style_gdb,
337   dprintf_style_call,
338   dprintf_style_agent,
339   NULL
340 };
341 static const char *dprintf_style = dprintf_style_gdb;
342
343 /* The function to use for dynamic printf if the preferred style is to
344    call into the inferior.  The value is simply a string that is
345    copied into the command, so it can be anything that GDB can
346    evaluate to a callable address, not necessarily a function name.  */
347
348 static char *dprintf_function;
349
350 /* The channel to use for dynamic printf if the preferred style is to
351    call into the inferior; if a nonempty string, it will be passed to
352    the call as the first argument, with the format string as the
353    second.  As with the dprintf function, this can be anything that
354    GDB knows how to evaluate, so in addition to common choices like
355    "stderr", this could be an app-specific expression like
356    "mystreams[curlogger]".  */
357
358 static char *dprintf_channel;
359
360 /* True if dprintf commands should continue to operate even if GDB
361    has disconnected.  */
362 static int disconnected_dprintf = 1;
363
364 /* A reference-counted struct command_line.  This lets multiple
365    breakpoints share a single command list.  */
366 struct counted_command_line
367 {
368   /* The reference count.  */
369   int refc;
370
371   /* The command list.  */
372   struct command_line *commands;
373 };
374
375 struct command_line *
376 breakpoint_commands (struct breakpoint *b)
377 {
378   return b->commands ? b->commands->commands : NULL;
379 }
380
381 /* Flag indicating that a command has proceeded the inferior past the
382    current breakpoint.  */
383
384 static int breakpoint_proceeded;
385
386 const char *
387 bpdisp_text (enum bpdisp disp)
388 {
389   /* NOTE: the following values are a part of MI protocol and
390      represent values of 'disp' field returned when inferior stops at
391      a breakpoint.  */
392   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
393
394   return bpdisps[(int) disp];
395 }
396
397 /* Prototypes for exported functions.  */
398 /* If FALSE, gdb will not use hardware support for watchpoints, even
399    if such is available.  */
400 static int can_use_hw_watchpoints;
401
402 static void
403 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
404                              struct cmd_list_element *c,
405                              const char *value)
406 {
407   fprintf_filtered (file,
408                     _("Debugger's willingness to use "
409                       "watchpoint hardware is %s.\n"),
410                     value);
411 }
412
413 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
414    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
415    for unrecognized breakpoint locations.
416    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
417 static enum auto_boolean pending_break_support;
418 static void
419 show_pending_break_support (struct ui_file *file, int from_tty,
420                             struct cmd_list_element *c,
421                             const char *value)
422 {
423   fprintf_filtered (file,
424                     _("Debugger's behavior regarding "
425                       "pending breakpoints is %s.\n"),
426                     value);
427 }
428
429 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
430    set with "break" but falling in read-only memory.
431    If 0, gdb will warn about such breakpoints, but won't automatically
432    use hardware breakpoints.  */
433 static int automatic_hardware_breakpoints;
434 static void
435 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
436                                      struct cmd_list_element *c,
437                                      const char *value)
438 {
439   fprintf_filtered (file,
440                     _("Automatic usage of hardware breakpoints is %s.\n"),
441                     value);
442 }
443
444 /* If on, GDB keeps breakpoints inserted even if the inferior is
445    stopped, and immediately inserts any new breakpoints as soon as
446    they're created.  If off (default), GDB keeps breakpoints off of
447    the target as long as possible.  That is, it delays inserting
448    breakpoints until the next resume, and removes them again when the
449    target fully stops.  This is a bit safer in case GDB crashes while
450    processing user input.  */
451 static int always_inserted_mode = 0;
452
453 static void
454 show_always_inserted_mode (struct ui_file *file, int from_tty,
455                      struct cmd_list_element *c, const char *value)
456 {
457   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
458                     value);
459 }
460
461 /* See breakpoint.h.  */
462
463 int
464 breakpoints_should_be_inserted_now (void)
465 {
466   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
467     {
468       /* If breakpoints are global, they should be inserted even if no
469          thread under gdb's control is running, or even if there are
470          no threads under GDB's control yet.  */
471       return 1;
472     }
473   else if (target_has_execution)
474     {
475       struct thread_info *tp;
476
477       if (always_inserted_mode)
478         {
479           /* The user wants breakpoints inserted even if all threads
480              are stopped.  */
481           return 1;
482         }
483
484       if (threads_are_executing ())
485         return 1;
486
487       /* Don't remove breakpoints yet if, even though all threads are
488          stopped, we still have events to process.  */
489       ALL_NON_EXITED_THREADS (tp)
490         if (tp->resumed
491             && tp->suspend.waitstatus_pending_p)
492           return 1;
493     }
494   return 0;
495 }
496
497 static const char condition_evaluation_both[] = "host or target";
498
499 /* Modes for breakpoint condition evaluation.  */
500 static const char condition_evaluation_auto[] = "auto";
501 static const char condition_evaluation_host[] = "host";
502 static const char condition_evaluation_target[] = "target";
503 static const char *const condition_evaluation_enums[] = {
504   condition_evaluation_auto,
505   condition_evaluation_host,
506   condition_evaluation_target,
507   NULL
508 };
509
510 /* Global that holds the current mode for breakpoint condition evaluation.  */
511 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
512
513 /* Global that we use to display information to the user (gets its value from
514    condition_evaluation_mode_1.  */
515 static const char *condition_evaluation_mode = condition_evaluation_auto;
516
517 /* Translate a condition evaluation mode MODE into either "host"
518    or "target".  This is used mostly to translate from "auto" to the
519    real setting that is being used.  It returns the translated
520    evaluation mode.  */
521
522 static const char *
523 translate_condition_evaluation_mode (const char *mode)
524 {
525   if (mode == condition_evaluation_auto)
526     {
527       if (target_supports_evaluation_of_breakpoint_conditions ())
528         return condition_evaluation_target;
529       else
530         return condition_evaluation_host;
531     }
532   else
533     return mode;
534 }
535
536 /* Discovers what condition_evaluation_auto translates to.  */
537
538 static const char *
539 breakpoint_condition_evaluation_mode (void)
540 {
541   return translate_condition_evaluation_mode (condition_evaluation_mode);
542 }
543
544 /* Return true if GDB should evaluate breakpoint conditions or false
545    otherwise.  */
546
547 static int
548 gdb_evaluates_breakpoint_condition_p (void)
549 {
550   const char *mode = breakpoint_condition_evaluation_mode ();
551
552   return (mode == condition_evaluation_host);
553 }
554
555 /* Are we executing breakpoint commands?  */
556 static int executing_breakpoint_commands;
557
558 /* Are overlay event breakpoints enabled? */
559 static int overlay_events_enabled;
560
561 /* See description in breakpoint.h. */
562 int target_exact_watchpoints = 0;
563
564 /* Walk the following statement or block through all breakpoints.
565    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
566    current breakpoint.  */
567
568 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
569
570 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
571         for (B = breakpoint_chain;      \
572              B ? (TMP=B->next, 1): 0;   \
573              B = TMP)
574
575 /* Similar iterator for the low-level breakpoints.  SAFE variant is
576    not provided so update_global_location_list must not be called
577    while executing the block of ALL_BP_LOCATIONS.  */
578
579 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
580         for (BP_TMP = bp_locations;                                     \
581              BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
582              BP_TMP++)
583
584 /* Iterates through locations with address ADDRESS for the currently selected
585    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
586    to where the loop should start from.
587    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
588    appropriate location to start with.  */
589
590 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
591         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
592              BP_LOCP_TMP = BP_LOCP_START;                               \
593              BP_LOCP_START                                              \
594              && (BP_LOCP_TMP < bp_locations + bp_locations_count        \
595              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
596              BP_LOCP_TMP++)
597
598 /* Iterator for tracepoints only.  */
599
600 #define ALL_TRACEPOINTS(B)  \
601   for (B = breakpoint_chain; B; B = B->next)  \
602     if (is_tracepoint (B))
603
604 /* Chains of all breakpoints defined.  */
605
606 struct breakpoint *breakpoint_chain;
607
608 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS.  */
609
610 static struct bp_location **bp_locations;
611
612 /* Number of elements of BP_LOCATIONS.  */
613
614 static unsigned bp_locations_count;
615
616 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
617    ADDRESS for the current elements of BP_LOCATIONS which get a valid
618    result from bp_location_has_shadow.  You can use it for roughly
619    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
620    an address you need to read.  */
621
622 static CORE_ADDR bp_locations_placed_address_before_address_max;
623
624 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
625    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
626    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
627    You can use it for roughly limiting the subrange of BP_LOCATIONS to
628    scan for shadow bytes for an address you need to read.  */
629
630 static CORE_ADDR bp_locations_shadow_len_after_address_max;
631
632 /* The locations that no longer correspond to any breakpoint, unlinked
633    from the bp_locations array, but for which a hit may still be
634    reported by a target.  */
635 VEC(bp_location_p) *moribund_locations = NULL;
636
637 /* Number of last breakpoint made.  */
638
639 static int breakpoint_count;
640
641 /* The value of `breakpoint_count' before the last command that
642    created breakpoints.  If the last (break-like) command created more
643    than one breakpoint, then the difference between BREAKPOINT_COUNT
644    and PREV_BREAKPOINT_COUNT is more than one.  */
645 static int prev_breakpoint_count;
646
647 /* Number of last tracepoint made.  */
648
649 static int tracepoint_count;
650
651 static struct cmd_list_element *breakpoint_set_cmdlist;
652 static struct cmd_list_element *breakpoint_show_cmdlist;
653 struct cmd_list_element *save_cmdlist;
654
655 /* See declaration at breakpoint.h.  */
656
657 struct breakpoint *
658 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
659                     void *user_data)
660 {
661   struct breakpoint *b = NULL;
662
663   ALL_BREAKPOINTS (b)
664     {
665       if (func (b, user_data) != 0)
666         break;
667     }
668
669   return b;
670 }
671
672 /* Return whether a breakpoint is an active enabled breakpoint.  */
673 static int
674 breakpoint_enabled (struct breakpoint *b)
675 {
676   return (b->enable_state == bp_enabled);
677 }
678
679 /* Set breakpoint count to NUM.  */
680
681 static void
682 set_breakpoint_count (int num)
683 {
684   prev_breakpoint_count = breakpoint_count;
685   breakpoint_count = num;
686   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
687 }
688
689 /* Used by `start_rbreak_breakpoints' below, to record the current
690    breakpoint count before "rbreak" creates any breakpoint.  */
691 static int rbreak_start_breakpoint_count;
692
693 /* Called at the start an "rbreak" command to record the first
694    breakpoint made.  */
695
696 void
697 start_rbreak_breakpoints (void)
698 {
699   rbreak_start_breakpoint_count = breakpoint_count;
700 }
701
702 /* Called at the end of an "rbreak" command to record the last
703    breakpoint made.  */
704
705 void
706 end_rbreak_breakpoints (void)
707 {
708   prev_breakpoint_count = rbreak_start_breakpoint_count;
709 }
710
711 /* Used in run_command to zero the hit count when a new run starts.  */
712
713 void
714 clear_breakpoint_hit_counts (void)
715 {
716   struct breakpoint *b;
717
718   ALL_BREAKPOINTS (b)
719     b->hit_count = 0;
720 }
721
722 /* Allocate a new counted_command_line with reference count of 1.
723    The new structure owns COMMANDS.  */
724
725 static struct counted_command_line *
726 alloc_counted_command_line (struct command_line *commands)
727 {
728   struct counted_command_line *result = XNEW (struct counted_command_line);
729
730   result->refc = 1;
731   result->commands = commands;
732
733   return result;
734 }
735
736 /* Increment reference count.  This does nothing if CMD is NULL.  */
737
738 static void
739 incref_counted_command_line (struct counted_command_line *cmd)
740 {
741   if (cmd)
742     ++cmd->refc;
743 }
744
745 /* Decrement reference count.  If the reference count reaches 0,
746    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
747    nothing if *CMDP is NULL.  */
748
749 static void
750 decref_counted_command_line (struct counted_command_line **cmdp)
751 {
752   if (*cmdp)
753     {
754       if (--(*cmdp)->refc == 0)
755         {
756           free_command_lines (&(*cmdp)->commands);
757           xfree (*cmdp);
758         }
759       *cmdp = NULL;
760     }
761 }
762
763 /* A cleanup function that calls decref_counted_command_line.  */
764
765 static void
766 do_cleanup_counted_command_line (void *arg)
767 {
768   decref_counted_command_line ((struct counted_command_line **) arg);
769 }
770
771 /* Create a cleanup that calls decref_counted_command_line on the
772    argument.  */
773
774 static struct cleanup *
775 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
776 {
777   return make_cleanup (do_cleanup_counted_command_line, cmdp);
778 }
779
780 \f
781 /* Return the breakpoint with the specified number, or NULL
782    if the number does not refer to an existing breakpoint.  */
783
784 struct breakpoint *
785 get_breakpoint (int num)
786 {
787   struct breakpoint *b;
788
789   ALL_BREAKPOINTS (b)
790     if (b->number == num)
791       return b;
792   
793   return NULL;
794 }
795
796 \f
797
798 /* Mark locations as "conditions have changed" in case the target supports
799    evaluating conditions on its side.  */
800
801 static void
802 mark_breakpoint_modified (struct breakpoint *b)
803 {
804   struct bp_location *loc;
805
806   /* This is only meaningful if the target is
807      evaluating conditions and if the user has
808      opted for condition evaluation on the target's
809      side.  */
810   if (gdb_evaluates_breakpoint_condition_p ()
811       || !target_supports_evaluation_of_breakpoint_conditions ())
812     return;
813
814   if (!is_breakpoint (b))
815     return;
816
817   for (loc = b->loc; loc; loc = loc->next)
818     loc->condition_changed = condition_modified;
819 }
820
821 /* Mark location as "conditions have changed" in case the target supports
822    evaluating conditions on its side.  */
823
824 static void
825 mark_breakpoint_location_modified (struct bp_location *loc)
826 {
827   /* This is only meaningful if the target is
828      evaluating conditions and if the user has
829      opted for condition evaluation on the target's
830      side.  */
831   if (gdb_evaluates_breakpoint_condition_p ()
832       || !target_supports_evaluation_of_breakpoint_conditions ())
833
834     return;
835
836   if (!is_breakpoint (loc->owner))
837     return;
838
839   loc->condition_changed = condition_modified;
840 }
841
842 /* Sets the condition-evaluation mode using the static global
843    condition_evaluation_mode.  */
844
845 static void
846 set_condition_evaluation_mode (char *args, int from_tty,
847                                struct cmd_list_element *c)
848 {
849   const char *old_mode, *new_mode;
850
851   if ((condition_evaluation_mode_1 == condition_evaluation_target)
852       && !target_supports_evaluation_of_breakpoint_conditions ())
853     {
854       condition_evaluation_mode_1 = condition_evaluation_mode;
855       warning (_("Target does not support breakpoint condition evaluation.\n"
856                  "Using host evaluation mode instead."));
857       return;
858     }
859
860   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
861   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
862
863   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
864      settings was "auto".  */
865   condition_evaluation_mode = condition_evaluation_mode_1;
866
867   /* Only update the mode if the user picked a different one.  */
868   if (new_mode != old_mode)
869     {
870       struct bp_location *loc, **loc_tmp;
871       /* If the user switched to a different evaluation mode, we
872          need to synch the changes with the target as follows:
873
874          "host" -> "target": Send all (valid) conditions to the target.
875          "target" -> "host": Remove all the conditions from the target.
876       */
877
878       if (new_mode == condition_evaluation_target)
879         {
880           /* Mark everything modified and synch conditions with the
881              target.  */
882           ALL_BP_LOCATIONS (loc, loc_tmp)
883             mark_breakpoint_location_modified (loc);
884         }
885       else
886         {
887           /* Manually mark non-duplicate locations to synch conditions
888              with the target.  We do this to remove all the conditions the
889              target knows about.  */
890           ALL_BP_LOCATIONS (loc, loc_tmp)
891             if (is_breakpoint (loc->owner) && loc->inserted)
892               loc->needs_update = 1;
893         }
894
895       /* Do the update.  */
896       update_global_location_list (UGLL_MAY_INSERT);
897     }
898
899   return;
900 }
901
902 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
903    what "auto" is translating to.  */
904
905 static void
906 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
907                                 struct cmd_list_element *c, const char *value)
908 {
909   if (condition_evaluation_mode == condition_evaluation_auto)
910     fprintf_filtered (file,
911                       _("Breakpoint condition evaluation "
912                         "mode is %s (currently %s).\n"),
913                       value,
914                       breakpoint_condition_evaluation_mode ());
915   else
916     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
917                       value);
918 }
919
920 /* A comparison function for bp_location AP and BP that is used by
921    bsearch.  This comparison function only cares about addresses, unlike
922    the more general bp_locations_compare function.  */
923
924 static int
925 bp_locations_compare_addrs (const void *ap, const void *bp)
926 {
927   const struct bp_location *a = *(const struct bp_location **) ap;
928   const struct bp_location *b = *(const struct bp_location **) bp;
929
930   if (a->address == b->address)
931     return 0;
932   else
933     return ((a->address > b->address) - (a->address < b->address));
934 }
935
936 /* Helper function to skip all bp_locations with addresses
937    less than ADDRESS.  It returns the first bp_location that
938    is greater than or equal to ADDRESS.  If none is found, just
939    return NULL.  */
940
941 static struct bp_location **
942 get_first_locp_gte_addr (CORE_ADDR address)
943 {
944   struct bp_location dummy_loc;
945   struct bp_location *dummy_locp = &dummy_loc;
946   struct bp_location **locp_found = NULL;
947
948   /* Initialize the dummy location's address field.  */
949   dummy_loc.address = address;
950
951   /* Find a close match to the first location at ADDRESS.  */
952   locp_found = ((struct bp_location **)
953                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
954                          sizeof (struct bp_location **),
955                          bp_locations_compare_addrs));
956
957   /* Nothing was found, nothing left to do.  */
958   if (locp_found == NULL)
959     return NULL;
960
961   /* We may have found a location that is at ADDRESS but is not the first in the
962      location's list.  Go backwards (if possible) and locate the first one.  */
963   while ((locp_found - 1) >= bp_locations
964          && (*(locp_found - 1))->address == address)
965     locp_found--;
966
967   return locp_found;
968 }
969
970 void
971 set_breakpoint_condition (struct breakpoint *b, const char *exp,
972                           int from_tty)
973 {
974   xfree (b->cond_string);
975   b->cond_string = NULL;
976
977   if (is_watchpoint (b))
978     {
979       struct watchpoint *w = (struct watchpoint *) b;
980
981       w->cond_exp.reset ();
982     }
983   else
984     {
985       struct bp_location *loc;
986
987       for (loc = b->loc; loc; loc = loc->next)
988         {
989           loc->cond.reset ();
990
991           /* No need to free the condition agent expression
992              bytecode (if we have one).  We will handle this
993              when we go through update_global_location_list.  */
994         }
995     }
996
997   if (*exp == 0)
998     {
999       if (from_tty)
1000         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1001     }
1002   else
1003     {
1004       const char *arg = exp;
1005
1006       /* I don't know if it matters whether this is the string the user
1007          typed in or the decompiled expression.  */
1008       b->cond_string = xstrdup (arg);
1009       b->condition_not_parsed = 0;
1010
1011       if (is_watchpoint (b))
1012         {
1013           struct watchpoint *w = (struct watchpoint *) b;
1014
1015           innermost_block = NULL;
1016           arg = exp;
1017           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1018           if (*arg)
1019             error (_("Junk at end of expression"));
1020           w->cond_exp_valid_block = innermost_block;
1021         }
1022       else
1023         {
1024           struct bp_location *loc;
1025
1026           for (loc = b->loc; loc; loc = loc->next)
1027             {
1028               arg = exp;
1029               loc->cond =
1030                 parse_exp_1 (&arg, loc->address,
1031                              block_for_pc (loc->address), 0);
1032               if (*arg)
1033                 error (_("Junk at end of expression"));
1034             }
1035         }
1036     }
1037   mark_breakpoint_modified (b);
1038
1039   observer_notify_breakpoint_modified (b);
1040 }
1041
1042 /* Completion for the "condition" command.  */
1043
1044 static void
1045 condition_completer (struct cmd_list_element *cmd,
1046                      completion_tracker &tracker,
1047                      const char *text, const char *word)
1048 {
1049   const char *space;
1050
1051   text = skip_spaces (text);
1052   space = skip_to_space (text);
1053   if (*space == '\0')
1054     {
1055       int len;
1056       struct breakpoint *b;
1057       VEC (char_ptr) *result = NULL;
1058
1059       if (text[0] == '$')
1060         {
1061           /* We don't support completion of history indices.  */
1062           if (!isdigit (text[1]))
1063             complete_internalvar (tracker, &text[1]);
1064           return;
1065         }
1066
1067       /* We're completing the breakpoint number.  */
1068       len = strlen (text);
1069
1070       ALL_BREAKPOINTS (b)
1071         {
1072           char number[50];
1073
1074           xsnprintf (number, sizeof (number), "%d", b->number);
1075
1076           if (strncmp (number, text, len) == 0)
1077             {
1078               gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
1079               tracker.add_completion (std::move (copy));
1080             }
1081         }
1082
1083       return;
1084     }
1085
1086   /* We're completing the expression part.  */
1087   text = skip_spaces (space);
1088   expression_completer (cmd, tracker, text, word);
1089 }
1090
1091 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1092
1093 static void
1094 condition_command (char *arg, int from_tty)
1095 {
1096   struct breakpoint *b;
1097   char *p;
1098   int bnum;
1099
1100   if (arg == 0)
1101     error_no_arg (_("breakpoint number"));
1102
1103   p = arg;
1104   bnum = get_number (&p);
1105   if (bnum == 0)
1106     error (_("Bad breakpoint argument: '%s'"), arg);
1107
1108   ALL_BREAKPOINTS (b)
1109     if (b->number == bnum)
1110       {
1111         /* Check if this breakpoint has a "stop" method implemented in an
1112            extension language.  This method and conditions entered into GDB
1113            from the CLI are mutually exclusive.  */
1114         const struct extension_language_defn *extlang
1115           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1116
1117         if (extlang != NULL)
1118           {
1119             error (_("Only one stop condition allowed.  There is currently"
1120                      " a %s stop condition defined for this breakpoint."),
1121                    ext_lang_capitalized_name (extlang));
1122           }
1123         set_breakpoint_condition (b, p, from_tty);
1124
1125         if (is_breakpoint (b))
1126           update_global_location_list (UGLL_MAY_INSERT);
1127
1128         return;
1129       }
1130
1131   error (_("No breakpoint number %d."), bnum);
1132 }
1133
1134 /* Check that COMMAND do not contain commands that are suitable
1135    only for tracepoints and not suitable for ordinary breakpoints.
1136    Throw if any such commands is found.  */
1137
1138 static void
1139 check_no_tracepoint_commands (struct command_line *commands)
1140 {
1141   struct command_line *c;
1142
1143   for (c = commands; c; c = c->next)
1144     {
1145       int i;
1146
1147       if (c->control_type == while_stepping_control)
1148         error (_("The 'while-stepping' command can "
1149                  "only be used for tracepoints"));
1150
1151       for (i = 0; i < c->body_count; ++i)
1152         check_no_tracepoint_commands ((c->body_list)[i]);
1153
1154       /* Not that command parsing removes leading whitespace and comment
1155          lines and also empty lines.  So, we only need to check for
1156          command directly.  */
1157       if (strstr (c->line, "collect ") == c->line)
1158         error (_("The 'collect' command can only be used for tracepoints"));
1159
1160       if (strstr (c->line, "teval ") == c->line)
1161         error (_("The 'teval' command can only be used for tracepoints"));
1162     }
1163 }
1164
1165 struct longjmp_breakpoint : public breakpoint
1166 {
1167   ~longjmp_breakpoint () override;
1168 };
1169
1170 /* Encapsulate tests for different types of tracepoints.  */
1171
1172 static bool
1173 is_tracepoint_type (bptype type)
1174 {
1175   return (type == bp_tracepoint
1176           || type == bp_fast_tracepoint
1177           || type == bp_static_tracepoint);
1178 }
1179
1180 static bool
1181 is_longjmp_type (bptype type)
1182 {
1183   return type == bp_longjmp || type == bp_exception;
1184 }
1185
1186 int
1187 is_tracepoint (const struct breakpoint *b)
1188 {
1189   return is_tracepoint_type (b->type);
1190 }
1191
1192 /* Factory function to create an appropriate instance of breakpoint given
1193    TYPE.  */
1194
1195 static std::unique_ptr<breakpoint>
1196 new_breakpoint_from_type (bptype type)
1197 {
1198   breakpoint *b;
1199
1200   if (is_tracepoint_type (type))
1201     b = new tracepoint ();
1202   else if (is_longjmp_type (type))
1203     b = new longjmp_breakpoint ();
1204   else
1205     b = new breakpoint ();
1206
1207   return std::unique_ptr<breakpoint> (b);
1208 }
1209
1210 /* A helper function that validates that COMMANDS are valid for a
1211    breakpoint.  This function will throw an exception if a problem is
1212    found.  */
1213
1214 static void
1215 validate_commands_for_breakpoint (struct breakpoint *b,
1216                                   struct command_line *commands)
1217 {
1218   if (is_tracepoint (b))
1219     {
1220       struct tracepoint *t = (struct tracepoint *) b;
1221       struct command_line *c;
1222       struct command_line *while_stepping = 0;
1223
1224       /* Reset the while-stepping step count.  The previous commands
1225          might have included a while-stepping action, while the new
1226          ones might not.  */
1227       t->step_count = 0;
1228
1229       /* We need to verify that each top-level element of commands is
1230          valid for tracepoints, that there's at most one
1231          while-stepping element, and that the while-stepping's body
1232          has valid tracing commands excluding nested while-stepping.
1233          We also need to validate the tracepoint action line in the
1234          context of the tracepoint --- validate_actionline actually
1235          has side effects, like setting the tracepoint's
1236          while-stepping STEP_COUNT, in addition to checking if the
1237          collect/teval actions parse and make sense in the
1238          tracepoint's context.  */
1239       for (c = commands; c; c = c->next)
1240         {
1241           if (c->control_type == while_stepping_control)
1242             {
1243               if (b->type == bp_fast_tracepoint)
1244                 error (_("The 'while-stepping' command "
1245                          "cannot be used for fast tracepoint"));
1246               else if (b->type == bp_static_tracepoint)
1247                 error (_("The 'while-stepping' command "
1248                          "cannot be used for static tracepoint"));
1249
1250               if (while_stepping)
1251                 error (_("The 'while-stepping' command "
1252                          "can be used only once"));
1253               else
1254                 while_stepping = c;
1255             }
1256
1257           validate_actionline (c->line, b);
1258         }
1259       if (while_stepping)
1260         {
1261           struct command_line *c2;
1262
1263           gdb_assert (while_stepping->body_count == 1);
1264           c2 = while_stepping->body_list[0];
1265           for (; c2; c2 = c2->next)
1266             {
1267               if (c2->control_type == while_stepping_control)
1268                 error (_("The 'while-stepping' command cannot be nested"));
1269             }
1270         }
1271     }
1272   else
1273     {
1274       check_no_tracepoint_commands (commands);
1275     }
1276 }
1277
1278 /* Return a vector of all the static tracepoints set at ADDR.  The
1279    caller is responsible for releasing the vector.  */
1280
1281 VEC(breakpoint_p) *
1282 static_tracepoints_here (CORE_ADDR addr)
1283 {
1284   struct breakpoint *b;
1285   VEC(breakpoint_p) *found = 0;
1286   struct bp_location *loc;
1287
1288   ALL_BREAKPOINTS (b)
1289     if (b->type == bp_static_tracepoint)
1290       {
1291         for (loc = b->loc; loc; loc = loc->next)
1292           if (loc->address == addr)
1293             VEC_safe_push(breakpoint_p, found, b);
1294       }
1295
1296   return found;
1297 }
1298
1299 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1300    validate that only allowed commands are included.  */
1301
1302 void
1303 breakpoint_set_commands (struct breakpoint *b, 
1304                          command_line_up &&commands)
1305 {
1306   validate_commands_for_breakpoint (b, commands.get ());
1307
1308   decref_counted_command_line (&b->commands);
1309   b->commands = alloc_counted_command_line (commands.release ());
1310   observer_notify_breakpoint_modified (b);
1311 }
1312
1313 /* Set the internal `silent' flag on the breakpoint.  Note that this
1314    is not the same as the "silent" that may appear in the breakpoint's
1315    commands.  */
1316
1317 void
1318 breakpoint_set_silent (struct breakpoint *b, int silent)
1319 {
1320   int old_silent = b->silent;
1321
1322   b->silent = silent;
1323   if (old_silent != silent)
1324     observer_notify_breakpoint_modified (b);
1325 }
1326
1327 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1328    breakpoint work for any thread.  */
1329
1330 void
1331 breakpoint_set_thread (struct breakpoint *b, int thread)
1332 {
1333   int old_thread = b->thread;
1334
1335   b->thread = thread;
1336   if (old_thread != thread)
1337     observer_notify_breakpoint_modified (b);
1338 }
1339
1340 /* Set the task for this breakpoint.  If TASK is 0, make the
1341    breakpoint work for any task.  */
1342
1343 void
1344 breakpoint_set_task (struct breakpoint *b, int task)
1345 {
1346   int old_task = b->task;
1347
1348   b->task = task;
1349   if (old_task != task)
1350     observer_notify_breakpoint_modified (b);
1351 }
1352
1353 void
1354 check_tracepoint_command (char *line, void *closure)
1355 {
1356   struct breakpoint *b = (struct breakpoint *) closure;
1357
1358   validate_actionline (line, b);
1359 }
1360
1361 /* A structure used to pass information through
1362    map_breakpoint_numbers.  */
1363
1364 struct commands_info
1365 {
1366   /* True if the command was typed at a tty.  */
1367   int from_tty;
1368
1369   /* The breakpoint range spec.  */
1370   const char *arg;
1371
1372   /* Non-NULL if the body of the commands are being read from this
1373      already-parsed command.  */
1374   struct command_line *control;
1375
1376   /* The command lines read from the user, or NULL if they have not
1377      yet been read.  */
1378   struct counted_command_line *cmd;
1379 };
1380
1381 /* A callback for map_breakpoint_numbers that sets the commands for
1382    commands_command.  */
1383
1384 static void
1385 do_map_commands_command (struct breakpoint *b, void *data)
1386 {
1387   struct commands_info *info = (struct commands_info *) data;
1388
1389   if (info->cmd == NULL)
1390     {
1391       command_line_up l;
1392
1393       if (info->control != NULL)
1394         l = copy_command_lines (info->control->body_list[0]);
1395       else
1396         {
1397           struct cleanup *old_chain;
1398           char *str;
1399
1400           str = xstrprintf (_("Type commands for breakpoint(s) "
1401                               "%s, one per line."),
1402                             info->arg);
1403
1404           old_chain = make_cleanup (xfree, str);
1405
1406           l = read_command_lines (str,
1407                                   info->from_tty, 1,
1408                                   (is_tracepoint (b)
1409                                    ? check_tracepoint_command : 0),
1410                                   b);
1411
1412           do_cleanups (old_chain);
1413         }
1414
1415       info->cmd = alloc_counted_command_line (l.release ());
1416     }
1417
1418   /* If a breakpoint was on the list more than once, we don't need to
1419      do anything.  */
1420   if (b->commands != info->cmd)
1421     {
1422       validate_commands_for_breakpoint (b, info->cmd->commands);
1423       incref_counted_command_line (info->cmd);
1424       decref_counted_command_line (&b->commands);
1425       b->commands = info->cmd;
1426       observer_notify_breakpoint_modified (b);
1427     }
1428 }
1429
1430 static void
1431 commands_command_1 (const char *arg, int from_tty,
1432                     struct command_line *control)
1433 {
1434   struct cleanup *cleanups;
1435   struct commands_info info;
1436
1437   info.from_tty = from_tty;
1438   info.control = control;
1439   info.cmd = NULL;
1440   /* If we read command lines from the user, then `info' will hold an
1441      extra reference to the commands that we must clean up.  */
1442   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1443
1444   std::string new_arg;
1445
1446   if (arg == NULL || !*arg)
1447     {
1448       if (breakpoint_count - prev_breakpoint_count > 1)
1449         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1450                                  breakpoint_count);
1451       else if (breakpoint_count > 0)
1452         new_arg = string_printf ("%d", breakpoint_count);
1453     }
1454   else
1455     new_arg = arg;
1456
1457   info.arg = new_arg.c_str ();
1458
1459   map_breakpoint_numbers (info.arg, do_map_commands_command, &info);
1460
1461   if (info.cmd == NULL)
1462     error (_("No breakpoints specified."));
1463
1464   do_cleanups (cleanups);
1465 }
1466
1467 static void
1468 commands_command (char *arg, int from_tty)
1469 {
1470   commands_command_1 (arg, from_tty, NULL);
1471 }
1472
1473 /* Like commands_command, but instead of reading the commands from
1474    input stream, takes them from an already parsed command structure.
1475
1476    This is used by cli-script.c to DTRT with breakpoint commands
1477    that are part of if and while bodies.  */
1478 enum command_control_type
1479 commands_from_control_command (const char *arg, struct command_line *cmd)
1480 {
1481   commands_command_1 (arg, 0, cmd);
1482   return simple_control;
1483 }
1484
1485 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1486
1487 static int
1488 bp_location_has_shadow (struct bp_location *bl)
1489 {
1490   if (bl->loc_type != bp_loc_software_breakpoint)
1491     return 0;
1492   if (!bl->inserted)
1493     return 0;
1494   if (bl->target_info.shadow_len == 0)
1495     /* BL isn't valid, or doesn't shadow memory.  */
1496     return 0;
1497   return 1;
1498 }
1499
1500 /* Update BUF, which is LEN bytes read from the target address
1501    MEMADDR, by replacing a memory breakpoint with its shadowed
1502    contents.
1503
1504    If READBUF is not NULL, this buffer must not overlap with the of
1505    the breakpoint location's shadow_contents buffer.  Otherwise, a
1506    failed assertion internal error will be raised.  */
1507
1508 static void
1509 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1510                             const gdb_byte *writebuf_org,
1511                             ULONGEST memaddr, LONGEST len,
1512                             struct bp_target_info *target_info,
1513                             struct gdbarch *gdbarch)
1514 {
1515   /* Now do full processing of the found relevant range of elements.  */
1516   CORE_ADDR bp_addr = 0;
1517   int bp_size = 0;
1518   int bptoffset = 0;
1519
1520   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1521                                  current_program_space->aspace, 0))
1522     {
1523       /* The breakpoint is inserted in a different address space.  */
1524       return;
1525     }
1526
1527   /* Addresses and length of the part of the breakpoint that
1528      we need to copy.  */
1529   bp_addr = target_info->placed_address;
1530   bp_size = target_info->shadow_len;
1531
1532   if (bp_addr + bp_size <= memaddr)
1533     {
1534       /* The breakpoint is entirely before the chunk of memory we are
1535          reading.  */
1536       return;
1537     }
1538
1539   if (bp_addr >= memaddr + len)
1540     {
1541       /* The breakpoint is entirely after the chunk of memory we are
1542          reading.  */
1543       return;
1544     }
1545
1546   /* Offset within shadow_contents.  */
1547   if (bp_addr < memaddr)
1548     {
1549       /* Only copy the second part of the breakpoint.  */
1550       bp_size -= memaddr - bp_addr;
1551       bptoffset = memaddr - bp_addr;
1552       bp_addr = memaddr;
1553     }
1554
1555   if (bp_addr + bp_size > memaddr + len)
1556     {
1557       /* Only copy the first part of the breakpoint.  */
1558       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1559     }
1560
1561   if (readbuf != NULL)
1562     {
1563       /* Verify that the readbuf buffer does not overlap with the
1564          shadow_contents buffer.  */
1565       gdb_assert (target_info->shadow_contents >= readbuf + len
1566                   || readbuf >= (target_info->shadow_contents
1567                                  + target_info->shadow_len));
1568
1569       /* Update the read buffer with this inserted breakpoint's
1570          shadow.  */
1571       memcpy (readbuf + bp_addr - memaddr,
1572               target_info->shadow_contents + bptoffset, bp_size);
1573     }
1574   else
1575     {
1576       const unsigned char *bp;
1577       CORE_ADDR addr = target_info->reqstd_address;
1578       int placed_size;
1579
1580       /* Update the shadow with what we want to write to memory.  */
1581       memcpy (target_info->shadow_contents + bptoffset,
1582               writebuf_org + bp_addr - memaddr, bp_size);
1583
1584       /* Determine appropriate breakpoint contents and size for this
1585          address.  */
1586       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1587
1588       /* Update the final write buffer with this inserted
1589          breakpoint's INSN.  */
1590       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1591     }
1592 }
1593
1594 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1595    by replacing any memory breakpoints with their shadowed contents.
1596
1597    If READBUF is not NULL, this buffer must not overlap with any of
1598    the breakpoint location's shadow_contents buffers.  Otherwise,
1599    a failed assertion internal error will be raised.
1600
1601    The range of shadowed area by each bp_location is:
1602      bl->address - bp_locations_placed_address_before_address_max
1603      up to bl->address + bp_locations_shadow_len_after_address_max
1604    The range we were requested to resolve shadows for is:
1605      memaddr ... memaddr + len
1606    Thus the safe cutoff boundaries for performance optimization are
1607      memaddr + len <= (bl->address
1608                        - bp_locations_placed_address_before_address_max)
1609    and:
1610      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1611
1612 void
1613 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1614                         const gdb_byte *writebuf_org,
1615                         ULONGEST memaddr, LONGEST len)
1616 {
1617   /* Left boundary, right boundary and median element of our binary
1618      search.  */
1619   unsigned bc_l, bc_r, bc;
1620
1621   /* Find BC_L which is a leftmost element which may affect BUF
1622      content.  It is safe to report lower value but a failure to
1623      report higher one.  */
1624
1625   bc_l = 0;
1626   bc_r = bp_locations_count;
1627   while (bc_l + 1 < bc_r)
1628     {
1629       struct bp_location *bl;
1630
1631       bc = (bc_l + bc_r) / 2;
1632       bl = bp_locations[bc];
1633
1634       /* Check first BL->ADDRESS will not overflow due to the added
1635          constant.  Then advance the left boundary only if we are sure
1636          the BC element can in no way affect the BUF content (MEMADDR
1637          to MEMADDR + LEN range).
1638
1639          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1640          offset so that we cannot miss a breakpoint with its shadow
1641          range tail still reaching MEMADDR.  */
1642
1643       if ((bl->address + bp_locations_shadow_len_after_address_max
1644            >= bl->address)
1645           && (bl->address + bp_locations_shadow_len_after_address_max
1646               <= memaddr))
1647         bc_l = bc;
1648       else
1649         bc_r = bc;
1650     }
1651
1652   /* Due to the binary search above, we need to make sure we pick the
1653      first location that's at BC_L's address.  E.g., if there are
1654      multiple locations at the same address, BC_L may end up pointing
1655      at a duplicate location, and miss the "master"/"inserted"
1656      location.  Say, given locations L1, L2 and L3 at addresses A and
1657      B:
1658
1659       L1@A, L2@A, L3@B, ...
1660
1661      BC_L could end up pointing at location L2, while the "master"
1662      location could be L1.  Since the `loc->inserted' flag is only set
1663      on "master" locations, we'd forget to restore the shadow of L1
1664      and L2.  */
1665   while (bc_l > 0
1666          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1667     bc_l--;
1668
1669   /* Now do full processing of the found relevant range of elements.  */
1670
1671   for (bc = bc_l; bc < bp_locations_count; bc++)
1672   {
1673     struct bp_location *bl = bp_locations[bc];
1674
1675     /* bp_location array has BL->OWNER always non-NULL.  */
1676     if (bl->owner->type == bp_none)
1677       warning (_("reading through apparently deleted breakpoint #%d?"),
1678                bl->owner->number);
1679
1680     /* Performance optimization: any further element can no longer affect BUF
1681        content.  */
1682
1683     if (bl->address >= bp_locations_placed_address_before_address_max
1684         && memaddr + len <= (bl->address
1685                              - bp_locations_placed_address_before_address_max))
1686       break;
1687
1688     if (!bp_location_has_shadow (bl))
1689       continue;
1690
1691     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1692                                 memaddr, len, &bl->target_info, bl->gdbarch);
1693   }
1694 }
1695
1696 \f
1697
1698 /* Return true if BPT is either a software breakpoint or a hardware
1699    breakpoint.  */
1700
1701 int
1702 is_breakpoint (const struct breakpoint *bpt)
1703 {
1704   return (bpt->type == bp_breakpoint
1705           || bpt->type == bp_hardware_breakpoint
1706           || bpt->type == bp_dprintf);
1707 }
1708
1709 /* Return true if BPT is of any hardware watchpoint kind.  */
1710
1711 static int
1712 is_hardware_watchpoint (const struct breakpoint *bpt)
1713 {
1714   return (bpt->type == bp_hardware_watchpoint
1715           || bpt->type == bp_read_watchpoint
1716           || bpt->type == bp_access_watchpoint);
1717 }
1718
1719 /* Return true if BPT is of any watchpoint kind, hardware or
1720    software.  */
1721
1722 int
1723 is_watchpoint (const struct breakpoint *bpt)
1724 {
1725   return (is_hardware_watchpoint (bpt)
1726           || bpt->type == bp_watchpoint);
1727 }
1728
1729 /* Returns true if the current thread and its running state are safe
1730    to evaluate or update watchpoint B.  Watchpoints on local
1731    expressions need to be evaluated in the context of the thread that
1732    was current when the watchpoint was created, and, that thread needs
1733    to be stopped to be able to select the correct frame context.
1734    Watchpoints on global expressions can be evaluated on any thread,
1735    and in any state.  It is presently left to the target allowing
1736    memory accesses when threads are running.  */
1737
1738 static int
1739 watchpoint_in_thread_scope (struct watchpoint *b)
1740 {
1741   return (b->pspace == current_program_space
1742           && (ptid_equal (b->watchpoint_thread, null_ptid)
1743               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1744                   && !is_executing (inferior_ptid))));
1745 }
1746
1747 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1748    associated bp_watchpoint_scope breakpoint.  */
1749
1750 static void
1751 watchpoint_del_at_next_stop (struct watchpoint *w)
1752 {
1753   if (w->related_breakpoint != w)
1754     {
1755       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1756       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1757       w->related_breakpoint->disposition = disp_del_at_next_stop;
1758       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1759       w->related_breakpoint = w;
1760     }
1761   w->disposition = disp_del_at_next_stop;
1762 }
1763
1764 /* Extract a bitfield value from value VAL using the bit parameters contained in
1765    watchpoint W.  */
1766
1767 static struct value *
1768 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1769 {
1770   struct value *bit_val;
1771
1772   if (val == NULL)
1773     return NULL;
1774
1775   bit_val = allocate_value (value_type (val));
1776
1777   unpack_value_bitfield (bit_val,
1778                          w->val_bitpos,
1779                          w->val_bitsize,
1780                          value_contents_for_printing (val),
1781                          value_offset (val),
1782                          val);
1783
1784   return bit_val;
1785 }
1786
1787 /* Allocate a dummy location and add it to B, which must be a software
1788    watchpoint.  This is required because even if a software watchpoint
1789    is not watching any memory, bpstat_stop_status requires a location
1790    to be able to report stops.  */
1791
1792 static void
1793 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1794                                             struct program_space *pspace)
1795 {
1796   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1797
1798   b->loc = allocate_bp_location (b);
1799   b->loc->pspace = pspace;
1800   b->loc->address = -1;
1801   b->loc->length = -1;
1802 }
1803
1804 /* Returns true if B is a software watchpoint that is not watching any
1805    memory (e.g., "watch $pc").  */
1806
1807 static int
1808 is_no_memory_software_watchpoint (struct breakpoint *b)
1809 {
1810   return (b->type == bp_watchpoint
1811           && b->loc != NULL
1812           && b->loc->next == NULL
1813           && b->loc->address == -1
1814           && b->loc->length == -1);
1815 }
1816
1817 /* Assuming that B is a watchpoint:
1818    - Reparse watchpoint expression, if REPARSE is non-zero
1819    - Evaluate expression and store the result in B->val
1820    - Evaluate the condition if there is one, and store the result
1821      in b->loc->cond.
1822    - Update the list of values that must be watched in B->loc.
1823
1824    If the watchpoint disposition is disp_del_at_next_stop, then do
1825    nothing.  If this is local watchpoint that is out of scope, delete
1826    it.
1827
1828    Even with `set breakpoint always-inserted on' the watchpoints are
1829    removed + inserted on each stop here.  Normal breakpoints must
1830    never be removed because they might be missed by a running thread
1831    when debugging in non-stop mode.  On the other hand, hardware
1832    watchpoints (is_hardware_watchpoint; processed here) are specific
1833    to each LWP since they are stored in each LWP's hardware debug
1834    registers.  Therefore, such LWP must be stopped first in order to
1835    be able to modify its hardware watchpoints.
1836
1837    Hardware watchpoints must be reset exactly once after being
1838    presented to the user.  It cannot be done sooner, because it would
1839    reset the data used to present the watchpoint hit to the user.  And
1840    it must not be done later because it could display the same single
1841    watchpoint hit during multiple GDB stops.  Note that the latter is
1842    relevant only to the hardware watchpoint types bp_read_watchpoint
1843    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1844    not user-visible - its hit is suppressed if the memory content has
1845    not changed.
1846
1847    The following constraints influence the location where we can reset
1848    hardware watchpoints:
1849
1850    * target_stopped_by_watchpoint and target_stopped_data_address are
1851      called several times when GDB stops.
1852
1853    [linux] 
1854    * Multiple hardware watchpoints can be hit at the same time,
1855      causing GDB to stop.  GDB only presents one hardware watchpoint
1856      hit at a time as the reason for stopping, and all the other hits
1857      are presented later, one after the other, each time the user
1858      requests the execution to be resumed.  Execution is not resumed
1859      for the threads still having pending hit event stored in
1860      LWP_INFO->STATUS.  While the watchpoint is already removed from
1861      the inferior on the first stop the thread hit event is kept being
1862      reported from its cached value by linux_nat_stopped_data_address
1863      until the real thread resume happens after the watchpoint gets
1864      presented and thus its LWP_INFO->STATUS gets reset.
1865
1866    Therefore the hardware watchpoint hit can get safely reset on the
1867    watchpoint removal from inferior.  */
1868
1869 static void
1870 update_watchpoint (struct watchpoint *b, int reparse)
1871 {
1872   int within_current_scope;
1873   struct frame_id saved_frame_id;
1874   int frame_saved;
1875
1876   /* If this is a local watchpoint, we only want to check if the
1877      watchpoint frame is in scope if the current thread is the thread
1878      that was used to create the watchpoint.  */
1879   if (!watchpoint_in_thread_scope (b))
1880     return;
1881
1882   if (b->disposition == disp_del_at_next_stop)
1883     return;
1884  
1885   frame_saved = 0;
1886
1887   /* Determine if the watchpoint is within scope.  */
1888   if (b->exp_valid_block == NULL)
1889     within_current_scope = 1;
1890   else
1891     {
1892       struct frame_info *fi = get_current_frame ();
1893       struct gdbarch *frame_arch = get_frame_arch (fi);
1894       CORE_ADDR frame_pc = get_frame_pc (fi);
1895
1896       /* If we're at a point where the stack has been destroyed
1897          (e.g. in a function epilogue), unwinding may not work
1898          properly. Do not attempt to recreate locations at this
1899          point.  See similar comments in watchpoint_check.  */
1900       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1901         return;
1902
1903       /* Save the current frame's ID so we can restore it after
1904          evaluating the watchpoint expression on its own frame.  */
1905       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1906          took a frame parameter, so that we didn't have to change the
1907          selected frame.  */
1908       frame_saved = 1;
1909       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1910
1911       fi = frame_find_by_id (b->watchpoint_frame);
1912       within_current_scope = (fi != NULL);
1913       if (within_current_scope)
1914         select_frame (fi);
1915     }
1916
1917   /* We don't free locations.  They are stored in the bp_location array
1918      and update_global_location_list will eventually delete them and
1919      remove breakpoints if needed.  */
1920   b->loc = NULL;
1921
1922   if (within_current_scope && reparse)
1923     {
1924       const char *s;
1925
1926       b->exp.reset ();
1927       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1928       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1929       /* If the meaning of expression itself changed, the old value is
1930          no longer relevant.  We don't want to report a watchpoint hit
1931          to the user when the old value and the new value may actually
1932          be completely different objects.  */
1933       value_free (b->val);
1934       b->val = NULL;
1935       b->val_valid = 0;
1936
1937       /* Note that unlike with breakpoints, the watchpoint's condition
1938          expression is stored in the breakpoint object, not in the
1939          locations (re)created below.  */
1940       if (b->cond_string != NULL)
1941         {
1942           b->cond_exp.reset ();
1943
1944           s = b->cond_string;
1945           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1946         }
1947     }
1948
1949   /* If we failed to parse the expression, for example because
1950      it refers to a global variable in a not-yet-loaded shared library,
1951      don't try to insert watchpoint.  We don't automatically delete
1952      such watchpoint, though, since failure to parse expression
1953      is different from out-of-scope watchpoint.  */
1954   if (!target_has_execution)
1955     {
1956       /* Without execution, memory can't change.  No use to try and
1957          set watchpoint locations.  The watchpoint will be reset when
1958          the target gains execution, through breakpoint_re_set.  */
1959       if (!can_use_hw_watchpoints)
1960         {
1961           if (b->ops->works_in_software_mode (b))
1962             b->type = bp_watchpoint;
1963           else
1964             error (_("Can't set read/access watchpoint when "
1965                      "hardware watchpoints are disabled."));
1966         }
1967     }
1968   else if (within_current_scope && b->exp)
1969     {
1970       int pc = 0;
1971       struct value *val_chain, *v, *result, *next;
1972       struct program_space *frame_pspace;
1973
1974       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1975
1976       /* Avoid setting b->val if it's already set.  The meaning of
1977          b->val is 'the last value' user saw, and we should update
1978          it only if we reported that last value to user.  As it
1979          happens, the code that reports it updates b->val directly.
1980          We don't keep track of the memory value for masked
1981          watchpoints.  */
1982       if (!b->val_valid && !is_masked_watchpoint (b))
1983         {
1984           if (b->val_bitsize != 0)
1985             {
1986               v = extract_bitfield_from_watchpoint_value (b, v);
1987               if (v != NULL)
1988                 release_value (v);
1989             }
1990           b->val = v;
1991           b->val_valid = 1;
1992         }
1993
1994       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1995
1996       /* Look at each value on the value chain.  */
1997       for (v = val_chain; v; v = value_next (v))
1998         {
1999           /* If it's a memory location, and GDB actually needed
2000              its contents to evaluate the expression, then we
2001              must watch it.  If the first value returned is
2002              still lazy, that means an error occurred reading it;
2003              watch it anyway in case it becomes readable.  */
2004           if (VALUE_LVAL (v) == lval_memory
2005               && (v == val_chain || ! value_lazy (v)))
2006             {
2007               struct type *vtype = check_typedef (value_type (v));
2008
2009               /* We only watch structs and arrays if user asked
2010                  for it explicitly, never if they just happen to
2011                  appear in the middle of some value chain.  */
2012               if (v == result
2013                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
2014                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
2015                 {
2016                   CORE_ADDR addr;
2017                   enum target_hw_bp_type type;
2018                   struct bp_location *loc, **tmp;
2019                   int bitpos = 0, bitsize = 0;
2020
2021                   if (value_bitsize (v) != 0)
2022                     {
2023                       /* Extract the bit parameters out from the bitfield
2024                          sub-expression.  */
2025                       bitpos = value_bitpos (v);
2026                       bitsize = value_bitsize (v);
2027                     }
2028                   else if (v == result && b->val_bitsize != 0)
2029                     {
2030                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2031                         lvalue whose bit parameters are saved in the fields
2032                         VAL_BITPOS and VAL_BITSIZE.  */
2033                       bitpos = b->val_bitpos;
2034                       bitsize = b->val_bitsize;
2035                     }
2036
2037                   addr = value_address (v);
2038                   if (bitsize != 0)
2039                     {
2040                       /* Skip the bytes that don't contain the bitfield.  */
2041                       addr += bitpos / 8;
2042                     }
2043
2044                   type = hw_write;
2045                   if (b->type == bp_read_watchpoint)
2046                     type = hw_read;
2047                   else if (b->type == bp_access_watchpoint)
2048                     type = hw_access;
2049
2050                   loc = allocate_bp_location (b);
2051                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
2052                     ;
2053                   *tmp = loc;
2054                   loc->gdbarch = get_type_arch (value_type (v));
2055
2056                   loc->pspace = frame_pspace;
2057                   loc->address = addr;
2058
2059                   if (bitsize != 0)
2060                     {
2061                       /* Just cover the bytes that make up the bitfield.  */
2062                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2063                     }
2064                   else
2065                     loc->length = TYPE_LENGTH (value_type (v));
2066
2067                   loc->watchpoint_type = type;
2068                 }
2069             }
2070         }
2071
2072       /* Change the type of breakpoint between hardware assisted or
2073          an ordinary watchpoint depending on the hardware support
2074          and free hardware slots.  REPARSE is set when the inferior
2075          is started.  */
2076       if (reparse)
2077         {
2078           int reg_cnt;
2079           enum bp_loc_type loc_type;
2080           struct bp_location *bl;
2081
2082           reg_cnt = can_use_hardware_watchpoint (val_chain);
2083
2084           if (reg_cnt)
2085             {
2086               int i, target_resources_ok, other_type_used;
2087               enum bptype type;
2088
2089               /* Use an exact watchpoint when there's only one memory region to be
2090                  watched, and only one debug register is needed to watch it.  */
2091               b->exact = target_exact_watchpoints && reg_cnt == 1;
2092
2093               /* We need to determine how many resources are already
2094                  used for all other hardware watchpoints plus this one
2095                  to see if we still have enough resources to also fit
2096                  this watchpoint in as well.  */
2097
2098               /* If this is a software watchpoint, we try to turn it
2099                  to a hardware one -- count resources as if B was of
2100                  hardware watchpoint type.  */
2101               type = b->type;
2102               if (type == bp_watchpoint)
2103                 type = bp_hardware_watchpoint;
2104
2105               /* This watchpoint may or may not have been placed on
2106                  the list yet at this point (it won't be in the list
2107                  if we're trying to create it for the first time,
2108                  through watch_command), so always account for it
2109                  manually.  */
2110
2111               /* Count resources used by all watchpoints except B.  */
2112               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
2113
2114               /* Add in the resources needed for B.  */
2115               i += hw_watchpoint_use_count (b);
2116
2117               target_resources_ok
2118                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2119               if (target_resources_ok <= 0)
2120                 {
2121                   int sw_mode = b->ops->works_in_software_mode (b);
2122
2123                   if (target_resources_ok == 0 && !sw_mode)
2124                     error (_("Target does not support this type of "
2125                              "hardware watchpoint."));
2126                   else if (target_resources_ok < 0 && !sw_mode)
2127                     error (_("There are not enough available hardware "
2128                              "resources for this watchpoint."));
2129
2130                   /* Downgrade to software watchpoint.  */
2131                   b->type = bp_watchpoint;
2132                 }
2133               else
2134                 {
2135                   /* If this was a software watchpoint, we've just
2136                      found we have enough resources to turn it to a
2137                      hardware watchpoint.  Otherwise, this is a
2138                      nop.  */
2139                   b->type = type;
2140                 }
2141             }
2142           else if (!b->ops->works_in_software_mode (b))
2143             {
2144               if (!can_use_hw_watchpoints)
2145                 error (_("Can't set read/access watchpoint when "
2146                          "hardware watchpoints are disabled."));
2147               else
2148                 error (_("Expression cannot be implemented with "
2149                          "read/access watchpoint."));
2150             }
2151           else
2152             b->type = bp_watchpoint;
2153
2154           loc_type = (b->type == bp_watchpoint? bp_loc_other
2155                       : bp_loc_hardware_watchpoint);
2156           for (bl = b->loc; bl; bl = bl->next)
2157             bl->loc_type = loc_type;
2158         }
2159
2160       for (v = val_chain; v; v = next)
2161         {
2162           next = value_next (v);
2163           if (v != b->val)
2164             value_free (v);
2165         }
2166
2167       /* If a software watchpoint is not watching any memory, then the
2168          above left it without any location set up.  But,
2169          bpstat_stop_status requires a location to be able to report
2170          stops, so make sure there's at least a dummy one.  */
2171       if (b->type == bp_watchpoint && b->loc == NULL)
2172         software_watchpoint_add_no_memory_location (b, frame_pspace);
2173     }
2174   else if (!within_current_scope)
2175     {
2176       printf_filtered (_("\
2177 Watchpoint %d deleted because the program has left the block\n\
2178 in which its expression is valid.\n"),
2179                        b->number);
2180       watchpoint_del_at_next_stop (b);
2181     }
2182
2183   /* Restore the selected frame.  */
2184   if (frame_saved)
2185     select_frame (frame_find_by_id (saved_frame_id));
2186 }
2187
2188
2189 /* Returns 1 iff breakpoint location should be
2190    inserted in the inferior.  We don't differentiate the type of BL's owner
2191    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2192    breakpoint_ops is not defined, because in insert_bp_location,
2193    tracepoint's insert_location will not be called.  */
2194 static int
2195 should_be_inserted (struct bp_location *bl)
2196 {
2197   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2198     return 0;
2199
2200   if (bl->owner->disposition == disp_del_at_next_stop)
2201     return 0;
2202
2203   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2204     return 0;
2205
2206   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2207     return 0;
2208
2209   /* This is set for example, when we're attached to the parent of a
2210      vfork, and have detached from the child.  The child is running
2211      free, and we expect it to do an exec or exit, at which point the
2212      OS makes the parent schedulable again (and the target reports
2213      that the vfork is done).  Until the child is done with the shared
2214      memory region, do not insert breakpoints in the parent, otherwise
2215      the child could still trip on the parent's breakpoints.  Since
2216      the parent is blocked anyway, it won't miss any breakpoint.  */
2217   if (bl->pspace->breakpoints_not_allowed)
2218     return 0;
2219
2220   /* Don't insert a breakpoint if we're trying to step past its
2221      location, except if the breakpoint is a single-step breakpoint,
2222      and the breakpoint's thread is the thread which is stepping past
2223      a breakpoint.  */
2224   if ((bl->loc_type == bp_loc_software_breakpoint
2225        || bl->loc_type == bp_loc_hardware_breakpoint)
2226       && stepping_past_instruction_at (bl->pspace->aspace,
2227                                        bl->address)
2228       /* The single-step breakpoint may be inserted at the location
2229          we're trying to step if the instruction branches to itself.
2230          However, the instruction won't be executed at all and it may
2231          break the semantics of the instruction, for example, the
2232          instruction is a conditional branch or updates some flags.
2233          We can't fix it unless GDB is able to emulate the instruction
2234          or switch to displaced stepping.  */
2235       && !(bl->owner->type == bp_single_step
2236            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2237     {
2238       if (debug_infrun)
2239         {
2240           fprintf_unfiltered (gdb_stdlog,
2241                               "infrun: skipping breakpoint: "
2242                               "stepping past insn at: %s\n",
2243                               paddress (bl->gdbarch, bl->address));
2244         }
2245       return 0;
2246     }
2247
2248   /* Don't insert watchpoints if we're trying to step past the
2249      instruction that triggered one.  */
2250   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2251       && stepping_past_nonsteppable_watchpoint ())
2252     {
2253       if (debug_infrun)
2254         {
2255           fprintf_unfiltered (gdb_stdlog,
2256                               "infrun: stepping past non-steppable watchpoint. "
2257                               "skipping watchpoint at %s:%d\n",
2258                               paddress (bl->gdbarch, bl->address),
2259                               bl->length);
2260         }
2261       return 0;
2262     }
2263
2264   return 1;
2265 }
2266
2267 /* Same as should_be_inserted but does the check assuming
2268    that the location is not duplicated.  */
2269
2270 static int
2271 unduplicated_should_be_inserted (struct bp_location *bl)
2272 {
2273   int result;
2274   const int save_duplicate = bl->duplicate;
2275
2276   bl->duplicate = 0;
2277   result = should_be_inserted (bl);
2278   bl->duplicate = save_duplicate;
2279   return result;
2280 }
2281
2282 /* Parses a conditional described by an expression COND into an
2283    agent expression bytecode suitable for evaluation
2284    by the bytecode interpreter.  Return NULL if there was
2285    any error during parsing.  */
2286
2287 static agent_expr_up
2288 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2289 {
2290   if (cond == NULL)
2291     return NULL;
2292
2293   agent_expr_up aexpr;
2294
2295   /* We don't want to stop processing, so catch any errors
2296      that may show up.  */
2297   TRY
2298     {
2299       aexpr = gen_eval_for_expr (scope, cond);
2300     }
2301
2302   CATCH (ex, RETURN_MASK_ERROR)
2303     {
2304       /* If we got here, it means the condition could not be parsed to a valid
2305          bytecode expression and thus can't be evaluated on the target's side.
2306          It's no use iterating through the conditions.  */
2307     }
2308   END_CATCH
2309
2310   /* We have a valid agent expression.  */
2311   return aexpr;
2312 }
2313
2314 /* Based on location BL, create a list of breakpoint conditions to be
2315    passed on to the target.  If we have duplicated locations with different
2316    conditions, we will add such conditions to the list.  The idea is that the
2317    target will evaluate the list of conditions and will only notify GDB when
2318    one of them is true.  */
2319
2320 static void
2321 build_target_condition_list (struct bp_location *bl)
2322 {
2323   struct bp_location **locp = NULL, **loc2p;
2324   int null_condition_or_parse_error = 0;
2325   int modified = bl->needs_update;
2326   struct bp_location *loc;
2327
2328   /* Release conditions left over from a previous insert.  */
2329   bl->target_info.conditions.clear ();
2330
2331   /* This is only meaningful if the target is
2332      evaluating conditions and if the user has
2333      opted for condition evaluation on the target's
2334      side.  */
2335   if (gdb_evaluates_breakpoint_condition_p ()
2336       || !target_supports_evaluation_of_breakpoint_conditions ())
2337     return;
2338
2339   /* Do a first pass to check for locations with no assigned
2340      conditions or conditions that fail to parse to a valid agent expression
2341      bytecode.  If any of these happen, then it's no use to send conditions
2342      to the target since this location will always trigger and generate a
2343      response back to GDB.  */
2344   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2345     {
2346       loc = (*loc2p);
2347       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2348         {
2349           if (modified)
2350             {
2351               /* Re-parse the conditions since something changed.  In that
2352                  case we already freed the condition bytecodes (see
2353                  force_breakpoint_reinsertion).  We just
2354                  need to parse the condition to bytecodes again.  */
2355               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2356                                                         loc->cond.get ());
2357             }
2358
2359           /* If we have a NULL bytecode expression, it means something
2360              went wrong or we have a null condition expression.  */
2361           if (!loc->cond_bytecode)
2362             {
2363               null_condition_or_parse_error = 1;
2364               break;
2365             }
2366         }
2367     }
2368
2369   /* If any of these happened, it means we will have to evaluate the conditions
2370      for the location's address on gdb's side.  It is no use keeping bytecodes
2371      for all the other duplicate locations, thus we free all of them here.
2372
2373      This is so we have a finer control over which locations' conditions are
2374      being evaluated by GDB or the remote stub.  */
2375   if (null_condition_or_parse_error)
2376     {
2377       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2378         {
2379           loc = (*loc2p);
2380           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2381             {
2382               /* Only go as far as the first NULL bytecode is
2383                  located.  */
2384               if (!loc->cond_bytecode)
2385                 return;
2386
2387               loc->cond_bytecode.reset ();
2388             }
2389         }
2390     }
2391
2392   /* No NULL conditions or failed bytecode generation.  Build a condition list
2393      for this location's address.  */
2394   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2395     {
2396       loc = (*loc2p);
2397       if (loc->cond
2398           && is_breakpoint (loc->owner)
2399           && loc->pspace->num == bl->pspace->num
2400           && loc->owner->enable_state == bp_enabled
2401           && loc->enabled)
2402         {
2403           /* Add the condition to the vector.  This will be used later
2404              to send the conditions to the target.  */
2405           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2406         }
2407     }
2408
2409   return;
2410 }
2411
2412 /* Parses a command described by string CMD into an agent expression
2413    bytecode suitable for evaluation by the bytecode interpreter.
2414    Return NULL if there was any error during parsing.  */
2415
2416 static agent_expr_up
2417 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2418 {
2419   struct cleanup *old_cleanups = 0;
2420   struct expression **argvec;
2421   const char *cmdrest;
2422   const char *format_start, *format_end;
2423   struct format_piece *fpieces;
2424   int nargs;
2425   struct gdbarch *gdbarch = get_current_arch ();
2426
2427   if (cmd == NULL)
2428     return NULL;
2429
2430   cmdrest = cmd;
2431
2432   if (*cmdrest == ',')
2433     ++cmdrest;
2434   cmdrest = skip_spaces (cmdrest);
2435
2436   if (*cmdrest++ != '"')
2437     error (_("No format string following the location"));
2438
2439   format_start = cmdrest;
2440
2441   fpieces = parse_format_string (&cmdrest);
2442
2443   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2444
2445   format_end = cmdrest;
2446
2447   if (*cmdrest++ != '"')
2448     error (_("Bad format string, non-terminated '\"'."));
2449   
2450   cmdrest = skip_spaces (cmdrest);
2451
2452   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2453     error (_("Invalid argument syntax"));
2454
2455   if (*cmdrest == ',')
2456     cmdrest++;
2457   cmdrest = skip_spaces (cmdrest);
2458
2459   /* For each argument, make an expression.  */
2460
2461   argvec = (struct expression **) alloca (strlen (cmd)
2462                                          * sizeof (struct expression *));
2463
2464   nargs = 0;
2465   while (*cmdrest != '\0')
2466     {
2467       const char *cmd1;
2468
2469       cmd1 = cmdrest;
2470       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2471       argvec[nargs++] = expr.release ();
2472       cmdrest = cmd1;
2473       if (*cmdrest == ',')
2474         ++cmdrest;
2475     }
2476
2477   agent_expr_up aexpr;
2478
2479   /* We don't want to stop processing, so catch any errors
2480      that may show up.  */
2481   TRY
2482     {
2483       aexpr = gen_printf (scope, gdbarch, 0, 0,
2484                           format_start, format_end - format_start,
2485                           fpieces, nargs, argvec);
2486     }
2487   CATCH (ex, RETURN_MASK_ERROR)
2488     {
2489       /* If we got here, it means the command could not be parsed to a valid
2490          bytecode expression and thus can't be evaluated on the target's side.
2491          It's no use iterating through the other commands.  */
2492     }
2493   END_CATCH
2494
2495   do_cleanups (old_cleanups);
2496
2497   /* We have a valid agent expression, return it.  */
2498   return aexpr;
2499 }
2500
2501 /* Based on location BL, create a list of breakpoint commands to be
2502    passed on to the target.  If we have duplicated locations with
2503    different commands, we will add any such to the list.  */
2504
2505 static void
2506 build_target_command_list (struct bp_location *bl)
2507 {
2508   struct bp_location **locp = NULL, **loc2p;
2509   int null_command_or_parse_error = 0;
2510   int modified = bl->needs_update;
2511   struct bp_location *loc;
2512
2513   /* Clear commands left over from a previous insert.  */
2514   bl->target_info.tcommands.clear ();
2515
2516   if (!target_can_run_breakpoint_commands ())
2517     return;
2518
2519   /* For now, limit to agent-style dprintf breakpoints.  */
2520   if (dprintf_style != dprintf_style_agent)
2521     return;
2522
2523   /* For now, if we have any duplicate location that isn't a dprintf,
2524      don't install the target-side commands, as that would make the
2525      breakpoint not be reported to the core, and we'd lose
2526      control.  */
2527   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2528     {
2529       loc = (*loc2p);
2530       if (is_breakpoint (loc->owner)
2531           && loc->pspace->num == bl->pspace->num
2532           && loc->owner->type != bp_dprintf)
2533         return;
2534     }
2535
2536   /* Do a first pass to check for locations with no assigned
2537      conditions or conditions that fail to parse to a valid agent expression
2538      bytecode.  If any of these happen, then it's no use to send conditions
2539      to the target since this location will always trigger and generate a
2540      response back to GDB.  */
2541   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2542     {
2543       loc = (*loc2p);
2544       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2545         {
2546           if (modified)
2547             {
2548               /* Re-parse the commands since something changed.  In that
2549                  case we already freed the command bytecodes (see
2550                  force_breakpoint_reinsertion).  We just
2551                  need to parse the command to bytecodes again.  */
2552               loc->cmd_bytecode
2553                 = parse_cmd_to_aexpr (bl->address,
2554                                       loc->owner->extra_string);
2555             }
2556
2557           /* If we have a NULL bytecode expression, it means something
2558              went wrong or we have a null command expression.  */
2559           if (!loc->cmd_bytecode)
2560             {
2561               null_command_or_parse_error = 1;
2562               break;
2563             }
2564         }
2565     }
2566
2567   /* If anything failed, then we're not doing target-side commands,
2568      and so clean up.  */
2569   if (null_command_or_parse_error)
2570     {
2571       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2572         {
2573           loc = (*loc2p);
2574           if (is_breakpoint (loc->owner)
2575               && loc->pspace->num == bl->pspace->num)
2576             {
2577               /* Only go as far as the first NULL bytecode is
2578                  located.  */
2579               if (loc->cmd_bytecode == NULL)
2580                 return;
2581
2582               loc->cmd_bytecode.reset ();
2583             }
2584         }
2585     }
2586
2587   /* No NULL commands or failed bytecode generation.  Build a command list
2588      for this location's address.  */
2589   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2590     {
2591       loc = (*loc2p);
2592       if (loc->owner->extra_string
2593           && is_breakpoint (loc->owner)
2594           && loc->pspace->num == bl->pspace->num
2595           && loc->owner->enable_state == bp_enabled
2596           && loc->enabled)
2597         {
2598           /* Add the command to the vector.  This will be used later
2599              to send the commands to the target.  */
2600           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2601         }
2602     }
2603
2604   bl->target_info.persist = 0;
2605   /* Maybe flag this location as persistent.  */
2606   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2607     bl->target_info.persist = 1;
2608 }
2609
2610 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2611    of breakpoint according to ADDR except single-step breakpoint.
2612    Get the kind of single-step breakpoint according to the current
2613    registers state.  */
2614
2615 static int
2616 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2617 {
2618   if (bl->owner->type == bp_single_step)
2619     {
2620       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2621       struct regcache *regcache;
2622
2623       regcache = get_thread_regcache (thr->ptid);
2624
2625       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2626                                                          regcache, addr);
2627     }
2628   else
2629     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2630 }
2631
2632 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2633    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2634    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2635    Returns 0 for success, 1 if the bp_location type is not supported or
2636    -1 for failure.
2637
2638    NOTE drow/2003-09-09: This routine could be broken down to an
2639    object-style method for each breakpoint or catchpoint type.  */
2640 static int
2641 insert_bp_location (struct bp_location *bl,
2642                     struct ui_file *tmp_error_stream,
2643                     int *disabled_breaks,
2644                     int *hw_breakpoint_error,
2645                     int *hw_bp_error_explained_already)
2646 {
2647   enum errors bp_err = GDB_NO_ERROR;
2648   const char *bp_err_message = NULL;
2649
2650   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2651     return 0;
2652
2653   /* Note we don't initialize bl->target_info, as that wipes out
2654      the breakpoint location's shadow_contents if the breakpoint
2655      is still inserted at that location.  This in turn breaks
2656      target_read_memory which depends on these buffers when
2657      a memory read is requested at the breakpoint location:
2658      Once the target_info has been wiped, we fail to see that
2659      we have a breakpoint inserted at that address and thus
2660      read the breakpoint instead of returning the data saved in
2661      the breakpoint location's shadow contents.  */
2662   bl->target_info.reqstd_address = bl->address;
2663   bl->target_info.placed_address_space = bl->pspace->aspace;
2664   bl->target_info.length = bl->length;
2665
2666   /* When working with target-side conditions, we must pass all the conditions
2667      for the same breakpoint address down to the target since GDB will not
2668      insert those locations.  With a list of breakpoint conditions, the target
2669      can decide when to stop and notify GDB.  */
2670
2671   if (is_breakpoint (bl->owner))
2672     {
2673       build_target_condition_list (bl);
2674       build_target_command_list (bl);
2675       /* Reset the modification marker.  */
2676       bl->needs_update = 0;
2677     }
2678
2679   if (bl->loc_type == bp_loc_software_breakpoint
2680       || bl->loc_type == bp_loc_hardware_breakpoint)
2681     {
2682       if (bl->owner->type != bp_hardware_breakpoint)
2683         {
2684           /* If the explicitly specified breakpoint type
2685              is not hardware breakpoint, check the memory map to see
2686              if the breakpoint address is in read only memory or not.
2687
2688              Two important cases are:
2689              - location type is not hardware breakpoint, memory
2690              is readonly.  We change the type of the location to
2691              hardware breakpoint.
2692              - location type is hardware breakpoint, memory is
2693              read-write.  This means we've previously made the
2694              location hardware one, but then the memory map changed,
2695              so we undo.
2696              
2697              When breakpoints are removed, remove_breakpoints will use
2698              location types we've just set here, the only possible
2699              problem is that memory map has changed during running
2700              program, but it's not going to work anyway with current
2701              gdb.  */
2702           struct mem_region *mr 
2703             = lookup_mem_region (bl->target_info.reqstd_address);
2704           
2705           if (mr)
2706             {
2707               if (automatic_hardware_breakpoints)
2708                 {
2709                   enum bp_loc_type new_type;
2710                   
2711                   if (mr->attrib.mode != MEM_RW)
2712                     new_type = bp_loc_hardware_breakpoint;
2713                   else 
2714                     new_type = bp_loc_software_breakpoint;
2715                   
2716                   if (new_type != bl->loc_type)
2717                     {
2718                       static int said = 0;
2719
2720                       bl->loc_type = new_type;
2721                       if (!said)
2722                         {
2723                           fprintf_filtered (gdb_stdout,
2724                                             _("Note: automatically using "
2725                                               "hardware breakpoints for "
2726                                               "read-only addresses.\n"));
2727                           said = 1;
2728                         }
2729                     }
2730                 }
2731               else if (bl->loc_type == bp_loc_software_breakpoint
2732                        && mr->attrib.mode != MEM_RW)
2733                 {
2734                   fprintf_unfiltered (tmp_error_stream,
2735                                       _("Cannot insert breakpoint %d.\n"
2736                                         "Cannot set software breakpoint "
2737                                         "at read-only address %s\n"),
2738                                       bl->owner->number,
2739                                       paddress (bl->gdbarch, bl->address));
2740                   return 1;
2741                 }
2742             }
2743         }
2744         
2745       /* First check to see if we have to handle an overlay.  */
2746       if (overlay_debugging == ovly_off
2747           || bl->section == NULL
2748           || !(section_is_overlay (bl->section)))
2749         {
2750           /* No overlay handling: just set the breakpoint.  */
2751           TRY
2752             {
2753               int val;
2754
2755               val = bl->owner->ops->insert_location (bl);
2756               if (val)
2757                 bp_err = GENERIC_ERROR;
2758             }
2759           CATCH (e, RETURN_MASK_ALL)
2760             {
2761               bp_err = e.error;
2762               bp_err_message = e.message;
2763             }
2764           END_CATCH
2765         }
2766       else
2767         {
2768           /* This breakpoint is in an overlay section.
2769              Shall we set a breakpoint at the LMA?  */
2770           if (!overlay_events_enabled)
2771             {
2772               /* Yes -- overlay event support is not active, 
2773                  so we must try to set a breakpoint at the LMA.
2774                  This will not work for a hardware breakpoint.  */
2775               if (bl->loc_type == bp_loc_hardware_breakpoint)
2776                 warning (_("hardware breakpoint %d not supported in overlay!"),
2777                          bl->owner->number);
2778               else
2779                 {
2780                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2781                                                              bl->section);
2782                   /* Set a software (trap) breakpoint at the LMA.  */
2783                   bl->overlay_target_info = bl->target_info;
2784                   bl->overlay_target_info.reqstd_address = addr;
2785
2786                   /* No overlay handling: just set the breakpoint.  */
2787                   TRY
2788                     {
2789                       int val;
2790
2791                       bl->overlay_target_info.kind
2792                         = breakpoint_kind (bl, &addr);
2793                       bl->overlay_target_info.placed_address = addr;
2794                       val = target_insert_breakpoint (bl->gdbarch,
2795                                                       &bl->overlay_target_info);
2796                       if (val)
2797                         bp_err = GENERIC_ERROR;
2798                     }
2799                   CATCH (e, RETURN_MASK_ALL)
2800                     {
2801                       bp_err = e.error;
2802                       bp_err_message = e.message;
2803                     }
2804                   END_CATCH
2805
2806                   if (bp_err != GDB_NO_ERROR)
2807                     fprintf_unfiltered (tmp_error_stream,
2808                                         "Overlay breakpoint %d "
2809                                         "failed: in ROM?\n",
2810                                         bl->owner->number);
2811                 }
2812             }
2813           /* Shall we set a breakpoint at the VMA? */
2814           if (section_is_mapped (bl->section))
2815             {
2816               /* Yes.  This overlay section is mapped into memory.  */
2817               TRY
2818                 {
2819                   int val;
2820
2821                   val = bl->owner->ops->insert_location (bl);
2822                   if (val)
2823                     bp_err = GENERIC_ERROR;
2824                 }
2825               CATCH (e, RETURN_MASK_ALL)
2826                 {
2827                   bp_err = e.error;
2828                   bp_err_message = e.message;
2829                 }
2830               END_CATCH
2831             }
2832           else
2833             {
2834               /* No.  This breakpoint will not be inserted.  
2835                  No error, but do not mark the bp as 'inserted'.  */
2836               return 0;
2837             }
2838         }
2839
2840       if (bp_err != GDB_NO_ERROR)
2841         {
2842           /* Can't set the breakpoint.  */
2843
2844           /* In some cases, we might not be able to insert a
2845              breakpoint in a shared library that has already been
2846              removed, but we have not yet processed the shlib unload
2847              event.  Unfortunately, some targets that implement
2848              breakpoint insertion themselves can't tell why the
2849              breakpoint insertion failed (e.g., the remote target
2850              doesn't define error codes), so we must treat generic
2851              errors as memory errors.  */
2852           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2853               && bl->loc_type == bp_loc_software_breakpoint
2854               && (solib_name_from_address (bl->pspace, bl->address)
2855                   || shared_objfile_contains_address_p (bl->pspace,
2856                                                         bl->address)))
2857             {
2858               /* See also: disable_breakpoints_in_shlibs.  */
2859               bl->shlib_disabled = 1;
2860               observer_notify_breakpoint_modified (bl->owner);
2861               if (!*disabled_breaks)
2862                 {
2863                   fprintf_unfiltered (tmp_error_stream, 
2864                                       "Cannot insert breakpoint %d.\n", 
2865                                       bl->owner->number);
2866                   fprintf_unfiltered (tmp_error_stream, 
2867                                       "Temporarily disabling shared "
2868                                       "library breakpoints:\n");
2869                 }
2870               *disabled_breaks = 1;
2871               fprintf_unfiltered (tmp_error_stream,
2872                                   "breakpoint #%d\n", bl->owner->number);
2873               return 0;
2874             }
2875           else
2876             {
2877               if (bl->loc_type == bp_loc_hardware_breakpoint)
2878                 {
2879                   *hw_breakpoint_error = 1;
2880                   *hw_bp_error_explained_already = bp_err_message != NULL;
2881                   fprintf_unfiltered (tmp_error_stream,
2882                                       "Cannot insert hardware breakpoint %d%s",
2883                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2884                   if (bp_err_message != NULL)
2885                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2886                 }
2887               else
2888                 {
2889                   if (bp_err_message == NULL)
2890                     {
2891                       std::string message
2892                         = memory_error_message (TARGET_XFER_E_IO,
2893                                                 bl->gdbarch, bl->address);
2894
2895                       fprintf_unfiltered (tmp_error_stream,
2896                                           "Cannot insert breakpoint %d.\n"
2897                                           "%s\n",
2898                                           bl->owner->number, message.c_str ());
2899                     }
2900                   else
2901                     {
2902                       fprintf_unfiltered (tmp_error_stream,
2903                                           "Cannot insert breakpoint %d: %s\n",
2904                                           bl->owner->number,
2905                                           bp_err_message);
2906                     }
2907                 }
2908               return 1;
2909
2910             }
2911         }
2912       else
2913         bl->inserted = 1;
2914
2915       return 0;
2916     }
2917
2918   else if (bl->loc_type == bp_loc_hardware_watchpoint
2919            /* NOTE drow/2003-09-08: This state only exists for removing
2920               watchpoints.  It's not clear that it's necessary...  */
2921            && bl->owner->disposition != disp_del_at_next_stop)
2922     {
2923       int val;
2924
2925       gdb_assert (bl->owner->ops != NULL
2926                   && bl->owner->ops->insert_location != NULL);
2927
2928       val = bl->owner->ops->insert_location (bl);
2929
2930       /* If trying to set a read-watchpoint, and it turns out it's not
2931          supported, try emulating one with an access watchpoint.  */
2932       if (val == 1 && bl->watchpoint_type == hw_read)
2933         {
2934           struct bp_location *loc, **loc_temp;
2935
2936           /* But don't try to insert it, if there's already another
2937              hw_access location that would be considered a duplicate
2938              of this one.  */
2939           ALL_BP_LOCATIONS (loc, loc_temp)
2940             if (loc != bl
2941                 && loc->watchpoint_type == hw_access
2942                 && watchpoint_locations_match (bl, loc))
2943               {
2944                 bl->duplicate = 1;
2945                 bl->inserted = 1;
2946                 bl->target_info = loc->target_info;
2947                 bl->watchpoint_type = hw_access;
2948                 val = 0;
2949                 break;
2950               }
2951
2952           if (val == 1)
2953             {
2954               bl->watchpoint_type = hw_access;
2955               val = bl->owner->ops->insert_location (bl);
2956
2957               if (val)
2958                 /* Back to the original value.  */
2959                 bl->watchpoint_type = hw_read;
2960             }
2961         }
2962
2963       bl->inserted = (val == 0);
2964     }
2965
2966   else if (bl->owner->type == bp_catchpoint)
2967     {
2968       int val;
2969
2970       gdb_assert (bl->owner->ops != NULL
2971                   && bl->owner->ops->insert_location != NULL);
2972
2973       val = bl->owner->ops->insert_location (bl);
2974       if (val)
2975         {
2976           bl->owner->enable_state = bp_disabled;
2977
2978           if (val == 1)
2979             warning (_("\
2980 Error inserting catchpoint %d: Your system does not support this type\n\
2981 of catchpoint."), bl->owner->number);
2982           else
2983             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2984         }
2985
2986       bl->inserted = (val == 0);
2987
2988       /* We've already printed an error message if there was a problem
2989          inserting this catchpoint, and we've disabled the catchpoint,
2990          so just return success.  */
2991       return 0;
2992     }
2993
2994   return 0;
2995 }
2996
2997 /* This function is called when program space PSPACE is about to be
2998    deleted.  It takes care of updating breakpoints to not reference
2999    PSPACE anymore.  */
3000
3001 void
3002 breakpoint_program_space_exit (struct program_space *pspace)
3003 {
3004   struct breakpoint *b, *b_temp;
3005   struct bp_location *loc, **loc_temp;
3006
3007   /* Remove any breakpoint that was set through this program space.  */
3008   ALL_BREAKPOINTS_SAFE (b, b_temp)
3009     {
3010       if (b->pspace == pspace)
3011         delete_breakpoint (b);
3012     }
3013
3014   /* Breakpoints set through other program spaces could have locations
3015      bound to PSPACE as well.  Remove those.  */
3016   ALL_BP_LOCATIONS (loc, loc_temp)
3017     {
3018       struct bp_location *tmp;
3019
3020       if (loc->pspace == pspace)
3021         {
3022           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
3023           if (loc->owner->loc == loc)
3024             loc->owner->loc = loc->next;
3025           else
3026             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3027               if (tmp->next == loc)
3028                 {
3029                   tmp->next = loc->next;
3030                   break;
3031                 }
3032         }
3033     }
3034
3035   /* Now update the global location list to permanently delete the
3036      removed locations above.  */
3037   update_global_location_list (UGLL_DONT_INSERT);
3038 }
3039
3040 /* Make sure all breakpoints are inserted in inferior.
3041    Throws exception on any error.
3042    A breakpoint that is already inserted won't be inserted
3043    again, so calling this function twice is safe.  */
3044 void
3045 insert_breakpoints (void)
3046 {
3047   struct breakpoint *bpt;
3048
3049   ALL_BREAKPOINTS (bpt)
3050     if (is_hardware_watchpoint (bpt))
3051       {
3052         struct watchpoint *w = (struct watchpoint *) bpt;
3053
3054         update_watchpoint (w, 0 /* don't reparse.  */);
3055       }
3056
3057   /* Updating watchpoints creates new locations, so update the global
3058      location list.  Explicitly tell ugll to insert locations and
3059      ignore breakpoints_always_inserted_mode.  */
3060   update_global_location_list (UGLL_INSERT);
3061 }
3062
3063 /* Invoke CALLBACK for each of bp_location.  */
3064
3065 void
3066 iterate_over_bp_locations (walk_bp_location_callback callback)
3067 {
3068   struct bp_location *loc, **loc_tmp;
3069
3070   ALL_BP_LOCATIONS (loc, loc_tmp)
3071     {
3072       callback (loc, NULL);
3073     }
3074 }
3075
3076 /* This is used when we need to synch breakpoint conditions between GDB and the
3077    target.  It is the case with deleting and disabling of breakpoints when using
3078    always-inserted mode.  */
3079
3080 static void
3081 update_inserted_breakpoint_locations (void)
3082 {
3083   struct bp_location *bl, **blp_tmp;
3084   int error_flag = 0;
3085   int val = 0;
3086   int disabled_breaks = 0;
3087   int hw_breakpoint_error = 0;
3088   int hw_bp_details_reported = 0;
3089
3090   string_file tmp_error_stream;
3091
3092   /* Explicitly mark the warning -- this will only be printed if
3093      there was an error.  */
3094   tmp_error_stream.puts ("Warning:\n");
3095
3096   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3097
3098   ALL_BP_LOCATIONS (bl, blp_tmp)
3099     {
3100       /* We only want to update software breakpoints and hardware
3101          breakpoints.  */
3102       if (!is_breakpoint (bl->owner))
3103         continue;
3104
3105       /* We only want to update locations that are already inserted
3106          and need updating.  This is to avoid unwanted insertion during
3107          deletion of breakpoints.  */
3108       if (!bl->inserted || (bl->inserted && !bl->needs_update))
3109         continue;
3110
3111       switch_to_program_space_and_thread (bl->pspace);
3112
3113       /* For targets that support global breakpoints, there's no need
3114          to select an inferior to insert breakpoint to.  In fact, even
3115          if we aren't attached to any process yet, we should still
3116          insert breakpoints.  */
3117       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3118           && ptid_equal (inferior_ptid, null_ptid))
3119         continue;
3120
3121       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3122                                     &hw_breakpoint_error, &hw_bp_details_reported);
3123       if (val)
3124         error_flag = val;
3125     }
3126
3127   if (error_flag)
3128     {
3129       target_terminal_ours_for_output ();
3130       error_stream (tmp_error_stream);
3131     }
3132 }
3133
3134 /* Used when starting or continuing the program.  */
3135
3136 static void
3137 insert_breakpoint_locations (void)
3138 {
3139   struct breakpoint *bpt;
3140   struct bp_location *bl, **blp_tmp;
3141   int error_flag = 0;
3142   int val = 0;
3143   int disabled_breaks = 0;
3144   int hw_breakpoint_error = 0;
3145   int hw_bp_error_explained_already = 0;
3146
3147   string_file tmp_error_stream;
3148
3149   /* Explicitly mark the warning -- this will only be printed if
3150      there was an error.  */
3151   tmp_error_stream.puts ("Warning:\n");
3152
3153   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3154
3155   ALL_BP_LOCATIONS (bl, blp_tmp)
3156     {
3157       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3158         continue;
3159
3160       /* There is no point inserting thread-specific breakpoints if
3161          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3162          has BL->OWNER always non-NULL.  */
3163       if (bl->owner->thread != -1
3164           && !valid_global_thread_id (bl->owner->thread))
3165         continue;
3166
3167       switch_to_program_space_and_thread (bl->pspace);
3168
3169       /* For targets that support global breakpoints, there's no need
3170          to select an inferior to insert breakpoint to.  In fact, even
3171          if we aren't attached to any process yet, we should still
3172          insert breakpoints.  */
3173       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3174           && ptid_equal (inferior_ptid, null_ptid))
3175         continue;
3176
3177       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3178                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3179       if (val)
3180         error_flag = val;
3181     }
3182
3183   /* If we failed to insert all locations of a watchpoint, remove
3184      them, as half-inserted watchpoint is of limited use.  */
3185   ALL_BREAKPOINTS (bpt)  
3186     {
3187       int some_failed = 0;
3188       struct bp_location *loc;
3189
3190       if (!is_hardware_watchpoint (bpt))
3191         continue;
3192
3193       if (!breakpoint_enabled (bpt))
3194         continue;
3195
3196       if (bpt->disposition == disp_del_at_next_stop)
3197         continue;
3198       
3199       for (loc = bpt->loc; loc; loc = loc->next)
3200         if (!loc->inserted && should_be_inserted (loc))
3201           {
3202             some_failed = 1;
3203             break;
3204           }
3205       if (some_failed)
3206         {
3207           for (loc = bpt->loc; loc; loc = loc->next)
3208             if (loc->inserted)
3209               remove_breakpoint (loc);
3210
3211           hw_breakpoint_error = 1;
3212           tmp_error_stream.printf ("Could not insert "
3213                                    "hardware watchpoint %d.\n",
3214                                    bpt->number);
3215           error_flag = -1;
3216         }
3217     }
3218
3219   if (error_flag)
3220     {
3221       /* If a hardware breakpoint or watchpoint was inserted, add a
3222          message about possibly exhausted resources.  */
3223       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3224         {
3225           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3226 You may have requested too many hardware breakpoints/watchpoints.\n");
3227         }
3228       target_terminal_ours_for_output ();
3229       error_stream (tmp_error_stream);
3230     }
3231 }
3232
3233 /* Used when the program stops.
3234    Returns zero if successful, or non-zero if there was a problem
3235    removing a breakpoint location.  */
3236
3237 int
3238 remove_breakpoints (void)
3239 {
3240   struct bp_location *bl, **blp_tmp;
3241   int val = 0;
3242
3243   ALL_BP_LOCATIONS (bl, blp_tmp)
3244   {
3245     if (bl->inserted && !is_tracepoint (bl->owner))
3246       val |= remove_breakpoint (bl);
3247   }
3248   return val;
3249 }
3250
3251 /* When a thread exits, remove breakpoints that are related to
3252    that thread.  */
3253
3254 static void
3255 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3256 {
3257   struct breakpoint *b, *b_tmp;
3258
3259   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3260     {
3261       if (b->thread == tp->global_num && user_breakpoint_p (b))
3262         {
3263           b->disposition = disp_del_at_next_stop;
3264
3265           printf_filtered (_("\
3266 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3267                            b->number, print_thread_id (tp));
3268
3269           /* Hide it from the user.  */
3270           b->number = 0;
3271        }
3272     }
3273 }
3274
3275 /* Remove breakpoints of process PID.  */
3276
3277 int
3278 remove_breakpoints_pid (int pid)
3279 {
3280   struct bp_location *bl, **blp_tmp;
3281   int val;
3282   struct inferior *inf = find_inferior_pid (pid);
3283
3284   ALL_BP_LOCATIONS (bl, blp_tmp)
3285   {
3286     if (bl->pspace != inf->pspace)
3287       continue;
3288
3289     if (bl->inserted && !bl->target_info.persist)
3290       {
3291         val = remove_breakpoint (bl);
3292         if (val != 0)
3293           return val;
3294       }
3295   }
3296   return 0;
3297 }
3298
3299 int
3300 reattach_breakpoints (int pid)
3301 {
3302   struct bp_location *bl, **blp_tmp;
3303   int val;
3304   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3305   struct inferior *inf;
3306   struct thread_info *tp;
3307
3308   tp = any_live_thread_of_process (pid);
3309   if (tp == NULL)
3310     return 1;
3311
3312   inf = find_inferior_pid (pid);
3313
3314   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3315   inferior_ptid = tp->ptid;
3316
3317   string_file tmp_error_stream;
3318
3319   ALL_BP_LOCATIONS (bl, blp_tmp)
3320   {
3321     if (bl->pspace != inf->pspace)
3322       continue;
3323
3324     if (bl->inserted)
3325       {
3326         bl->inserted = 0;
3327         val = insert_bp_location (bl, &tmp_error_stream, &dummy1, &dummy2, &dummy3);
3328         if (val != 0)
3329           return val;
3330       }
3331   }
3332   return 0;
3333 }
3334
3335 static int internal_breakpoint_number = -1;
3336
3337 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3338    If INTERNAL is non-zero, the breakpoint number will be populated
3339    from internal_breakpoint_number and that variable decremented.
3340    Otherwise the breakpoint number will be populated from
3341    breakpoint_count and that value incremented.  Internal breakpoints
3342    do not set the internal var bpnum.  */
3343 static void
3344 set_breakpoint_number (int internal, struct breakpoint *b)
3345 {
3346   if (internal)
3347     b->number = internal_breakpoint_number--;
3348   else
3349     {
3350       set_breakpoint_count (breakpoint_count + 1);
3351       b->number = breakpoint_count;
3352     }
3353 }
3354
3355 static struct breakpoint *
3356 create_internal_breakpoint (struct gdbarch *gdbarch,
3357                             CORE_ADDR address, enum bptype type,
3358                             const struct breakpoint_ops *ops)
3359 {
3360   symtab_and_line sal;
3361   sal.pc = address;
3362   sal.section = find_pc_overlay (sal.pc);
3363   sal.pspace = current_program_space;
3364
3365   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3366   b->number = internal_breakpoint_number--;
3367   b->disposition = disp_donttouch;
3368
3369   return b;
3370 }
3371
3372 static const char *const longjmp_names[] =
3373   {
3374     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3375   };
3376 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3377
3378 /* Per-objfile data private to breakpoint.c.  */
3379 struct breakpoint_objfile_data
3380 {
3381   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3382   struct bound_minimal_symbol overlay_msym;
3383
3384   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3385   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3386
3387   /* True if we have looked for longjmp probes.  */
3388   int longjmp_searched;
3389
3390   /* SystemTap probe points for longjmp (if any).  */
3391   VEC (probe_p) *longjmp_probes;
3392
3393   /* Minimal symbol for "std::terminate()" (if any).  */
3394   struct bound_minimal_symbol terminate_msym;
3395
3396   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3397   struct bound_minimal_symbol exception_msym;
3398
3399   /* True if we have looked for exception probes.  */
3400   int exception_searched;
3401
3402   /* SystemTap probe points for unwinding (if any).  */
3403   VEC (probe_p) *exception_probes;
3404 };
3405
3406 static const struct objfile_data *breakpoint_objfile_key;
3407
3408 /* Minimal symbol not found sentinel.  */
3409 static struct minimal_symbol msym_not_found;
3410
3411 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3412
3413 static int
3414 msym_not_found_p (const struct minimal_symbol *msym)
3415 {
3416   return msym == &msym_not_found;
3417 }
3418
3419 /* Return per-objfile data needed by breakpoint.c.
3420    Allocate the data if necessary.  */
3421
3422 static struct breakpoint_objfile_data *
3423 get_breakpoint_objfile_data (struct objfile *objfile)
3424 {
3425   struct breakpoint_objfile_data *bp_objfile_data;
3426
3427   bp_objfile_data = ((struct breakpoint_objfile_data *)
3428                      objfile_data (objfile, breakpoint_objfile_key));
3429   if (bp_objfile_data == NULL)
3430     {
3431       bp_objfile_data =
3432         XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3433
3434       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3435       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3436     }
3437   return bp_objfile_data;
3438 }
3439
3440 static void
3441 free_breakpoint_probes (struct objfile *obj, void *data)
3442 {
3443   struct breakpoint_objfile_data *bp_objfile_data
3444     = (struct breakpoint_objfile_data *) data;
3445
3446   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3447   VEC_free (probe_p, bp_objfile_data->exception_probes);
3448 }
3449
3450 static void
3451 create_overlay_event_breakpoint (void)
3452 {
3453   struct objfile *objfile;
3454   const char *const func_name = "_ovly_debug_event";
3455
3456   ALL_OBJFILES (objfile)
3457     {
3458       struct breakpoint *b;
3459       struct breakpoint_objfile_data *bp_objfile_data;
3460       CORE_ADDR addr;
3461       struct explicit_location explicit_loc;
3462
3463       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3464
3465       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3466         continue;
3467
3468       if (bp_objfile_data->overlay_msym.minsym == NULL)
3469         {
3470           struct bound_minimal_symbol m;
3471
3472           m = lookup_minimal_symbol_text (func_name, objfile);
3473           if (m.minsym == NULL)
3474             {
3475               /* Avoid future lookups in this objfile.  */
3476               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3477               continue;
3478             }
3479           bp_objfile_data->overlay_msym = m;
3480         }
3481
3482       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3483       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3484                                       bp_overlay_event,
3485                                       &internal_breakpoint_ops);
3486       initialize_explicit_location (&explicit_loc);
3487       explicit_loc.function_name = ASTRDUP (func_name);
3488       b->location = new_explicit_location (&explicit_loc);
3489
3490       if (overlay_debugging == ovly_auto)
3491         {
3492           b->enable_state = bp_enabled;
3493           overlay_events_enabled = 1;
3494         }
3495       else
3496        {
3497          b->enable_state = bp_disabled;
3498          overlay_events_enabled = 0;
3499        }
3500     }
3501 }
3502
3503 static void
3504 create_longjmp_master_breakpoint (void)
3505 {
3506   struct program_space *pspace;
3507
3508   scoped_restore_current_program_space restore_pspace;
3509
3510   ALL_PSPACES (pspace)
3511   {
3512     struct objfile *objfile;
3513
3514     set_current_program_space (pspace);
3515
3516     ALL_OBJFILES (objfile)
3517     {
3518       int i;
3519       struct gdbarch *gdbarch;
3520       struct breakpoint_objfile_data *bp_objfile_data;
3521
3522       gdbarch = get_objfile_arch (objfile);
3523
3524       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3525
3526       if (!bp_objfile_data->longjmp_searched)
3527         {
3528           VEC (probe_p) *ret;
3529
3530           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3531           if (ret != NULL)
3532             {
3533               /* We are only interested in checking one element.  */
3534               struct probe *p = VEC_index (probe_p, ret, 0);
3535
3536               if (!can_evaluate_probe_arguments (p))
3537                 {
3538                   /* We cannot use the probe interface here, because it does
3539                      not know how to evaluate arguments.  */
3540                   VEC_free (probe_p, ret);
3541                   ret = NULL;
3542                 }
3543             }
3544           bp_objfile_data->longjmp_probes = ret;
3545           bp_objfile_data->longjmp_searched = 1;
3546         }
3547
3548       if (bp_objfile_data->longjmp_probes != NULL)
3549         {
3550           int i;
3551           struct probe *probe;
3552           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3553
3554           for (i = 0;
3555                VEC_iterate (probe_p,
3556                             bp_objfile_data->longjmp_probes,
3557                             i, probe);
3558                ++i)
3559             {
3560               struct breakpoint *b;
3561
3562               b = create_internal_breakpoint (gdbarch,
3563                                               get_probe_address (probe,
3564                                                                  objfile),
3565                                               bp_longjmp_master,
3566                                               &internal_breakpoint_ops);
3567               b->location = new_probe_location ("-probe-stap libc:longjmp");
3568               b->enable_state = bp_disabled;
3569             }
3570
3571           continue;
3572         }
3573
3574       if (!gdbarch_get_longjmp_target_p (gdbarch))
3575         continue;
3576
3577       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3578         {
3579           struct breakpoint *b;
3580           const char *func_name;
3581           CORE_ADDR addr;
3582           struct explicit_location explicit_loc;
3583
3584           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3585             continue;
3586
3587           func_name = longjmp_names[i];
3588           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3589             {
3590               struct bound_minimal_symbol m;
3591
3592               m = lookup_minimal_symbol_text (func_name, objfile);
3593               if (m.minsym == NULL)
3594                 {
3595                   /* Prevent future lookups in this objfile.  */
3596                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3597                   continue;
3598                 }
3599               bp_objfile_data->longjmp_msym[i] = m;
3600             }
3601
3602           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3603           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3604                                           &internal_breakpoint_ops);
3605           initialize_explicit_location (&explicit_loc);
3606           explicit_loc.function_name = ASTRDUP (func_name);
3607           b->location = new_explicit_location (&explicit_loc);
3608           b->enable_state = bp_disabled;
3609         }
3610     }
3611   }
3612 }
3613
3614 /* Create a master std::terminate breakpoint.  */
3615 static void
3616 create_std_terminate_master_breakpoint (void)
3617 {
3618   struct program_space *pspace;
3619   const char *const func_name = "std::terminate()";
3620
3621   scoped_restore_current_program_space restore_pspace;
3622
3623   ALL_PSPACES (pspace)
3624   {
3625     struct objfile *objfile;
3626     CORE_ADDR addr;
3627
3628     set_current_program_space (pspace);
3629
3630     ALL_OBJFILES (objfile)
3631     {
3632       struct breakpoint *b;
3633       struct breakpoint_objfile_data *bp_objfile_data;
3634       struct explicit_location explicit_loc;
3635
3636       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3637
3638       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3639         continue;
3640
3641       if (bp_objfile_data->terminate_msym.minsym == NULL)
3642         {
3643           struct bound_minimal_symbol m;
3644
3645           m = lookup_minimal_symbol (func_name, NULL, objfile);
3646           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3647                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3648             {
3649               /* Prevent future lookups in this objfile.  */
3650               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3651               continue;
3652             }
3653           bp_objfile_data->terminate_msym = m;
3654         }
3655
3656       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3657       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3658                                       bp_std_terminate_master,
3659                                       &internal_breakpoint_ops);
3660       initialize_explicit_location (&explicit_loc);
3661       explicit_loc.function_name = ASTRDUP (func_name);
3662       b->location = new_explicit_location (&explicit_loc);
3663       b->enable_state = bp_disabled;
3664     }
3665   }
3666 }
3667
3668 /* Install a master breakpoint on the unwinder's debug hook.  */
3669
3670 static void
3671 create_exception_master_breakpoint (void)
3672 {
3673   struct objfile *objfile;
3674   const char *const func_name = "_Unwind_DebugHook";
3675
3676   ALL_OBJFILES (objfile)
3677     {
3678       struct breakpoint *b;
3679       struct gdbarch *gdbarch;
3680       struct breakpoint_objfile_data *bp_objfile_data;
3681       CORE_ADDR addr;
3682       struct explicit_location explicit_loc;
3683
3684       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3685
3686       /* We prefer the SystemTap probe point if it exists.  */
3687       if (!bp_objfile_data->exception_searched)
3688         {
3689           VEC (probe_p) *ret;
3690
3691           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3692
3693           if (ret != NULL)
3694             {
3695               /* We are only interested in checking one element.  */
3696               struct probe *p = VEC_index (probe_p, ret, 0);
3697
3698               if (!can_evaluate_probe_arguments (p))
3699                 {
3700                   /* We cannot use the probe interface here, because it does
3701                      not know how to evaluate arguments.  */
3702                   VEC_free (probe_p, ret);
3703                   ret = NULL;
3704                 }
3705             }
3706           bp_objfile_data->exception_probes = ret;
3707           bp_objfile_data->exception_searched = 1;
3708         }
3709
3710       if (bp_objfile_data->exception_probes != NULL)
3711         {
3712           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3713           int i;
3714           struct probe *probe;
3715
3716           for (i = 0;
3717                VEC_iterate (probe_p,
3718                             bp_objfile_data->exception_probes,
3719                             i, probe);
3720                ++i)
3721             {
3722               struct breakpoint *b;
3723
3724               b = create_internal_breakpoint (gdbarch,
3725                                               get_probe_address (probe,
3726                                                                  objfile),
3727                                               bp_exception_master,
3728                                               &internal_breakpoint_ops);
3729               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3730               b->enable_state = bp_disabled;
3731             }
3732
3733           continue;
3734         }
3735
3736       /* Otherwise, try the hook function.  */
3737
3738       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3739         continue;
3740
3741       gdbarch = get_objfile_arch (objfile);
3742
3743       if (bp_objfile_data->exception_msym.minsym == NULL)
3744         {
3745           struct bound_minimal_symbol debug_hook;
3746
3747           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3748           if (debug_hook.minsym == NULL)
3749             {
3750               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3751               continue;
3752             }
3753
3754           bp_objfile_data->exception_msym = debug_hook;
3755         }
3756
3757       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3758       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3759                                                  &current_target);
3760       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3761                                       &internal_breakpoint_ops);
3762       initialize_explicit_location (&explicit_loc);
3763       explicit_loc.function_name = ASTRDUP (func_name);
3764       b->location = new_explicit_location (&explicit_loc);
3765       b->enable_state = bp_disabled;
3766     }
3767 }
3768
3769 /* Does B have a location spec?  */
3770
3771 static int
3772 breakpoint_event_location_empty_p (const struct breakpoint *b)
3773 {
3774   return b->location != NULL && event_location_empty_p (b->location.get ());
3775 }
3776
3777 void
3778 update_breakpoints_after_exec (void)
3779 {
3780   struct breakpoint *b, *b_tmp;
3781   struct bp_location *bploc, **bplocp_tmp;
3782
3783   /* We're about to delete breakpoints from GDB's lists.  If the
3784      INSERTED flag is true, GDB will try to lift the breakpoints by
3785      writing the breakpoints' "shadow contents" back into memory.  The
3786      "shadow contents" are NOT valid after an exec, so GDB should not
3787      do that.  Instead, the target is responsible from marking
3788      breakpoints out as soon as it detects an exec.  We don't do that
3789      here instead, because there may be other attempts to delete
3790      breakpoints after detecting an exec and before reaching here.  */
3791   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3792     if (bploc->pspace == current_program_space)
3793       gdb_assert (!bploc->inserted);
3794
3795   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3796   {
3797     if (b->pspace != current_program_space)
3798       continue;
3799
3800     /* Solib breakpoints must be explicitly reset after an exec().  */
3801     if (b->type == bp_shlib_event)
3802       {
3803         delete_breakpoint (b);
3804         continue;
3805       }
3806
3807     /* JIT breakpoints must be explicitly reset after an exec().  */
3808     if (b->type == bp_jit_event)
3809       {
3810         delete_breakpoint (b);
3811         continue;
3812       }
3813
3814     /* Thread event breakpoints must be set anew after an exec(),
3815        as must overlay event and longjmp master breakpoints.  */
3816     if (b->type == bp_thread_event || b->type == bp_overlay_event
3817         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3818         || b->type == bp_exception_master)
3819       {
3820         delete_breakpoint (b);
3821         continue;
3822       }
3823
3824     /* Step-resume breakpoints are meaningless after an exec().  */
3825     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3826       {
3827         delete_breakpoint (b);
3828         continue;
3829       }
3830
3831     /* Just like single-step breakpoints.  */
3832     if (b->type == bp_single_step)
3833       {
3834         delete_breakpoint (b);
3835         continue;
3836       }
3837
3838     /* Longjmp and longjmp-resume breakpoints are also meaningless
3839        after an exec.  */
3840     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3841         || b->type == bp_longjmp_call_dummy
3842         || b->type == bp_exception || b->type == bp_exception_resume)
3843       {
3844         delete_breakpoint (b);
3845         continue;
3846       }
3847
3848     if (b->type == bp_catchpoint)
3849       {
3850         /* For now, none of the bp_catchpoint breakpoints need to
3851            do anything at this point.  In the future, if some of
3852            the catchpoints need to something, we will need to add
3853            a new method, and call this method from here.  */
3854         continue;
3855       }
3856
3857     /* bp_finish is a special case.  The only way we ought to be able
3858        to see one of these when an exec() has happened, is if the user
3859        caught a vfork, and then said "finish".  Ordinarily a finish just
3860        carries them to the call-site of the current callee, by setting
3861        a temporary bp there and resuming.  But in this case, the finish
3862        will carry them entirely through the vfork & exec.
3863
3864        We don't want to allow a bp_finish to remain inserted now.  But
3865        we can't safely delete it, 'cause finish_command has a handle to
3866        the bp on a bpstat, and will later want to delete it.  There's a
3867        chance (and I've seen it happen) that if we delete the bp_finish
3868        here, that its storage will get reused by the time finish_command
3869        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3870        We really must allow finish_command to delete a bp_finish.
3871
3872        In the absence of a general solution for the "how do we know
3873        it's safe to delete something others may have handles to?"
3874        problem, what we'll do here is just uninsert the bp_finish, and
3875        let finish_command delete it.
3876
3877        (We know the bp_finish is "doomed" in the sense that it's
3878        momentary, and will be deleted as soon as finish_command sees
3879        the inferior stopped.  So it doesn't matter that the bp's
3880        address is probably bogus in the new a.out, unlike e.g., the
3881        solib breakpoints.)  */
3882
3883     if (b->type == bp_finish)
3884       {
3885         continue;
3886       }
3887
3888     /* Without a symbolic address, we have little hope of the
3889        pre-exec() address meaning the same thing in the post-exec()
3890        a.out.  */
3891     if (breakpoint_event_location_empty_p (b))
3892       {
3893         delete_breakpoint (b);
3894         continue;
3895       }
3896   }
3897 }
3898
3899 int
3900 detach_breakpoints (ptid_t ptid)
3901 {
3902   struct bp_location *bl, **blp_tmp;
3903   int val = 0;
3904   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3905   struct inferior *inf = current_inferior ();
3906
3907   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3908     error (_("Cannot detach breakpoints of inferior_ptid"));
3909
3910   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3911   inferior_ptid = ptid;
3912   ALL_BP_LOCATIONS (bl, blp_tmp)
3913   {
3914     if (bl->pspace != inf->pspace)
3915       continue;
3916
3917     /* This function must physically remove breakpoints locations
3918        from the specified ptid, without modifying the breakpoint
3919        package's state.  Locations of type bp_loc_other are only
3920        maintained at GDB side.  So, there is no need to remove
3921        these bp_loc_other locations.  Moreover, removing these
3922        would modify the breakpoint package's state.  */
3923     if (bl->loc_type == bp_loc_other)
3924       continue;
3925
3926     if (bl->inserted)
3927       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3928   }
3929
3930   return val;
3931 }
3932
3933 /* Remove the breakpoint location BL from the current address space.
3934    Note that this is used to detach breakpoints from a child fork.
3935    When we get here, the child isn't in the inferior list, and neither
3936    do we have objects to represent its address space --- we should
3937    *not* look at bl->pspace->aspace here.  */
3938
3939 static int
3940 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3941 {
3942   int val;
3943
3944   /* BL is never in moribund_locations by our callers.  */
3945   gdb_assert (bl->owner != NULL);
3946
3947   /* The type of none suggests that owner is actually deleted.
3948      This should not ever happen.  */
3949   gdb_assert (bl->owner->type != bp_none);
3950
3951   if (bl->loc_type == bp_loc_software_breakpoint
3952       || bl->loc_type == bp_loc_hardware_breakpoint)
3953     {
3954       /* "Normal" instruction breakpoint: either the standard
3955          trap-instruction bp (bp_breakpoint), or a
3956          bp_hardware_breakpoint.  */
3957
3958       /* First check to see if we have to handle an overlay.  */
3959       if (overlay_debugging == ovly_off
3960           || bl->section == NULL
3961           || !(section_is_overlay (bl->section)))
3962         {
3963           /* No overlay handling: just remove the breakpoint.  */
3964
3965           /* If we're trying to uninsert a memory breakpoint that we
3966              know is set in a dynamic object that is marked
3967              shlib_disabled, then either the dynamic object was
3968              removed with "remove-symbol-file" or with
3969              "nosharedlibrary".  In the former case, we don't know
3970              whether another dynamic object might have loaded over the
3971              breakpoint's address -- the user might well let us know
3972              about it next with add-symbol-file (the whole point of
3973              add-symbol-file is letting the user manually maintain a
3974              list of dynamically loaded objects).  If we have the
3975              breakpoint's shadow memory, that is, this is a software
3976              breakpoint managed by GDB, check whether the breakpoint
3977              is still inserted in memory, to avoid overwriting wrong
3978              code with stale saved shadow contents.  Note that HW
3979              breakpoints don't have shadow memory, as they're
3980              implemented using a mechanism that is not dependent on
3981              being able to modify the target's memory, and as such
3982              they should always be removed.  */
3983           if (bl->shlib_disabled
3984               && bl->target_info.shadow_len != 0
3985               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3986             val = 0;
3987           else
3988             val = bl->owner->ops->remove_location (bl, reason);
3989         }
3990       else
3991         {
3992           /* This breakpoint is in an overlay section.
3993              Did we set a breakpoint at the LMA?  */
3994           if (!overlay_events_enabled)
3995               {
3996                 /* Yes -- overlay event support is not active, so we
3997                    should have set a breakpoint at the LMA.  Remove it.  
3998                 */
3999                 /* Ignore any failures: if the LMA is in ROM, we will
4000                    have already warned when we failed to insert it.  */
4001                 if (bl->loc_type == bp_loc_hardware_breakpoint)
4002                   target_remove_hw_breakpoint (bl->gdbarch,
4003                                                &bl->overlay_target_info);
4004                 else
4005                   target_remove_breakpoint (bl->gdbarch,
4006                                             &bl->overlay_target_info,
4007                                             reason);
4008               }
4009           /* Did we set a breakpoint at the VMA? 
4010              If so, we will have marked the breakpoint 'inserted'.  */
4011           if (bl->inserted)
4012             {
4013               /* Yes -- remove it.  Previously we did not bother to
4014                  remove the breakpoint if the section had been
4015                  unmapped, but let's not rely on that being safe.  We
4016                  don't know what the overlay manager might do.  */
4017
4018               /* However, we should remove *software* breakpoints only
4019                  if the section is still mapped, or else we overwrite
4020                  wrong code with the saved shadow contents.  */
4021               if (bl->loc_type == bp_loc_hardware_breakpoint
4022                   || section_is_mapped (bl->section))
4023                 val = bl->owner->ops->remove_location (bl, reason);
4024               else
4025                 val = 0;
4026             }
4027           else
4028             {
4029               /* No -- not inserted, so no need to remove.  No error.  */
4030               val = 0;
4031             }
4032         }
4033
4034       /* In some cases, we might not be able to remove a breakpoint in
4035          a shared library that has already been removed, but we have
4036          not yet processed the shlib unload event.  Similarly for an
4037          unloaded add-symbol-file object - the user might not yet have
4038          had the chance to remove-symbol-file it.  shlib_disabled will
4039          be set if the library/object has already been removed, but
4040          the breakpoint hasn't been uninserted yet, e.g., after
4041          "nosharedlibrary" or "remove-symbol-file" with breakpoints
4042          always-inserted mode.  */
4043       if (val
4044           && (bl->loc_type == bp_loc_software_breakpoint
4045               && (bl->shlib_disabled
4046                   || solib_name_from_address (bl->pspace, bl->address)
4047                   || shared_objfile_contains_address_p (bl->pspace,
4048                                                         bl->address))))
4049         val = 0;
4050
4051       if (val)
4052         return val;
4053       bl->inserted = (reason == DETACH_BREAKPOINT);
4054     }
4055   else if (bl->loc_type == bp_loc_hardware_watchpoint)
4056     {
4057       gdb_assert (bl->owner->ops != NULL
4058                   && bl->owner->ops->remove_location != NULL);
4059
4060       bl->inserted = (reason == DETACH_BREAKPOINT);
4061       bl->owner->ops->remove_location (bl, reason);
4062
4063       /* Failure to remove any of the hardware watchpoints comes here.  */
4064       if (reason == REMOVE_BREAKPOINT && bl->inserted)
4065         warning (_("Could not remove hardware watchpoint %d."),
4066                  bl->owner->number);
4067     }
4068   else if (bl->owner->type == bp_catchpoint
4069            && breakpoint_enabled (bl->owner)
4070            && !bl->duplicate)
4071     {
4072       gdb_assert (bl->owner->ops != NULL
4073                   && bl->owner->ops->remove_location != NULL);
4074
4075       val = bl->owner->ops->remove_location (bl, reason);
4076       if (val)
4077         return val;
4078
4079       bl->inserted = (reason == DETACH_BREAKPOINT);
4080     }
4081
4082   return 0;
4083 }
4084
4085 static int
4086 remove_breakpoint (struct bp_location *bl)
4087 {
4088   /* BL is never in moribund_locations by our callers.  */
4089   gdb_assert (bl->owner != NULL);
4090
4091   /* The type of none suggests that owner is actually deleted.
4092      This should not ever happen.  */
4093   gdb_assert (bl->owner->type != bp_none);
4094
4095   scoped_restore_current_pspace_and_thread restore_pspace_thread;
4096
4097   switch_to_program_space_and_thread (bl->pspace);
4098
4099   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
4100 }
4101
4102 /* Clear the "inserted" flag in all breakpoints.  */
4103
4104 void
4105 mark_breakpoints_out (void)
4106 {
4107   struct bp_location *bl, **blp_tmp;
4108
4109   ALL_BP_LOCATIONS (bl, blp_tmp)
4110     if (bl->pspace == current_program_space)
4111       bl->inserted = 0;
4112 }
4113
4114 /* Clear the "inserted" flag in all breakpoints and delete any
4115    breakpoints which should go away between runs of the program.
4116
4117    Plus other such housekeeping that has to be done for breakpoints
4118    between runs.
4119
4120    Note: this function gets called at the end of a run (by
4121    generic_mourn_inferior) and when a run begins (by
4122    init_wait_for_inferior).  */
4123
4124
4125
4126 void
4127 breakpoint_init_inferior (enum inf_context context)
4128 {
4129   struct breakpoint *b, *b_tmp;
4130   struct bp_location *bl;
4131   int ix;
4132   struct program_space *pspace = current_program_space;
4133
4134   /* If breakpoint locations are shared across processes, then there's
4135      nothing to do.  */
4136   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4137     return;
4138
4139   mark_breakpoints_out ();
4140
4141   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4142   {
4143     if (b->loc && b->loc->pspace != pspace)
4144       continue;
4145
4146     switch (b->type)
4147       {
4148       case bp_call_dummy:
4149       case bp_longjmp_call_dummy:
4150
4151         /* If the call dummy breakpoint is at the entry point it will
4152            cause problems when the inferior is rerun, so we better get
4153            rid of it.  */
4154
4155       case bp_watchpoint_scope:
4156
4157         /* Also get rid of scope breakpoints.  */
4158
4159       case bp_shlib_event:
4160
4161         /* Also remove solib event breakpoints.  Their addresses may
4162            have changed since the last time we ran the program.
4163            Actually we may now be debugging against different target;
4164            and so the solib backend that installed this breakpoint may
4165            not be used in by the target.  E.g.,
4166
4167            (gdb) file prog-linux
4168            (gdb) run               # native linux target
4169            ...
4170            (gdb) kill
4171            (gdb) file prog-win.exe
4172            (gdb) tar rem :9999     # remote Windows gdbserver.
4173         */
4174
4175       case bp_step_resume:
4176
4177         /* Also remove step-resume breakpoints.  */
4178
4179       case bp_single_step:
4180
4181         /* Also remove single-step breakpoints.  */
4182
4183         delete_breakpoint (b);
4184         break;
4185
4186       case bp_watchpoint:
4187       case bp_hardware_watchpoint:
4188       case bp_read_watchpoint:
4189       case bp_access_watchpoint:
4190         {
4191           struct watchpoint *w = (struct watchpoint *) b;
4192
4193           /* Likewise for watchpoints on local expressions.  */
4194           if (w->exp_valid_block != NULL)
4195             delete_breakpoint (b);
4196           else
4197             {
4198               /* Get rid of existing locations, which are no longer
4199                  valid.  New ones will be created in
4200                  update_watchpoint, when the inferior is restarted.
4201                  The next update_global_location_list call will
4202                  garbage collect them.  */
4203               b->loc = NULL;
4204
4205               if (context == inf_starting)
4206                 {
4207                   /* Reset val field to force reread of starting value in
4208                      insert_breakpoints.  */
4209                   if (w->val)
4210                     value_free (w->val);
4211                   w->val = NULL;
4212                   w->val_valid = 0;
4213                 }
4214             }
4215         }
4216         break;
4217       default:
4218         break;
4219       }
4220   }
4221
4222   /* Get rid of the moribund locations.  */
4223   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4224     decref_bp_location (&bl);
4225   VEC_free (bp_location_p, moribund_locations);
4226 }
4227
4228 /* These functions concern about actual breakpoints inserted in the
4229    target --- to e.g. check if we need to do decr_pc adjustment or if
4230    we need to hop over the bkpt --- so we check for address space
4231    match, not program space.  */
4232
4233 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4234    exists at PC.  It returns ordinary_breakpoint_here if it's an
4235    ordinary breakpoint, or permanent_breakpoint_here if it's a
4236    permanent breakpoint.
4237    - When continuing from a location with an ordinary breakpoint, we
4238      actually single step once before calling insert_breakpoints.
4239    - When continuing from a location with a permanent breakpoint, we
4240      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4241      the target, to advance the PC past the breakpoint.  */
4242
4243 enum breakpoint_here
4244 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4245 {
4246   struct bp_location *bl, **blp_tmp;
4247   int any_breakpoint_here = 0;
4248
4249   ALL_BP_LOCATIONS (bl, blp_tmp)
4250     {
4251       if (bl->loc_type != bp_loc_software_breakpoint
4252           && bl->loc_type != bp_loc_hardware_breakpoint)
4253         continue;
4254
4255       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4256       if ((breakpoint_enabled (bl->owner)
4257            || bl->permanent)
4258           && breakpoint_location_address_match (bl, aspace, pc))
4259         {
4260           if (overlay_debugging 
4261               && section_is_overlay (bl->section)
4262               && !section_is_mapped (bl->section))
4263             continue;           /* unmapped overlay -- can't be a match */
4264           else if (bl->permanent)
4265             return permanent_breakpoint_here;
4266           else
4267             any_breakpoint_here = 1;
4268         }
4269     }
4270
4271   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4272 }
4273
4274 /* See breakpoint.h.  */
4275
4276 int
4277 breakpoint_in_range_p (struct address_space *aspace,
4278                        CORE_ADDR addr, ULONGEST len)
4279 {
4280   struct bp_location *bl, **blp_tmp;
4281
4282   ALL_BP_LOCATIONS (bl, blp_tmp)
4283     {
4284       if (bl->loc_type != bp_loc_software_breakpoint
4285           && bl->loc_type != bp_loc_hardware_breakpoint)
4286         continue;
4287
4288       if ((breakpoint_enabled (bl->owner)
4289            || bl->permanent)
4290           && breakpoint_location_address_range_overlap (bl, aspace,
4291                                                         addr, len))
4292         {
4293           if (overlay_debugging
4294               && section_is_overlay (bl->section)
4295               && !section_is_mapped (bl->section))
4296             {
4297               /* Unmapped overlay -- can't be a match.  */
4298               continue;
4299             }
4300
4301           return 1;
4302         }
4303     }
4304
4305   return 0;
4306 }
4307
4308 /* Return true if there's a moribund breakpoint at PC.  */
4309
4310 int
4311 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4312 {
4313   struct bp_location *loc;
4314   int ix;
4315
4316   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4317     if (breakpoint_location_address_match (loc, aspace, pc))
4318       return 1;
4319
4320   return 0;
4321 }
4322
4323 /* Returns non-zero iff BL is inserted at PC, in address space
4324    ASPACE.  */
4325
4326 static int
4327 bp_location_inserted_here_p (struct bp_location *bl,
4328                              struct address_space *aspace, CORE_ADDR pc)
4329 {
4330   if (bl->inserted
4331       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4332                                    aspace, pc))
4333     {
4334       if (overlay_debugging
4335           && section_is_overlay (bl->section)
4336           && !section_is_mapped (bl->section))
4337         return 0;               /* unmapped overlay -- can't be a match */
4338       else
4339         return 1;
4340     }
4341   return 0;
4342 }
4343
4344 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4345
4346 int
4347 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4348 {
4349   struct bp_location **blp, **blp_tmp = NULL;
4350
4351   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4352     {
4353       struct bp_location *bl = *blp;
4354
4355       if (bl->loc_type != bp_loc_software_breakpoint
4356           && bl->loc_type != bp_loc_hardware_breakpoint)
4357         continue;
4358
4359       if (bp_location_inserted_here_p (bl, aspace, pc))
4360         return 1;
4361     }
4362   return 0;
4363 }
4364
4365 /* This function returns non-zero iff there is a software breakpoint
4366    inserted at PC.  */
4367
4368 int
4369 software_breakpoint_inserted_here_p (struct address_space *aspace,
4370                                      CORE_ADDR pc)
4371 {
4372   struct bp_location **blp, **blp_tmp = NULL;
4373
4374   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4375     {
4376       struct bp_location *bl = *blp;
4377
4378       if (bl->loc_type != bp_loc_software_breakpoint)
4379         continue;
4380
4381       if (bp_location_inserted_here_p (bl, aspace, pc))
4382         return 1;
4383     }
4384
4385   return 0;
4386 }
4387
4388 /* See breakpoint.h.  */
4389
4390 int
4391 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4392                                      CORE_ADDR pc)
4393 {
4394   struct bp_location **blp, **blp_tmp = NULL;
4395
4396   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4397     {
4398       struct bp_location *bl = *blp;
4399
4400       if (bl->loc_type != bp_loc_hardware_breakpoint)
4401         continue;
4402
4403       if (bp_location_inserted_here_p (bl, aspace, pc))
4404         return 1;
4405     }
4406
4407   return 0;
4408 }
4409
4410 int
4411 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4412                                        CORE_ADDR addr, ULONGEST len)
4413 {
4414   struct breakpoint *bpt;
4415
4416   ALL_BREAKPOINTS (bpt)
4417     {
4418       struct bp_location *loc;
4419
4420       if (bpt->type != bp_hardware_watchpoint
4421           && bpt->type != bp_access_watchpoint)
4422         continue;
4423
4424       if (!breakpoint_enabled (bpt))
4425         continue;
4426
4427       for (loc = bpt->loc; loc; loc = loc->next)
4428         if (loc->pspace->aspace == aspace && loc->inserted)
4429           {
4430             CORE_ADDR l, h;
4431
4432             /* Check for intersection.  */
4433             l = std::max<CORE_ADDR> (loc->address, addr);
4434             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4435             if (l < h)
4436               return 1;
4437           }
4438     }
4439   return 0;
4440 }
4441 \f
4442
4443 /* bpstat stuff.  External routines' interfaces are documented
4444    in breakpoint.h.  */
4445
4446 int
4447 is_catchpoint (struct breakpoint *ep)
4448 {
4449   return (ep->type == bp_catchpoint);
4450 }
4451
4452 /* Frees any storage that is part of a bpstat.  Does not walk the
4453    'next' chain.  */
4454
4455 static void
4456 bpstat_free (bpstat bs)
4457 {
4458   if (bs->old_val != NULL)
4459     value_free (bs->old_val);
4460   decref_counted_command_line (&bs->commands);
4461   decref_bp_location (&bs->bp_location_at);
4462   xfree (bs);
4463 }
4464
4465 /* Clear a bpstat so that it says we are not at any breakpoint.
4466    Also free any storage that is part of a bpstat.  */
4467
4468 void
4469 bpstat_clear (bpstat *bsp)
4470 {
4471   bpstat p;
4472   bpstat q;
4473
4474   if (bsp == 0)
4475     return;
4476   p = *bsp;
4477   while (p != NULL)
4478     {
4479       q = p->next;
4480       bpstat_free (p);
4481       p = q;
4482     }
4483   *bsp = NULL;
4484 }
4485
4486 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4487    is part of the bpstat is copied as well.  */
4488
4489 bpstat
4490 bpstat_copy (bpstat bs)
4491 {
4492   bpstat p = NULL;
4493   bpstat tmp;
4494   bpstat retval = NULL;
4495
4496   if (bs == NULL)
4497     return bs;
4498
4499   for (; bs != NULL; bs = bs->next)
4500     {
4501       tmp = (bpstat) xmalloc (sizeof (*tmp));
4502       memcpy (tmp, bs, sizeof (*tmp));
4503       incref_counted_command_line (tmp->commands);
4504       incref_bp_location (tmp->bp_location_at);
4505       if (bs->old_val != NULL)
4506         {
4507           tmp->old_val = value_copy (bs->old_val);
4508           release_value (tmp->old_val);
4509         }
4510
4511       if (p == NULL)
4512         /* This is the first thing in the chain.  */
4513         retval = tmp;
4514       else
4515         p->next = tmp;
4516       p = tmp;
4517     }
4518   p->next = NULL;
4519   return retval;
4520 }
4521
4522 /* Find the bpstat associated with this breakpoint.  */
4523
4524 bpstat
4525 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4526 {
4527   if (bsp == NULL)
4528     return NULL;
4529
4530   for (; bsp != NULL; bsp = bsp->next)
4531     {
4532       if (bsp->breakpoint_at == breakpoint)
4533         return bsp;
4534     }
4535   return NULL;
4536 }
4537
4538 /* See breakpoint.h.  */
4539
4540 int
4541 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4542 {
4543   for (; bsp != NULL; bsp = bsp->next)
4544     {
4545       if (bsp->breakpoint_at == NULL)
4546         {
4547           /* A moribund location can never explain a signal other than
4548              GDB_SIGNAL_TRAP.  */
4549           if (sig == GDB_SIGNAL_TRAP)
4550             return 1;
4551         }
4552       else
4553         {
4554           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4555                                                         sig))
4556             return 1;
4557         }
4558     }
4559
4560   return 0;
4561 }
4562
4563 /* Put in *NUM the breakpoint number of the first breakpoint we are
4564    stopped at.  *BSP upon return is a bpstat which points to the
4565    remaining breakpoints stopped at (but which is not guaranteed to be
4566    good for anything but further calls to bpstat_num).
4567
4568    Return 0 if passed a bpstat which does not indicate any breakpoints.
4569    Return -1 if stopped at a breakpoint that has been deleted since
4570    we set it.
4571    Return 1 otherwise.  */
4572
4573 int
4574 bpstat_num (bpstat *bsp, int *num)
4575 {
4576   struct breakpoint *b;
4577
4578   if ((*bsp) == NULL)
4579     return 0;                   /* No more breakpoint values */
4580
4581   /* We assume we'll never have several bpstats that correspond to a
4582      single breakpoint -- otherwise, this function might return the
4583      same number more than once and this will look ugly.  */
4584   b = (*bsp)->breakpoint_at;
4585   *bsp = (*bsp)->next;
4586   if (b == NULL)
4587     return -1;                  /* breakpoint that's been deleted since */
4588
4589   *num = b->number;             /* We have its number */
4590   return 1;
4591 }
4592
4593 /* See breakpoint.h.  */
4594
4595 void
4596 bpstat_clear_actions (void)
4597 {
4598   struct thread_info *tp;
4599   bpstat bs;
4600
4601   if (ptid_equal (inferior_ptid, null_ptid))
4602     return;
4603
4604   tp = find_thread_ptid (inferior_ptid);
4605   if (tp == NULL)
4606     return;
4607
4608   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4609     {
4610       decref_counted_command_line (&bs->commands);
4611
4612       if (bs->old_val != NULL)
4613         {
4614           value_free (bs->old_val);
4615           bs->old_val = NULL;
4616         }
4617     }
4618 }
4619
4620 /* Called when a command is about to proceed the inferior.  */
4621
4622 static void
4623 breakpoint_about_to_proceed (void)
4624 {
4625   if (!ptid_equal (inferior_ptid, null_ptid))
4626     {
4627       struct thread_info *tp = inferior_thread ();
4628
4629       /* Allow inferior function calls in breakpoint commands to not
4630          interrupt the command list.  When the call finishes
4631          successfully, the inferior will be standing at the same
4632          breakpoint as if nothing happened.  */
4633       if (tp->control.in_infcall)
4634         return;
4635     }
4636
4637   breakpoint_proceeded = 1;
4638 }
4639
4640 /* Stub for cleaning up our state if we error-out of a breakpoint
4641    command.  */
4642 static void
4643 cleanup_executing_breakpoints (void *ignore)
4644 {
4645   executing_breakpoint_commands = 0;
4646 }
4647
4648 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4649    or its equivalent.  */
4650
4651 static int
4652 command_line_is_silent (struct command_line *cmd)
4653 {
4654   return cmd && (strcmp ("silent", cmd->line) == 0);
4655 }
4656
4657 /* Execute all the commands associated with all the breakpoints at
4658    this location.  Any of these commands could cause the process to
4659    proceed beyond this point, etc.  We look out for such changes by
4660    checking the global "breakpoint_proceeded" after each command.
4661
4662    Returns true if a breakpoint command resumed the inferior.  In that
4663    case, it is the caller's responsibility to recall it again with the
4664    bpstat of the current thread.  */
4665
4666 static int
4667 bpstat_do_actions_1 (bpstat *bsp)
4668 {
4669   bpstat bs;
4670   struct cleanup *old_chain;
4671   int again = 0;
4672
4673   /* Avoid endless recursion if a `source' command is contained
4674      in bs->commands.  */
4675   if (executing_breakpoint_commands)
4676     return 0;
4677
4678   executing_breakpoint_commands = 1;
4679   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4680
4681   scoped_restore preventer = prevent_dont_repeat ();
4682
4683   /* This pointer will iterate over the list of bpstat's.  */
4684   bs = *bsp;
4685
4686   breakpoint_proceeded = 0;
4687   for (; bs != NULL; bs = bs->next)
4688     {
4689       struct counted_command_line *ccmd;
4690       struct command_line *cmd;
4691       struct cleanup *this_cmd_tree_chain;
4692
4693       /* Take ownership of the BSP's command tree, if it has one.
4694
4695          The command tree could legitimately contain commands like
4696          'step' and 'next', which call clear_proceed_status, which
4697          frees stop_bpstat's command tree.  To make sure this doesn't
4698          free the tree we're executing out from under us, we need to
4699          take ownership of the tree ourselves.  Since a given bpstat's
4700          commands are only executed once, we don't need to copy it; we
4701          can clear the pointer in the bpstat, and make sure we free
4702          the tree when we're done.  */
4703       ccmd = bs->commands;
4704       bs->commands = NULL;
4705       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4706       cmd = ccmd ? ccmd->commands : NULL;
4707       if (command_line_is_silent (cmd))
4708         {
4709           /* The action has been already done by bpstat_stop_status.  */
4710           cmd = cmd->next;
4711         }
4712
4713       while (cmd != NULL)
4714         {
4715           execute_control_command (cmd);
4716
4717           if (breakpoint_proceeded)
4718             break;
4719           else
4720             cmd = cmd->next;
4721         }
4722
4723       /* We can free this command tree now.  */
4724       do_cleanups (this_cmd_tree_chain);
4725
4726       if (breakpoint_proceeded)
4727         {
4728           if (current_ui->async)
4729             /* If we are in async mode, then the target might be still
4730                running, not stopped at any breakpoint, so nothing for
4731                us to do here -- just return to the event loop.  */
4732             ;
4733           else
4734             /* In sync mode, when execute_control_command returns
4735                we're already standing on the next breakpoint.
4736                Breakpoint commands for that stop were not run, since
4737                execute_command does not run breakpoint commands --
4738                only command_line_handler does, but that one is not
4739                involved in execution of breakpoint commands.  So, we
4740                can now execute breakpoint commands.  It should be
4741                noted that making execute_command do bpstat actions is
4742                not an option -- in this case we'll have recursive
4743                invocation of bpstat for each breakpoint with a
4744                command, and can easily blow up GDB stack.  Instead, we
4745                return true, which will trigger the caller to recall us
4746                with the new stop_bpstat.  */
4747             again = 1;
4748           break;
4749         }
4750     }
4751   do_cleanups (old_chain);
4752   return again;
4753 }
4754
4755 void
4756 bpstat_do_actions (void)
4757 {
4758   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4759
4760   /* Do any commands attached to breakpoint we are stopped at.  */
4761   while (!ptid_equal (inferior_ptid, null_ptid)
4762          && target_has_execution
4763          && !is_exited (inferior_ptid)
4764          && !is_executing (inferior_ptid))
4765     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4766        and only return when it is stopped at the next breakpoint, we
4767        keep doing breakpoint actions until it returns false to
4768        indicate the inferior was not resumed.  */
4769     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4770       break;
4771
4772   discard_cleanups (cleanup_if_error);
4773 }
4774
4775 /* Print out the (old or new) value associated with a watchpoint.  */
4776
4777 static void
4778 watchpoint_value_print (struct value *val, struct ui_file *stream)
4779 {
4780   if (val == NULL)
4781     fprintf_unfiltered (stream, _("<unreadable>"));
4782   else
4783     {
4784       struct value_print_options opts;
4785       get_user_print_options (&opts);
4786       value_print (val, stream, &opts);
4787     }
4788 }
4789
4790 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4791    debugging multiple threads.  */
4792
4793 void
4794 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4795 {
4796   if (uiout->is_mi_like_p ())
4797     return;
4798
4799   uiout->text ("\n");
4800
4801   if (show_thread_that_caused_stop ())
4802     {
4803       const char *name;
4804       struct thread_info *thr = inferior_thread ();
4805
4806       uiout->text ("Thread ");
4807       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4808
4809       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4810       if (name != NULL)
4811         {
4812           uiout->text (" \"");
4813           uiout->field_fmt ("name", "%s", name);
4814           uiout->text ("\"");
4815         }
4816
4817       uiout->text (" hit ");
4818     }
4819 }
4820
4821 /* Generic routine for printing messages indicating why we
4822    stopped.  The behavior of this function depends on the value
4823    'print_it' in the bpstat structure.  Under some circumstances we
4824    may decide not to print anything here and delegate the task to
4825    normal_stop().  */
4826
4827 static enum print_stop_action
4828 print_bp_stop_message (bpstat bs)
4829 {
4830   switch (bs->print_it)
4831     {
4832     case print_it_noop:
4833       /* Nothing should be printed for this bpstat entry.  */
4834       return PRINT_UNKNOWN;
4835       break;
4836
4837     case print_it_done:
4838       /* We still want to print the frame, but we already printed the
4839          relevant messages.  */
4840       return PRINT_SRC_AND_LOC;
4841       break;
4842
4843     case print_it_normal:
4844       {
4845         struct breakpoint *b = bs->breakpoint_at;
4846
4847         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4848            which has since been deleted.  */
4849         if (b == NULL)
4850           return PRINT_UNKNOWN;
4851
4852         /* Normal case.  Call the breakpoint's print_it method.  */
4853         return b->ops->print_it (bs);
4854       }
4855       break;
4856
4857     default:
4858       internal_error (__FILE__, __LINE__,
4859                       _("print_bp_stop_message: unrecognized enum value"));
4860       break;
4861     }
4862 }
4863
4864 /* A helper function that prints a shared library stopped event.  */
4865
4866 static void
4867 print_solib_event (int is_catchpoint)
4868 {
4869   int any_deleted
4870     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4871   int any_added
4872     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4873
4874   if (!is_catchpoint)
4875     {
4876       if (any_added || any_deleted)
4877         current_uiout->text (_("Stopped due to shared library event:\n"));
4878       else
4879         current_uiout->text (_("Stopped due to shared library event (no "
4880                                "libraries added or removed)\n"));
4881     }
4882
4883   if (current_uiout->is_mi_like_p ())
4884     current_uiout->field_string ("reason",
4885                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4886
4887   if (any_deleted)
4888     {
4889       char *name;
4890       int ix;
4891
4892       current_uiout->text (_("  Inferior unloaded "));
4893       ui_out_emit_list list_emitter (current_uiout, "removed");
4894       for (ix = 0;
4895            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4896                         ix, name);
4897            ++ix)
4898         {
4899           if (ix > 0)
4900             current_uiout->text ("    ");
4901           current_uiout->field_string ("library", name);
4902           current_uiout->text ("\n");
4903         }
4904     }
4905
4906   if (any_added)
4907     {
4908       struct so_list *iter;
4909       int ix;
4910
4911       current_uiout->text (_("  Inferior loaded "));
4912       ui_out_emit_list list_emitter (current_uiout, "added");
4913       for (ix = 0;
4914            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4915                         ix, iter);
4916            ++ix)
4917         {
4918           if (ix > 0)
4919             current_uiout->text ("    ");
4920           current_uiout->field_string ("library", iter->so_name);
4921           current_uiout->text ("\n");
4922         }
4923     }
4924 }
4925
4926 /* Print a message indicating what happened.  This is called from
4927    normal_stop().  The input to this routine is the head of the bpstat
4928    list - a list of the eventpoints that caused this stop.  KIND is
4929    the target_waitkind for the stopping event.  This
4930    routine calls the generic print routine for printing a message
4931    about reasons for stopping.  This will print (for example) the
4932    "Breakpoint n," part of the output.  The return value of this
4933    routine is one of:
4934
4935    PRINT_UNKNOWN: Means we printed nothing.
4936    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4937    code to print the location.  An example is 
4938    "Breakpoint 1, " which should be followed by
4939    the location.
4940    PRINT_SRC_ONLY: Means we printed something, but there is no need
4941    to also print the location part of the message.
4942    An example is the catch/throw messages, which
4943    don't require a location appended to the end.
4944    PRINT_NOTHING: We have done some printing and we don't need any 
4945    further info to be printed.  */
4946
4947 enum print_stop_action
4948 bpstat_print (bpstat bs, int kind)
4949 {
4950   enum print_stop_action val;
4951
4952   /* Maybe another breakpoint in the chain caused us to stop.
4953      (Currently all watchpoints go on the bpstat whether hit or not.
4954      That probably could (should) be changed, provided care is taken
4955      with respect to bpstat_explains_signal).  */
4956   for (; bs; bs = bs->next)
4957     {
4958       val = print_bp_stop_message (bs);
4959       if (val == PRINT_SRC_ONLY 
4960           || val == PRINT_SRC_AND_LOC 
4961           || val == PRINT_NOTHING)
4962         return val;
4963     }
4964
4965   /* If we had hit a shared library event breakpoint,
4966      print_bp_stop_message would print out this message.  If we hit an
4967      OS-level shared library event, do the same thing.  */
4968   if (kind == TARGET_WAITKIND_LOADED)
4969     {
4970       print_solib_event (0);
4971       return PRINT_NOTHING;
4972     }
4973
4974   /* We reached the end of the chain, or we got a null BS to start
4975      with and nothing was printed.  */
4976   return PRINT_UNKNOWN;
4977 }
4978
4979 /* Evaluate the expression EXP and return 1 if value is zero.
4980    This returns the inverse of the condition because it is called
4981    from catch_errors which returns 0 if an exception happened, and if an
4982    exception happens we want execution to stop.
4983    The argument is a "struct expression *" that has been cast to a
4984    "void *" to make it pass through catch_errors.  */
4985
4986 static int
4987 breakpoint_cond_eval (void *exp)
4988 {
4989   struct value *mark = value_mark ();
4990   int i = !value_true (evaluate_expression ((struct expression *) exp));
4991
4992   value_free_to_mark (mark);
4993   return i;
4994 }
4995
4996 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4997
4998 static bpstat
4999 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
5000 {
5001   bpstat bs;
5002
5003   bs = (bpstat) xmalloc (sizeof (*bs));
5004   bs->next = NULL;
5005   **bs_link_pointer = bs;
5006   *bs_link_pointer = &bs->next;
5007   bs->breakpoint_at = bl->owner;
5008   bs->bp_location_at = bl;
5009   incref_bp_location (bl);
5010   /* If the condition is false, etc., don't do the commands.  */
5011   bs->commands = NULL;
5012   bs->old_val = NULL;
5013   bs->print_it = print_it_normal;
5014   return bs;
5015 }
5016 \f
5017 /* The target has stopped with waitstatus WS.  Check if any hardware
5018    watchpoints have triggered, according to the target.  */
5019
5020 int
5021 watchpoints_triggered (struct target_waitstatus *ws)
5022 {
5023   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
5024   CORE_ADDR addr;
5025   struct breakpoint *b;
5026
5027   if (!stopped_by_watchpoint)
5028     {
5029       /* We were not stopped by a watchpoint.  Mark all watchpoints
5030          as not triggered.  */
5031       ALL_BREAKPOINTS (b)
5032         if (is_hardware_watchpoint (b))
5033           {
5034             struct watchpoint *w = (struct watchpoint *) b;
5035
5036             w->watchpoint_triggered = watch_triggered_no;
5037           }
5038
5039       return 0;
5040     }
5041
5042   if (!target_stopped_data_address (&current_target, &addr))
5043     {
5044       /* We were stopped by a watchpoint, but we don't know where.
5045          Mark all watchpoints as unknown.  */
5046       ALL_BREAKPOINTS (b)
5047         if (is_hardware_watchpoint (b))
5048           {
5049             struct watchpoint *w = (struct watchpoint *) b;
5050
5051             w->watchpoint_triggered = watch_triggered_unknown;
5052           }
5053
5054       return 1;
5055     }
5056
5057   /* The target could report the data address.  Mark watchpoints
5058      affected by this data address as triggered, and all others as not
5059      triggered.  */
5060
5061   ALL_BREAKPOINTS (b)
5062     if (is_hardware_watchpoint (b))
5063       {
5064         struct watchpoint *w = (struct watchpoint *) b;
5065         struct bp_location *loc;
5066
5067         w->watchpoint_triggered = watch_triggered_no;
5068         for (loc = b->loc; loc; loc = loc->next)
5069           {
5070             if (is_masked_watchpoint (b))
5071               {
5072                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5073                 CORE_ADDR start = loc->address & w->hw_wp_mask;
5074
5075                 if (newaddr == start)
5076                   {
5077                     w->watchpoint_triggered = watch_triggered_yes;
5078                     break;
5079                   }
5080               }
5081             /* Exact match not required.  Within range is sufficient.  */
5082             else if (target_watchpoint_addr_within_range (&current_target,
5083                                                          addr, loc->address,
5084                                                          loc->length))
5085               {
5086                 w->watchpoint_triggered = watch_triggered_yes;
5087                 break;
5088               }
5089           }
5090       }
5091
5092   return 1;
5093 }
5094
5095 /* Possible return values for watchpoint_check (this can't be an enum
5096    because of check_errors).  */
5097 /* The watchpoint has been deleted.  */
5098 #define WP_DELETED 1
5099 /* The value has changed.  */
5100 #define WP_VALUE_CHANGED 2
5101 /* The value has not changed.  */
5102 #define WP_VALUE_NOT_CHANGED 3
5103 /* Ignore this watchpoint, no matter if the value changed or not.  */
5104 #define WP_IGNORE 4
5105
5106 #define BP_TEMPFLAG 1
5107 #define BP_HARDWAREFLAG 2
5108
5109 /* Evaluate watchpoint condition expression and check if its value
5110    changed.
5111
5112    P should be a pointer to struct bpstat, but is defined as a void *
5113    in order for this function to be usable with catch_errors.  */
5114
5115 static int
5116 watchpoint_check (void *p)
5117 {
5118   bpstat bs = (bpstat) p;
5119   struct watchpoint *b;
5120   struct frame_info *fr;
5121   int within_current_scope;
5122
5123   /* BS is built from an existing struct breakpoint.  */
5124   gdb_assert (bs->breakpoint_at != NULL);
5125   b = (struct watchpoint *) bs->breakpoint_at;
5126
5127   /* If this is a local watchpoint, we only want to check if the
5128      watchpoint frame is in scope if the current thread is the thread
5129      that was used to create the watchpoint.  */
5130   if (!watchpoint_in_thread_scope (b))
5131     return WP_IGNORE;
5132
5133   if (b->exp_valid_block == NULL)
5134     within_current_scope = 1;
5135   else
5136     {
5137       struct frame_info *frame = get_current_frame ();
5138       struct gdbarch *frame_arch = get_frame_arch (frame);
5139       CORE_ADDR frame_pc = get_frame_pc (frame);
5140
5141       /* stack_frame_destroyed_p() returns a non-zero value if we're
5142          still in the function but the stack frame has already been
5143          invalidated.  Since we can't rely on the values of local
5144          variables after the stack has been destroyed, we are treating
5145          the watchpoint in that state as `not changed' without further
5146          checking.  Don't mark watchpoints as changed if the current
5147          frame is in an epilogue - even if they are in some other
5148          frame, our view of the stack is likely to be wrong and
5149          frame_find_by_id could error out.  */
5150       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5151         return WP_IGNORE;
5152
5153       fr = frame_find_by_id (b->watchpoint_frame);
5154       within_current_scope = (fr != NULL);
5155
5156       /* If we've gotten confused in the unwinder, we might have
5157          returned a frame that can't describe this variable.  */
5158       if (within_current_scope)
5159         {
5160           struct symbol *function;
5161
5162           function = get_frame_function (fr);
5163           if (function == NULL
5164               || !contained_in (b->exp_valid_block,
5165                                 SYMBOL_BLOCK_VALUE (function)))
5166             within_current_scope = 0;
5167         }
5168
5169       if (within_current_scope)
5170         /* If we end up stopping, the current frame will get selected
5171            in normal_stop.  So this call to select_frame won't affect
5172            the user.  */
5173         select_frame (fr);
5174     }
5175
5176   if (within_current_scope)
5177     {
5178       /* We use value_{,free_to_}mark because it could be a *long*
5179          time before we return to the command level and call
5180          free_all_values.  We can't call free_all_values because we
5181          might be in the middle of evaluating a function call.  */
5182
5183       int pc = 0;
5184       struct value *mark;
5185       struct value *new_val;
5186
5187       if (is_masked_watchpoint (b))
5188         /* Since we don't know the exact trigger address (from
5189            stopped_data_address), just tell the user we've triggered
5190            a mask watchpoint.  */
5191         return WP_VALUE_CHANGED;
5192
5193       mark = value_mark ();
5194       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
5195
5196       if (b->val_bitsize != 0)
5197         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5198
5199       /* We use value_equal_contents instead of value_equal because
5200          the latter coerces an array to a pointer, thus comparing just
5201          the address of the array instead of its contents.  This is
5202          not what we want.  */
5203       if ((b->val != NULL) != (new_val != NULL)
5204           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5205         {
5206           if (new_val != NULL)
5207             {
5208               release_value (new_val);
5209               value_free_to_mark (mark);
5210             }
5211           bs->old_val = b->val;
5212           b->val = new_val;
5213           b->val_valid = 1;
5214           return WP_VALUE_CHANGED;
5215         }
5216       else
5217         {
5218           /* Nothing changed.  */
5219           value_free_to_mark (mark);
5220           return WP_VALUE_NOT_CHANGED;
5221         }
5222     }
5223   else
5224     {
5225       /* This seems like the only logical thing to do because
5226          if we temporarily ignored the watchpoint, then when
5227          we reenter the block in which it is valid it contains
5228          garbage (in the case of a function, it may have two
5229          garbage values, one before and one after the prologue).
5230          So we can't even detect the first assignment to it and
5231          watch after that (since the garbage may or may not equal
5232          the first value assigned).  */
5233       /* We print all the stop information in
5234          breakpoint_ops->print_it, but in this case, by the time we
5235          call breakpoint_ops->print_it this bp will be deleted
5236          already.  So we have no choice but print the information
5237          here.  */
5238
5239       SWITCH_THRU_ALL_UIS ()
5240         {
5241           struct ui_out *uiout = current_uiout;
5242
5243           if (uiout->is_mi_like_p ())
5244             uiout->field_string
5245               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5246           uiout->text ("\nWatchpoint ");
5247           uiout->field_int ("wpnum", b->number);
5248           uiout->text (" deleted because the program has left the block in\n"
5249                        "which its expression is valid.\n");
5250         }
5251
5252       /* Make sure the watchpoint's commands aren't executed.  */
5253       decref_counted_command_line (&b->commands);
5254       watchpoint_del_at_next_stop (b);
5255
5256       return WP_DELETED;
5257     }
5258 }
5259
5260 /* Return true if it looks like target has stopped due to hitting
5261    breakpoint location BL.  This function does not check if we should
5262    stop, only if BL explains the stop.  */
5263
5264 static int
5265 bpstat_check_location (const struct bp_location *bl,
5266                        struct address_space *aspace, CORE_ADDR bp_addr,
5267                        const struct target_waitstatus *ws)
5268 {
5269   struct breakpoint *b = bl->owner;
5270
5271   /* BL is from an existing breakpoint.  */
5272   gdb_assert (b != NULL);
5273
5274   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5275 }
5276
5277 /* Determine if the watched values have actually changed, and we
5278    should stop.  If not, set BS->stop to 0.  */
5279
5280 static void
5281 bpstat_check_watchpoint (bpstat bs)
5282 {
5283   const struct bp_location *bl;
5284   struct watchpoint *b;
5285
5286   /* BS is built for existing struct breakpoint.  */
5287   bl = bs->bp_location_at;
5288   gdb_assert (bl != NULL);
5289   b = (struct watchpoint *) bs->breakpoint_at;
5290   gdb_assert (b != NULL);
5291
5292     {
5293       int must_check_value = 0;
5294       
5295       if (b->type == bp_watchpoint)
5296         /* For a software watchpoint, we must always check the
5297            watched value.  */
5298         must_check_value = 1;
5299       else if (b->watchpoint_triggered == watch_triggered_yes)
5300         /* We have a hardware watchpoint (read, write, or access)
5301            and the target earlier reported an address watched by
5302            this watchpoint.  */
5303         must_check_value = 1;
5304       else if (b->watchpoint_triggered == watch_triggered_unknown
5305                && b->type == bp_hardware_watchpoint)
5306         /* We were stopped by a hardware watchpoint, but the target could
5307            not report the data address.  We must check the watchpoint's
5308            value.  Access and read watchpoints are out of luck; without
5309            a data address, we can't figure it out.  */
5310         must_check_value = 1;
5311
5312       if (must_check_value)
5313         {
5314           char *message
5315             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5316                           b->number);
5317           struct cleanup *cleanups = make_cleanup (xfree, message);
5318           int e = catch_errors (watchpoint_check, bs, message,
5319                                 RETURN_MASK_ALL);
5320           do_cleanups (cleanups);
5321           switch (e)
5322             {
5323             case WP_DELETED:
5324               /* We've already printed what needs to be printed.  */
5325               bs->print_it = print_it_done;
5326               /* Stop.  */
5327               break;
5328             case WP_IGNORE:
5329               bs->print_it = print_it_noop;
5330               bs->stop = 0;
5331               break;
5332             case WP_VALUE_CHANGED:
5333               if (b->type == bp_read_watchpoint)
5334                 {
5335                   /* There are two cases to consider here:
5336
5337                      1. We're watching the triggered memory for reads.
5338                      In that case, trust the target, and always report
5339                      the watchpoint hit to the user.  Even though
5340                      reads don't cause value changes, the value may
5341                      have changed since the last time it was read, and
5342                      since we're not trapping writes, we will not see
5343                      those, and as such we should ignore our notion of
5344                      old value.
5345
5346                      2. We're watching the triggered memory for both
5347                      reads and writes.  There are two ways this may
5348                      happen:
5349
5350                      2.1. This is a target that can't break on data
5351                      reads only, but can break on accesses (reads or
5352                      writes), such as e.g., x86.  We detect this case
5353                      at the time we try to insert read watchpoints.
5354
5355                      2.2. Otherwise, the target supports read
5356                      watchpoints, but, the user set an access or write
5357                      watchpoint watching the same memory as this read
5358                      watchpoint.
5359
5360                      If we're watching memory writes as well as reads,
5361                      ignore watchpoint hits when we find that the
5362                      value hasn't changed, as reads don't cause
5363                      changes.  This still gives false positives when
5364                      the program writes the same value to memory as
5365                      what there was already in memory (we will confuse
5366                      it for a read), but it's much better than
5367                      nothing.  */
5368
5369                   int other_write_watchpoint = 0;
5370
5371                   if (bl->watchpoint_type == hw_read)
5372                     {
5373                       struct breakpoint *other_b;
5374
5375                       ALL_BREAKPOINTS (other_b)
5376                         if (other_b->type == bp_hardware_watchpoint
5377                             || other_b->type == bp_access_watchpoint)
5378                           {
5379                             struct watchpoint *other_w =
5380                               (struct watchpoint *) other_b;
5381
5382                             if (other_w->watchpoint_triggered
5383                                 == watch_triggered_yes)
5384                               {
5385                                 other_write_watchpoint = 1;
5386                                 break;
5387                               }
5388                           }
5389                     }
5390
5391                   if (other_write_watchpoint
5392                       || bl->watchpoint_type == hw_access)
5393                     {
5394                       /* We're watching the same memory for writes,
5395                          and the value changed since the last time we
5396                          updated it, so this trap must be for a write.
5397                          Ignore it.  */
5398                       bs->print_it = print_it_noop;
5399                       bs->stop = 0;
5400                     }
5401                 }
5402               break;
5403             case WP_VALUE_NOT_CHANGED:
5404               if (b->type == bp_hardware_watchpoint
5405                   || b->type == bp_watchpoint)
5406                 {
5407                   /* Don't stop: write watchpoints shouldn't fire if
5408                      the value hasn't changed.  */
5409                   bs->print_it = print_it_noop;
5410                   bs->stop = 0;
5411                 }
5412               /* Stop.  */
5413               break;
5414             default:
5415               /* Can't happen.  */
5416             case 0:
5417               /* Error from catch_errors.  */
5418               {
5419                 SWITCH_THRU_ALL_UIS ()
5420                   {
5421                     printf_filtered (_("Watchpoint %d deleted.\n"),
5422                                      b->number);
5423                   }
5424                 watchpoint_del_at_next_stop (b);
5425                 /* We've already printed what needs to be printed.  */
5426                 bs->print_it = print_it_done;
5427               }
5428               break;
5429             }
5430         }
5431       else      /* must_check_value == 0 */
5432         {
5433           /* This is a case where some watchpoint(s) triggered, but
5434              not at the address of this watchpoint, or else no
5435              watchpoint triggered after all.  So don't print
5436              anything for this watchpoint.  */
5437           bs->print_it = print_it_noop;
5438           bs->stop = 0;
5439         }
5440     }
5441 }
5442
5443 /* For breakpoints that are currently marked as telling gdb to stop,
5444    check conditions (condition proper, frame, thread and ignore count)
5445    of breakpoint referred to by BS.  If we should not stop for this
5446    breakpoint, set BS->stop to 0.  */
5447
5448 static void
5449 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5450 {
5451   const struct bp_location *bl;
5452   struct breakpoint *b;
5453   int value_is_zero = 0;
5454   struct expression *cond;
5455
5456   gdb_assert (bs->stop);
5457
5458   /* BS is built for existing struct breakpoint.  */
5459   bl = bs->bp_location_at;
5460   gdb_assert (bl != NULL);
5461   b = bs->breakpoint_at;
5462   gdb_assert (b != NULL);
5463
5464   /* Even if the target evaluated the condition on its end and notified GDB, we
5465      need to do so again since GDB does not know if we stopped due to a
5466      breakpoint or a single step breakpoint.  */
5467
5468   if (frame_id_p (b->frame_id)
5469       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5470     {
5471       bs->stop = 0;
5472       return;
5473     }
5474
5475   /* If this is a thread/task-specific breakpoint, don't waste cpu
5476      evaluating the condition if this isn't the specified
5477      thread/task.  */
5478   if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5479       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5480
5481     {
5482       bs->stop = 0;
5483       return;
5484     }
5485
5486   /* Evaluate extension language breakpoints that have a "stop" method
5487      implemented.  */
5488   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5489
5490   if (is_watchpoint (b))
5491     {
5492       struct watchpoint *w = (struct watchpoint *) b;
5493
5494       cond = w->cond_exp.get ();
5495     }
5496   else
5497     cond = bl->cond.get ();
5498
5499   if (cond && b->disposition != disp_del_at_next_stop)
5500     {
5501       int within_current_scope = 1;
5502       struct watchpoint * w;
5503
5504       /* We use value_mark and value_free_to_mark because it could
5505          be a long time before we return to the command level and
5506          call free_all_values.  We can't call free_all_values
5507          because we might be in the middle of evaluating a
5508          function call.  */
5509       struct value *mark = value_mark ();
5510
5511       if (is_watchpoint (b))
5512         w = (struct watchpoint *) b;
5513       else
5514         w = NULL;
5515
5516       /* Need to select the frame, with all that implies so that
5517          the conditions will have the right context.  Because we
5518          use the frame, we will not see an inlined function's
5519          variables when we arrive at a breakpoint at the start
5520          of the inlined function; the current frame will be the
5521          call site.  */
5522       if (w == NULL || w->cond_exp_valid_block == NULL)
5523         select_frame (get_current_frame ());
5524       else
5525         {
5526           struct frame_info *frame;
5527
5528           /* For local watchpoint expressions, which particular
5529              instance of a local is being watched matters, so we
5530              keep track of the frame to evaluate the expression
5531              in.  To evaluate the condition however, it doesn't
5532              really matter which instantiation of the function
5533              where the condition makes sense triggers the
5534              watchpoint.  This allows an expression like "watch
5535              global if q > 10" set in `func', catch writes to
5536              global on all threads that call `func', or catch
5537              writes on all recursive calls of `func' by a single
5538              thread.  We simply always evaluate the condition in
5539              the innermost frame that's executing where it makes
5540              sense to evaluate the condition.  It seems
5541              intuitive.  */
5542           frame = block_innermost_frame (w->cond_exp_valid_block);
5543           if (frame != NULL)
5544             select_frame (frame);
5545           else
5546             within_current_scope = 0;
5547         }
5548       if (within_current_scope)
5549         value_is_zero
5550           = catch_errors (breakpoint_cond_eval, cond,
5551                           "Error in testing breakpoint condition:\n",
5552                           RETURN_MASK_ALL);
5553       else
5554         {
5555           warning (_("Watchpoint condition cannot be tested "
5556                      "in the current scope"));
5557           /* If we failed to set the right context for this
5558              watchpoint, unconditionally report it.  */
5559           value_is_zero = 0;
5560         }
5561       /* FIXME-someday, should give breakpoint #.  */
5562       value_free_to_mark (mark);
5563     }
5564
5565   if (cond && value_is_zero)
5566     {
5567       bs->stop = 0;
5568     }
5569   else if (b->ignore_count > 0)
5570     {
5571       b->ignore_count--;
5572       bs->stop = 0;
5573       /* Increase the hit count even though we don't stop.  */
5574       ++(b->hit_count);
5575       observer_notify_breakpoint_modified (b);
5576     }   
5577 }
5578
5579 /* Returns true if we need to track moribund locations of LOC's type
5580    on the current target.  */
5581
5582 static int
5583 need_moribund_for_location_type (struct bp_location *loc)
5584 {
5585   return ((loc->loc_type == bp_loc_software_breakpoint
5586            && !target_supports_stopped_by_sw_breakpoint ())
5587           || (loc->loc_type == bp_loc_hardware_breakpoint
5588               && !target_supports_stopped_by_hw_breakpoint ()));
5589 }
5590
5591
5592 /* Get a bpstat associated with having just stopped at address
5593    BP_ADDR in thread PTID.
5594
5595    Determine whether we stopped at a breakpoint, etc, or whether we
5596    don't understand this stop.  Result is a chain of bpstat's such
5597    that:
5598
5599    if we don't understand the stop, the result is a null pointer.
5600
5601    if we understand why we stopped, the result is not null.
5602
5603    Each element of the chain refers to a particular breakpoint or
5604    watchpoint at which we have stopped.  (We may have stopped for
5605    several reasons concurrently.)
5606
5607    Each element of the chain has valid next, breakpoint_at,
5608    commands, FIXME??? fields.  */
5609
5610 bpstat
5611 bpstat_stop_status (struct address_space *aspace,
5612                     CORE_ADDR bp_addr, ptid_t ptid,
5613                     const struct target_waitstatus *ws)
5614 {
5615   struct breakpoint *b = NULL;
5616   struct bp_location *bl;
5617   struct bp_location *loc;
5618   /* First item of allocated bpstat's.  */
5619   bpstat bs_head = NULL, *bs_link = &bs_head;
5620   /* Pointer to the last thing in the chain currently.  */
5621   bpstat bs;
5622   int ix;
5623   int need_remove_insert;
5624   int removed_any;
5625
5626   /* First, build the bpstat chain with locations that explain a
5627      target stop, while being careful to not set the target running,
5628      as that may invalidate locations (in particular watchpoint
5629      locations are recreated).  Resuming will happen here with
5630      breakpoint conditions or watchpoint expressions that include
5631      inferior function calls.  */
5632
5633   ALL_BREAKPOINTS (b)
5634     {
5635       if (!breakpoint_enabled (b))
5636         continue;
5637
5638       for (bl = b->loc; bl != NULL; bl = bl->next)
5639         {
5640           /* For hardware watchpoints, we look only at the first
5641              location.  The watchpoint_check function will work on the
5642              entire expression, not the individual locations.  For
5643              read watchpoints, the watchpoints_triggered function has
5644              checked all locations already.  */
5645           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5646             break;
5647
5648           if (!bl->enabled || bl->shlib_disabled)
5649             continue;
5650
5651           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5652             continue;
5653
5654           /* Come here if it's a watchpoint, or if the break address
5655              matches.  */
5656
5657           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5658                                                    explain stop.  */
5659
5660           /* Assume we stop.  Should we find a watchpoint that is not
5661              actually triggered, or if the condition of the breakpoint
5662              evaluates as false, we'll reset 'stop' to 0.  */
5663           bs->stop = 1;
5664           bs->print = 1;
5665
5666           /* If this is a scope breakpoint, mark the associated
5667              watchpoint as triggered so that we will handle the
5668              out-of-scope event.  We'll get to the watchpoint next
5669              iteration.  */
5670           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5671             {
5672               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5673
5674               w->watchpoint_triggered = watch_triggered_yes;
5675             }
5676         }
5677     }
5678
5679   /* Check if a moribund breakpoint explains the stop.  */
5680   if (!target_supports_stopped_by_sw_breakpoint ()
5681       || !target_supports_stopped_by_hw_breakpoint ())
5682     {
5683       for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5684         {
5685           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5686               && need_moribund_for_location_type (loc))
5687             {
5688               bs = bpstat_alloc (loc, &bs_link);
5689               /* For hits of moribund locations, we should just proceed.  */
5690               bs->stop = 0;
5691               bs->print = 0;
5692               bs->print_it = print_it_noop;
5693             }
5694         }
5695     }
5696
5697   /* A bit of special processing for shlib breakpoints.  We need to
5698      process solib loading here, so that the lists of loaded and
5699      unloaded libraries are correct before we handle "catch load" and
5700      "catch unload".  */
5701   for (bs = bs_head; bs != NULL; bs = bs->next)
5702     {
5703       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5704         {
5705           handle_solib_event ();
5706           break;
5707         }
5708     }
5709
5710   /* Now go through the locations that caused the target to stop, and
5711      check whether we're interested in reporting this stop to higher
5712      layers, or whether we should resume the target transparently.  */
5713
5714   removed_any = 0;
5715
5716   for (bs = bs_head; bs != NULL; bs = bs->next)
5717     {
5718       if (!bs->stop)
5719         continue;
5720
5721       b = bs->breakpoint_at;
5722       b->ops->check_status (bs);
5723       if (bs->stop)
5724         {
5725           bpstat_check_breakpoint_conditions (bs, ptid);
5726
5727           if (bs->stop)
5728             {
5729               ++(b->hit_count);
5730               observer_notify_breakpoint_modified (b);
5731
5732               /* We will stop here.  */
5733               if (b->disposition == disp_disable)
5734                 {
5735                   --(b->enable_count);
5736                   if (b->enable_count <= 0)
5737                     b->enable_state = bp_disabled;
5738                   removed_any = 1;
5739                 }
5740               if (b->silent)
5741                 bs->print = 0;
5742               bs->commands = b->commands;
5743               incref_counted_command_line (bs->commands);
5744               if (command_line_is_silent (bs->commands
5745                                           ? bs->commands->commands : NULL))
5746                 bs->print = 0;
5747
5748               b->ops->after_condition_true (bs);
5749             }
5750
5751         }
5752
5753       /* Print nothing for this entry if we don't stop or don't
5754          print.  */
5755       if (!bs->stop || !bs->print)
5756         bs->print_it = print_it_noop;
5757     }
5758
5759   /* If we aren't stopping, the value of some hardware watchpoint may
5760      not have changed, but the intermediate memory locations we are
5761      watching may have.  Don't bother if we're stopping; this will get
5762      done later.  */
5763   need_remove_insert = 0;
5764   if (! bpstat_causes_stop (bs_head))
5765     for (bs = bs_head; bs != NULL; bs = bs->next)
5766       if (!bs->stop
5767           && bs->breakpoint_at
5768           && is_hardware_watchpoint (bs->breakpoint_at))
5769         {
5770           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5771
5772           update_watchpoint (w, 0 /* don't reparse.  */);
5773           need_remove_insert = 1;
5774         }
5775
5776   if (need_remove_insert)
5777     update_global_location_list (UGLL_MAY_INSERT);
5778   else if (removed_any)
5779     update_global_location_list (UGLL_DONT_INSERT);
5780
5781   return bs_head;
5782 }
5783
5784 static void
5785 handle_jit_event (void)
5786 {
5787   struct frame_info *frame;
5788   struct gdbarch *gdbarch;
5789
5790   if (debug_infrun)
5791     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5792
5793   /* Switch terminal for any messages produced by
5794      breakpoint_re_set.  */
5795   target_terminal_ours_for_output ();
5796
5797   frame = get_current_frame ();
5798   gdbarch = get_frame_arch (frame);
5799
5800   jit_event_handler (gdbarch);
5801
5802   target_terminal_inferior ();
5803 }
5804
5805 /* Prepare WHAT final decision for infrun.  */
5806
5807 /* Decide what infrun needs to do with this bpstat.  */
5808
5809 struct bpstat_what
5810 bpstat_what (bpstat bs_head)
5811 {
5812   struct bpstat_what retval;
5813   bpstat bs;
5814
5815   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5816   retval.call_dummy = STOP_NONE;
5817   retval.is_longjmp = 0;
5818
5819   for (bs = bs_head; bs != NULL; bs = bs->next)
5820     {
5821       /* Extract this BS's action.  After processing each BS, we check
5822          if its action overrides all we've seem so far.  */
5823       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5824       enum bptype bptype;
5825
5826       if (bs->breakpoint_at == NULL)
5827         {
5828           /* I suspect this can happen if it was a momentary
5829              breakpoint which has since been deleted.  */
5830           bptype = bp_none;
5831         }
5832       else
5833         bptype = bs->breakpoint_at->type;
5834
5835       switch (bptype)
5836         {
5837         case bp_none:
5838           break;
5839         case bp_breakpoint:
5840         case bp_hardware_breakpoint:
5841         case bp_single_step:
5842         case bp_until:
5843         case bp_finish:
5844         case bp_shlib_event:
5845           if (bs->stop)
5846             {
5847               if (bs->print)
5848                 this_action = BPSTAT_WHAT_STOP_NOISY;
5849               else
5850                 this_action = BPSTAT_WHAT_STOP_SILENT;
5851             }
5852           else
5853             this_action = BPSTAT_WHAT_SINGLE;
5854           break;
5855         case bp_watchpoint:
5856         case bp_hardware_watchpoint:
5857         case bp_read_watchpoint:
5858         case bp_access_watchpoint:
5859           if (bs->stop)
5860             {
5861               if (bs->print)
5862                 this_action = BPSTAT_WHAT_STOP_NOISY;
5863               else
5864                 this_action = BPSTAT_WHAT_STOP_SILENT;
5865             }
5866           else
5867             {
5868               /* There was a watchpoint, but we're not stopping.
5869                  This requires no further action.  */
5870             }
5871           break;
5872         case bp_longjmp:
5873         case bp_longjmp_call_dummy:
5874         case bp_exception:
5875           if (bs->stop)
5876             {
5877               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5878               retval.is_longjmp = bptype != bp_exception;
5879             }
5880           else
5881             this_action = BPSTAT_WHAT_SINGLE;
5882           break;
5883         case bp_longjmp_resume:
5884         case bp_exception_resume:
5885           if (bs->stop)
5886             {
5887               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5888               retval.is_longjmp = bptype == bp_longjmp_resume;
5889             }
5890           else
5891             this_action = BPSTAT_WHAT_SINGLE;
5892           break;
5893         case bp_step_resume:
5894           if (bs->stop)
5895             this_action = BPSTAT_WHAT_STEP_RESUME;
5896           else
5897             {
5898               /* It is for the wrong frame.  */
5899               this_action = BPSTAT_WHAT_SINGLE;
5900             }
5901           break;
5902         case bp_hp_step_resume:
5903           if (bs->stop)
5904             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5905           else
5906             {
5907               /* It is for the wrong frame.  */
5908               this_action = BPSTAT_WHAT_SINGLE;
5909             }
5910           break;
5911         case bp_watchpoint_scope:
5912         case bp_thread_event:
5913         case bp_overlay_event:
5914         case bp_longjmp_master:
5915         case bp_std_terminate_master:
5916         case bp_exception_master:
5917           this_action = BPSTAT_WHAT_SINGLE;
5918           break;
5919         case bp_catchpoint:
5920           if (bs->stop)
5921             {
5922               if (bs->print)
5923                 this_action = BPSTAT_WHAT_STOP_NOISY;
5924               else
5925                 this_action = BPSTAT_WHAT_STOP_SILENT;
5926             }
5927           else
5928             {
5929               /* There was a catchpoint, but we're not stopping.
5930                  This requires no further action.  */
5931             }
5932           break;
5933         case bp_jit_event:
5934           this_action = BPSTAT_WHAT_SINGLE;
5935           break;
5936         case bp_call_dummy:
5937           /* Make sure the action is stop (silent or noisy),
5938              so infrun.c pops the dummy frame.  */
5939           retval.call_dummy = STOP_STACK_DUMMY;
5940           this_action = BPSTAT_WHAT_STOP_SILENT;
5941           break;
5942         case bp_std_terminate:
5943           /* Make sure the action is stop (silent or noisy),
5944              so infrun.c pops the dummy frame.  */
5945           retval.call_dummy = STOP_STD_TERMINATE;
5946           this_action = BPSTAT_WHAT_STOP_SILENT;
5947           break;
5948         case bp_tracepoint:
5949         case bp_fast_tracepoint:
5950         case bp_static_tracepoint:
5951           /* Tracepoint hits should not be reported back to GDB, and
5952              if one got through somehow, it should have been filtered
5953              out already.  */
5954           internal_error (__FILE__, __LINE__,
5955                           _("bpstat_what: tracepoint encountered"));
5956           break;
5957         case bp_gnu_ifunc_resolver:
5958           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5959           this_action = BPSTAT_WHAT_SINGLE;
5960           break;
5961         case bp_gnu_ifunc_resolver_return:
5962           /* The breakpoint will be removed, execution will restart from the
5963              PC of the former breakpoint.  */
5964           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5965           break;
5966
5967         case bp_dprintf:
5968           if (bs->stop)
5969             this_action = BPSTAT_WHAT_STOP_SILENT;
5970           else
5971             this_action = BPSTAT_WHAT_SINGLE;
5972           break;
5973
5974         default:
5975           internal_error (__FILE__, __LINE__,
5976                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5977         }
5978
5979       retval.main_action = std::max (retval.main_action, this_action);
5980     }
5981
5982   return retval;
5983 }
5984
5985 void
5986 bpstat_run_callbacks (bpstat bs_head)
5987 {
5988   bpstat bs;
5989
5990   for (bs = bs_head; bs != NULL; bs = bs->next)
5991     {
5992       struct breakpoint *b = bs->breakpoint_at;
5993
5994       if (b == NULL)
5995         continue;
5996       switch (b->type)
5997         {
5998         case bp_jit_event:
5999           handle_jit_event ();
6000           break;
6001         case bp_gnu_ifunc_resolver:
6002           gnu_ifunc_resolver_stop (b);
6003           break;
6004         case bp_gnu_ifunc_resolver_return:
6005           gnu_ifunc_resolver_return_stop (b);
6006           break;
6007         }
6008     }
6009 }
6010
6011 /* Nonzero if we should step constantly (e.g. watchpoints on machines
6012    without hardware support).  This isn't related to a specific bpstat,
6013    just to things like whether watchpoints are set.  */
6014
6015 int
6016 bpstat_should_step (void)
6017 {
6018   struct breakpoint *b;
6019
6020   ALL_BREAKPOINTS (b)
6021     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
6022       return 1;
6023   return 0;
6024 }
6025
6026 int
6027 bpstat_causes_stop (bpstat bs)
6028 {
6029   for (; bs != NULL; bs = bs->next)
6030     if (bs->stop)
6031       return 1;
6032
6033   return 0;
6034 }
6035
6036 \f
6037
6038 /* Compute a string of spaces suitable to indent the next line
6039    so it starts at the position corresponding to the table column
6040    named COL_NAME in the currently active table of UIOUT.  */
6041
6042 static char *
6043 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6044 {
6045   static char wrap_indent[80];
6046   int i, total_width, width, align;
6047   const char *text;
6048
6049   total_width = 0;
6050   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
6051     {
6052       if (strcmp (text, col_name) == 0)
6053         {
6054           gdb_assert (total_width < sizeof wrap_indent);
6055           memset (wrap_indent, ' ', total_width);
6056           wrap_indent[total_width] = 0;
6057
6058           return wrap_indent;
6059         }
6060
6061       total_width += width + 1;
6062     }
6063
6064   return NULL;
6065 }
6066
6067 /* Determine if the locations of this breakpoint will have their conditions
6068    evaluated by the target, host or a mix of both.  Returns the following:
6069
6070     "host": Host evals condition.
6071     "host or target": Host or Target evals condition.
6072     "target": Target evals condition.
6073 */
6074
6075 static const char *
6076 bp_condition_evaluator (struct breakpoint *b)
6077 {
6078   struct bp_location *bl;
6079   char host_evals = 0;
6080   char target_evals = 0;
6081
6082   if (!b)
6083     return NULL;
6084
6085   if (!is_breakpoint (b))
6086     return NULL;
6087
6088   if (gdb_evaluates_breakpoint_condition_p ()
6089       || !target_supports_evaluation_of_breakpoint_conditions ())
6090     return condition_evaluation_host;
6091
6092   for (bl = b->loc; bl; bl = bl->next)
6093     {
6094       if (bl->cond_bytecode)
6095         target_evals++;
6096       else
6097         host_evals++;
6098     }
6099
6100   if (host_evals && target_evals)
6101     return condition_evaluation_both;
6102   else if (target_evals)
6103     return condition_evaluation_target;
6104   else
6105     return condition_evaluation_host;
6106 }
6107
6108 /* Determine the breakpoint location's condition evaluator.  This is
6109    similar to bp_condition_evaluator, but for locations.  */
6110
6111 static const char *
6112 bp_location_condition_evaluator (struct bp_location *bl)
6113 {
6114   if (bl && !is_breakpoint (bl->owner))
6115     return NULL;
6116
6117   if (gdb_evaluates_breakpoint_condition_p ()
6118       || !target_supports_evaluation_of_breakpoint_conditions ())
6119     return condition_evaluation_host;
6120
6121   if (bl && bl->cond_bytecode)
6122     return condition_evaluation_target;
6123   else
6124     return condition_evaluation_host;
6125 }
6126
6127 /* Print the LOC location out of the list of B->LOC locations.  */
6128
6129 static void
6130 print_breakpoint_location (struct breakpoint *b,
6131                            struct bp_location *loc)
6132 {
6133   struct ui_out *uiout = current_uiout;
6134
6135   scoped_restore_current_program_space restore_pspace;
6136
6137   if (loc != NULL && loc->shlib_disabled)
6138     loc = NULL;
6139
6140   if (loc != NULL)
6141     set_current_program_space (loc->pspace);
6142
6143   if (b->display_canonical)
6144     uiout->field_string ("what", event_location_to_string (b->location.get ()));
6145   else if (loc && loc->symtab)
6146     {
6147       struct symbol *sym 
6148         = find_pc_sect_function (loc->address, loc->section);
6149       if (sym)
6150         {
6151           uiout->text ("in ");
6152           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
6153           uiout->text (" ");
6154           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6155           uiout->text ("at ");
6156         }
6157       uiout->field_string ("file",
6158                            symtab_to_filename_for_display (loc->symtab));
6159       uiout->text (":");
6160
6161       if (uiout->is_mi_like_p ())
6162         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
6163       
6164       uiout->field_int ("line", loc->line_number);
6165     }
6166   else if (loc)
6167     {
6168       string_file stb;
6169
6170       print_address_symbolic (loc->gdbarch, loc->address, &stb,
6171                               demangle, "");
6172       uiout->field_stream ("at", stb);
6173     }
6174   else
6175     {
6176       uiout->field_string ("pending",
6177                            event_location_to_string (b->location.get ()));
6178       /* If extra_string is available, it could be holding a condition
6179          or dprintf arguments.  In either case, make sure it is printed,
6180          too, but only for non-MI streams.  */
6181       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
6182         {
6183           if (b->type == bp_dprintf)
6184             uiout->text (",");
6185           else
6186             uiout->text (" ");
6187           uiout->text (b->extra_string);
6188         }
6189     }
6190
6191   if (loc && is_breakpoint (b)
6192       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6193       && bp_condition_evaluator (b) == condition_evaluation_both)
6194     {
6195       uiout->text (" (");
6196       uiout->field_string ("evaluated-by",
6197                            bp_location_condition_evaluator (loc));
6198       uiout->text (")");
6199     }
6200 }
6201
6202 static const char *
6203 bptype_string (enum bptype type)
6204 {
6205   struct ep_type_description
6206     {
6207       enum bptype type;
6208       const char *description;
6209     };
6210   static struct ep_type_description bptypes[] =
6211   {
6212     {bp_none, "?deleted?"},
6213     {bp_breakpoint, "breakpoint"},
6214     {bp_hardware_breakpoint, "hw breakpoint"},
6215     {bp_single_step, "sw single-step"},
6216     {bp_until, "until"},
6217     {bp_finish, "finish"},
6218     {bp_watchpoint, "watchpoint"},
6219     {bp_hardware_watchpoint, "hw watchpoint"},
6220     {bp_read_watchpoint, "read watchpoint"},
6221     {bp_access_watchpoint, "acc watchpoint"},
6222     {bp_longjmp, "longjmp"},
6223     {bp_longjmp_resume, "longjmp resume"},
6224     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6225     {bp_exception, "exception"},
6226     {bp_exception_resume, "exception resume"},
6227     {bp_step_resume, "step resume"},
6228     {bp_hp_step_resume, "high-priority step resume"},
6229     {bp_watchpoint_scope, "watchpoint scope"},
6230     {bp_call_dummy, "call dummy"},
6231     {bp_std_terminate, "std::terminate"},
6232     {bp_shlib_event, "shlib events"},
6233     {bp_thread_event, "thread events"},
6234     {bp_overlay_event, "overlay events"},
6235     {bp_longjmp_master, "longjmp master"},
6236     {bp_std_terminate_master, "std::terminate master"},
6237     {bp_exception_master, "exception master"},
6238     {bp_catchpoint, "catchpoint"},
6239     {bp_tracepoint, "tracepoint"},
6240     {bp_fast_tracepoint, "fast tracepoint"},
6241     {bp_static_tracepoint, "static tracepoint"},
6242     {bp_dprintf, "dprintf"},
6243     {bp_jit_event, "jit events"},
6244     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6245     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6246   };
6247
6248   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6249       || ((int) type != bptypes[(int) type].type))
6250     internal_error (__FILE__, __LINE__,
6251                     _("bptypes table does not describe type #%d."),
6252                     (int) type);
6253
6254   return bptypes[(int) type].description;
6255 }
6256
6257 /* For MI, output a field named 'thread-groups' with a list as the value.
6258    For CLI, prefix the list with the string 'inf'. */
6259
6260 static void
6261 output_thread_groups (struct ui_out *uiout,
6262                       const char *field_name,
6263                       VEC(int) *inf_num,
6264                       int mi_only)
6265 {
6266   int is_mi = uiout->is_mi_like_p ();
6267   int inf;
6268   int i;
6269
6270   /* For backward compatibility, don't display inferiors in CLI unless
6271      there are several.  Always display them for MI. */
6272   if (!is_mi && mi_only)
6273     return;
6274
6275   ui_out_emit_list list_emitter (uiout, field_name);
6276
6277   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6278     {
6279       if (is_mi)
6280         {
6281           char mi_group[10];
6282
6283           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6284           uiout->field_string (NULL, mi_group);
6285         }
6286       else
6287         {
6288           if (i == 0)
6289             uiout->text (" inf ");
6290           else
6291             uiout->text (", ");
6292         
6293           uiout->text (plongest (inf));
6294         }
6295     }
6296 }
6297
6298 /* Print B to gdb_stdout.  */
6299
6300 static void
6301 print_one_breakpoint_location (struct breakpoint *b,
6302                                struct bp_location *loc,
6303                                int loc_number,
6304                                struct bp_location **last_loc,
6305                                int allflag)
6306 {
6307   struct command_line *l;
6308   static char bpenables[] = "nynny";
6309
6310   struct ui_out *uiout = current_uiout;
6311   int header_of_multiple = 0;
6312   int part_of_multiple = (loc != NULL);
6313   struct value_print_options opts;
6314
6315   get_user_print_options (&opts);
6316
6317   gdb_assert (!loc || loc_number != 0);
6318   /* See comment in print_one_breakpoint concerning treatment of
6319      breakpoints with single disabled location.  */
6320   if (loc == NULL 
6321       && (b->loc != NULL 
6322           && (b->loc->next != NULL || !b->loc->enabled)))
6323     header_of_multiple = 1;
6324   if (loc == NULL)
6325     loc = b->loc;
6326
6327   annotate_record ();
6328
6329   /* 1 */
6330   annotate_field (0);
6331   if (part_of_multiple)
6332     {
6333       char *formatted;
6334       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6335       uiout->field_string ("number", formatted);
6336       xfree (formatted);
6337     }
6338   else
6339     {
6340       uiout->field_int ("number", b->number);
6341     }
6342
6343   /* 2 */
6344   annotate_field (1);
6345   if (part_of_multiple)
6346     uiout->field_skip ("type");
6347   else
6348     uiout->field_string ("type", bptype_string (b->type));
6349
6350   /* 3 */
6351   annotate_field (2);
6352   if (part_of_multiple)
6353     uiout->field_skip ("disp");
6354   else
6355     uiout->field_string ("disp", bpdisp_text (b->disposition));
6356
6357
6358   /* 4 */
6359   annotate_field (3);
6360   if (part_of_multiple)
6361     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6362   else
6363     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6364   uiout->spaces (2);
6365
6366   
6367   /* 5 and 6 */
6368   if (b->ops != NULL && b->ops->print_one != NULL)
6369     {
6370       /* Although the print_one can possibly print all locations,
6371          calling it here is not likely to get any nice result.  So,
6372          make sure there's just one location.  */
6373       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6374       b->ops->print_one (b, last_loc);
6375     }
6376   else
6377     switch (b->type)
6378       {
6379       case bp_none:
6380         internal_error (__FILE__, __LINE__,
6381                         _("print_one_breakpoint: bp_none encountered\n"));
6382         break;
6383
6384       case bp_watchpoint:
6385       case bp_hardware_watchpoint:
6386       case bp_read_watchpoint:
6387       case bp_access_watchpoint:
6388         {
6389           struct watchpoint *w = (struct watchpoint *) b;
6390
6391           /* Field 4, the address, is omitted (which makes the columns
6392              not line up too nicely with the headers, but the effect
6393              is relatively readable).  */
6394           if (opts.addressprint)
6395             uiout->field_skip ("addr");
6396           annotate_field (5);
6397           uiout->field_string ("what", w->exp_string);
6398         }
6399         break;
6400
6401       case bp_breakpoint:
6402       case bp_hardware_breakpoint:
6403       case bp_single_step:
6404       case bp_until:
6405       case bp_finish:
6406       case bp_longjmp:
6407       case bp_longjmp_resume:
6408       case bp_longjmp_call_dummy:
6409       case bp_exception:
6410       case bp_exception_resume:
6411       case bp_step_resume:
6412       case bp_hp_step_resume:
6413       case bp_watchpoint_scope:
6414       case bp_call_dummy:
6415       case bp_std_terminate:
6416       case bp_shlib_event:
6417       case bp_thread_event:
6418       case bp_overlay_event:
6419       case bp_longjmp_master:
6420       case bp_std_terminate_master:
6421       case bp_exception_master:
6422       case bp_tracepoint:
6423       case bp_fast_tracepoint:
6424       case bp_static_tracepoint:
6425       case bp_dprintf:
6426       case bp_jit_event:
6427       case bp_gnu_ifunc_resolver:
6428       case bp_gnu_ifunc_resolver_return:
6429         if (opts.addressprint)
6430           {
6431             annotate_field (4);
6432             if (header_of_multiple)
6433               uiout->field_string ("addr", "<MULTIPLE>");
6434             else if (b->loc == NULL || loc->shlib_disabled)
6435               uiout->field_string ("addr", "<PENDING>");
6436             else
6437               uiout->field_core_addr ("addr",
6438                                       loc->gdbarch, loc->address);
6439           }
6440         annotate_field (5);
6441         if (!header_of_multiple)
6442           print_breakpoint_location (b, loc);
6443         if (b->loc)
6444           *last_loc = b->loc;
6445         break;
6446       }
6447
6448
6449   if (loc != NULL && !header_of_multiple)
6450     {
6451       struct inferior *inf;
6452       VEC(int) *inf_num = NULL;
6453       int mi_only = 1;
6454
6455       ALL_INFERIORS (inf)
6456         {
6457           if (inf->pspace == loc->pspace)
6458             VEC_safe_push (int, inf_num, inf->num);
6459         }
6460
6461         /* For backward compatibility, don't display inferiors in CLI unless
6462            there are several.  Always display for MI. */
6463         if (allflag
6464             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6465                 && (number_of_program_spaces () > 1
6466                     || number_of_inferiors () > 1)
6467                 /* LOC is for existing B, it cannot be in
6468                    moribund_locations and thus having NULL OWNER.  */
6469                 && loc->owner->type != bp_catchpoint))
6470         mi_only = 0;
6471       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6472       VEC_free (int, inf_num);
6473     }
6474
6475   if (!part_of_multiple)
6476     {
6477       if (b->thread != -1)
6478         {
6479           /* FIXME: This seems to be redundant and lost here; see the
6480              "stop only in" line a little further down.  */
6481           uiout->text (" thread ");
6482           uiout->field_int ("thread", b->thread);
6483         }
6484       else if (b->task != 0)
6485         {
6486           uiout->text (" task ");
6487           uiout->field_int ("task", b->task);
6488         }
6489     }
6490
6491   uiout->text ("\n");
6492
6493   if (!part_of_multiple)
6494     b->ops->print_one_detail (b, uiout);
6495
6496   if (part_of_multiple && frame_id_p (b->frame_id))
6497     {
6498       annotate_field (6);
6499       uiout->text ("\tstop only in stack frame at ");
6500       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6501          the frame ID.  */
6502       uiout->field_core_addr ("frame",
6503                               b->gdbarch, b->frame_id.stack_addr);
6504       uiout->text ("\n");
6505     }
6506   
6507   if (!part_of_multiple && b->cond_string)
6508     {
6509       annotate_field (7);
6510       if (is_tracepoint (b))
6511         uiout->text ("\ttrace only if ");
6512       else
6513         uiout->text ("\tstop only if ");
6514       uiout->field_string ("cond", b->cond_string);
6515
6516       /* Print whether the target is doing the breakpoint's condition
6517          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6518       if (is_breakpoint (b)
6519           && breakpoint_condition_evaluation_mode ()
6520           == condition_evaluation_target)
6521         {
6522           uiout->text (" (");
6523           uiout->field_string ("evaluated-by",
6524                                bp_condition_evaluator (b));
6525           uiout->text (" evals)");
6526         }
6527       uiout->text ("\n");
6528     }
6529
6530   if (!part_of_multiple && b->thread != -1)
6531     {
6532       /* FIXME should make an annotation for this.  */
6533       uiout->text ("\tstop only in thread ");
6534       if (uiout->is_mi_like_p ())
6535         uiout->field_int ("thread", b->thread);
6536       else
6537         {
6538           struct thread_info *thr = find_thread_global_id (b->thread);
6539
6540           uiout->field_string ("thread", print_thread_id (thr));
6541         }
6542       uiout->text ("\n");
6543     }
6544   
6545   if (!part_of_multiple)
6546     {
6547       if (b->hit_count)
6548         {
6549           /* FIXME should make an annotation for this.  */
6550           if (is_catchpoint (b))
6551             uiout->text ("\tcatchpoint");
6552           else if (is_tracepoint (b))
6553             uiout->text ("\ttracepoint");
6554           else
6555             uiout->text ("\tbreakpoint");
6556           uiout->text (" already hit ");
6557           uiout->field_int ("times", b->hit_count);
6558           if (b->hit_count == 1)
6559             uiout->text (" time\n");
6560           else
6561             uiout->text (" times\n");
6562         }
6563       else
6564         {
6565           /* Output the count also if it is zero, but only if this is mi.  */
6566           if (uiout->is_mi_like_p ())
6567             uiout->field_int ("times", b->hit_count);
6568         }
6569     }
6570
6571   if (!part_of_multiple && b->ignore_count)
6572     {
6573       annotate_field (8);
6574       uiout->text ("\tignore next ");
6575       uiout->field_int ("ignore", b->ignore_count);
6576       uiout->text (" hits\n");
6577     }
6578
6579   /* Note that an enable count of 1 corresponds to "enable once"
6580      behavior, which is reported by the combination of enablement and
6581      disposition, so we don't need to mention it here.  */
6582   if (!part_of_multiple && b->enable_count > 1)
6583     {
6584       annotate_field (8);
6585       uiout->text ("\tdisable after ");
6586       /* Tweak the wording to clarify that ignore and enable counts
6587          are distinct, and have additive effect.  */
6588       if (b->ignore_count)
6589         uiout->text ("additional ");
6590       else
6591         uiout->text ("next ");
6592       uiout->field_int ("enable", b->enable_count);
6593       uiout->text (" hits\n");
6594     }
6595
6596   if (!part_of_multiple && is_tracepoint (b))
6597     {
6598       struct tracepoint *tp = (struct tracepoint *) b;
6599
6600       if (tp->traceframe_usage)
6601         {
6602           uiout->text ("\ttrace buffer usage ");
6603           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6604           uiout->text (" bytes\n");
6605         }
6606     }
6607
6608   l = b->commands ? b->commands->commands : NULL;
6609   if (!part_of_multiple && l)
6610     {
6611       annotate_field (9);
6612       ui_out_emit_tuple tuple_emitter (uiout, "script");
6613       print_command_lines (uiout, l, 4);
6614     }
6615
6616   if (is_tracepoint (b))
6617     {
6618       struct tracepoint *t = (struct tracepoint *) b;
6619
6620       if (!part_of_multiple && t->pass_count)
6621         {
6622           annotate_field (10);
6623           uiout->text ("\tpass count ");
6624           uiout->field_int ("pass", t->pass_count);
6625           uiout->text (" \n");
6626         }
6627
6628       /* Don't display it when tracepoint or tracepoint location is
6629          pending.   */
6630       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6631         {
6632           annotate_field (11);
6633
6634           if (uiout->is_mi_like_p ())
6635             uiout->field_string ("installed",
6636                                  loc->inserted ? "y" : "n");
6637           else
6638             {
6639               if (loc->inserted)
6640                 uiout->text ("\t");
6641               else
6642                 uiout->text ("\tnot ");
6643               uiout->text ("installed on target\n");
6644             }
6645         }
6646     }
6647
6648   if (uiout->is_mi_like_p () && !part_of_multiple)
6649     {
6650       if (is_watchpoint (b))
6651         {
6652           struct watchpoint *w = (struct watchpoint *) b;
6653
6654           uiout->field_string ("original-location", w->exp_string);
6655         }
6656       else if (b->location != NULL
6657                && event_location_to_string (b->location.get ()) != NULL)
6658         uiout->field_string ("original-location",
6659                              event_location_to_string (b->location.get ()));
6660     }
6661 }
6662
6663 static void
6664 print_one_breakpoint (struct breakpoint *b,
6665                       struct bp_location **last_loc, 
6666                       int allflag)
6667 {
6668   struct ui_out *uiout = current_uiout;
6669
6670   {
6671     ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
6672
6673     print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6674   }
6675
6676   /* If this breakpoint has custom print function,
6677      it's already printed.  Otherwise, print individual
6678      locations, if any.  */
6679   if (b->ops == NULL || b->ops->print_one == NULL)
6680     {
6681       /* If breakpoint has a single location that is disabled, we
6682          print it as if it had several locations, since otherwise it's
6683          hard to represent "breakpoint enabled, location disabled"
6684          situation.
6685
6686          Note that while hardware watchpoints have several locations
6687          internally, that's not a property exposed to user.  */
6688       if (b->loc 
6689           && !is_hardware_watchpoint (b)
6690           && (b->loc->next || !b->loc->enabled))
6691         {
6692           struct bp_location *loc;
6693           int n = 1;
6694
6695           for (loc = b->loc; loc; loc = loc->next, ++n)
6696             {
6697               ui_out_emit_tuple tuple_emitter (uiout, NULL);
6698               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6699             }
6700         }
6701     }
6702 }
6703
6704 static int
6705 breakpoint_address_bits (struct breakpoint *b)
6706 {
6707   int print_address_bits = 0;
6708   struct bp_location *loc;
6709
6710   /* Software watchpoints that aren't watching memory don't have an
6711      address to print.  */
6712   if (is_no_memory_software_watchpoint (b))
6713     return 0;
6714
6715   for (loc = b->loc; loc; loc = loc->next)
6716     {
6717       int addr_bit;
6718
6719       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6720       if (addr_bit > print_address_bits)
6721         print_address_bits = addr_bit;
6722     }
6723
6724   return print_address_bits;
6725 }
6726
6727 struct captured_breakpoint_query_args
6728   {
6729     int bnum;
6730   };
6731
6732 static int
6733 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6734 {
6735   struct captured_breakpoint_query_args *args
6736     = (struct captured_breakpoint_query_args *) data;
6737   struct breakpoint *b;
6738   struct bp_location *dummy_loc = NULL;
6739
6740   ALL_BREAKPOINTS (b)
6741     {
6742       if (args->bnum == b->number)
6743         {
6744           print_one_breakpoint (b, &dummy_loc, 0);
6745           return GDB_RC_OK;
6746         }
6747     }
6748   return GDB_RC_NONE;
6749 }
6750
6751 enum gdb_rc
6752 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6753                       char **error_message)
6754 {
6755   struct captured_breakpoint_query_args args;
6756
6757   args.bnum = bnum;
6758   /* For the moment we don't trust print_one_breakpoint() to not throw
6759      an error.  */
6760   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6761                                  error_message, RETURN_MASK_ALL) < 0)
6762     return GDB_RC_FAIL;
6763   else
6764     return GDB_RC_OK;
6765 }
6766
6767 /* Return true if this breakpoint was set by the user, false if it is
6768    internal or momentary.  */
6769
6770 int
6771 user_breakpoint_p (struct breakpoint *b)
6772 {
6773   return b->number > 0;
6774 }
6775
6776 /* See breakpoint.h.  */
6777
6778 int
6779 pending_breakpoint_p (struct breakpoint *b)
6780 {
6781   return b->loc == NULL;
6782 }
6783
6784 /* Print information on user settable breakpoint (watchpoint, etc)
6785    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6786    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6787    FILTER is non-NULL, call it on each breakpoint and only include the
6788    ones for which it returns non-zero.  Return the total number of
6789    breakpoints listed.  */
6790
6791 static int
6792 breakpoint_1 (char *args, int allflag, 
6793               int (*filter) (const struct breakpoint *))
6794 {
6795   struct breakpoint *b;
6796   struct bp_location *last_loc = NULL;
6797   int nr_printable_breakpoints;
6798   struct value_print_options opts;
6799   int print_address_bits = 0;
6800   int print_type_col_width = 14;
6801   struct ui_out *uiout = current_uiout;
6802
6803   get_user_print_options (&opts);
6804
6805   /* Compute the number of rows in the table, as well as the size
6806      required for address fields.  */
6807   nr_printable_breakpoints = 0;
6808   ALL_BREAKPOINTS (b)
6809     {
6810       /* If we have a filter, only list the breakpoints it accepts.  */
6811       if (filter && !filter (b))
6812         continue;
6813
6814       /* If we have an "args" string, it is a list of breakpoints to 
6815          accept.  Skip the others.  */
6816       if (args != NULL && *args != '\0')
6817         {
6818           if (allflag && parse_and_eval_long (args) != b->number)
6819             continue;
6820           if (!allflag && !number_is_in_list (args, b->number))
6821             continue;
6822         }
6823
6824       if (allflag || user_breakpoint_p (b))
6825         {
6826           int addr_bit, type_len;
6827
6828           addr_bit = breakpoint_address_bits (b);
6829           if (addr_bit > print_address_bits)
6830             print_address_bits = addr_bit;
6831
6832           type_len = strlen (bptype_string (b->type));
6833           if (type_len > print_type_col_width)
6834             print_type_col_width = type_len;
6835
6836           nr_printable_breakpoints++;
6837         }
6838     }
6839
6840   {
6841     ui_out_emit_table table_emitter (uiout,
6842                                      opts.addressprint ? 6 : 5,
6843                                      nr_printable_breakpoints,
6844                                      "BreakpointTable");
6845
6846     if (nr_printable_breakpoints > 0)
6847       annotate_breakpoints_headers ();
6848     if (nr_printable_breakpoints > 0)
6849       annotate_field (0);
6850     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6851     if (nr_printable_breakpoints > 0)
6852       annotate_field (1);
6853     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6854     if (nr_printable_breakpoints > 0)
6855       annotate_field (2);
6856     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6857     if (nr_printable_breakpoints > 0)
6858       annotate_field (3);
6859     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6860     if (opts.addressprint)
6861       {
6862         if (nr_printable_breakpoints > 0)
6863           annotate_field (4);
6864         if (print_address_bits <= 32)
6865           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6866         else
6867           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6868       }
6869     if (nr_printable_breakpoints > 0)
6870       annotate_field (5);
6871     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6872     uiout->table_body ();
6873     if (nr_printable_breakpoints > 0)
6874       annotate_breakpoints_table ();
6875
6876     ALL_BREAKPOINTS (b)
6877       {
6878         QUIT;
6879         /* If we have a filter, only list the breakpoints it accepts.  */
6880         if (filter && !filter (b))
6881           continue;
6882
6883         /* If we have an "args" string, it is a list of breakpoints to 
6884            accept.  Skip the others.  */
6885
6886         if (args != NULL && *args != '\0')
6887           {
6888             if (allflag)        /* maintenance info breakpoint */
6889               {
6890                 if (parse_and_eval_long (args) != b->number)
6891                   continue;
6892               }
6893             else                /* all others */
6894               {
6895                 if (!number_is_in_list (args, b->number))
6896                   continue;
6897               }
6898           }
6899         /* We only print out user settable breakpoints unless the
6900            allflag is set.  */
6901         if (allflag || user_breakpoint_p (b))
6902           print_one_breakpoint (b, &last_loc, allflag);
6903       }
6904   }
6905
6906   if (nr_printable_breakpoints == 0)
6907     {
6908       /* If there's a filter, let the caller decide how to report
6909          empty list.  */
6910       if (!filter)
6911         {
6912           if (args == NULL || *args == '\0')
6913             uiout->message ("No breakpoints or watchpoints.\n");
6914           else
6915             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6916                             args);
6917         }
6918     }
6919   else
6920     {
6921       if (last_loc && !server_command)
6922         set_next_address (last_loc->gdbarch, last_loc->address);
6923     }
6924
6925   /* FIXME?  Should this be moved up so that it is only called when
6926      there have been breakpoints? */
6927   annotate_breakpoints_table_end ();
6928
6929   return nr_printable_breakpoints;
6930 }
6931
6932 /* Display the value of default-collect in a way that is generally
6933    compatible with the breakpoint list.  */
6934
6935 static void
6936 default_collect_info (void)
6937 {
6938   struct ui_out *uiout = current_uiout;
6939
6940   /* If it has no value (which is frequently the case), say nothing; a
6941      message like "No default-collect." gets in user's face when it's
6942      not wanted.  */
6943   if (!*default_collect)
6944     return;
6945
6946   /* The following phrase lines up nicely with per-tracepoint collect
6947      actions.  */
6948   uiout->text ("default collect ");
6949   uiout->field_string ("default-collect", default_collect);
6950   uiout->text (" \n");
6951 }
6952   
6953 static void
6954 info_breakpoints_command (char *args, int from_tty)
6955 {
6956   breakpoint_1 (args, 0, NULL);
6957
6958   default_collect_info ();
6959 }
6960
6961 static void
6962 info_watchpoints_command (char *args, int from_tty)
6963 {
6964   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6965   struct ui_out *uiout = current_uiout;
6966
6967   if (num_printed == 0)
6968     {
6969       if (args == NULL || *args == '\0')
6970         uiout->message ("No watchpoints.\n");
6971       else
6972         uiout->message ("No watchpoint matching '%s'.\n", args);
6973     }
6974 }
6975
6976 static void
6977 maintenance_info_breakpoints (char *args, int from_tty)
6978 {
6979   breakpoint_1 (args, 1, NULL);
6980
6981   default_collect_info ();
6982 }
6983
6984 static int
6985 breakpoint_has_pc (struct breakpoint *b,
6986                    struct program_space *pspace,
6987                    CORE_ADDR pc, struct obj_section *section)
6988 {
6989   struct bp_location *bl = b->loc;
6990
6991   for (; bl; bl = bl->next)
6992     {
6993       if (bl->pspace == pspace
6994           && bl->address == pc
6995           && (!overlay_debugging || bl->section == section))
6996         return 1;         
6997     }
6998   return 0;
6999 }
7000
7001 /* Print a message describing any user-breakpoints set at PC.  This
7002    concerns with logical breakpoints, so we match program spaces, not
7003    address spaces.  */
7004
7005 static void
7006 describe_other_breakpoints (struct gdbarch *gdbarch,
7007                             struct program_space *pspace, CORE_ADDR pc,
7008                             struct obj_section *section, int thread)
7009 {
7010   int others = 0;
7011   struct breakpoint *b;
7012
7013   ALL_BREAKPOINTS (b)
7014     others += (user_breakpoint_p (b)
7015                && breakpoint_has_pc (b, pspace, pc, section));
7016   if (others > 0)
7017     {
7018       if (others == 1)
7019         printf_filtered (_("Note: breakpoint "));
7020       else /* if (others == ???) */
7021         printf_filtered (_("Note: breakpoints "));
7022       ALL_BREAKPOINTS (b)
7023         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
7024           {
7025             others--;
7026             printf_filtered ("%d", b->number);
7027             if (b->thread == -1 && thread != -1)
7028               printf_filtered (" (all threads)");
7029             else if (b->thread != -1)
7030               printf_filtered (" (thread %d)", b->thread);
7031             printf_filtered ("%s%s ",
7032                              ((b->enable_state == bp_disabled
7033                                || b->enable_state == bp_call_disabled)
7034                               ? " (disabled)"
7035                               : ""),
7036                              (others > 1) ? "," 
7037                              : ((others == 1) ? " and" : ""));
7038           }
7039       printf_filtered (_("also set at pc "));
7040       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
7041       printf_filtered (".\n");
7042     }
7043 }
7044 \f
7045
7046 /* Return true iff it is meaningful to use the address member of
7047    BPT locations.  For some breakpoint types, the locations' address members
7048    are irrelevant and it makes no sense to attempt to compare them to other
7049    addresses (or use them for any other purpose either).
7050
7051    More specifically, each of the following breakpoint types will
7052    always have a zero valued location address and we don't want to mark
7053    breakpoints of any of these types to be a duplicate of an actual
7054    breakpoint location at address zero:
7055
7056       bp_watchpoint
7057       bp_catchpoint
7058
7059 */
7060
7061 static int
7062 breakpoint_address_is_meaningful (struct breakpoint *bpt)
7063 {
7064   enum bptype type = bpt->type;
7065
7066   return (type != bp_watchpoint && type != bp_catchpoint);
7067 }
7068
7069 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7070    true if LOC1 and LOC2 represent the same watchpoint location.  */
7071
7072 static int
7073 watchpoint_locations_match (struct bp_location *loc1, 
7074                             struct bp_location *loc2)
7075 {
7076   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7077   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7078
7079   /* Both of them must exist.  */
7080   gdb_assert (w1 != NULL);
7081   gdb_assert (w2 != NULL);
7082
7083   /* If the target can evaluate the condition expression in hardware,
7084      then we we need to insert both watchpoints even if they are at
7085      the same place.  Otherwise the watchpoint will only trigger when
7086      the condition of whichever watchpoint was inserted evaluates to
7087      true, not giving a chance for GDB to check the condition of the
7088      other watchpoint.  */
7089   if ((w1->cond_exp
7090        && target_can_accel_watchpoint_condition (loc1->address, 
7091                                                  loc1->length,
7092                                                  loc1->watchpoint_type,
7093                                                  w1->cond_exp.get ()))
7094       || (w2->cond_exp
7095           && target_can_accel_watchpoint_condition (loc2->address, 
7096                                                     loc2->length,
7097                                                     loc2->watchpoint_type,
7098                                                     w2->cond_exp.get ())))
7099     return 0;
7100
7101   /* Note that this checks the owner's type, not the location's.  In
7102      case the target does not support read watchpoints, but does
7103      support access watchpoints, we'll have bp_read_watchpoint
7104      watchpoints with hw_access locations.  Those should be considered
7105      duplicates of hw_read locations.  The hw_read locations will
7106      become hw_access locations later.  */
7107   return (loc1->owner->type == loc2->owner->type
7108           && loc1->pspace->aspace == loc2->pspace->aspace
7109           && loc1->address == loc2->address
7110           && loc1->length == loc2->length);
7111 }
7112
7113 /* See breakpoint.h.  */
7114
7115 int
7116 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7117                           struct address_space *aspace2, CORE_ADDR addr2)
7118 {
7119   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7120            || aspace1 == aspace2)
7121           && addr1 == addr2);
7122 }
7123
7124 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7125    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
7126    matches ASPACE2.  On targets that have global breakpoints, the address
7127    space doesn't really matter.  */
7128
7129 static int
7130 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7131                                 int len1, struct address_space *aspace2,
7132                                 CORE_ADDR addr2)
7133 {
7134   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7135            || aspace1 == aspace2)
7136           && addr2 >= addr1 && addr2 < addr1 + len1);
7137 }
7138
7139 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
7140    a ranged breakpoint.  In most targets, a match happens only if ASPACE
7141    matches the breakpoint's address space.  On targets that have global
7142    breakpoints, the address space doesn't really matter.  */
7143
7144 static int
7145 breakpoint_location_address_match (struct bp_location *bl,
7146                                    struct address_space *aspace,
7147                                    CORE_ADDR addr)
7148 {
7149   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7150                                     aspace, addr)
7151           || (bl->length
7152               && breakpoint_address_match_range (bl->pspace->aspace,
7153                                                  bl->address, bl->length,
7154                                                  aspace, addr)));
7155 }
7156
7157 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7158    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
7159    match happens only if ASPACE matches the breakpoint's address
7160    space.  On targets that have global breakpoints, the address space
7161    doesn't really matter.  */
7162
7163 static int
7164 breakpoint_location_address_range_overlap (struct bp_location *bl,
7165                                            struct address_space *aspace,
7166                                            CORE_ADDR addr, int len)
7167 {
7168   if (gdbarch_has_global_breakpoints (target_gdbarch ())
7169       || bl->pspace->aspace == aspace)
7170     {
7171       int bl_len = bl->length != 0 ? bl->length : 1;
7172
7173       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7174         return 1;
7175     }
7176   return 0;
7177 }
7178
7179 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7180    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7181    true, otherwise returns false.  */
7182
7183 static int
7184 tracepoint_locations_match (struct bp_location *loc1,
7185                             struct bp_location *loc2)
7186 {
7187   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7188     /* Since tracepoint locations are never duplicated with others', tracepoint
7189        locations at the same address of different tracepoints are regarded as
7190        different locations.  */
7191     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7192   else
7193     return 0;
7194 }
7195
7196 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7197    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7198    represent the same location.  */
7199
7200 static int
7201 breakpoint_locations_match (struct bp_location *loc1, 
7202                             struct bp_location *loc2)
7203 {
7204   int hw_point1, hw_point2;
7205
7206   /* Both of them must not be in moribund_locations.  */
7207   gdb_assert (loc1->owner != NULL);
7208   gdb_assert (loc2->owner != NULL);
7209
7210   hw_point1 = is_hardware_watchpoint (loc1->owner);
7211   hw_point2 = is_hardware_watchpoint (loc2->owner);
7212
7213   if (hw_point1 != hw_point2)
7214     return 0;
7215   else if (hw_point1)
7216     return watchpoint_locations_match (loc1, loc2);
7217   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7218     return tracepoint_locations_match (loc1, loc2);
7219   else
7220     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7221     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7222                                      loc2->pspace->aspace, loc2->address)
7223             && loc1->length == loc2->length);
7224 }
7225
7226 static void
7227 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7228                                int bnum, int have_bnum)
7229 {
7230   /* The longest string possibly returned by hex_string_custom
7231      is 50 chars.  These must be at least that big for safety.  */
7232   char astr1[64];
7233   char astr2[64];
7234
7235   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7236   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7237   if (have_bnum)
7238     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7239              bnum, astr1, astr2);
7240   else
7241     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7242 }
7243
7244 /* Adjust a breakpoint's address to account for architectural
7245    constraints on breakpoint placement.  Return the adjusted address.
7246    Note: Very few targets require this kind of adjustment.  For most
7247    targets, this function is simply the identity function.  */
7248
7249 static CORE_ADDR
7250 adjust_breakpoint_address (struct gdbarch *gdbarch,
7251                            CORE_ADDR bpaddr, enum bptype bptype)
7252 {
7253   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7254     {
7255       /* Very few targets need any kind of breakpoint adjustment.  */
7256       return bpaddr;
7257     }
7258   else if (bptype == bp_watchpoint
7259            || bptype == bp_hardware_watchpoint
7260            || bptype == bp_read_watchpoint
7261            || bptype == bp_access_watchpoint
7262            || bptype == bp_catchpoint)
7263     {
7264       /* Watchpoints and the various bp_catch_* eventpoints should not
7265          have their addresses modified.  */
7266       return bpaddr;
7267     }
7268   else if (bptype == bp_single_step)
7269     {
7270       /* Single-step breakpoints should not have their addresses
7271          modified.  If there's any architectural constrain that
7272          applies to this address, then it should have already been
7273          taken into account when the breakpoint was created in the
7274          first place.  If we didn't do this, stepping through e.g.,
7275          Thumb-2 IT blocks would break.  */
7276       return bpaddr;
7277     }
7278   else
7279     {
7280       CORE_ADDR adjusted_bpaddr;
7281
7282       /* Some targets have architectural constraints on the placement
7283          of breakpoint instructions.  Obtain the adjusted address.  */
7284       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7285
7286       /* An adjusted breakpoint address can significantly alter
7287          a user's expectations.  Print a warning if an adjustment
7288          is required.  */
7289       if (adjusted_bpaddr != bpaddr)
7290         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7291
7292       return adjusted_bpaddr;
7293     }
7294 }
7295
7296 bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7297 {
7298   bp_location *loc = this;
7299
7300   gdb_assert (ops != NULL);
7301
7302   loc->ops = ops;
7303   loc->owner = owner;
7304   loc->cond_bytecode = NULL;
7305   loc->shlib_disabled = 0;
7306   loc->enabled = 1;
7307
7308   switch (owner->type)
7309     {
7310     case bp_breakpoint:
7311     case bp_single_step:
7312     case bp_until:
7313     case bp_finish:
7314     case bp_longjmp:
7315     case bp_longjmp_resume:
7316     case bp_longjmp_call_dummy:
7317     case bp_exception:
7318     case bp_exception_resume:
7319     case bp_step_resume:
7320     case bp_hp_step_resume:
7321     case bp_watchpoint_scope:
7322     case bp_call_dummy:
7323     case bp_std_terminate:
7324     case bp_shlib_event:
7325     case bp_thread_event:
7326     case bp_overlay_event:
7327     case bp_jit_event:
7328     case bp_longjmp_master:
7329     case bp_std_terminate_master:
7330     case bp_exception_master:
7331     case bp_gnu_ifunc_resolver:
7332     case bp_gnu_ifunc_resolver_return:
7333     case bp_dprintf:
7334       loc->loc_type = bp_loc_software_breakpoint;
7335       mark_breakpoint_location_modified (loc);
7336       break;
7337     case bp_hardware_breakpoint:
7338       loc->loc_type = bp_loc_hardware_breakpoint;
7339       mark_breakpoint_location_modified (loc);
7340       break;
7341     case bp_hardware_watchpoint:
7342     case bp_read_watchpoint:
7343     case bp_access_watchpoint:
7344       loc->loc_type = bp_loc_hardware_watchpoint;
7345       break;
7346     case bp_watchpoint:
7347     case bp_catchpoint:
7348     case bp_tracepoint:
7349     case bp_fast_tracepoint:
7350     case bp_static_tracepoint:
7351       loc->loc_type = bp_loc_other;
7352       break;
7353     default:
7354       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7355     }
7356
7357   loc->refc = 1;
7358 }
7359
7360 /* Allocate a struct bp_location.  */
7361
7362 static struct bp_location *
7363 allocate_bp_location (struct breakpoint *bpt)
7364 {
7365   return bpt->ops->allocate_location (bpt);
7366 }
7367
7368 static void
7369 free_bp_location (struct bp_location *loc)
7370 {
7371   loc->ops->dtor (loc);
7372   delete loc;
7373 }
7374
7375 /* Increment reference count.  */
7376
7377 static void
7378 incref_bp_location (struct bp_location *bl)
7379 {
7380   ++bl->refc;
7381 }
7382
7383 /* Decrement reference count.  If the reference count reaches 0,
7384    destroy the bp_location.  Sets *BLP to NULL.  */
7385
7386 static void
7387 decref_bp_location (struct bp_location **blp)
7388 {
7389   gdb_assert ((*blp)->refc > 0);
7390
7391   if (--(*blp)->refc == 0)
7392     free_bp_location (*blp);
7393   *blp = NULL;
7394 }
7395
7396 /* Add breakpoint B at the end of the global breakpoint chain.  */
7397
7398 static breakpoint *
7399 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7400 {
7401   struct breakpoint *b1;
7402   struct breakpoint *result = b.get ();
7403
7404   /* Add this breakpoint to the end of the chain so that a list of
7405      breakpoints will come out in order of increasing numbers.  */
7406
7407   b1 = breakpoint_chain;
7408   if (b1 == 0)
7409     breakpoint_chain = b.release ();
7410   else
7411     {
7412       while (b1->next)
7413         b1 = b1->next;
7414       b1->next = b.release ();
7415     }
7416
7417   return result;
7418 }
7419
7420 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7421
7422 static void
7423 init_raw_breakpoint_without_location (struct breakpoint *b,
7424                                       struct gdbarch *gdbarch,
7425                                       enum bptype bptype,
7426                                       const struct breakpoint_ops *ops)
7427 {
7428   gdb_assert (ops != NULL);
7429
7430   b->ops = ops;
7431   b->type = bptype;
7432   b->gdbarch = gdbarch;
7433   b->language = current_language->la_language;
7434   b->input_radix = input_radix;
7435   b->related_breakpoint = b;
7436 }
7437
7438 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7439    that has type BPTYPE and has no locations as yet.  */
7440
7441 static struct breakpoint *
7442 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7443                                      enum bptype bptype,
7444                                      const struct breakpoint_ops *ops)
7445 {
7446   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7447
7448   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7449   return add_to_breakpoint_chain (std::move (b));
7450 }
7451
7452 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7453    resolutions should be made as the user specified the location explicitly
7454    enough.  */
7455
7456 static void
7457 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7458 {
7459   gdb_assert (loc->owner != NULL);
7460
7461   if (loc->owner->type == bp_breakpoint
7462       || loc->owner->type == bp_hardware_breakpoint
7463       || is_tracepoint (loc->owner))
7464     {
7465       int is_gnu_ifunc;
7466       const char *function_name;
7467       CORE_ADDR func_addr;
7468
7469       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7470                                           &func_addr, NULL, &is_gnu_ifunc);
7471
7472       if (is_gnu_ifunc && !explicit_loc)
7473         {
7474           struct breakpoint *b = loc->owner;
7475
7476           gdb_assert (loc->pspace == current_program_space);
7477           if (gnu_ifunc_resolve_name (function_name,
7478                                       &loc->requested_address))
7479             {
7480               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7481               loc->address = adjust_breakpoint_address (loc->gdbarch,
7482                                                         loc->requested_address,
7483                                                         b->type);
7484             }
7485           else if (b->type == bp_breakpoint && b->loc == loc
7486                    && loc->next == NULL && b->related_breakpoint == b)
7487             {
7488               /* Create only the whole new breakpoint of this type but do not
7489                  mess more complicated breakpoints with multiple locations.  */
7490               b->type = bp_gnu_ifunc_resolver;
7491               /* Remember the resolver's address for use by the return
7492                  breakpoint.  */
7493               loc->related_address = func_addr;
7494             }
7495         }
7496
7497       if (function_name)
7498         loc->function_name = xstrdup (function_name);
7499     }
7500 }
7501
7502 /* Attempt to determine architecture of location identified by SAL.  */
7503 struct gdbarch *
7504 get_sal_arch (struct symtab_and_line sal)
7505 {
7506   if (sal.section)
7507     return get_objfile_arch (sal.section->objfile);
7508   if (sal.symtab)
7509     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7510
7511   return NULL;
7512 }
7513
7514 /* Low level routine for partially initializing a breakpoint of type
7515    BPTYPE.  The newly created breakpoint's address, section, source
7516    file name, and line number are provided by SAL.
7517
7518    It is expected that the caller will complete the initialization of
7519    the newly created breakpoint struct as well as output any status
7520    information regarding the creation of a new breakpoint.  */
7521
7522 static void
7523 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7524                      struct symtab_and_line sal, enum bptype bptype,
7525                      const struct breakpoint_ops *ops)
7526 {
7527   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7528
7529   add_location_to_breakpoint (b, &sal);
7530
7531   if (bptype != bp_catchpoint)
7532     gdb_assert (sal.pspace != NULL);
7533
7534   /* Store the program space that was used to set the breakpoint,
7535      except for ordinary breakpoints, which are independent of the
7536      program space.  */
7537   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7538     b->pspace = sal.pspace;
7539 }
7540
7541 /* set_raw_breakpoint is a low level routine for allocating and
7542    partially initializing a breakpoint of type BPTYPE.  The newly
7543    created breakpoint's address, section, source file name, and line
7544    number are provided by SAL.  The newly created and partially
7545    initialized breakpoint is added to the breakpoint chain and
7546    is also returned as the value of this function.
7547
7548    It is expected that the caller will complete the initialization of
7549    the newly created breakpoint struct as well as output any status
7550    information regarding the creation of a new breakpoint.  In
7551    particular, set_raw_breakpoint does NOT set the breakpoint
7552    number!  Care should be taken to not allow an error to occur
7553    prior to completing the initialization of the breakpoint.  If this
7554    should happen, a bogus breakpoint will be left on the chain.  */
7555
7556 struct breakpoint *
7557 set_raw_breakpoint (struct gdbarch *gdbarch,
7558                     struct symtab_and_line sal, enum bptype bptype,
7559                     const struct breakpoint_ops *ops)
7560 {
7561   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7562
7563   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7564   return add_to_breakpoint_chain (std::move (b));
7565 }
7566
7567 /* Call this routine when stepping and nexting to enable a breakpoint
7568    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7569    initiated the operation.  */
7570
7571 void
7572 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7573 {
7574   struct breakpoint *b, *b_tmp;
7575   int thread = tp->global_num;
7576
7577   /* To avoid having to rescan all objfile symbols at every step,
7578      we maintain a list of continually-inserted but always disabled
7579      longjmp "master" breakpoints.  Here, we simply create momentary
7580      clones of those and enable them for the requested thread.  */
7581   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7582     if (b->pspace == current_program_space
7583         && (b->type == bp_longjmp_master
7584             || b->type == bp_exception_master))
7585       {
7586         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7587         struct breakpoint *clone;
7588
7589         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7590            after their removal.  */
7591         clone = momentary_breakpoint_from_master (b, type,
7592                                                   &momentary_breakpoint_ops, 1);
7593         clone->thread = thread;
7594       }
7595
7596   tp->initiating_frame = frame;
7597 }
7598
7599 /* Delete all longjmp breakpoints from THREAD.  */
7600 void
7601 delete_longjmp_breakpoint (int thread)
7602 {
7603   struct breakpoint *b, *b_tmp;
7604
7605   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7606     if (b->type == bp_longjmp || b->type == bp_exception)
7607       {
7608         if (b->thread == thread)
7609           delete_breakpoint (b);
7610       }
7611 }
7612
7613 void
7614 delete_longjmp_breakpoint_at_next_stop (int thread)
7615 {
7616   struct breakpoint *b, *b_tmp;
7617
7618   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7619     if (b->type == bp_longjmp || b->type == bp_exception)
7620       {
7621         if (b->thread == thread)
7622           b->disposition = disp_del_at_next_stop;
7623       }
7624 }
7625
7626 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7627    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7628    pointer to any of them.  Return NULL if this system cannot place longjmp
7629    breakpoints.  */
7630
7631 struct breakpoint *
7632 set_longjmp_breakpoint_for_call_dummy (void)
7633 {
7634   struct breakpoint *b, *retval = NULL;
7635
7636   ALL_BREAKPOINTS (b)
7637     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7638       {
7639         struct breakpoint *new_b;
7640
7641         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7642                                                   &momentary_breakpoint_ops,
7643                                                   1);
7644         new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7645
7646         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7647
7648         gdb_assert (new_b->related_breakpoint == new_b);
7649         if (retval == NULL)
7650           retval = new_b;
7651         new_b->related_breakpoint = retval;
7652         while (retval->related_breakpoint != new_b->related_breakpoint)
7653           retval = retval->related_breakpoint;
7654         retval->related_breakpoint = new_b;
7655       }
7656
7657   return retval;
7658 }
7659
7660 /* Verify all existing dummy frames and their associated breakpoints for
7661    TP.  Remove those which can no longer be found in the current frame
7662    stack.
7663
7664    You should call this function only at places where it is safe to currently
7665    unwind the whole stack.  Failed stack unwind would discard live dummy
7666    frames.  */
7667
7668 void
7669 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7670 {
7671   struct breakpoint *b, *b_tmp;
7672
7673   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7674     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7675       {
7676         struct breakpoint *dummy_b = b->related_breakpoint;
7677
7678         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7679           dummy_b = dummy_b->related_breakpoint;
7680         if (dummy_b->type != bp_call_dummy
7681             || frame_find_by_id (dummy_b->frame_id) != NULL)
7682           continue;
7683         
7684         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7685
7686         while (b->related_breakpoint != b)
7687           {
7688             if (b_tmp == b->related_breakpoint)
7689               b_tmp = b->related_breakpoint->next;
7690             delete_breakpoint (b->related_breakpoint);
7691           }
7692         delete_breakpoint (b);
7693       }
7694 }
7695
7696 void
7697 enable_overlay_breakpoints (void)
7698 {
7699   struct breakpoint *b;
7700
7701   ALL_BREAKPOINTS (b)
7702     if (b->type == bp_overlay_event)
7703     {
7704       b->enable_state = bp_enabled;
7705       update_global_location_list (UGLL_MAY_INSERT);
7706       overlay_events_enabled = 1;
7707     }
7708 }
7709
7710 void
7711 disable_overlay_breakpoints (void)
7712 {
7713   struct breakpoint *b;
7714
7715   ALL_BREAKPOINTS (b)
7716     if (b->type == bp_overlay_event)
7717     {
7718       b->enable_state = bp_disabled;
7719       update_global_location_list (UGLL_DONT_INSERT);
7720       overlay_events_enabled = 0;
7721     }
7722 }
7723
7724 /* Set an active std::terminate breakpoint for each std::terminate
7725    master breakpoint.  */
7726 void
7727 set_std_terminate_breakpoint (void)
7728 {
7729   struct breakpoint *b, *b_tmp;
7730
7731   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7732     if (b->pspace == current_program_space
7733         && b->type == bp_std_terminate_master)
7734       {
7735         momentary_breakpoint_from_master (b, bp_std_terminate,
7736                                           &momentary_breakpoint_ops, 1);
7737       }
7738 }
7739
7740 /* Delete all the std::terminate breakpoints.  */
7741 void
7742 delete_std_terminate_breakpoint (void)
7743 {
7744   struct breakpoint *b, *b_tmp;
7745
7746   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7747     if (b->type == bp_std_terminate)
7748       delete_breakpoint (b);
7749 }
7750
7751 struct breakpoint *
7752 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7753 {
7754   struct breakpoint *b;
7755
7756   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7757                                   &internal_breakpoint_ops);
7758
7759   b->enable_state = bp_enabled;
7760   /* location has to be used or breakpoint_re_set will delete me.  */
7761   b->location = new_address_location (b->loc->address, NULL, 0);
7762
7763   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7764
7765   return b;
7766 }
7767
7768 struct lang_and_radix
7769   {
7770     enum language lang;
7771     int radix;
7772   };
7773
7774 /* Create a breakpoint for JIT code registration and unregistration.  */
7775
7776 struct breakpoint *
7777 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7778 {
7779   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7780                                      &internal_breakpoint_ops);
7781 }
7782
7783 /* Remove JIT code registration and unregistration breakpoint(s).  */
7784
7785 void
7786 remove_jit_event_breakpoints (void)
7787 {
7788   struct breakpoint *b, *b_tmp;
7789
7790   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7791     if (b->type == bp_jit_event
7792         && b->loc->pspace == current_program_space)
7793       delete_breakpoint (b);
7794 }
7795
7796 void
7797 remove_solib_event_breakpoints (void)
7798 {
7799   struct breakpoint *b, *b_tmp;
7800
7801   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7802     if (b->type == bp_shlib_event
7803         && b->loc->pspace == current_program_space)
7804       delete_breakpoint (b);
7805 }
7806
7807 /* See breakpoint.h.  */
7808
7809 void
7810 remove_solib_event_breakpoints_at_next_stop (void)
7811 {
7812   struct breakpoint *b, *b_tmp;
7813
7814   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7815     if (b->type == bp_shlib_event
7816         && b->loc->pspace == current_program_space)
7817       b->disposition = disp_del_at_next_stop;
7818 }
7819
7820 /* Helper for create_solib_event_breakpoint /
7821    create_and_insert_solib_event_breakpoint.  Allows specifying which
7822    INSERT_MODE to pass through to update_global_location_list.  */
7823
7824 static struct breakpoint *
7825 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7826                                  enum ugll_insert_mode insert_mode)
7827 {
7828   struct breakpoint *b;
7829
7830   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7831                                   &internal_breakpoint_ops);
7832   update_global_location_list_nothrow (insert_mode);
7833   return b;
7834 }
7835
7836 struct breakpoint *
7837 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7838 {
7839   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7840 }
7841
7842 /* See breakpoint.h.  */
7843
7844 struct breakpoint *
7845 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7846 {
7847   struct breakpoint *b;
7848
7849   /* Explicitly tell update_global_location_list to insert
7850      locations.  */
7851   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7852   if (!b->loc->inserted)
7853     {
7854       delete_breakpoint (b);
7855       return NULL;
7856     }
7857   return b;
7858 }
7859
7860 /* Disable any breakpoints that are on code in shared libraries.  Only
7861    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7862
7863 void
7864 disable_breakpoints_in_shlibs (void)
7865 {
7866   struct bp_location *loc, **locp_tmp;
7867
7868   ALL_BP_LOCATIONS (loc, locp_tmp)
7869   {
7870     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7871     struct breakpoint *b = loc->owner;
7872
7873     /* We apply the check to all breakpoints, including disabled for
7874        those with loc->duplicate set.  This is so that when breakpoint
7875        becomes enabled, or the duplicate is removed, gdb will try to
7876        insert all breakpoints.  If we don't set shlib_disabled here,
7877        we'll try to insert those breakpoints and fail.  */
7878     if (((b->type == bp_breakpoint)
7879          || (b->type == bp_jit_event)
7880          || (b->type == bp_hardware_breakpoint)
7881          || (is_tracepoint (b)))
7882         && loc->pspace == current_program_space
7883         && !loc->shlib_disabled
7884         && solib_name_from_address (loc->pspace, loc->address)
7885         )
7886       {
7887         loc->shlib_disabled = 1;
7888       }
7889   }
7890 }
7891
7892 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7893    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7894    disabled ones can just stay disabled.  */
7895
7896 static void
7897 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7898 {
7899   struct bp_location *loc, **locp_tmp;
7900   int disabled_shlib_breaks = 0;
7901
7902   ALL_BP_LOCATIONS (loc, locp_tmp)
7903   {
7904     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7905     struct breakpoint *b = loc->owner;
7906
7907     if (solib->pspace == loc->pspace
7908         && !loc->shlib_disabled
7909         && (((b->type == bp_breakpoint
7910               || b->type == bp_jit_event
7911               || b->type == bp_hardware_breakpoint)
7912              && (loc->loc_type == bp_loc_hardware_breakpoint
7913                  || loc->loc_type == bp_loc_software_breakpoint))
7914             || is_tracepoint (b))
7915         && solib_contains_address_p (solib, loc->address))
7916       {
7917         loc->shlib_disabled = 1;
7918         /* At this point, we cannot rely on remove_breakpoint
7919            succeeding so we must mark the breakpoint as not inserted
7920            to prevent future errors occurring in remove_breakpoints.  */
7921         loc->inserted = 0;
7922
7923         /* This may cause duplicate notifications for the same breakpoint.  */
7924         observer_notify_breakpoint_modified (b);
7925
7926         if (!disabled_shlib_breaks)
7927           {
7928             target_terminal_ours_for_output ();
7929             warning (_("Temporarily disabling breakpoints "
7930                        "for unloaded shared library \"%s\""),
7931                      solib->so_name);
7932           }
7933         disabled_shlib_breaks = 1;
7934       }
7935   }
7936 }
7937
7938 /* Disable any breakpoints and tracepoints in OBJFILE upon
7939    notification of free_objfile.  Only apply to enabled breakpoints,
7940    disabled ones can just stay disabled.  */
7941
7942 static void
7943 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7944 {
7945   struct breakpoint *b;
7946
7947   if (objfile == NULL)
7948     return;
7949
7950   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7951      managed by the user with add-symbol-file/remove-symbol-file.
7952      Similarly to how breakpoints in shared libraries are handled in
7953      response to "nosharedlibrary", mark breakpoints in such modules
7954      shlib_disabled so they end up uninserted on the next global
7955      location list update.  Shared libraries not loaded by the user
7956      aren't handled here -- they're already handled in
7957      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7958      solib_unloaded observer.  We skip objfiles that are not
7959      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7960      main objfile).  */
7961   if ((objfile->flags & OBJF_SHARED) == 0
7962       || (objfile->flags & OBJF_USERLOADED) == 0)
7963     return;
7964
7965   ALL_BREAKPOINTS (b)
7966     {
7967       struct bp_location *loc;
7968       int bp_modified = 0;
7969
7970       if (!is_breakpoint (b) && !is_tracepoint (b))
7971         continue;
7972
7973       for (loc = b->loc; loc != NULL; loc = loc->next)
7974         {
7975           CORE_ADDR loc_addr = loc->address;
7976
7977           if (loc->loc_type != bp_loc_hardware_breakpoint
7978               && loc->loc_type != bp_loc_software_breakpoint)
7979             continue;
7980
7981           if (loc->shlib_disabled != 0)
7982             continue;
7983
7984           if (objfile->pspace != loc->pspace)
7985             continue;
7986
7987           if (loc->loc_type != bp_loc_hardware_breakpoint
7988               && loc->loc_type != bp_loc_software_breakpoint)
7989             continue;
7990
7991           if (is_addr_in_objfile (loc_addr, objfile))
7992             {
7993               loc->shlib_disabled = 1;
7994               /* At this point, we don't know whether the object was
7995                  unmapped from the inferior or not, so leave the
7996                  inserted flag alone.  We'll handle failure to
7997                  uninsert quietly, in case the object was indeed
7998                  unmapped.  */
7999
8000               mark_breakpoint_location_modified (loc);
8001
8002               bp_modified = 1;
8003             }
8004         }
8005
8006       if (bp_modified)
8007         observer_notify_breakpoint_modified (b);
8008     }
8009 }
8010
8011 /* FORK & VFORK catchpoints.  */
8012
8013 /* An instance of this type is used to represent a fork or vfork
8014    catchpoint.  A breakpoint is really of this type iff its ops pointer points
8015    to CATCH_FORK_BREAKPOINT_OPS.  */
8016
8017 struct fork_catchpoint : public breakpoint
8018 {
8019   /* Process id of a child process whose forking triggered this
8020      catchpoint.  This field is only valid immediately after this
8021      catchpoint has triggered.  */
8022   ptid_t forked_inferior_pid;
8023 };
8024
8025 /* Implement the "insert" breakpoint_ops method for fork
8026    catchpoints.  */
8027
8028 static int
8029 insert_catch_fork (struct bp_location *bl)
8030 {
8031   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
8032 }
8033
8034 /* Implement the "remove" breakpoint_ops method for fork
8035    catchpoints.  */
8036
8037 static int
8038 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
8039 {
8040   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
8041 }
8042
8043 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
8044    catchpoints.  */
8045
8046 static int
8047 breakpoint_hit_catch_fork (const struct bp_location *bl,
8048                            struct address_space *aspace, CORE_ADDR bp_addr,
8049                            const struct target_waitstatus *ws)
8050 {
8051   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8052
8053   if (ws->kind != TARGET_WAITKIND_FORKED)
8054     return 0;
8055
8056   c->forked_inferior_pid = ws->value.related_pid;
8057   return 1;
8058 }
8059
8060 /* Implement the "print_it" breakpoint_ops method for fork
8061    catchpoints.  */
8062
8063 static enum print_stop_action
8064 print_it_catch_fork (bpstat bs)
8065 {
8066   struct ui_out *uiout = current_uiout;
8067   struct breakpoint *b = bs->breakpoint_at;
8068   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8069
8070   annotate_catchpoint (b->number);
8071   maybe_print_thread_hit_breakpoint (uiout);
8072   if (b->disposition == disp_del)
8073     uiout->text ("Temporary catchpoint ");
8074   else
8075     uiout->text ("Catchpoint ");
8076   if (uiout->is_mi_like_p ())
8077     {
8078       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
8079       uiout->field_string ("disp", bpdisp_text (b->disposition));
8080     }
8081   uiout->field_int ("bkptno", b->number);
8082   uiout->text (" (forked process ");
8083   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8084   uiout->text ("), ");
8085   return PRINT_SRC_AND_LOC;
8086 }
8087
8088 /* Implement the "print_one" breakpoint_ops method for fork
8089    catchpoints.  */
8090
8091 static void
8092 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8093 {
8094   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8095   struct value_print_options opts;
8096   struct ui_out *uiout = current_uiout;
8097
8098   get_user_print_options (&opts);
8099
8100   /* Field 4, the address, is omitted (which makes the columns not
8101      line up too nicely with the headers, but the effect is relatively
8102      readable).  */
8103   if (opts.addressprint)
8104     uiout->field_skip ("addr");
8105   annotate_field (5);
8106   uiout->text ("fork");
8107   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8108     {
8109       uiout->text (", process ");
8110       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8111       uiout->spaces (1);
8112     }
8113
8114   if (uiout->is_mi_like_p ())
8115     uiout->field_string ("catch-type", "fork");
8116 }
8117
8118 /* Implement the "print_mention" breakpoint_ops method for fork
8119    catchpoints.  */
8120
8121 static void
8122 print_mention_catch_fork (struct breakpoint *b)
8123 {
8124   printf_filtered (_("Catchpoint %d (fork)"), b->number);
8125 }
8126
8127 /* Implement the "print_recreate" breakpoint_ops method for fork
8128    catchpoints.  */
8129
8130 static void
8131 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8132 {
8133   fprintf_unfiltered (fp, "catch fork");
8134   print_recreate_thread (b, fp);
8135 }
8136
8137 /* The breakpoint_ops structure to be used in fork catchpoints.  */
8138
8139 static struct breakpoint_ops catch_fork_breakpoint_ops;
8140
8141 /* Implement the "insert" breakpoint_ops method for vfork
8142    catchpoints.  */
8143
8144 static int
8145 insert_catch_vfork (struct bp_location *bl)
8146 {
8147   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8148 }
8149
8150 /* Implement the "remove" breakpoint_ops method for vfork
8151    catchpoints.  */
8152
8153 static int
8154 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
8155 {
8156   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8157 }
8158
8159 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8160    catchpoints.  */
8161
8162 static int
8163 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8164                             struct address_space *aspace, CORE_ADDR bp_addr,
8165                             const struct target_waitstatus *ws)
8166 {
8167   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8168
8169   if (ws->kind != TARGET_WAITKIND_VFORKED)
8170     return 0;
8171
8172   c->forked_inferior_pid = ws->value.related_pid;
8173   return 1;
8174 }
8175
8176 /* Implement the "print_it" breakpoint_ops method for vfork
8177    catchpoints.  */
8178
8179 static enum print_stop_action
8180 print_it_catch_vfork (bpstat bs)
8181 {
8182   struct ui_out *uiout = current_uiout;
8183   struct breakpoint *b = bs->breakpoint_at;
8184   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8185
8186   annotate_catchpoint (b->number);
8187   maybe_print_thread_hit_breakpoint (uiout);
8188   if (b->disposition == disp_del)
8189     uiout->text ("Temporary catchpoint ");
8190   else
8191     uiout->text ("Catchpoint ");
8192   if (uiout->is_mi_like_p ())
8193     {
8194       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
8195       uiout->field_string ("disp", bpdisp_text (b->disposition));
8196     }
8197   uiout->field_int ("bkptno", b->number);
8198   uiout->text (" (vforked process ");
8199   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8200   uiout->text ("), ");
8201   return PRINT_SRC_AND_LOC;
8202 }
8203
8204 /* Implement the "print_one" breakpoint_ops method for vfork
8205    catchpoints.  */
8206
8207 static void
8208 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8209 {
8210   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8211   struct value_print_options opts;
8212   struct ui_out *uiout = current_uiout;
8213
8214   get_user_print_options (&opts);
8215   /* Field 4, the address, is omitted (which makes the columns not
8216      line up too nicely with the headers, but the effect is relatively
8217      readable).  */
8218   if (opts.addressprint)
8219     uiout->field_skip ("addr");
8220   annotate_field (5);
8221   uiout->text ("vfork");
8222   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8223     {
8224       uiout->text (", process ");
8225       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8226       uiout->spaces (1);
8227     }
8228
8229   if (uiout->is_mi_like_p ())
8230     uiout->field_string ("catch-type", "vfork");
8231 }
8232
8233 /* Implement the "print_mention" breakpoint_ops method for vfork
8234    catchpoints.  */
8235
8236 static void
8237 print_mention_catch_vfork (struct breakpoint *b)
8238 {
8239   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8240 }
8241
8242 /* Implement the "print_recreate" breakpoint_ops method for vfork
8243    catchpoints.  */
8244
8245 static void
8246 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8247 {
8248   fprintf_unfiltered (fp, "catch vfork");
8249   print_recreate_thread (b, fp);
8250 }
8251
8252 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8253
8254 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8255
8256 /* An instance of this type is used to represent an solib catchpoint.
8257    A breakpoint is really of this type iff its ops pointer points to
8258    CATCH_SOLIB_BREAKPOINT_OPS.  */
8259
8260 struct solib_catchpoint : public breakpoint
8261 {
8262   ~solib_catchpoint () override;
8263
8264   /* True for "catch load", false for "catch unload".  */
8265   unsigned char is_load;
8266
8267   /* Regular expression to match, if any.  COMPILED is only valid when
8268      REGEX is non-NULL.  */
8269   char *regex;
8270   std::unique_ptr<compiled_regex> compiled;
8271 };
8272
8273 solib_catchpoint::~solib_catchpoint ()
8274 {
8275   xfree (this->regex);
8276 }
8277
8278 static int
8279 insert_catch_solib (struct bp_location *ignore)
8280 {
8281   return 0;
8282 }
8283
8284 static int
8285 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8286 {
8287   return 0;
8288 }
8289
8290 static int
8291 breakpoint_hit_catch_solib (const struct bp_location *bl,
8292                             struct address_space *aspace,
8293                             CORE_ADDR bp_addr,
8294                             const struct target_waitstatus *ws)
8295 {
8296   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8297   struct breakpoint *other;
8298
8299   if (ws->kind == TARGET_WAITKIND_LOADED)
8300     return 1;
8301
8302   ALL_BREAKPOINTS (other)
8303   {
8304     struct bp_location *other_bl;
8305
8306     if (other == bl->owner)
8307       continue;
8308
8309     if (other->type != bp_shlib_event)
8310       continue;
8311
8312     if (self->pspace != NULL && other->pspace != self->pspace)
8313       continue;
8314
8315     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8316       {
8317         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8318           return 1;
8319       }
8320   }
8321
8322   return 0;
8323 }
8324
8325 static void
8326 check_status_catch_solib (struct bpstats *bs)
8327 {
8328   struct solib_catchpoint *self
8329     = (struct solib_catchpoint *) bs->breakpoint_at;
8330   int ix;
8331
8332   if (self->is_load)
8333     {
8334       struct so_list *iter;
8335
8336       for (ix = 0;
8337            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8338                         ix, iter);
8339            ++ix)
8340         {
8341           if (!self->regex
8342               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
8343             return;
8344         }
8345     }
8346   else
8347     {
8348       char *iter;
8349
8350       for (ix = 0;
8351            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8352                         ix, iter);
8353            ++ix)
8354         {
8355           if (!self->regex
8356               || self->compiled->exec (iter, 0, NULL, 0) == 0)
8357             return;
8358         }
8359     }
8360
8361   bs->stop = 0;
8362   bs->print_it = print_it_noop;
8363 }
8364
8365 static enum print_stop_action
8366 print_it_catch_solib (bpstat bs)
8367 {
8368   struct breakpoint *b = bs->breakpoint_at;
8369   struct ui_out *uiout = current_uiout;
8370
8371   annotate_catchpoint (b->number);
8372   maybe_print_thread_hit_breakpoint (uiout);
8373   if (b->disposition == disp_del)
8374     uiout->text ("Temporary catchpoint ");
8375   else
8376     uiout->text ("Catchpoint ");
8377   uiout->field_int ("bkptno", b->number);
8378   uiout->text ("\n");
8379   if (uiout->is_mi_like_p ())
8380     uiout->field_string ("disp", bpdisp_text (b->disposition));
8381   print_solib_event (1);
8382   return PRINT_SRC_AND_LOC;
8383 }
8384
8385 static void
8386 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8387 {
8388   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8389   struct value_print_options opts;
8390   struct ui_out *uiout = current_uiout;
8391   char *msg;
8392
8393   get_user_print_options (&opts);
8394   /* Field 4, the address, is omitted (which makes the columns not
8395      line up too nicely with the headers, but the effect is relatively
8396      readable).  */
8397   if (opts.addressprint)
8398     {
8399       annotate_field (4);
8400       uiout->field_skip ("addr");
8401     }
8402
8403   annotate_field (5);
8404   if (self->is_load)
8405     {
8406       if (self->regex)
8407         msg = xstrprintf (_("load of library matching %s"), self->regex);
8408       else
8409         msg = xstrdup (_("load of library"));
8410     }
8411   else
8412     {
8413       if (self->regex)
8414         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8415       else
8416         msg = xstrdup (_("unload of library"));
8417     }
8418   uiout->field_string ("what", msg);
8419   xfree (msg);
8420
8421   if (uiout->is_mi_like_p ())
8422     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8423 }
8424
8425 static void
8426 print_mention_catch_solib (struct breakpoint *b)
8427 {
8428   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8429
8430   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8431                    self->is_load ? "load" : "unload");
8432 }
8433
8434 static void
8435 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8436 {
8437   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8438
8439   fprintf_unfiltered (fp, "%s %s",
8440                       b->disposition == disp_del ? "tcatch" : "catch",
8441                       self->is_load ? "load" : "unload");
8442   if (self->regex)
8443     fprintf_unfiltered (fp, " %s", self->regex);
8444   fprintf_unfiltered (fp, "\n");
8445 }
8446
8447 static struct breakpoint_ops catch_solib_breakpoint_ops;
8448
8449 /* Shared helper function (MI and CLI) for creating and installing
8450    a shared object event catchpoint.  If IS_LOAD is non-zero then
8451    the events to be caught are load events, otherwise they are
8452    unload events.  If IS_TEMP is non-zero the catchpoint is a
8453    temporary one.  If ENABLED is non-zero the catchpoint is
8454    created in an enabled state.  */
8455
8456 void
8457 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8458 {
8459   struct gdbarch *gdbarch = get_current_arch ();
8460
8461   if (!arg)
8462     arg = "";
8463   arg = skip_spaces (arg);
8464
8465   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8466
8467   if (*arg != '\0')
8468     {
8469       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8470                                              _("Invalid regexp")));
8471       c->regex = xstrdup (arg);
8472     }
8473
8474   c->is_load = is_load;
8475   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8476                    &catch_solib_breakpoint_ops);
8477
8478   c->enable_state = enabled ? bp_enabled : bp_disabled;
8479
8480   install_breakpoint (0, std::move (c), 1);
8481 }
8482
8483 /* A helper function that does all the work for "catch load" and
8484    "catch unload".  */
8485
8486 static void
8487 catch_load_or_unload (char *arg, int from_tty, int is_load,
8488                       struct cmd_list_element *command)
8489 {
8490   int tempflag;
8491   const int enabled = 1;
8492
8493   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8494
8495   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8496 }
8497
8498 static void
8499 catch_load_command_1 (char *arg, int from_tty,
8500                       struct cmd_list_element *command)
8501 {
8502   catch_load_or_unload (arg, from_tty, 1, command);
8503 }
8504
8505 static void
8506 catch_unload_command_1 (char *arg, int from_tty,
8507                         struct cmd_list_element *command)
8508 {
8509   catch_load_or_unload (arg, from_tty, 0, command);
8510 }
8511
8512 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8513    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8514    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8515    the breakpoint_ops structure associated to the catchpoint.  */
8516
8517 void
8518 init_catchpoint (struct breakpoint *b,
8519                  struct gdbarch *gdbarch, int tempflag,
8520                  const char *cond_string,
8521                  const struct breakpoint_ops *ops)
8522 {
8523   symtab_and_line sal;
8524   sal.pspace = current_program_space;
8525
8526   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8527
8528   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8529   b->disposition = tempflag ? disp_del : disp_donttouch;
8530 }
8531
8532 void
8533 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8534 {
8535   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8536   set_breakpoint_number (internal, b);
8537   if (is_tracepoint (b))
8538     set_tracepoint_count (breakpoint_count);
8539   if (!internal)
8540     mention (b);
8541   observer_notify_breakpoint_created (b);
8542
8543   if (update_gll)
8544     update_global_location_list (UGLL_MAY_INSERT);
8545 }
8546
8547 static void
8548 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8549                                     int tempflag, const char *cond_string,
8550                                     const struct breakpoint_ops *ops)
8551 {
8552   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8553
8554   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8555
8556   c->forked_inferior_pid = null_ptid;
8557
8558   install_breakpoint (0, std::move (c), 1);
8559 }
8560
8561 /* Exec catchpoints.  */
8562
8563 /* An instance of this type is used to represent an exec catchpoint.
8564    A breakpoint is really of this type iff its ops pointer points to
8565    CATCH_EXEC_BREAKPOINT_OPS.  */
8566
8567 struct exec_catchpoint : public breakpoint
8568 {
8569   ~exec_catchpoint () override;
8570
8571   /* Filename of a program whose exec triggered this catchpoint.
8572      This field is only valid immediately after this catchpoint has
8573      triggered.  */
8574   char *exec_pathname;
8575 };
8576
8577 /* Exec catchpoint destructor.  */
8578
8579 exec_catchpoint::~exec_catchpoint ()
8580 {
8581   xfree (this->exec_pathname);
8582 }
8583
8584 static int
8585 insert_catch_exec (struct bp_location *bl)
8586 {
8587   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8588 }
8589
8590 static int
8591 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8592 {
8593   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8594 }
8595
8596 static int
8597 breakpoint_hit_catch_exec (const struct bp_location *bl,
8598                            struct address_space *aspace, CORE_ADDR bp_addr,
8599                            const struct target_waitstatus *ws)
8600 {
8601   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8602
8603   if (ws->kind != TARGET_WAITKIND_EXECD)
8604     return 0;
8605
8606   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8607   return 1;
8608 }
8609
8610 static enum print_stop_action
8611 print_it_catch_exec (bpstat bs)
8612 {
8613   struct ui_out *uiout = current_uiout;
8614   struct breakpoint *b = bs->breakpoint_at;
8615   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8616
8617   annotate_catchpoint (b->number);
8618   maybe_print_thread_hit_breakpoint (uiout);
8619   if (b->disposition == disp_del)
8620     uiout->text ("Temporary catchpoint ");
8621   else
8622     uiout->text ("Catchpoint ");
8623   if (uiout->is_mi_like_p ())
8624     {
8625       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8626       uiout->field_string ("disp", bpdisp_text (b->disposition));
8627     }
8628   uiout->field_int ("bkptno", b->number);
8629   uiout->text (" (exec'd ");
8630   uiout->field_string ("new-exec", c->exec_pathname);
8631   uiout->text ("), ");
8632
8633   return PRINT_SRC_AND_LOC;
8634 }
8635
8636 static void
8637 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8638 {
8639   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8640   struct value_print_options opts;
8641   struct ui_out *uiout = current_uiout;
8642
8643   get_user_print_options (&opts);
8644
8645   /* Field 4, the address, is omitted (which makes the columns
8646      not line up too nicely with the headers, but the effect
8647      is relatively readable).  */
8648   if (opts.addressprint)
8649     uiout->field_skip ("addr");
8650   annotate_field (5);
8651   uiout->text ("exec");
8652   if (c->exec_pathname != NULL)
8653     {
8654       uiout->text (", program \"");
8655       uiout->field_string ("what", c->exec_pathname);
8656       uiout->text ("\" ");
8657     }
8658
8659   if (uiout->is_mi_like_p ())
8660     uiout->field_string ("catch-type", "exec");
8661 }
8662
8663 static void
8664 print_mention_catch_exec (struct breakpoint *b)
8665 {
8666   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8667 }
8668
8669 /* Implement the "print_recreate" breakpoint_ops method for exec
8670    catchpoints.  */
8671
8672 static void
8673 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8674 {
8675   fprintf_unfiltered (fp, "catch exec");
8676   print_recreate_thread (b, fp);
8677 }
8678
8679 static struct breakpoint_ops catch_exec_breakpoint_ops;
8680
8681 static int
8682 hw_breakpoint_used_count (void)
8683 {
8684   int i = 0;
8685   struct breakpoint *b;
8686   struct bp_location *bl;
8687
8688   ALL_BREAKPOINTS (b)
8689   {
8690     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8691       for (bl = b->loc; bl; bl = bl->next)
8692         {
8693           /* Special types of hardware breakpoints may use more than
8694              one register.  */
8695           i += b->ops->resources_needed (bl);
8696         }
8697   }
8698
8699   return i;
8700 }
8701
8702 /* Returns the resources B would use if it were a hardware
8703    watchpoint.  */
8704
8705 static int
8706 hw_watchpoint_use_count (struct breakpoint *b)
8707 {
8708   int i = 0;
8709   struct bp_location *bl;
8710
8711   if (!breakpoint_enabled (b))
8712     return 0;
8713
8714   for (bl = b->loc; bl; bl = bl->next)
8715     {
8716       /* Special types of hardware watchpoints may use more than
8717          one register.  */
8718       i += b->ops->resources_needed (bl);
8719     }
8720
8721   return i;
8722 }
8723
8724 /* Returns the sum the used resources of all hardware watchpoints of
8725    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8726    the sum of the used resources of all hardware watchpoints of other
8727    types _not_ TYPE.  */
8728
8729 static int
8730 hw_watchpoint_used_count_others (struct breakpoint *except,
8731                                  enum bptype type, int *other_type_used)
8732 {
8733   int i = 0;
8734   struct breakpoint *b;
8735
8736   *other_type_used = 0;
8737   ALL_BREAKPOINTS (b)
8738     {
8739       if (b == except)
8740         continue;
8741       if (!breakpoint_enabled (b))
8742         continue;
8743
8744       if (b->type == type)
8745         i += hw_watchpoint_use_count (b);
8746       else if (is_hardware_watchpoint (b))
8747         *other_type_used = 1;
8748     }
8749
8750   return i;
8751 }
8752
8753 void
8754 disable_watchpoints_before_interactive_call_start (void)
8755 {
8756   struct breakpoint *b;
8757
8758   ALL_BREAKPOINTS (b)
8759   {
8760     if (is_watchpoint (b) && breakpoint_enabled (b))
8761       {
8762         b->enable_state = bp_call_disabled;
8763         update_global_location_list (UGLL_DONT_INSERT);
8764       }
8765   }
8766 }
8767
8768 void
8769 enable_watchpoints_after_interactive_call_stop (void)
8770 {
8771   struct breakpoint *b;
8772
8773   ALL_BREAKPOINTS (b)
8774   {
8775     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8776       {
8777         b->enable_state = bp_enabled;
8778         update_global_location_list (UGLL_MAY_INSERT);
8779       }
8780   }
8781 }
8782
8783 void
8784 disable_breakpoints_before_startup (void)
8785 {
8786   current_program_space->executing_startup = 1;
8787   update_global_location_list (UGLL_DONT_INSERT);
8788 }
8789
8790 void
8791 enable_breakpoints_after_startup (void)
8792 {
8793   current_program_space->executing_startup = 0;
8794   breakpoint_re_set ();
8795 }
8796
8797 /* Create a new single-step breakpoint for thread THREAD, with no
8798    locations.  */
8799
8800 static struct breakpoint *
8801 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8802 {
8803   std::unique_ptr<breakpoint> b (new breakpoint ());
8804
8805   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8806                                         &momentary_breakpoint_ops);
8807
8808   b->disposition = disp_donttouch;
8809   b->frame_id = null_frame_id;
8810
8811   b->thread = thread;
8812   gdb_assert (b->thread != 0);
8813
8814   return add_to_breakpoint_chain (std::move (b));
8815 }
8816
8817 /* Set a momentary breakpoint of type TYPE at address specified by
8818    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8819    frame.  */
8820
8821 struct breakpoint *
8822 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8823                           struct frame_id frame_id, enum bptype type)
8824 {
8825   struct breakpoint *b;
8826
8827   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8828      tail-called one.  */
8829   gdb_assert (!frame_id_artificial_p (frame_id));
8830
8831   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8832   b->enable_state = bp_enabled;
8833   b->disposition = disp_donttouch;
8834   b->frame_id = frame_id;
8835
8836   /* If we're debugging a multi-threaded program, then we want
8837      momentary breakpoints to be active in only a single thread of
8838      control.  */
8839   if (in_thread_list (inferior_ptid))
8840     b->thread = ptid_to_global_thread_id (inferior_ptid);
8841
8842   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8843
8844   return b;
8845 }
8846
8847 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8848    The new breakpoint will have type TYPE, use OPS as its
8849    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8850
8851 static struct breakpoint *
8852 momentary_breakpoint_from_master (struct breakpoint *orig,
8853                                   enum bptype type,
8854                                   const struct breakpoint_ops *ops,
8855                                   int loc_enabled)
8856 {
8857   struct breakpoint *copy;
8858
8859   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8860   copy->loc = allocate_bp_location (copy);
8861   set_breakpoint_location_function (copy->loc, 1);
8862
8863   copy->loc->gdbarch = orig->loc->gdbarch;
8864   copy->loc->requested_address = orig->loc->requested_address;
8865   copy->loc->address = orig->loc->address;
8866   copy->loc->section = orig->loc->section;
8867   copy->loc->pspace = orig->loc->pspace;
8868   copy->loc->probe = orig->loc->probe;
8869   copy->loc->line_number = orig->loc->line_number;
8870   copy->loc->symtab = orig->loc->symtab;
8871   copy->loc->enabled = loc_enabled;
8872   copy->frame_id = orig->frame_id;
8873   copy->thread = orig->thread;
8874   copy->pspace = orig->pspace;
8875
8876   copy->enable_state = bp_enabled;
8877   copy->disposition = disp_donttouch;
8878   copy->number = internal_breakpoint_number--;
8879
8880   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8881   return copy;
8882 }
8883
8884 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8885    ORIG is NULL.  */
8886
8887 struct breakpoint *
8888 clone_momentary_breakpoint (struct breakpoint *orig)
8889 {
8890   /* If there's nothing to clone, then return nothing.  */
8891   if (orig == NULL)
8892     return NULL;
8893
8894   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8895 }
8896
8897 struct breakpoint *
8898 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8899                                 enum bptype type)
8900 {
8901   struct symtab_and_line sal;
8902
8903   sal = find_pc_line (pc, 0);
8904   sal.pc = pc;
8905   sal.section = find_pc_overlay (pc);
8906   sal.explicit_pc = 1;
8907
8908   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8909 }
8910 \f
8911
8912 /* Tell the user we have just set a breakpoint B.  */
8913
8914 static void
8915 mention (struct breakpoint *b)
8916 {
8917   b->ops->print_mention (b);
8918   if (current_uiout->is_mi_like_p ())
8919     return;
8920   printf_filtered ("\n");
8921 }
8922 \f
8923
8924 static int bp_loc_is_permanent (struct bp_location *loc);
8925
8926 static struct bp_location *
8927 add_location_to_breakpoint (struct breakpoint *b,
8928                             const struct symtab_and_line *sal)
8929 {
8930   struct bp_location *loc, **tmp;
8931   CORE_ADDR adjusted_address;
8932   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8933
8934   if (loc_gdbarch == NULL)
8935     loc_gdbarch = b->gdbarch;
8936
8937   /* Adjust the breakpoint's address prior to allocating a location.
8938      Once we call allocate_bp_location(), that mostly uninitialized
8939      location will be placed on the location chain.  Adjustment of the
8940      breakpoint may cause target_read_memory() to be called and we do
8941      not want its scan of the location chain to find a breakpoint and
8942      location that's only been partially initialized.  */
8943   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8944                                                 sal->pc, b->type);
8945
8946   /* Sort the locations by their ADDRESS.  */
8947   loc = allocate_bp_location (b);
8948   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8949        tmp = &((*tmp)->next))
8950     ;
8951   loc->next = *tmp;
8952   *tmp = loc;
8953
8954   loc->requested_address = sal->pc;
8955   loc->address = adjusted_address;
8956   loc->pspace = sal->pspace;
8957   loc->probe.probe = sal->probe;
8958   loc->probe.objfile = sal->objfile;
8959   gdb_assert (loc->pspace != NULL);
8960   loc->section = sal->section;
8961   loc->gdbarch = loc_gdbarch;
8962   loc->line_number = sal->line;
8963   loc->symtab = sal->symtab;
8964
8965   set_breakpoint_location_function (loc,
8966                                     sal->explicit_pc || sal->explicit_line);
8967
8968   /* While by definition, permanent breakpoints are already present in the
8969      code, we don't mark the location as inserted.  Normally one would expect
8970      that GDB could rely on that breakpoint instruction to stop the program,
8971      thus removing the need to insert its own breakpoint, except that executing
8972      the breakpoint instruction can kill the target instead of reporting a
8973      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8974      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8975      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8976      breakpoint be inserted normally results in QEMU knowing about the GDB
8977      breakpoint, and thus trap before the breakpoint instruction is executed.
8978      (If GDB later needs to continue execution past the permanent breakpoint,
8979      it manually increments the PC, thus avoiding executing the breakpoint
8980      instruction.)  */
8981   if (bp_loc_is_permanent (loc))
8982     loc->permanent = 1;
8983
8984   return loc;
8985 }
8986 \f
8987
8988 /* See breakpoint.h.  */
8989
8990 int
8991 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8992 {
8993   int len;
8994   CORE_ADDR addr;
8995   const gdb_byte *bpoint;
8996   gdb_byte *target_mem;
8997   struct cleanup *cleanup;
8998   int retval = 0;
8999
9000   addr = address;
9001   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9002
9003   /* Software breakpoints unsupported?  */
9004   if (bpoint == NULL)
9005     return 0;
9006
9007   target_mem = (gdb_byte *) alloca (len);
9008
9009   /* Enable the automatic memory restoration from breakpoints while
9010      we read the memory.  Otherwise we could say about our temporary
9011      breakpoints they are permanent.  */
9012   cleanup = make_show_memory_breakpoints_cleanup (0);
9013
9014   if (target_read_memory (address, target_mem, len) == 0
9015       && memcmp (target_mem, bpoint, len) == 0)
9016     retval = 1;
9017
9018   do_cleanups (cleanup);
9019
9020   return retval;
9021 }
9022
9023 /* Return 1 if LOC is pointing to a permanent breakpoint,
9024    return 0 otherwise.  */
9025
9026 static int
9027 bp_loc_is_permanent (struct bp_location *loc)
9028 {
9029   gdb_assert (loc != NULL);
9030
9031   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
9032      attempt to read from the addresses the locations of these breakpoint types
9033      point to.  program_breakpoint_here_p, below, will attempt to read
9034      memory.  */
9035   if (!breakpoint_address_is_meaningful (loc->owner))
9036     return 0;
9037
9038   scoped_restore_current_pspace_and_thread restore_pspace_thread;
9039   switch_to_program_space_and_thread (loc->pspace);
9040   return program_breakpoint_here_p (loc->gdbarch, loc->address);
9041 }
9042
9043 /* Build a command list for the dprintf corresponding to the current
9044    settings of the dprintf style options.  */
9045
9046 static void
9047 update_dprintf_command_list (struct breakpoint *b)
9048 {
9049   char *dprintf_args = b->extra_string;
9050   char *printf_line = NULL;
9051
9052   if (!dprintf_args)
9053     return;
9054
9055   dprintf_args = skip_spaces (dprintf_args);
9056
9057   /* Allow a comma, as it may have terminated a location, but don't
9058      insist on it.  */
9059   if (*dprintf_args == ',')
9060     ++dprintf_args;
9061   dprintf_args = skip_spaces (dprintf_args);
9062
9063   if (*dprintf_args != '"')
9064     error (_("Bad format string, missing '\"'."));
9065
9066   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9067     printf_line = xstrprintf ("printf %s", dprintf_args);
9068   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9069     {
9070       if (!dprintf_function)
9071         error (_("No function supplied for dprintf call"));
9072
9073       if (dprintf_channel && strlen (dprintf_channel) > 0)
9074         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9075                                   dprintf_function,
9076                                   dprintf_channel,
9077                                   dprintf_args);
9078       else
9079         printf_line = xstrprintf ("call (void) %s (%s)",
9080                                   dprintf_function,
9081                                   dprintf_args);
9082     }
9083   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9084     {
9085       if (target_can_run_breakpoint_commands ())
9086         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9087       else
9088         {
9089           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9090           printf_line = xstrprintf ("printf %s", dprintf_args);
9091         }
9092     }
9093   else
9094     internal_error (__FILE__, __LINE__,
9095                     _("Invalid dprintf style."));
9096
9097   gdb_assert (printf_line != NULL);
9098   /* Manufacture a printf sequence.  */
9099   {
9100     struct command_line *printf_cmd_line = XNEW (struct command_line);
9101
9102     printf_cmd_line->control_type = simple_control;
9103     printf_cmd_line->body_count = 0;
9104     printf_cmd_line->body_list = NULL;
9105     printf_cmd_line->next = NULL;
9106     printf_cmd_line->line = printf_line;
9107
9108     breakpoint_set_commands (b, command_line_up (printf_cmd_line));
9109   }
9110 }
9111
9112 /* Update all dprintf commands, making their command lists reflect
9113    current style settings.  */
9114
9115 static void
9116 update_dprintf_commands (char *args, int from_tty,
9117                          struct cmd_list_element *c)
9118 {
9119   struct breakpoint *b;
9120
9121   ALL_BREAKPOINTS (b)
9122     {
9123       if (b->type == bp_dprintf)
9124         update_dprintf_command_list (b);
9125     }
9126 }
9127
9128 /* Create a breakpoint with SAL as location.  Use LOCATION
9129    as a description of the location, and COND_STRING
9130    as condition expression.  If LOCATION is NULL then create an
9131    "address location" from the address in the SAL.  */
9132
9133 static void
9134 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9135                      gdb::array_view<const symtab_and_line> sals,
9136                      event_location_up &&location,
9137                      gdb::unique_xmalloc_ptr<char> filter,
9138                      gdb::unique_xmalloc_ptr<char> cond_string,
9139                      gdb::unique_xmalloc_ptr<char> extra_string,
9140                      enum bptype type, enum bpdisp disposition,
9141                      int thread, int task, int ignore_count,
9142                      const struct breakpoint_ops *ops, int from_tty,
9143                      int enabled, int internal, unsigned flags,
9144                      int display_canonical)
9145 {
9146   int i;
9147
9148   if (type == bp_hardware_breakpoint)
9149     {
9150       int target_resources_ok;
9151
9152       i = hw_breakpoint_used_count ();
9153       target_resources_ok =
9154         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9155                                             i + 1, 0);
9156       if (target_resources_ok == 0)
9157         error (_("No hardware breakpoint support in the target."));
9158       else if (target_resources_ok < 0)
9159         error (_("Hardware breakpoints used exceeds limit."));
9160     }
9161
9162   gdb_assert (!sals.empty ());
9163
9164   for (const auto &sal : sals)
9165     {
9166       struct bp_location *loc;
9167
9168       if (from_tty)
9169         {
9170           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9171           if (!loc_gdbarch)
9172             loc_gdbarch = gdbarch;
9173
9174           describe_other_breakpoints (loc_gdbarch,
9175                                       sal.pspace, sal.pc, sal.section, thread);
9176         }
9177
9178       if (&sal == &sals[0])
9179         {
9180           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9181           b->thread = thread;
9182           b->task = task;
9183
9184           b->cond_string = cond_string.release ();
9185           b->extra_string = extra_string.release ();
9186           b->ignore_count = ignore_count;
9187           b->enable_state = enabled ? bp_enabled : bp_disabled;
9188           b->disposition = disposition;
9189
9190           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9191             b->loc->inserted = 1;
9192
9193           if (type == bp_static_tracepoint)
9194             {
9195               struct tracepoint *t = (struct tracepoint *) b;
9196               struct static_tracepoint_marker marker;
9197
9198               if (strace_marker_p (b))
9199                 {
9200                   /* We already know the marker exists, otherwise, we
9201                      wouldn't see a sal for it.  */
9202                   const char *p
9203                     = &event_location_to_string (b->location.get ())[3];
9204                   const char *endp;
9205                   char *marker_str;
9206
9207                   p = skip_spaces (p);
9208
9209                   endp = skip_to_space (p);
9210
9211                   marker_str = savestring (p, endp - p);
9212                   t->static_trace_marker_id = marker_str;
9213
9214                   printf_filtered (_("Probed static tracepoint "
9215                                      "marker \"%s\"\n"),
9216                                    t->static_trace_marker_id);
9217                 }
9218               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9219                 {
9220                   t->static_trace_marker_id = xstrdup (marker.str_id);
9221                   release_static_tracepoint_marker (&marker);
9222
9223                   printf_filtered (_("Probed static tracepoint "
9224                                      "marker \"%s\"\n"),
9225                                    t->static_trace_marker_id);
9226                 }
9227               else
9228                 warning (_("Couldn't determine the static "
9229                            "tracepoint marker to probe"));
9230             }
9231
9232           loc = b->loc;
9233         }
9234       else
9235         {
9236           loc = add_location_to_breakpoint (b, &sal);
9237           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9238             loc->inserted = 1;
9239         }
9240
9241       if (b->cond_string)
9242         {
9243           const char *arg = b->cond_string;
9244
9245           loc->cond = parse_exp_1 (&arg, loc->address,
9246                                    block_for_pc (loc->address), 0);
9247           if (*arg)
9248               error (_("Garbage '%s' follows condition"), arg);
9249         }
9250
9251       /* Dynamic printf requires and uses additional arguments on the
9252          command line, otherwise it's an error.  */
9253       if (type == bp_dprintf)
9254         {
9255           if (b->extra_string)
9256             update_dprintf_command_list (b);
9257           else
9258             error (_("Format string required"));
9259         }
9260       else if (b->extra_string)
9261         error (_("Garbage '%s' at end of command"), b->extra_string);
9262     }
9263
9264   b->display_canonical = display_canonical;
9265   if (location != NULL)
9266     b->location = std::move (location);
9267   else
9268     b->location = new_address_location (b->loc->address, NULL, 0);
9269   b->filter = filter.release ();
9270 }
9271
9272 static void
9273 create_breakpoint_sal (struct gdbarch *gdbarch,
9274                        gdb::array_view<const symtab_and_line> sals,
9275                        event_location_up &&location,
9276                        gdb::unique_xmalloc_ptr<char> filter,
9277                        gdb::unique_xmalloc_ptr<char> cond_string,
9278                        gdb::unique_xmalloc_ptr<char> extra_string,
9279                        enum bptype type, enum bpdisp disposition,
9280                        int thread, int task, int ignore_count,
9281                        const struct breakpoint_ops *ops, int from_tty,
9282                        int enabled, int internal, unsigned flags,
9283                        int display_canonical)
9284 {
9285   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
9286
9287   init_breakpoint_sal (b.get (), gdbarch,
9288                        sals, std::move (location),
9289                        std::move (filter),
9290                        std::move (cond_string),
9291                        std::move (extra_string),
9292                        type, disposition,
9293                        thread, task, ignore_count,
9294                        ops, from_tty,
9295                        enabled, internal, flags,
9296                        display_canonical);
9297
9298   install_breakpoint (internal, std::move (b), 0);
9299 }
9300
9301 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9302    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9303    value.  COND_STRING, if not NULL, specified the condition to be
9304    used for all breakpoints.  Essentially the only case where
9305    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9306    function.  In that case, it's still not possible to specify
9307    separate conditions for different overloaded functions, so
9308    we take just a single condition string.
9309    
9310    NOTE: If the function succeeds, the caller is expected to cleanup
9311    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9312    array contents).  If the function fails (error() is called), the
9313    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9314    COND and SALS arrays and each of those arrays contents.  */
9315
9316 static void
9317 create_breakpoints_sal (struct gdbarch *gdbarch,
9318                         struct linespec_result *canonical,
9319                         gdb::unique_xmalloc_ptr<char> cond_string,
9320                         gdb::unique_xmalloc_ptr<char> extra_string,
9321                         enum bptype type, enum bpdisp disposition,
9322                         int thread, int task, int ignore_count,
9323                         const struct breakpoint_ops *ops, int from_tty,
9324                         int enabled, int internal, unsigned flags)
9325 {
9326   if (canonical->pre_expanded)
9327     gdb_assert (canonical->lsals.size () == 1);
9328
9329   for (const auto &lsal : canonical->lsals)
9330     {
9331       /* Note that 'location' can be NULL in the case of a plain
9332          'break', without arguments.  */
9333       event_location_up location
9334         = (canonical->location != NULL
9335            ? copy_event_location (canonical->location.get ()) : NULL);
9336       gdb::unique_xmalloc_ptr<char> filter_string
9337         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
9338
9339       create_breakpoint_sal (gdbarch, lsal.sals,
9340                              std::move (location),
9341                              std::move (filter_string),
9342                              std::move (cond_string),
9343                              std::move (extra_string),
9344                              type, disposition,
9345                              thread, task, ignore_count, ops,
9346                              from_tty, enabled, internal, flags,
9347                              canonical->special_display);
9348     }
9349 }
9350
9351 /* Parse LOCATION which is assumed to be a SAL specification possibly
9352    followed by conditionals.  On return, SALS contains an array of SAL
9353    addresses found.  LOCATION points to the end of the SAL (for
9354    linespec locations).
9355
9356    The array and the line spec strings are allocated on the heap, it is
9357    the caller's responsibility to free them.  */
9358
9359 static void
9360 parse_breakpoint_sals (const struct event_location *location,
9361                        struct linespec_result *canonical)
9362 {
9363   struct symtab_and_line cursal;
9364
9365   if (event_location_type (location) == LINESPEC_LOCATION)
9366     {
9367       const char *address = get_linespec_location (location);
9368
9369       if (address == NULL)
9370         {
9371           /* The last displayed codepoint, if it's valid, is our default
9372              breakpoint address.  */
9373           if (last_displayed_sal_is_valid ())
9374             {
9375               /* Set sal's pspace, pc, symtab, and line to the values
9376                  corresponding to the last call to print_frame_info.
9377                  Be sure to reinitialize LINE with NOTCURRENT == 0
9378                  as the breakpoint line number is inappropriate otherwise.
9379                  find_pc_line would adjust PC, re-set it back.  */
9380               symtab_and_line sal = get_last_displayed_sal ();
9381               CORE_ADDR pc = sal.pc;
9382
9383               sal = find_pc_line (pc, 0);
9384
9385               /* "break" without arguments is equivalent to "break *PC"
9386                  where PC is the last displayed codepoint's address.  So
9387                  make sure to set sal.explicit_pc to prevent GDB from
9388                  trying to expand the list of sals to include all other
9389                  instances with the same symtab and line.  */
9390               sal.pc = pc;
9391               sal.explicit_pc = 1;
9392
9393               struct linespec_sals lsal;
9394               lsal.sals = {sal};
9395               lsal.canonical = NULL;
9396
9397               canonical->lsals.push_back (std::move (lsal));
9398               return;
9399             }
9400           else
9401             error (_("No default breakpoint address now."));
9402         }
9403     }
9404
9405   /* Force almost all breakpoints to be in terms of the
9406      current_source_symtab (which is decode_line_1's default).
9407      This should produce the results we want almost all of the
9408      time while leaving default_breakpoint_* alone.
9409
9410      ObjC: However, don't match an Objective-C method name which
9411      may have a '+' or '-' succeeded by a '['.  */
9412   cursal = get_current_source_symtab_and_line ();
9413   if (last_displayed_sal_is_valid ())
9414     {
9415       const char *address = NULL;
9416
9417       if (event_location_type (location) == LINESPEC_LOCATION)
9418         address = get_linespec_location (location);
9419
9420       if (!cursal.symtab
9421           || (address != NULL
9422               && strchr ("+-", address[0]) != NULL
9423               && address[1] != '['))
9424         {
9425           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9426                             get_last_displayed_symtab (),
9427                             get_last_displayed_line (),
9428                             canonical, NULL, NULL);
9429           return;
9430         }
9431     }
9432
9433   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9434                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9435 }
9436
9437
9438 /* Convert each SAL into a real PC.  Verify that the PC can be
9439    inserted as a breakpoint.  If it can't throw an error.  */
9440
9441 static void
9442 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9443 {    
9444   for (auto &sal : sals)
9445     resolve_sal_pc (&sal);
9446 }
9447
9448 /* Fast tracepoints may have restrictions on valid locations.  For
9449    instance, a fast tracepoint using a jump instead of a trap will
9450    likely have to overwrite more bytes than a trap would, and so can
9451    only be placed where the instruction is longer than the jump, or a
9452    multi-instruction sequence does not have a jump into the middle of
9453    it, etc.  */
9454
9455 static void
9456 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9457                             gdb::array_view<const symtab_and_line> sals)
9458 {
9459   int rslt;
9460   char *msg;
9461   struct cleanup *old_chain;
9462
9463   for (const auto &sal : sals)
9464     {
9465       struct gdbarch *sarch;
9466
9467       sarch = get_sal_arch (sal);
9468       /* We fall back to GDBARCH if there is no architecture
9469          associated with SAL.  */
9470       if (sarch == NULL)
9471         sarch = gdbarch;
9472       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg);
9473       old_chain = make_cleanup (xfree, msg);
9474
9475       if (!rslt)
9476         error (_("May not have a fast tracepoint at %s%s"),
9477                paddress (sarch, sal.pc), (msg ? msg : ""));
9478
9479       do_cleanups (old_chain);
9480     }
9481 }
9482
9483 /* Given TOK, a string specification of condition and thread, as
9484    accepted by the 'break' command, extract the condition
9485    string and thread number and set *COND_STRING and *THREAD.
9486    PC identifies the context at which the condition should be parsed.
9487    If no condition is found, *COND_STRING is set to NULL.
9488    If no thread is found, *THREAD is set to -1.  */
9489
9490 static void
9491 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9492                            char **cond_string, int *thread, int *task,
9493                            char **rest)
9494 {
9495   *cond_string = NULL;
9496   *thread = -1;
9497   *task = 0;
9498   *rest = NULL;
9499
9500   while (tok && *tok)
9501     {
9502       const char *end_tok;
9503       int toklen;
9504       const char *cond_start = NULL;
9505       const char *cond_end = NULL;
9506
9507       tok = skip_spaces (tok);
9508
9509       if ((*tok == '"' || *tok == ',') && rest)
9510         {
9511           *rest = savestring (tok, strlen (tok));
9512           return;
9513         }
9514
9515       end_tok = skip_to_space (tok);
9516
9517       toklen = end_tok - tok;
9518
9519       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9520         {
9521           tok = cond_start = end_tok + 1;
9522           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9523           cond_end = tok;
9524           *cond_string = savestring (cond_start, cond_end - cond_start);
9525         }
9526       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9527         {
9528           const char *tmptok;
9529           struct thread_info *thr;
9530
9531           tok = end_tok + 1;
9532           thr = parse_thread_id (tok, &tmptok);
9533           if (tok == tmptok)
9534             error (_("Junk after thread keyword."));
9535           *thread = thr->global_num;
9536           tok = tmptok;
9537         }
9538       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9539         {
9540           char *tmptok;
9541
9542           tok = end_tok + 1;
9543           *task = strtol (tok, &tmptok, 0);
9544           if (tok == tmptok)
9545             error (_("Junk after task keyword."));
9546           if (!valid_task_id (*task))
9547             error (_("Unknown task %d."), *task);
9548           tok = tmptok;
9549         }
9550       else if (rest)
9551         {
9552           *rest = savestring (tok, strlen (tok));
9553           return;
9554         }
9555       else
9556         error (_("Junk at end of arguments."));
9557     }
9558 }
9559
9560 /* Decode a static tracepoint marker spec.  */
9561
9562 static std::vector<symtab_and_line>
9563 decode_static_tracepoint_spec (const char **arg_p)
9564 {
9565   VEC(static_tracepoint_marker_p) *markers = NULL;
9566   struct cleanup *old_chain;
9567   const char *p = &(*arg_p)[3];
9568   const char *endp;
9569   char *marker_str;
9570   int i;
9571
9572   p = skip_spaces (p);
9573
9574   endp = skip_to_space (p);
9575
9576   marker_str = savestring (p, endp - p);
9577   old_chain = make_cleanup (xfree, marker_str);
9578
9579   markers = target_static_tracepoint_markers_by_strid (marker_str);
9580   if (VEC_empty(static_tracepoint_marker_p, markers))
9581     error (_("No known static tracepoint marker named %s"), marker_str);
9582
9583   std::vector<symtab_and_line> sals;
9584   sals.reserve (VEC_length(static_tracepoint_marker_p, markers));
9585
9586   for (i = 0; i < VEC_length(static_tracepoint_marker_p, markers); i++)
9587     {
9588       struct static_tracepoint_marker *marker;
9589
9590       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9591
9592       symtab_and_line sal = find_pc_line (marker->address, 0);
9593       sal.pc = marker->address;
9594       sals.push_back (sal);
9595
9596       release_static_tracepoint_marker (marker);
9597     }
9598
9599   do_cleanups (old_chain);
9600
9601   *arg_p = endp;
9602   return sals;
9603 }
9604
9605 /* See breakpoint.h.  */
9606
9607 int
9608 create_breakpoint (struct gdbarch *gdbarch,
9609                    const struct event_location *location,
9610                    const char *cond_string,
9611                    int thread, const char *extra_string,
9612                    int parse_extra,
9613                    int tempflag, enum bptype type_wanted,
9614                    int ignore_count,
9615                    enum auto_boolean pending_break_support,
9616                    const struct breakpoint_ops *ops,
9617                    int from_tty, int enabled, int internal,
9618                    unsigned flags)
9619 {
9620   struct linespec_result canonical;
9621   struct cleanup *bkpt_chain = NULL;
9622   int pending = 0;
9623   int task = 0;
9624   int prev_bkpt_count = breakpoint_count;
9625
9626   gdb_assert (ops != NULL);
9627
9628   /* If extra_string isn't useful, set it to NULL.  */
9629   if (extra_string != NULL && *extra_string == '\0')
9630     extra_string = NULL;
9631
9632   TRY
9633     {
9634       ops->create_sals_from_location (location, &canonical, type_wanted);
9635     }
9636   CATCH (e, RETURN_MASK_ERROR)
9637     {
9638       /* If caller is interested in rc value from parse, set
9639          value.  */
9640       if (e.error == NOT_FOUND_ERROR)
9641         {
9642           /* If pending breakpoint support is turned off, throw
9643              error.  */
9644
9645           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9646             throw_exception (e);
9647
9648           exception_print (gdb_stderr, e);
9649
9650           /* If pending breakpoint support is auto query and the user
9651              selects no, then simply return the error code.  */
9652           if (pending_break_support == AUTO_BOOLEAN_AUTO
9653               && !nquery (_("Make %s pending on future shared library load? "),
9654                           bptype_string (type_wanted)))
9655             return 0;
9656
9657           /* At this point, either the user was queried about setting
9658              a pending breakpoint and selected yes, or pending
9659              breakpoint behavior is on and thus a pending breakpoint
9660              is defaulted on behalf of the user.  */
9661           pending = 1;
9662         }
9663       else
9664         throw_exception (e);
9665     }
9666   END_CATCH
9667
9668   if (!pending && canonical.lsals.empty ())
9669     return 0;
9670
9671   /* ----------------------------- SNIP -----------------------------
9672      Anything added to the cleanup chain beyond this point is assumed
9673      to be part of a breakpoint.  If the breakpoint create succeeds
9674      then the memory is not reclaimed.  */
9675   bkpt_chain = make_cleanup (null_cleanup, 0);
9676
9677   /* Resolve all line numbers to PC's and verify that the addresses
9678      are ok for the target.  */
9679   if (!pending)
9680     {
9681       for (auto &lsal : canonical.lsals)
9682         breakpoint_sals_to_pc (lsal.sals);
9683     }
9684
9685   /* Fast tracepoints may have additional restrictions on location.  */
9686   if (!pending && type_wanted == bp_fast_tracepoint)
9687     {
9688       for (const auto &lsal : canonical.lsals)
9689         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9690     }
9691
9692   /* Verify that condition can be parsed, before setting any
9693      breakpoints.  Allocate a separate condition expression for each
9694      breakpoint.  */
9695   if (!pending)
9696     {
9697       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9698       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9699
9700       if (parse_extra)
9701         {
9702           char *rest;
9703           char *cond;
9704
9705           const linespec_sals &lsal = canonical.lsals[0];
9706
9707           /* Here we only parse 'arg' to separate condition
9708              from thread number, so parsing in context of first
9709              sal is OK.  When setting the breakpoint we'll
9710              re-parse it in context of each sal.  */
9711
9712           find_condition_and_thread (extra_string, lsal.sals[0].pc,
9713                                      &cond, &thread, &task, &rest);
9714           cond_string_copy.reset (cond);
9715           extra_string_copy.reset (rest);
9716         }
9717       else
9718         {
9719           if (type_wanted != bp_dprintf
9720               && extra_string != NULL && *extra_string != '\0')
9721                 error (_("Garbage '%s' at end of location"), extra_string);
9722
9723           /* Create a private copy of condition string.  */
9724           if (cond_string)
9725             cond_string_copy.reset (xstrdup (cond_string));
9726           /* Create a private copy of any extra string.  */
9727           if (extra_string)
9728             extra_string_copy.reset (xstrdup (extra_string));
9729         }
9730
9731       ops->create_breakpoints_sal (gdbarch, &canonical,
9732                                    std::move (cond_string_copy),
9733                                    std::move (extra_string_copy),
9734                                    type_wanted,
9735                                    tempflag ? disp_del : disp_donttouch,
9736                                    thread, task, ignore_count, ops,
9737                                    from_tty, enabled, internal, flags);
9738     }
9739   else
9740     {
9741       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9742
9743       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9744       b->location = copy_event_location (location);
9745
9746       if (parse_extra)
9747         b->cond_string = NULL;
9748       else
9749         {
9750           /* Create a private copy of condition string.  */
9751           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9752           b->thread = thread;
9753         }
9754
9755       /* Create a private copy of any extra string.  */
9756       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9757       b->ignore_count = ignore_count;
9758       b->disposition = tempflag ? disp_del : disp_donttouch;
9759       b->condition_not_parsed = 1;
9760       b->enable_state = enabled ? bp_enabled : bp_disabled;
9761       if ((type_wanted != bp_breakpoint
9762            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9763         b->pspace = current_program_space;
9764
9765       install_breakpoint (internal, std::move (b), 0);
9766     }
9767   
9768   if (canonical.lsals.size () > 1)
9769     {
9770       warning (_("Multiple breakpoints were set.\nUse the "
9771                  "\"delete\" command to delete unwanted breakpoints."));
9772       prev_breakpoint_count = prev_bkpt_count;
9773     }
9774
9775   /* That's it.  Discard the cleanups for data inserted into the
9776      breakpoint.  */
9777   discard_cleanups (bkpt_chain);
9778
9779   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9780   update_global_location_list (UGLL_MAY_INSERT);
9781
9782   return 1;
9783 }
9784
9785 /* Set a breakpoint.
9786    ARG is a string describing breakpoint address,
9787    condition, and thread.
9788    FLAG specifies if a breakpoint is hardware on,
9789    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9790    and BP_TEMPFLAG.  */
9791
9792 static void
9793 break_command_1 (char *arg, int flag, int from_tty)
9794 {
9795   int tempflag = flag & BP_TEMPFLAG;
9796   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9797                              ? bp_hardware_breakpoint
9798                              : bp_breakpoint);
9799   struct breakpoint_ops *ops;
9800
9801   event_location_up location = string_to_event_location (&arg, current_language);
9802
9803   /* Matching breakpoints on probes.  */
9804   if (location != NULL
9805       && event_location_type (location.get ()) == PROBE_LOCATION)
9806     ops = &bkpt_probe_breakpoint_ops;
9807   else
9808     ops = &bkpt_breakpoint_ops;
9809
9810   create_breakpoint (get_current_arch (),
9811                      location.get (),
9812                      NULL, 0, arg, 1 /* parse arg */,
9813                      tempflag, type_wanted,
9814                      0 /* Ignore count */,
9815                      pending_break_support,
9816                      ops,
9817                      from_tty,
9818                      1 /* enabled */,
9819                      0 /* internal */,
9820                      0);
9821 }
9822
9823 /* Helper function for break_command_1 and disassemble_command.  */
9824
9825 void
9826 resolve_sal_pc (struct symtab_and_line *sal)
9827 {
9828   CORE_ADDR pc;
9829
9830   if (sal->pc == 0 && sal->symtab != NULL)
9831     {
9832       if (!find_line_pc (sal->symtab, sal->line, &pc))
9833         error (_("No line %d in file \"%s\"."),
9834                sal->line, symtab_to_filename_for_display (sal->symtab));
9835       sal->pc = pc;
9836
9837       /* If this SAL corresponds to a breakpoint inserted using a line
9838          number, then skip the function prologue if necessary.  */
9839       if (sal->explicit_line)
9840         skip_prologue_sal (sal);
9841     }
9842
9843   if (sal->section == 0 && sal->symtab != NULL)
9844     {
9845       const struct blockvector *bv;
9846       const struct block *b;
9847       struct symbol *sym;
9848
9849       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9850                                     SYMTAB_COMPUNIT (sal->symtab));
9851       if (bv != NULL)
9852         {
9853           sym = block_linkage_function (b);
9854           if (sym != NULL)
9855             {
9856               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9857               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9858                                                  sym);
9859             }
9860           else
9861             {
9862               /* It really is worthwhile to have the section, so we'll
9863                  just have to look harder. This case can be executed
9864                  if we have line numbers but no functions (as can
9865                  happen in assembly source).  */
9866
9867               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9868               switch_to_program_space_and_thread (sal->pspace);
9869
9870               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9871               if (msym.minsym)
9872                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9873             }
9874         }
9875     }
9876 }
9877
9878 void
9879 break_command (char *arg, int from_tty)
9880 {
9881   break_command_1 (arg, 0, from_tty);
9882 }
9883
9884 void
9885 tbreak_command (char *arg, int from_tty)
9886 {
9887   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9888 }
9889
9890 static void
9891 hbreak_command (char *arg, int from_tty)
9892 {
9893   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9894 }
9895
9896 static void
9897 thbreak_command (char *arg, int from_tty)
9898 {
9899   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9900 }
9901
9902 static void
9903 stop_command (char *arg, int from_tty)
9904 {
9905   printf_filtered (_("Specify the type of breakpoint to set.\n\
9906 Usage: stop in <function | address>\n\
9907        stop at <line>\n"));
9908 }
9909
9910 static void
9911 stopin_command (char *arg, int from_tty)
9912 {
9913   int badInput = 0;
9914
9915   if (arg == (char *) NULL)
9916     badInput = 1;
9917   else if (*arg != '*')
9918     {
9919       char *argptr = arg;
9920       int hasColon = 0;
9921
9922       /* Look for a ':'.  If this is a line number specification, then
9923          say it is bad, otherwise, it should be an address or
9924          function/method name.  */
9925       while (*argptr && !hasColon)
9926         {
9927           hasColon = (*argptr == ':');
9928           argptr++;
9929         }
9930
9931       if (hasColon)
9932         badInput = (*argptr != ':');    /* Not a class::method */
9933       else
9934         badInput = isdigit (*arg);      /* a simple line number */
9935     }
9936
9937   if (badInput)
9938     printf_filtered (_("Usage: stop in <function | address>\n"));
9939   else
9940     break_command_1 (arg, 0, from_tty);
9941 }
9942
9943 static void
9944 stopat_command (char *arg, int from_tty)
9945 {
9946   int badInput = 0;
9947
9948   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9949     badInput = 1;
9950   else
9951     {
9952       char *argptr = arg;
9953       int hasColon = 0;
9954
9955       /* Look for a ':'.  If there is a '::' then get out, otherwise
9956          it is probably a line number.  */
9957       while (*argptr && !hasColon)
9958         {
9959           hasColon = (*argptr == ':');
9960           argptr++;
9961         }
9962
9963       if (hasColon)
9964         badInput = (*argptr == ':');    /* we have class::method */
9965       else
9966         badInput = !isdigit (*arg);     /* not a line number */
9967     }
9968
9969   if (badInput)
9970     printf_filtered (_("Usage: stop at <line>\n"));
9971   else
9972     break_command_1 (arg, 0, from_tty);
9973 }
9974
9975 /* The dynamic printf command is mostly like a regular breakpoint, but
9976    with a prewired command list consisting of a single output command,
9977    built from extra arguments supplied on the dprintf command
9978    line.  */
9979
9980 static void
9981 dprintf_command (char *arg, int from_tty)
9982 {
9983   event_location_up location = string_to_event_location (&arg, current_language);
9984
9985   /* If non-NULL, ARG should have been advanced past the location;
9986      the next character must be ','.  */
9987   if (arg != NULL)
9988     {
9989       if (arg[0] != ',' || arg[1] == '\0')
9990         error (_("Format string required"));
9991       else
9992         {
9993           /* Skip the comma.  */
9994           ++arg;
9995         }
9996     }
9997
9998   create_breakpoint (get_current_arch (),
9999                      location.get (),
10000                      NULL, 0, arg, 1 /* parse arg */,
10001                      0, bp_dprintf,
10002                      0 /* Ignore count */,
10003                      pending_break_support,
10004                      &dprintf_breakpoint_ops,
10005                      from_tty,
10006                      1 /* enabled */,
10007                      0 /* internal */,
10008                      0);
10009 }
10010
10011 static void
10012 agent_printf_command (char *arg, int from_tty)
10013 {
10014   error (_("May only run agent-printf on the target"));
10015 }
10016
10017 /* Implement the "breakpoint_hit" breakpoint_ops method for
10018    ranged breakpoints.  */
10019
10020 static int
10021 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10022                                   struct address_space *aspace,
10023                                   CORE_ADDR bp_addr,
10024                                   const struct target_waitstatus *ws)
10025 {
10026   if (ws->kind != TARGET_WAITKIND_STOPPED
10027       || ws->value.sig != GDB_SIGNAL_TRAP)
10028     return 0;
10029
10030   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10031                                          bl->length, aspace, bp_addr);
10032 }
10033
10034 /* Implement the "resources_needed" breakpoint_ops method for
10035    ranged breakpoints.  */
10036
10037 static int
10038 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10039 {
10040   return target_ranged_break_num_registers ();
10041 }
10042
10043 /* Implement the "print_it" breakpoint_ops method for
10044    ranged breakpoints.  */
10045
10046 static enum print_stop_action
10047 print_it_ranged_breakpoint (bpstat bs)
10048 {
10049   struct breakpoint *b = bs->breakpoint_at;
10050   struct bp_location *bl = b->loc;
10051   struct ui_out *uiout = current_uiout;
10052
10053   gdb_assert (b->type == bp_hardware_breakpoint);
10054
10055   /* Ranged breakpoints have only one location.  */
10056   gdb_assert (bl && bl->next == NULL);
10057
10058   annotate_breakpoint (b->number);
10059
10060   maybe_print_thread_hit_breakpoint (uiout);
10061
10062   if (b->disposition == disp_del)
10063     uiout->text ("Temporary ranged breakpoint ");
10064   else
10065     uiout->text ("Ranged breakpoint ");
10066   if (uiout->is_mi_like_p ())
10067     {
10068       uiout->field_string ("reason",
10069                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10070       uiout->field_string ("disp", bpdisp_text (b->disposition));
10071     }
10072   uiout->field_int ("bkptno", b->number);
10073   uiout->text (", ");
10074
10075   return PRINT_SRC_AND_LOC;
10076 }
10077
10078 /* Implement the "print_one" breakpoint_ops method for
10079    ranged breakpoints.  */
10080
10081 static void
10082 print_one_ranged_breakpoint (struct breakpoint *b,
10083                              struct bp_location **last_loc)
10084 {
10085   struct bp_location *bl = b->loc;
10086   struct value_print_options opts;
10087   struct ui_out *uiout = current_uiout;
10088
10089   /* Ranged breakpoints have only one location.  */
10090   gdb_assert (bl && bl->next == NULL);
10091
10092   get_user_print_options (&opts);
10093
10094   if (opts.addressprint)
10095     /* We don't print the address range here, it will be printed later
10096        by print_one_detail_ranged_breakpoint.  */
10097     uiout->field_skip ("addr");
10098   annotate_field (5);
10099   print_breakpoint_location (b, bl);
10100   *last_loc = bl;
10101 }
10102
10103 /* Implement the "print_one_detail" breakpoint_ops method for
10104    ranged breakpoints.  */
10105
10106 static void
10107 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10108                                     struct ui_out *uiout)
10109 {
10110   CORE_ADDR address_start, address_end;
10111   struct bp_location *bl = b->loc;
10112   string_file stb;
10113
10114   gdb_assert (bl);
10115
10116   address_start = bl->address;
10117   address_end = address_start + bl->length - 1;
10118
10119   uiout->text ("\taddress range: ");
10120   stb.printf ("[%s, %s]",
10121               print_core_address (bl->gdbarch, address_start),
10122               print_core_address (bl->gdbarch, address_end));
10123   uiout->field_stream ("addr", stb);
10124   uiout->text ("\n");
10125 }
10126
10127 /* Implement the "print_mention" breakpoint_ops method for
10128    ranged breakpoints.  */
10129
10130 static void
10131 print_mention_ranged_breakpoint (struct breakpoint *b)
10132 {
10133   struct bp_location *bl = b->loc;
10134   struct ui_out *uiout = current_uiout;
10135
10136   gdb_assert (bl);
10137   gdb_assert (b->type == bp_hardware_breakpoint);
10138
10139   if (uiout->is_mi_like_p ())
10140     return;
10141
10142   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10143                    b->number, paddress (bl->gdbarch, bl->address),
10144                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10145 }
10146
10147 /* Implement the "print_recreate" breakpoint_ops method for
10148    ranged breakpoints.  */
10149
10150 static void
10151 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10152 {
10153   fprintf_unfiltered (fp, "break-range %s, %s",
10154                       event_location_to_string (b->location.get ()),
10155                       event_location_to_string (b->location_range_end.get ()));
10156   print_recreate_thread (b, fp);
10157 }
10158
10159 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10160
10161 static struct breakpoint_ops ranged_breakpoint_ops;
10162
10163 /* Find the address where the end of the breakpoint range should be
10164    placed, given the SAL of the end of the range.  This is so that if
10165    the user provides a line number, the end of the range is set to the
10166    last instruction of the given line.  */
10167
10168 static CORE_ADDR
10169 find_breakpoint_range_end (struct symtab_and_line sal)
10170 {
10171   CORE_ADDR end;
10172
10173   /* If the user provided a PC value, use it.  Otherwise,
10174      find the address of the end of the given location.  */
10175   if (sal.explicit_pc)
10176     end = sal.pc;
10177   else
10178     {
10179       int ret;
10180       CORE_ADDR start;
10181
10182       ret = find_line_pc_range (sal, &start, &end);
10183       if (!ret)
10184         error (_("Could not find location of the end of the range."));
10185
10186       /* find_line_pc_range returns the start of the next line.  */
10187       end--;
10188     }
10189
10190   return end;
10191 }
10192
10193 /* Implement the "break-range" CLI command.  */
10194
10195 static void
10196 break_range_command (char *arg, int from_tty)
10197 {
10198   char *arg_start, *addr_string_start;
10199   struct linespec_result canonical_start, canonical_end;
10200   int bp_count, can_use_bp, length;
10201   CORE_ADDR end;
10202   struct breakpoint *b;
10203   struct cleanup *cleanup_bkpt;
10204
10205   /* We don't support software ranged breakpoints.  */
10206   if (target_ranged_break_num_registers () < 0)
10207     error (_("This target does not support hardware ranged breakpoints."));
10208
10209   bp_count = hw_breakpoint_used_count ();
10210   bp_count += target_ranged_break_num_registers ();
10211   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10212                                                    bp_count, 0);
10213   if (can_use_bp < 0)
10214     error (_("Hardware breakpoints used exceeds limit."));
10215
10216   arg = skip_spaces (arg);
10217   if (arg == NULL || arg[0] == '\0')
10218     error(_("No address range specified."));
10219
10220   arg_start = arg;
10221   event_location_up start_location = string_to_event_location (&arg,
10222                                                                current_language);
10223   parse_breakpoint_sals (start_location.get (), &canonical_start);
10224
10225   if (arg[0] != ',')
10226     error (_("Too few arguments."));
10227   else if (canonical_start.lsals.empty ())
10228     error (_("Could not find location of the beginning of the range."));
10229
10230   const linespec_sals &lsal_start = canonical_start.lsals[0];
10231
10232   if (canonical_start.lsals.size () > 1
10233       || lsal_start.sals.size () != 1)
10234     error (_("Cannot create a ranged breakpoint with multiple locations."));
10235
10236   const symtab_and_line &sal_start = lsal_start.sals[0];
10237   addr_string_start = savestring (arg_start, arg - arg_start);
10238   cleanup_bkpt = make_cleanup (xfree, addr_string_start);
10239
10240   arg++;        /* Skip the comma.  */
10241   arg = skip_spaces (arg);
10242
10243   /* Parse the end location.  */
10244
10245   arg_start = arg;
10246
10247   /* We call decode_line_full directly here instead of using
10248      parse_breakpoint_sals because we need to specify the start location's
10249      symtab and line as the default symtab and line for the end of the
10250      range.  This makes it possible to have ranges like "foo.c:27, +14",
10251      where +14 means 14 lines from the start location.  */
10252   event_location_up end_location = string_to_event_location (&arg,
10253                                                              current_language);
10254   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10255                     sal_start.symtab, sal_start.line,
10256                     &canonical_end, NULL, NULL);
10257
10258   if (canonical_end.lsals.empty ())
10259     error (_("Could not find location of the end of the range."));
10260
10261   const linespec_sals &lsal_end = canonical_end.lsals[0];
10262   if (canonical_end.lsals.size () > 1
10263       || lsal_end.sals.size () != 1)
10264     error (_("Cannot create a ranged breakpoint with multiple locations."));
10265
10266   const symtab_and_line &sal_end = lsal_end.sals[0];
10267
10268   end = find_breakpoint_range_end (sal_end);
10269   if (sal_start.pc > end)
10270     error (_("Invalid address range, end precedes start."));
10271
10272   length = end - sal_start.pc + 1;
10273   if (length < 0)
10274     /* Length overflowed.  */
10275     error (_("Address range too large."));
10276   else if (length == 1)
10277     {
10278       /* This range is simple enough to be handled by
10279          the `hbreak' command.  */
10280       hbreak_command (addr_string_start, 1);
10281
10282       do_cleanups (cleanup_bkpt);
10283
10284       return;
10285     }
10286
10287   /* Now set up the breakpoint.  */
10288   b = set_raw_breakpoint (get_current_arch (), sal_start,
10289                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10290   set_breakpoint_count (breakpoint_count + 1);
10291   b->number = breakpoint_count;
10292   b->disposition = disp_donttouch;
10293   b->location = std::move (start_location);
10294   b->location_range_end = std::move (end_location);
10295   b->loc->length = length;
10296
10297   do_cleanups (cleanup_bkpt);
10298
10299   mention (b);
10300   observer_notify_breakpoint_created (b);
10301   update_global_location_list (UGLL_MAY_INSERT);
10302 }
10303
10304 /*  Return non-zero if EXP is verified as constant.  Returned zero
10305     means EXP is variable.  Also the constant detection may fail for
10306     some constant expressions and in such case still falsely return
10307     zero.  */
10308
10309 static int
10310 watchpoint_exp_is_const (const struct expression *exp)
10311 {
10312   int i = exp->nelts;
10313
10314   while (i > 0)
10315     {
10316       int oplenp, argsp;
10317
10318       /* We are only interested in the descriptor of each element.  */
10319       operator_length (exp, i, &oplenp, &argsp);
10320       i -= oplenp;
10321
10322       switch (exp->elts[i].opcode)
10323         {
10324         case BINOP_ADD:
10325         case BINOP_SUB:
10326         case BINOP_MUL:
10327         case BINOP_DIV:
10328         case BINOP_REM:
10329         case BINOP_MOD:
10330         case BINOP_LSH:
10331         case BINOP_RSH:
10332         case BINOP_LOGICAL_AND:
10333         case BINOP_LOGICAL_OR:
10334         case BINOP_BITWISE_AND:
10335         case BINOP_BITWISE_IOR:
10336         case BINOP_BITWISE_XOR:
10337         case BINOP_EQUAL:
10338         case BINOP_NOTEQUAL:
10339         case BINOP_LESS:
10340         case BINOP_GTR:
10341         case BINOP_LEQ:
10342         case BINOP_GEQ:
10343         case BINOP_REPEAT:
10344         case BINOP_COMMA:
10345         case BINOP_EXP:
10346         case BINOP_MIN:
10347         case BINOP_MAX:
10348         case BINOP_INTDIV:
10349         case BINOP_CONCAT:
10350         case TERNOP_COND:
10351         case TERNOP_SLICE:
10352
10353         case OP_LONG:
10354         case OP_DOUBLE:
10355         case OP_DECFLOAT:
10356         case OP_LAST:
10357         case OP_COMPLEX:
10358         case OP_STRING:
10359         case OP_ARRAY:
10360         case OP_TYPE:
10361         case OP_TYPEOF:
10362         case OP_DECLTYPE:
10363         case OP_TYPEID:
10364         case OP_NAME:
10365         case OP_OBJC_NSSTRING:
10366
10367         case UNOP_NEG:
10368         case UNOP_LOGICAL_NOT:
10369         case UNOP_COMPLEMENT:
10370         case UNOP_ADDR:
10371         case UNOP_HIGH:
10372         case UNOP_CAST:
10373
10374         case UNOP_CAST_TYPE:
10375         case UNOP_REINTERPRET_CAST:
10376         case UNOP_DYNAMIC_CAST:
10377           /* Unary, binary and ternary operators: We have to check
10378              their operands.  If they are constant, then so is the
10379              result of that operation.  For instance, if A and B are
10380              determined to be constants, then so is "A + B".
10381
10382              UNOP_IND is one exception to the rule above, because the
10383              value of *ADDR is not necessarily a constant, even when
10384              ADDR is.  */
10385           break;
10386
10387         case OP_VAR_VALUE:
10388           /* Check whether the associated symbol is a constant.
10389
10390              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10391              possible that a buggy compiler could mark a variable as
10392              constant even when it is not, and TYPE_CONST would return
10393              true in this case, while SYMBOL_CLASS wouldn't.
10394
10395              We also have to check for function symbols because they
10396              are always constant.  */
10397           {
10398             struct symbol *s = exp->elts[i + 2].symbol;
10399
10400             if (SYMBOL_CLASS (s) != LOC_BLOCK
10401                 && SYMBOL_CLASS (s) != LOC_CONST
10402                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10403               return 0;
10404             break;
10405           }
10406
10407         /* The default action is to return 0 because we are using
10408            the optimistic approach here: If we don't know something,
10409            then it is not a constant.  */
10410         default:
10411           return 0;
10412         }
10413     }
10414
10415   return 1;
10416 }
10417
10418 /* Watchpoint destructor.  */
10419
10420 watchpoint::~watchpoint ()
10421 {
10422   xfree (this->exp_string);
10423   xfree (this->exp_string_reparse);
10424   value_free (this->val);
10425 }
10426
10427 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10428
10429 static void
10430 re_set_watchpoint (struct breakpoint *b)
10431 {
10432   struct watchpoint *w = (struct watchpoint *) b;
10433
10434   /* Watchpoint can be either on expression using entirely global
10435      variables, or it can be on local variables.
10436
10437      Watchpoints of the first kind are never auto-deleted, and even
10438      persist across program restarts.  Since they can use variables
10439      from shared libraries, we need to reparse expression as libraries
10440      are loaded and unloaded.
10441
10442      Watchpoints on local variables can also change meaning as result
10443      of solib event.  For example, if a watchpoint uses both a local
10444      and a global variables in expression, it's a local watchpoint,
10445      but unloading of a shared library will make the expression
10446      invalid.  This is not a very common use case, but we still
10447      re-evaluate expression, to avoid surprises to the user.
10448
10449      Note that for local watchpoints, we re-evaluate it only if
10450      watchpoints frame id is still valid.  If it's not, it means the
10451      watchpoint is out of scope and will be deleted soon.  In fact,
10452      I'm not sure we'll ever be called in this case.
10453
10454      If a local watchpoint's frame id is still valid, then
10455      w->exp_valid_block is likewise valid, and we can safely use it.
10456
10457      Don't do anything about disabled watchpoints, since they will be
10458      reevaluated again when enabled.  */
10459   update_watchpoint (w, 1 /* reparse */);
10460 }
10461
10462 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10463
10464 static int
10465 insert_watchpoint (struct bp_location *bl)
10466 {
10467   struct watchpoint *w = (struct watchpoint *) bl->owner;
10468   int length = w->exact ? 1 : bl->length;
10469
10470   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10471                                    w->cond_exp.get ());
10472 }
10473
10474 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10475
10476 static int
10477 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10478 {
10479   struct watchpoint *w = (struct watchpoint *) bl->owner;
10480   int length = w->exact ? 1 : bl->length;
10481
10482   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10483                                    w->cond_exp.get ());
10484 }
10485
10486 static int
10487 breakpoint_hit_watchpoint (const struct bp_location *bl,
10488                            struct address_space *aspace, CORE_ADDR bp_addr,
10489                            const struct target_waitstatus *ws)
10490 {
10491   struct breakpoint *b = bl->owner;
10492   struct watchpoint *w = (struct watchpoint *) b;
10493
10494   /* Continuable hardware watchpoints are treated as non-existent if the
10495      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10496      some data address).  Otherwise gdb won't stop on a break instruction
10497      in the code (not from a breakpoint) when a hardware watchpoint has
10498      been defined.  Also skip watchpoints which we know did not trigger
10499      (did not match the data address).  */
10500   if (is_hardware_watchpoint (b)
10501       && w->watchpoint_triggered == watch_triggered_no)
10502     return 0;
10503
10504   return 1;
10505 }
10506
10507 static void
10508 check_status_watchpoint (bpstat bs)
10509 {
10510   gdb_assert (is_watchpoint (bs->breakpoint_at));
10511
10512   bpstat_check_watchpoint (bs);
10513 }
10514
10515 /* Implement the "resources_needed" breakpoint_ops method for
10516    hardware watchpoints.  */
10517
10518 static int
10519 resources_needed_watchpoint (const struct bp_location *bl)
10520 {
10521   struct watchpoint *w = (struct watchpoint *) bl->owner;
10522   int length = w->exact? 1 : bl->length;
10523
10524   return target_region_ok_for_hw_watchpoint (bl->address, length);
10525 }
10526
10527 /* Implement the "works_in_software_mode" breakpoint_ops method for
10528    hardware watchpoints.  */
10529
10530 static int
10531 works_in_software_mode_watchpoint (const struct breakpoint *b)
10532 {
10533   /* Read and access watchpoints only work with hardware support.  */
10534   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10535 }
10536
10537 static enum print_stop_action
10538 print_it_watchpoint (bpstat bs)
10539 {
10540   struct breakpoint *b;
10541   enum print_stop_action result;
10542   struct watchpoint *w;
10543   struct ui_out *uiout = current_uiout;
10544
10545   gdb_assert (bs->bp_location_at != NULL);
10546
10547   b = bs->breakpoint_at;
10548   w = (struct watchpoint *) b;
10549
10550   annotate_watchpoint (b->number);
10551   maybe_print_thread_hit_breakpoint (uiout);
10552
10553   string_file stb;
10554
10555   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10556   switch (b->type)
10557     {
10558     case bp_watchpoint:
10559     case bp_hardware_watchpoint:
10560       if (uiout->is_mi_like_p ())
10561         uiout->field_string
10562           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10563       mention (b);
10564       tuple_emitter.emplace (uiout, "value");
10565       uiout->text ("\nOld value = ");
10566       watchpoint_value_print (bs->old_val, &stb);
10567       uiout->field_stream ("old", stb);
10568       uiout->text ("\nNew value = ");
10569       watchpoint_value_print (w->val, &stb);
10570       uiout->field_stream ("new", stb);
10571       uiout->text ("\n");
10572       /* More than one watchpoint may have been triggered.  */
10573       result = PRINT_UNKNOWN;
10574       break;
10575
10576     case bp_read_watchpoint:
10577       if (uiout->is_mi_like_p ())
10578         uiout->field_string
10579           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10580       mention (b);
10581       tuple_emitter.emplace (uiout, "value");
10582       uiout->text ("\nValue = ");
10583       watchpoint_value_print (w->val, &stb);
10584       uiout->field_stream ("value", stb);
10585       uiout->text ("\n");
10586       result = PRINT_UNKNOWN;
10587       break;
10588
10589     case bp_access_watchpoint:
10590       if (bs->old_val != NULL)
10591         {
10592           if (uiout->is_mi_like_p ())
10593             uiout->field_string
10594               ("reason",
10595                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10596           mention (b);
10597           tuple_emitter.emplace (uiout, "value");
10598           uiout->text ("\nOld value = ");
10599           watchpoint_value_print (bs->old_val, &stb);
10600           uiout->field_stream ("old", stb);
10601           uiout->text ("\nNew value = ");
10602         }
10603       else
10604         {
10605           mention (b);
10606           if (uiout->is_mi_like_p ())
10607             uiout->field_string
10608               ("reason",
10609                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10610           tuple_emitter.emplace (uiout, "value");
10611           uiout->text ("\nValue = ");
10612         }
10613       watchpoint_value_print (w->val, &stb);
10614       uiout->field_stream ("new", stb);
10615       uiout->text ("\n");
10616       result = PRINT_UNKNOWN;
10617       break;
10618     default:
10619       result = PRINT_UNKNOWN;
10620     }
10621
10622   return result;
10623 }
10624
10625 /* Implement the "print_mention" breakpoint_ops method for hardware
10626    watchpoints.  */
10627
10628 static void
10629 print_mention_watchpoint (struct breakpoint *b)
10630 {
10631   struct watchpoint *w = (struct watchpoint *) b;
10632   struct ui_out *uiout = current_uiout;
10633   const char *tuple_name;
10634
10635   switch (b->type)
10636     {
10637     case bp_watchpoint:
10638       uiout->text ("Watchpoint ");
10639       tuple_name = "wpt";
10640       break;
10641     case bp_hardware_watchpoint:
10642       uiout->text ("Hardware watchpoint ");
10643       tuple_name = "wpt";
10644       break;
10645     case bp_read_watchpoint:
10646       uiout->text ("Hardware read watchpoint ");
10647       tuple_name = "hw-rwpt";
10648       break;
10649     case bp_access_watchpoint:
10650       uiout->text ("Hardware access (read/write) watchpoint ");
10651       tuple_name = "hw-awpt";
10652       break;
10653     default:
10654       internal_error (__FILE__, __LINE__,
10655                       _("Invalid hardware watchpoint type."));
10656     }
10657
10658   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10659   uiout->field_int ("number", b->number);
10660   uiout->text (": ");
10661   uiout->field_string ("exp", w->exp_string);
10662 }
10663
10664 /* Implement the "print_recreate" breakpoint_ops method for
10665    watchpoints.  */
10666
10667 static void
10668 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10669 {
10670   struct watchpoint *w = (struct watchpoint *) b;
10671
10672   switch (b->type)
10673     {
10674     case bp_watchpoint:
10675     case bp_hardware_watchpoint:
10676       fprintf_unfiltered (fp, "watch");
10677       break;
10678     case bp_read_watchpoint:
10679       fprintf_unfiltered (fp, "rwatch");
10680       break;
10681     case bp_access_watchpoint:
10682       fprintf_unfiltered (fp, "awatch");
10683       break;
10684     default:
10685       internal_error (__FILE__, __LINE__,
10686                       _("Invalid watchpoint type."));
10687     }
10688
10689   fprintf_unfiltered (fp, " %s", w->exp_string);
10690   print_recreate_thread (b, fp);
10691 }
10692
10693 /* Implement the "explains_signal" breakpoint_ops method for
10694    watchpoints.  */
10695
10696 static int
10697 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10698 {
10699   /* A software watchpoint cannot cause a signal other than
10700      GDB_SIGNAL_TRAP.  */
10701   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10702     return 0;
10703
10704   return 1;
10705 }
10706
10707 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10708
10709 static struct breakpoint_ops watchpoint_breakpoint_ops;
10710
10711 /* Implement the "insert" breakpoint_ops method for
10712    masked hardware watchpoints.  */
10713
10714 static int
10715 insert_masked_watchpoint (struct bp_location *bl)
10716 {
10717   struct watchpoint *w = (struct watchpoint *) bl->owner;
10718
10719   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10720                                         bl->watchpoint_type);
10721 }
10722
10723 /* Implement the "remove" breakpoint_ops method for
10724    masked hardware watchpoints.  */
10725
10726 static int
10727 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10728 {
10729   struct watchpoint *w = (struct watchpoint *) bl->owner;
10730
10731   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10732                                         bl->watchpoint_type);
10733 }
10734
10735 /* Implement the "resources_needed" breakpoint_ops method for
10736    masked hardware watchpoints.  */
10737
10738 static int
10739 resources_needed_masked_watchpoint (const struct bp_location *bl)
10740 {
10741   struct watchpoint *w = (struct watchpoint *) bl->owner;
10742
10743   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10744 }
10745
10746 /* Implement the "works_in_software_mode" breakpoint_ops method for
10747    masked hardware watchpoints.  */
10748
10749 static int
10750 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10751 {
10752   return 0;
10753 }
10754
10755 /* Implement the "print_it" breakpoint_ops method for
10756    masked hardware watchpoints.  */
10757
10758 static enum print_stop_action
10759 print_it_masked_watchpoint (bpstat bs)
10760 {
10761   struct breakpoint *b = bs->breakpoint_at;
10762   struct ui_out *uiout = current_uiout;
10763
10764   /* Masked watchpoints have only one location.  */
10765   gdb_assert (b->loc && b->loc->next == NULL);
10766
10767   annotate_watchpoint (b->number);
10768   maybe_print_thread_hit_breakpoint (uiout);
10769
10770   switch (b->type)
10771     {
10772     case bp_hardware_watchpoint:
10773       if (uiout->is_mi_like_p ())
10774         uiout->field_string
10775           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10776       break;
10777
10778     case bp_read_watchpoint:
10779       if (uiout->is_mi_like_p ())
10780         uiout->field_string
10781           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10782       break;
10783
10784     case bp_access_watchpoint:
10785       if (uiout->is_mi_like_p ())
10786         uiout->field_string
10787           ("reason",
10788            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10789       break;
10790     default:
10791       internal_error (__FILE__, __LINE__,
10792                       _("Invalid hardware watchpoint type."));
10793     }
10794
10795   mention (b);
10796   uiout->text (_("\n\
10797 Check the underlying instruction at PC for the memory\n\
10798 address and value which triggered this watchpoint.\n"));
10799   uiout->text ("\n");
10800
10801   /* More than one watchpoint may have been triggered.  */
10802   return PRINT_UNKNOWN;
10803 }
10804
10805 /* Implement the "print_one_detail" breakpoint_ops method for
10806    masked hardware watchpoints.  */
10807
10808 static void
10809 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10810                                     struct ui_out *uiout)
10811 {
10812   struct watchpoint *w = (struct watchpoint *) b;
10813
10814   /* Masked watchpoints have only one location.  */
10815   gdb_assert (b->loc && b->loc->next == NULL);
10816
10817   uiout->text ("\tmask ");
10818   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10819   uiout->text ("\n");
10820 }
10821
10822 /* Implement the "print_mention" breakpoint_ops method for
10823    masked hardware watchpoints.  */
10824
10825 static void
10826 print_mention_masked_watchpoint (struct breakpoint *b)
10827 {
10828   struct watchpoint *w = (struct watchpoint *) b;
10829   struct ui_out *uiout = current_uiout;
10830   const char *tuple_name;
10831
10832   switch (b->type)
10833     {
10834     case bp_hardware_watchpoint:
10835       uiout->text ("Masked hardware watchpoint ");
10836       tuple_name = "wpt";
10837       break;
10838     case bp_read_watchpoint:
10839       uiout->text ("Masked hardware read watchpoint ");
10840       tuple_name = "hw-rwpt";
10841       break;
10842     case bp_access_watchpoint:
10843       uiout->text ("Masked hardware access (read/write) watchpoint ");
10844       tuple_name = "hw-awpt";
10845       break;
10846     default:
10847       internal_error (__FILE__, __LINE__,
10848                       _("Invalid hardware watchpoint type."));
10849     }
10850
10851   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10852   uiout->field_int ("number", b->number);
10853   uiout->text (": ");
10854   uiout->field_string ("exp", w->exp_string);
10855 }
10856
10857 /* Implement the "print_recreate" breakpoint_ops method for
10858    masked hardware watchpoints.  */
10859
10860 static void
10861 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10862 {
10863   struct watchpoint *w = (struct watchpoint *) b;
10864   char tmp[40];
10865
10866   switch (b->type)
10867     {
10868     case bp_hardware_watchpoint:
10869       fprintf_unfiltered (fp, "watch");
10870       break;
10871     case bp_read_watchpoint:
10872       fprintf_unfiltered (fp, "rwatch");
10873       break;
10874     case bp_access_watchpoint:
10875       fprintf_unfiltered (fp, "awatch");
10876       break;
10877     default:
10878       internal_error (__FILE__, __LINE__,
10879                       _("Invalid hardware watchpoint type."));
10880     }
10881
10882   sprintf_vma (tmp, w->hw_wp_mask);
10883   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10884   print_recreate_thread (b, fp);
10885 }
10886
10887 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10888
10889 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10890
10891 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10892
10893 static int
10894 is_masked_watchpoint (const struct breakpoint *b)
10895 {
10896   return b->ops == &masked_watchpoint_breakpoint_ops;
10897 }
10898
10899 /* accessflag:  hw_write:  watch write, 
10900                 hw_read:   watch read, 
10901                 hw_access: watch access (read or write) */
10902 static void
10903 watch_command_1 (const char *arg, int accessflag, int from_tty,
10904                  int just_location, int internal)
10905 {
10906   struct breakpoint *scope_breakpoint = NULL;
10907   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10908   struct value *val, *mark, *result;
10909   int saved_bitpos = 0, saved_bitsize = 0;
10910   const char *exp_start = NULL;
10911   const char *exp_end = NULL;
10912   const char *tok, *end_tok;
10913   int toklen = -1;
10914   const char *cond_start = NULL;
10915   const char *cond_end = NULL;
10916   enum bptype bp_type;
10917   int thread = -1;
10918   int pc = 0;
10919   /* Flag to indicate whether we are going to use masks for
10920      the hardware watchpoint.  */
10921   int use_mask = 0;
10922   CORE_ADDR mask = 0;
10923   char *expression;
10924   struct cleanup *back_to;
10925
10926   /* Make sure that we actually have parameters to parse.  */
10927   if (arg != NULL && arg[0] != '\0')
10928     {
10929       const char *value_start;
10930
10931       exp_end = arg + strlen (arg);
10932
10933       /* Look for "parameter value" pairs at the end
10934          of the arguments string.  */
10935       for (tok = exp_end - 1; tok > arg; tok--)
10936         {
10937           /* Skip whitespace at the end of the argument list.  */
10938           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10939             tok--;
10940
10941           /* Find the beginning of the last token.
10942              This is the value of the parameter.  */
10943           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10944             tok--;
10945           value_start = tok + 1;
10946
10947           /* Skip whitespace.  */
10948           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10949             tok--;
10950
10951           end_tok = tok;
10952
10953           /* Find the beginning of the second to last token.
10954              This is the parameter itself.  */
10955           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10956             tok--;
10957           tok++;
10958           toklen = end_tok - tok + 1;
10959
10960           if (toklen == 6 && startswith (tok, "thread"))
10961             {
10962               struct thread_info *thr;
10963               /* At this point we've found a "thread" token, which means
10964                  the user is trying to set a watchpoint that triggers
10965                  only in a specific thread.  */
10966               const char *endp;
10967
10968               if (thread != -1)
10969                 error(_("You can specify only one thread."));
10970
10971               /* Extract the thread ID from the next token.  */
10972               thr = parse_thread_id (value_start, &endp);
10973
10974               /* Check if the user provided a valid thread ID.  */
10975               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10976                 invalid_thread_id_error (value_start);
10977
10978               thread = thr->global_num;
10979             }
10980           else if (toklen == 4 && startswith (tok, "mask"))
10981             {
10982               /* We've found a "mask" token, which means the user wants to
10983                  create a hardware watchpoint that is going to have the mask
10984                  facility.  */
10985               struct value *mask_value, *mark;
10986
10987               if (use_mask)
10988                 error(_("You can specify only one mask."));
10989
10990               use_mask = just_location = 1;
10991
10992               mark = value_mark ();
10993               mask_value = parse_to_comma_and_eval (&value_start);
10994               mask = value_as_address (mask_value);
10995               value_free_to_mark (mark);
10996             }
10997           else
10998             /* We didn't recognize what we found.  We should stop here.  */
10999             break;
11000
11001           /* Truncate the string and get rid of the "parameter value" pair before
11002              the arguments string is parsed by the parse_exp_1 function.  */
11003           exp_end = tok;
11004         }
11005     }
11006   else
11007     exp_end = arg;
11008
11009   /* Parse the rest of the arguments.  From here on out, everything
11010      is in terms of a newly allocated string instead of the original
11011      ARG.  */
11012   innermost_block = NULL;
11013   expression = savestring (arg, exp_end - arg);
11014   back_to = make_cleanup (xfree, expression);
11015   exp_start = arg = expression;
11016   expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
11017   exp_end = arg;
11018   /* Remove trailing whitespace from the expression before saving it.
11019      This makes the eventual display of the expression string a bit
11020      prettier.  */
11021   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11022     --exp_end;
11023
11024   /* Checking if the expression is not constant.  */
11025   if (watchpoint_exp_is_const (exp.get ()))
11026     {
11027       int len;
11028
11029       len = exp_end - exp_start;
11030       while (len > 0 && isspace (exp_start[len - 1]))
11031         len--;
11032       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11033     }
11034
11035   exp_valid_block = innermost_block;
11036   mark = value_mark ();
11037   fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
11038
11039   if (val != NULL && just_location)
11040     {
11041       saved_bitpos = value_bitpos (val);
11042       saved_bitsize = value_bitsize (val);
11043     }
11044
11045   if (just_location)
11046     {
11047       int ret;
11048
11049       exp_valid_block = NULL;
11050       val = value_addr (result);
11051       release_value (val);
11052       value_free_to_mark (mark);
11053
11054       if (use_mask)
11055         {
11056           ret = target_masked_watch_num_registers (value_as_address (val),
11057                                                    mask);
11058           if (ret == -1)
11059             error (_("This target does not support masked watchpoints."));
11060           else if (ret == -2)
11061             error (_("Invalid mask or memory region."));
11062         }
11063     }
11064   else if (val != NULL)
11065     release_value (val);
11066
11067   tok = skip_spaces (arg);
11068   end_tok = skip_to_space (tok);
11069
11070   toklen = end_tok - tok;
11071   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11072     {
11073       innermost_block = NULL;
11074       tok = cond_start = end_tok + 1;
11075       parse_exp_1 (&tok, 0, 0, 0);
11076
11077       /* The watchpoint expression may not be local, but the condition
11078          may still be.  E.g.: `watch global if local > 0'.  */
11079       cond_exp_valid_block = innermost_block;
11080
11081       cond_end = tok;
11082     }
11083   if (*tok)
11084     error (_("Junk at end of command."));
11085
11086   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
11087
11088   /* Save this because create_internal_breakpoint below invalidates
11089      'wp_frame'.  */
11090   frame_id watchpoint_frame = get_frame_id (wp_frame);
11091
11092   /* If the expression is "local", then set up a "watchpoint scope"
11093      breakpoint at the point where we've left the scope of the watchpoint
11094      expression.  Create the scope breakpoint before the watchpoint, so
11095      that we will encounter it first in bpstat_stop_status.  */
11096   if (exp_valid_block != NULL && wp_frame != NULL)
11097     {
11098       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
11099
11100       if (frame_id_p (caller_frame_id))
11101         {
11102           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
11103           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
11104
11105           scope_breakpoint
11106             = create_internal_breakpoint (caller_arch, caller_pc,
11107                                           bp_watchpoint_scope,
11108                                           &momentary_breakpoint_ops);
11109
11110           /* create_internal_breakpoint could invalidate WP_FRAME.  */
11111           wp_frame = NULL;
11112
11113           scope_breakpoint->enable_state = bp_enabled;
11114
11115           /* Automatically delete the breakpoint when it hits.  */
11116           scope_breakpoint->disposition = disp_del;
11117
11118           /* Only break in the proper frame (help with recursion).  */
11119           scope_breakpoint->frame_id = caller_frame_id;
11120
11121           /* Set the address at which we will stop.  */
11122           scope_breakpoint->loc->gdbarch = caller_arch;
11123           scope_breakpoint->loc->requested_address = caller_pc;
11124           scope_breakpoint->loc->address
11125             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11126                                          scope_breakpoint->loc->requested_address,
11127                                          scope_breakpoint->type);
11128         }
11129     }
11130
11131   /* Now set up the breakpoint.  We create all watchpoints as hardware
11132      watchpoints here even if hardware watchpoints are turned off, a call
11133      to update_watchpoint later in this function will cause the type to
11134      drop back to bp_watchpoint (software watchpoint) if required.  */
11135
11136   if (accessflag == hw_read)
11137     bp_type = bp_read_watchpoint;
11138   else if (accessflag == hw_access)
11139     bp_type = bp_access_watchpoint;
11140   else
11141     bp_type = bp_hardware_watchpoint;
11142
11143   std::unique_ptr<watchpoint> w (new watchpoint ());
11144
11145   if (use_mask)
11146     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
11147                                           &masked_watchpoint_breakpoint_ops);
11148   else
11149     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
11150                                           &watchpoint_breakpoint_ops);
11151   w->thread = thread;
11152   w->disposition = disp_donttouch;
11153   w->pspace = current_program_space;
11154   w->exp = std::move (exp);
11155   w->exp_valid_block = exp_valid_block;
11156   w->cond_exp_valid_block = cond_exp_valid_block;
11157   if (just_location)
11158     {
11159       struct type *t = value_type (val);
11160       CORE_ADDR addr = value_as_address (val);
11161
11162       w->exp_string_reparse
11163         = current_language->la_watch_location_expression (t, addr).release ();
11164
11165       w->exp_string = xstrprintf ("-location %.*s",
11166                                   (int) (exp_end - exp_start), exp_start);
11167     }
11168   else
11169     w->exp_string = savestring (exp_start, exp_end - exp_start);
11170
11171   if (use_mask)
11172     {
11173       w->hw_wp_mask = mask;
11174     }
11175   else
11176     {
11177       w->val = val;
11178       w->val_bitpos = saved_bitpos;
11179       w->val_bitsize = saved_bitsize;
11180       w->val_valid = 1;
11181     }
11182
11183   if (cond_start)
11184     w->cond_string = savestring (cond_start, cond_end - cond_start);
11185   else
11186     w->cond_string = 0;
11187
11188   if (frame_id_p (watchpoint_frame))
11189     {
11190       w->watchpoint_frame = watchpoint_frame;
11191       w->watchpoint_thread = inferior_ptid;
11192     }
11193   else
11194     {
11195       w->watchpoint_frame = null_frame_id;
11196       w->watchpoint_thread = null_ptid;
11197     }
11198
11199   if (scope_breakpoint != NULL)
11200     {
11201       /* The scope breakpoint is related to the watchpoint.  We will
11202          need to act on them together.  */
11203       w->related_breakpoint = scope_breakpoint;
11204       scope_breakpoint->related_breakpoint = w.get ();
11205     }
11206
11207   if (!just_location)
11208     value_free_to_mark (mark);
11209
11210   /* Finally update the new watchpoint.  This creates the locations
11211      that should be inserted.  */
11212   update_watchpoint (w.get (), 1);
11213
11214   install_breakpoint (internal, std::move (w), 1);
11215   do_cleanups (back_to);
11216 }
11217
11218 /* Return count of debug registers needed to watch the given expression.
11219    If the watchpoint cannot be handled in hardware return zero.  */
11220
11221 static int
11222 can_use_hardware_watchpoint (struct value *v)
11223 {
11224   int found_memory_cnt = 0;
11225   struct value *head = v;
11226
11227   /* Did the user specifically forbid us to use hardware watchpoints? */
11228   if (!can_use_hw_watchpoints)
11229     return 0;
11230
11231   /* Make sure that the value of the expression depends only upon
11232      memory contents, and values computed from them within GDB.  If we
11233      find any register references or function calls, we can't use a
11234      hardware watchpoint.
11235
11236      The idea here is that evaluating an expression generates a series
11237      of values, one holding the value of every subexpression.  (The
11238      expression a*b+c has five subexpressions: a, b, a*b, c, and
11239      a*b+c.)  GDB's values hold almost enough information to establish
11240      the criteria given above --- they identify memory lvalues,
11241      register lvalues, computed values, etcetera.  So we can evaluate
11242      the expression, and then scan the chain of values that leaves
11243      behind to decide whether we can detect any possible change to the
11244      expression's final value using only hardware watchpoints.
11245
11246      However, I don't think that the values returned by inferior
11247      function calls are special in any way.  So this function may not
11248      notice that an expression involving an inferior function call
11249      can't be watched with hardware watchpoints.  FIXME.  */
11250   for (; v; v = value_next (v))
11251     {
11252       if (VALUE_LVAL (v) == lval_memory)
11253         {
11254           if (v != head && value_lazy (v))
11255             /* A lazy memory lvalue in the chain is one that GDB never
11256                needed to fetch; we either just used its address (e.g.,
11257                `a' in `a.b') or we never needed it at all (e.g., `a'
11258                in `a,b').  This doesn't apply to HEAD; if that is
11259                lazy then it was not readable, but watch it anyway.  */
11260             ;
11261           else
11262             {
11263               /* Ahh, memory we actually used!  Check if we can cover
11264                  it with hardware watchpoints.  */
11265               struct type *vtype = check_typedef (value_type (v));
11266
11267               /* We only watch structs and arrays if user asked for it
11268                  explicitly, never if they just happen to appear in a
11269                  middle of some value chain.  */
11270               if (v == head
11271                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11272                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11273                 {
11274                   CORE_ADDR vaddr = value_address (v);
11275                   int len;
11276                   int num_regs;
11277
11278                   len = (target_exact_watchpoints
11279                          && is_scalar_type_recursive (vtype))?
11280                     1 : TYPE_LENGTH (value_type (v));
11281
11282                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11283                   if (!num_regs)
11284                     return 0;
11285                   else
11286                     found_memory_cnt += num_regs;
11287                 }
11288             }
11289         }
11290       else if (VALUE_LVAL (v) != not_lval
11291                && deprecated_value_modifiable (v) == 0)
11292         return 0;       /* These are values from the history (e.g., $1).  */
11293       else if (VALUE_LVAL (v) == lval_register)
11294         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11295     }
11296
11297   /* The expression itself looks suitable for using a hardware
11298      watchpoint, but give the target machine a chance to reject it.  */
11299   return found_memory_cnt;
11300 }
11301
11302 void
11303 watch_command_wrapper (char *arg, int from_tty, int internal)
11304 {
11305   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11306 }
11307
11308 /* A helper function that looks for the "-location" argument and then
11309    calls watch_command_1.  */
11310
11311 static void
11312 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11313 {
11314   int just_location = 0;
11315
11316   if (arg
11317       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11318           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11319     {
11320       arg = skip_spaces (arg);
11321       just_location = 1;
11322     }
11323
11324   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11325 }
11326
11327 static void
11328 watch_command (char *arg, int from_tty)
11329 {
11330   watch_maybe_just_location (arg, hw_write, from_tty);
11331 }
11332
11333 void
11334 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11335 {
11336   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11337 }
11338
11339 static void
11340 rwatch_command (char *arg, int from_tty)
11341 {
11342   watch_maybe_just_location (arg, hw_read, from_tty);
11343 }
11344
11345 void
11346 awatch_command_wrapper (char *arg, int from_tty, int internal)
11347 {
11348   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11349 }
11350
11351 static void
11352 awatch_command (char *arg, int from_tty)
11353 {
11354   watch_maybe_just_location (arg, hw_access, from_tty);
11355 }
11356 \f
11357
11358 /* Data for the FSM that manages the until(location)/advance commands
11359    in infcmd.c.  Here because it uses the mechanisms of
11360    breakpoints.  */
11361
11362 struct until_break_fsm
11363 {
11364   /* The base class.  */
11365   struct thread_fsm thread_fsm;
11366
11367   /* The thread that as current when the command was executed.  */
11368   int thread;
11369
11370   /* The breakpoint set at the destination location.  */
11371   struct breakpoint *location_breakpoint;
11372
11373   /* Breakpoint set at the return address in the caller frame.  May be
11374      NULL.  */
11375   struct breakpoint *caller_breakpoint;
11376 };
11377
11378 static void until_break_fsm_clean_up (struct thread_fsm *self,
11379                                       struct thread_info *thread);
11380 static int until_break_fsm_should_stop (struct thread_fsm *self,
11381                                         struct thread_info *thread);
11382 static enum async_reply_reason
11383   until_break_fsm_async_reply_reason (struct thread_fsm *self);
11384
11385 /* until_break_fsm's vtable.  */
11386
11387 static struct thread_fsm_ops until_break_fsm_ops =
11388 {
11389   NULL, /* dtor */
11390   until_break_fsm_clean_up,
11391   until_break_fsm_should_stop,
11392   NULL, /* return_value */
11393   until_break_fsm_async_reply_reason,
11394 };
11395
11396 /* Allocate a new until_break_command_fsm.  */
11397
11398 static struct until_break_fsm *
11399 new_until_break_fsm (struct interp *cmd_interp, int thread,
11400                      struct breakpoint *location_breakpoint,
11401                      struct breakpoint *caller_breakpoint)
11402 {
11403   struct until_break_fsm *sm;
11404
11405   sm = XCNEW (struct until_break_fsm);
11406   thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11407
11408   sm->thread = thread;
11409   sm->location_breakpoint = location_breakpoint;
11410   sm->caller_breakpoint = caller_breakpoint;
11411
11412   return sm;
11413 }
11414
11415 /* Implementation of the 'should_stop' FSM method for the
11416    until(location)/advance commands.  */
11417
11418 static int
11419 until_break_fsm_should_stop (struct thread_fsm *self,
11420                              struct thread_info *tp)
11421 {
11422   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11423
11424   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11425                               sm->location_breakpoint) != NULL
11426       || (sm->caller_breakpoint != NULL
11427           && bpstat_find_breakpoint (tp->control.stop_bpstat,
11428                                      sm->caller_breakpoint) != NULL))
11429     thread_fsm_set_finished (self);
11430
11431   return 1;
11432 }
11433
11434 /* Implementation of the 'clean_up' FSM method for the
11435    until(location)/advance commands.  */
11436
11437 static void
11438 until_break_fsm_clean_up (struct thread_fsm *self,
11439                           struct thread_info *thread)
11440 {
11441   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11442
11443   /* Clean up our temporary breakpoints.  */
11444   if (sm->location_breakpoint != NULL)
11445     {
11446       delete_breakpoint (sm->location_breakpoint);
11447       sm->location_breakpoint = NULL;
11448     }
11449   if (sm->caller_breakpoint != NULL)
11450     {
11451       delete_breakpoint (sm->caller_breakpoint);
11452       sm->caller_breakpoint = NULL;
11453     }
11454   delete_longjmp_breakpoint (sm->thread);
11455 }
11456
11457 /* Implementation of the 'async_reply_reason' FSM method for the
11458    until(location)/advance commands.  */
11459
11460 static enum async_reply_reason
11461 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11462 {
11463   return EXEC_ASYNC_LOCATION_REACHED;
11464 }
11465
11466 void
11467 until_break_command (char *arg, int from_tty, int anywhere)
11468 {
11469   struct frame_info *frame;
11470   struct gdbarch *frame_gdbarch;
11471   struct frame_id stack_frame_id;
11472   struct frame_id caller_frame_id;
11473   struct breakpoint *location_breakpoint;
11474   struct breakpoint *caller_breakpoint = NULL;
11475   struct cleanup *old_chain;
11476   int thread;
11477   struct thread_info *tp;
11478   struct until_break_fsm *sm;
11479
11480   clear_proceed_status (0);
11481
11482   /* Set a breakpoint where the user wants it and at return from
11483      this function.  */
11484
11485   event_location_up location = string_to_event_location (&arg, current_language);
11486
11487   std::vector<symtab_and_line> sals
11488     = (last_displayed_sal_is_valid ()
11489        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11490                         get_last_displayed_symtab (),
11491                         get_last_displayed_line ())
11492        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11493                         NULL, (struct symtab *) NULL, 0));
11494
11495   if (sals.size () != 1)
11496     error (_("Couldn't get information on specified line."));
11497
11498   symtab_and_line &sal = sals[0];
11499
11500   if (*arg)
11501     error (_("Junk at end of arguments."));
11502
11503   resolve_sal_pc (&sal);
11504
11505   tp = inferior_thread ();
11506   thread = tp->global_num;
11507
11508   old_chain = make_cleanup (null_cleanup, NULL);
11509
11510   /* Note linespec handling above invalidates the frame chain.
11511      Installing a breakpoint also invalidates the frame chain (as it
11512      may need to switch threads), so do any frame handling before
11513      that.  */
11514
11515   frame = get_selected_frame (NULL);
11516   frame_gdbarch = get_frame_arch (frame);
11517   stack_frame_id = get_stack_frame_id (frame);
11518   caller_frame_id = frame_unwind_caller_id (frame);
11519
11520   /* Keep within the current frame, or in frames called by the current
11521      one.  */
11522
11523   if (frame_id_p (caller_frame_id))
11524     {
11525       struct symtab_and_line sal2;
11526       struct gdbarch *caller_gdbarch;
11527
11528       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11529       sal2.pc = frame_unwind_caller_pc (frame);
11530       caller_gdbarch = frame_unwind_caller_arch (frame);
11531       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11532                                                     sal2,
11533                                                     caller_frame_id,
11534                                                     bp_until);
11535       make_cleanup_delete_breakpoint (caller_breakpoint);
11536
11537       set_longjmp_breakpoint (tp, caller_frame_id);
11538       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11539     }
11540
11541   /* set_momentary_breakpoint could invalidate FRAME.  */
11542   frame = NULL;
11543
11544   if (anywhere)
11545     /* If the user told us to continue until a specified location,
11546        we don't specify a frame at which we need to stop.  */
11547     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11548                                                     null_frame_id, bp_until);
11549   else
11550     /* Otherwise, specify the selected frame, because we want to stop
11551        only at the very same frame.  */
11552     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11553                                                     stack_frame_id, bp_until);
11554   make_cleanup_delete_breakpoint (location_breakpoint);
11555
11556   sm = new_until_break_fsm (command_interp (), tp->global_num,
11557                             location_breakpoint, caller_breakpoint);
11558   tp->thread_fsm = &sm->thread_fsm;
11559
11560   discard_cleanups (old_chain);
11561
11562   proceed (-1, GDB_SIGNAL_DEFAULT);
11563 }
11564
11565 /* This function attempts to parse an optional "if <cond>" clause
11566    from the arg string.  If one is not found, it returns NULL.
11567
11568    Else, it returns a pointer to the condition string.  (It does not
11569    attempt to evaluate the string against a particular block.)  And,
11570    it updates arg to point to the first character following the parsed
11571    if clause in the arg string.  */
11572
11573 const char *
11574 ep_parse_optional_if_clause (const char **arg)
11575 {
11576   const char *cond_string;
11577
11578   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11579     return NULL;
11580
11581   /* Skip the "if" keyword.  */
11582   (*arg) += 2;
11583
11584   /* Skip any extra leading whitespace, and record the start of the
11585      condition string.  */
11586   *arg = skip_spaces (*arg);
11587   cond_string = *arg;
11588
11589   /* Assume that the condition occupies the remainder of the arg
11590      string.  */
11591   (*arg) += strlen (cond_string);
11592
11593   return cond_string;
11594 }
11595
11596 /* Commands to deal with catching events, such as signals, exceptions,
11597    process start/exit, etc.  */
11598
11599 typedef enum
11600 {
11601   catch_fork_temporary, catch_vfork_temporary,
11602   catch_fork_permanent, catch_vfork_permanent
11603 }
11604 catch_fork_kind;
11605
11606 static void
11607 catch_fork_command_1 (char *arg_entry, int from_tty,
11608                       struct cmd_list_element *command)
11609 {
11610   const char *arg = arg_entry;
11611   struct gdbarch *gdbarch = get_current_arch ();
11612   const char *cond_string = NULL;
11613   catch_fork_kind fork_kind;
11614   int tempflag;
11615
11616   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11617   tempflag = (fork_kind == catch_fork_temporary
11618               || fork_kind == catch_vfork_temporary);
11619
11620   if (!arg)
11621     arg = "";
11622   arg = skip_spaces (arg);
11623
11624   /* The allowed syntax is:
11625      catch [v]fork
11626      catch [v]fork if <cond>
11627
11628      First, check if there's an if clause.  */
11629   cond_string = ep_parse_optional_if_clause (&arg);
11630
11631   if ((*arg != '\0') && !isspace (*arg))
11632     error (_("Junk at end of arguments."));
11633
11634   /* If this target supports it, create a fork or vfork catchpoint
11635      and enable reporting of such events.  */
11636   switch (fork_kind)
11637     {
11638     case catch_fork_temporary:
11639     case catch_fork_permanent:
11640       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11641                                           &catch_fork_breakpoint_ops);
11642       break;
11643     case catch_vfork_temporary:
11644     case catch_vfork_permanent:
11645       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11646                                           &catch_vfork_breakpoint_ops);
11647       break;
11648     default:
11649       error (_("unsupported or unknown fork kind; cannot catch it"));
11650       break;
11651     }
11652 }
11653
11654 static void
11655 catch_exec_command_1 (char *arg_entry, int from_tty,
11656                       struct cmd_list_element *command)
11657 {
11658   const char *arg = arg_entry;
11659   struct gdbarch *gdbarch = get_current_arch ();
11660   int tempflag;
11661   const char *cond_string = NULL;
11662
11663   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11664
11665   if (!arg)
11666     arg = "";
11667   arg = skip_spaces (arg);
11668
11669   /* The allowed syntax is:
11670      catch exec
11671      catch exec if <cond>
11672
11673      First, check if there's an if clause.  */
11674   cond_string = ep_parse_optional_if_clause (&arg);
11675
11676   if ((*arg != '\0') && !isspace (*arg))
11677     error (_("Junk at end of arguments."));
11678
11679   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11680   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11681                    &catch_exec_breakpoint_ops);
11682   c->exec_pathname = NULL;
11683
11684   install_breakpoint (0, std::move (c), 1);
11685 }
11686
11687 void
11688 init_ada_exception_breakpoint (struct breakpoint *b,
11689                                struct gdbarch *gdbarch,
11690                                struct symtab_and_line sal,
11691                                char *addr_string,
11692                                const struct breakpoint_ops *ops,
11693                                int tempflag,
11694                                int enabled,
11695                                int from_tty)
11696 {
11697   if (from_tty)
11698     {
11699       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11700       if (!loc_gdbarch)
11701         loc_gdbarch = gdbarch;
11702
11703       describe_other_breakpoints (loc_gdbarch,
11704                                   sal.pspace, sal.pc, sal.section, -1);
11705       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11706          version for exception catchpoints, because two catchpoints
11707          used for different exception names will use the same address.
11708          In this case, a "breakpoint ... also set at..." warning is
11709          unproductive.  Besides, the warning phrasing is also a bit
11710          inappropriate, we should use the word catchpoint, and tell
11711          the user what type of catchpoint it is.  The above is good
11712          enough for now, though.  */
11713     }
11714
11715   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11716
11717   b->enable_state = enabled ? bp_enabled : bp_disabled;
11718   b->disposition = tempflag ? disp_del : disp_donttouch;
11719   b->location = string_to_event_location (&addr_string,
11720                                           language_def (language_ada));
11721   b->language = language_ada;
11722 }
11723
11724 static void
11725 catch_command (char *arg, int from_tty)
11726 {
11727   error (_("Catch requires an event name."));
11728 }
11729 \f
11730
11731 static void
11732 tcatch_command (char *arg, int from_tty)
11733 {
11734   error (_("Catch requires an event name."));
11735 }
11736
11737 /* A qsort comparison function that sorts breakpoints in order.  */
11738
11739 static int
11740 compare_breakpoints (const void *a, const void *b)
11741 {
11742   const breakpoint_p *ba = (const breakpoint_p *) a;
11743   uintptr_t ua = (uintptr_t) *ba;
11744   const breakpoint_p *bb = (const breakpoint_p *) b;
11745   uintptr_t ub = (uintptr_t) *bb;
11746
11747   if ((*ba)->number < (*bb)->number)
11748     return -1;
11749   else if ((*ba)->number > (*bb)->number)
11750     return 1;
11751
11752   /* Now sort by address, in case we see, e..g, two breakpoints with
11753      the number 0.  */
11754   if (ua < ub)
11755     return -1;
11756   return ua > ub ? 1 : 0;
11757 }
11758
11759 /* Delete breakpoints by address or line.  */
11760
11761 static void
11762 clear_command (char *arg, int from_tty)
11763 {
11764   struct breakpoint *b, *prev;
11765   VEC(breakpoint_p) *found = 0;
11766   int ix;
11767   int default_match;
11768   int i;
11769   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11770
11771   std::vector<symtab_and_line> decoded_sals;
11772   symtab_and_line last_sal;
11773   gdb::array_view<symtab_and_line> sals;
11774   if (arg)
11775     {
11776       decoded_sals
11777         = decode_line_with_current_source (arg,
11778                                            (DECODE_LINE_FUNFIRSTLINE
11779                                             | DECODE_LINE_LIST_MODE));
11780       default_match = 0;
11781       sals = decoded_sals;
11782     }
11783   else
11784     {
11785       /* Set sal's line, symtab, pc, and pspace to the values
11786          corresponding to the last call to print_frame_info.  If the
11787          codepoint is not valid, this will set all the fields to 0.  */
11788       last_sal = get_last_displayed_sal ();
11789       if (last_sal.symtab == 0)
11790         error (_("No source file specified."));
11791
11792       default_match = 1;
11793       sals = last_sal;
11794     }
11795
11796   /* We don't call resolve_sal_pc here.  That's not as bad as it
11797      seems, because all existing breakpoints typically have both
11798      file/line and pc set.  So, if clear is given file/line, we can
11799      match this to existing breakpoint without obtaining pc at all.
11800
11801      We only support clearing given the address explicitly 
11802      present in breakpoint table.  Say, we've set breakpoint 
11803      at file:line.  There were several PC values for that file:line,
11804      due to optimization, all in one block.
11805
11806      We've picked one PC value.  If "clear" is issued with another
11807      PC corresponding to the same file:line, the breakpoint won't
11808      be cleared.  We probably can still clear the breakpoint, but 
11809      since the other PC value is never presented to user, user
11810      can only find it by guessing, and it does not seem important
11811      to support that.  */
11812
11813   /* For each line spec given, delete bps which correspond to it.  Do
11814      it in two passes, solely to preserve the current behavior that
11815      from_tty is forced true if we delete more than one
11816      breakpoint.  */
11817
11818   found = NULL;
11819   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11820   for (const auto &sal : sals)
11821     {
11822       const char *sal_fullname;
11823
11824       /* If exact pc given, clear bpts at that pc.
11825          If line given (pc == 0), clear all bpts on specified line.
11826          If defaulting, clear all bpts on default line
11827          or at default pc.
11828
11829          defaulting    sal.pc != 0    tests to do
11830
11831          0              1             pc
11832          1              1             pc _and_ line
11833          0              0             line
11834          1              0             <can't happen> */
11835
11836       sal_fullname = (sal.symtab == NULL
11837                       ? NULL : symtab_to_fullname (sal.symtab));
11838
11839       /* Find all matching breakpoints and add them to 'found'.  */
11840       ALL_BREAKPOINTS (b)
11841         {
11842           int match = 0;
11843           /* Are we going to delete b?  */
11844           if (b->type != bp_none && !is_watchpoint (b))
11845             {
11846               struct bp_location *loc = b->loc;
11847               for (; loc; loc = loc->next)
11848                 {
11849                   /* If the user specified file:line, don't allow a PC
11850                      match.  This matches historical gdb behavior.  */
11851                   int pc_match = (!sal.explicit_line
11852                                   && sal.pc
11853                                   && (loc->pspace == sal.pspace)
11854                                   && (loc->address == sal.pc)
11855                                   && (!section_is_overlay (loc->section)
11856                                       || loc->section == sal.section));
11857                   int line_match = 0;
11858
11859                   if ((default_match || sal.explicit_line)
11860                       && loc->symtab != NULL
11861                       && sal_fullname != NULL
11862                       && sal.pspace == loc->pspace
11863                       && loc->line_number == sal.line
11864                       && filename_cmp (symtab_to_fullname (loc->symtab),
11865                                        sal_fullname) == 0)
11866                     line_match = 1;
11867
11868                   if (pc_match || line_match)
11869                     {
11870                       match = 1;
11871                       break;
11872                     }
11873                 }
11874             }
11875
11876           if (match)
11877             VEC_safe_push(breakpoint_p, found, b);
11878         }
11879     }
11880
11881   /* Now go thru the 'found' chain and delete them.  */
11882   if (VEC_empty(breakpoint_p, found))
11883     {
11884       if (arg)
11885         error (_("No breakpoint at %s."), arg);
11886       else
11887         error (_("No breakpoint at this line."));
11888     }
11889
11890   /* Remove duplicates from the vec.  */
11891   qsort (VEC_address (breakpoint_p, found),
11892          VEC_length (breakpoint_p, found),
11893          sizeof (breakpoint_p),
11894          compare_breakpoints);
11895   prev = VEC_index (breakpoint_p, found, 0);
11896   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11897     {
11898       if (b == prev)
11899         {
11900           VEC_ordered_remove (breakpoint_p, found, ix);
11901           --ix;
11902         }
11903     }
11904
11905   if (VEC_length(breakpoint_p, found) > 1)
11906     from_tty = 1;       /* Always report if deleted more than one.  */
11907   if (from_tty)
11908     {
11909       if (VEC_length(breakpoint_p, found) == 1)
11910         printf_unfiltered (_("Deleted breakpoint "));
11911       else
11912         printf_unfiltered (_("Deleted breakpoints "));
11913     }
11914
11915   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11916     {
11917       if (from_tty)
11918         printf_unfiltered ("%d ", b->number);
11919       delete_breakpoint (b);
11920     }
11921   if (from_tty)
11922     putchar_unfiltered ('\n');
11923
11924   do_cleanups (cleanups);
11925 }
11926 \f
11927 /* Delete breakpoint in BS if they are `delete' breakpoints and
11928    all breakpoints that are marked for deletion, whether hit or not.
11929    This is called after any breakpoint is hit, or after errors.  */
11930
11931 void
11932 breakpoint_auto_delete (bpstat bs)
11933 {
11934   struct breakpoint *b, *b_tmp;
11935
11936   for (; bs; bs = bs->next)
11937     if (bs->breakpoint_at
11938         && bs->breakpoint_at->disposition == disp_del
11939         && bs->stop)
11940       delete_breakpoint (bs->breakpoint_at);
11941
11942   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11943   {
11944     if (b->disposition == disp_del_at_next_stop)
11945       delete_breakpoint (b);
11946   }
11947 }
11948
11949 /* A comparison function for bp_location AP and BP being interfaced to
11950    qsort.  Sort elements primarily by their ADDRESS (no matter what
11951    does breakpoint_address_is_meaningful say for its OWNER),
11952    secondarily by ordering first permanent elements and
11953    terciarily just ensuring the array is sorted stable way despite
11954    qsort being an unstable algorithm.  */
11955
11956 static int
11957 bp_locations_compare (const void *ap, const void *bp)
11958 {
11959   const struct bp_location *a = *(const struct bp_location **) ap;
11960   const struct bp_location *b = *(const struct bp_location **) bp;
11961
11962   if (a->address != b->address)
11963     return (a->address > b->address) - (a->address < b->address);
11964
11965   /* Sort locations at the same address by their pspace number, keeping
11966      locations of the same inferior (in a multi-inferior environment)
11967      grouped.  */
11968
11969   if (a->pspace->num != b->pspace->num)
11970     return ((a->pspace->num > b->pspace->num)
11971             - (a->pspace->num < b->pspace->num));
11972
11973   /* Sort permanent breakpoints first.  */
11974   if (a->permanent != b->permanent)
11975     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11976
11977   /* Make the internal GDB representation stable across GDB runs
11978      where A and B memory inside GDB can differ.  Breakpoint locations of
11979      the same type at the same address can be sorted in arbitrary order.  */
11980
11981   if (a->owner->number != b->owner->number)
11982     return ((a->owner->number > b->owner->number)
11983             - (a->owner->number < b->owner->number));
11984
11985   return (a > b) - (a < b);
11986 }
11987
11988 /* Set bp_locations_placed_address_before_address_max and
11989    bp_locations_shadow_len_after_address_max according to the current
11990    content of the bp_locations array.  */
11991
11992 static void
11993 bp_locations_target_extensions_update (void)
11994 {
11995   struct bp_location *bl, **blp_tmp;
11996
11997   bp_locations_placed_address_before_address_max = 0;
11998   bp_locations_shadow_len_after_address_max = 0;
11999
12000   ALL_BP_LOCATIONS (bl, blp_tmp)
12001     {
12002       CORE_ADDR start, end, addr;
12003
12004       if (!bp_location_has_shadow (bl))
12005         continue;
12006
12007       start = bl->target_info.placed_address;
12008       end = start + bl->target_info.shadow_len;
12009
12010       gdb_assert (bl->address >= start);
12011       addr = bl->address - start;
12012       if (addr > bp_locations_placed_address_before_address_max)
12013         bp_locations_placed_address_before_address_max = addr;
12014
12015       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12016
12017       gdb_assert (bl->address < end);
12018       addr = end - bl->address;
12019       if (addr > bp_locations_shadow_len_after_address_max)
12020         bp_locations_shadow_len_after_address_max = addr;
12021     }
12022 }
12023
12024 /* Download tracepoint locations if they haven't been.  */
12025
12026 static void
12027 download_tracepoint_locations (void)
12028 {
12029   struct breakpoint *b;
12030   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
12031
12032   scoped_restore_current_pspace_and_thread restore_pspace_thread;
12033
12034   ALL_TRACEPOINTS (b)
12035     {
12036       struct bp_location *bl;
12037       struct tracepoint *t;
12038       int bp_location_downloaded = 0;
12039
12040       if ((b->type == bp_fast_tracepoint
12041            ? !may_insert_fast_tracepoints
12042            : !may_insert_tracepoints))
12043         continue;
12044
12045       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12046         {
12047           if (target_can_download_tracepoint ())
12048             can_download_tracepoint = TRIBOOL_TRUE;
12049           else
12050             can_download_tracepoint = TRIBOOL_FALSE;
12051         }
12052
12053       if (can_download_tracepoint == TRIBOOL_FALSE)
12054         break;
12055
12056       for (bl = b->loc; bl; bl = bl->next)
12057         {
12058           /* In tracepoint, locations are _never_ duplicated, so
12059              should_be_inserted is equivalent to
12060              unduplicated_should_be_inserted.  */
12061           if (!should_be_inserted (bl) || bl->inserted)
12062             continue;
12063
12064           switch_to_program_space_and_thread (bl->pspace);
12065
12066           target_download_tracepoint (bl);
12067
12068           bl->inserted = 1;
12069           bp_location_downloaded = 1;
12070         }
12071       t = (struct tracepoint *) b;
12072       t->number_on_target = b->number;
12073       if (bp_location_downloaded)
12074         observer_notify_breakpoint_modified (b);
12075     }
12076 }
12077
12078 /* Swap the insertion/duplication state between two locations.  */
12079
12080 static void
12081 swap_insertion (struct bp_location *left, struct bp_location *right)
12082 {
12083   const int left_inserted = left->inserted;
12084   const int left_duplicate = left->duplicate;
12085   const int left_needs_update = left->needs_update;
12086   const struct bp_target_info left_target_info = left->target_info;
12087
12088   /* Locations of tracepoints can never be duplicated.  */
12089   if (is_tracepoint (left->owner))
12090     gdb_assert (!left->duplicate);
12091   if (is_tracepoint (right->owner))
12092     gdb_assert (!right->duplicate);
12093
12094   left->inserted = right->inserted;
12095   left->duplicate = right->duplicate;
12096   left->needs_update = right->needs_update;
12097   left->target_info = right->target_info;
12098   right->inserted = left_inserted;
12099   right->duplicate = left_duplicate;
12100   right->needs_update = left_needs_update;
12101   right->target_info = left_target_info;
12102 }
12103
12104 /* Force the re-insertion of the locations at ADDRESS.  This is called
12105    once a new/deleted/modified duplicate location is found and we are evaluating
12106    conditions on the target's side.  Such conditions need to be updated on
12107    the target.  */
12108
12109 static void
12110 force_breakpoint_reinsertion (struct bp_location *bl)
12111 {
12112   struct bp_location **locp = NULL, **loc2p;
12113   struct bp_location *loc;
12114   CORE_ADDR address = 0;
12115   int pspace_num;
12116
12117   address = bl->address;
12118   pspace_num = bl->pspace->num;
12119
12120   /* This is only meaningful if the target is
12121      evaluating conditions and if the user has
12122      opted for condition evaluation on the target's
12123      side.  */
12124   if (gdb_evaluates_breakpoint_condition_p ()
12125       || !target_supports_evaluation_of_breakpoint_conditions ())
12126     return;
12127
12128   /* Flag all breakpoint locations with this address and
12129      the same program space as the location
12130      as "its condition has changed".  We need to
12131      update the conditions on the target's side.  */
12132   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12133     {
12134       loc = *loc2p;
12135
12136       if (!is_breakpoint (loc->owner)
12137           || pspace_num != loc->pspace->num)
12138         continue;
12139
12140       /* Flag the location appropriately.  We use a different state to
12141          let everyone know that we already updated the set of locations
12142          with addr bl->address and program space bl->pspace.  This is so
12143          we don't have to keep calling these functions just to mark locations
12144          that have already been marked.  */
12145       loc->condition_changed = condition_updated;
12146
12147       /* Free the agent expression bytecode as well.  We will compute
12148          it later on.  */
12149       loc->cond_bytecode.reset ();
12150     }
12151 }
12152 /* Called whether new breakpoints are created, or existing breakpoints
12153    deleted, to update the global location list and recompute which
12154    locations are duplicate of which.
12155
12156    The INSERT_MODE flag determines whether locations may not, may, or
12157    shall be inserted now.  See 'enum ugll_insert_mode' for more
12158    info.  */
12159
12160 static void
12161 update_global_location_list (enum ugll_insert_mode insert_mode)
12162 {
12163   struct breakpoint *b;
12164   struct bp_location **locp, *loc;
12165   struct cleanup *cleanups;
12166   /* Last breakpoint location address that was marked for update.  */
12167   CORE_ADDR last_addr = 0;
12168   /* Last breakpoint location program space that was marked for update.  */
12169   int last_pspace_num = -1;
12170
12171   /* Used in the duplicates detection below.  When iterating over all
12172      bp_locations, points to the first bp_location of a given address.
12173      Breakpoints and watchpoints of different types are never
12174      duplicates of each other.  Keep one pointer for each type of
12175      breakpoint/watchpoint, so we only need to loop over all locations
12176      once.  */
12177   struct bp_location *bp_loc_first;  /* breakpoint */
12178   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12179   struct bp_location *awp_loc_first; /* access watchpoint */
12180   struct bp_location *rwp_loc_first; /* read watchpoint */
12181
12182   /* Saved former bp_locations array which we compare against the newly
12183      built bp_locations from the current state of ALL_BREAKPOINTS.  */
12184   struct bp_location **old_locations, **old_locp;
12185   unsigned old_locations_count;
12186
12187   old_locations = bp_locations;
12188   old_locations_count = bp_locations_count;
12189   bp_locations = NULL;
12190   bp_locations_count = 0;
12191   cleanups = make_cleanup (xfree, old_locations);
12192
12193   ALL_BREAKPOINTS (b)
12194     for (loc = b->loc; loc; loc = loc->next)
12195       bp_locations_count++;
12196
12197   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
12198   locp = bp_locations;
12199   ALL_BREAKPOINTS (b)
12200     for (loc = b->loc; loc; loc = loc->next)
12201       *locp++ = loc;
12202   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
12203          bp_locations_compare);
12204
12205   bp_locations_target_extensions_update ();
12206
12207   /* Identify bp_location instances that are no longer present in the
12208      new list, and therefore should be freed.  Note that it's not
12209      necessary that those locations should be removed from inferior --
12210      if there's another location at the same address (previously
12211      marked as duplicate), we don't need to remove/insert the
12212      location.
12213      
12214      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12215      and former bp_location array state respectively.  */
12216
12217   locp = bp_locations;
12218   for (old_locp = old_locations;
12219        old_locp < old_locations + old_locations_count;
12220        old_locp++)
12221     {
12222       struct bp_location *old_loc = *old_locp;
12223       struct bp_location **loc2p;
12224
12225       /* Tells if 'old_loc' is found among the new locations.  If
12226          not, we have to free it.  */
12227       int found_object = 0;
12228       /* Tells if the location should remain inserted in the target.  */
12229       int keep_in_target = 0;
12230       int removed = 0;
12231
12232       /* Skip LOCP entries which will definitely never be needed.
12233          Stop either at or being the one matching OLD_LOC.  */
12234       while (locp < bp_locations + bp_locations_count
12235              && (*locp)->address < old_loc->address)
12236         locp++;
12237
12238       for (loc2p = locp;
12239            (loc2p < bp_locations + bp_locations_count
12240             && (*loc2p)->address == old_loc->address);
12241            loc2p++)
12242         {
12243           /* Check if this is a new/duplicated location or a duplicated
12244              location that had its condition modified.  If so, we want to send
12245              its condition to the target if evaluation of conditions is taking
12246              place there.  */
12247           if ((*loc2p)->condition_changed == condition_modified
12248               && (last_addr != old_loc->address
12249                   || last_pspace_num != old_loc->pspace->num))
12250             {
12251               force_breakpoint_reinsertion (*loc2p);
12252               last_pspace_num = old_loc->pspace->num;
12253             }
12254
12255           if (*loc2p == old_loc)
12256             found_object = 1;
12257         }
12258
12259       /* We have already handled this address, update it so that we don't
12260          have to go through updates again.  */
12261       last_addr = old_loc->address;
12262
12263       /* Target-side condition evaluation: Handle deleted locations.  */
12264       if (!found_object)
12265         force_breakpoint_reinsertion (old_loc);
12266
12267       /* If this location is no longer present, and inserted, look if
12268          there's maybe a new location at the same address.  If so,
12269          mark that one inserted, and don't remove this one.  This is
12270          needed so that we don't have a time window where a breakpoint
12271          at certain location is not inserted.  */
12272
12273       if (old_loc->inserted)
12274         {
12275           /* If the location is inserted now, we might have to remove
12276              it.  */
12277
12278           if (found_object && should_be_inserted (old_loc))
12279             {
12280               /* The location is still present in the location list,
12281                  and still should be inserted.  Don't do anything.  */
12282               keep_in_target = 1;
12283             }
12284           else
12285             {
12286               /* This location still exists, but it won't be kept in the
12287                  target since it may have been disabled.  We proceed to
12288                  remove its target-side condition.  */
12289
12290               /* The location is either no longer present, or got
12291                  disabled.  See if there's another location at the
12292                  same address, in which case we don't need to remove
12293                  this one from the target.  */
12294
12295               /* OLD_LOC comes from existing struct breakpoint.  */
12296               if (breakpoint_address_is_meaningful (old_loc->owner))
12297                 {
12298                   for (loc2p = locp;
12299                        (loc2p < bp_locations + bp_locations_count
12300                         && (*loc2p)->address == old_loc->address);
12301                        loc2p++)
12302                     {
12303                       struct bp_location *loc2 = *loc2p;
12304
12305                       if (breakpoint_locations_match (loc2, old_loc))
12306                         {
12307                           /* Read watchpoint locations are switched to
12308                              access watchpoints, if the former are not
12309                              supported, but the latter are.  */
12310                           if (is_hardware_watchpoint (old_loc->owner))
12311                             {
12312                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12313                               loc2->watchpoint_type = old_loc->watchpoint_type;
12314                             }
12315
12316                           /* loc2 is a duplicated location. We need to check
12317                              if it should be inserted in case it will be
12318                              unduplicated.  */
12319                           if (loc2 != old_loc
12320                               && unduplicated_should_be_inserted (loc2))
12321                             {
12322                               swap_insertion (old_loc, loc2);
12323                               keep_in_target = 1;
12324                               break;
12325                             }
12326                         }
12327                     }
12328                 }
12329             }
12330
12331           if (!keep_in_target)
12332             {
12333               if (remove_breakpoint (old_loc))
12334                 {
12335                   /* This is just about all we can do.  We could keep
12336                      this location on the global list, and try to
12337                      remove it next time, but there's no particular
12338                      reason why we will succeed next time.
12339                      
12340                      Note that at this point, old_loc->owner is still
12341                      valid, as delete_breakpoint frees the breakpoint
12342                      only after calling us.  */
12343                   printf_filtered (_("warning: Error removing "
12344                                      "breakpoint %d\n"), 
12345                                    old_loc->owner->number);
12346                 }
12347               removed = 1;
12348             }
12349         }
12350
12351       if (!found_object)
12352         {
12353           if (removed && target_is_non_stop_p ()
12354               && need_moribund_for_location_type (old_loc))
12355             {
12356               /* This location was removed from the target.  In
12357                  non-stop mode, a race condition is possible where
12358                  we've removed a breakpoint, but stop events for that
12359                  breakpoint are already queued and will arrive later.
12360                  We apply an heuristic to be able to distinguish such
12361                  SIGTRAPs from other random SIGTRAPs: we keep this
12362                  breakpoint location for a bit, and will retire it
12363                  after we see some number of events.  The theory here
12364                  is that reporting of events should, "on the average",
12365                  be fair, so after a while we'll see events from all
12366                  threads that have anything of interest, and no longer
12367                  need to keep this breakpoint location around.  We
12368                  don't hold locations forever so to reduce chances of
12369                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12370                  SIGTRAP.
12371
12372                  The heuristic failing can be disastrous on
12373                  decr_pc_after_break targets.
12374
12375                  On decr_pc_after_break targets, like e.g., x86-linux,
12376                  if we fail to recognize a late breakpoint SIGTRAP,
12377                  because events_till_retirement has reached 0 too
12378                  soon, we'll fail to do the PC adjustment, and report
12379                  a random SIGTRAP to the user.  When the user resumes
12380                  the inferior, it will most likely immediately crash
12381                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12382                  corrupted, because of being resumed e.g., in the
12383                  middle of a multi-byte instruction, or skipped a
12384                  one-byte instruction.  This was actually seen happen
12385                  on native x86-linux, and should be less rare on
12386                  targets that do not support new thread events, like
12387                  remote, due to the heuristic depending on
12388                  thread_count.
12389
12390                  Mistaking a random SIGTRAP for a breakpoint trap
12391                  causes similar symptoms (PC adjustment applied when
12392                  it shouldn't), but then again, playing with SIGTRAPs
12393                  behind the debugger's back is asking for trouble.
12394
12395                  Since hardware watchpoint traps are always
12396                  distinguishable from other traps, so we don't need to
12397                  apply keep hardware watchpoint moribund locations
12398                  around.  We simply always ignore hardware watchpoint
12399                  traps we can no longer explain.  */
12400
12401               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12402               old_loc->owner = NULL;
12403
12404               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12405             }
12406           else
12407             {
12408               old_loc->owner = NULL;
12409               decref_bp_location (&old_loc);
12410             }
12411         }
12412     }
12413
12414   /* Rescan breakpoints at the same address and section, marking the
12415      first one as "first" and any others as "duplicates".  This is so
12416      that the bpt instruction is only inserted once.  If we have a
12417      permanent breakpoint at the same place as BPT, make that one the
12418      official one, and the rest as duplicates.  Permanent breakpoints
12419      are sorted first for the same address.
12420
12421      Do the same for hardware watchpoints, but also considering the
12422      watchpoint's type (regular/access/read) and length.  */
12423
12424   bp_loc_first = NULL;
12425   wp_loc_first = NULL;
12426   awp_loc_first = NULL;
12427   rwp_loc_first = NULL;
12428   ALL_BP_LOCATIONS (loc, locp)
12429     {
12430       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12431          non-NULL.  */
12432       struct bp_location **loc_first_p;
12433       b = loc->owner;
12434
12435       if (!unduplicated_should_be_inserted (loc)
12436           || !breakpoint_address_is_meaningful (b)
12437           /* Don't detect duplicate for tracepoint locations because they are
12438            never duplicated.  See the comments in field `duplicate' of
12439            `struct bp_location'.  */
12440           || is_tracepoint (b))
12441         {
12442           /* Clear the condition modification flag.  */
12443           loc->condition_changed = condition_unchanged;
12444           continue;
12445         }
12446
12447       if (b->type == bp_hardware_watchpoint)
12448         loc_first_p = &wp_loc_first;
12449       else if (b->type == bp_read_watchpoint)
12450         loc_first_p = &rwp_loc_first;
12451       else if (b->type == bp_access_watchpoint)
12452         loc_first_p = &awp_loc_first;
12453       else
12454         loc_first_p = &bp_loc_first;
12455
12456       if (*loc_first_p == NULL
12457           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12458           || !breakpoint_locations_match (loc, *loc_first_p))
12459         {
12460           *loc_first_p = loc;
12461           loc->duplicate = 0;
12462
12463           if (is_breakpoint (loc->owner) && loc->condition_changed)
12464             {
12465               loc->needs_update = 1;
12466               /* Clear the condition modification flag.  */
12467               loc->condition_changed = condition_unchanged;
12468             }
12469           continue;
12470         }
12471
12472
12473       /* This and the above ensure the invariant that the first location
12474          is not duplicated, and is the inserted one.
12475          All following are marked as duplicated, and are not inserted.  */
12476       if (loc->inserted)
12477         swap_insertion (loc, *loc_first_p);
12478       loc->duplicate = 1;
12479
12480       /* Clear the condition modification flag.  */
12481       loc->condition_changed = condition_unchanged;
12482     }
12483
12484   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12485     {
12486       if (insert_mode != UGLL_DONT_INSERT)
12487         insert_breakpoint_locations ();
12488       else
12489         {
12490           /* Even though the caller told us to not insert new
12491              locations, we may still need to update conditions on the
12492              target's side of breakpoints that were already inserted
12493              if the target is evaluating breakpoint conditions.  We
12494              only update conditions for locations that are marked
12495              "needs_update".  */
12496           update_inserted_breakpoint_locations ();
12497         }
12498     }
12499
12500   if (insert_mode != UGLL_DONT_INSERT)
12501     download_tracepoint_locations ();
12502
12503   do_cleanups (cleanups);
12504 }
12505
12506 void
12507 breakpoint_retire_moribund (void)
12508 {
12509   struct bp_location *loc;
12510   int ix;
12511
12512   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12513     if (--(loc->events_till_retirement) == 0)
12514       {
12515         decref_bp_location (&loc);
12516         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12517         --ix;
12518       }
12519 }
12520
12521 static void
12522 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12523 {
12524
12525   TRY
12526     {
12527       update_global_location_list (insert_mode);
12528     }
12529   CATCH (e, RETURN_MASK_ERROR)
12530     {
12531     }
12532   END_CATCH
12533 }
12534
12535 /* Clear BKP from a BPS.  */
12536
12537 static void
12538 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12539 {
12540   bpstat bs;
12541
12542   for (bs = bps; bs; bs = bs->next)
12543     if (bs->breakpoint_at == bpt)
12544       {
12545         bs->breakpoint_at = NULL;
12546         bs->old_val = NULL;
12547         /* bs->commands will be freed later.  */
12548       }
12549 }
12550
12551 /* Callback for iterate_over_threads.  */
12552 static int
12553 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12554 {
12555   struct breakpoint *bpt = (struct breakpoint *) data;
12556
12557   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12558   return 0;
12559 }
12560
12561 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12562    callbacks.  */
12563
12564 static void
12565 say_where (struct breakpoint *b)
12566 {
12567   struct value_print_options opts;
12568
12569   get_user_print_options (&opts);
12570
12571   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12572      single string.  */
12573   if (b->loc == NULL)
12574     {
12575       /* For pending locations, the output differs slightly based
12576          on b->extra_string.  If this is non-NULL, it contains either
12577          a condition or dprintf arguments.  */
12578       if (b->extra_string == NULL)
12579         {
12580           printf_filtered (_(" (%s) pending."),
12581                            event_location_to_string (b->location.get ()));
12582         }
12583       else if (b->type == bp_dprintf)
12584         {
12585           printf_filtered (_(" (%s,%s) pending."),
12586                            event_location_to_string (b->location.get ()),
12587                            b->extra_string);
12588         }
12589       else
12590         {
12591           printf_filtered (_(" (%s %s) pending."),
12592                            event_location_to_string (b->location.get ()),
12593                            b->extra_string);
12594         }
12595     }
12596   else
12597     {
12598       if (opts.addressprint || b->loc->symtab == NULL)
12599         {
12600           printf_filtered (" at ");
12601           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12602                           gdb_stdout);
12603         }
12604       if (b->loc->symtab != NULL)
12605         {
12606           /* If there is a single location, we can print the location
12607              more nicely.  */
12608           if (b->loc->next == NULL)
12609             printf_filtered (": file %s, line %d.",
12610                              symtab_to_filename_for_display (b->loc->symtab),
12611                              b->loc->line_number);
12612           else
12613             /* This is not ideal, but each location may have a
12614                different file name, and this at least reflects the
12615                real situation somewhat.  */
12616             printf_filtered (": %s.",
12617                              event_location_to_string (b->location.get ()));
12618         }
12619
12620       if (b->loc->next)
12621         {
12622           struct bp_location *loc = b->loc;
12623           int n = 0;
12624           for (; loc; loc = loc->next)
12625             ++n;
12626           printf_filtered (" (%d locations)", n);
12627         }
12628     }
12629 }
12630
12631 /* Default bp_location_ops methods.  */
12632
12633 static void
12634 bp_location_dtor (struct bp_location *self)
12635 {
12636   xfree (self->function_name);
12637 }
12638
12639 static const struct bp_location_ops bp_location_ops =
12640 {
12641   bp_location_dtor
12642 };
12643
12644 /* Destructor for the breakpoint base class.  */
12645
12646 breakpoint::~breakpoint ()
12647 {
12648   decref_counted_command_line (&this->commands);
12649   xfree (this->cond_string);
12650   xfree (this->extra_string);
12651   xfree (this->filter);
12652 }
12653
12654 static struct bp_location *
12655 base_breakpoint_allocate_location (struct breakpoint *self)
12656 {
12657   return new bp_location (&bp_location_ops, self);
12658 }
12659
12660 static void
12661 base_breakpoint_re_set (struct breakpoint *b)
12662 {
12663   /* Nothing to re-set. */
12664 }
12665
12666 #define internal_error_pure_virtual_called() \
12667   gdb_assert_not_reached ("pure virtual function called")
12668
12669 static int
12670 base_breakpoint_insert_location (struct bp_location *bl)
12671 {
12672   internal_error_pure_virtual_called ();
12673 }
12674
12675 static int
12676 base_breakpoint_remove_location (struct bp_location *bl,
12677                                  enum remove_bp_reason reason)
12678 {
12679   internal_error_pure_virtual_called ();
12680 }
12681
12682 static int
12683 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12684                                 struct address_space *aspace,
12685                                 CORE_ADDR bp_addr,
12686                                 const struct target_waitstatus *ws)
12687 {
12688   internal_error_pure_virtual_called ();
12689 }
12690
12691 static void
12692 base_breakpoint_check_status (bpstat bs)
12693 {
12694   /* Always stop.   */
12695 }
12696
12697 /* A "works_in_software_mode" breakpoint_ops method that just internal
12698    errors.  */
12699
12700 static int
12701 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12702 {
12703   internal_error_pure_virtual_called ();
12704 }
12705
12706 /* A "resources_needed" breakpoint_ops method that just internal
12707    errors.  */
12708
12709 static int
12710 base_breakpoint_resources_needed (const struct bp_location *bl)
12711 {
12712   internal_error_pure_virtual_called ();
12713 }
12714
12715 static enum print_stop_action
12716 base_breakpoint_print_it (bpstat bs)
12717 {
12718   internal_error_pure_virtual_called ();
12719 }
12720
12721 static void
12722 base_breakpoint_print_one_detail (const struct breakpoint *self,
12723                                   struct ui_out *uiout)
12724 {
12725   /* nothing */
12726 }
12727
12728 static void
12729 base_breakpoint_print_mention (struct breakpoint *b)
12730 {
12731   internal_error_pure_virtual_called ();
12732 }
12733
12734 static void
12735 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12736 {
12737   internal_error_pure_virtual_called ();
12738 }
12739
12740 static void
12741 base_breakpoint_create_sals_from_location
12742   (const struct event_location *location,
12743    struct linespec_result *canonical,
12744    enum bptype type_wanted)
12745 {
12746   internal_error_pure_virtual_called ();
12747 }
12748
12749 static void
12750 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12751                                         struct linespec_result *c,
12752                                         gdb::unique_xmalloc_ptr<char> cond_string,
12753                                         gdb::unique_xmalloc_ptr<char> extra_string,
12754                                         enum bptype type_wanted,
12755                                         enum bpdisp disposition,
12756                                         int thread,
12757                                         int task, int ignore_count,
12758                                         const struct breakpoint_ops *o,
12759                                         int from_tty, int enabled,
12760                                         int internal, unsigned flags)
12761 {
12762   internal_error_pure_virtual_called ();
12763 }
12764
12765 static std::vector<symtab_and_line>
12766 base_breakpoint_decode_location (struct breakpoint *b,
12767                                  const struct event_location *location,
12768                                  struct program_space *search_pspace)
12769 {
12770   internal_error_pure_virtual_called ();
12771 }
12772
12773 /* The default 'explains_signal' method.  */
12774
12775 static int
12776 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12777 {
12778   return 1;
12779 }
12780
12781 /* The default "after_condition_true" method.  */
12782
12783 static void
12784 base_breakpoint_after_condition_true (struct bpstats *bs)
12785 {
12786   /* Nothing to do.   */
12787 }
12788
12789 struct breakpoint_ops base_breakpoint_ops =
12790 {
12791   base_breakpoint_allocate_location,
12792   base_breakpoint_re_set,
12793   base_breakpoint_insert_location,
12794   base_breakpoint_remove_location,
12795   base_breakpoint_breakpoint_hit,
12796   base_breakpoint_check_status,
12797   base_breakpoint_resources_needed,
12798   base_breakpoint_works_in_software_mode,
12799   base_breakpoint_print_it,
12800   NULL,
12801   base_breakpoint_print_one_detail,
12802   base_breakpoint_print_mention,
12803   base_breakpoint_print_recreate,
12804   base_breakpoint_create_sals_from_location,
12805   base_breakpoint_create_breakpoints_sal,
12806   base_breakpoint_decode_location,
12807   base_breakpoint_explains_signal,
12808   base_breakpoint_after_condition_true,
12809 };
12810
12811 /* Default breakpoint_ops methods.  */
12812
12813 static void
12814 bkpt_re_set (struct breakpoint *b)
12815 {
12816   /* FIXME: is this still reachable?  */
12817   if (breakpoint_event_location_empty_p (b))
12818     {
12819       /* Anything without a location can't be re-set.  */
12820       delete_breakpoint (b);
12821       return;
12822     }
12823
12824   breakpoint_re_set_default (b);
12825 }
12826
12827 static int
12828 bkpt_insert_location (struct bp_location *bl)
12829 {
12830   CORE_ADDR addr = bl->target_info.reqstd_address;
12831
12832   bl->target_info.kind = breakpoint_kind (bl, &addr);
12833   bl->target_info.placed_address = addr;
12834
12835   if (bl->loc_type == bp_loc_hardware_breakpoint)
12836     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12837   else
12838     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12839 }
12840
12841 static int
12842 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12843 {
12844   if (bl->loc_type == bp_loc_hardware_breakpoint)
12845     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12846   else
12847     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12848 }
12849
12850 static int
12851 bkpt_breakpoint_hit (const struct bp_location *bl,
12852                      struct address_space *aspace, CORE_ADDR bp_addr,
12853                      const struct target_waitstatus *ws)
12854 {
12855   if (ws->kind != TARGET_WAITKIND_STOPPED
12856       || ws->value.sig != GDB_SIGNAL_TRAP)
12857     return 0;
12858
12859   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12860                                  aspace, bp_addr))
12861     return 0;
12862
12863   if (overlay_debugging         /* unmapped overlay section */
12864       && section_is_overlay (bl->section)
12865       && !section_is_mapped (bl->section))
12866     return 0;
12867
12868   return 1;
12869 }
12870
12871 static int
12872 dprintf_breakpoint_hit (const struct bp_location *bl,
12873                         struct address_space *aspace, CORE_ADDR bp_addr,
12874                         const struct target_waitstatus *ws)
12875 {
12876   if (dprintf_style == dprintf_style_agent
12877       && target_can_run_breakpoint_commands ())
12878     {
12879       /* An agent-style dprintf never causes a stop.  If we see a trap
12880          for this address it must be for a breakpoint that happens to
12881          be set at the same address.  */
12882       return 0;
12883     }
12884
12885   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12886 }
12887
12888 static int
12889 bkpt_resources_needed (const struct bp_location *bl)
12890 {
12891   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12892
12893   return 1;
12894 }
12895
12896 static enum print_stop_action
12897 bkpt_print_it (bpstat bs)
12898 {
12899   struct breakpoint *b;
12900   const struct bp_location *bl;
12901   int bp_temp;
12902   struct ui_out *uiout = current_uiout;
12903
12904   gdb_assert (bs->bp_location_at != NULL);
12905
12906   bl = bs->bp_location_at;
12907   b = bs->breakpoint_at;
12908
12909   bp_temp = b->disposition == disp_del;
12910   if (bl->address != bl->requested_address)
12911     breakpoint_adjustment_warning (bl->requested_address,
12912                                    bl->address,
12913                                    b->number, 1);
12914   annotate_breakpoint (b->number);
12915   maybe_print_thread_hit_breakpoint (uiout);
12916
12917   if (bp_temp)
12918     uiout->text ("Temporary breakpoint ");
12919   else
12920     uiout->text ("Breakpoint ");
12921   if (uiout->is_mi_like_p ())
12922     {
12923       uiout->field_string ("reason",
12924                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12925       uiout->field_string ("disp", bpdisp_text (b->disposition));
12926     }
12927   uiout->field_int ("bkptno", b->number);
12928   uiout->text (", ");
12929
12930   return PRINT_SRC_AND_LOC;
12931 }
12932
12933 static void
12934 bkpt_print_mention (struct breakpoint *b)
12935 {
12936   if (current_uiout->is_mi_like_p ())
12937     return;
12938
12939   switch (b->type)
12940     {
12941     case bp_breakpoint:
12942     case bp_gnu_ifunc_resolver:
12943       if (b->disposition == disp_del)
12944         printf_filtered (_("Temporary breakpoint"));
12945       else
12946         printf_filtered (_("Breakpoint"));
12947       printf_filtered (_(" %d"), b->number);
12948       if (b->type == bp_gnu_ifunc_resolver)
12949         printf_filtered (_(" at gnu-indirect-function resolver"));
12950       break;
12951     case bp_hardware_breakpoint:
12952       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12953       break;
12954     case bp_dprintf:
12955       printf_filtered (_("Dprintf %d"), b->number);
12956       break;
12957     }
12958
12959   say_where (b);
12960 }
12961
12962 static void
12963 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12964 {
12965   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12966     fprintf_unfiltered (fp, "tbreak");
12967   else if (tp->type == bp_breakpoint)
12968     fprintf_unfiltered (fp, "break");
12969   else if (tp->type == bp_hardware_breakpoint
12970            && tp->disposition == disp_del)
12971     fprintf_unfiltered (fp, "thbreak");
12972   else if (tp->type == bp_hardware_breakpoint)
12973     fprintf_unfiltered (fp, "hbreak");
12974   else
12975     internal_error (__FILE__, __LINE__,
12976                     _("unhandled breakpoint type %d"), (int) tp->type);
12977
12978   fprintf_unfiltered (fp, " %s",
12979                       event_location_to_string (tp->location.get ()));
12980
12981   /* Print out extra_string if this breakpoint is pending.  It might
12982      contain, for example, conditions that were set by the user.  */
12983   if (tp->loc == NULL && tp->extra_string != NULL)
12984     fprintf_unfiltered (fp, " %s", tp->extra_string);
12985
12986   print_recreate_thread (tp, fp);
12987 }
12988
12989 static void
12990 bkpt_create_sals_from_location (const struct event_location *location,
12991                                 struct linespec_result *canonical,
12992                                 enum bptype type_wanted)
12993 {
12994   create_sals_from_location_default (location, canonical, type_wanted);
12995 }
12996
12997 static void
12998 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12999                              struct linespec_result *canonical,
13000                              gdb::unique_xmalloc_ptr<char> cond_string,
13001                              gdb::unique_xmalloc_ptr<char> extra_string,
13002                              enum bptype type_wanted,
13003                              enum bpdisp disposition,
13004                              int thread,
13005                              int task, int ignore_count,
13006                              const struct breakpoint_ops *ops,
13007                              int from_tty, int enabled,
13008                              int internal, unsigned flags)
13009 {
13010   create_breakpoints_sal_default (gdbarch, canonical,
13011                                   std::move (cond_string),
13012                                   std::move (extra_string),
13013                                   type_wanted,
13014                                   disposition, thread, task,
13015                                   ignore_count, ops, from_tty,
13016                                   enabled, internal, flags);
13017 }
13018
13019 static std::vector<symtab_and_line>
13020 bkpt_decode_location (struct breakpoint *b,
13021                       const struct event_location *location,
13022                       struct program_space *search_pspace)
13023 {
13024   return decode_location_default (b, location, search_pspace);
13025 }
13026
13027 /* Virtual table for internal breakpoints.  */
13028
13029 static void
13030 internal_bkpt_re_set (struct breakpoint *b)
13031 {
13032   switch (b->type)
13033     {
13034       /* Delete overlay event and longjmp master breakpoints; they
13035          will be reset later by breakpoint_re_set.  */
13036     case bp_overlay_event:
13037     case bp_longjmp_master:
13038     case bp_std_terminate_master:
13039     case bp_exception_master:
13040       delete_breakpoint (b);
13041       break;
13042
13043       /* This breakpoint is special, it's set up when the inferior
13044          starts and we really don't want to touch it.  */
13045     case bp_shlib_event:
13046
13047       /* Like bp_shlib_event, this breakpoint type is special.  Once
13048          it is set up, we do not want to touch it.  */
13049     case bp_thread_event:
13050       break;
13051     }
13052 }
13053
13054 static void
13055 internal_bkpt_check_status (bpstat bs)
13056 {
13057   if (bs->breakpoint_at->type == bp_shlib_event)
13058     {
13059       /* If requested, stop when the dynamic linker notifies GDB of
13060          events.  This allows the user to get control and place
13061          breakpoints in initializer routines for dynamically loaded
13062          objects (among other things).  */
13063       bs->stop = stop_on_solib_events;
13064       bs->print = stop_on_solib_events;
13065     }
13066   else
13067     bs->stop = 0;
13068 }
13069
13070 static enum print_stop_action
13071 internal_bkpt_print_it (bpstat bs)
13072 {
13073   struct breakpoint *b;
13074
13075   b = bs->breakpoint_at;
13076
13077   switch (b->type)
13078     {
13079     case bp_shlib_event:
13080       /* Did we stop because the user set the stop_on_solib_events
13081          variable?  (If so, we report this as a generic, "Stopped due
13082          to shlib event" message.) */
13083       print_solib_event (0);
13084       break;
13085
13086     case bp_thread_event:
13087       /* Not sure how we will get here.
13088          GDB should not stop for these breakpoints.  */
13089       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13090       break;
13091
13092     case bp_overlay_event:
13093       /* By analogy with the thread event, GDB should not stop for these.  */
13094       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13095       break;
13096
13097     case bp_longjmp_master:
13098       /* These should never be enabled.  */
13099       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13100       break;
13101
13102     case bp_std_terminate_master:
13103       /* These should never be enabled.  */
13104       printf_filtered (_("std::terminate Master Breakpoint: "
13105                          "gdb should not stop!\n"));
13106       break;
13107
13108     case bp_exception_master:
13109       /* These should never be enabled.  */
13110       printf_filtered (_("Exception Master Breakpoint: "
13111                          "gdb should not stop!\n"));
13112       break;
13113     }
13114
13115   return PRINT_NOTHING;
13116 }
13117
13118 static void
13119 internal_bkpt_print_mention (struct breakpoint *b)
13120 {
13121   /* Nothing to mention.  These breakpoints are internal.  */
13122 }
13123
13124 /* Virtual table for momentary breakpoints  */
13125
13126 static void
13127 momentary_bkpt_re_set (struct breakpoint *b)
13128 {
13129   /* Keep temporary breakpoints, which can be encountered when we step
13130      over a dlopen call and solib_add is resetting the breakpoints.
13131      Otherwise these should have been blown away via the cleanup chain
13132      or by breakpoint_init_inferior when we rerun the executable.  */
13133 }
13134
13135 static void
13136 momentary_bkpt_check_status (bpstat bs)
13137 {
13138   /* Nothing.  The point of these breakpoints is causing a stop.  */
13139 }
13140
13141 static enum print_stop_action
13142 momentary_bkpt_print_it (bpstat bs)
13143 {
13144   return PRINT_UNKNOWN;
13145 }
13146
13147 static void
13148 momentary_bkpt_print_mention (struct breakpoint *b)
13149 {
13150   /* Nothing to mention.  These breakpoints are internal.  */
13151 }
13152
13153 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13154
13155    It gets cleared already on the removal of the first one of such placed
13156    breakpoints.  This is OK as they get all removed altogether.  */
13157
13158 longjmp_breakpoint::~longjmp_breakpoint ()
13159 {
13160   thread_info *tp = find_thread_global_id (this->thread);
13161
13162   if (tp != NULL)
13163     tp->initiating_frame = null_frame_id;
13164 }
13165
13166 /* Specific methods for probe breakpoints.  */
13167
13168 static int
13169 bkpt_probe_insert_location (struct bp_location *bl)
13170 {
13171   int v = bkpt_insert_location (bl);
13172
13173   if (v == 0)
13174     {
13175       /* The insertion was successful, now let's set the probe's semaphore
13176          if needed.  */
13177       if (bl->probe.probe->pops->set_semaphore != NULL)
13178         bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13179                                               bl->probe.objfile,
13180                                               bl->gdbarch);
13181     }
13182
13183   return v;
13184 }
13185
13186 static int
13187 bkpt_probe_remove_location (struct bp_location *bl,
13188                             enum remove_bp_reason reason)
13189 {
13190   /* Let's clear the semaphore before removing the location.  */
13191   if (bl->probe.probe->pops->clear_semaphore != NULL)
13192     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13193                                             bl->probe.objfile,
13194                                             bl->gdbarch);
13195
13196   return bkpt_remove_location (bl, reason);
13197 }
13198
13199 static void
13200 bkpt_probe_create_sals_from_location (const struct event_location *location,
13201                                       struct linespec_result *canonical,
13202                                       enum bptype type_wanted)
13203 {
13204   struct linespec_sals lsal;
13205
13206   lsal.sals = parse_probes (location, NULL, canonical);
13207   lsal.canonical
13208     = xstrdup (event_location_to_string (canonical->location.get ()));
13209   canonical->lsals.push_back (std::move (lsal));
13210 }
13211
13212 static std::vector<symtab_and_line>
13213 bkpt_probe_decode_location (struct breakpoint *b,
13214                             const struct event_location *location,
13215                             struct program_space *search_pspace)
13216 {
13217   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
13218   if (sals.empty ())
13219     error (_("probe not found"));
13220   return sals;
13221 }
13222
13223 /* The breakpoint_ops structure to be used in tracepoints.  */
13224
13225 static void
13226 tracepoint_re_set (struct breakpoint *b)
13227 {
13228   breakpoint_re_set_default (b);
13229 }
13230
13231 static int
13232 tracepoint_breakpoint_hit (const struct bp_location *bl,
13233                            struct address_space *aspace, CORE_ADDR bp_addr,
13234                            const struct target_waitstatus *ws)
13235 {
13236   /* By definition, the inferior does not report stops at
13237      tracepoints.  */
13238   return 0;
13239 }
13240
13241 static void
13242 tracepoint_print_one_detail (const struct breakpoint *self,
13243                              struct ui_out *uiout)
13244 {
13245   struct tracepoint *tp = (struct tracepoint *) self;
13246   if (tp->static_trace_marker_id)
13247     {
13248       gdb_assert (self->type == bp_static_tracepoint);
13249
13250       uiout->text ("\tmarker id is ");
13251       uiout->field_string ("static-tracepoint-marker-string-id",
13252                            tp->static_trace_marker_id);
13253       uiout->text ("\n");
13254     }
13255 }
13256
13257 static void
13258 tracepoint_print_mention (struct breakpoint *b)
13259 {
13260   if (current_uiout->is_mi_like_p ())
13261     return;
13262
13263   switch (b->type)
13264     {
13265     case bp_tracepoint:
13266       printf_filtered (_("Tracepoint"));
13267       printf_filtered (_(" %d"), b->number);
13268       break;
13269     case bp_fast_tracepoint:
13270       printf_filtered (_("Fast tracepoint"));
13271       printf_filtered (_(" %d"), b->number);
13272       break;
13273     case bp_static_tracepoint:
13274       printf_filtered (_("Static tracepoint"));
13275       printf_filtered (_(" %d"), b->number);
13276       break;
13277     default:
13278       internal_error (__FILE__, __LINE__,
13279                       _("unhandled tracepoint type %d"), (int) b->type);
13280     }
13281
13282   say_where (b);
13283 }
13284
13285 static void
13286 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13287 {
13288   struct tracepoint *tp = (struct tracepoint *) self;
13289
13290   if (self->type == bp_fast_tracepoint)
13291     fprintf_unfiltered (fp, "ftrace");
13292   else if (self->type == bp_static_tracepoint)
13293     fprintf_unfiltered (fp, "strace");
13294   else if (self->type == bp_tracepoint)
13295     fprintf_unfiltered (fp, "trace");
13296   else
13297     internal_error (__FILE__, __LINE__,
13298                     _("unhandled tracepoint type %d"), (int) self->type);
13299
13300   fprintf_unfiltered (fp, " %s",
13301                       event_location_to_string (self->location.get ()));
13302   print_recreate_thread (self, fp);
13303
13304   if (tp->pass_count)
13305     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13306 }
13307
13308 static void
13309 tracepoint_create_sals_from_location (const struct event_location *location,
13310                                       struct linespec_result *canonical,
13311                                       enum bptype type_wanted)
13312 {
13313   create_sals_from_location_default (location, canonical, type_wanted);
13314 }
13315
13316 static void
13317 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13318                                    struct linespec_result *canonical,
13319                                    gdb::unique_xmalloc_ptr<char> cond_string,
13320                                    gdb::unique_xmalloc_ptr<char> extra_string,
13321                                    enum bptype type_wanted,
13322                                    enum bpdisp disposition,
13323                                    int thread,
13324                                    int task, int ignore_count,
13325                                    const struct breakpoint_ops *ops,
13326                                    int from_tty, int enabled,
13327                                    int internal, unsigned flags)
13328 {
13329   create_breakpoints_sal_default (gdbarch, canonical,
13330                                   std::move (cond_string),
13331                                   std::move (extra_string),
13332                                   type_wanted,
13333                                   disposition, thread, task,
13334                                   ignore_count, ops, from_tty,
13335                                   enabled, internal, flags);
13336 }
13337
13338 static std::vector<symtab_and_line>
13339 tracepoint_decode_location (struct breakpoint *b,
13340                             const struct event_location *location,
13341                             struct program_space *search_pspace)
13342 {
13343   return decode_location_default (b, location, search_pspace);
13344 }
13345
13346 struct breakpoint_ops tracepoint_breakpoint_ops;
13347
13348 /* The breakpoint_ops structure to be use on tracepoints placed in a
13349    static probe.  */
13350
13351 static void
13352 tracepoint_probe_create_sals_from_location
13353   (const struct event_location *location,
13354    struct linespec_result *canonical,
13355    enum bptype type_wanted)
13356 {
13357   /* We use the same method for breakpoint on probes.  */
13358   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13359 }
13360
13361 static std::vector<symtab_and_line>
13362 tracepoint_probe_decode_location (struct breakpoint *b,
13363                                   const struct event_location *location,
13364                                   struct program_space *search_pspace)
13365 {
13366   /* We use the same method for breakpoint on probes.  */
13367   return bkpt_probe_decode_location (b, location, search_pspace);
13368 }
13369
13370 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13371
13372 /* Dprintf breakpoint_ops methods.  */
13373
13374 static void
13375 dprintf_re_set (struct breakpoint *b)
13376 {
13377   breakpoint_re_set_default (b);
13378
13379   /* extra_string should never be non-NULL for dprintf.  */
13380   gdb_assert (b->extra_string != NULL);
13381
13382   /* 1 - connect to target 1, that can run breakpoint commands.
13383      2 - create a dprintf, which resolves fine.
13384      3 - disconnect from target 1
13385      4 - connect to target 2, that can NOT run breakpoint commands.
13386
13387      After steps #3/#4, you'll want the dprintf command list to
13388      be updated, because target 1 and 2 may well return different
13389      answers for target_can_run_breakpoint_commands().
13390      Given absence of finer grained resetting, we get to do
13391      it all the time.  */
13392   if (b->extra_string != NULL)
13393     update_dprintf_command_list (b);
13394 }
13395
13396 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13397
13398 static void
13399 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13400 {
13401   fprintf_unfiltered (fp, "dprintf %s,%s",
13402                       event_location_to_string (tp->location.get ()),
13403                       tp->extra_string);
13404   print_recreate_thread (tp, fp);
13405 }
13406
13407 /* Implement the "after_condition_true" breakpoint_ops method for
13408    dprintf.
13409
13410    dprintf's are implemented with regular commands in their command
13411    list, but we run the commands here instead of before presenting the
13412    stop to the user, as dprintf's don't actually cause a stop.  This
13413    also makes it so that the commands of multiple dprintfs at the same
13414    address are all handled.  */
13415
13416 static void
13417 dprintf_after_condition_true (struct bpstats *bs)
13418 {
13419   struct cleanup *old_chain;
13420   struct bpstats tmp_bs = { NULL };
13421   struct bpstats *tmp_bs_p = &tmp_bs;
13422
13423   /* dprintf's never cause a stop.  This wasn't set in the
13424      check_status hook instead because that would make the dprintf's
13425      condition not be evaluated.  */
13426   bs->stop = 0;
13427
13428   /* Run the command list here.  Take ownership of it instead of
13429      copying.  We never want these commands to run later in
13430      bpstat_do_actions, if a breakpoint that causes a stop happens to
13431      be set at same address as this dprintf, or even if running the
13432      commands here throws.  */
13433   tmp_bs.commands = bs->commands;
13434   bs->commands = NULL;
13435   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13436
13437   bpstat_do_actions_1 (&tmp_bs_p);
13438
13439   /* 'tmp_bs.commands' will usually be NULL by now, but
13440      bpstat_do_actions_1 may return early without processing the whole
13441      list.  */
13442   do_cleanups (old_chain);
13443 }
13444
13445 /* The breakpoint_ops structure to be used on static tracepoints with
13446    markers (`-m').  */
13447
13448 static void
13449 strace_marker_create_sals_from_location (const struct event_location *location,
13450                                          struct linespec_result *canonical,
13451                                          enum bptype type_wanted)
13452 {
13453   struct linespec_sals lsal;
13454   const char *arg_start, *arg;
13455   char *str;
13456   struct cleanup *cleanup;
13457
13458   arg = arg_start = get_linespec_location (location);
13459   lsal.sals = decode_static_tracepoint_spec (&arg);
13460
13461   str = savestring (arg_start, arg - arg_start);
13462   cleanup = make_cleanup (xfree, str);
13463   canonical->location = new_linespec_location (&str);
13464   do_cleanups (cleanup);
13465
13466   lsal.canonical
13467     = xstrdup (event_location_to_string (canonical->location.get ()));
13468   canonical->lsals.push_back (std::move (lsal));
13469 }
13470
13471 static void
13472 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13473                                       struct linespec_result *canonical,
13474                                       gdb::unique_xmalloc_ptr<char> cond_string,
13475                                       gdb::unique_xmalloc_ptr<char> extra_string,
13476                                       enum bptype type_wanted,
13477                                       enum bpdisp disposition,
13478                                       int thread,
13479                                       int task, int ignore_count,
13480                                       const struct breakpoint_ops *ops,
13481                                       int from_tty, int enabled,
13482                                       int internal, unsigned flags)
13483 {
13484   const linespec_sals &lsal = canonical->lsals[0];
13485
13486   /* If the user is creating a static tracepoint by marker id
13487      (strace -m MARKER_ID), then store the sals index, so that
13488      breakpoint_re_set can try to match up which of the newly
13489      found markers corresponds to this one, and, don't try to
13490      expand multiple locations for each sal, given than SALS
13491      already should contain all sals for MARKER_ID.  */
13492
13493   for (size_t i = 0; i < lsal.sals.size (); i++)
13494     {
13495       event_location_up location
13496         = copy_event_location (canonical->location.get ());
13497
13498       std::unique_ptr<tracepoint> tp (new tracepoint ());
13499       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13500                            std::move (location), NULL,
13501                            std::move (cond_string),
13502                            std::move (extra_string),
13503                            type_wanted, disposition,
13504                            thread, task, ignore_count, ops,
13505                            from_tty, enabled, internal, flags,
13506                            canonical->special_display);
13507       /* Given that its possible to have multiple markers with
13508          the same string id, if the user is creating a static
13509          tracepoint by marker id ("strace -m MARKER_ID"), then
13510          store the sals index, so that breakpoint_re_set can
13511          try to match up which of the newly found markers
13512          corresponds to this one  */
13513       tp->static_trace_marker_id_idx = i;
13514
13515       install_breakpoint (internal, std::move (tp), 0);
13516     }
13517 }
13518
13519 static std::vector<symtab_and_line>
13520 strace_marker_decode_location (struct breakpoint *b,
13521                                const struct event_location *location,
13522                                struct program_space *search_pspace)
13523 {
13524   struct tracepoint *tp = (struct tracepoint *) b;
13525   const char *s = get_linespec_location (location);
13526
13527   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13528   if (sals.size () > tp->static_trace_marker_id_idx)
13529     {
13530       sals[0] = sals[tp->static_trace_marker_id_idx];
13531       sals.resize (1);
13532       return sals;
13533     }
13534   else
13535     error (_("marker %s not found"), tp->static_trace_marker_id);
13536 }
13537
13538 static struct breakpoint_ops strace_marker_breakpoint_ops;
13539
13540 static int
13541 strace_marker_p (struct breakpoint *b)
13542 {
13543   return b->ops == &strace_marker_breakpoint_ops;
13544 }
13545
13546 /* Delete a breakpoint and clean up all traces of it in the data
13547    structures.  */
13548
13549 void
13550 delete_breakpoint (struct breakpoint *bpt)
13551 {
13552   struct breakpoint *b;
13553
13554   gdb_assert (bpt != NULL);
13555
13556   /* Has this bp already been deleted?  This can happen because
13557      multiple lists can hold pointers to bp's.  bpstat lists are
13558      especial culprits.
13559
13560      One example of this happening is a watchpoint's scope bp.  When
13561      the scope bp triggers, we notice that the watchpoint is out of
13562      scope, and delete it.  We also delete its scope bp.  But the
13563      scope bp is marked "auto-deleting", and is already on a bpstat.
13564      That bpstat is then checked for auto-deleting bp's, which are
13565      deleted.
13566
13567      A real solution to this problem might involve reference counts in
13568      bp's, and/or giving them pointers back to their referencing
13569      bpstat's, and teaching delete_breakpoint to only free a bp's
13570      storage when no more references were extent.  A cheaper bandaid
13571      was chosen.  */
13572   if (bpt->type == bp_none)
13573     return;
13574
13575   /* At least avoid this stale reference until the reference counting
13576      of breakpoints gets resolved.  */
13577   if (bpt->related_breakpoint != bpt)
13578     {
13579       struct breakpoint *related;
13580       struct watchpoint *w;
13581
13582       if (bpt->type == bp_watchpoint_scope)
13583         w = (struct watchpoint *) bpt->related_breakpoint;
13584       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13585         w = (struct watchpoint *) bpt;
13586       else
13587         w = NULL;
13588       if (w != NULL)
13589         watchpoint_del_at_next_stop (w);
13590
13591       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13592       for (related = bpt; related->related_breakpoint != bpt;
13593            related = related->related_breakpoint);
13594       related->related_breakpoint = bpt->related_breakpoint;
13595       bpt->related_breakpoint = bpt;
13596     }
13597
13598   /* watch_command_1 creates a watchpoint but only sets its number if
13599      update_watchpoint succeeds in creating its bp_locations.  If there's
13600      a problem in that process, we'll be asked to delete the half-created
13601      watchpoint.  In that case, don't announce the deletion.  */
13602   if (bpt->number)
13603     observer_notify_breakpoint_deleted (bpt);
13604
13605   if (breakpoint_chain == bpt)
13606     breakpoint_chain = bpt->next;
13607
13608   ALL_BREAKPOINTS (b)
13609     if (b->next == bpt)
13610     {
13611       b->next = bpt->next;
13612       break;
13613     }
13614
13615   /* Be sure no bpstat's are pointing at the breakpoint after it's
13616      been freed.  */
13617   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13618      in all threads for now.  Note that we cannot just remove bpstats
13619      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13620      commands are associated with the bpstat; if we remove it here,
13621      then the later call to bpstat_do_actions (&stop_bpstat); in
13622      event-top.c won't do anything, and temporary breakpoints with
13623      commands won't work.  */
13624
13625   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13626
13627   /* Now that breakpoint is removed from breakpoint list, update the
13628      global location list.  This will remove locations that used to
13629      belong to this breakpoint.  Do this before freeing the breakpoint
13630      itself, since remove_breakpoint looks at location's owner.  It
13631      might be better design to have location completely
13632      self-contained, but it's not the case now.  */
13633   update_global_location_list (UGLL_DONT_INSERT);
13634
13635   /* On the chance that someone will soon try again to delete this
13636      same bp, we mark it as deleted before freeing its storage.  */
13637   bpt->type = bp_none;
13638   delete bpt;
13639 }
13640
13641 static void
13642 do_delete_breakpoint_cleanup (void *b)
13643 {
13644   delete_breakpoint ((struct breakpoint *) b);
13645 }
13646
13647 struct cleanup *
13648 make_cleanup_delete_breakpoint (struct breakpoint *b)
13649 {
13650   return make_cleanup (do_delete_breakpoint_cleanup, b);
13651 }
13652
13653 /* Iterator function to call a user-provided callback function once
13654    for each of B and its related breakpoints.  */
13655
13656 static void
13657 iterate_over_related_breakpoints (struct breakpoint *b,
13658                                   void (*function) (struct breakpoint *,
13659                                                     void *),
13660                                   void *data)
13661 {
13662   struct breakpoint *related;
13663
13664   related = b;
13665   do
13666     {
13667       struct breakpoint *next;
13668
13669       /* FUNCTION may delete RELATED.  */
13670       next = related->related_breakpoint;
13671
13672       if (next == related)
13673         {
13674           /* RELATED is the last ring entry.  */
13675           function (related, data);
13676
13677           /* FUNCTION may have deleted it, so we'd never reach back to
13678              B.  There's nothing left to do anyway, so just break
13679              out.  */
13680           break;
13681         }
13682       else
13683         function (related, data);
13684
13685       related = next;
13686     }
13687   while (related != b);
13688 }
13689
13690 static void
13691 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13692 {
13693   delete_breakpoint (b);
13694 }
13695
13696 /* A callback for map_breakpoint_numbers that calls
13697    delete_breakpoint.  */
13698
13699 static void
13700 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13701 {
13702   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13703 }
13704
13705 void
13706 delete_command (char *arg, int from_tty)
13707 {
13708   struct breakpoint *b, *b_tmp;
13709
13710   dont_repeat ();
13711
13712   if (arg == 0)
13713     {
13714       int breaks_to_delete = 0;
13715
13716       /* Delete all breakpoints if no argument.  Do not delete
13717          internal breakpoints, these have to be deleted with an
13718          explicit breakpoint number argument.  */
13719       ALL_BREAKPOINTS (b)
13720         if (user_breakpoint_p (b))
13721           {
13722             breaks_to_delete = 1;
13723             break;
13724           }
13725
13726       /* Ask user only if there are some breakpoints to delete.  */
13727       if (!from_tty
13728           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13729         {
13730           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13731             if (user_breakpoint_p (b))
13732               delete_breakpoint (b);
13733         }
13734     }
13735   else
13736     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13737 }
13738
13739 /* Return true if all locations of B bound to PSPACE are pending.  If
13740    PSPACE is NULL, all locations of all program spaces are
13741    considered.  */
13742
13743 static int
13744 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13745 {
13746   struct bp_location *loc;
13747
13748   for (loc = b->loc; loc != NULL; loc = loc->next)
13749     if ((pspace == NULL
13750          || loc->pspace == pspace)
13751         && !loc->shlib_disabled
13752         && !loc->pspace->executing_startup)
13753       return 0;
13754   return 1;
13755 }
13756
13757 /* Subroutine of update_breakpoint_locations to simplify it.
13758    Return non-zero if multiple fns in list LOC have the same name.
13759    Null names are ignored.  */
13760
13761 static int
13762 ambiguous_names_p (struct bp_location *loc)
13763 {
13764   struct bp_location *l;
13765   htab_t htab = htab_create_alloc (13, htab_hash_string,
13766                                    (int (*) (const void *, 
13767                                              const void *)) streq,
13768                                    NULL, xcalloc, xfree);
13769
13770   for (l = loc; l != NULL; l = l->next)
13771     {
13772       const char **slot;
13773       const char *name = l->function_name;
13774
13775       /* Allow for some names to be NULL, ignore them.  */
13776       if (name == NULL)
13777         continue;
13778
13779       slot = (const char **) htab_find_slot (htab, (const void *) name,
13780                                              INSERT);
13781       /* NOTE: We can assume slot != NULL here because xcalloc never
13782          returns NULL.  */
13783       if (*slot != NULL)
13784         {
13785           htab_delete (htab);
13786           return 1;
13787         }
13788       *slot = name;
13789     }
13790
13791   htab_delete (htab);
13792   return 0;
13793 }
13794
13795 /* When symbols change, it probably means the sources changed as well,
13796    and it might mean the static tracepoint markers are no longer at
13797    the same address or line numbers they used to be at last we
13798    checked.  Losing your static tracepoints whenever you rebuild is
13799    undesirable.  This function tries to resync/rematch gdb static
13800    tracepoints with the markers on the target, for static tracepoints
13801    that have not been set by marker id.  Static tracepoint that have
13802    been set by marker id are reset by marker id in breakpoint_re_set.
13803    The heuristic is:
13804
13805    1) For a tracepoint set at a specific address, look for a marker at
13806    the old PC.  If one is found there, assume to be the same marker.
13807    If the name / string id of the marker found is different from the
13808    previous known name, assume that means the user renamed the marker
13809    in the sources, and output a warning.
13810
13811    2) For a tracepoint set at a given line number, look for a marker
13812    at the new address of the old line number.  If one is found there,
13813    assume to be the same marker.  If the name / string id of the
13814    marker found is different from the previous known name, assume that
13815    means the user renamed the marker in the sources, and output a
13816    warning.
13817
13818    3) If a marker is no longer found at the same address or line, it
13819    may mean the marker no longer exists.  But it may also just mean
13820    the code changed a bit.  Maybe the user added a few lines of code
13821    that made the marker move up or down (in line number terms).  Ask
13822    the target for info about the marker with the string id as we knew
13823    it.  If found, update line number and address in the matching
13824    static tracepoint.  This will get confused if there's more than one
13825    marker with the same ID (possible in UST, although unadvised
13826    precisely because it confuses tools).  */
13827
13828 static struct symtab_and_line
13829 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13830 {
13831   struct tracepoint *tp = (struct tracepoint *) b;
13832   struct static_tracepoint_marker marker;
13833   CORE_ADDR pc;
13834
13835   pc = sal.pc;
13836   if (sal.line)
13837     find_line_pc (sal.symtab, sal.line, &pc);
13838
13839   if (target_static_tracepoint_marker_at (pc, &marker))
13840     {
13841       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13842         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13843                  b->number,
13844                  tp->static_trace_marker_id, marker.str_id);
13845
13846       xfree (tp->static_trace_marker_id);
13847       tp->static_trace_marker_id = xstrdup (marker.str_id);
13848       release_static_tracepoint_marker (&marker);
13849
13850       return sal;
13851     }
13852
13853   /* Old marker wasn't found on target at lineno.  Try looking it up
13854      by string ID.  */
13855   if (!sal.explicit_pc
13856       && sal.line != 0
13857       && sal.symtab != NULL
13858       && tp->static_trace_marker_id != NULL)
13859     {
13860       VEC(static_tracepoint_marker_p) *markers;
13861
13862       markers
13863         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13864
13865       if (!VEC_empty(static_tracepoint_marker_p, markers))
13866         {
13867           struct symbol *sym;
13868           struct static_tracepoint_marker *tpmarker;
13869           struct ui_out *uiout = current_uiout;
13870           struct explicit_location explicit_loc;
13871
13872           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13873
13874           xfree (tp->static_trace_marker_id);
13875           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13876
13877           warning (_("marker for static tracepoint %d (%s) not "
13878                      "found at previous line number"),
13879                    b->number, tp->static_trace_marker_id);
13880
13881           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13882           sym = find_pc_sect_function (tpmarker->address, NULL);
13883           uiout->text ("Now in ");
13884           if (sym)
13885             {
13886               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13887               uiout->text (" at ");
13888             }
13889           uiout->field_string ("file",
13890                                symtab_to_filename_for_display (sal2.symtab));
13891           uiout->text (":");
13892
13893           if (uiout->is_mi_like_p ())
13894             {
13895               const char *fullname = symtab_to_fullname (sal2.symtab);
13896
13897               uiout->field_string ("fullname", fullname);
13898             }
13899
13900           uiout->field_int ("line", sal2.line);
13901           uiout->text ("\n");
13902
13903           b->loc->line_number = sal2.line;
13904           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13905
13906           b->location.reset (NULL);
13907           initialize_explicit_location (&explicit_loc);
13908           explicit_loc.source_filename
13909             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13910           explicit_loc.line_offset.offset = b->loc->line_number;
13911           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13912           b->location = new_explicit_location (&explicit_loc);
13913
13914           /* Might be nice to check if function changed, and warn if
13915              so.  */
13916
13917           release_static_tracepoint_marker (tpmarker);
13918         }
13919     }
13920   return sal;
13921 }
13922
13923 /* Returns 1 iff locations A and B are sufficiently same that
13924    we don't need to report breakpoint as changed.  */
13925
13926 static int
13927 locations_are_equal (struct bp_location *a, struct bp_location *b)
13928 {
13929   while (a && b)
13930     {
13931       if (a->address != b->address)
13932         return 0;
13933
13934       if (a->shlib_disabled != b->shlib_disabled)
13935         return 0;
13936
13937       if (a->enabled != b->enabled)
13938         return 0;
13939
13940       a = a->next;
13941       b = b->next;
13942     }
13943
13944   if ((a == NULL) != (b == NULL))
13945     return 0;
13946
13947   return 1;
13948 }
13949
13950 /* Split all locations of B that are bound to PSPACE out of B's
13951    location list to a separate list and return that list's head.  If
13952    PSPACE is NULL, hoist out all locations of B.  */
13953
13954 static struct bp_location *
13955 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13956 {
13957   struct bp_location head;
13958   struct bp_location *i = b->loc;
13959   struct bp_location **i_link = &b->loc;
13960   struct bp_location *hoisted = &head;
13961
13962   if (pspace == NULL)
13963     {
13964       i = b->loc;
13965       b->loc = NULL;
13966       return i;
13967     }
13968
13969   head.next = NULL;
13970
13971   while (i != NULL)
13972     {
13973       if (i->pspace == pspace)
13974         {
13975           *i_link = i->next;
13976           i->next = NULL;
13977           hoisted->next = i;
13978           hoisted = i;
13979         }
13980       else
13981         i_link = &i->next;
13982       i = *i_link;
13983     }
13984
13985   return head.next;
13986 }
13987
13988 /* Create new breakpoint locations for B (a hardware or software
13989    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13990    zero, then B is a ranged breakpoint.  Only recreates locations for
13991    FILTER_PSPACE.  Locations of other program spaces are left
13992    untouched.  */
13993
13994 void
13995 update_breakpoint_locations (struct breakpoint *b,
13996                              struct program_space *filter_pspace,
13997                              gdb::array_view<const symtab_and_line> sals,
13998                              gdb::array_view<const symtab_and_line> sals_end)
13999 {
14000   int i;
14001   struct bp_location *existing_locations;
14002
14003   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
14004     {
14005       /* Ranged breakpoints have only one start location and one end
14006          location.  */
14007       b->enable_state = bp_disabled;
14008       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14009                            "multiple locations found\n"),
14010                          b->number);
14011       return;
14012     }
14013
14014   /* If there's no new locations, and all existing locations are
14015      pending, don't do anything.  This optimizes the common case where
14016      all locations are in the same shared library, that was unloaded.
14017      We'd like to retain the location, so that when the library is
14018      loaded again, we don't loose the enabled/disabled status of the
14019      individual locations.  */
14020   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
14021     return;
14022
14023   existing_locations = hoist_existing_locations (b, filter_pspace);
14024
14025   for (const auto &sal : sals)
14026     {
14027       struct bp_location *new_loc;
14028
14029       switch_to_program_space_and_thread (sal.pspace);
14030
14031       new_loc = add_location_to_breakpoint (b, &sal);
14032
14033       /* Reparse conditions, they might contain references to the
14034          old symtab.  */
14035       if (b->cond_string != NULL)
14036         {
14037           const char *s;
14038
14039           s = b->cond_string;
14040           TRY
14041             {
14042               new_loc->cond = parse_exp_1 (&s, sal.pc,
14043                                            block_for_pc (sal.pc),
14044                                            0);
14045             }
14046           CATCH (e, RETURN_MASK_ERROR)
14047             {
14048               warning (_("failed to reevaluate condition "
14049                          "for breakpoint %d: %s"), 
14050                        b->number, e.message);
14051               new_loc->enabled = 0;
14052             }
14053           END_CATCH
14054         }
14055
14056       if (!sals_end.empty ())
14057         {
14058           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
14059
14060           new_loc->length = end - sals[0].pc + 1;
14061         }
14062     }
14063
14064   /* If possible, carry over 'disable' status from existing
14065      breakpoints.  */
14066   {
14067     struct bp_location *e = existing_locations;
14068     /* If there are multiple breakpoints with the same function name,
14069        e.g. for inline functions, comparing function names won't work.
14070        Instead compare pc addresses; this is just a heuristic as things
14071        may have moved, but in practice it gives the correct answer
14072        often enough until a better solution is found.  */
14073     int have_ambiguous_names = ambiguous_names_p (b->loc);
14074
14075     for (; e; e = e->next)
14076       {
14077         if (!e->enabled && e->function_name)
14078           {
14079             struct bp_location *l = b->loc;
14080             if (have_ambiguous_names)
14081               {
14082                 for (; l; l = l->next)
14083                   if (breakpoint_locations_match (e, l))
14084                     {
14085                       l->enabled = 0;
14086                       break;
14087                     }
14088               }
14089             else
14090               {
14091                 for (; l; l = l->next)
14092                   if (l->function_name
14093                       && strcmp (e->function_name, l->function_name) == 0)
14094                     {
14095                       l->enabled = 0;
14096                       break;
14097                     }
14098               }
14099           }
14100       }
14101   }
14102
14103   if (!locations_are_equal (existing_locations, b->loc))
14104     observer_notify_breakpoint_modified (b);
14105 }
14106
14107 /* Find the SaL locations corresponding to the given LOCATION.
14108    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14109
14110 static std::vector<symtab_and_line>
14111 location_to_sals (struct breakpoint *b, struct event_location *location,
14112                   struct program_space *search_pspace, int *found)
14113 {
14114   struct gdb_exception exception = exception_none;
14115
14116   gdb_assert (b->ops != NULL);
14117
14118   std::vector<symtab_and_line> sals;
14119
14120   TRY
14121     {
14122       sals = b->ops->decode_location (b, location, search_pspace);
14123     }
14124   CATCH (e, RETURN_MASK_ERROR)
14125     {
14126       int not_found_and_ok = 0;
14127
14128       exception = e;
14129
14130       /* For pending breakpoints, it's expected that parsing will
14131          fail until the right shared library is loaded.  User has
14132          already told to create pending breakpoints and don't need
14133          extra messages.  If breakpoint is in bp_shlib_disabled
14134          state, then user already saw the message about that
14135          breakpoint being disabled, and don't want to see more
14136          errors.  */
14137       if (e.error == NOT_FOUND_ERROR
14138           && (b->condition_not_parsed
14139               || (b->loc != NULL
14140                   && search_pspace != NULL
14141                   && b->loc->pspace != search_pspace)
14142               || (b->loc && b->loc->shlib_disabled)
14143               || (b->loc && b->loc->pspace->executing_startup)
14144               || b->enable_state == bp_disabled))
14145         not_found_and_ok = 1;
14146
14147       if (!not_found_and_ok)
14148         {
14149           /* We surely don't want to warn about the same breakpoint
14150              10 times.  One solution, implemented here, is disable
14151              the breakpoint on error.  Another solution would be to
14152              have separate 'warning emitted' flag.  Since this
14153              happens only when a binary has changed, I don't know
14154              which approach is better.  */
14155           b->enable_state = bp_disabled;
14156           throw_exception (e);
14157         }
14158     }
14159   END_CATCH
14160
14161   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
14162     {
14163       for (auto &sal : sals)
14164         resolve_sal_pc (&sal);
14165       if (b->condition_not_parsed && b->extra_string != NULL)
14166         {
14167           char *cond_string, *extra_string;
14168           int thread, task;
14169
14170           find_condition_and_thread (b->extra_string, sals[0].pc,
14171                                      &cond_string, &thread, &task,
14172                                      &extra_string);
14173           gdb_assert (b->cond_string == NULL);
14174           if (cond_string)
14175             b->cond_string = cond_string;
14176           b->thread = thread;
14177           b->task = task;
14178           if (extra_string)
14179             {
14180               xfree (b->extra_string);
14181               b->extra_string = extra_string;
14182             }
14183           b->condition_not_parsed = 0;
14184         }
14185
14186       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14187         sals[0] = update_static_tracepoint (b, sals[0]);
14188
14189       *found = 1;
14190     }
14191   else
14192     *found = 0;
14193
14194   return sals;
14195 }
14196
14197 /* The default re_set method, for typical hardware or software
14198    breakpoints.  Reevaluate the breakpoint and recreate its
14199    locations.  */
14200
14201 static void
14202 breakpoint_re_set_default (struct breakpoint *b)
14203 {
14204   struct program_space *filter_pspace = current_program_space;
14205   std::vector<symtab_and_line> expanded, expanded_end;
14206
14207   int found;
14208   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
14209                                                         filter_pspace, &found);
14210   if (found)
14211     expanded = std::move (sals);
14212
14213   if (b->location_range_end != NULL)
14214     {
14215       std::vector<symtab_and_line> sals_end
14216         = location_to_sals (b, b->location_range_end.get (),
14217                             filter_pspace, &found);
14218       if (found)
14219         expanded_end = std::move (sals_end);
14220     }
14221
14222   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
14223 }
14224
14225 /* Default method for creating SALs from an address string.  It basically
14226    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14227
14228 static void
14229 create_sals_from_location_default (const struct event_location *location,
14230                                    struct linespec_result *canonical,
14231                                    enum bptype type_wanted)
14232 {
14233   parse_breakpoint_sals (location, canonical);
14234 }
14235
14236 /* Call create_breakpoints_sal for the given arguments.  This is the default
14237    function for the `create_breakpoints_sal' method of
14238    breakpoint_ops.  */
14239
14240 static void
14241 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14242                                 struct linespec_result *canonical,
14243                                 gdb::unique_xmalloc_ptr<char> cond_string,
14244                                 gdb::unique_xmalloc_ptr<char> extra_string,
14245                                 enum bptype type_wanted,
14246                                 enum bpdisp disposition,
14247                                 int thread,
14248                                 int task, int ignore_count,
14249                                 const struct breakpoint_ops *ops,
14250                                 int from_tty, int enabled,
14251                                 int internal, unsigned flags)
14252 {
14253   create_breakpoints_sal (gdbarch, canonical,
14254                           std::move (cond_string),
14255                           std::move (extra_string),
14256                           type_wanted, disposition,
14257                           thread, task, ignore_count, ops, from_tty,
14258                           enabled, internal, flags);
14259 }
14260
14261 /* Decode the line represented by S by calling decode_line_full.  This is the
14262    default function for the `decode_location' method of breakpoint_ops.  */
14263
14264 static std::vector<symtab_and_line>
14265 decode_location_default (struct breakpoint *b,
14266                          const struct event_location *location,
14267                          struct program_space *search_pspace)
14268 {
14269   struct linespec_result canonical;
14270
14271   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14272                     (struct symtab *) NULL, 0,
14273                     &canonical, multiple_symbols_all,
14274                     b->filter);
14275
14276   /* We should get 0 or 1 resulting SALs.  */
14277   gdb_assert (canonical.lsals.size () < 2);
14278
14279   if (!canonical.lsals.empty ())
14280     {
14281       const linespec_sals &lsal = canonical.lsals[0];
14282       return std::move (lsal.sals);
14283     }
14284   return {};
14285 }
14286
14287 /* Prepare the global context for a re-set of breakpoint B.  */
14288
14289 static struct cleanup *
14290 prepare_re_set_context (struct breakpoint *b)
14291 {
14292   input_radix = b->input_radix;
14293   set_language (b->language);
14294
14295   return make_cleanup (null_cleanup, NULL);
14296 }
14297
14298 /* Reset a breakpoint given it's struct breakpoint * BINT.
14299    The value we return ends up being the return value from catch_errors.
14300    Unused in this case.  */
14301
14302 static int
14303 breakpoint_re_set_one (void *bint)
14304 {
14305   /* Get past catch_errs.  */
14306   struct breakpoint *b = (struct breakpoint *) bint;
14307   struct cleanup *cleanups;
14308
14309   cleanups = prepare_re_set_context (b);
14310   b->ops->re_set (b);
14311   do_cleanups (cleanups);
14312   return 0;
14313 }
14314
14315 /* Re-set breakpoint locations for the current program space.
14316    Locations bound to other program spaces are left untouched.  */
14317
14318 void
14319 breakpoint_re_set (void)
14320 {
14321   struct breakpoint *b, *b_tmp;
14322   enum language save_language;
14323   int save_input_radix;
14324
14325   save_language = current_language->la_language;
14326   save_input_radix = input_radix;
14327
14328   {
14329     scoped_restore_current_pspace_and_thread restore_pspace_thread;
14330
14331     /* Note: we must not try to insert locations until after all
14332        breakpoints have been re-set.  Otherwise, e.g., when re-setting
14333        breakpoint 1, we'd insert the locations of breakpoint 2, which
14334        hadn't been re-set yet, and thus may have stale locations.  */
14335
14336     ALL_BREAKPOINTS_SAFE (b, b_tmp)
14337       {
14338         /* Format possible error msg.  */
14339         char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14340                                     b->number);
14341         struct cleanup *cleanups = make_cleanup (xfree, message);
14342         catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14343         do_cleanups (cleanups);
14344       }
14345     set_language (save_language);
14346     input_radix = save_input_radix;
14347
14348     jit_breakpoint_re_set ();
14349   }
14350
14351   create_overlay_event_breakpoint ();
14352   create_longjmp_master_breakpoint ();
14353   create_std_terminate_master_breakpoint ();
14354   create_exception_master_breakpoint ();
14355
14356   /* Now we can insert.  */
14357   update_global_location_list (UGLL_MAY_INSERT);
14358 }
14359 \f
14360 /* Reset the thread number of this breakpoint:
14361
14362    - If the breakpoint is for all threads, leave it as-is.
14363    - Else, reset it to the current thread for inferior_ptid.  */
14364 void
14365 breakpoint_re_set_thread (struct breakpoint *b)
14366 {
14367   if (b->thread != -1)
14368     {
14369       if (in_thread_list (inferior_ptid))
14370         b->thread = ptid_to_global_thread_id (inferior_ptid);
14371
14372       /* We're being called after following a fork.  The new fork is
14373          selected as current, and unless this was a vfork will have a
14374          different program space from the original thread.  Reset that
14375          as well.  */
14376       b->loc->pspace = current_program_space;
14377     }
14378 }
14379
14380 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14381    If from_tty is nonzero, it prints a message to that effect,
14382    which ends with a period (no newline).  */
14383
14384 void
14385 set_ignore_count (int bptnum, int count, int from_tty)
14386 {
14387   struct breakpoint *b;
14388
14389   if (count < 0)
14390     count = 0;
14391
14392   ALL_BREAKPOINTS (b)
14393     if (b->number == bptnum)
14394     {
14395       if (is_tracepoint (b))
14396         {
14397           if (from_tty && count != 0)
14398             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14399                              bptnum);
14400           return;
14401         }
14402       
14403       b->ignore_count = count;
14404       if (from_tty)
14405         {
14406           if (count == 0)
14407             printf_filtered (_("Will stop next time "
14408                                "breakpoint %d is reached."),
14409                              bptnum);
14410           else if (count == 1)
14411             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14412                              bptnum);
14413           else
14414             printf_filtered (_("Will ignore next %d "
14415                                "crossings of breakpoint %d."),
14416                              count, bptnum);
14417         }
14418       observer_notify_breakpoint_modified (b);
14419       return;
14420     }
14421
14422   error (_("No breakpoint number %d."), bptnum);
14423 }
14424
14425 /* Command to set ignore-count of breakpoint N to COUNT.  */
14426
14427 static void
14428 ignore_command (char *args, int from_tty)
14429 {
14430   char *p = args;
14431   int num;
14432
14433   if (p == 0)
14434     error_no_arg (_("a breakpoint number"));
14435
14436   num = get_number (&p);
14437   if (num == 0)
14438     error (_("bad breakpoint number: '%s'"), args);
14439   if (*p == 0)
14440     error (_("Second argument (specified ignore-count) is missing."));
14441
14442   set_ignore_count (num,
14443                     longest_to_int (value_as_long (parse_and_eval (p))),
14444                     from_tty);
14445   if (from_tty)
14446     printf_filtered ("\n");
14447 }
14448 \f
14449 /* Call FUNCTION on each of the breakpoints
14450    whose numbers are given in ARGS.  */
14451
14452 static void
14453 map_breakpoint_numbers (const char *args,
14454                         void (*function) (struct breakpoint *,
14455                                           void *),
14456                         void *data)
14457 {
14458   int num;
14459   struct breakpoint *b, *tmp;
14460
14461   if (args == 0 || *args == '\0')
14462     error_no_arg (_("one or more breakpoint numbers"));
14463
14464   number_or_range_parser parser (args);
14465
14466   while (!parser.finished ())
14467     {
14468       const char *p = parser.cur_tok ();
14469       bool match = false;
14470
14471       num = parser.get_number ();
14472       if (num == 0)
14473         {
14474           warning (_("bad breakpoint number at or near '%s'"), p);
14475         }
14476       else
14477         {
14478           ALL_BREAKPOINTS_SAFE (b, tmp)
14479             if (b->number == num)
14480               {
14481                 match = true;
14482                 function (b, data);
14483                 break;
14484               }
14485           if (!match)
14486             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14487         }
14488     }
14489 }
14490
14491 static struct bp_location *
14492 find_location_by_number (char *number)
14493 {
14494   char *dot = strchr (number, '.');
14495   char *p1;
14496   int bp_num;
14497   int loc_num;
14498   struct breakpoint *b;
14499   struct bp_location *loc;  
14500
14501   *dot = '\0';
14502
14503   p1 = number;
14504   bp_num = get_number (&p1);
14505   if (bp_num == 0)
14506     error (_("Bad breakpoint number '%s'"), number);
14507
14508   ALL_BREAKPOINTS (b)
14509     if (b->number == bp_num)
14510       {
14511         break;
14512       }
14513
14514   if (!b || b->number != bp_num)
14515     error (_("Bad breakpoint number '%s'"), number);
14516   
14517   p1 = dot+1;
14518   loc_num = get_number (&p1);
14519   if (loc_num == 0)
14520     error (_("Bad breakpoint location number '%s'"), number);
14521
14522   --loc_num;
14523   loc = b->loc;
14524   for (;loc_num && loc; --loc_num, loc = loc->next)
14525     ;
14526   if (!loc)
14527     error (_("Bad breakpoint location number '%s'"), dot+1);
14528     
14529   return loc;  
14530 }
14531
14532
14533 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14534    If from_tty is nonzero, it prints a message to that effect,
14535    which ends with a period (no newline).  */
14536
14537 void
14538 disable_breakpoint (struct breakpoint *bpt)
14539 {
14540   /* Never disable a watchpoint scope breakpoint; we want to
14541      hit them when we leave scope so we can delete both the
14542      watchpoint and its scope breakpoint at that time.  */
14543   if (bpt->type == bp_watchpoint_scope)
14544     return;
14545
14546   bpt->enable_state = bp_disabled;
14547
14548   /* Mark breakpoint locations modified.  */
14549   mark_breakpoint_modified (bpt);
14550
14551   if (target_supports_enable_disable_tracepoint ()
14552       && current_trace_status ()->running && is_tracepoint (bpt))
14553     {
14554       struct bp_location *location;
14555      
14556       for (location = bpt->loc; location; location = location->next)
14557         target_disable_tracepoint (location);
14558     }
14559
14560   update_global_location_list (UGLL_DONT_INSERT);
14561
14562   observer_notify_breakpoint_modified (bpt);
14563 }
14564
14565 /* A callback for iterate_over_related_breakpoints.  */
14566
14567 static void
14568 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14569 {
14570   disable_breakpoint (b);
14571 }
14572
14573 /* A callback for map_breakpoint_numbers that calls
14574    disable_breakpoint.  */
14575
14576 static void
14577 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14578 {
14579   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14580 }
14581
14582 static void
14583 disable_command (char *args, int from_tty)
14584 {
14585   if (args == 0)
14586     {
14587       struct breakpoint *bpt;
14588
14589       ALL_BREAKPOINTS (bpt)
14590         if (user_breakpoint_p (bpt))
14591           disable_breakpoint (bpt);
14592     }
14593   else
14594     {
14595       char *num = extract_arg (&args);
14596
14597       while (num)
14598         {
14599           if (strchr (num, '.'))
14600             {
14601               struct bp_location *loc = find_location_by_number (num);
14602
14603               if (loc)
14604                 {
14605                   if (loc->enabled)
14606                     {
14607                       loc->enabled = 0;
14608                       mark_breakpoint_location_modified (loc);
14609                     }
14610                   if (target_supports_enable_disable_tracepoint ()
14611                       && current_trace_status ()->running && loc->owner
14612                       && is_tracepoint (loc->owner))
14613                     target_disable_tracepoint (loc);
14614                 }
14615               update_global_location_list (UGLL_DONT_INSERT);
14616             }
14617           else
14618             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14619           num = extract_arg (&args);
14620         }
14621     }
14622 }
14623
14624 static void
14625 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14626                         int count)
14627 {
14628   int target_resources_ok;
14629
14630   if (bpt->type == bp_hardware_breakpoint)
14631     {
14632       int i;
14633       i = hw_breakpoint_used_count ();
14634       target_resources_ok = 
14635         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14636                                             i + 1, 0);
14637       if (target_resources_ok == 0)
14638         error (_("No hardware breakpoint support in the target."));
14639       else if (target_resources_ok < 0)
14640         error (_("Hardware breakpoints used exceeds limit."));
14641     }
14642
14643   if (is_watchpoint (bpt))
14644     {
14645       /* Initialize it just to avoid a GCC false warning.  */
14646       enum enable_state orig_enable_state = bp_disabled;
14647
14648       TRY
14649         {
14650           struct watchpoint *w = (struct watchpoint *) bpt;
14651
14652           orig_enable_state = bpt->enable_state;
14653           bpt->enable_state = bp_enabled;
14654           update_watchpoint (w, 1 /* reparse */);
14655         }
14656       CATCH (e, RETURN_MASK_ALL)
14657         {
14658           bpt->enable_state = orig_enable_state;
14659           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14660                              bpt->number);
14661           return;
14662         }
14663       END_CATCH
14664     }
14665
14666   bpt->enable_state = bp_enabled;
14667
14668   /* Mark breakpoint locations modified.  */
14669   mark_breakpoint_modified (bpt);
14670
14671   if (target_supports_enable_disable_tracepoint ()
14672       && current_trace_status ()->running && is_tracepoint (bpt))
14673     {
14674       struct bp_location *location;
14675
14676       for (location = bpt->loc; location; location = location->next)
14677         target_enable_tracepoint (location);
14678     }
14679
14680   bpt->disposition = disposition;
14681   bpt->enable_count = count;
14682   update_global_location_list (UGLL_MAY_INSERT);
14683
14684   observer_notify_breakpoint_modified (bpt);
14685 }
14686
14687
14688 void
14689 enable_breakpoint (struct breakpoint *bpt)
14690 {
14691   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14692 }
14693
14694 static void
14695 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14696 {
14697   enable_breakpoint (bpt);
14698 }
14699
14700 /* A callback for map_breakpoint_numbers that calls
14701    enable_breakpoint.  */
14702
14703 static void
14704 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14705 {
14706   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14707 }
14708
14709 /* The enable command enables the specified breakpoints (or all defined
14710    breakpoints) so they once again become (or continue to be) effective
14711    in stopping the inferior.  */
14712
14713 static void
14714 enable_command (char *args, int from_tty)
14715 {
14716   if (args == 0)
14717     {
14718       struct breakpoint *bpt;
14719
14720       ALL_BREAKPOINTS (bpt)
14721         if (user_breakpoint_p (bpt))
14722           enable_breakpoint (bpt);
14723     }
14724   else
14725     {
14726       char *num = extract_arg (&args);
14727
14728       while (num)
14729         {
14730           if (strchr (num, '.'))
14731             {
14732               struct bp_location *loc = find_location_by_number (num);
14733
14734               if (loc)
14735                 {
14736                   if (!loc->enabled)
14737                     {
14738                       loc->enabled = 1;
14739                       mark_breakpoint_location_modified (loc);
14740                     }
14741                   if (target_supports_enable_disable_tracepoint ()
14742                       && current_trace_status ()->running && loc->owner
14743                       && is_tracepoint (loc->owner))
14744                     target_enable_tracepoint (loc);
14745                 }
14746               update_global_location_list (UGLL_MAY_INSERT);
14747             }
14748           else
14749             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
14750           num = extract_arg (&args);
14751         }
14752     }
14753 }
14754
14755 /* This struct packages up disposition data for application to multiple
14756    breakpoints.  */
14757
14758 struct disp_data
14759 {
14760   enum bpdisp disp;
14761   int count;
14762 };
14763
14764 static void
14765 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14766 {
14767   struct disp_data disp_data = *(struct disp_data *) arg;
14768
14769   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14770 }
14771
14772 static void
14773 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14774 {
14775   struct disp_data disp = { disp_disable, 1 };
14776
14777   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14778 }
14779
14780 static void
14781 enable_once_command (char *args, int from_tty)
14782 {
14783   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14784 }
14785
14786 static void
14787 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14788 {
14789   struct disp_data disp = { disp_disable, *(int *) countptr };
14790
14791   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14792 }
14793
14794 static void
14795 enable_count_command (char *args, int from_tty)
14796 {
14797   int count;
14798
14799   if (args == NULL)
14800     error_no_arg (_("hit count"));
14801
14802   count = get_number (&args);
14803
14804   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14805 }
14806
14807 static void
14808 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14809 {
14810   struct disp_data disp = { disp_del, 1 };
14811
14812   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14813 }
14814
14815 static void
14816 enable_delete_command (char *args, int from_tty)
14817 {
14818   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14819 }
14820 \f
14821 static void
14822 set_breakpoint_cmd (char *args, int from_tty)
14823 {
14824 }
14825
14826 static void
14827 show_breakpoint_cmd (char *args, int from_tty)
14828 {
14829 }
14830
14831 /* Invalidate last known value of any hardware watchpoint if
14832    the memory which that value represents has been written to by
14833    GDB itself.  */
14834
14835 static void
14836 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14837                                       CORE_ADDR addr, ssize_t len,
14838                                       const bfd_byte *data)
14839 {
14840   struct breakpoint *bp;
14841
14842   ALL_BREAKPOINTS (bp)
14843     if (bp->enable_state == bp_enabled
14844         && bp->type == bp_hardware_watchpoint)
14845       {
14846         struct watchpoint *wp = (struct watchpoint *) bp;
14847
14848         if (wp->val_valid && wp->val)
14849           {
14850             struct bp_location *loc;
14851
14852             for (loc = bp->loc; loc != NULL; loc = loc->next)
14853               if (loc->loc_type == bp_loc_hardware_watchpoint
14854                   && loc->address + loc->length > addr
14855                   && addr + len > loc->address)
14856                 {
14857                   value_free (wp->val);
14858                   wp->val = NULL;
14859                   wp->val_valid = 0;
14860                 }
14861           }
14862       }
14863 }
14864
14865 /* Create and insert a breakpoint for software single step.  */
14866
14867 void
14868 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14869                                struct address_space *aspace, 
14870                                CORE_ADDR next_pc)
14871 {
14872   struct thread_info *tp = inferior_thread ();
14873   struct symtab_and_line sal;
14874   CORE_ADDR pc = next_pc;
14875
14876   if (tp->control.single_step_breakpoints == NULL)
14877     {
14878       tp->control.single_step_breakpoints
14879         = new_single_step_breakpoint (tp->global_num, gdbarch);
14880     }
14881
14882   sal = find_pc_line (pc, 0);
14883   sal.pc = pc;
14884   sal.section = find_pc_overlay (pc);
14885   sal.explicit_pc = 1;
14886   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14887
14888   update_global_location_list (UGLL_INSERT);
14889 }
14890
14891 /* Insert single step breakpoints according to the current state.  */
14892
14893 int
14894 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14895 {
14896   struct regcache *regcache = get_current_regcache ();
14897   std::vector<CORE_ADDR> next_pcs;
14898
14899   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14900
14901   if (!next_pcs.empty ())
14902     {
14903       struct frame_info *frame = get_current_frame ();
14904       struct address_space *aspace = get_frame_address_space (frame);
14905
14906       for (CORE_ADDR pc : next_pcs)
14907         insert_single_step_breakpoint (gdbarch, aspace, pc);
14908
14909       return 1;
14910     }
14911   else
14912     return 0;
14913 }
14914
14915 /* See breakpoint.h.  */
14916
14917 int
14918 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14919                                        struct address_space *aspace,
14920                                        CORE_ADDR pc)
14921 {
14922   struct bp_location *loc;
14923
14924   for (loc = bp->loc; loc != NULL; loc = loc->next)
14925     if (loc->inserted
14926         && breakpoint_location_address_match (loc, aspace, pc))
14927       return 1;
14928
14929   return 0;
14930 }
14931
14932 /* Check whether a software single-step breakpoint is inserted at
14933    PC.  */
14934
14935 int
14936 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
14937                                         CORE_ADDR pc)
14938 {
14939   struct breakpoint *bpt;
14940
14941   ALL_BREAKPOINTS (bpt)
14942     {
14943       if (bpt->type == bp_single_step
14944           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14945         return 1;
14946     }
14947   return 0;
14948 }
14949
14950 /* Tracepoint-specific operations.  */
14951
14952 /* Set tracepoint count to NUM.  */
14953 static void
14954 set_tracepoint_count (int num)
14955 {
14956   tracepoint_count = num;
14957   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14958 }
14959
14960 static void
14961 trace_command (char *arg, int from_tty)
14962 {
14963   struct breakpoint_ops *ops;
14964
14965   event_location_up location = string_to_event_location (&arg,
14966                                                          current_language);
14967   if (location != NULL
14968       && event_location_type (location.get ()) == PROBE_LOCATION)
14969     ops = &tracepoint_probe_breakpoint_ops;
14970   else
14971     ops = &tracepoint_breakpoint_ops;
14972
14973   create_breakpoint (get_current_arch (),
14974                      location.get (),
14975                      NULL, 0, arg, 1 /* parse arg */,
14976                      0 /* tempflag */,
14977                      bp_tracepoint /* type_wanted */,
14978                      0 /* Ignore count */,
14979                      pending_break_support,
14980                      ops,
14981                      from_tty,
14982                      1 /* enabled */,
14983                      0 /* internal */, 0);
14984 }
14985
14986 static void
14987 ftrace_command (char *arg, int from_tty)
14988 {
14989   event_location_up location = string_to_event_location (&arg,
14990                                                          current_language);
14991   create_breakpoint (get_current_arch (),
14992                      location.get (),
14993                      NULL, 0, arg, 1 /* parse arg */,
14994                      0 /* tempflag */,
14995                      bp_fast_tracepoint /* type_wanted */,
14996                      0 /* Ignore count */,
14997                      pending_break_support,
14998                      &tracepoint_breakpoint_ops,
14999                      from_tty,
15000                      1 /* enabled */,
15001                      0 /* internal */, 0);
15002 }
15003
15004 /* strace command implementation.  Creates a static tracepoint.  */
15005
15006 static void
15007 strace_command (char *arg, int from_tty)
15008 {
15009   struct breakpoint_ops *ops;
15010   event_location_up location;
15011   struct cleanup *back_to;
15012
15013   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15014      or with a normal static tracepoint.  */
15015   if (arg && startswith (arg, "-m") && isspace (arg[2]))
15016     {
15017       ops = &strace_marker_breakpoint_ops;
15018       location = new_linespec_location (&arg);
15019     }
15020   else
15021     {
15022       ops = &tracepoint_breakpoint_ops;
15023       location = string_to_event_location (&arg, current_language);
15024     }
15025
15026   create_breakpoint (get_current_arch (),
15027                      location.get (),
15028                      NULL, 0, arg, 1 /* parse arg */,
15029                      0 /* tempflag */,
15030                      bp_static_tracepoint /* type_wanted */,
15031                      0 /* Ignore count */,
15032                      pending_break_support,
15033                      ops,
15034                      from_tty,
15035                      1 /* enabled */,
15036                      0 /* internal */, 0);
15037 }
15038
15039 /* Set up a fake reader function that gets command lines from a linked
15040    list that was acquired during tracepoint uploading.  */
15041
15042 static struct uploaded_tp *this_utp;
15043 static int next_cmd;
15044
15045 static char *
15046 read_uploaded_action (void)
15047 {
15048   char *rslt;
15049
15050   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15051
15052   next_cmd++;
15053
15054   return rslt;
15055 }
15056
15057 /* Given information about a tracepoint as recorded on a target (which
15058    can be either a live system or a trace file), attempt to create an
15059    equivalent GDB tracepoint.  This is not a reliable process, since
15060    the target does not necessarily have all the information used when
15061    the tracepoint was originally defined.  */
15062   
15063 struct tracepoint *
15064 create_tracepoint_from_upload (struct uploaded_tp *utp)
15065 {
15066   char *addr_str, small_buf[100];
15067   struct tracepoint *tp;
15068
15069   if (utp->at_string)
15070     addr_str = utp->at_string;
15071   else
15072     {
15073       /* In the absence of a source location, fall back to raw
15074          address.  Since there is no way to confirm that the address
15075          means the same thing as when the trace was started, warn the
15076          user.  */
15077       warning (_("Uploaded tracepoint %d has no "
15078                  "source location, using raw address"),
15079                utp->number);
15080       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15081       addr_str = small_buf;
15082     }
15083
15084   /* There's not much we can do with a sequence of bytecodes.  */
15085   if (utp->cond && !utp->cond_string)
15086     warning (_("Uploaded tracepoint %d condition "
15087                "has no source form, ignoring it"),
15088              utp->number);
15089
15090   event_location_up location = string_to_event_location (&addr_str,
15091                                                          current_language);
15092   if (!create_breakpoint (get_current_arch (),
15093                           location.get (),
15094                           utp->cond_string, -1, addr_str,
15095                           0 /* parse cond/thread */,
15096                           0 /* tempflag */,
15097                           utp->type /* type_wanted */,
15098                           0 /* Ignore count */,
15099                           pending_break_support,
15100                           &tracepoint_breakpoint_ops,
15101                           0 /* from_tty */,
15102                           utp->enabled /* enabled */,
15103                           0 /* internal */,
15104                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15105     return NULL;
15106
15107   /* Get the tracepoint we just created.  */
15108   tp = get_tracepoint (tracepoint_count);
15109   gdb_assert (tp != NULL);
15110
15111   if (utp->pass > 0)
15112     {
15113       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15114                  tp->number);
15115
15116       trace_pass_command (small_buf, 0);
15117     }
15118
15119   /* If we have uploaded versions of the original commands, set up a
15120      special-purpose "reader" function and call the usual command line
15121      reader, then pass the result to the breakpoint command-setting
15122      function.  */
15123   if (!VEC_empty (char_ptr, utp->cmd_strings))
15124     {
15125       command_line_up cmd_list;
15126
15127       this_utp = utp;
15128       next_cmd = 0;
15129
15130       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15131
15132       breakpoint_set_commands (tp, std::move (cmd_list));
15133     }
15134   else if (!VEC_empty (char_ptr, utp->actions)
15135            || !VEC_empty (char_ptr, utp->step_actions))
15136     warning (_("Uploaded tracepoint %d actions "
15137                "have no source form, ignoring them"),
15138              utp->number);
15139
15140   /* Copy any status information that might be available.  */
15141   tp->hit_count = utp->hit_count;
15142   tp->traceframe_usage = utp->traceframe_usage;
15143
15144   return tp;
15145 }
15146   
15147 /* Print information on tracepoint number TPNUM_EXP, or all if
15148    omitted.  */
15149
15150 static void
15151 info_tracepoints_command (char *args, int from_tty)
15152 {
15153   struct ui_out *uiout = current_uiout;
15154   int num_printed;
15155
15156   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15157
15158   if (num_printed == 0)
15159     {
15160       if (args == NULL || *args == '\0')
15161         uiout->message ("No tracepoints.\n");
15162       else
15163         uiout->message ("No tracepoint matching '%s'.\n", args);
15164     }
15165
15166   default_collect_info ();
15167 }
15168
15169 /* The 'enable trace' command enables tracepoints.
15170    Not supported by all targets.  */
15171 static void
15172 enable_trace_command (char *args, int from_tty)
15173 {
15174   enable_command (args, from_tty);
15175 }
15176
15177 /* The 'disable trace' command disables tracepoints.
15178    Not supported by all targets.  */
15179 static void
15180 disable_trace_command (char *args, int from_tty)
15181 {
15182   disable_command (args, from_tty);
15183 }
15184
15185 /* Remove a tracepoint (or all if no argument).  */
15186 static void
15187 delete_trace_command (char *arg, int from_tty)
15188 {
15189   struct breakpoint *b, *b_tmp;
15190
15191   dont_repeat ();
15192
15193   if (arg == 0)
15194     {
15195       int breaks_to_delete = 0;
15196
15197       /* Delete all breakpoints if no argument.
15198          Do not delete internal or call-dummy breakpoints, these
15199          have to be deleted with an explicit breakpoint number 
15200          argument.  */
15201       ALL_TRACEPOINTS (b)
15202         if (is_tracepoint (b) && user_breakpoint_p (b))
15203           {
15204             breaks_to_delete = 1;
15205             break;
15206           }
15207
15208       /* Ask user only if there are some breakpoints to delete.  */
15209       if (!from_tty
15210           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15211         {
15212           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15213             if (is_tracepoint (b) && user_breakpoint_p (b))
15214               delete_breakpoint (b);
15215         }
15216     }
15217   else
15218     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15219 }
15220
15221 /* Helper function for trace_pass_command.  */
15222
15223 static void
15224 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15225 {
15226   tp->pass_count = count;
15227   observer_notify_breakpoint_modified (tp);
15228   if (from_tty)
15229     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15230                      tp->number, count);
15231 }
15232
15233 /* Set passcount for tracepoint.
15234
15235    First command argument is passcount, second is tracepoint number.
15236    If tracepoint number omitted, apply to most recently defined.
15237    Also accepts special argument "all".  */
15238
15239 static void
15240 trace_pass_command (char *args, int from_tty)
15241 {
15242   struct tracepoint *t1;
15243   unsigned int count;
15244
15245   if (args == 0 || *args == 0)
15246     error (_("passcount command requires an "
15247              "argument (count + optional TP num)"));
15248
15249   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15250
15251   args = skip_spaces (args);
15252   if (*args && strncasecmp (args, "all", 3) == 0)
15253     {
15254       struct breakpoint *b;
15255
15256       args += 3;                        /* Skip special argument "all".  */
15257       if (*args)
15258         error (_("Junk at end of arguments."));
15259
15260       ALL_TRACEPOINTS (b)
15261       {
15262         t1 = (struct tracepoint *) b;
15263         trace_pass_set_count (t1, count, from_tty);
15264       }
15265     }
15266   else if (*args == '\0')
15267     {
15268       t1 = get_tracepoint_by_number (&args, NULL);
15269       if (t1)
15270         trace_pass_set_count (t1, count, from_tty);
15271     }
15272   else
15273     {
15274       number_or_range_parser parser (args);
15275       while (!parser.finished ())
15276         {
15277           t1 = get_tracepoint_by_number (&args, &parser);
15278           if (t1)
15279             trace_pass_set_count (t1, count, from_tty);
15280         }
15281     }
15282 }
15283
15284 struct tracepoint *
15285 get_tracepoint (int num)
15286 {
15287   struct breakpoint *t;
15288
15289   ALL_TRACEPOINTS (t)
15290     if (t->number == num)
15291       return (struct tracepoint *) t;
15292
15293   return NULL;
15294 }
15295
15296 /* Find the tracepoint with the given target-side number (which may be
15297    different from the tracepoint number after disconnecting and
15298    reconnecting).  */
15299
15300 struct tracepoint *
15301 get_tracepoint_by_number_on_target (int num)
15302 {
15303   struct breakpoint *b;
15304
15305   ALL_TRACEPOINTS (b)
15306     {
15307       struct tracepoint *t = (struct tracepoint *) b;
15308
15309       if (t->number_on_target == num)
15310         return t;
15311     }
15312
15313   return NULL;
15314 }
15315
15316 /* Utility: parse a tracepoint number and look it up in the list.
15317    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15318    If the argument is missing, the most recent tracepoint
15319    (tracepoint_count) is returned.  */
15320
15321 struct tracepoint *
15322 get_tracepoint_by_number (char **arg,
15323                           number_or_range_parser *parser)
15324 {
15325   struct breakpoint *t;
15326   int tpnum;
15327   char *instring = arg == NULL ? NULL : *arg;
15328
15329   if (parser != NULL)
15330     {
15331       gdb_assert (!parser->finished ());
15332       tpnum = parser->get_number ();
15333     }
15334   else if (arg == NULL || *arg == NULL || ! **arg)
15335     tpnum = tracepoint_count;
15336   else
15337     tpnum = get_number (arg);
15338
15339   if (tpnum <= 0)
15340     {
15341       if (instring && *instring)
15342         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15343                          instring);
15344       else
15345         printf_filtered (_("No previous tracepoint\n"));
15346       return NULL;
15347     }
15348
15349   ALL_TRACEPOINTS (t)
15350     if (t->number == tpnum)
15351     {
15352       return (struct tracepoint *) t;
15353     }
15354
15355   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15356   return NULL;
15357 }
15358
15359 void
15360 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15361 {
15362   if (b->thread != -1)
15363     fprintf_unfiltered (fp, " thread %d", b->thread);
15364
15365   if (b->task != 0)
15366     fprintf_unfiltered (fp, " task %d", b->task);
15367
15368   fprintf_unfiltered (fp, "\n");
15369 }
15370
15371 /* Save information on user settable breakpoints (watchpoints, etc) to
15372    a new script file named FILENAME.  If FILTER is non-NULL, call it
15373    on each breakpoint and only include the ones for which it returns
15374    non-zero.  */
15375
15376 static void
15377 save_breakpoints (char *filename, int from_tty,
15378                   int (*filter) (const struct breakpoint *))
15379 {
15380   struct breakpoint *tp;
15381   int any = 0;
15382   int extra_trace_bits = 0;
15383
15384   if (filename == 0 || *filename == 0)
15385     error (_("Argument required (file name in which to save)"));
15386
15387   /* See if we have anything to save.  */
15388   ALL_BREAKPOINTS (tp)
15389   {
15390     /* Skip internal and momentary breakpoints.  */
15391     if (!user_breakpoint_p (tp))
15392       continue;
15393
15394     /* If we have a filter, only save the breakpoints it accepts.  */
15395     if (filter && !filter (tp))
15396       continue;
15397
15398     any = 1;
15399
15400     if (is_tracepoint (tp))
15401       {
15402         extra_trace_bits = 1;
15403
15404         /* We can stop searching.  */
15405         break;
15406       }
15407   }
15408
15409   if (!any)
15410     {
15411       warning (_("Nothing to save."));
15412       return;
15413     }
15414
15415   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
15416
15417   stdio_file fp;
15418
15419   if (!fp.open (expanded_filename.get (), "w"))
15420     error (_("Unable to open file '%s' for saving (%s)"),
15421            expanded_filename.get (), safe_strerror (errno));
15422
15423   if (extra_trace_bits)
15424     save_trace_state_variables (&fp);
15425
15426   ALL_BREAKPOINTS (tp)
15427   {
15428     /* Skip internal and momentary breakpoints.  */
15429     if (!user_breakpoint_p (tp))
15430       continue;
15431
15432     /* If we have a filter, only save the breakpoints it accepts.  */
15433     if (filter && !filter (tp))
15434       continue;
15435
15436     tp->ops->print_recreate (tp, &fp);
15437
15438     /* Note, we can't rely on tp->number for anything, as we can't
15439        assume the recreated breakpoint numbers will match.  Use $bpnum
15440        instead.  */
15441
15442     if (tp->cond_string)
15443       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
15444
15445     if (tp->ignore_count)
15446       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
15447
15448     if (tp->type != bp_dprintf && tp->commands)
15449       {
15450         fp.puts ("  commands\n");
15451         
15452         current_uiout->redirect (&fp);
15453         TRY
15454           {
15455             print_command_lines (current_uiout, tp->commands->commands, 2);
15456           }
15457         CATCH (ex, RETURN_MASK_ALL)
15458           {
15459           current_uiout->redirect (NULL);
15460             throw_exception (ex);
15461           }
15462         END_CATCH
15463
15464         current_uiout->redirect (NULL);
15465         fp.puts ("  end\n");
15466       }
15467
15468     if (tp->enable_state == bp_disabled)
15469       fp.puts ("disable $bpnum\n");
15470
15471     /* If this is a multi-location breakpoint, check if the locations
15472        should be individually disabled.  Watchpoint locations are
15473        special, and not user visible.  */
15474     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15475       {
15476         struct bp_location *loc;
15477         int n = 1;
15478
15479         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15480           if (!loc->enabled)
15481             fp.printf ("disable $bpnum.%d\n", n);
15482       }
15483   }
15484
15485   if (extra_trace_bits && *default_collect)
15486     fp.printf ("set default-collect %s\n", default_collect);
15487
15488   if (from_tty)
15489     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15490 }
15491
15492 /* The `save breakpoints' command.  */
15493
15494 static void
15495 save_breakpoints_command (char *args, int from_tty)
15496 {
15497   save_breakpoints (args, from_tty, NULL);
15498 }
15499
15500 /* The `save tracepoints' command.  */
15501
15502 static void
15503 save_tracepoints_command (char *args, int from_tty)
15504 {
15505   save_breakpoints (args, from_tty, is_tracepoint);
15506 }
15507
15508 /* Create a vector of all tracepoints.  */
15509
15510 VEC(breakpoint_p) *
15511 all_tracepoints (void)
15512 {
15513   VEC(breakpoint_p) *tp_vec = 0;
15514   struct breakpoint *tp;
15515
15516   ALL_TRACEPOINTS (tp)
15517   {
15518     VEC_safe_push (breakpoint_p, tp_vec, tp);
15519   }
15520
15521   return tp_vec;
15522 }
15523
15524 \f
15525 /* This help string is used to consolidate all the help string for specifying
15526    locations used by several commands.  */
15527
15528 #define LOCATION_HELP_STRING \
15529 "Linespecs are colon-separated lists of location parameters, such as\n\
15530 source filename, function name, label name, and line number.\n\
15531 Example: To specify the start of a label named \"the_top\" in the\n\
15532 function \"fact\" in the file \"factorial.c\", use\n\
15533 \"factorial.c:fact:the_top\".\n\
15534 \n\
15535 Address locations begin with \"*\" and specify an exact address in the\n\
15536 program.  Example: To specify the fourth byte past the start function\n\
15537 \"main\", use \"*main + 4\".\n\
15538 \n\
15539 Explicit locations are similar to linespecs but use an option/argument\n\
15540 syntax to specify location parameters.\n\
15541 Example: To specify the start of the label named \"the_top\" in the\n\
15542 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15543 -function fact -label the_top\".\n"
15544
15545 /* This help string is used for the break, hbreak, tbreak and thbreak
15546    commands.  It is defined as a macro to prevent duplication.
15547    COMMAND should be a string constant containing the name of the
15548    command.  */
15549
15550 #define BREAK_ARGS_HELP(command) \
15551 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15552 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15553 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15554 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15555 `-probe-dtrace' (for a DTrace probe).\n\
15556 LOCATION may be a linespec, address, or explicit location as described\n\
15557 below.\n\
15558 \n\
15559 With no LOCATION, uses current execution address of the selected\n\
15560 stack frame.  This is useful for breaking on return to a stack frame.\n\
15561 \n\
15562 THREADNUM is the number from \"info threads\".\n\
15563 CONDITION is a boolean expression.\n\
15564 \n" LOCATION_HELP_STRING "\n\
15565 Multiple breakpoints at one place are permitted, and useful if their\n\
15566 conditions are different.\n\
15567 \n\
15568 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15569
15570 /* List of subcommands for "catch".  */
15571 static struct cmd_list_element *catch_cmdlist;
15572
15573 /* List of subcommands for "tcatch".  */
15574 static struct cmd_list_element *tcatch_cmdlist;
15575
15576 void
15577 add_catch_command (const char *name, const char *docstring,
15578                    cmd_sfunc_ftype *sfunc,
15579                    completer_ftype *completer,
15580                    void *user_data_catch,
15581                    void *user_data_tcatch)
15582 {
15583   struct cmd_list_element *command;
15584
15585   command = add_cmd (name, class_breakpoint, NULL, docstring,
15586                      &catch_cmdlist);
15587   set_cmd_sfunc (command, sfunc);
15588   set_cmd_context (command, user_data_catch);
15589   set_cmd_completer (command, completer);
15590
15591   command = add_cmd (name, class_breakpoint, NULL, docstring,
15592                      &tcatch_cmdlist);
15593   set_cmd_sfunc (command, sfunc);
15594   set_cmd_context (command, user_data_tcatch);
15595   set_cmd_completer (command, completer);
15596 }
15597
15598 static void
15599 save_command (char *arg, int from_tty)
15600 {
15601   printf_unfiltered (_("\"save\" must be followed by "
15602                        "the name of a save subcommand.\n"));
15603   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15604 }
15605
15606 struct breakpoint *
15607 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15608                           void *data)
15609 {
15610   struct breakpoint *b, *b_tmp;
15611
15612   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15613     {
15614       if ((*callback) (b, data))
15615         return b;
15616     }
15617
15618   return NULL;
15619 }
15620
15621 /* Zero if any of the breakpoint's locations could be a location where
15622    functions have been inlined, nonzero otherwise.  */
15623
15624 static int
15625 is_non_inline_function (struct breakpoint *b)
15626 {
15627   /* The shared library event breakpoint is set on the address of a
15628      non-inline function.  */
15629   if (b->type == bp_shlib_event)
15630     return 1;
15631
15632   return 0;
15633 }
15634
15635 /* Nonzero if the specified PC cannot be a location where functions
15636    have been inlined.  */
15637
15638 int
15639 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15640                            const struct target_waitstatus *ws)
15641 {
15642   struct breakpoint *b;
15643   struct bp_location *bl;
15644
15645   ALL_BREAKPOINTS (b)
15646     {
15647       if (!is_non_inline_function (b))
15648         continue;
15649
15650       for (bl = b->loc; bl != NULL; bl = bl->next)
15651         {
15652           if (!bl->shlib_disabled
15653               && bpstat_check_location (bl, aspace, pc, ws))
15654             return 1;
15655         }
15656     }
15657
15658   return 0;
15659 }
15660
15661 /* Remove any references to OBJFILE which is going to be freed.  */
15662
15663 void
15664 breakpoint_free_objfile (struct objfile *objfile)
15665 {
15666   struct bp_location **locp, *loc;
15667
15668   ALL_BP_LOCATIONS (loc, locp)
15669     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15670       loc->symtab = NULL;
15671 }
15672
15673 void
15674 initialize_breakpoint_ops (void)
15675 {
15676   static int initialized = 0;
15677
15678   struct breakpoint_ops *ops;
15679
15680   if (initialized)
15681     return;
15682   initialized = 1;
15683
15684   /* The breakpoint_ops structure to be inherit by all kinds of
15685      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15686      internal and momentary breakpoints, etc.).  */
15687   ops = &bkpt_base_breakpoint_ops;
15688   *ops = base_breakpoint_ops;
15689   ops->re_set = bkpt_re_set;
15690   ops->insert_location = bkpt_insert_location;
15691   ops->remove_location = bkpt_remove_location;
15692   ops->breakpoint_hit = bkpt_breakpoint_hit;
15693   ops->create_sals_from_location = bkpt_create_sals_from_location;
15694   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15695   ops->decode_location = bkpt_decode_location;
15696
15697   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15698   ops = &bkpt_breakpoint_ops;
15699   *ops = bkpt_base_breakpoint_ops;
15700   ops->re_set = bkpt_re_set;
15701   ops->resources_needed = bkpt_resources_needed;
15702   ops->print_it = bkpt_print_it;
15703   ops->print_mention = bkpt_print_mention;
15704   ops->print_recreate = bkpt_print_recreate;
15705
15706   /* Ranged breakpoints.  */
15707   ops = &ranged_breakpoint_ops;
15708   *ops = bkpt_breakpoint_ops;
15709   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15710   ops->resources_needed = resources_needed_ranged_breakpoint;
15711   ops->print_it = print_it_ranged_breakpoint;
15712   ops->print_one = print_one_ranged_breakpoint;
15713   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15714   ops->print_mention = print_mention_ranged_breakpoint;
15715   ops->print_recreate = print_recreate_ranged_breakpoint;
15716
15717   /* Internal breakpoints.  */
15718   ops = &internal_breakpoint_ops;
15719   *ops = bkpt_base_breakpoint_ops;
15720   ops->re_set = internal_bkpt_re_set;
15721   ops->check_status = internal_bkpt_check_status;
15722   ops->print_it = internal_bkpt_print_it;
15723   ops->print_mention = internal_bkpt_print_mention;
15724
15725   /* Momentary breakpoints.  */
15726   ops = &momentary_breakpoint_ops;
15727   *ops = bkpt_base_breakpoint_ops;
15728   ops->re_set = momentary_bkpt_re_set;
15729   ops->check_status = momentary_bkpt_check_status;
15730   ops->print_it = momentary_bkpt_print_it;
15731   ops->print_mention = momentary_bkpt_print_mention;
15732
15733   /* Probe breakpoints.  */
15734   ops = &bkpt_probe_breakpoint_ops;
15735   *ops = bkpt_breakpoint_ops;
15736   ops->insert_location = bkpt_probe_insert_location;
15737   ops->remove_location = bkpt_probe_remove_location;
15738   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15739   ops->decode_location = bkpt_probe_decode_location;
15740
15741   /* Watchpoints.  */
15742   ops = &watchpoint_breakpoint_ops;
15743   *ops = base_breakpoint_ops;
15744   ops->re_set = re_set_watchpoint;
15745   ops->insert_location = insert_watchpoint;
15746   ops->remove_location = remove_watchpoint;
15747   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15748   ops->check_status = check_status_watchpoint;
15749   ops->resources_needed = resources_needed_watchpoint;
15750   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15751   ops->print_it = print_it_watchpoint;
15752   ops->print_mention = print_mention_watchpoint;
15753   ops->print_recreate = print_recreate_watchpoint;
15754   ops->explains_signal = explains_signal_watchpoint;
15755
15756   /* Masked watchpoints.  */
15757   ops = &masked_watchpoint_breakpoint_ops;
15758   *ops = watchpoint_breakpoint_ops;
15759   ops->insert_location = insert_masked_watchpoint;
15760   ops->remove_location = remove_masked_watchpoint;
15761   ops->resources_needed = resources_needed_masked_watchpoint;
15762   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15763   ops->print_it = print_it_masked_watchpoint;
15764   ops->print_one_detail = print_one_detail_masked_watchpoint;
15765   ops->print_mention = print_mention_masked_watchpoint;
15766   ops->print_recreate = print_recreate_masked_watchpoint;
15767
15768   /* Tracepoints.  */
15769   ops = &tracepoint_breakpoint_ops;
15770   *ops = base_breakpoint_ops;
15771   ops->re_set = tracepoint_re_set;
15772   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15773   ops->print_one_detail = tracepoint_print_one_detail;
15774   ops->print_mention = tracepoint_print_mention;
15775   ops->print_recreate = tracepoint_print_recreate;
15776   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15777   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15778   ops->decode_location = tracepoint_decode_location;
15779
15780   /* Probe tracepoints.  */
15781   ops = &tracepoint_probe_breakpoint_ops;
15782   *ops = tracepoint_breakpoint_ops;
15783   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15784   ops->decode_location = tracepoint_probe_decode_location;
15785
15786   /* Static tracepoints with marker (`-m').  */
15787   ops = &strace_marker_breakpoint_ops;
15788   *ops = tracepoint_breakpoint_ops;
15789   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15790   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15791   ops->decode_location = strace_marker_decode_location;
15792
15793   /* Fork catchpoints.  */
15794   ops = &catch_fork_breakpoint_ops;
15795   *ops = base_breakpoint_ops;
15796   ops->insert_location = insert_catch_fork;
15797   ops->remove_location = remove_catch_fork;
15798   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15799   ops->print_it = print_it_catch_fork;
15800   ops->print_one = print_one_catch_fork;
15801   ops->print_mention = print_mention_catch_fork;
15802   ops->print_recreate = print_recreate_catch_fork;
15803
15804   /* Vfork catchpoints.  */
15805   ops = &catch_vfork_breakpoint_ops;
15806   *ops = base_breakpoint_ops;
15807   ops->insert_location = insert_catch_vfork;
15808   ops->remove_location = remove_catch_vfork;
15809   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15810   ops->print_it = print_it_catch_vfork;
15811   ops->print_one = print_one_catch_vfork;
15812   ops->print_mention = print_mention_catch_vfork;
15813   ops->print_recreate = print_recreate_catch_vfork;
15814
15815   /* Exec catchpoints.  */
15816   ops = &catch_exec_breakpoint_ops;
15817   *ops = base_breakpoint_ops;
15818   ops->insert_location = insert_catch_exec;
15819   ops->remove_location = remove_catch_exec;
15820   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15821   ops->print_it = print_it_catch_exec;
15822   ops->print_one = print_one_catch_exec;
15823   ops->print_mention = print_mention_catch_exec;
15824   ops->print_recreate = print_recreate_catch_exec;
15825
15826   /* Solib-related catchpoints.  */
15827   ops = &catch_solib_breakpoint_ops;
15828   *ops = base_breakpoint_ops;
15829   ops->insert_location = insert_catch_solib;
15830   ops->remove_location = remove_catch_solib;
15831   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15832   ops->check_status = check_status_catch_solib;
15833   ops->print_it = print_it_catch_solib;
15834   ops->print_one = print_one_catch_solib;
15835   ops->print_mention = print_mention_catch_solib;
15836   ops->print_recreate = print_recreate_catch_solib;
15837
15838   ops = &dprintf_breakpoint_ops;
15839   *ops = bkpt_base_breakpoint_ops;
15840   ops->re_set = dprintf_re_set;
15841   ops->resources_needed = bkpt_resources_needed;
15842   ops->print_it = bkpt_print_it;
15843   ops->print_mention = bkpt_print_mention;
15844   ops->print_recreate = dprintf_print_recreate;
15845   ops->after_condition_true = dprintf_after_condition_true;
15846   ops->breakpoint_hit = dprintf_breakpoint_hit;
15847 }
15848
15849 /* Chain containing all defined "enable breakpoint" subcommands.  */
15850
15851 static struct cmd_list_element *enablebreaklist = NULL;
15852
15853 void
15854 _initialize_breakpoint (void)
15855 {
15856   struct cmd_list_element *c;
15857
15858   initialize_breakpoint_ops ();
15859
15860   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15861   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
15862   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15863
15864   breakpoint_objfile_key
15865     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15866
15867   breakpoint_chain = 0;
15868   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15869      before a breakpoint is set.  */
15870   breakpoint_count = 0;
15871
15872   tracepoint_count = 0;
15873
15874   add_com ("ignore", class_breakpoint, ignore_command, _("\
15875 Set ignore-count of breakpoint number N to COUNT.\n\
15876 Usage is `ignore N COUNT'."));
15877
15878   add_com ("commands", class_breakpoint, commands_command, _("\
15879 Set commands to be executed when the given breakpoints are hit.\n\
15880 Give a space-separated breakpoint list as argument after \"commands\".\n\
15881 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15882 (e.g. `5-7').\n\
15883 With no argument, the targeted breakpoint is the last one set.\n\
15884 The commands themselves follow starting on the next line.\n\
15885 Type a line containing \"end\" to indicate the end of them.\n\
15886 Give \"silent\" as the first line to make the breakpoint silent;\n\
15887 then no output is printed when it is hit, except what the commands print."));
15888
15889   c = add_com ("condition", class_breakpoint, condition_command, _("\
15890 Specify breakpoint number N to break only if COND is true.\n\
15891 Usage is `condition N COND', where N is an integer and COND is an\n\
15892 expression to be evaluated whenever breakpoint N is reached."));
15893   set_cmd_completer (c, condition_completer);
15894
15895   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15896 Set a temporary breakpoint.\n\
15897 Like \"break\" except the breakpoint is only temporary,\n\
15898 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15899 by using \"enable delete\" on the breakpoint number.\n\
15900 \n"
15901 BREAK_ARGS_HELP ("tbreak")));
15902   set_cmd_completer (c, location_completer);
15903
15904   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15905 Set a hardware assisted breakpoint.\n\
15906 Like \"break\" except the breakpoint requires hardware support,\n\
15907 some target hardware may not have this support.\n\
15908 \n"
15909 BREAK_ARGS_HELP ("hbreak")));
15910   set_cmd_completer (c, location_completer);
15911
15912   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15913 Set a temporary hardware assisted breakpoint.\n\
15914 Like \"hbreak\" except the breakpoint is only temporary,\n\
15915 so it will be deleted when hit.\n\
15916 \n"
15917 BREAK_ARGS_HELP ("thbreak")));
15918   set_cmd_completer (c, location_completer);
15919
15920   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15921 Enable some breakpoints.\n\
15922 Give breakpoint numbers (separated by spaces) as arguments.\n\
15923 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15924 This is used to cancel the effect of the \"disable\" command.\n\
15925 With a subcommand you can enable temporarily."),
15926                   &enablelist, "enable ", 1, &cmdlist);
15927
15928   add_com_alias ("en", "enable", class_breakpoint, 1);
15929
15930   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15931 Enable some breakpoints.\n\
15932 Give breakpoint numbers (separated by spaces) as arguments.\n\
15933 This is used to cancel the effect of the \"disable\" command.\n\
15934 May be abbreviated to simply \"enable\".\n"),
15935                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15936
15937   add_cmd ("once", no_class, enable_once_command, _("\
15938 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15939 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15940            &enablebreaklist);
15941
15942   add_cmd ("delete", no_class, enable_delete_command, _("\
15943 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15944 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15945            &enablebreaklist);
15946
15947   add_cmd ("count", no_class, enable_count_command, _("\
15948 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15949 If a breakpoint is hit while enabled in this fashion,\n\
15950 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15951            &enablebreaklist);
15952
15953   add_cmd ("delete", no_class, enable_delete_command, _("\
15954 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15955 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15956            &enablelist);
15957
15958   add_cmd ("once", no_class, enable_once_command, _("\
15959 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15960 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15961            &enablelist);
15962
15963   add_cmd ("count", no_class, enable_count_command, _("\
15964 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15965 If a breakpoint is hit while enabled in this fashion,\n\
15966 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15967            &enablelist);
15968
15969   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15970 Disable some breakpoints.\n\
15971 Arguments are breakpoint numbers with spaces in between.\n\
15972 To disable all breakpoints, give no argument.\n\
15973 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15974                   &disablelist, "disable ", 1, &cmdlist);
15975   add_com_alias ("dis", "disable", class_breakpoint, 1);
15976   add_com_alias ("disa", "disable", class_breakpoint, 1);
15977
15978   add_cmd ("breakpoints", class_alias, disable_command, _("\
15979 Disable some breakpoints.\n\
15980 Arguments are breakpoint numbers with spaces in between.\n\
15981 To disable all breakpoints, give no argument.\n\
15982 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15983 This command may be abbreviated \"disable\"."),
15984            &disablelist);
15985
15986   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15987 Delete some breakpoints or auto-display expressions.\n\
15988 Arguments are breakpoint numbers with spaces in between.\n\
15989 To delete all breakpoints, give no argument.\n\
15990 \n\
15991 Also a prefix command for deletion of other GDB objects.\n\
15992 The \"unset\" command is also an alias for \"delete\"."),
15993                   &deletelist, "delete ", 1, &cmdlist);
15994   add_com_alias ("d", "delete", class_breakpoint, 1);
15995   add_com_alias ("del", "delete", class_breakpoint, 1);
15996
15997   add_cmd ("breakpoints", class_alias, delete_command, _("\
15998 Delete some breakpoints or auto-display expressions.\n\
15999 Arguments are breakpoint numbers with spaces in between.\n\
16000 To delete all breakpoints, give no argument.\n\
16001 This command may be abbreviated \"delete\"."),
16002            &deletelist);
16003
16004   add_com ("clear", class_breakpoint, clear_command, _("\
16005 Clear breakpoint at specified location.\n\
16006 Argument may be a linespec, explicit, or address location as described below.\n\
16007 \n\
16008 With no argument, clears all breakpoints in the line that the selected frame\n\
16009 is executing in.\n"
16010 "\n" LOCATION_HELP_STRING "\n\
16011 See also the \"delete\" command which clears breakpoints by number."));
16012   add_com_alias ("cl", "clear", class_breakpoint, 1);
16013
16014   c = add_com ("break", class_breakpoint, break_command, _("\
16015 Set breakpoint at specified location.\n"
16016 BREAK_ARGS_HELP ("break")));
16017   set_cmd_completer (c, location_completer);
16018
16019   add_com_alias ("b", "break", class_run, 1);
16020   add_com_alias ("br", "break", class_run, 1);
16021   add_com_alias ("bre", "break", class_run, 1);
16022   add_com_alias ("brea", "break", class_run, 1);
16023
16024   if (dbx_commands)
16025     {
16026       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16027 Break in function/address or break at a line in the current file."),
16028                              &stoplist, "stop ", 1, &cmdlist);
16029       add_cmd ("in", class_breakpoint, stopin_command,
16030                _("Break in function or address."), &stoplist);
16031       add_cmd ("at", class_breakpoint, stopat_command,
16032                _("Break at a line in the current file."), &stoplist);
16033       add_com ("status", class_info, info_breakpoints_command, _("\
16034 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16035 The \"Type\" column indicates one of:\n\
16036 \tbreakpoint     - normal breakpoint\n\
16037 \twatchpoint     - watchpoint\n\
16038 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16039 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16040 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16041 address and file/line number respectively.\n\
16042 \n\
16043 Convenience variable \"$_\" and default examine address for \"x\"\n\
16044 are set to the address of the last breakpoint listed unless the command\n\
16045 is prefixed with \"server \".\n\n\
16046 Convenience variable \"$bpnum\" contains the number of the last\n\
16047 breakpoint set."));
16048     }
16049
16050   add_info ("breakpoints", info_breakpoints_command, _("\
16051 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16052 The \"Type\" column indicates one of:\n\
16053 \tbreakpoint     - normal breakpoint\n\
16054 \twatchpoint     - watchpoint\n\
16055 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16056 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16057 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16058 address and file/line number respectively.\n\
16059 \n\
16060 Convenience variable \"$_\" and default examine address for \"x\"\n\
16061 are set to the address of the last breakpoint listed unless the command\n\
16062 is prefixed with \"server \".\n\n\
16063 Convenience variable \"$bpnum\" contains the number of the last\n\
16064 breakpoint set."));
16065
16066   add_info_alias ("b", "breakpoints", 1);
16067
16068   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16069 Status of all breakpoints, or breakpoint number NUMBER.\n\
16070 The \"Type\" column indicates one of:\n\
16071 \tbreakpoint     - normal breakpoint\n\
16072 \twatchpoint     - watchpoint\n\
16073 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16074 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16075 \tuntil          - internal breakpoint used by the \"until\" command\n\
16076 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16077 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16078 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16079 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16080 address and file/line number respectively.\n\
16081 \n\
16082 Convenience variable \"$_\" and default examine address for \"x\"\n\
16083 are set to the address of the last breakpoint listed unless the command\n\
16084 is prefixed with \"server \".\n\n\
16085 Convenience variable \"$bpnum\" contains the number of the last\n\
16086 breakpoint set."),
16087            &maintenanceinfolist);
16088
16089   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16090 Set catchpoints to catch events."),
16091                   &catch_cmdlist, "catch ",
16092                   0/*allow-unknown*/, &cmdlist);
16093
16094   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16095 Set temporary catchpoints to catch events."),
16096                   &tcatch_cmdlist, "tcatch ",
16097                   0/*allow-unknown*/, &cmdlist);
16098
16099   add_catch_command ("fork", _("Catch calls to fork."),
16100                      catch_fork_command_1,
16101                      NULL,
16102                      (void *) (uintptr_t) catch_fork_permanent,
16103                      (void *) (uintptr_t) catch_fork_temporary);
16104   add_catch_command ("vfork", _("Catch calls to vfork."),
16105                      catch_fork_command_1,
16106                      NULL,
16107                      (void *) (uintptr_t) catch_vfork_permanent,
16108                      (void *) (uintptr_t) catch_vfork_temporary);
16109   add_catch_command ("exec", _("Catch calls to exec."),
16110                      catch_exec_command_1,
16111                      NULL,
16112                      CATCH_PERMANENT,
16113                      CATCH_TEMPORARY);
16114   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16115 Usage: catch load [REGEX]\n\
16116 If REGEX is given, only stop for libraries matching the regular expression."),
16117                      catch_load_command_1,
16118                      NULL,
16119                      CATCH_PERMANENT,
16120                      CATCH_TEMPORARY);
16121   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16122 Usage: catch unload [REGEX]\n\
16123 If REGEX is given, only stop for libraries matching the regular expression."),
16124                      catch_unload_command_1,
16125                      NULL,
16126                      CATCH_PERMANENT,
16127                      CATCH_TEMPORARY);
16128
16129   c = add_com ("watch", class_breakpoint, watch_command, _("\
16130 Set a watchpoint for an expression.\n\
16131 Usage: watch [-l|-location] EXPRESSION\n\
16132 A watchpoint stops execution of your program whenever the value of\n\
16133 an expression changes.\n\
16134 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16135 the memory to which it refers."));
16136   set_cmd_completer (c, expression_completer);
16137
16138   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16139 Set a read watchpoint for an expression.\n\
16140 Usage: rwatch [-l|-location] EXPRESSION\n\
16141 A watchpoint stops execution of your program whenever the value of\n\
16142 an expression is read.\n\
16143 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16144 the memory to which it refers."));
16145   set_cmd_completer (c, expression_completer);
16146
16147   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16148 Set a watchpoint for an expression.\n\
16149 Usage: awatch [-l|-location] EXPRESSION\n\
16150 A watchpoint stops execution of your program whenever the value of\n\
16151 an expression is either read or written.\n\
16152 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16153 the memory to which it refers."));
16154   set_cmd_completer (c, expression_completer);
16155
16156   add_info ("watchpoints", info_watchpoints_command, _("\
16157 Status of specified watchpoints (all watchpoints if no argument)."));
16158
16159   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16160      respond to changes - contrary to the description.  */
16161   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16162                             &can_use_hw_watchpoints, _("\
16163 Set debugger's willingness to use watchpoint hardware."), _("\
16164 Show debugger's willingness to use watchpoint hardware."), _("\
16165 If zero, gdb will not use hardware for new watchpoints, even if\n\
16166 such is available.  (However, any hardware watchpoints that were\n\
16167 created before setting this to nonzero, will continue to use watchpoint\n\
16168 hardware.)"),
16169                             NULL,
16170                             show_can_use_hw_watchpoints,
16171                             &setlist, &showlist);
16172
16173   can_use_hw_watchpoints = 1;
16174
16175   /* Tracepoint manipulation commands.  */
16176
16177   c = add_com ("trace", class_breakpoint, trace_command, _("\
16178 Set a tracepoint at specified location.\n\
16179 \n"
16180 BREAK_ARGS_HELP ("trace") "\n\
16181 Do \"help tracepoints\" for info on other tracepoint commands."));
16182   set_cmd_completer (c, location_completer);
16183
16184   add_com_alias ("tp", "trace", class_alias, 0);
16185   add_com_alias ("tr", "trace", class_alias, 1);
16186   add_com_alias ("tra", "trace", class_alias, 1);
16187   add_com_alias ("trac", "trace", class_alias, 1);
16188
16189   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16190 Set a fast tracepoint at specified location.\n\
16191 \n"
16192 BREAK_ARGS_HELP ("ftrace") "\n\
16193 Do \"help tracepoints\" for info on other tracepoint commands."));
16194   set_cmd_completer (c, location_completer);
16195
16196   c = add_com ("strace", class_breakpoint, strace_command, _("\
16197 Set a static tracepoint at location or marker.\n\
16198 \n\
16199 strace [LOCATION] [if CONDITION]\n\
16200 LOCATION may be a linespec, explicit, or address location (described below) \n\
16201 or -m MARKER_ID.\n\n\
16202 If a marker id is specified, probe the marker with that name.  With\n\
16203 no LOCATION, uses current execution address of the selected stack frame.\n\
16204 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16205 This collects arbitrary user data passed in the probe point call to the\n\
16206 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16207 by printing the $_sdata variable like any other convenience variable.\n\
16208 \n\
16209 CONDITION is a boolean expression.\n\
16210 \n" LOCATION_HELP_STRING "\n\
16211 Multiple tracepoints at one place are permitted, and useful if their\n\
16212 conditions are different.\n\
16213 \n\
16214 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16215 Do \"help tracepoints\" for info on other tracepoint commands."));
16216   set_cmd_completer (c, location_completer);
16217
16218   add_info ("tracepoints", info_tracepoints_command, _("\
16219 Status of specified tracepoints (all tracepoints if no argument).\n\
16220 Convenience variable \"$tpnum\" contains the number of the\n\
16221 last tracepoint set."));
16222
16223   add_info_alias ("tp", "tracepoints", 1);
16224
16225   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16226 Delete specified tracepoints.\n\
16227 Arguments are tracepoint numbers, separated by spaces.\n\
16228 No argument means delete all tracepoints."),
16229            &deletelist);
16230   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16231
16232   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16233 Disable specified tracepoints.\n\
16234 Arguments are tracepoint numbers, separated by spaces.\n\
16235 No argument means disable all tracepoints."),
16236            &disablelist);
16237   deprecate_cmd (c, "disable");
16238
16239   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16240 Enable specified tracepoints.\n\
16241 Arguments are tracepoint numbers, separated by spaces.\n\
16242 No argument means enable all tracepoints."),
16243            &enablelist);
16244   deprecate_cmd (c, "enable");
16245
16246   add_com ("passcount", class_trace, trace_pass_command, _("\
16247 Set the passcount for a tracepoint.\n\
16248 The trace will end when the tracepoint has been passed 'count' times.\n\
16249 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16250 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16251
16252   add_prefix_cmd ("save", class_breakpoint, save_command,
16253                   _("Save breakpoint definitions as a script."),
16254                   &save_cmdlist, "save ",
16255                   0/*allow-unknown*/, &cmdlist);
16256
16257   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16258 Save current breakpoint definitions as a script.\n\
16259 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16260 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16261 session to restore them."),
16262                &save_cmdlist);
16263   set_cmd_completer (c, filename_completer);
16264
16265   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16266 Save current tracepoint definitions as a script.\n\
16267 Use the 'source' command in another debug session to restore them."),
16268                &save_cmdlist);
16269   set_cmd_completer (c, filename_completer);
16270
16271   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16272   deprecate_cmd (c, "save tracepoints");
16273
16274   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16275 Breakpoint specific settings\n\
16276 Configure various breakpoint-specific variables such as\n\
16277 pending breakpoint behavior"),
16278                   &breakpoint_set_cmdlist, "set breakpoint ",
16279                   0/*allow-unknown*/, &setlist);
16280   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16281 Breakpoint specific settings\n\
16282 Configure various breakpoint-specific variables such as\n\
16283 pending breakpoint behavior"),
16284                   &breakpoint_show_cmdlist, "show breakpoint ",
16285                   0/*allow-unknown*/, &showlist);
16286
16287   add_setshow_auto_boolean_cmd ("pending", no_class,
16288                                 &pending_break_support, _("\
16289 Set debugger's behavior regarding pending breakpoints."), _("\
16290 Show debugger's behavior regarding pending breakpoints."), _("\
16291 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16292 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16293 an error.  If auto, an unrecognized breakpoint location results in a\n\
16294 user-query to see if a pending breakpoint should be created."),
16295                                 NULL,
16296                                 show_pending_break_support,
16297                                 &breakpoint_set_cmdlist,
16298                                 &breakpoint_show_cmdlist);
16299
16300   pending_break_support = AUTO_BOOLEAN_AUTO;
16301
16302   add_setshow_boolean_cmd ("auto-hw", no_class,
16303                            &automatic_hardware_breakpoints, _("\
16304 Set automatic usage of hardware breakpoints."), _("\
16305 Show automatic usage of hardware breakpoints."), _("\
16306 If set, the debugger will automatically use hardware breakpoints for\n\
16307 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16308 a warning will be emitted for such breakpoints."),
16309                            NULL,
16310                            show_automatic_hardware_breakpoints,
16311                            &breakpoint_set_cmdlist,
16312                            &breakpoint_show_cmdlist);
16313
16314   add_setshow_boolean_cmd ("always-inserted", class_support,
16315                            &always_inserted_mode, _("\
16316 Set mode for inserting breakpoints."), _("\
16317 Show mode for inserting breakpoints."), _("\
16318 When this mode is on, breakpoints are inserted immediately as soon as\n\
16319 they're created, kept inserted even when execution stops, and removed\n\
16320 only when the user deletes them.  When this mode is off (the default),\n\
16321 breakpoints are inserted only when execution continues, and removed\n\
16322 when execution stops."),
16323                                 NULL,
16324                                 &show_always_inserted_mode,
16325                                 &breakpoint_set_cmdlist,
16326                                 &breakpoint_show_cmdlist);
16327
16328   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16329                         condition_evaluation_enums,
16330                         &condition_evaluation_mode_1, _("\
16331 Set mode of breakpoint condition evaluation."), _("\
16332 Show mode of breakpoint condition evaluation."), _("\
16333 When this is set to \"host\", breakpoint conditions will be\n\
16334 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16335 breakpoint conditions will be downloaded to the target (if the target\n\
16336 supports such feature) and conditions will be evaluated on the target's side.\n\
16337 If this is set to \"auto\" (default), this will be automatically set to\n\
16338 \"target\" if it supports condition evaluation, otherwise it will\n\
16339 be set to \"gdb\""),
16340                            &set_condition_evaluation_mode,
16341                            &show_condition_evaluation_mode,
16342                            &breakpoint_set_cmdlist,
16343                            &breakpoint_show_cmdlist);
16344
16345   add_com ("break-range", class_breakpoint, break_range_command, _("\
16346 Set a breakpoint for an address range.\n\
16347 break-range START-LOCATION, END-LOCATION\n\
16348 where START-LOCATION and END-LOCATION can be one of the following:\n\
16349   LINENUM, for that line in the current file,\n\
16350   FILE:LINENUM, for that line in that file,\n\
16351   +OFFSET, for that number of lines after the current line\n\
16352            or the start of the range\n\
16353   FUNCTION, for the first line in that function,\n\
16354   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16355   *ADDRESS, for the instruction at that address.\n\
16356 \n\
16357 The breakpoint will stop execution of the inferior whenever it executes\n\
16358 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16359 range (including START-LOCATION and END-LOCATION)."));
16360
16361   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16362 Set a dynamic printf at specified location.\n\
16363 dprintf location,format string,arg1,arg2,...\n\
16364 location may be a linespec, explicit, or address location.\n"
16365 "\n" LOCATION_HELP_STRING));
16366   set_cmd_completer (c, location_completer);
16367
16368   add_setshow_enum_cmd ("dprintf-style", class_support,
16369                         dprintf_style_enums, &dprintf_style, _("\
16370 Set the style of usage for dynamic printf."), _("\
16371 Show the style of usage for dynamic printf."), _("\
16372 This setting chooses how GDB will do a dynamic printf.\n\
16373 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16374 console, as with the \"printf\" command.\n\
16375 If the value is \"call\", the print is done by calling a function in your\n\
16376 program; by default printf(), but you can choose a different function or\n\
16377 output stream by setting dprintf-function and dprintf-channel."),
16378                         update_dprintf_commands, NULL,
16379                         &setlist, &showlist);
16380
16381   dprintf_function = xstrdup ("printf");
16382   add_setshow_string_cmd ("dprintf-function", class_support,
16383                           &dprintf_function, _("\
16384 Set the function to use for dynamic printf"), _("\
16385 Show the function to use for dynamic printf"), NULL,
16386                           update_dprintf_commands, NULL,
16387                           &setlist, &showlist);
16388
16389   dprintf_channel = xstrdup ("");
16390   add_setshow_string_cmd ("dprintf-channel", class_support,
16391                           &dprintf_channel, _("\
16392 Set the channel to use for dynamic printf"), _("\
16393 Show the channel to use for dynamic printf"), NULL,
16394                           update_dprintf_commands, NULL,
16395                           &setlist, &showlist);
16396
16397   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16398                            &disconnected_dprintf, _("\
16399 Set whether dprintf continues after GDB disconnects."), _("\
16400 Show whether dprintf continues after GDB disconnects."), _("\
16401 Use this to let dprintf commands continue to hit and produce output\n\
16402 even if GDB disconnects or detaches from the target."),
16403                            NULL,
16404                            NULL,
16405                            &setlist, &showlist);
16406
16407   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16408 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16409 (target agent only) This is useful for formatted output in user-defined commands."));
16410
16411   automatic_hardware_breakpoints = 1;
16412
16413   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16414   observer_attach_thread_exit (remove_threaded_breakpoints);
16415 }