Return std::string from memory_error_message
[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
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_RETHROW,
90   EX_EVENT_CATCH
91 };
92
93 /* Prototypes for local functions.  */
94
95 static void enable_delete_command (char *, int);
96
97 static void enable_once_command (char *, int);
98
99 static void enable_count_command (char *, int);
100
101 static void disable_command (char *, int);
102
103 static void enable_command (char *, int);
104
105 static void map_breakpoint_numbers (const char *,
106                                     void (*) (struct breakpoint *,
107                                               void *),
108                                     void *);
109
110 static void ignore_command (char *, int);
111
112 static int breakpoint_re_set_one (void *);
113
114 static void breakpoint_re_set_default (struct breakpoint *);
115
116 static void
117   create_sals_from_location_default (const struct event_location *location,
118                                      struct linespec_result *canonical,
119                                      enum bptype type_wanted);
120
121 static void create_breakpoints_sal_default (struct gdbarch *,
122                                             struct linespec_result *,
123                                             gdb::unique_xmalloc_ptr<char>,
124                                             gdb::unique_xmalloc_ptr<char>,
125                                             enum bptype,
126                                             enum bpdisp, int, int,
127                                             int,
128                                             const struct breakpoint_ops *,
129                                             int, int, int, unsigned);
130
131 static void decode_location_default (struct breakpoint *b,
132                                      const struct event_location *location,
133                                      struct program_space *search_pspace,
134                                      struct symtabs_and_lines *sals);
135
136 static void clear_command (char *, int);
137
138 static void catch_command (char *, int);
139
140 static int can_use_hardware_watchpoint (struct value *);
141
142 static void break_command_1 (char *, int, int);
143
144 static void mention (struct breakpoint *);
145
146 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
147                                                                enum bptype,
148                                                                const struct breakpoint_ops *);
149 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
150                                                        const struct symtab_and_line *);
151
152 /* This function is used in gdbtk sources and thus can not be made
153    static.  */
154 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
155                                        struct symtab_and_line,
156                                        enum bptype,
157                                        const struct breakpoint_ops *);
158
159 static struct breakpoint *
160   momentary_breakpoint_from_master (struct breakpoint *orig,
161                                     enum bptype type,
162                                     const struct breakpoint_ops *ops,
163                                     int loc_enabled);
164
165 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
166
167 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
168                                             CORE_ADDR bpaddr,
169                                             enum bptype bptype);
170
171 static void describe_other_breakpoints (struct gdbarch *,
172                                         struct program_space *, CORE_ADDR,
173                                         struct obj_section *, int);
174
175 static int watchpoint_locations_match (struct bp_location *loc1,
176                                        struct bp_location *loc2);
177
178 static int breakpoint_location_address_match (struct bp_location *bl,
179                                               struct address_space *aspace,
180                                               CORE_ADDR addr);
181
182 static int breakpoint_location_address_range_overlap (struct bp_location *,
183                                                       struct address_space *,
184                                                       CORE_ADDR, int);
185
186 static void info_breakpoints_command (char *, int);
187
188 static void info_watchpoints_command (char *, int);
189
190 static int breakpoint_1 (char *, int, 
191                          int (*) (const struct breakpoint *));
192
193 static int breakpoint_cond_eval (void *);
194
195 static void cleanup_executing_breakpoints (void *);
196
197 static void commands_command (char *, int);
198
199 static void condition_command (char *, int);
200
201 static int remove_breakpoint (struct bp_location *);
202 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
203
204 static enum print_stop_action print_bp_stop_message (bpstat bs);
205
206 static int watchpoint_check (void *);
207
208 static void maintenance_info_breakpoints (char *, int);
209
210 static int hw_breakpoint_used_count (void);
211
212 static int hw_watchpoint_use_count (struct breakpoint *);
213
214 static int hw_watchpoint_used_count_others (struct breakpoint *except,
215                                             enum bptype type,
216                                             int *other_type_used);
217
218 static void hbreak_command (char *, int);
219
220 static void thbreak_command (char *, int);
221
222 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
223                                     int count);
224
225 static void stop_command (char *arg, int from_tty);
226
227 static void stopin_command (char *arg, int from_tty);
228
229 static void stopat_command (char *arg, int from_tty);
230
231 static void tcatch_command (char *arg, int from_tty);
232
233 static void free_bp_location (struct bp_location *loc);
234 static void incref_bp_location (struct bp_location *loc);
235 static void decref_bp_location (struct bp_location **loc);
236
237 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
238
239 /* update_global_location_list's modes of operation wrt to whether to
240    insert locations now.  */
241 enum ugll_insert_mode
242 {
243   /* Don't insert any breakpoint locations into the inferior, only
244      remove already-inserted locations that no longer should be
245      inserted.  Functions that delete a breakpoint or breakpoints
246      should specify this mode, so that deleting a breakpoint doesn't
247      have the side effect of inserting the locations of other
248      breakpoints that are marked not-inserted, but should_be_inserted
249      returns true on them.
250
251      This behavior is useful is situations close to tear-down -- e.g.,
252      after an exec, while the target still has execution, but
253      breakpoint shadows of the previous executable image should *NOT*
254      be restored to the new image; or before detaching, where the
255      target still has execution and wants to delete breakpoints from
256      GDB's lists, and all breakpoints had already been removed from
257      the inferior.  */
258   UGLL_DONT_INSERT,
259
260   /* May insert breakpoints iff breakpoints_should_be_inserted_now
261      claims breakpoints should be inserted now.  */
262   UGLL_MAY_INSERT,
263
264   /* Insert locations now, irrespective of
265      breakpoints_should_be_inserted_now.  E.g., say all threads are
266      stopped right now, and the user did "continue".  We need to
267      insert breakpoints _before_ resuming the target, but
268      UGLL_MAY_INSERT wouldn't insert them, because
269      breakpoints_should_be_inserted_now returns false at that point,
270      as no thread is running yet.  */
271   UGLL_INSERT
272 };
273
274 static void update_global_location_list (enum ugll_insert_mode);
275
276 static void update_global_location_list_nothrow (enum ugll_insert_mode);
277
278 static int is_hardware_watchpoint (const struct breakpoint *bpt);
279
280 static void insert_breakpoint_locations (void);
281
282 static void info_tracepoints_command (char *, int);
283
284 static void delete_trace_command (char *, int);
285
286 static void enable_trace_command (char *, int);
287
288 static void disable_trace_command (char *, int);
289
290 static void trace_pass_command (char *, int);
291
292 static void set_tracepoint_count (int num);
293
294 static int is_masked_watchpoint (const struct breakpoint *b);
295
296 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
297
298 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
299    otherwise.  */
300
301 static int strace_marker_p (struct breakpoint *b);
302
303 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
304    that are implemented on top of software or hardware breakpoints
305    (user breakpoints, internal and momentary breakpoints, etc.).  */
306 static struct breakpoint_ops bkpt_base_breakpoint_ops;
307
308 /* Internal breakpoints class type.  */
309 static struct breakpoint_ops internal_breakpoint_ops;
310
311 /* Momentary breakpoints class type.  */
312 static struct breakpoint_ops momentary_breakpoint_ops;
313
314 /* The breakpoint_ops structure to be used in regular user created
315    breakpoints.  */
316 struct breakpoint_ops bkpt_breakpoint_ops;
317
318 /* Breakpoints set on probes.  */
319 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
320
321 /* Dynamic printf class type.  */
322 struct breakpoint_ops dprintf_breakpoint_ops;
323
324 /* The style in which to perform a dynamic printf.  This is a user
325    option because different output options have different tradeoffs;
326    if GDB does the printing, there is better error handling if there
327    is a problem with any of the arguments, but using an inferior
328    function lets you have special-purpose printers and sending of
329    output to the same place as compiled-in print functions.  */
330
331 static const char dprintf_style_gdb[] = "gdb";
332 static const char dprintf_style_call[] = "call";
333 static const char dprintf_style_agent[] = "agent";
334 static const char *const dprintf_style_enums[] = {
335   dprintf_style_gdb,
336   dprintf_style_call,
337   dprintf_style_agent,
338   NULL
339 };
340 static const char *dprintf_style = dprintf_style_gdb;
341
342 /* The function to use for dynamic printf if the preferred style is to
343    call into the inferior.  The value is simply a string that is
344    copied into the command, so it can be anything that GDB can
345    evaluate to a callable address, not necessarily a function name.  */
346
347 static char *dprintf_function;
348
349 /* The channel to use for dynamic printf if the preferred style is to
350    call into the inferior; if a nonempty string, it will be passed to
351    the call as the first argument, with the format string as the
352    second.  As with the dprintf function, this can be anything that
353    GDB knows how to evaluate, so in addition to common choices like
354    "stderr", this could be an app-specific expression like
355    "mystreams[curlogger]".  */
356
357 static char *dprintf_channel;
358
359 /* True if dprintf commands should continue to operate even if GDB
360    has disconnected.  */
361 static int disconnected_dprintf = 1;
362
363 /* A reference-counted struct command_line.  This lets multiple
364    breakpoints share a single command list.  */
365 struct counted_command_line
366 {
367   /* The reference count.  */
368   int refc;
369
370   /* The command list.  */
371   struct command_line *commands;
372 };
373
374 struct command_line *
375 breakpoint_commands (struct breakpoint *b)
376 {
377   return b->commands ? b->commands->commands : NULL;
378 }
379
380 /* Flag indicating that a command has proceeded the inferior past the
381    current breakpoint.  */
382
383 static int breakpoint_proceeded;
384
385 const char *
386 bpdisp_text (enum bpdisp disp)
387 {
388   /* NOTE: the following values are a part of MI protocol and
389      represent values of 'disp' field returned when inferior stops at
390      a breakpoint.  */
391   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
392
393   return bpdisps[(int) disp];
394 }
395
396 /* Prototypes for exported functions.  */
397 /* If FALSE, gdb will not use hardware support for watchpoints, even
398    if such is available.  */
399 static int can_use_hw_watchpoints;
400
401 static void
402 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
403                              struct cmd_list_element *c,
404                              const char *value)
405 {
406   fprintf_filtered (file,
407                     _("Debugger's willingness to use "
408                       "watchpoint hardware is %s.\n"),
409                     value);
410 }
411
412 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
413    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
414    for unrecognized breakpoint locations.
415    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
416 static enum auto_boolean pending_break_support;
417 static void
418 show_pending_break_support (struct ui_file *file, int from_tty,
419                             struct cmd_list_element *c,
420                             const char *value)
421 {
422   fprintf_filtered (file,
423                     _("Debugger's behavior regarding "
424                       "pending breakpoints is %s.\n"),
425                     value);
426 }
427
428 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
429    set with "break" but falling in read-only memory.
430    If 0, gdb will warn about such breakpoints, but won't automatically
431    use hardware breakpoints.  */
432 static int automatic_hardware_breakpoints;
433 static void
434 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
435                                      struct cmd_list_element *c,
436                                      const char *value)
437 {
438   fprintf_filtered (file,
439                     _("Automatic usage of hardware breakpoints is %s.\n"),
440                     value);
441 }
442
443 /* If on, GDB keeps breakpoints inserted even if the inferior is
444    stopped, and immediately inserts any new breakpoints as soon as
445    they're created.  If off (default), GDB keeps breakpoints off of
446    the target as long as possible.  That is, it delays inserting
447    breakpoints until the next resume, and removes them again when the
448    target fully stops.  This is a bit safer in case GDB crashes while
449    processing user input.  */
450 static int always_inserted_mode = 0;
451
452 static void
453 show_always_inserted_mode (struct ui_file *file, int from_tty,
454                      struct cmd_list_element *c, const char *value)
455 {
456   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
457                     value);
458 }
459
460 /* See breakpoint.h.  */
461
462 int
463 breakpoints_should_be_inserted_now (void)
464 {
465   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
466     {
467       /* If breakpoints are global, they should be inserted even if no
468          thread under gdb's control is running, or even if there are
469          no threads under GDB's control yet.  */
470       return 1;
471     }
472   else if (target_has_execution)
473     {
474       struct thread_info *tp;
475
476       if (always_inserted_mode)
477         {
478           /* The user wants breakpoints inserted even if all threads
479              are stopped.  */
480           return 1;
481         }
482
483       if (threads_are_executing ())
484         return 1;
485
486       /* Don't remove breakpoints yet if, even though all threads are
487          stopped, we still have events to process.  */
488       ALL_NON_EXITED_THREADS (tp)
489         if (tp->resumed
490             && tp->suspend.waitstatus_pending_p)
491           return 1;
492     }
493   return 0;
494 }
495
496 static const char condition_evaluation_both[] = "host or target";
497
498 /* Modes for breakpoint condition evaluation.  */
499 static const char condition_evaluation_auto[] = "auto";
500 static const char condition_evaluation_host[] = "host";
501 static const char condition_evaluation_target[] = "target";
502 static const char *const condition_evaluation_enums[] = {
503   condition_evaluation_auto,
504   condition_evaluation_host,
505   condition_evaluation_target,
506   NULL
507 };
508
509 /* Global that holds the current mode for breakpoint condition evaluation.  */
510 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
511
512 /* Global that we use to display information to the user (gets its value from
513    condition_evaluation_mode_1.  */
514 static const char *condition_evaluation_mode = condition_evaluation_auto;
515
516 /* Translate a condition evaluation mode MODE into either "host"
517    or "target".  This is used mostly to translate from "auto" to the
518    real setting that is being used.  It returns the translated
519    evaluation mode.  */
520
521 static const char *
522 translate_condition_evaluation_mode (const char *mode)
523 {
524   if (mode == condition_evaluation_auto)
525     {
526       if (target_supports_evaluation_of_breakpoint_conditions ())
527         return condition_evaluation_target;
528       else
529         return condition_evaluation_host;
530     }
531   else
532     return mode;
533 }
534
535 /* Discovers what condition_evaluation_auto translates to.  */
536
537 static const char *
538 breakpoint_condition_evaluation_mode (void)
539 {
540   return translate_condition_evaluation_mode (condition_evaluation_mode);
541 }
542
543 /* Return true if GDB should evaluate breakpoint conditions or false
544    otherwise.  */
545
546 static int
547 gdb_evaluates_breakpoint_condition_p (void)
548 {
549   const char *mode = breakpoint_condition_evaluation_mode ();
550
551   return (mode == condition_evaluation_host);
552 }
553
554 void _initialize_breakpoint (void);
555
556 /* Are we executing breakpoint commands?  */
557 static int executing_breakpoint_commands;
558
559 /* Are overlay event breakpoints enabled? */
560 static int overlay_events_enabled;
561
562 /* See description in breakpoint.h. */
563 int target_exact_watchpoints = 0;
564
565 /* Walk the following statement or block through all breakpoints.
566    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
567    current breakpoint.  */
568
569 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
570
571 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
572         for (B = breakpoint_chain;      \
573              B ? (TMP=B->next, 1): 0;   \
574              B = TMP)
575
576 /* Similar iterator for the low-level breakpoints.  SAFE variant is
577    not provided so update_global_location_list must not be called
578    while executing the block of ALL_BP_LOCATIONS.  */
579
580 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
581         for (BP_TMP = bp_locations;                                     \
582              BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
583              BP_TMP++)
584
585 /* Iterates through locations with address ADDRESS for the currently selected
586    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
587    to where the loop should start from.
588    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
589    appropriate location to start with.  */
590
591 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
592         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
593              BP_LOCP_TMP = BP_LOCP_START;                               \
594              BP_LOCP_START                                              \
595              && (BP_LOCP_TMP < bp_locations + bp_locations_count        \
596              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
597              BP_LOCP_TMP++)
598
599 /* Iterator for tracepoints only.  */
600
601 #define ALL_TRACEPOINTS(B)  \
602   for (B = breakpoint_chain; B; B = B->next)  \
603     if (is_tracepoint (B))
604
605 /* Chains of all breakpoints defined.  */
606
607 struct breakpoint *breakpoint_chain;
608
609 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS.  */
610
611 static struct bp_location **bp_locations;
612
613 /* Number of elements of BP_LOCATIONS.  */
614
615 static unsigned bp_locations_count;
616
617 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
618    ADDRESS for the current elements of BP_LOCATIONS which get a valid
619    result from bp_location_has_shadow.  You can use it for roughly
620    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
621    an address you need to read.  */
622
623 static CORE_ADDR bp_locations_placed_address_before_address_max;
624
625 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
626    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
627    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
628    You can use it for roughly limiting the subrange of BP_LOCATIONS to
629    scan for shadow bytes for an address you need to read.  */
630
631 static CORE_ADDR bp_locations_shadow_len_after_address_max;
632
633 /* The locations that no longer correspond to any breakpoint, unlinked
634    from the bp_locations array, but for which a hit may still be
635    reported by a target.  */
636 VEC(bp_location_p) *moribund_locations = NULL;
637
638 /* Number of last breakpoint made.  */
639
640 static int breakpoint_count;
641
642 /* The value of `breakpoint_count' before the last command that
643    created breakpoints.  If the last (break-like) command created more
644    than one breakpoint, then the difference between BREAKPOINT_COUNT
645    and PREV_BREAKPOINT_COUNT is more than one.  */
646 static int prev_breakpoint_count;
647
648 /* Number of last tracepoint made.  */
649
650 static int tracepoint_count;
651
652 static struct cmd_list_element *breakpoint_set_cmdlist;
653 static struct cmd_list_element *breakpoint_show_cmdlist;
654 struct cmd_list_element *save_cmdlist;
655
656 /* See declaration at breakpoint.h.  */
657
658 struct breakpoint *
659 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
660                     void *user_data)
661 {
662   struct breakpoint *b = NULL;
663
664   ALL_BREAKPOINTS (b)
665     {
666       if (func (b, user_data) != 0)
667         break;
668     }
669
670   return b;
671 }
672
673 /* Return whether a breakpoint is an active enabled breakpoint.  */
674 static int
675 breakpoint_enabled (struct breakpoint *b)
676 {
677   return (b->enable_state == bp_enabled);
678 }
679
680 /* Set breakpoint count to NUM.  */
681
682 static void
683 set_breakpoint_count (int num)
684 {
685   prev_breakpoint_count = breakpoint_count;
686   breakpoint_count = num;
687   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
688 }
689
690 /* Used by `start_rbreak_breakpoints' below, to record the current
691    breakpoint count before "rbreak" creates any breakpoint.  */
692 static int rbreak_start_breakpoint_count;
693
694 /* Called at the start an "rbreak" command to record the first
695    breakpoint made.  */
696
697 void
698 start_rbreak_breakpoints (void)
699 {
700   rbreak_start_breakpoint_count = breakpoint_count;
701 }
702
703 /* Called at the end of an "rbreak" command to record the last
704    breakpoint made.  */
705
706 void
707 end_rbreak_breakpoints (void)
708 {
709   prev_breakpoint_count = rbreak_start_breakpoint_count;
710 }
711
712 /* Used in run_command to zero the hit count when a new run starts.  */
713
714 void
715 clear_breakpoint_hit_counts (void)
716 {
717   struct breakpoint *b;
718
719   ALL_BREAKPOINTS (b)
720     b->hit_count = 0;
721 }
722
723 /* Allocate a new counted_command_line with reference count of 1.
724    The new structure owns COMMANDS.  */
725
726 static struct counted_command_line *
727 alloc_counted_command_line (struct command_line *commands)
728 {
729   struct counted_command_line *result = XNEW (struct counted_command_line);
730
731   result->refc = 1;
732   result->commands = commands;
733
734   return result;
735 }
736
737 /* Increment reference count.  This does nothing if CMD is NULL.  */
738
739 static void
740 incref_counted_command_line (struct counted_command_line *cmd)
741 {
742   if (cmd)
743     ++cmd->refc;
744 }
745
746 /* Decrement reference count.  If the reference count reaches 0,
747    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
748    nothing if *CMDP is NULL.  */
749
750 static void
751 decref_counted_command_line (struct counted_command_line **cmdp)
752 {
753   if (*cmdp)
754     {
755       if (--(*cmdp)->refc == 0)
756         {
757           free_command_lines (&(*cmdp)->commands);
758           xfree (*cmdp);
759         }
760       *cmdp = NULL;
761     }
762 }
763
764 /* A cleanup function that calls decref_counted_command_line.  */
765
766 static void
767 do_cleanup_counted_command_line (void *arg)
768 {
769   decref_counted_command_line ((struct counted_command_line **) arg);
770 }
771
772 /* Create a cleanup that calls decref_counted_command_line on the
773    argument.  */
774
775 static struct cleanup *
776 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
777 {
778   return make_cleanup (do_cleanup_counted_command_line, cmdp);
779 }
780
781 \f
782 /* Return the breakpoint with the specified number, or NULL
783    if the number does not refer to an existing breakpoint.  */
784
785 struct breakpoint *
786 get_breakpoint (int num)
787 {
788   struct breakpoint *b;
789
790   ALL_BREAKPOINTS (b)
791     if (b->number == num)
792       return b;
793   
794   return NULL;
795 }
796
797 \f
798
799 /* Mark locations as "conditions have changed" in case the target supports
800    evaluating conditions on its side.  */
801
802 static void
803 mark_breakpoint_modified (struct breakpoint *b)
804 {
805   struct bp_location *loc;
806
807   /* This is only meaningful if the target is
808      evaluating conditions and if the user has
809      opted for condition evaluation on the target's
810      side.  */
811   if (gdb_evaluates_breakpoint_condition_p ()
812       || !target_supports_evaluation_of_breakpoint_conditions ())
813     return;
814
815   if (!is_breakpoint (b))
816     return;
817
818   for (loc = b->loc; loc; loc = loc->next)
819     loc->condition_changed = condition_modified;
820 }
821
822 /* Mark location as "conditions have changed" in case the target supports
823    evaluating conditions on its side.  */
824
825 static void
826 mark_breakpoint_location_modified (struct bp_location *loc)
827 {
828   /* This is only meaningful if the target is
829      evaluating conditions and if the user has
830      opted for condition evaluation on the target's
831      side.  */
832   if (gdb_evaluates_breakpoint_condition_p ()
833       || !target_supports_evaluation_of_breakpoint_conditions ())
834
835     return;
836
837   if (!is_breakpoint (loc->owner))
838     return;
839
840   loc->condition_changed = condition_modified;
841 }
842
843 /* Sets the condition-evaluation mode using the static global
844    condition_evaluation_mode.  */
845
846 static void
847 set_condition_evaluation_mode (char *args, int from_tty,
848                                struct cmd_list_element *c)
849 {
850   const char *old_mode, *new_mode;
851
852   if ((condition_evaluation_mode_1 == condition_evaluation_target)
853       && !target_supports_evaluation_of_breakpoint_conditions ())
854     {
855       condition_evaluation_mode_1 = condition_evaluation_mode;
856       warning (_("Target does not support breakpoint condition evaluation.\n"
857                  "Using host evaluation mode instead."));
858       return;
859     }
860
861   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
862   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
863
864   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
865      settings was "auto".  */
866   condition_evaluation_mode = condition_evaluation_mode_1;
867
868   /* Only update the mode if the user picked a different one.  */
869   if (new_mode != old_mode)
870     {
871       struct bp_location *loc, **loc_tmp;
872       /* If the user switched to a different evaluation mode, we
873          need to synch the changes with the target as follows:
874
875          "host" -> "target": Send all (valid) conditions to the target.
876          "target" -> "host": Remove all the conditions from the target.
877       */
878
879       if (new_mode == condition_evaluation_target)
880         {
881           /* Mark everything modified and synch conditions with the
882              target.  */
883           ALL_BP_LOCATIONS (loc, loc_tmp)
884             mark_breakpoint_location_modified (loc);
885         }
886       else
887         {
888           /* Manually mark non-duplicate locations to synch conditions
889              with the target.  We do this to remove all the conditions the
890              target knows about.  */
891           ALL_BP_LOCATIONS (loc, loc_tmp)
892             if (is_breakpoint (loc->owner) && loc->inserted)
893               loc->needs_update = 1;
894         }
895
896       /* Do the update.  */
897       update_global_location_list (UGLL_MAY_INSERT);
898     }
899
900   return;
901 }
902
903 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
904    what "auto" is translating to.  */
905
906 static void
907 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
908                                 struct cmd_list_element *c, const char *value)
909 {
910   if (condition_evaluation_mode == condition_evaluation_auto)
911     fprintf_filtered (file,
912                       _("Breakpoint condition evaluation "
913                         "mode is %s (currently %s).\n"),
914                       value,
915                       breakpoint_condition_evaluation_mode ());
916   else
917     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
918                       value);
919 }
920
921 /* A comparison function for bp_location AP and BP that is used by
922    bsearch.  This comparison function only cares about addresses, unlike
923    the more general bp_locations_compare function.  */
924
925 static int
926 bp_locations_compare_addrs (const void *ap, const void *bp)
927 {
928   const struct bp_location *a = *(const struct bp_location **) ap;
929   const struct bp_location *b = *(const struct bp_location **) bp;
930
931   if (a->address == b->address)
932     return 0;
933   else
934     return ((a->address > b->address) - (a->address < b->address));
935 }
936
937 /* Helper function to skip all bp_locations with addresses
938    less than ADDRESS.  It returns the first bp_location that
939    is greater than or equal to ADDRESS.  If none is found, just
940    return NULL.  */
941
942 static struct bp_location **
943 get_first_locp_gte_addr (CORE_ADDR address)
944 {
945   struct bp_location dummy_loc;
946   struct bp_location *dummy_locp = &dummy_loc;
947   struct bp_location **locp_found = NULL;
948
949   /* Initialize the dummy location's address field.  */
950   dummy_loc.address = address;
951
952   /* Find a close match to the first location at ADDRESS.  */
953   locp_found = ((struct bp_location **)
954                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
955                          sizeof (struct bp_location **),
956                          bp_locations_compare_addrs));
957
958   /* Nothing was found, nothing left to do.  */
959   if (locp_found == NULL)
960     return NULL;
961
962   /* We may have found a location that is at ADDRESS but is not the first in the
963      location's list.  Go backwards (if possible) and locate the first one.  */
964   while ((locp_found - 1) >= bp_locations
965          && (*(locp_found - 1))->address == address)
966     locp_found--;
967
968   return locp_found;
969 }
970
971 void
972 set_breakpoint_condition (struct breakpoint *b, const char *exp,
973                           int from_tty)
974 {
975   xfree (b->cond_string);
976   b->cond_string = NULL;
977
978   if (is_watchpoint (b))
979     {
980       struct watchpoint *w = (struct watchpoint *) b;
981
982       w->cond_exp.reset ();
983     }
984   else
985     {
986       struct bp_location *loc;
987
988       for (loc = b->loc; loc; loc = loc->next)
989         {
990           loc->cond.reset ();
991
992           /* No need to free the condition agent expression
993              bytecode (if we have one).  We will handle this
994              when we go through update_global_location_list.  */
995         }
996     }
997
998   if (*exp == 0)
999     {
1000       if (from_tty)
1001         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1002     }
1003   else
1004     {
1005       const char *arg = exp;
1006
1007       /* I don't know if it matters whether this is the string the user
1008          typed in or the decompiled expression.  */
1009       b->cond_string = xstrdup (arg);
1010       b->condition_not_parsed = 0;
1011
1012       if (is_watchpoint (b))
1013         {
1014           struct watchpoint *w = (struct watchpoint *) b;
1015
1016           innermost_block = NULL;
1017           arg = exp;
1018           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1019           if (*arg)
1020             error (_("Junk at end of expression"));
1021           w->cond_exp_valid_block = innermost_block;
1022         }
1023       else
1024         {
1025           struct bp_location *loc;
1026
1027           for (loc = b->loc; loc; loc = loc->next)
1028             {
1029               arg = exp;
1030               loc->cond =
1031                 parse_exp_1 (&arg, loc->address,
1032                              block_for_pc (loc->address), 0);
1033               if (*arg)
1034                 error (_("Junk at end of expression"));
1035             }
1036         }
1037     }
1038   mark_breakpoint_modified (b);
1039
1040   observer_notify_breakpoint_modified (b);
1041 }
1042
1043 /* Completion for the "condition" command.  */
1044
1045 static void
1046 condition_completer (struct cmd_list_element *cmd,
1047                      completion_tracker &tracker,
1048                      const char *text, const char *word)
1049 {
1050   const char *space;
1051
1052   text = skip_spaces_const (text);
1053   space = skip_to_space_const (text);
1054   if (*space == '\0')
1055     {
1056       int len;
1057       struct breakpoint *b;
1058       VEC (char_ptr) *result = NULL;
1059
1060       if (text[0] == '$')
1061         {
1062           /* We don't support completion of history indices.  */
1063           if (!isdigit (text[1]))
1064             complete_internalvar (tracker, &text[1]);
1065           return;
1066         }
1067
1068       /* We're completing the breakpoint number.  */
1069       len = strlen (text);
1070
1071       ALL_BREAKPOINTS (b)
1072         {
1073           char number[50];
1074
1075           xsnprintf (number, sizeof (number), "%d", b->number);
1076
1077           if (strncmp (number, text, len) == 0)
1078             {
1079               gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
1080               tracker.add_completion (std::move (copy));
1081             }
1082         }
1083
1084       return;
1085     }
1086
1087   /* We're completing the expression part.  */
1088   text = skip_spaces_const (space);
1089   expression_completer (cmd, tracker, text, word);
1090 }
1091
1092 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1093
1094 static void
1095 condition_command (char *arg, int from_tty)
1096 {
1097   struct breakpoint *b;
1098   char *p;
1099   int bnum;
1100
1101   if (arg == 0)
1102     error_no_arg (_("breakpoint number"));
1103
1104   p = arg;
1105   bnum = get_number (&p);
1106   if (bnum == 0)
1107     error (_("Bad breakpoint argument: '%s'"), arg);
1108
1109   ALL_BREAKPOINTS (b)
1110     if (b->number == bnum)
1111       {
1112         /* Check if this breakpoint has a "stop" method implemented in an
1113            extension language.  This method and conditions entered into GDB
1114            from the CLI are mutually exclusive.  */
1115         const struct extension_language_defn *extlang
1116           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1117
1118         if (extlang != NULL)
1119           {
1120             error (_("Only one stop condition allowed.  There is currently"
1121                      " a %s stop condition defined for this breakpoint."),
1122                    ext_lang_capitalized_name (extlang));
1123           }
1124         set_breakpoint_condition (b, p, from_tty);
1125
1126         if (is_breakpoint (b))
1127           update_global_location_list (UGLL_MAY_INSERT);
1128
1129         return;
1130       }
1131
1132   error (_("No breakpoint number %d."), bnum);
1133 }
1134
1135 /* Check that COMMAND do not contain commands that are suitable
1136    only for tracepoints and not suitable for ordinary breakpoints.
1137    Throw if any such commands is found.  */
1138
1139 static void
1140 check_no_tracepoint_commands (struct command_line *commands)
1141 {
1142   struct command_line *c;
1143
1144   for (c = commands; c; c = c->next)
1145     {
1146       int i;
1147
1148       if (c->control_type == while_stepping_control)
1149         error (_("The 'while-stepping' command can "
1150                  "only be used for tracepoints"));
1151
1152       for (i = 0; i < c->body_count; ++i)
1153         check_no_tracepoint_commands ((c->body_list)[i]);
1154
1155       /* Not that command parsing removes leading whitespace and comment
1156          lines and also empty lines.  So, we only need to check for
1157          command directly.  */
1158       if (strstr (c->line, "collect ") == c->line)
1159         error (_("The 'collect' command can only be used for tracepoints"));
1160
1161       if (strstr (c->line, "teval ") == c->line)
1162         error (_("The 'teval' command can only be used for tracepoints"));
1163     }
1164 }
1165
1166 struct longjmp_breakpoint : public breakpoint
1167 {
1168   ~longjmp_breakpoint () override;
1169 };
1170
1171 /* Encapsulate tests for different types of tracepoints.  */
1172
1173 static bool
1174 is_tracepoint_type (bptype type)
1175 {
1176   return (type == bp_tracepoint
1177           || type == bp_fast_tracepoint
1178           || type == bp_static_tracepoint);
1179 }
1180
1181 static bool
1182 is_longjmp_type (bptype type)
1183 {
1184   return type == bp_longjmp || type == bp_exception;
1185 }
1186
1187 int
1188 is_tracepoint (const struct breakpoint *b)
1189 {
1190   return is_tracepoint_type (b->type);
1191 }
1192
1193 /* Factory function to create an appropriate instance of breakpoint given
1194    TYPE.  */
1195
1196 static std::unique_ptr<breakpoint>
1197 new_breakpoint_from_type (bptype type)
1198 {
1199   breakpoint *b;
1200
1201   if (is_tracepoint_type (type))
1202     b = new tracepoint ();
1203   else if (is_longjmp_type (type))
1204     b = new longjmp_breakpoint ();
1205   else
1206     b = new breakpoint ();
1207
1208   return std::unique_ptr<breakpoint> (b);
1209 }
1210
1211 /* A helper function that validates that COMMANDS are valid for a
1212    breakpoint.  This function will throw an exception if a problem is
1213    found.  */
1214
1215 static void
1216 validate_commands_for_breakpoint (struct breakpoint *b,
1217                                   struct command_line *commands)
1218 {
1219   if (is_tracepoint (b))
1220     {
1221       struct tracepoint *t = (struct tracepoint *) b;
1222       struct command_line *c;
1223       struct command_line *while_stepping = 0;
1224
1225       /* Reset the while-stepping step count.  The previous commands
1226          might have included a while-stepping action, while the new
1227          ones might not.  */
1228       t->step_count = 0;
1229
1230       /* We need to verify that each top-level element of commands is
1231          valid for tracepoints, that there's at most one
1232          while-stepping element, and that the while-stepping's body
1233          has valid tracing commands excluding nested while-stepping.
1234          We also need to validate the tracepoint action line in the
1235          context of the tracepoint --- validate_actionline actually
1236          has side effects, like setting the tracepoint's
1237          while-stepping STEP_COUNT, in addition to checking if the
1238          collect/teval actions parse and make sense in the
1239          tracepoint's context.  */
1240       for (c = commands; c; c = c->next)
1241         {
1242           if (c->control_type == while_stepping_control)
1243             {
1244               if (b->type == bp_fast_tracepoint)
1245                 error (_("The 'while-stepping' command "
1246                          "cannot be used for fast tracepoint"));
1247               else if (b->type == bp_static_tracepoint)
1248                 error (_("The 'while-stepping' command "
1249                          "cannot be used for static tracepoint"));
1250
1251               if (while_stepping)
1252                 error (_("The 'while-stepping' command "
1253                          "can be used only once"));
1254               else
1255                 while_stepping = c;
1256             }
1257
1258           validate_actionline (c->line, b);
1259         }
1260       if (while_stepping)
1261         {
1262           struct command_line *c2;
1263
1264           gdb_assert (while_stepping->body_count == 1);
1265           c2 = while_stepping->body_list[0];
1266           for (; c2; c2 = c2->next)
1267             {
1268               if (c2->control_type == while_stepping_control)
1269                 error (_("The 'while-stepping' command cannot be nested"));
1270             }
1271         }
1272     }
1273   else
1274     {
1275       check_no_tracepoint_commands (commands);
1276     }
1277 }
1278
1279 /* Return a vector of all the static tracepoints set at ADDR.  The
1280    caller is responsible for releasing the vector.  */
1281
1282 VEC(breakpoint_p) *
1283 static_tracepoints_here (CORE_ADDR addr)
1284 {
1285   struct breakpoint *b;
1286   VEC(breakpoint_p) *found = 0;
1287   struct bp_location *loc;
1288
1289   ALL_BREAKPOINTS (b)
1290     if (b->type == bp_static_tracepoint)
1291       {
1292         for (loc = b->loc; loc; loc = loc->next)
1293           if (loc->address == addr)
1294             VEC_safe_push(breakpoint_p, found, b);
1295       }
1296
1297   return found;
1298 }
1299
1300 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1301    validate that only allowed commands are included.  */
1302
1303 void
1304 breakpoint_set_commands (struct breakpoint *b, 
1305                          command_line_up &&commands)
1306 {
1307   validate_commands_for_breakpoint (b, commands.get ());
1308
1309   decref_counted_command_line (&b->commands);
1310   b->commands = alloc_counted_command_line (commands.release ());
1311   observer_notify_breakpoint_modified (b);
1312 }
1313
1314 /* Set the internal `silent' flag on the breakpoint.  Note that this
1315    is not the same as the "silent" that may appear in the breakpoint's
1316    commands.  */
1317
1318 void
1319 breakpoint_set_silent (struct breakpoint *b, int silent)
1320 {
1321   int old_silent = b->silent;
1322
1323   b->silent = silent;
1324   if (old_silent != silent)
1325     observer_notify_breakpoint_modified (b);
1326 }
1327
1328 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1329    breakpoint work for any thread.  */
1330
1331 void
1332 breakpoint_set_thread (struct breakpoint *b, int thread)
1333 {
1334   int old_thread = b->thread;
1335
1336   b->thread = thread;
1337   if (old_thread != thread)
1338     observer_notify_breakpoint_modified (b);
1339 }
1340
1341 /* Set the task for this breakpoint.  If TASK is 0, make the
1342    breakpoint work for any task.  */
1343
1344 void
1345 breakpoint_set_task (struct breakpoint *b, int task)
1346 {
1347   int old_task = b->task;
1348
1349   b->task = task;
1350   if (old_task != task)
1351     observer_notify_breakpoint_modified (b);
1352 }
1353
1354 void
1355 check_tracepoint_command (char *line, void *closure)
1356 {
1357   struct breakpoint *b = (struct breakpoint *) closure;
1358
1359   validate_actionline (line, b);
1360 }
1361
1362 /* A structure used to pass information through
1363    map_breakpoint_numbers.  */
1364
1365 struct commands_info
1366 {
1367   /* True if the command was typed at a tty.  */
1368   int from_tty;
1369
1370   /* The breakpoint range spec.  */
1371   const char *arg;
1372
1373   /* Non-NULL if the body of the commands are being read from this
1374      already-parsed command.  */
1375   struct command_line *control;
1376
1377   /* The command lines read from the user, or NULL if they have not
1378      yet been read.  */
1379   struct counted_command_line *cmd;
1380 };
1381
1382 /* A callback for map_breakpoint_numbers that sets the commands for
1383    commands_command.  */
1384
1385 static void
1386 do_map_commands_command (struct breakpoint *b, void *data)
1387 {
1388   struct commands_info *info = (struct commands_info *) data;
1389
1390   if (info->cmd == NULL)
1391     {
1392       command_line_up l;
1393
1394       if (info->control != NULL)
1395         l = copy_command_lines (info->control->body_list[0]);
1396       else
1397         {
1398           struct cleanup *old_chain;
1399           char *str;
1400
1401           str = xstrprintf (_("Type commands for breakpoint(s) "
1402                               "%s, one per line."),
1403                             info->arg);
1404
1405           old_chain = make_cleanup (xfree, str);
1406
1407           l = read_command_lines (str,
1408                                   info->from_tty, 1,
1409                                   (is_tracepoint (b)
1410                                    ? check_tracepoint_command : 0),
1411                                   b);
1412
1413           do_cleanups (old_chain);
1414         }
1415
1416       info->cmd = alloc_counted_command_line (l.release ());
1417     }
1418
1419   /* If a breakpoint was on the list more than once, we don't need to
1420      do anything.  */
1421   if (b->commands != info->cmd)
1422     {
1423       validate_commands_for_breakpoint (b, info->cmd->commands);
1424       incref_counted_command_line (info->cmd);
1425       decref_counted_command_line (&b->commands);
1426       b->commands = info->cmd;
1427       observer_notify_breakpoint_modified (b);
1428     }
1429 }
1430
1431 static void
1432 commands_command_1 (const char *arg, int from_tty,
1433                     struct command_line *control)
1434 {
1435   struct cleanup *cleanups;
1436   struct commands_info info;
1437
1438   info.from_tty = from_tty;
1439   info.control = control;
1440   info.cmd = NULL;
1441   /* If we read command lines from the user, then `info' will hold an
1442      extra reference to the commands that we must clean up.  */
1443   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1444
1445   std::string new_arg;
1446
1447   if (arg == NULL || !*arg)
1448     {
1449       if (breakpoint_count - prev_breakpoint_count > 1)
1450         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1451                                  breakpoint_count);
1452       else if (breakpoint_count > 0)
1453         new_arg = string_printf ("%d", breakpoint_count);
1454     }
1455   else
1456     new_arg = arg;
1457
1458   info.arg = new_arg.c_str ();
1459
1460   map_breakpoint_numbers (info.arg, do_map_commands_command, &info);
1461
1462   if (info.cmd == NULL)
1463     error (_("No breakpoints specified."));
1464
1465   do_cleanups (cleanups);
1466 }
1467
1468 static void
1469 commands_command (char *arg, int from_tty)
1470 {
1471   commands_command_1 (arg, from_tty, NULL);
1472 }
1473
1474 /* Like commands_command, but instead of reading the commands from
1475    input stream, takes them from an already parsed command structure.
1476
1477    This is used by cli-script.c to DTRT with breakpoint commands
1478    that are part of if and while bodies.  */
1479 enum command_control_type
1480 commands_from_control_command (const char *arg, struct command_line *cmd)
1481 {
1482   commands_command_1 (arg, 0, cmd);
1483   return simple_control;
1484 }
1485
1486 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1487
1488 static int
1489 bp_location_has_shadow (struct bp_location *bl)
1490 {
1491   if (bl->loc_type != bp_loc_software_breakpoint)
1492     return 0;
1493   if (!bl->inserted)
1494     return 0;
1495   if (bl->target_info.shadow_len == 0)
1496     /* BL isn't valid, or doesn't shadow memory.  */
1497     return 0;
1498   return 1;
1499 }
1500
1501 /* Update BUF, which is LEN bytes read from the target address
1502    MEMADDR, by replacing a memory breakpoint with its shadowed
1503    contents.
1504
1505    If READBUF is not NULL, this buffer must not overlap with the of
1506    the breakpoint location's shadow_contents buffer.  Otherwise, a
1507    failed assertion internal error will be raised.  */
1508
1509 static void
1510 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1511                             const gdb_byte *writebuf_org,
1512                             ULONGEST memaddr, LONGEST len,
1513                             struct bp_target_info *target_info,
1514                             struct gdbarch *gdbarch)
1515 {
1516   /* Now do full processing of the found relevant range of elements.  */
1517   CORE_ADDR bp_addr = 0;
1518   int bp_size = 0;
1519   int bptoffset = 0;
1520
1521   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1522                                  current_program_space->aspace, 0))
1523     {
1524       /* The breakpoint is inserted in a different address space.  */
1525       return;
1526     }
1527
1528   /* Addresses and length of the part of the breakpoint that
1529      we need to copy.  */
1530   bp_addr = target_info->placed_address;
1531   bp_size = target_info->shadow_len;
1532
1533   if (bp_addr + bp_size <= memaddr)
1534     {
1535       /* The breakpoint is entirely before the chunk of memory we are
1536          reading.  */
1537       return;
1538     }
1539
1540   if (bp_addr >= memaddr + len)
1541     {
1542       /* The breakpoint is entirely after the chunk of memory we are
1543          reading.  */
1544       return;
1545     }
1546
1547   /* Offset within shadow_contents.  */
1548   if (bp_addr < memaddr)
1549     {
1550       /* Only copy the second part of the breakpoint.  */
1551       bp_size -= memaddr - bp_addr;
1552       bptoffset = memaddr - bp_addr;
1553       bp_addr = memaddr;
1554     }
1555
1556   if (bp_addr + bp_size > memaddr + len)
1557     {
1558       /* Only copy the first part of the breakpoint.  */
1559       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1560     }
1561
1562   if (readbuf != NULL)
1563     {
1564       /* Verify that the readbuf buffer does not overlap with the
1565          shadow_contents buffer.  */
1566       gdb_assert (target_info->shadow_contents >= readbuf + len
1567                   || readbuf >= (target_info->shadow_contents
1568                                  + target_info->shadow_len));
1569
1570       /* Update the read buffer with this inserted breakpoint's
1571          shadow.  */
1572       memcpy (readbuf + bp_addr - memaddr,
1573               target_info->shadow_contents + bptoffset, bp_size);
1574     }
1575   else
1576     {
1577       const unsigned char *bp;
1578       CORE_ADDR addr = target_info->reqstd_address;
1579       int placed_size;
1580
1581       /* Update the shadow with what we want to write to memory.  */
1582       memcpy (target_info->shadow_contents + bptoffset,
1583               writebuf_org + bp_addr - memaddr, bp_size);
1584
1585       /* Determine appropriate breakpoint contents and size for this
1586          address.  */
1587       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1588
1589       /* Update the final write buffer with this inserted
1590          breakpoint's INSN.  */
1591       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1592     }
1593 }
1594
1595 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1596    by replacing any memory breakpoints with their shadowed contents.
1597
1598    If READBUF is not NULL, this buffer must not overlap with any of
1599    the breakpoint location's shadow_contents buffers.  Otherwise,
1600    a failed assertion internal error will be raised.
1601
1602    The range of shadowed area by each bp_location is:
1603      bl->address - bp_locations_placed_address_before_address_max
1604      up to bl->address + bp_locations_shadow_len_after_address_max
1605    The range we were requested to resolve shadows for is:
1606      memaddr ... memaddr + len
1607    Thus the safe cutoff boundaries for performance optimization are
1608      memaddr + len <= (bl->address
1609                        - bp_locations_placed_address_before_address_max)
1610    and:
1611      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1612
1613 void
1614 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1615                         const gdb_byte *writebuf_org,
1616                         ULONGEST memaddr, LONGEST len)
1617 {
1618   /* Left boundary, right boundary and median element of our binary
1619      search.  */
1620   unsigned bc_l, bc_r, bc;
1621
1622   /* Find BC_L which is a leftmost element which may affect BUF
1623      content.  It is safe to report lower value but a failure to
1624      report higher one.  */
1625
1626   bc_l = 0;
1627   bc_r = bp_locations_count;
1628   while (bc_l + 1 < bc_r)
1629     {
1630       struct bp_location *bl;
1631
1632       bc = (bc_l + bc_r) / 2;
1633       bl = bp_locations[bc];
1634
1635       /* Check first BL->ADDRESS will not overflow due to the added
1636          constant.  Then advance the left boundary only if we are sure
1637          the BC element can in no way affect the BUF content (MEMADDR
1638          to MEMADDR + LEN range).
1639
1640          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1641          offset so that we cannot miss a breakpoint with its shadow
1642          range tail still reaching MEMADDR.  */
1643
1644       if ((bl->address + bp_locations_shadow_len_after_address_max
1645            >= bl->address)
1646           && (bl->address + bp_locations_shadow_len_after_address_max
1647               <= memaddr))
1648         bc_l = bc;
1649       else
1650         bc_r = bc;
1651     }
1652
1653   /* Due to the binary search above, we need to make sure we pick the
1654      first location that's at BC_L's address.  E.g., if there are
1655      multiple locations at the same address, BC_L may end up pointing
1656      at a duplicate location, and miss the "master"/"inserted"
1657      location.  Say, given locations L1, L2 and L3 at addresses A and
1658      B:
1659
1660       L1@A, L2@A, L3@B, ...
1661
1662      BC_L could end up pointing at location L2, while the "master"
1663      location could be L1.  Since the `loc->inserted' flag is only set
1664      on "master" locations, we'd forget to restore the shadow of L1
1665      and L2.  */
1666   while (bc_l > 0
1667          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1668     bc_l--;
1669
1670   /* Now do full processing of the found relevant range of elements.  */
1671
1672   for (bc = bc_l; bc < bp_locations_count; bc++)
1673   {
1674     struct bp_location *bl = bp_locations[bc];
1675
1676     /* bp_location array has BL->OWNER always non-NULL.  */
1677     if (bl->owner->type == bp_none)
1678       warning (_("reading through apparently deleted breakpoint #%d?"),
1679                bl->owner->number);
1680
1681     /* Performance optimization: any further element can no longer affect BUF
1682        content.  */
1683
1684     if (bl->address >= bp_locations_placed_address_before_address_max
1685         && memaddr + len <= (bl->address
1686                              - bp_locations_placed_address_before_address_max))
1687       break;
1688
1689     if (!bp_location_has_shadow (bl))
1690       continue;
1691
1692     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1693                                 memaddr, len, &bl->target_info, bl->gdbarch);
1694   }
1695 }
1696
1697 \f
1698
1699 /* Return true if BPT is either a software breakpoint or a hardware
1700    breakpoint.  */
1701
1702 int
1703 is_breakpoint (const struct breakpoint *bpt)
1704 {
1705   return (bpt->type == bp_breakpoint
1706           || bpt->type == bp_hardware_breakpoint
1707           || bpt->type == bp_dprintf);
1708 }
1709
1710 /* Return true if BPT is of any hardware watchpoint kind.  */
1711
1712 static int
1713 is_hardware_watchpoint (const struct breakpoint *bpt)
1714 {
1715   return (bpt->type == bp_hardware_watchpoint
1716           || bpt->type == bp_read_watchpoint
1717           || bpt->type == bp_access_watchpoint);
1718 }
1719
1720 /* Return true if BPT is of any watchpoint kind, hardware or
1721    software.  */
1722
1723 int
1724 is_watchpoint (const struct breakpoint *bpt)
1725 {
1726   return (is_hardware_watchpoint (bpt)
1727           || bpt->type == bp_watchpoint);
1728 }
1729
1730 /* Returns true if the current thread and its running state are safe
1731    to evaluate or update watchpoint B.  Watchpoints on local
1732    expressions need to be evaluated in the context of the thread that
1733    was current when the watchpoint was created, and, that thread needs
1734    to be stopped to be able to select the correct frame context.
1735    Watchpoints on global expressions can be evaluated on any thread,
1736    and in any state.  It is presently left to the target allowing
1737    memory accesses when threads are running.  */
1738
1739 static int
1740 watchpoint_in_thread_scope (struct watchpoint *b)
1741 {
1742   return (b->pspace == current_program_space
1743           && (ptid_equal (b->watchpoint_thread, null_ptid)
1744               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1745                   && !is_executing (inferior_ptid))));
1746 }
1747
1748 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1749    associated bp_watchpoint_scope breakpoint.  */
1750
1751 static void
1752 watchpoint_del_at_next_stop (struct watchpoint *w)
1753 {
1754   if (w->related_breakpoint != w)
1755     {
1756       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1757       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1758       w->related_breakpoint->disposition = disp_del_at_next_stop;
1759       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1760       w->related_breakpoint = w;
1761     }
1762   w->disposition = disp_del_at_next_stop;
1763 }
1764
1765 /* Extract a bitfield value from value VAL using the bit parameters contained in
1766    watchpoint W.  */
1767
1768 static struct value *
1769 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1770 {
1771   struct value *bit_val;
1772
1773   if (val == NULL)
1774     return NULL;
1775
1776   bit_val = allocate_value (value_type (val));
1777
1778   unpack_value_bitfield (bit_val,
1779                          w->val_bitpos,
1780                          w->val_bitsize,
1781                          value_contents_for_printing (val),
1782                          value_offset (val),
1783                          val);
1784
1785   return bit_val;
1786 }
1787
1788 /* Allocate a dummy location and add it to B, which must be a software
1789    watchpoint.  This is required because even if a software watchpoint
1790    is not watching any memory, bpstat_stop_status requires a location
1791    to be able to report stops.  */
1792
1793 static void
1794 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1795                                             struct program_space *pspace)
1796 {
1797   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1798
1799   b->loc = allocate_bp_location (b);
1800   b->loc->pspace = pspace;
1801   b->loc->address = -1;
1802   b->loc->length = -1;
1803 }
1804
1805 /* Returns true if B is a software watchpoint that is not watching any
1806    memory (e.g., "watch $pc").  */
1807
1808 static int
1809 is_no_memory_software_watchpoint (struct breakpoint *b)
1810 {
1811   return (b->type == bp_watchpoint
1812           && b->loc != NULL
1813           && b->loc->next == NULL
1814           && b->loc->address == -1
1815           && b->loc->length == -1);
1816 }
1817
1818 /* Assuming that B is a watchpoint:
1819    - Reparse watchpoint expression, if REPARSE is non-zero
1820    - Evaluate expression and store the result in B->val
1821    - Evaluate the condition if there is one, and store the result
1822      in b->loc->cond.
1823    - Update the list of values that must be watched in B->loc.
1824
1825    If the watchpoint disposition is disp_del_at_next_stop, then do
1826    nothing.  If this is local watchpoint that is out of scope, delete
1827    it.
1828
1829    Even with `set breakpoint always-inserted on' the watchpoints are
1830    removed + inserted on each stop here.  Normal breakpoints must
1831    never be removed because they might be missed by a running thread
1832    when debugging in non-stop mode.  On the other hand, hardware
1833    watchpoints (is_hardware_watchpoint; processed here) are specific
1834    to each LWP since they are stored in each LWP's hardware debug
1835    registers.  Therefore, such LWP must be stopped first in order to
1836    be able to modify its hardware watchpoints.
1837
1838    Hardware watchpoints must be reset exactly once after being
1839    presented to the user.  It cannot be done sooner, because it would
1840    reset the data used to present the watchpoint hit to the user.  And
1841    it must not be done later because it could display the same single
1842    watchpoint hit during multiple GDB stops.  Note that the latter is
1843    relevant only to the hardware watchpoint types bp_read_watchpoint
1844    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1845    not user-visible - its hit is suppressed if the memory content has
1846    not changed.
1847
1848    The following constraints influence the location where we can reset
1849    hardware watchpoints:
1850
1851    * target_stopped_by_watchpoint and target_stopped_data_address are
1852      called several times when GDB stops.
1853
1854    [linux] 
1855    * Multiple hardware watchpoints can be hit at the same time,
1856      causing GDB to stop.  GDB only presents one hardware watchpoint
1857      hit at a time as the reason for stopping, and all the other hits
1858      are presented later, one after the other, each time the user
1859      requests the execution to be resumed.  Execution is not resumed
1860      for the threads still having pending hit event stored in
1861      LWP_INFO->STATUS.  While the watchpoint is already removed from
1862      the inferior on the first stop the thread hit event is kept being
1863      reported from its cached value by linux_nat_stopped_data_address
1864      until the real thread resume happens after the watchpoint gets
1865      presented and thus its LWP_INFO->STATUS gets reset.
1866
1867    Therefore the hardware watchpoint hit can get safely reset on the
1868    watchpoint removal from inferior.  */
1869
1870 static void
1871 update_watchpoint (struct watchpoint *b, int reparse)
1872 {
1873   int within_current_scope;
1874   struct frame_id saved_frame_id;
1875   int frame_saved;
1876
1877   /* If this is a local watchpoint, we only want to check if the
1878      watchpoint frame is in scope if the current thread is the thread
1879      that was used to create the watchpoint.  */
1880   if (!watchpoint_in_thread_scope (b))
1881     return;
1882
1883   if (b->disposition == disp_del_at_next_stop)
1884     return;
1885  
1886   frame_saved = 0;
1887
1888   /* Determine if the watchpoint is within scope.  */
1889   if (b->exp_valid_block == NULL)
1890     within_current_scope = 1;
1891   else
1892     {
1893       struct frame_info *fi = get_current_frame ();
1894       struct gdbarch *frame_arch = get_frame_arch (fi);
1895       CORE_ADDR frame_pc = get_frame_pc (fi);
1896
1897       /* If we're at a point where the stack has been destroyed
1898          (e.g. in a function epilogue), unwinding may not work
1899          properly. Do not attempt to recreate locations at this
1900          point.  See similar comments in watchpoint_check.  */
1901       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1902         return;
1903
1904       /* Save the current frame's ID so we can restore it after
1905          evaluating the watchpoint expression on its own frame.  */
1906       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1907          took a frame parameter, so that we didn't have to change the
1908          selected frame.  */
1909       frame_saved = 1;
1910       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1911
1912       fi = frame_find_by_id (b->watchpoint_frame);
1913       within_current_scope = (fi != NULL);
1914       if (within_current_scope)
1915         select_frame (fi);
1916     }
1917
1918   /* We don't free locations.  They are stored in the bp_location array
1919      and update_global_location_list will eventually delete them and
1920      remove breakpoints if needed.  */
1921   b->loc = NULL;
1922
1923   if (within_current_scope && reparse)
1924     {
1925       const char *s;
1926
1927       b->exp.reset ();
1928       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1929       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1930       /* If the meaning of expression itself changed, the old value is
1931          no longer relevant.  We don't want to report a watchpoint hit
1932          to the user when the old value and the new value may actually
1933          be completely different objects.  */
1934       value_free (b->val);
1935       b->val = NULL;
1936       b->val_valid = 0;
1937
1938       /* Note that unlike with breakpoints, the watchpoint's condition
1939          expression is stored in the breakpoint object, not in the
1940          locations (re)created below.  */
1941       if (b->cond_string != NULL)
1942         {
1943           b->cond_exp.reset ();
1944
1945           s = b->cond_string;
1946           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1947         }
1948     }
1949
1950   /* If we failed to parse the expression, for example because
1951      it refers to a global variable in a not-yet-loaded shared library,
1952      don't try to insert watchpoint.  We don't automatically delete
1953      such watchpoint, though, since failure to parse expression
1954      is different from out-of-scope watchpoint.  */
1955   if (!target_has_execution)
1956     {
1957       /* Without execution, memory can't change.  No use to try and
1958          set watchpoint locations.  The watchpoint will be reset when
1959          the target gains execution, through breakpoint_re_set.  */
1960       if (!can_use_hw_watchpoints)
1961         {
1962           if (b->ops->works_in_software_mode (b))
1963             b->type = bp_watchpoint;
1964           else
1965             error (_("Can't set read/access watchpoint when "
1966                      "hardware watchpoints are disabled."));
1967         }
1968     }
1969   else if (within_current_scope && b->exp)
1970     {
1971       int pc = 0;
1972       struct value *val_chain, *v, *result, *next;
1973       struct program_space *frame_pspace;
1974
1975       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1976
1977       /* Avoid setting b->val if it's already set.  The meaning of
1978          b->val is 'the last value' user saw, and we should update
1979          it only if we reported that last value to user.  As it
1980          happens, the code that reports it updates b->val directly.
1981          We don't keep track of the memory value for masked
1982          watchpoints.  */
1983       if (!b->val_valid && !is_masked_watchpoint (b))
1984         {
1985           if (b->val_bitsize != 0)
1986             {
1987               v = extract_bitfield_from_watchpoint_value (b, v);
1988               if (v != NULL)
1989                 release_value (v);
1990             }
1991           b->val = v;
1992           b->val_valid = 1;
1993         }
1994
1995       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1996
1997       /* Look at each value on the value chain.  */
1998       for (v = val_chain; v; v = value_next (v))
1999         {
2000           /* If it's a memory location, and GDB actually needed
2001              its contents to evaluate the expression, then we
2002              must watch it.  If the first value returned is
2003              still lazy, that means an error occurred reading it;
2004              watch it anyway in case it becomes readable.  */
2005           if (VALUE_LVAL (v) == lval_memory
2006               && (v == val_chain || ! value_lazy (v)))
2007             {
2008               struct type *vtype = check_typedef (value_type (v));
2009
2010               /* We only watch structs and arrays if user asked
2011                  for it explicitly, never if they just happen to
2012                  appear in the middle of some value chain.  */
2013               if (v == result
2014                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
2015                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
2016                 {
2017                   CORE_ADDR addr;
2018                   enum target_hw_bp_type type;
2019                   struct bp_location *loc, **tmp;
2020                   int bitpos = 0, bitsize = 0;
2021
2022                   if (value_bitsize (v) != 0)
2023                     {
2024                       /* Extract the bit parameters out from the bitfield
2025                          sub-expression.  */
2026                       bitpos = value_bitpos (v);
2027                       bitsize = value_bitsize (v);
2028                     }
2029                   else if (v == result && b->val_bitsize != 0)
2030                     {
2031                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2032                         lvalue whose bit parameters are saved in the fields
2033                         VAL_BITPOS and VAL_BITSIZE.  */
2034                       bitpos = b->val_bitpos;
2035                       bitsize = b->val_bitsize;
2036                     }
2037
2038                   addr = value_address (v);
2039                   if (bitsize != 0)
2040                     {
2041                       /* Skip the bytes that don't contain the bitfield.  */
2042                       addr += bitpos / 8;
2043                     }
2044
2045                   type = hw_write;
2046                   if (b->type == bp_read_watchpoint)
2047                     type = hw_read;
2048                   else if (b->type == bp_access_watchpoint)
2049                     type = hw_access;
2050
2051                   loc = allocate_bp_location (b);
2052                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
2053                     ;
2054                   *tmp = loc;
2055                   loc->gdbarch = get_type_arch (value_type (v));
2056
2057                   loc->pspace = frame_pspace;
2058                   loc->address = addr;
2059
2060                   if (bitsize != 0)
2061                     {
2062                       /* Just cover the bytes that make up the bitfield.  */
2063                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2064                     }
2065                   else
2066                     loc->length = TYPE_LENGTH (value_type (v));
2067
2068                   loc->watchpoint_type = type;
2069                 }
2070             }
2071         }
2072
2073       /* Change the type of breakpoint between hardware assisted or
2074          an ordinary watchpoint depending on the hardware support
2075          and free hardware slots.  REPARSE is set when the inferior
2076          is started.  */
2077       if (reparse)
2078         {
2079           int reg_cnt;
2080           enum bp_loc_type loc_type;
2081           struct bp_location *bl;
2082
2083           reg_cnt = can_use_hardware_watchpoint (val_chain);
2084
2085           if (reg_cnt)
2086             {
2087               int i, target_resources_ok, other_type_used;
2088               enum bptype type;
2089
2090               /* Use an exact watchpoint when there's only one memory region to be
2091                  watched, and only one debug register is needed to watch it.  */
2092               b->exact = target_exact_watchpoints && reg_cnt == 1;
2093
2094               /* We need to determine how many resources are already
2095                  used for all other hardware watchpoints plus this one
2096                  to see if we still have enough resources to also fit
2097                  this watchpoint in as well.  */
2098
2099               /* If this is a software watchpoint, we try to turn it
2100                  to a hardware one -- count resources as if B was of
2101                  hardware watchpoint type.  */
2102               type = b->type;
2103               if (type == bp_watchpoint)
2104                 type = bp_hardware_watchpoint;
2105
2106               /* This watchpoint may or may not have been placed on
2107                  the list yet at this point (it won't be in the list
2108                  if we're trying to create it for the first time,
2109                  through watch_command), so always account for it
2110                  manually.  */
2111
2112               /* Count resources used by all watchpoints except B.  */
2113               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
2114
2115               /* Add in the resources needed for B.  */
2116               i += hw_watchpoint_use_count (b);
2117
2118               target_resources_ok
2119                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2120               if (target_resources_ok <= 0)
2121                 {
2122                   int sw_mode = b->ops->works_in_software_mode (b);
2123
2124                   if (target_resources_ok == 0 && !sw_mode)
2125                     error (_("Target does not support this type of "
2126                              "hardware watchpoint."));
2127                   else if (target_resources_ok < 0 && !sw_mode)
2128                     error (_("There are not enough available hardware "
2129                              "resources for this watchpoint."));
2130
2131                   /* Downgrade to software watchpoint.  */
2132                   b->type = bp_watchpoint;
2133                 }
2134               else
2135                 {
2136                   /* If this was a software watchpoint, we've just
2137                      found we have enough resources to turn it to a
2138                      hardware watchpoint.  Otherwise, this is a
2139                      nop.  */
2140                   b->type = type;
2141                 }
2142             }
2143           else if (!b->ops->works_in_software_mode (b))
2144             {
2145               if (!can_use_hw_watchpoints)
2146                 error (_("Can't set read/access watchpoint when "
2147                          "hardware watchpoints are disabled."));
2148               else
2149                 error (_("Expression cannot be implemented with "
2150                          "read/access watchpoint."));
2151             }
2152           else
2153             b->type = bp_watchpoint;
2154
2155           loc_type = (b->type == bp_watchpoint? bp_loc_other
2156                       : bp_loc_hardware_watchpoint);
2157           for (bl = b->loc; bl; bl = bl->next)
2158             bl->loc_type = loc_type;
2159         }
2160
2161       for (v = val_chain; v; v = next)
2162         {
2163           next = value_next (v);
2164           if (v != b->val)
2165             value_free (v);
2166         }
2167
2168       /* If a software watchpoint is not watching any memory, then the
2169          above left it without any location set up.  But,
2170          bpstat_stop_status requires a location to be able to report
2171          stops, so make sure there's at least a dummy one.  */
2172       if (b->type == bp_watchpoint && b->loc == NULL)
2173         software_watchpoint_add_no_memory_location (b, frame_pspace);
2174     }
2175   else if (!within_current_scope)
2176     {
2177       printf_filtered (_("\
2178 Watchpoint %d deleted because the program has left the block\n\
2179 in which its expression is valid.\n"),
2180                        b->number);
2181       watchpoint_del_at_next_stop (b);
2182     }
2183
2184   /* Restore the selected frame.  */
2185   if (frame_saved)
2186     select_frame (frame_find_by_id (saved_frame_id));
2187 }
2188
2189
2190 /* Returns 1 iff breakpoint location should be
2191    inserted in the inferior.  We don't differentiate the type of BL's owner
2192    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2193    breakpoint_ops is not defined, because in insert_bp_location,
2194    tracepoint's insert_location will not be called.  */
2195 static int
2196 should_be_inserted (struct bp_location *bl)
2197 {
2198   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2199     return 0;
2200
2201   if (bl->owner->disposition == disp_del_at_next_stop)
2202     return 0;
2203
2204   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2205     return 0;
2206
2207   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2208     return 0;
2209
2210   /* This is set for example, when we're attached to the parent of a
2211      vfork, and have detached from the child.  The child is running
2212      free, and we expect it to do an exec or exit, at which point the
2213      OS makes the parent schedulable again (and the target reports
2214      that the vfork is done).  Until the child is done with the shared
2215      memory region, do not insert breakpoints in the parent, otherwise
2216      the child could still trip on the parent's breakpoints.  Since
2217      the parent is blocked anyway, it won't miss any breakpoint.  */
2218   if (bl->pspace->breakpoints_not_allowed)
2219     return 0;
2220
2221   /* Don't insert a breakpoint if we're trying to step past its
2222      location, except if the breakpoint is a single-step breakpoint,
2223      and the breakpoint's thread is the thread which is stepping past
2224      a breakpoint.  */
2225   if ((bl->loc_type == bp_loc_software_breakpoint
2226        || bl->loc_type == bp_loc_hardware_breakpoint)
2227       && stepping_past_instruction_at (bl->pspace->aspace,
2228                                        bl->address)
2229       /* The single-step breakpoint may be inserted at the location
2230          we're trying to step if the instruction branches to itself.
2231          However, the instruction won't be executed at all and it may
2232          break the semantics of the instruction, for example, the
2233          instruction is a conditional branch or updates some flags.
2234          We can't fix it unless GDB is able to emulate the instruction
2235          or switch to displaced stepping.  */
2236       && !(bl->owner->type == bp_single_step
2237            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2238     {
2239       if (debug_infrun)
2240         {
2241           fprintf_unfiltered (gdb_stdlog,
2242                               "infrun: skipping breakpoint: "
2243                               "stepping past insn at: %s\n",
2244                               paddress (bl->gdbarch, bl->address));
2245         }
2246       return 0;
2247     }
2248
2249   /* Don't insert watchpoints if we're trying to step past the
2250      instruction that triggered one.  */
2251   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2252       && stepping_past_nonsteppable_watchpoint ())
2253     {
2254       if (debug_infrun)
2255         {
2256           fprintf_unfiltered (gdb_stdlog,
2257                               "infrun: stepping past non-steppable watchpoint. "
2258                               "skipping watchpoint at %s:%d\n",
2259                               paddress (bl->gdbarch, bl->address),
2260                               bl->length);
2261         }
2262       return 0;
2263     }
2264
2265   return 1;
2266 }
2267
2268 /* Same as should_be_inserted but does the check assuming
2269    that the location is not duplicated.  */
2270
2271 static int
2272 unduplicated_should_be_inserted (struct bp_location *bl)
2273 {
2274   int result;
2275   const int save_duplicate = bl->duplicate;
2276
2277   bl->duplicate = 0;
2278   result = should_be_inserted (bl);
2279   bl->duplicate = save_duplicate;
2280   return result;
2281 }
2282
2283 /* Parses a conditional described by an expression COND into an
2284    agent expression bytecode suitable for evaluation
2285    by the bytecode interpreter.  Return NULL if there was
2286    any error during parsing.  */
2287
2288 static agent_expr_up
2289 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2290 {
2291   if (cond == NULL)
2292     return NULL;
2293
2294   agent_expr_up aexpr;
2295
2296   /* We don't want to stop processing, so catch any errors
2297      that may show up.  */
2298   TRY
2299     {
2300       aexpr = gen_eval_for_expr (scope, cond);
2301     }
2302
2303   CATCH (ex, RETURN_MASK_ERROR)
2304     {
2305       /* If we got here, it means the condition could not be parsed to a valid
2306          bytecode expression and thus can't be evaluated on the target's side.
2307          It's no use iterating through the conditions.  */
2308     }
2309   END_CATCH
2310
2311   /* We have a valid agent expression.  */
2312   return aexpr;
2313 }
2314
2315 /* Based on location BL, create a list of breakpoint conditions to be
2316    passed on to the target.  If we have duplicated locations with different
2317    conditions, we will add such conditions to the list.  The idea is that the
2318    target will evaluate the list of conditions and will only notify GDB when
2319    one of them is true.  */
2320
2321 static void
2322 build_target_condition_list (struct bp_location *bl)
2323 {
2324   struct bp_location **locp = NULL, **loc2p;
2325   int null_condition_or_parse_error = 0;
2326   int modified = bl->needs_update;
2327   struct bp_location *loc;
2328
2329   /* Release conditions left over from a previous insert.  */
2330   bl->target_info.conditions.clear ();
2331
2332   /* This is only meaningful if the target is
2333      evaluating conditions and if the user has
2334      opted for condition evaluation on the target's
2335      side.  */
2336   if (gdb_evaluates_breakpoint_condition_p ()
2337       || !target_supports_evaluation_of_breakpoint_conditions ())
2338     return;
2339
2340   /* Do a first pass to check for locations with no assigned
2341      conditions or conditions that fail to parse to a valid agent expression
2342      bytecode.  If any of these happen, then it's no use to send conditions
2343      to the target since this location will always trigger and generate a
2344      response back to GDB.  */
2345   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2346     {
2347       loc = (*loc2p);
2348       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2349         {
2350           if (modified)
2351             {
2352               /* Re-parse the conditions since something changed.  In that
2353                  case we already freed the condition bytecodes (see
2354                  force_breakpoint_reinsertion).  We just
2355                  need to parse the condition to bytecodes again.  */
2356               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2357                                                         loc->cond.get ());
2358             }
2359
2360           /* If we have a NULL bytecode expression, it means something
2361              went wrong or we have a null condition expression.  */
2362           if (!loc->cond_bytecode)
2363             {
2364               null_condition_or_parse_error = 1;
2365               break;
2366             }
2367         }
2368     }
2369
2370   /* If any of these happened, it means we will have to evaluate the conditions
2371      for the location's address on gdb's side.  It is no use keeping bytecodes
2372      for all the other duplicate locations, thus we free all of them here.
2373
2374      This is so we have a finer control over which locations' conditions are
2375      being evaluated by GDB or the remote stub.  */
2376   if (null_condition_or_parse_error)
2377     {
2378       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2379         {
2380           loc = (*loc2p);
2381           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2382             {
2383               /* Only go as far as the first NULL bytecode is
2384                  located.  */
2385               if (!loc->cond_bytecode)
2386                 return;
2387
2388               loc->cond_bytecode.reset ();
2389             }
2390         }
2391     }
2392
2393   /* No NULL conditions or failed bytecode generation.  Build a condition list
2394      for this location's address.  */
2395   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2396     {
2397       loc = (*loc2p);
2398       if (loc->cond
2399           && is_breakpoint (loc->owner)
2400           && loc->pspace->num == bl->pspace->num
2401           && loc->owner->enable_state == bp_enabled
2402           && loc->enabled)
2403         {
2404           /* Add the condition to the vector.  This will be used later
2405              to send the conditions to the target.  */
2406           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2407         }
2408     }
2409
2410   return;
2411 }
2412
2413 /* Parses a command described by string CMD into an agent expression
2414    bytecode suitable for evaluation by the bytecode interpreter.
2415    Return NULL if there was any error during parsing.  */
2416
2417 static agent_expr_up
2418 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2419 {
2420   struct cleanup *old_cleanups = 0;
2421   struct expression **argvec;
2422   const char *cmdrest;
2423   const char *format_start, *format_end;
2424   struct format_piece *fpieces;
2425   int nargs;
2426   struct gdbarch *gdbarch = get_current_arch ();
2427
2428   if (cmd == NULL)
2429     return NULL;
2430
2431   cmdrest = cmd;
2432
2433   if (*cmdrest == ',')
2434     ++cmdrest;
2435   cmdrest = skip_spaces_const (cmdrest);
2436
2437   if (*cmdrest++ != '"')
2438     error (_("No format string following the location"));
2439
2440   format_start = cmdrest;
2441
2442   fpieces = parse_format_string (&cmdrest);
2443
2444   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2445
2446   format_end = cmdrest;
2447
2448   if (*cmdrest++ != '"')
2449     error (_("Bad format string, non-terminated '\"'."));
2450   
2451   cmdrest = skip_spaces_const (cmdrest);
2452
2453   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2454     error (_("Invalid argument syntax"));
2455
2456   if (*cmdrest == ',')
2457     cmdrest++;
2458   cmdrest = skip_spaces_const (cmdrest);
2459
2460   /* For each argument, make an expression.  */
2461
2462   argvec = (struct expression **) alloca (strlen (cmd)
2463                                          * sizeof (struct expression *));
2464
2465   nargs = 0;
2466   while (*cmdrest != '\0')
2467     {
2468       const char *cmd1;
2469
2470       cmd1 = cmdrest;
2471       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2472       argvec[nargs++] = expr.release ();
2473       cmdrest = cmd1;
2474       if (*cmdrest == ',')
2475         ++cmdrest;
2476     }
2477
2478   agent_expr_up aexpr;
2479
2480   /* We don't want to stop processing, so catch any errors
2481      that may show up.  */
2482   TRY
2483     {
2484       aexpr = gen_printf (scope, gdbarch, 0, 0,
2485                           format_start, format_end - format_start,
2486                           fpieces, nargs, argvec);
2487     }
2488   CATCH (ex, RETURN_MASK_ERROR)
2489     {
2490       /* If we got here, it means the command could not be parsed to a valid
2491          bytecode expression and thus can't be evaluated on the target's side.
2492          It's no use iterating through the other commands.  */
2493     }
2494   END_CATCH
2495
2496   do_cleanups (old_cleanups);
2497
2498   /* We have a valid agent expression, return it.  */
2499   return aexpr;
2500 }
2501
2502 /* Based on location BL, create a list of breakpoint commands to be
2503    passed on to the target.  If we have duplicated locations with
2504    different commands, we will add any such to the list.  */
2505
2506 static void
2507 build_target_command_list (struct bp_location *bl)
2508 {
2509   struct bp_location **locp = NULL, **loc2p;
2510   int null_command_or_parse_error = 0;
2511   int modified = bl->needs_update;
2512   struct bp_location *loc;
2513
2514   /* Clear commands left over from a previous insert.  */
2515   bl->target_info.tcommands.clear ();
2516
2517   if (!target_can_run_breakpoint_commands ())
2518     return;
2519
2520   /* For now, limit to agent-style dprintf breakpoints.  */
2521   if (dprintf_style != dprintf_style_agent)
2522     return;
2523
2524   /* For now, if we have any duplicate location that isn't a dprintf,
2525      don't install the target-side commands, as that would make the
2526      breakpoint not be reported to the core, and we'd lose
2527      control.  */
2528   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2529     {
2530       loc = (*loc2p);
2531       if (is_breakpoint (loc->owner)
2532           && loc->pspace->num == bl->pspace->num
2533           && loc->owner->type != bp_dprintf)
2534         return;
2535     }
2536
2537   /* Do a first pass to check for locations with no assigned
2538      conditions or conditions that fail to parse to a valid agent expression
2539      bytecode.  If any of these happen, then it's no use to send conditions
2540      to the target since this location will always trigger and generate a
2541      response back to GDB.  */
2542   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2543     {
2544       loc = (*loc2p);
2545       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2546         {
2547           if (modified)
2548             {
2549               /* Re-parse the commands since something changed.  In that
2550                  case we already freed the command bytecodes (see
2551                  force_breakpoint_reinsertion).  We just
2552                  need to parse the command to bytecodes again.  */
2553               loc->cmd_bytecode
2554                 = parse_cmd_to_aexpr (bl->address,
2555                                       loc->owner->extra_string);
2556             }
2557
2558           /* If we have a NULL bytecode expression, it means something
2559              went wrong or we have a null command expression.  */
2560           if (!loc->cmd_bytecode)
2561             {
2562               null_command_or_parse_error = 1;
2563               break;
2564             }
2565         }
2566     }
2567
2568   /* If anything failed, then we're not doing target-side commands,
2569      and so clean up.  */
2570   if (null_command_or_parse_error)
2571     {
2572       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2573         {
2574           loc = (*loc2p);
2575           if (is_breakpoint (loc->owner)
2576               && loc->pspace->num == bl->pspace->num)
2577             {
2578               /* Only go as far as the first NULL bytecode is
2579                  located.  */
2580               if (loc->cmd_bytecode == NULL)
2581                 return;
2582
2583               loc->cmd_bytecode.reset ();
2584             }
2585         }
2586     }
2587
2588   /* No NULL commands or failed bytecode generation.  Build a command list
2589      for this location's address.  */
2590   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2591     {
2592       loc = (*loc2p);
2593       if (loc->owner->extra_string
2594           && is_breakpoint (loc->owner)
2595           && loc->pspace->num == bl->pspace->num
2596           && loc->owner->enable_state == bp_enabled
2597           && loc->enabled)
2598         {
2599           /* Add the command to the vector.  This will be used later
2600              to send the commands to the target.  */
2601           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2602         }
2603     }
2604
2605   bl->target_info.persist = 0;
2606   /* Maybe flag this location as persistent.  */
2607   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2608     bl->target_info.persist = 1;
2609 }
2610
2611 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2612    of breakpoint according to ADDR except single-step breakpoint.
2613    Get the kind of single-step breakpoint according to the current
2614    registers state.  */
2615
2616 static int
2617 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2618 {
2619   if (bl->owner->type == bp_single_step)
2620     {
2621       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2622       struct regcache *regcache;
2623
2624       regcache = get_thread_regcache (thr->ptid);
2625
2626       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2627                                                          regcache, addr);
2628     }
2629   else
2630     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2631 }
2632
2633 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2634    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2635    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2636    Returns 0 for success, 1 if the bp_location type is not supported or
2637    -1 for failure.
2638
2639    NOTE drow/2003-09-09: This routine could be broken down to an
2640    object-style method for each breakpoint or catchpoint type.  */
2641 static int
2642 insert_bp_location (struct bp_location *bl,
2643                     struct ui_file *tmp_error_stream,
2644                     int *disabled_breaks,
2645                     int *hw_breakpoint_error,
2646                     int *hw_bp_error_explained_already)
2647 {
2648   enum errors bp_err = GDB_NO_ERROR;
2649   const char *bp_err_message = NULL;
2650
2651   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2652     return 0;
2653
2654   /* Note we don't initialize bl->target_info, as that wipes out
2655      the breakpoint location's shadow_contents if the breakpoint
2656      is still inserted at that location.  This in turn breaks
2657      target_read_memory which depends on these buffers when
2658      a memory read is requested at the breakpoint location:
2659      Once the target_info has been wiped, we fail to see that
2660      we have a breakpoint inserted at that address and thus
2661      read the breakpoint instead of returning the data saved in
2662      the breakpoint location's shadow contents.  */
2663   bl->target_info.reqstd_address = bl->address;
2664   bl->target_info.placed_address_space = bl->pspace->aspace;
2665   bl->target_info.length = bl->length;
2666
2667   /* When working with target-side conditions, we must pass all the conditions
2668      for the same breakpoint address down to the target since GDB will not
2669      insert those locations.  With a list of breakpoint conditions, the target
2670      can decide when to stop and notify GDB.  */
2671
2672   if (is_breakpoint (bl->owner))
2673     {
2674       build_target_condition_list (bl);
2675       build_target_command_list (bl);
2676       /* Reset the modification marker.  */
2677       bl->needs_update = 0;
2678     }
2679
2680   if (bl->loc_type == bp_loc_software_breakpoint
2681       || bl->loc_type == bp_loc_hardware_breakpoint)
2682     {
2683       if (bl->owner->type != bp_hardware_breakpoint)
2684         {
2685           /* If the explicitly specified breakpoint type
2686              is not hardware breakpoint, check the memory map to see
2687              if the breakpoint address is in read only memory or not.
2688
2689              Two important cases are:
2690              - location type is not hardware breakpoint, memory
2691              is readonly.  We change the type of the location to
2692              hardware breakpoint.
2693              - location type is hardware breakpoint, memory is
2694              read-write.  This means we've previously made the
2695              location hardware one, but then the memory map changed,
2696              so we undo.
2697              
2698              When breakpoints are removed, remove_breakpoints will use
2699              location types we've just set here, the only possible
2700              problem is that memory map has changed during running
2701              program, but it's not going to work anyway with current
2702              gdb.  */
2703           struct mem_region *mr 
2704             = lookup_mem_region (bl->target_info.reqstd_address);
2705           
2706           if (mr)
2707             {
2708               if (automatic_hardware_breakpoints)
2709                 {
2710                   enum bp_loc_type new_type;
2711                   
2712                   if (mr->attrib.mode != MEM_RW)
2713                     new_type = bp_loc_hardware_breakpoint;
2714                   else 
2715                     new_type = bp_loc_software_breakpoint;
2716                   
2717                   if (new_type != bl->loc_type)
2718                     {
2719                       static int said = 0;
2720
2721                       bl->loc_type = new_type;
2722                       if (!said)
2723                         {
2724                           fprintf_filtered (gdb_stdout,
2725                                             _("Note: automatically using "
2726                                               "hardware breakpoints for "
2727                                               "read-only addresses.\n"));
2728                           said = 1;
2729                         }
2730                     }
2731                 }
2732               else if (bl->loc_type == bp_loc_software_breakpoint
2733                        && mr->attrib.mode != MEM_RW)
2734                 {
2735                   fprintf_unfiltered (tmp_error_stream,
2736                                       _("Cannot insert breakpoint %d.\n"
2737                                         "Cannot set software breakpoint "
2738                                         "at read-only address %s\n"),
2739                                       bl->owner->number,
2740                                       paddress (bl->gdbarch, bl->address));
2741                   return 1;
2742                 }
2743             }
2744         }
2745         
2746       /* First check to see if we have to handle an overlay.  */
2747       if (overlay_debugging == ovly_off
2748           || bl->section == NULL
2749           || !(section_is_overlay (bl->section)))
2750         {
2751           /* No overlay handling: just set the breakpoint.  */
2752           TRY
2753             {
2754               int val;
2755
2756               val = bl->owner->ops->insert_location (bl);
2757               if (val)
2758                 bp_err = GENERIC_ERROR;
2759             }
2760           CATCH (e, RETURN_MASK_ALL)
2761             {
2762               bp_err = e.error;
2763               bp_err_message = e.message;
2764             }
2765           END_CATCH
2766         }
2767       else
2768         {
2769           /* This breakpoint is in an overlay section.
2770              Shall we set a breakpoint at the LMA?  */
2771           if (!overlay_events_enabled)
2772             {
2773               /* Yes -- overlay event support is not active, 
2774                  so we must try to set a breakpoint at the LMA.
2775                  This will not work for a hardware breakpoint.  */
2776               if (bl->loc_type == bp_loc_hardware_breakpoint)
2777                 warning (_("hardware breakpoint %d not supported in overlay!"),
2778                          bl->owner->number);
2779               else
2780                 {
2781                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2782                                                              bl->section);
2783                   /* Set a software (trap) breakpoint at the LMA.  */
2784                   bl->overlay_target_info = bl->target_info;
2785                   bl->overlay_target_info.reqstd_address = addr;
2786
2787                   /* No overlay handling: just set the breakpoint.  */
2788                   TRY
2789                     {
2790                       int val;
2791
2792                       bl->overlay_target_info.kind
2793                         = breakpoint_kind (bl, &addr);
2794                       bl->overlay_target_info.placed_address = addr;
2795                       val = target_insert_breakpoint (bl->gdbarch,
2796                                                       &bl->overlay_target_info);
2797                       if (val)
2798                         bp_err = GENERIC_ERROR;
2799                     }
2800                   CATCH (e, RETURN_MASK_ALL)
2801                     {
2802                       bp_err = e.error;
2803                       bp_err_message = e.message;
2804                     }
2805                   END_CATCH
2806
2807                   if (bp_err != GDB_NO_ERROR)
2808                     fprintf_unfiltered (tmp_error_stream,
2809                                         "Overlay breakpoint %d "
2810                                         "failed: in ROM?\n",
2811                                         bl->owner->number);
2812                 }
2813             }
2814           /* Shall we set a breakpoint at the VMA? */
2815           if (section_is_mapped (bl->section))
2816             {
2817               /* Yes.  This overlay section is mapped into memory.  */
2818               TRY
2819                 {
2820                   int val;
2821
2822                   val = bl->owner->ops->insert_location (bl);
2823                   if (val)
2824                     bp_err = GENERIC_ERROR;
2825                 }
2826               CATCH (e, RETURN_MASK_ALL)
2827                 {
2828                   bp_err = e.error;
2829                   bp_err_message = e.message;
2830                 }
2831               END_CATCH
2832             }
2833           else
2834             {
2835               /* No.  This breakpoint will not be inserted.  
2836                  No error, but do not mark the bp as 'inserted'.  */
2837               return 0;
2838             }
2839         }
2840
2841       if (bp_err != GDB_NO_ERROR)
2842         {
2843           /* Can't set the breakpoint.  */
2844
2845           /* In some cases, we might not be able to insert a
2846              breakpoint in a shared library that has already been
2847              removed, but we have not yet processed the shlib unload
2848              event.  Unfortunately, some targets that implement
2849              breakpoint insertion themselves can't tell why the
2850              breakpoint insertion failed (e.g., the remote target
2851              doesn't define error codes), so we must treat generic
2852              errors as memory errors.  */
2853           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2854               && bl->loc_type == bp_loc_software_breakpoint
2855               && (solib_name_from_address (bl->pspace, bl->address)
2856                   || shared_objfile_contains_address_p (bl->pspace,
2857                                                         bl->address)))
2858             {
2859               /* See also: disable_breakpoints_in_shlibs.  */
2860               bl->shlib_disabled = 1;
2861               observer_notify_breakpoint_modified (bl->owner);
2862               if (!*disabled_breaks)
2863                 {
2864                   fprintf_unfiltered (tmp_error_stream, 
2865                                       "Cannot insert breakpoint %d.\n", 
2866                                       bl->owner->number);
2867                   fprintf_unfiltered (tmp_error_stream, 
2868                                       "Temporarily disabling shared "
2869                                       "library breakpoints:\n");
2870                 }
2871               *disabled_breaks = 1;
2872               fprintf_unfiltered (tmp_error_stream,
2873                                   "breakpoint #%d\n", bl->owner->number);
2874               return 0;
2875             }
2876           else
2877             {
2878               if (bl->loc_type == bp_loc_hardware_breakpoint)
2879                 {
2880                   *hw_breakpoint_error = 1;
2881                   *hw_bp_error_explained_already = bp_err_message != NULL;
2882                   fprintf_unfiltered (tmp_error_stream,
2883                                       "Cannot insert hardware breakpoint %d%s",
2884                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2885                   if (bp_err_message != NULL)
2886                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2887                 }
2888               else
2889                 {
2890                   if (bp_err_message == NULL)
2891                     {
2892                       std::string message
2893                         = memory_error_message (TARGET_XFER_E_IO,
2894                                                 bl->gdbarch, bl->address);
2895
2896                       fprintf_unfiltered (tmp_error_stream,
2897                                           "Cannot insert breakpoint %d.\n"
2898                                           "%s\n",
2899                                           bl->owner->number, message.c_str ());
2900                     }
2901                   else
2902                     {
2903                       fprintf_unfiltered (tmp_error_stream,
2904                                           "Cannot insert breakpoint %d: %s\n",
2905                                           bl->owner->number,
2906                                           bp_err_message);
2907                     }
2908                 }
2909               return 1;
2910
2911             }
2912         }
2913       else
2914         bl->inserted = 1;
2915
2916       return 0;
2917     }
2918
2919   else if (bl->loc_type == bp_loc_hardware_watchpoint
2920            /* NOTE drow/2003-09-08: This state only exists for removing
2921               watchpoints.  It's not clear that it's necessary...  */
2922            && bl->owner->disposition != disp_del_at_next_stop)
2923     {
2924       int val;
2925
2926       gdb_assert (bl->owner->ops != NULL
2927                   && bl->owner->ops->insert_location != NULL);
2928
2929       val = bl->owner->ops->insert_location (bl);
2930
2931       /* If trying to set a read-watchpoint, and it turns out it's not
2932          supported, try emulating one with an access watchpoint.  */
2933       if (val == 1 && bl->watchpoint_type == hw_read)
2934         {
2935           struct bp_location *loc, **loc_temp;
2936
2937           /* But don't try to insert it, if there's already another
2938              hw_access location that would be considered a duplicate
2939              of this one.  */
2940           ALL_BP_LOCATIONS (loc, loc_temp)
2941             if (loc != bl
2942                 && loc->watchpoint_type == hw_access
2943                 && watchpoint_locations_match (bl, loc))
2944               {
2945                 bl->duplicate = 1;
2946                 bl->inserted = 1;
2947                 bl->target_info = loc->target_info;
2948                 bl->watchpoint_type = hw_access;
2949                 val = 0;
2950                 break;
2951               }
2952
2953           if (val == 1)
2954             {
2955               bl->watchpoint_type = hw_access;
2956               val = bl->owner->ops->insert_location (bl);
2957
2958               if (val)
2959                 /* Back to the original value.  */
2960                 bl->watchpoint_type = hw_read;
2961             }
2962         }
2963
2964       bl->inserted = (val == 0);
2965     }
2966
2967   else if (bl->owner->type == bp_catchpoint)
2968     {
2969       int val;
2970
2971       gdb_assert (bl->owner->ops != NULL
2972                   && bl->owner->ops->insert_location != NULL);
2973
2974       val = bl->owner->ops->insert_location (bl);
2975       if (val)
2976         {
2977           bl->owner->enable_state = bp_disabled;
2978
2979           if (val == 1)
2980             warning (_("\
2981 Error inserting catchpoint %d: Your system does not support this type\n\
2982 of catchpoint."), bl->owner->number);
2983           else
2984             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2985         }
2986
2987       bl->inserted = (val == 0);
2988
2989       /* We've already printed an error message if there was a problem
2990          inserting this catchpoint, and we've disabled the catchpoint,
2991          so just return success.  */
2992       return 0;
2993     }
2994
2995   return 0;
2996 }
2997
2998 /* This function is called when program space PSPACE is about to be
2999    deleted.  It takes care of updating breakpoints to not reference
3000    PSPACE anymore.  */
3001
3002 void
3003 breakpoint_program_space_exit (struct program_space *pspace)
3004 {
3005   struct breakpoint *b, *b_temp;
3006   struct bp_location *loc, **loc_temp;
3007
3008   /* Remove any breakpoint that was set through this program space.  */
3009   ALL_BREAKPOINTS_SAFE (b, b_temp)
3010     {
3011       if (b->pspace == pspace)
3012         delete_breakpoint (b);
3013     }
3014
3015   /* Breakpoints set through other program spaces could have locations
3016      bound to PSPACE as well.  Remove those.  */
3017   ALL_BP_LOCATIONS (loc, loc_temp)
3018     {
3019       struct bp_location *tmp;
3020
3021       if (loc->pspace == pspace)
3022         {
3023           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
3024           if (loc->owner->loc == loc)
3025             loc->owner->loc = loc->next;
3026           else
3027             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3028               if (tmp->next == loc)
3029                 {
3030                   tmp->next = loc->next;
3031                   break;
3032                 }
3033         }
3034     }
3035
3036   /* Now update the global location list to permanently delete the
3037      removed locations above.  */
3038   update_global_location_list (UGLL_DONT_INSERT);
3039 }
3040
3041 /* Make sure all breakpoints are inserted in inferior.
3042    Throws exception on any error.
3043    A breakpoint that is already inserted won't be inserted
3044    again, so calling this function twice is safe.  */
3045 void
3046 insert_breakpoints (void)
3047 {
3048   struct breakpoint *bpt;
3049
3050   ALL_BREAKPOINTS (bpt)
3051     if (is_hardware_watchpoint (bpt))
3052       {
3053         struct watchpoint *w = (struct watchpoint *) bpt;
3054
3055         update_watchpoint (w, 0 /* don't reparse.  */);
3056       }
3057
3058   /* Updating watchpoints creates new locations, so update the global
3059      location list.  Explicitly tell ugll to insert locations and
3060      ignore breakpoints_always_inserted_mode.  */
3061   update_global_location_list (UGLL_INSERT);
3062 }
3063
3064 /* Invoke CALLBACK for each of bp_location.  */
3065
3066 void
3067 iterate_over_bp_locations (walk_bp_location_callback callback)
3068 {
3069   struct bp_location *loc, **loc_tmp;
3070
3071   ALL_BP_LOCATIONS (loc, loc_tmp)
3072     {
3073       callback (loc, NULL);
3074     }
3075 }
3076
3077 /* This is used when we need to synch breakpoint conditions between GDB and the
3078    target.  It is the case with deleting and disabling of breakpoints when using
3079    always-inserted mode.  */
3080
3081 static void
3082 update_inserted_breakpoint_locations (void)
3083 {
3084   struct bp_location *bl, **blp_tmp;
3085   int error_flag = 0;
3086   int val = 0;
3087   int disabled_breaks = 0;
3088   int hw_breakpoint_error = 0;
3089   int hw_bp_details_reported = 0;
3090
3091   string_file tmp_error_stream;
3092
3093   /* Explicitly mark the warning -- this will only be printed if
3094      there was an error.  */
3095   tmp_error_stream.puts ("Warning:\n");
3096
3097   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3098
3099   ALL_BP_LOCATIONS (bl, blp_tmp)
3100     {
3101       /* We only want to update software breakpoints and hardware
3102          breakpoints.  */
3103       if (!is_breakpoint (bl->owner))
3104         continue;
3105
3106       /* We only want to update locations that are already inserted
3107          and need updating.  This is to avoid unwanted insertion during
3108          deletion of breakpoints.  */
3109       if (!bl->inserted || (bl->inserted && !bl->needs_update))
3110         continue;
3111
3112       switch_to_program_space_and_thread (bl->pspace);
3113
3114       /* For targets that support global breakpoints, there's no need
3115          to select an inferior to insert breakpoint to.  In fact, even
3116          if we aren't attached to any process yet, we should still
3117          insert breakpoints.  */
3118       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3119           && ptid_equal (inferior_ptid, null_ptid))
3120         continue;
3121
3122       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3123                                     &hw_breakpoint_error, &hw_bp_details_reported);
3124       if (val)
3125         error_flag = val;
3126     }
3127
3128   if (error_flag)
3129     {
3130       target_terminal_ours_for_output ();
3131       error_stream (tmp_error_stream);
3132     }
3133 }
3134
3135 /* Used when starting or continuing the program.  */
3136
3137 static void
3138 insert_breakpoint_locations (void)
3139 {
3140   struct breakpoint *bpt;
3141   struct bp_location *bl, **blp_tmp;
3142   int error_flag = 0;
3143   int val = 0;
3144   int disabled_breaks = 0;
3145   int hw_breakpoint_error = 0;
3146   int hw_bp_error_explained_already = 0;
3147
3148   string_file tmp_error_stream;
3149
3150   /* Explicitly mark the warning -- this will only be printed if
3151      there was an error.  */
3152   tmp_error_stream.puts ("Warning:\n");
3153
3154   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3155
3156   ALL_BP_LOCATIONS (bl, blp_tmp)
3157     {
3158       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3159         continue;
3160
3161       /* There is no point inserting thread-specific breakpoints if
3162          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3163          has BL->OWNER always non-NULL.  */
3164       if (bl->owner->thread != -1
3165           && !valid_global_thread_id (bl->owner->thread))
3166         continue;
3167
3168       switch_to_program_space_and_thread (bl->pspace);
3169
3170       /* For targets that support global breakpoints, there's no need
3171          to select an inferior to insert breakpoint to.  In fact, even
3172          if we aren't attached to any process yet, we should still
3173          insert breakpoints.  */
3174       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3175           && ptid_equal (inferior_ptid, null_ptid))
3176         continue;
3177
3178       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3179                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3180       if (val)
3181         error_flag = val;
3182     }
3183
3184   /* If we failed to insert all locations of a watchpoint, remove
3185      them, as half-inserted watchpoint is of limited use.  */
3186   ALL_BREAKPOINTS (bpt)  
3187     {
3188       int some_failed = 0;
3189       struct bp_location *loc;
3190
3191       if (!is_hardware_watchpoint (bpt))
3192         continue;
3193
3194       if (!breakpoint_enabled (bpt))
3195         continue;
3196
3197       if (bpt->disposition == disp_del_at_next_stop)
3198         continue;
3199       
3200       for (loc = bpt->loc; loc; loc = loc->next)
3201         if (!loc->inserted && should_be_inserted (loc))
3202           {
3203             some_failed = 1;
3204             break;
3205           }
3206       if (some_failed)
3207         {
3208           for (loc = bpt->loc; loc; loc = loc->next)
3209             if (loc->inserted)
3210               remove_breakpoint (loc);
3211
3212           hw_breakpoint_error = 1;
3213           tmp_error_stream.printf ("Could not insert "
3214                                    "hardware watchpoint %d.\n",
3215                                    bpt->number);
3216           error_flag = -1;
3217         }
3218     }
3219
3220   if (error_flag)
3221     {
3222       /* If a hardware breakpoint or watchpoint was inserted, add a
3223          message about possibly exhausted resources.  */
3224       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3225         {
3226           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3227 You may have requested too many hardware breakpoints/watchpoints.\n");
3228         }
3229       target_terminal_ours_for_output ();
3230       error_stream (tmp_error_stream);
3231     }
3232 }
3233
3234 /* Used when the program stops.
3235    Returns zero if successful, or non-zero if there was a problem
3236    removing a breakpoint location.  */
3237
3238 int
3239 remove_breakpoints (void)
3240 {
3241   struct bp_location *bl, **blp_tmp;
3242   int val = 0;
3243
3244   ALL_BP_LOCATIONS (bl, blp_tmp)
3245   {
3246     if (bl->inserted && !is_tracepoint (bl->owner))
3247       val |= remove_breakpoint (bl);
3248   }
3249   return val;
3250 }
3251
3252 /* When a thread exits, remove breakpoints that are related to
3253    that thread.  */
3254
3255 static void
3256 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3257 {
3258   struct breakpoint *b, *b_tmp;
3259
3260   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3261     {
3262       if (b->thread == tp->global_num && user_breakpoint_p (b))
3263         {
3264           b->disposition = disp_del_at_next_stop;
3265
3266           printf_filtered (_("\
3267 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3268                            b->number, print_thread_id (tp));
3269
3270           /* Hide it from the user.  */
3271           b->number = 0;
3272        }
3273     }
3274 }
3275
3276 /* Remove breakpoints of process PID.  */
3277
3278 int
3279 remove_breakpoints_pid (int pid)
3280 {
3281   struct bp_location *bl, **blp_tmp;
3282   int val;
3283   struct inferior *inf = find_inferior_pid (pid);
3284
3285   ALL_BP_LOCATIONS (bl, blp_tmp)
3286   {
3287     if (bl->pspace != inf->pspace)
3288       continue;
3289
3290     if (bl->inserted && !bl->target_info.persist)
3291       {
3292         val = remove_breakpoint (bl);
3293         if (val != 0)
3294           return val;
3295       }
3296   }
3297   return 0;
3298 }
3299
3300 int
3301 reattach_breakpoints (int pid)
3302 {
3303   struct bp_location *bl, **blp_tmp;
3304   int val;
3305   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3306   struct inferior *inf;
3307   struct thread_info *tp;
3308
3309   tp = any_live_thread_of_process (pid);
3310   if (tp == NULL)
3311     return 1;
3312
3313   inf = find_inferior_pid (pid);
3314
3315   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3316   inferior_ptid = tp->ptid;
3317
3318   string_file tmp_error_stream;
3319
3320   ALL_BP_LOCATIONS (bl, blp_tmp)
3321   {
3322     if (bl->pspace != inf->pspace)
3323       continue;
3324
3325     if (bl->inserted)
3326       {
3327         bl->inserted = 0;
3328         val = insert_bp_location (bl, &tmp_error_stream, &dummy1, &dummy2, &dummy3);
3329         if (val != 0)
3330           return val;
3331       }
3332   }
3333   return 0;
3334 }
3335
3336 static int internal_breakpoint_number = -1;
3337
3338 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3339    If INTERNAL is non-zero, the breakpoint number will be populated
3340    from internal_breakpoint_number and that variable decremented.
3341    Otherwise the breakpoint number will be populated from
3342    breakpoint_count and that value incremented.  Internal breakpoints
3343    do not set the internal var bpnum.  */
3344 static void
3345 set_breakpoint_number (int internal, struct breakpoint *b)
3346 {
3347   if (internal)
3348     b->number = internal_breakpoint_number--;
3349   else
3350     {
3351       set_breakpoint_count (breakpoint_count + 1);
3352       b->number = breakpoint_count;
3353     }
3354 }
3355
3356 static struct breakpoint *
3357 create_internal_breakpoint (struct gdbarch *gdbarch,
3358                             CORE_ADDR address, enum bptype type,
3359                             const struct breakpoint_ops *ops)
3360 {
3361   struct symtab_and_line sal;
3362   struct breakpoint *b;
3363
3364   init_sal (&sal);              /* Initialize to zeroes.  */
3365
3366   sal.pc = address;
3367   sal.section = find_pc_overlay (sal.pc);
3368   sal.pspace = current_program_space;
3369
3370   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3371   b->number = internal_breakpoint_number--;
3372   b->disposition = disp_donttouch;
3373
3374   return b;
3375 }
3376
3377 static const char *const longjmp_names[] =
3378   {
3379     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3380   };
3381 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3382
3383 /* Per-objfile data private to breakpoint.c.  */
3384 struct breakpoint_objfile_data
3385 {
3386   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3387   struct bound_minimal_symbol overlay_msym;
3388
3389   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3390   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3391
3392   /* True if we have looked for longjmp probes.  */
3393   int longjmp_searched;
3394
3395   /* SystemTap probe points for longjmp (if any).  */
3396   VEC (probe_p) *longjmp_probes;
3397
3398   /* Minimal symbol for "std::terminate()" (if any).  */
3399   struct bound_minimal_symbol terminate_msym;
3400
3401   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3402   struct bound_minimal_symbol exception_msym;
3403
3404   /* True if we have looked for exception probes.  */
3405   int exception_searched;
3406
3407   /* SystemTap probe points for unwinding (if any).  */
3408   VEC (probe_p) *exception_probes;
3409 };
3410
3411 static const struct objfile_data *breakpoint_objfile_key;
3412
3413 /* Minimal symbol not found sentinel.  */
3414 static struct minimal_symbol msym_not_found;
3415
3416 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3417
3418 static int
3419 msym_not_found_p (const struct minimal_symbol *msym)
3420 {
3421   return msym == &msym_not_found;
3422 }
3423
3424 /* Return per-objfile data needed by breakpoint.c.
3425    Allocate the data if necessary.  */
3426
3427 static struct breakpoint_objfile_data *
3428 get_breakpoint_objfile_data (struct objfile *objfile)
3429 {
3430   struct breakpoint_objfile_data *bp_objfile_data;
3431
3432   bp_objfile_data = ((struct breakpoint_objfile_data *)
3433                      objfile_data (objfile, breakpoint_objfile_key));
3434   if (bp_objfile_data == NULL)
3435     {
3436       bp_objfile_data =
3437         XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3438
3439       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3440       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3441     }
3442   return bp_objfile_data;
3443 }
3444
3445 static void
3446 free_breakpoint_probes (struct objfile *obj, void *data)
3447 {
3448   struct breakpoint_objfile_data *bp_objfile_data
3449     = (struct breakpoint_objfile_data *) data;
3450
3451   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3452   VEC_free (probe_p, bp_objfile_data->exception_probes);
3453 }
3454
3455 static void
3456 create_overlay_event_breakpoint (void)
3457 {
3458   struct objfile *objfile;
3459   const char *const func_name = "_ovly_debug_event";
3460
3461   ALL_OBJFILES (objfile)
3462     {
3463       struct breakpoint *b;
3464       struct breakpoint_objfile_data *bp_objfile_data;
3465       CORE_ADDR addr;
3466       struct explicit_location explicit_loc;
3467
3468       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3469
3470       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3471         continue;
3472
3473       if (bp_objfile_data->overlay_msym.minsym == NULL)
3474         {
3475           struct bound_minimal_symbol m;
3476
3477           m = lookup_minimal_symbol_text (func_name, objfile);
3478           if (m.minsym == NULL)
3479             {
3480               /* Avoid future lookups in this objfile.  */
3481               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3482               continue;
3483             }
3484           bp_objfile_data->overlay_msym = m;
3485         }
3486
3487       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3488       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3489                                       bp_overlay_event,
3490                                       &internal_breakpoint_ops);
3491       initialize_explicit_location (&explicit_loc);
3492       explicit_loc.function_name = ASTRDUP (func_name);
3493       b->location = new_explicit_location (&explicit_loc);
3494
3495       if (overlay_debugging == ovly_auto)
3496         {
3497           b->enable_state = bp_enabled;
3498           overlay_events_enabled = 1;
3499         }
3500       else
3501        {
3502          b->enable_state = bp_disabled;
3503          overlay_events_enabled = 0;
3504        }
3505     }
3506 }
3507
3508 static void
3509 create_longjmp_master_breakpoint (void)
3510 {
3511   struct program_space *pspace;
3512
3513   scoped_restore_current_program_space restore_pspace;
3514
3515   ALL_PSPACES (pspace)
3516   {
3517     struct objfile *objfile;
3518
3519     set_current_program_space (pspace);
3520
3521     ALL_OBJFILES (objfile)
3522     {
3523       int i;
3524       struct gdbarch *gdbarch;
3525       struct breakpoint_objfile_data *bp_objfile_data;
3526
3527       gdbarch = get_objfile_arch (objfile);
3528
3529       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3530
3531       if (!bp_objfile_data->longjmp_searched)
3532         {
3533           VEC (probe_p) *ret;
3534
3535           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3536           if (ret != NULL)
3537             {
3538               /* We are only interested in checking one element.  */
3539               struct probe *p = VEC_index (probe_p, ret, 0);
3540
3541               if (!can_evaluate_probe_arguments (p))
3542                 {
3543                   /* We cannot use the probe interface here, because it does
3544                      not know how to evaluate arguments.  */
3545                   VEC_free (probe_p, ret);
3546                   ret = NULL;
3547                 }
3548             }
3549           bp_objfile_data->longjmp_probes = ret;
3550           bp_objfile_data->longjmp_searched = 1;
3551         }
3552
3553       if (bp_objfile_data->longjmp_probes != NULL)
3554         {
3555           int i;
3556           struct probe *probe;
3557           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3558
3559           for (i = 0;
3560                VEC_iterate (probe_p,
3561                             bp_objfile_data->longjmp_probes,
3562                             i, probe);
3563                ++i)
3564             {
3565               struct breakpoint *b;
3566
3567               b = create_internal_breakpoint (gdbarch,
3568                                               get_probe_address (probe,
3569                                                                  objfile),
3570                                               bp_longjmp_master,
3571                                               &internal_breakpoint_ops);
3572               b->location = new_probe_location ("-probe-stap libc:longjmp");
3573               b->enable_state = bp_disabled;
3574             }
3575
3576           continue;
3577         }
3578
3579       if (!gdbarch_get_longjmp_target_p (gdbarch))
3580         continue;
3581
3582       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3583         {
3584           struct breakpoint *b;
3585           const char *func_name;
3586           CORE_ADDR addr;
3587           struct explicit_location explicit_loc;
3588
3589           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3590             continue;
3591
3592           func_name = longjmp_names[i];
3593           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3594             {
3595               struct bound_minimal_symbol m;
3596
3597               m = lookup_minimal_symbol_text (func_name, objfile);
3598               if (m.minsym == NULL)
3599                 {
3600                   /* Prevent future lookups in this objfile.  */
3601                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3602                   continue;
3603                 }
3604               bp_objfile_data->longjmp_msym[i] = m;
3605             }
3606
3607           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3608           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3609                                           &internal_breakpoint_ops);
3610           initialize_explicit_location (&explicit_loc);
3611           explicit_loc.function_name = ASTRDUP (func_name);
3612           b->location = new_explicit_location (&explicit_loc);
3613           b->enable_state = bp_disabled;
3614         }
3615     }
3616   }
3617 }
3618
3619 /* Create a master std::terminate breakpoint.  */
3620 static void
3621 create_std_terminate_master_breakpoint (void)
3622 {
3623   struct program_space *pspace;
3624   const char *const func_name = "std::terminate()";
3625
3626   scoped_restore_current_program_space restore_pspace;
3627
3628   ALL_PSPACES (pspace)
3629   {
3630     struct objfile *objfile;
3631     CORE_ADDR addr;
3632
3633     set_current_program_space (pspace);
3634
3635     ALL_OBJFILES (objfile)
3636     {
3637       struct breakpoint *b;
3638       struct breakpoint_objfile_data *bp_objfile_data;
3639       struct explicit_location explicit_loc;
3640
3641       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3642
3643       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3644         continue;
3645
3646       if (bp_objfile_data->terminate_msym.minsym == NULL)
3647         {
3648           struct bound_minimal_symbol m;
3649
3650           m = lookup_minimal_symbol (func_name, NULL, objfile);
3651           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3652                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3653             {
3654               /* Prevent future lookups in this objfile.  */
3655               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3656               continue;
3657             }
3658           bp_objfile_data->terminate_msym = m;
3659         }
3660
3661       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3662       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3663                                       bp_std_terminate_master,
3664                                       &internal_breakpoint_ops);
3665       initialize_explicit_location (&explicit_loc);
3666       explicit_loc.function_name = ASTRDUP (func_name);
3667       b->location = new_explicit_location (&explicit_loc);
3668       b->enable_state = bp_disabled;
3669     }
3670   }
3671 }
3672
3673 /* Install a master breakpoint on the unwinder's debug hook.  */
3674
3675 static void
3676 create_exception_master_breakpoint (void)
3677 {
3678   struct objfile *objfile;
3679   const char *const func_name = "_Unwind_DebugHook";
3680
3681   ALL_OBJFILES (objfile)
3682     {
3683       struct breakpoint *b;
3684       struct gdbarch *gdbarch;
3685       struct breakpoint_objfile_data *bp_objfile_data;
3686       CORE_ADDR addr;
3687       struct explicit_location explicit_loc;
3688
3689       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3690
3691       /* We prefer the SystemTap probe point if it exists.  */
3692       if (!bp_objfile_data->exception_searched)
3693         {
3694           VEC (probe_p) *ret;
3695
3696           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3697
3698           if (ret != NULL)
3699             {
3700               /* We are only interested in checking one element.  */
3701               struct probe *p = VEC_index (probe_p, ret, 0);
3702
3703               if (!can_evaluate_probe_arguments (p))
3704                 {
3705                   /* We cannot use the probe interface here, because it does
3706                      not know how to evaluate arguments.  */
3707                   VEC_free (probe_p, ret);
3708                   ret = NULL;
3709                 }
3710             }
3711           bp_objfile_data->exception_probes = ret;
3712           bp_objfile_data->exception_searched = 1;
3713         }
3714
3715       if (bp_objfile_data->exception_probes != NULL)
3716         {
3717           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3718           int i;
3719           struct probe *probe;
3720
3721           for (i = 0;
3722                VEC_iterate (probe_p,
3723                             bp_objfile_data->exception_probes,
3724                             i, probe);
3725                ++i)
3726             {
3727               struct breakpoint *b;
3728
3729               b = create_internal_breakpoint (gdbarch,
3730                                               get_probe_address (probe,
3731                                                                  objfile),
3732                                               bp_exception_master,
3733                                               &internal_breakpoint_ops);
3734               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3735               b->enable_state = bp_disabled;
3736             }
3737
3738           continue;
3739         }
3740
3741       /* Otherwise, try the hook function.  */
3742
3743       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3744         continue;
3745
3746       gdbarch = get_objfile_arch (objfile);
3747
3748       if (bp_objfile_data->exception_msym.minsym == NULL)
3749         {
3750           struct bound_minimal_symbol debug_hook;
3751
3752           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3753           if (debug_hook.minsym == NULL)
3754             {
3755               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3756               continue;
3757             }
3758
3759           bp_objfile_data->exception_msym = debug_hook;
3760         }
3761
3762       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3763       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3764                                                  &current_target);
3765       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3766                                       &internal_breakpoint_ops);
3767       initialize_explicit_location (&explicit_loc);
3768       explicit_loc.function_name = ASTRDUP (func_name);
3769       b->location = new_explicit_location (&explicit_loc);
3770       b->enable_state = bp_disabled;
3771     }
3772 }
3773
3774 /* Does B have a location spec?  */
3775
3776 static int
3777 breakpoint_event_location_empty_p (const struct breakpoint *b)
3778 {
3779   return b->location != NULL && event_location_empty_p (b->location.get ());
3780 }
3781
3782 void
3783 update_breakpoints_after_exec (void)
3784 {
3785   struct breakpoint *b, *b_tmp;
3786   struct bp_location *bploc, **bplocp_tmp;
3787
3788   /* We're about to delete breakpoints from GDB's lists.  If the
3789      INSERTED flag is true, GDB will try to lift the breakpoints by
3790      writing the breakpoints' "shadow contents" back into memory.  The
3791      "shadow contents" are NOT valid after an exec, so GDB should not
3792      do that.  Instead, the target is responsible from marking
3793      breakpoints out as soon as it detects an exec.  We don't do that
3794      here instead, because there may be other attempts to delete
3795      breakpoints after detecting an exec and before reaching here.  */
3796   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3797     if (bploc->pspace == current_program_space)
3798       gdb_assert (!bploc->inserted);
3799
3800   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3801   {
3802     if (b->pspace != current_program_space)
3803       continue;
3804
3805     /* Solib breakpoints must be explicitly reset after an exec().  */
3806     if (b->type == bp_shlib_event)
3807       {
3808         delete_breakpoint (b);
3809         continue;
3810       }
3811
3812     /* JIT breakpoints must be explicitly reset after an exec().  */
3813     if (b->type == bp_jit_event)
3814       {
3815         delete_breakpoint (b);
3816         continue;
3817       }
3818
3819     /* Thread event breakpoints must be set anew after an exec(),
3820        as must overlay event and longjmp master breakpoints.  */
3821     if (b->type == bp_thread_event || b->type == bp_overlay_event
3822         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3823         || b->type == bp_exception_master)
3824       {
3825         delete_breakpoint (b);
3826         continue;
3827       }
3828
3829     /* Step-resume breakpoints are meaningless after an exec().  */
3830     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3831       {
3832         delete_breakpoint (b);
3833         continue;
3834       }
3835
3836     /* Just like single-step breakpoints.  */
3837     if (b->type == bp_single_step)
3838       {
3839         delete_breakpoint (b);
3840         continue;
3841       }
3842
3843     /* Longjmp and longjmp-resume breakpoints are also meaningless
3844        after an exec.  */
3845     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3846         || b->type == bp_longjmp_call_dummy
3847         || b->type == bp_exception || b->type == bp_exception_resume)
3848       {
3849         delete_breakpoint (b);
3850         continue;
3851       }
3852
3853     if (b->type == bp_catchpoint)
3854       {
3855         /* For now, none of the bp_catchpoint breakpoints need to
3856            do anything at this point.  In the future, if some of
3857            the catchpoints need to something, we will need to add
3858            a new method, and call this method from here.  */
3859         continue;
3860       }
3861
3862     /* bp_finish is a special case.  The only way we ought to be able
3863        to see one of these when an exec() has happened, is if the user
3864        caught a vfork, and then said "finish".  Ordinarily a finish just
3865        carries them to the call-site of the current callee, by setting
3866        a temporary bp there and resuming.  But in this case, the finish
3867        will carry them entirely through the vfork & exec.
3868
3869        We don't want to allow a bp_finish to remain inserted now.  But
3870        we can't safely delete it, 'cause finish_command has a handle to
3871        the bp on a bpstat, and will later want to delete it.  There's a
3872        chance (and I've seen it happen) that if we delete the bp_finish
3873        here, that its storage will get reused by the time finish_command
3874        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3875        We really must allow finish_command to delete a bp_finish.
3876
3877        In the absence of a general solution for the "how do we know
3878        it's safe to delete something others may have handles to?"
3879        problem, what we'll do here is just uninsert the bp_finish, and
3880        let finish_command delete it.
3881
3882        (We know the bp_finish is "doomed" in the sense that it's
3883        momentary, and will be deleted as soon as finish_command sees
3884        the inferior stopped.  So it doesn't matter that the bp's
3885        address is probably bogus in the new a.out, unlike e.g., the
3886        solib breakpoints.)  */
3887
3888     if (b->type == bp_finish)
3889       {
3890         continue;
3891       }
3892
3893     /* Without a symbolic address, we have little hope of the
3894        pre-exec() address meaning the same thing in the post-exec()
3895        a.out.  */
3896     if (breakpoint_event_location_empty_p (b))
3897       {
3898         delete_breakpoint (b);
3899         continue;
3900       }
3901   }
3902 }
3903
3904 int
3905 detach_breakpoints (ptid_t ptid)
3906 {
3907   struct bp_location *bl, **blp_tmp;
3908   int val = 0;
3909   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3910   struct inferior *inf = current_inferior ();
3911
3912   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3913     error (_("Cannot detach breakpoints of inferior_ptid"));
3914
3915   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3916   inferior_ptid = ptid;
3917   ALL_BP_LOCATIONS (bl, blp_tmp)
3918   {
3919     if (bl->pspace != inf->pspace)
3920       continue;
3921
3922     /* This function must physically remove breakpoints locations
3923        from the specified ptid, without modifying the breakpoint
3924        package's state.  Locations of type bp_loc_other are only
3925        maintained at GDB side.  So, there is no need to remove
3926        these bp_loc_other locations.  Moreover, removing these
3927        would modify the breakpoint package's state.  */
3928     if (bl->loc_type == bp_loc_other)
3929       continue;
3930
3931     if (bl->inserted)
3932       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3933   }
3934
3935   return val;
3936 }
3937
3938 /* Remove the breakpoint location BL from the current address space.
3939    Note that this is used to detach breakpoints from a child fork.
3940    When we get here, the child isn't in the inferior list, and neither
3941    do we have objects to represent its address space --- we should
3942    *not* look at bl->pspace->aspace here.  */
3943
3944 static int
3945 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3946 {
3947   int val;
3948
3949   /* BL is never in moribund_locations by our callers.  */
3950   gdb_assert (bl->owner != NULL);
3951
3952   /* The type of none suggests that owner is actually deleted.
3953      This should not ever happen.  */
3954   gdb_assert (bl->owner->type != bp_none);
3955
3956   if (bl->loc_type == bp_loc_software_breakpoint
3957       || bl->loc_type == bp_loc_hardware_breakpoint)
3958     {
3959       /* "Normal" instruction breakpoint: either the standard
3960          trap-instruction bp (bp_breakpoint), or a
3961          bp_hardware_breakpoint.  */
3962
3963       /* First check to see if we have to handle an overlay.  */
3964       if (overlay_debugging == ovly_off
3965           || bl->section == NULL
3966           || !(section_is_overlay (bl->section)))
3967         {
3968           /* No overlay handling: just remove the breakpoint.  */
3969
3970           /* If we're trying to uninsert a memory breakpoint that we
3971              know is set in a dynamic object that is marked
3972              shlib_disabled, then either the dynamic object was
3973              removed with "remove-symbol-file" or with
3974              "nosharedlibrary".  In the former case, we don't know
3975              whether another dynamic object might have loaded over the
3976              breakpoint's address -- the user might well let us know
3977              about it next with add-symbol-file (the whole point of
3978              add-symbol-file is letting the user manually maintain a
3979              list of dynamically loaded objects).  If we have the
3980              breakpoint's shadow memory, that is, this is a software
3981              breakpoint managed by GDB, check whether the breakpoint
3982              is still inserted in memory, to avoid overwriting wrong
3983              code with stale saved shadow contents.  Note that HW
3984              breakpoints don't have shadow memory, as they're
3985              implemented using a mechanism that is not dependent on
3986              being able to modify the target's memory, and as such
3987              they should always be removed.  */
3988           if (bl->shlib_disabled
3989               && bl->target_info.shadow_len != 0
3990               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3991             val = 0;
3992           else
3993             val = bl->owner->ops->remove_location (bl, reason);
3994         }
3995       else
3996         {
3997           /* This breakpoint is in an overlay section.
3998              Did we set a breakpoint at the LMA?  */
3999           if (!overlay_events_enabled)
4000               {
4001                 /* Yes -- overlay event support is not active, so we
4002                    should have set a breakpoint at the LMA.  Remove it.  
4003                 */
4004                 /* Ignore any failures: if the LMA is in ROM, we will
4005                    have already warned when we failed to insert it.  */
4006                 if (bl->loc_type == bp_loc_hardware_breakpoint)
4007                   target_remove_hw_breakpoint (bl->gdbarch,
4008                                                &bl->overlay_target_info);
4009                 else
4010                   target_remove_breakpoint (bl->gdbarch,
4011                                             &bl->overlay_target_info,
4012                                             reason);
4013               }
4014           /* Did we set a breakpoint at the VMA? 
4015              If so, we will have marked the breakpoint 'inserted'.  */
4016           if (bl->inserted)
4017             {
4018               /* Yes -- remove it.  Previously we did not bother to
4019                  remove the breakpoint if the section had been
4020                  unmapped, but let's not rely on that being safe.  We
4021                  don't know what the overlay manager might do.  */
4022
4023               /* However, we should remove *software* breakpoints only
4024                  if the section is still mapped, or else we overwrite
4025                  wrong code with the saved shadow contents.  */
4026               if (bl->loc_type == bp_loc_hardware_breakpoint
4027                   || section_is_mapped (bl->section))
4028                 val = bl->owner->ops->remove_location (bl, reason);
4029               else
4030                 val = 0;
4031             }
4032           else
4033             {
4034               /* No -- not inserted, so no need to remove.  No error.  */
4035               val = 0;
4036             }
4037         }
4038
4039       /* In some cases, we might not be able to remove a breakpoint in
4040          a shared library that has already been removed, but we have
4041          not yet processed the shlib unload event.  Similarly for an
4042          unloaded add-symbol-file object - the user might not yet have
4043          had the chance to remove-symbol-file it.  shlib_disabled will
4044          be set if the library/object has already been removed, but
4045          the breakpoint hasn't been uninserted yet, e.g., after
4046          "nosharedlibrary" or "remove-symbol-file" with breakpoints
4047          always-inserted mode.  */
4048       if (val
4049           && (bl->loc_type == bp_loc_software_breakpoint
4050               && (bl->shlib_disabled
4051                   || solib_name_from_address (bl->pspace, bl->address)
4052                   || shared_objfile_contains_address_p (bl->pspace,
4053                                                         bl->address))))
4054         val = 0;
4055
4056       if (val)
4057         return val;
4058       bl->inserted = (reason == DETACH_BREAKPOINT);
4059     }
4060   else if (bl->loc_type == bp_loc_hardware_watchpoint)
4061     {
4062       gdb_assert (bl->owner->ops != NULL
4063                   && bl->owner->ops->remove_location != NULL);
4064
4065       bl->inserted = (reason == DETACH_BREAKPOINT);
4066       bl->owner->ops->remove_location (bl, reason);
4067
4068       /* Failure to remove any of the hardware watchpoints comes here.  */
4069       if (reason == REMOVE_BREAKPOINT && bl->inserted)
4070         warning (_("Could not remove hardware watchpoint %d."),
4071                  bl->owner->number);
4072     }
4073   else if (bl->owner->type == bp_catchpoint
4074            && breakpoint_enabled (bl->owner)
4075            && !bl->duplicate)
4076     {
4077       gdb_assert (bl->owner->ops != NULL
4078                   && bl->owner->ops->remove_location != NULL);
4079
4080       val = bl->owner->ops->remove_location (bl, reason);
4081       if (val)
4082         return val;
4083
4084       bl->inserted = (reason == DETACH_BREAKPOINT);
4085     }
4086
4087   return 0;
4088 }
4089
4090 static int
4091 remove_breakpoint (struct bp_location *bl)
4092 {
4093   /* BL is never in moribund_locations by our callers.  */
4094   gdb_assert (bl->owner != NULL);
4095
4096   /* The type of none suggests that owner is actually deleted.
4097      This should not ever happen.  */
4098   gdb_assert (bl->owner->type != bp_none);
4099
4100   scoped_restore_current_pspace_and_thread restore_pspace_thread;
4101
4102   switch_to_program_space_and_thread (bl->pspace);
4103
4104   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
4105 }
4106
4107 /* Clear the "inserted" flag in all breakpoints.  */
4108
4109 void
4110 mark_breakpoints_out (void)
4111 {
4112   struct bp_location *bl, **blp_tmp;
4113
4114   ALL_BP_LOCATIONS (bl, blp_tmp)
4115     if (bl->pspace == current_program_space)
4116       bl->inserted = 0;
4117 }
4118
4119 /* Clear the "inserted" flag in all breakpoints and delete any
4120    breakpoints which should go away between runs of the program.
4121
4122    Plus other such housekeeping that has to be done for breakpoints
4123    between runs.
4124
4125    Note: this function gets called at the end of a run (by
4126    generic_mourn_inferior) and when a run begins (by
4127    init_wait_for_inferior).  */
4128
4129
4130
4131 void
4132 breakpoint_init_inferior (enum inf_context context)
4133 {
4134   struct breakpoint *b, *b_tmp;
4135   struct bp_location *bl;
4136   int ix;
4137   struct program_space *pspace = current_program_space;
4138
4139   /* If breakpoint locations are shared across processes, then there's
4140      nothing to do.  */
4141   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4142     return;
4143
4144   mark_breakpoints_out ();
4145
4146   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4147   {
4148     if (b->loc && b->loc->pspace != pspace)
4149       continue;
4150
4151     switch (b->type)
4152       {
4153       case bp_call_dummy:
4154       case bp_longjmp_call_dummy:
4155
4156         /* If the call dummy breakpoint is at the entry point it will
4157            cause problems when the inferior is rerun, so we better get
4158            rid of it.  */
4159
4160       case bp_watchpoint_scope:
4161
4162         /* Also get rid of scope breakpoints.  */
4163
4164       case bp_shlib_event:
4165
4166         /* Also remove solib event breakpoints.  Their addresses may
4167            have changed since the last time we ran the program.
4168            Actually we may now be debugging against different target;
4169            and so the solib backend that installed this breakpoint may
4170            not be used in by the target.  E.g.,
4171
4172            (gdb) file prog-linux
4173            (gdb) run               # native linux target
4174            ...
4175            (gdb) kill
4176            (gdb) file prog-win.exe
4177            (gdb) tar rem :9999     # remote Windows gdbserver.
4178         */
4179
4180       case bp_step_resume:
4181
4182         /* Also remove step-resume breakpoints.  */
4183
4184       case bp_single_step:
4185
4186         /* Also remove single-step breakpoints.  */
4187
4188         delete_breakpoint (b);
4189         break;
4190
4191       case bp_watchpoint:
4192       case bp_hardware_watchpoint:
4193       case bp_read_watchpoint:
4194       case bp_access_watchpoint:
4195         {
4196           struct watchpoint *w = (struct watchpoint *) b;
4197
4198           /* Likewise for watchpoints on local expressions.  */
4199           if (w->exp_valid_block != NULL)
4200             delete_breakpoint (b);
4201           else
4202             {
4203               /* Get rid of existing locations, which are no longer
4204                  valid.  New ones will be created in
4205                  update_watchpoint, when the inferior is restarted.
4206                  The next update_global_location_list call will
4207                  garbage collect them.  */
4208               b->loc = NULL;
4209
4210               if (context == inf_starting)
4211                 {
4212                   /* Reset val field to force reread of starting value in
4213                      insert_breakpoints.  */
4214                   if (w->val)
4215                     value_free (w->val);
4216                   w->val = NULL;
4217                   w->val_valid = 0;
4218                 }
4219             }
4220         }
4221         break;
4222       default:
4223         break;
4224       }
4225   }
4226
4227   /* Get rid of the moribund locations.  */
4228   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4229     decref_bp_location (&bl);
4230   VEC_free (bp_location_p, moribund_locations);
4231 }
4232
4233 /* These functions concern about actual breakpoints inserted in the
4234    target --- to e.g. check if we need to do decr_pc adjustment or if
4235    we need to hop over the bkpt --- so we check for address space
4236    match, not program space.  */
4237
4238 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4239    exists at PC.  It returns ordinary_breakpoint_here if it's an
4240    ordinary breakpoint, or permanent_breakpoint_here if it's a
4241    permanent breakpoint.
4242    - When continuing from a location with an ordinary breakpoint, we
4243      actually single step once before calling insert_breakpoints.
4244    - When continuing from a location with a permanent breakpoint, we
4245      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4246      the target, to advance the PC past the breakpoint.  */
4247
4248 enum breakpoint_here
4249 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4250 {
4251   struct bp_location *bl, **blp_tmp;
4252   int any_breakpoint_here = 0;
4253
4254   ALL_BP_LOCATIONS (bl, blp_tmp)
4255     {
4256       if (bl->loc_type != bp_loc_software_breakpoint
4257           && bl->loc_type != bp_loc_hardware_breakpoint)
4258         continue;
4259
4260       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4261       if ((breakpoint_enabled (bl->owner)
4262            || bl->permanent)
4263           && breakpoint_location_address_match (bl, aspace, pc))
4264         {
4265           if (overlay_debugging 
4266               && section_is_overlay (bl->section)
4267               && !section_is_mapped (bl->section))
4268             continue;           /* unmapped overlay -- can't be a match */
4269           else if (bl->permanent)
4270             return permanent_breakpoint_here;
4271           else
4272             any_breakpoint_here = 1;
4273         }
4274     }
4275
4276   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4277 }
4278
4279 /* See breakpoint.h.  */
4280
4281 int
4282 breakpoint_in_range_p (struct address_space *aspace,
4283                        CORE_ADDR addr, ULONGEST len)
4284 {
4285   struct bp_location *bl, **blp_tmp;
4286
4287   ALL_BP_LOCATIONS (bl, blp_tmp)
4288     {
4289       if (bl->loc_type != bp_loc_software_breakpoint
4290           && bl->loc_type != bp_loc_hardware_breakpoint)
4291         continue;
4292
4293       if ((breakpoint_enabled (bl->owner)
4294            || bl->permanent)
4295           && breakpoint_location_address_range_overlap (bl, aspace,
4296                                                         addr, len))
4297         {
4298           if (overlay_debugging
4299               && section_is_overlay (bl->section)
4300               && !section_is_mapped (bl->section))
4301             {
4302               /* Unmapped overlay -- can't be a match.  */
4303               continue;
4304             }
4305
4306           return 1;
4307         }
4308     }
4309
4310   return 0;
4311 }
4312
4313 /* Return true if there's a moribund breakpoint at PC.  */
4314
4315 int
4316 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4317 {
4318   struct bp_location *loc;
4319   int ix;
4320
4321   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4322     if (breakpoint_location_address_match (loc, aspace, pc))
4323       return 1;
4324
4325   return 0;
4326 }
4327
4328 /* Returns non-zero iff BL is inserted at PC, in address space
4329    ASPACE.  */
4330
4331 static int
4332 bp_location_inserted_here_p (struct bp_location *bl,
4333                              struct address_space *aspace, CORE_ADDR pc)
4334 {
4335   if (bl->inserted
4336       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4337                                    aspace, pc))
4338     {
4339       if (overlay_debugging
4340           && section_is_overlay (bl->section)
4341           && !section_is_mapped (bl->section))
4342         return 0;               /* unmapped overlay -- can't be a match */
4343       else
4344         return 1;
4345     }
4346   return 0;
4347 }
4348
4349 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4350
4351 int
4352 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4353 {
4354   struct bp_location **blp, **blp_tmp = NULL;
4355
4356   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4357     {
4358       struct bp_location *bl = *blp;
4359
4360       if (bl->loc_type != bp_loc_software_breakpoint
4361           && bl->loc_type != bp_loc_hardware_breakpoint)
4362         continue;
4363
4364       if (bp_location_inserted_here_p (bl, aspace, pc))
4365         return 1;
4366     }
4367   return 0;
4368 }
4369
4370 /* This function returns non-zero iff there is a software breakpoint
4371    inserted at PC.  */
4372
4373 int
4374 software_breakpoint_inserted_here_p (struct address_space *aspace,
4375                                      CORE_ADDR pc)
4376 {
4377   struct bp_location **blp, **blp_tmp = NULL;
4378
4379   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4380     {
4381       struct bp_location *bl = *blp;
4382
4383       if (bl->loc_type != bp_loc_software_breakpoint)
4384         continue;
4385
4386       if (bp_location_inserted_here_p (bl, aspace, pc))
4387         return 1;
4388     }
4389
4390   return 0;
4391 }
4392
4393 /* See breakpoint.h.  */
4394
4395 int
4396 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4397                                      CORE_ADDR pc)
4398 {
4399   struct bp_location **blp, **blp_tmp = NULL;
4400
4401   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4402     {
4403       struct bp_location *bl = *blp;
4404
4405       if (bl->loc_type != bp_loc_hardware_breakpoint)
4406         continue;
4407
4408       if (bp_location_inserted_here_p (bl, aspace, pc))
4409         return 1;
4410     }
4411
4412   return 0;
4413 }
4414
4415 int
4416 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4417                                        CORE_ADDR addr, ULONGEST len)
4418 {
4419   struct breakpoint *bpt;
4420
4421   ALL_BREAKPOINTS (bpt)
4422     {
4423       struct bp_location *loc;
4424
4425       if (bpt->type != bp_hardware_watchpoint
4426           && bpt->type != bp_access_watchpoint)
4427         continue;
4428
4429       if (!breakpoint_enabled (bpt))
4430         continue;
4431
4432       for (loc = bpt->loc; loc; loc = loc->next)
4433         if (loc->pspace->aspace == aspace && loc->inserted)
4434           {
4435             CORE_ADDR l, h;
4436
4437             /* Check for intersection.  */
4438             l = std::max<CORE_ADDR> (loc->address, addr);
4439             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4440             if (l < h)
4441               return 1;
4442           }
4443     }
4444   return 0;
4445 }
4446 \f
4447
4448 /* bpstat stuff.  External routines' interfaces are documented
4449    in breakpoint.h.  */
4450
4451 int
4452 is_catchpoint (struct breakpoint *ep)
4453 {
4454   return (ep->type == bp_catchpoint);
4455 }
4456
4457 /* Frees any storage that is part of a bpstat.  Does not walk the
4458    'next' chain.  */
4459
4460 static void
4461 bpstat_free (bpstat bs)
4462 {
4463   if (bs->old_val != NULL)
4464     value_free (bs->old_val);
4465   decref_counted_command_line (&bs->commands);
4466   decref_bp_location (&bs->bp_location_at);
4467   xfree (bs);
4468 }
4469
4470 /* Clear a bpstat so that it says we are not at any breakpoint.
4471    Also free any storage that is part of a bpstat.  */
4472
4473 void
4474 bpstat_clear (bpstat *bsp)
4475 {
4476   bpstat p;
4477   bpstat q;
4478
4479   if (bsp == 0)
4480     return;
4481   p = *bsp;
4482   while (p != NULL)
4483     {
4484       q = p->next;
4485       bpstat_free (p);
4486       p = q;
4487     }
4488   *bsp = NULL;
4489 }
4490
4491 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4492    is part of the bpstat is copied as well.  */
4493
4494 bpstat
4495 bpstat_copy (bpstat bs)
4496 {
4497   bpstat p = NULL;
4498   bpstat tmp;
4499   bpstat retval = NULL;
4500
4501   if (bs == NULL)
4502     return bs;
4503
4504   for (; bs != NULL; bs = bs->next)
4505     {
4506       tmp = (bpstat) xmalloc (sizeof (*tmp));
4507       memcpy (tmp, bs, sizeof (*tmp));
4508       incref_counted_command_line (tmp->commands);
4509       incref_bp_location (tmp->bp_location_at);
4510       if (bs->old_val != NULL)
4511         {
4512           tmp->old_val = value_copy (bs->old_val);
4513           release_value (tmp->old_val);
4514         }
4515
4516       if (p == NULL)
4517         /* This is the first thing in the chain.  */
4518         retval = tmp;
4519       else
4520         p->next = tmp;
4521       p = tmp;
4522     }
4523   p->next = NULL;
4524   return retval;
4525 }
4526
4527 /* Find the bpstat associated with this breakpoint.  */
4528
4529 bpstat
4530 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4531 {
4532   if (bsp == NULL)
4533     return NULL;
4534
4535   for (; bsp != NULL; bsp = bsp->next)
4536     {
4537       if (bsp->breakpoint_at == breakpoint)
4538         return bsp;
4539     }
4540   return NULL;
4541 }
4542
4543 /* See breakpoint.h.  */
4544
4545 int
4546 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4547 {
4548   for (; bsp != NULL; bsp = bsp->next)
4549     {
4550       if (bsp->breakpoint_at == NULL)
4551         {
4552           /* A moribund location can never explain a signal other than
4553              GDB_SIGNAL_TRAP.  */
4554           if (sig == GDB_SIGNAL_TRAP)
4555             return 1;
4556         }
4557       else
4558         {
4559           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4560                                                         sig))
4561             return 1;
4562         }
4563     }
4564
4565   return 0;
4566 }
4567
4568 /* Put in *NUM the breakpoint number of the first breakpoint we are
4569    stopped at.  *BSP upon return is a bpstat which points to the
4570    remaining breakpoints stopped at (but which is not guaranteed to be
4571    good for anything but further calls to bpstat_num).
4572
4573    Return 0 if passed a bpstat which does not indicate any breakpoints.
4574    Return -1 if stopped at a breakpoint that has been deleted since
4575    we set it.
4576    Return 1 otherwise.  */
4577
4578 int
4579 bpstat_num (bpstat *bsp, int *num)
4580 {
4581   struct breakpoint *b;
4582
4583   if ((*bsp) == NULL)
4584     return 0;                   /* No more breakpoint values */
4585
4586   /* We assume we'll never have several bpstats that correspond to a
4587      single breakpoint -- otherwise, this function might return the
4588      same number more than once and this will look ugly.  */
4589   b = (*bsp)->breakpoint_at;
4590   *bsp = (*bsp)->next;
4591   if (b == NULL)
4592     return -1;                  /* breakpoint that's been deleted since */
4593
4594   *num = b->number;             /* We have its number */
4595   return 1;
4596 }
4597
4598 /* See breakpoint.h.  */
4599
4600 void
4601 bpstat_clear_actions (void)
4602 {
4603   struct thread_info *tp;
4604   bpstat bs;
4605
4606   if (ptid_equal (inferior_ptid, null_ptid))
4607     return;
4608
4609   tp = find_thread_ptid (inferior_ptid);
4610   if (tp == NULL)
4611     return;
4612
4613   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4614     {
4615       decref_counted_command_line (&bs->commands);
4616
4617       if (bs->old_val != NULL)
4618         {
4619           value_free (bs->old_val);
4620           bs->old_val = NULL;
4621         }
4622     }
4623 }
4624
4625 /* Called when a command is about to proceed the inferior.  */
4626
4627 static void
4628 breakpoint_about_to_proceed (void)
4629 {
4630   if (!ptid_equal (inferior_ptid, null_ptid))
4631     {
4632       struct thread_info *tp = inferior_thread ();
4633
4634       /* Allow inferior function calls in breakpoint commands to not
4635          interrupt the command list.  When the call finishes
4636          successfully, the inferior will be standing at the same
4637          breakpoint as if nothing happened.  */
4638       if (tp->control.in_infcall)
4639         return;
4640     }
4641
4642   breakpoint_proceeded = 1;
4643 }
4644
4645 /* Stub for cleaning up our state if we error-out of a breakpoint
4646    command.  */
4647 static void
4648 cleanup_executing_breakpoints (void *ignore)
4649 {
4650   executing_breakpoint_commands = 0;
4651 }
4652
4653 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4654    or its equivalent.  */
4655
4656 static int
4657 command_line_is_silent (struct command_line *cmd)
4658 {
4659   return cmd && (strcmp ("silent", cmd->line) == 0);
4660 }
4661
4662 /* Execute all the commands associated with all the breakpoints at
4663    this location.  Any of these commands could cause the process to
4664    proceed beyond this point, etc.  We look out for such changes by
4665    checking the global "breakpoint_proceeded" after each command.
4666
4667    Returns true if a breakpoint command resumed the inferior.  In that
4668    case, it is the caller's responsibility to recall it again with the
4669    bpstat of the current thread.  */
4670
4671 static int
4672 bpstat_do_actions_1 (bpstat *bsp)
4673 {
4674   bpstat bs;
4675   struct cleanup *old_chain;
4676   int again = 0;
4677
4678   /* Avoid endless recursion if a `source' command is contained
4679      in bs->commands.  */
4680   if (executing_breakpoint_commands)
4681     return 0;
4682
4683   executing_breakpoint_commands = 1;
4684   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4685
4686   scoped_restore preventer = prevent_dont_repeat ();
4687
4688   /* This pointer will iterate over the list of bpstat's.  */
4689   bs = *bsp;
4690
4691   breakpoint_proceeded = 0;
4692   for (; bs != NULL; bs = bs->next)
4693     {
4694       struct counted_command_line *ccmd;
4695       struct command_line *cmd;
4696       struct cleanup *this_cmd_tree_chain;
4697
4698       /* Take ownership of the BSP's command tree, if it has one.
4699
4700          The command tree could legitimately contain commands like
4701          'step' and 'next', which call clear_proceed_status, which
4702          frees stop_bpstat's command tree.  To make sure this doesn't
4703          free the tree we're executing out from under us, we need to
4704          take ownership of the tree ourselves.  Since a given bpstat's
4705          commands are only executed once, we don't need to copy it; we
4706          can clear the pointer in the bpstat, and make sure we free
4707          the tree when we're done.  */
4708       ccmd = bs->commands;
4709       bs->commands = NULL;
4710       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4711       cmd = ccmd ? ccmd->commands : NULL;
4712       if (command_line_is_silent (cmd))
4713         {
4714           /* The action has been already done by bpstat_stop_status.  */
4715           cmd = cmd->next;
4716         }
4717
4718       while (cmd != NULL)
4719         {
4720           execute_control_command (cmd);
4721
4722           if (breakpoint_proceeded)
4723             break;
4724           else
4725             cmd = cmd->next;
4726         }
4727
4728       /* We can free this command tree now.  */
4729       do_cleanups (this_cmd_tree_chain);
4730
4731       if (breakpoint_proceeded)
4732         {
4733           if (current_ui->async)
4734             /* If we are in async mode, then the target might be still
4735                running, not stopped at any breakpoint, so nothing for
4736                us to do here -- just return to the event loop.  */
4737             ;
4738           else
4739             /* In sync mode, when execute_control_command returns
4740                we're already standing on the next breakpoint.
4741                Breakpoint commands for that stop were not run, since
4742                execute_command does not run breakpoint commands --
4743                only command_line_handler does, but that one is not
4744                involved in execution of breakpoint commands.  So, we
4745                can now execute breakpoint commands.  It should be
4746                noted that making execute_command do bpstat actions is
4747                not an option -- in this case we'll have recursive
4748                invocation of bpstat for each breakpoint with a
4749                command, and can easily blow up GDB stack.  Instead, we
4750                return true, which will trigger the caller to recall us
4751                with the new stop_bpstat.  */
4752             again = 1;
4753           break;
4754         }
4755     }
4756   do_cleanups (old_chain);
4757   return again;
4758 }
4759
4760 void
4761 bpstat_do_actions (void)
4762 {
4763   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4764
4765   /* Do any commands attached to breakpoint we are stopped at.  */
4766   while (!ptid_equal (inferior_ptid, null_ptid)
4767          && target_has_execution
4768          && !is_exited (inferior_ptid)
4769          && !is_executing (inferior_ptid))
4770     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4771        and only return when it is stopped at the next breakpoint, we
4772        keep doing breakpoint actions until it returns false to
4773        indicate the inferior was not resumed.  */
4774     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4775       break;
4776
4777   discard_cleanups (cleanup_if_error);
4778 }
4779
4780 /* Print out the (old or new) value associated with a watchpoint.  */
4781
4782 static void
4783 watchpoint_value_print (struct value *val, struct ui_file *stream)
4784 {
4785   if (val == NULL)
4786     fprintf_unfiltered (stream, _("<unreadable>"));
4787   else
4788     {
4789       struct value_print_options opts;
4790       get_user_print_options (&opts);
4791       value_print (val, stream, &opts);
4792     }
4793 }
4794
4795 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4796    debugging multiple threads.  */
4797
4798 void
4799 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4800 {
4801   if (uiout->is_mi_like_p ())
4802     return;
4803
4804   uiout->text ("\n");
4805
4806   if (show_thread_that_caused_stop ())
4807     {
4808       const char *name;
4809       struct thread_info *thr = inferior_thread ();
4810
4811       uiout->text ("Thread ");
4812       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4813
4814       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4815       if (name != NULL)
4816         {
4817           uiout->text (" \"");
4818           uiout->field_fmt ("name", "%s", name);
4819           uiout->text ("\"");
4820         }
4821
4822       uiout->text (" hit ");
4823     }
4824 }
4825
4826 /* Generic routine for printing messages indicating why we
4827    stopped.  The behavior of this function depends on the value
4828    'print_it' in the bpstat structure.  Under some circumstances we
4829    may decide not to print anything here and delegate the task to
4830    normal_stop().  */
4831
4832 static enum print_stop_action
4833 print_bp_stop_message (bpstat bs)
4834 {
4835   switch (bs->print_it)
4836     {
4837     case print_it_noop:
4838       /* Nothing should be printed for this bpstat entry.  */
4839       return PRINT_UNKNOWN;
4840       break;
4841
4842     case print_it_done:
4843       /* We still want to print the frame, but we already printed the
4844          relevant messages.  */
4845       return PRINT_SRC_AND_LOC;
4846       break;
4847
4848     case print_it_normal:
4849       {
4850         struct breakpoint *b = bs->breakpoint_at;
4851
4852         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4853            which has since been deleted.  */
4854         if (b == NULL)
4855           return PRINT_UNKNOWN;
4856
4857         /* Normal case.  Call the breakpoint's print_it method.  */
4858         return b->ops->print_it (bs);
4859       }
4860       break;
4861
4862     default:
4863       internal_error (__FILE__, __LINE__,
4864                       _("print_bp_stop_message: unrecognized enum value"));
4865       break;
4866     }
4867 }
4868
4869 /* A helper function that prints a shared library stopped event.  */
4870
4871 static void
4872 print_solib_event (int is_catchpoint)
4873 {
4874   int any_deleted
4875     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4876   int any_added
4877     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4878
4879   if (!is_catchpoint)
4880     {
4881       if (any_added || any_deleted)
4882         current_uiout->text (_("Stopped due to shared library event:\n"));
4883       else
4884         current_uiout->text (_("Stopped due to shared library event (no "
4885                                "libraries added or removed)\n"));
4886     }
4887
4888   if (current_uiout->is_mi_like_p ())
4889     current_uiout->field_string ("reason",
4890                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4891
4892   if (any_deleted)
4893     {
4894       char *name;
4895       int ix;
4896
4897       current_uiout->text (_("  Inferior unloaded "));
4898       ui_out_emit_list list_emitter (current_uiout, "removed");
4899       for (ix = 0;
4900            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4901                         ix, name);
4902            ++ix)
4903         {
4904           if (ix > 0)
4905             current_uiout->text ("    ");
4906           current_uiout->field_string ("library", name);
4907           current_uiout->text ("\n");
4908         }
4909     }
4910
4911   if (any_added)
4912     {
4913       struct so_list *iter;
4914       int ix;
4915
4916       current_uiout->text (_("  Inferior loaded "));
4917       ui_out_emit_list list_emitter (current_uiout, "added");
4918       for (ix = 0;
4919            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4920                         ix, iter);
4921            ++ix)
4922         {
4923           if (ix > 0)
4924             current_uiout->text ("    ");
4925           current_uiout->field_string ("library", iter->so_name);
4926           current_uiout->text ("\n");
4927         }
4928     }
4929 }
4930
4931 /* Print a message indicating what happened.  This is called from
4932    normal_stop().  The input to this routine is the head of the bpstat
4933    list - a list of the eventpoints that caused this stop.  KIND is
4934    the target_waitkind for the stopping event.  This
4935    routine calls the generic print routine for printing a message
4936    about reasons for stopping.  This will print (for example) the
4937    "Breakpoint n," part of the output.  The return value of this
4938    routine is one of:
4939
4940    PRINT_UNKNOWN: Means we printed nothing.
4941    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4942    code to print the location.  An example is 
4943    "Breakpoint 1, " which should be followed by
4944    the location.
4945    PRINT_SRC_ONLY: Means we printed something, but there is no need
4946    to also print the location part of the message.
4947    An example is the catch/throw messages, which
4948    don't require a location appended to the end.
4949    PRINT_NOTHING: We have done some printing and we don't need any 
4950    further info to be printed.  */
4951
4952 enum print_stop_action
4953 bpstat_print (bpstat bs, int kind)
4954 {
4955   enum print_stop_action val;
4956
4957   /* Maybe another breakpoint in the chain caused us to stop.
4958      (Currently all watchpoints go on the bpstat whether hit or not.
4959      That probably could (should) be changed, provided care is taken
4960      with respect to bpstat_explains_signal).  */
4961   for (; bs; bs = bs->next)
4962     {
4963       val = print_bp_stop_message (bs);
4964       if (val == PRINT_SRC_ONLY 
4965           || val == PRINT_SRC_AND_LOC 
4966           || val == PRINT_NOTHING)
4967         return val;
4968     }
4969
4970   /* If we had hit a shared library event breakpoint,
4971      print_bp_stop_message would print out this message.  If we hit an
4972      OS-level shared library event, do the same thing.  */
4973   if (kind == TARGET_WAITKIND_LOADED)
4974     {
4975       print_solib_event (0);
4976       return PRINT_NOTHING;
4977     }
4978
4979   /* We reached the end of the chain, or we got a null BS to start
4980      with and nothing was printed.  */
4981   return PRINT_UNKNOWN;
4982 }
4983
4984 /* Evaluate the expression EXP and return 1 if value is zero.
4985    This returns the inverse of the condition because it is called
4986    from catch_errors which returns 0 if an exception happened, and if an
4987    exception happens we want execution to stop.
4988    The argument is a "struct expression *" that has been cast to a
4989    "void *" to make it pass through catch_errors.  */
4990
4991 static int
4992 breakpoint_cond_eval (void *exp)
4993 {
4994   struct value *mark = value_mark ();
4995   int i = !value_true (evaluate_expression ((struct expression *) exp));
4996
4997   value_free_to_mark (mark);
4998   return i;
4999 }
5000
5001 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
5002
5003 static bpstat
5004 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
5005 {
5006   bpstat bs;
5007
5008   bs = (bpstat) xmalloc (sizeof (*bs));
5009   bs->next = NULL;
5010   **bs_link_pointer = bs;
5011   *bs_link_pointer = &bs->next;
5012   bs->breakpoint_at = bl->owner;
5013   bs->bp_location_at = bl;
5014   incref_bp_location (bl);
5015   /* If the condition is false, etc., don't do the commands.  */
5016   bs->commands = NULL;
5017   bs->old_val = NULL;
5018   bs->print_it = print_it_normal;
5019   return bs;
5020 }
5021 \f
5022 /* The target has stopped with waitstatus WS.  Check if any hardware
5023    watchpoints have triggered, according to the target.  */
5024
5025 int
5026 watchpoints_triggered (struct target_waitstatus *ws)
5027 {
5028   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
5029   CORE_ADDR addr;
5030   struct breakpoint *b;
5031
5032   if (!stopped_by_watchpoint)
5033     {
5034       /* We were not stopped by a watchpoint.  Mark all watchpoints
5035          as not triggered.  */
5036       ALL_BREAKPOINTS (b)
5037         if (is_hardware_watchpoint (b))
5038           {
5039             struct watchpoint *w = (struct watchpoint *) b;
5040
5041             w->watchpoint_triggered = watch_triggered_no;
5042           }
5043
5044       return 0;
5045     }
5046
5047   if (!target_stopped_data_address (&current_target, &addr))
5048     {
5049       /* We were stopped by a watchpoint, but we don't know where.
5050          Mark all watchpoints as unknown.  */
5051       ALL_BREAKPOINTS (b)
5052         if (is_hardware_watchpoint (b))
5053           {
5054             struct watchpoint *w = (struct watchpoint *) b;
5055
5056             w->watchpoint_triggered = watch_triggered_unknown;
5057           }
5058
5059       return 1;
5060     }
5061
5062   /* The target could report the data address.  Mark watchpoints
5063      affected by this data address as triggered, and all others as not
5064      triggered.  */
5065
5066   ALL_BREAKPOINTS (b)
5067     if (is_hardware_watchpoint (b))
5068       {
5069         struct watchpoint *w = (struct watchpoint *) b;
5070         struct bp_location *loc;
5071
5072         w->watchpoint_triggered = watch_triggered_no;
5073         for (loc = b->loc; loc; loc = loc->next)
5074           {
5075             if (is_masked_watchpoint (b))
5076               {
5077                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5078                 CORE_ADDR start = loc->address & w->hw_wp_mask;
5079
5080                 if (newaddr == start)
5081                   {
5082                     w->watchpoint_triggered = watch_triggered_yes;
5083                     break;
5084                   }
5085               }
5086             /* Exact match not required.  Within range is sufficient.  */
5087             else if (target_watchpoint_addr_within_range (&current_target,
5088                                                          addr, loc->address,
5089                                                          loc->length))
5090               {
5091                 w->watchpoint_triggered = watch_triggered_yes;
5092                 break;
5093               }
5094           }
5095       }
5096
5097   return 1;
5098 }
5099
5100 /* Possible return values for watchpoint_check (this can't be an enum
5101    because of check_errors).  */
5102 /* The watchpoint has been deleted.  */
5103 #define WP_DELETED 1
5104 /* The value has changed.  */
5105 #define WP_VALUE_CHANGED 2
5106 /* The value has not changed.  */
5107 #define WP_VALUE_NOT_CHANGED 3
5108 /* Ignore this watchpoint, no matter if the value changed or not.  */
5109 #define WP_IGNORE 4
5110
5111 #define BP_TEMPFLAG 1
5112 #define BP_HARDWAREFLAG 2
5113
5114 /* Evaluate watchpoint condition expression and check if its value
5115    changed.
5116
5117    P should be a pointer to struct bpstat, but is defined as a void *
5118    in order for this function to be usable with catch_errors.  */
5119
5120 static int
5121 watchpoint_check (void *p)
5122 {
5123   bpstat bs = (bpstat) p;
5124   struct watchpoint *b;
5125   struct frame_info *fr;
5126   int within_current_scope;
5127
5128   /* BS is built from an existing struct breakpoint.  */
5129   gdb_assert (bs->breakpoint_at != NULL);
5130   b = (struct watchpoint *) bs->breakpoint_at;
5131
5132   /* If this is a local watchpoint, we only want to check if the
5133      watchpoint frame is in scope if the current thread is the thread
5134      that was used to create the watchpoint.  */
5135   if (!watchpoint_in_thread_scope (b))
5136     return WP_IGNORE;
5137
5138   if (b->exp_valid_block == NULL)
5139     within_current_scope = 1;
5140   else
5141     {
5142       struct frame_info *frame = get_current_frame ();
5143       struct gdbarch *frame_arch = get_frame_arch (frame);
5144       CORE_ADDR frame_pc = get_frame_pc (frame);
5145
5146       /* stack_frame_destroyed_p() returns a non-zero value if we're
5147          still in the function but the stack frame has already been
5148          invalidated.  Since we can't rely on the values of local
5149          variables after the stack has been destroyed, we are treating
5150          the watchpoint in that state as `not changed' without further
5151          checking.  Don't mark watchpoints as changed if the current
5152          frame is in an epilogue - even if they are in some other
5153          frame, our view of the stack is likely to be wrong and
5154          frame_find_by_id could error out.  */
5155       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5156         return WP_IGNORE;
5157
5158       fr = frame_find_by_id (b->watchpoint_frame);
5159       within_current_scope = (fr != NULL);
5160
5161       /* If we've gotten confused in the unwinder, we might have
5162          returned a frame that can't describe this variable.  */
5163       if (within_current_scope)
5164         {
5165           struct symbol *function;
5166
5167           function = get_frame_function (fr);
5168           if (function == NULL
5169               || !contained_in (b->exp_valid_block,
5170                                 SYMBOL_BLOCK_VALUE (function)))
5171             within_current_scope = 0;
5172         }
5173
5174       if (within_current_scope)
5175         /* If we end up stopping, the current frame will get selected
5176            in normal_stop.  So this call to select_frame won't affect
5177            the user.  */
5178         select_frame (fr);
5179     }
5180
5181   if (within_current_scope)
5182     {
5183       /* We use value_{,free_to_}mark because it could be a *long*
5184          time before we return to the command level and call
5185          free_all_values.  We can't call free_all_values because we
5186          might be in the middle of evaluating a function call.  */
5187
5188       int pc = 0;
5189       struct value *mark;
5190       struct value *new_val;
5191
5192       if (is_masked_watchpoint (b))
5193         /* Since we don't know the exact trigger address (from
5194            stopped_data_address), just tell the user we've triggered
5195            a mask watchpoint.  */
5196         return WP_VALUE_CHANGED;
5197
5198       mark = value_mark ();
5199       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
5200
5201       if (b->val_bitsize != 0)
5202         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5203
5204       /* We use value_equal_contents instead of value_equal because
5205          the latter coerces an array to a pointer, thus comparing just
5206          the address of the array instead of its contents.  This is
5207          not what we want.  */
5208       if ((b->val != NULL) != (new_val != NULL)
5209           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5210         {
5211           if (new_val != NULL)
5212             {
5213               release_value (new_val);
5214               value_free_to_mark (mark);
5215             }
5216           bs->old_val = b->val;
5217           b->val = new_val;
5218           b->val_valid = 1;
5219           return WP_VALUE_CHANGED;
5220         }
5221       else
5222         {
5223           /* Nothing changed.  */
5224           value_free_to_mark (mark);
5225           return WP_VALUE_NOT_CHANGED;
5226         }
5227     }
5228   else
5229     {
5230       /* This seems like the only logical thing to do because
5231          if we temporarily ignored the watchpoint, then when
5232          we reenter the block in which it is valid it contains
5233          garbage (in the case of a function, it may have two
5234          garbage values, one before and one after the prologue).
5235          So we can't even detect the first assignment to it and
5236          watch after that (since the garbage may or may not equal
5237          the first value assigned).  */
5238       /* We print all the stop information in
5239          breakpoint_ops->print_it, but in this case, by the time we
5240          call breakpoint_ops->print_it this bp will be deleted
5241          already.  So we have no choice but print the information
5242          here.  */
5243
5244       SWITCH_THRU_ALL_UIS ()
5245         {
5246           struct ui_out *uiout = current_uiout;
5247
5248           if (uiout->is_mi_like_p ())
5249             uiout->field_string
5250               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5251           uiout->text ("\nWatchpoint ");
5252           uiout->field_int ("wpnum", b->number);
5253           uiout->text (" deleted because the program has left the block in\n"
5254                        "which its expression is valid.\n");
5255         }
5256
5257       /* Make sure the watchpoint's commands aren't executed.  */
5258       decref_counted_command_line (&b->commands);
5259       watchpoint_del_at_next_stop (b);
5260
5261       return WP_DELETED;
5262     }
5263 }
5264
5265 /* Return true if it looks like target has stopped due to hitting
5266    breakpoint location BL.  This function does not check if we should
5267    stop, only if BL explains the stop.  */
5268
5269 static int
5270 bpstat_check_location (const struct bp_location *bl,
5271                        struct address_space *aspace, CORE_ADDR bp_addr,
5272                        const struct target_waitstatus *ws)
5273 {
5274   struct breakpoint *b = bl->owner;
5275
5276   /* BL is from an existing breakpoint.  */
5277   gdb_assert (b != NULL);
5278
5279   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5280 }
5281
5282 /* Determine if the watched values have actually changed, and we
5283    should stop.  If not, set BS->stop to 0.  */
5284
5285 static void
5286 bpstat_check_watchpoint (bpstat bs)
5287 {
5288   const struct bp_location *bl;
5289   struct watchpoint *b;
5290
5291   /* BS is built for existing struct breakpoint.  */
5292   bl = bs->bp_location_at;
5293   gdb_assert (bl != NULL);
5294   b = (struct watchpoint *) bs->breakpoint_at;
5295   gdb_assert (b != NULL);
5296
5297     {
5298       int must_check_value = 0;
5299       
5300       if (b->type == bp_watchpoint)
5301         /* For a software watchpoint, we must always check the
5302            watched value.  */
5303         must_check_value = 1;
5304       else if (b->watchpoint_triggered == watch_triggered_yes)
5305         /* We have a hardware watchpoint (read, write, or access)
5306            and the target earlier reported an address watched by
5307            this watchpoint.  */
5308         must_check_value = 1;
5309       else if (b->watchpoint_triggered == watch_triggered_unknown
5310                && b->type == bp_hardware_watchpoint)
5311         /* We were stopped by a hardware watchpoint, but the target could
5312            not report the data address.  We must check the watchpoint's
5313            value.  Access and read watchpoints are out of luck; without
5314            a data address, we can't figure it out.  */
5315         must_check_value = 1;
5316
5317       if (must_check_value)
5318         {
5319           char *message
5320             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5321                           b->number);
5322           struct cleanup *cleanups = make_cleanup (xfree, message);
5323           int e = catch_errors (watchpoint_check, bs, message,
5324                                 RETURN_MASK_ALL);
5325           do_cleanups (cleanups);
5326           switch (e)
5327             {
5328             case WP_DELETED:
5329               /* We've already printed what needs to be printed.  */
5330               bs->print_it = print_it_done;
5331               /* Stop.  */
5332               break;
5333             case WP_IGNORE:
5334               bs->print_it = print_it_noop;
5335               bs->stop = 0;
5336               break;
5337             case WP_VALUE_CHANGED:
5338               if (b->type == bp_read_watchpoint)
5339                 {
5340                   /* There are two cases to consider here:
5341
5342                      1. We're watching the triggered memory for reads.
5343                      In that case, trust the target, and always report
5344                      the watchpoint hit to the user.  Even though
5345                      reads don't cause value changes, the value may
5346                      have changed since the last time it was read, and
5347                      since we're not trapping writes, we will not see
5348                      those, and as such we should ignore our notion of
5349                      old value.
5350
5351                      2. We're watching the triggered memory for both
5352                      reads and writes.  There are two ways this may
5353                      happen:
5354
5355                      2.1. This is a target that can't break on data
5356                      reads only, but can break on accesses (reads or
5357                      writes), such as e.g., x86.  We detect this case
5358                      at the time we try to insert read watchpoints.
5359
5360                      2.2. Otherwise, the target supports read
5361                      watchpoints, but, the user set an access or write
5362                      watchpoint watching the same memory as this read
5363                      watchpoint.
5364
5365                      If we're watching memory writes as well as reads,
5366                      ignore watchpoint hits when we find that the
5367                      value hasn't changed, as reads don't cause
5368                      changes.  This still gives false positives when
5369                      the program writes the same value to memory as
5370                      what there was already in memory (we will confuse
5371                      it for a read), but it's much better than
5372                      nothing.  */
5373
5374                   int other_write_watchpoint = 0;
5375
5376                   if (bl->watchpoint_type == hw_read)
5377                     {
5378                       struct breakpoint *other_b;
5379
5380                       ALL_BREAKPOINTS (other_b)
5381                         if (other_b->type == bp_hardware_watchpoint
5382                             || other_b->type == bp_access_watchpoint)
5383                           {
5384                             struct watchpoint *other_w =
5385                               (struct watchpoint *) other_b;
5386
5387                             if (other_w->watchpoint_triggered
5388                                 == watch_triggered_yes)
5389                               {
5390                                 other_write_watchpoint = 1;
5391                                 break;
5392                               }
5393                           }
5394                     }
5395
5396                   if (other_write_watchpoint
5397                       || bl->watchpoint_type == hw_access)
5398                     {
5399                       /* We're watching the same memory for writes,
5400                          and the value changed since the last time we
5401                          updated it, so this trap must be for a write.
5402                          Ignore it.  */
5403                       bs->print_it = print_it_noop;
5404                       bs->stop = 0;
5405                     }
5406                 }
5407               break;
5408             case WP_VALUE_NOT_CHANGED:
5409               if (b->type == bp_hardware_watchpoint
5410                   || b->type == bp_watchpoint)
5411                 {
5412                   /* Don't stop: write watchpoints shouldn't fire if
5413                      the value hasn't changed.  */
5414                   bs->print_it = print_it_noop;
5415                   bs->stop = 0;
5416                 }
5417               /* Stop.  */
5418               break;
5419             default:
5420               /* Can't happen.  */
5421             case 0:
5422               /* Error from catch_errors.  */
5423               {
5424                 SWITCH_THRU_ALL_UIS ()
5425                   {
5426                     printf_filtered (_("Watchpoint %d deleted.\n"),
5427                                      b->number);
5428                   }
5429                 watchpoint_del_at_next_stop (b);
5430                 /* We've already printed what needs to be printed.  */
5431                 bs->print_it = print_it_done;
5432               }
5433               break;
5434             }
5435         }
5436       else      /* must_check_value == 0 */
5437         {
5438           /* This is a case where some watchpoint(s) triggered, but
5439              not at the address of this watchpoint, or else no
5440              watchpoint triggered after all.  So don't print
5441              anything for this watchpoint.  */
5442           bs->print_it = print_it_noop;
5443           bs->stop = 0;
5444         }
5445     }
5446 }
5447
5448 /* For breakpoints that are currently marked as telling gdb to stop,
5449    check conditions (condition proper, frame, thread and ignore count)
5450    of breakpoint referred to by BS.  If we should not stop for this
5451    breakpoint, set BS->stop to 0.  */
5452
5453 static void
5454 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5455 {
5456   const struct bp_location *bl;
5457   struct breakpoint *b;
5458   int value_is_zero = 0;
5459   struct expression *cond;
5460
5461   gdb_assert (bs->stop);
5462
5463   /* BS is built for existing struct breakpoint.  */
5464   bl = bs->bp_location_at;
5465   gdb_assert (bl != NULL);
5466   b = bs->breakpoint_at;
5467   gdb_assert (b != NULL);
5468
5469   /* Even if the target evaluated the condition on its end and notified GDB, we
5470      need to do so again since GDB does not know if we stopped due to a
5471      breakpoint or a single step breakpoint.  */
5472
5473   if (frame_id_p (b->frame_id)
5474       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5475     {
5476       bs->stop = 0;
5477       return;
5478     }
5479
5480   /* If this is a thread/task-specific breakpoint, don't waste cpu
5481      evaluating the condition if this isn't the specified
5482      thread/task.  */
5483   if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5484       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5485
5486     {
5487       bs->stop = 0;
5488       return;
5489     }
5490
5491   /* Evaluate extension language breakpoints that have a "stop" method
5492      implemented.  */
5493   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5494
5495   if (is_watchpoint (b))
5496     {
5497       struct watchpoint *w = (struct watchpoint *) b;
5498
5499       cond = w->cond_exp.get ();
5500     }
5501   else
5502     cond = bl->cond.get ();
5503
5504   if (cond && b->disposition != disp_del_at_next_stop)
5505     {
5506       int within_current_scope = 1;
5507       struct watchpoint * w;
5508
5509       /* We use value_mark and value_free_to_mark because it could
5510          be a long time before we return to the command level and
5511          call free_all_values.  We can't call free_all_values
5512          because we might be in the middle of evaluating a
5513          function call.  */
5514       struct value *mark = value_mark ();
5515
5516       if (is_watchpoint (b))
5517         w = (struct watchpoint *) b;
5518       else
5519         w = NULL;
5520
5521       /* Need to select the frame, with all that implies so that
5522          the conditions will have the right context.  Because we
5523          use the frame, we will not see an inlined function's
5524          variables when we arrive at a breakpoint at the start
5525          of the inlined function; the current frame will be the
5526          call site.  */
5527       if (w == NULL || w->cond_exp_valid_block == NULL)
5528         select_frame (get_current_frame ());
5529       else
5530         {
5531           struct frame_info *frame;
5532
5533           /* For local watchpoint expressions, which particular
5534              instance of a local is being watched matters, so we
5535              keep track of the frame to evaluate the expression
5536              in.  To evaluate the condition however, it doesn't
5537              really matter which instantiation of the function
5538              where the condition makes sense triggers the
5539              watchpoint.  This allows an expression like "watch
5540              global if q > 10" set in `func', catch writes to
5541              global on all threads that call `func', or catch
5542              writes on all recursive calls of `func' by a single
5543              thread.  We simply always evaluate the condition in
5544              the innermost frame that's executing where it makes
5545              sense to evaluate the condition.  It seems
5546              intuitive.  */
5547           frame = block_innermost_frame (w->cond_exp_valid_block);
5548           if (frame != NULL)
5549             select_frame (frame);
5550           else
5551             within_current_scope = 0;
5552         }
5553       if (within_current_scope)
5554         value_is_zero
5555           = catch_errors (breakpoint_cond_eval, cond,
5556                           "Error in testing breakpoint condition:\n",
5557                           RETURN_MASK_ALL);
5558       else
5559         {
5560           warning (_("Watchpoint condition cannot be tested "
5561                      "in the current scope"));
5562           /* If we failed to set the right context for this
5563              watchpoint, unconditionally report it.  */
5564           value_is_zero = 0;
5565         }
5566       /* FIXME-someday, should give breakpoint #.  */
5567       value_free_to_mark (mark);
5568     }
5569
5570   if (cond && value_is_zero)
5571     {
5572       bs->stop = 0;
5573     }
5574   else if (b->ignore_count > 0)
5575     {
5576       b->ignore_count--;
5577       bs->stop = 0;
5578       /* Increase the hit count even though we don't stop.  */
5579       ++(b->hit_count);
5580       observer_notify_breakpoint_modified (b);
5581     }   
5582 }
5583
5584 /* Returns true if we need to track moribund locations of LOC's type
5585    on the current target.  */
5586
5587 static int
5588 need_moribund_for_location_type (struct bp_location *loc)
5589 {
5590   return ((loc->loc_type == bp_loc_software_breakpoint
5591            && !target_supports_stopped_by_sw_breakpoint ())
5592           || (loc->loc_type == bp_loc_hardware_breakpoint
5593               && !target_supports_stopped_by_hw_breakpoint ()));
5594 }
5595
5596
5597 /* Get a bpstat associated with having just stopped at address
5598    BP_ADDR in thread PTID.
5599
5600    Determine whether we stopped at a breakpoint, etc, or whether we
5601    don't understand this stop.  Result is a chain of bpstat's such
5602    that:
5603
5604    if we don't understand the stop, the result is a null pointer.
5605
5606    if we understand why we stopped, the result is not null.
5607
5608    Each element of the chain refers to a particular breakpoint or
5609    watchpoint at which we have stopped.  (We may have stopped for
5610    several reasons concurrently.)
5611
5612    Each element of the chain has valid next, breakpoint_at,
5613    commands, FIXME??? fields.  */
5614
5615 bpstat
5616 bpstat_stop_status (struct address_space *aspace,
5617                     CORE_ADDR bp_addr, ptid_t ptid,
5618                     const struct target_waitstatus *ws)
5619 {
5620   struct breakpoint *b = NULL;
5621   struct bp_location *bl;
5622   struct bp_location *loc;
5623   /* First item of allocated bpstat's.  */
5624   bpstat bs_head = NULL, *bs_link = &bs_head;
5625   /* Pointer to the last thing in the chain currently.  */
5626   bpstat bs;
5627   int ix;
5628   int need_remove_insert;
5629   int removed_any;
5630
5631   /* First, build the bpstat chain with locations that explain a
5632      target stop, while being careful to not set the target running,
5633      as that may invalidate locations (in particular watchpoint
5634      locations are recreated).  Resuming will happen here with
5635      breakpoint conditions or watchpoint expressions that include
5636      inferior function calls.  */
5637
5638   ALL_BREAKPOINTS (b)
5639     {
5640       if (!breakpoint_enabled (b))
5641         continue;
5642
5643       for (bl = b->loc; bl != NULL; bl = bl->next)
5644         {
5645           /* For hardware watchpoints, we look only at the first
5646              location.  The watchpoint_check function will work on the
5647              entire expression, not the individual locations.  For
5648              read watchpoints, the watchpoints_triggered function has
5649              checked all locations already.  */
5650           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5651             break;
5652
5653           if (!bl->enabled || bl->shlib_disabled)
5654             continue;
5655
5656           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5657             continue;
5658
5659           /* Come here if it's a watchpoint, or if the break address
5660              matches.  */
5661
5662           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5663                                                    explain stop.  */
5664
5665           /* Assume we stop.  Should we find a watchpoint that is not
5666              actually triggered, or if the condition of the breakpoint
5667              evaluates as false, we'll reset 'stop' to 0.  */
5668           bs->stop = 1;
5669           bs->print = 1;
5670
5671           /* If this is a scope breakpoint, mark the associated
5672              watchpoint as triggered so that we will handle the
5673              out-of-scope event.  We'll get to the watchpoint next
5674              iteration.  */
5675           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5676             {
5677               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5678
5679               w->watchpoint_triggered = watch_triggered_yes;
5680             }
5681         }
5682     }
5683
5684   /* Check if a moribund breakpoint explains the stop.  */
5685   if (!target_supports_stopped_by_sw_breakpoint ()
5686       || !target_supports_stopped_by_hw_breakpoint ())
5687     {
5688       for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5689         {
5690           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5691               && need_moribund_for_location_type (loc))
5692             {
5693               bs = bpstat_alloc (loc, &bs_link);
5694               /* For hits of moribund locations, we should just proceed.  */
5695               bs->stop = 0;
5696               bs->print = 0;
5697               bs->print_it = print_it_noop;
5698             }
5699         }
5700     }
5701
5702   /* A bit of special processing for shlib breakpoints.  We need to
5703      process solib loading here, so that the lists of loaded and
5704      unloaded libraries are correct before we handle "catch load" and
5705      "catch unload".  */
5706   for (bs = bs_head; bs != NULL; bs = bs->next)
5707     {
5708       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5709         {
5710           handle_solib_event ();
5711           break;
5712         }
5713     }
5714
5715   /* Now go through the locations that caused the target to stop, and
5716      check whether we're interested in reporting this stop to higher
5717      layers, or whether we should resume the target transparently.  */
5718
5719   removed_any = 0;
5720
5721   for (bs = bs_head; bs != NULL; bs = bs->next)
5722     {
5723       if (!bs->stop)
5724         continue;
5725
5726       b = bs->breakpoint_at;
5727       b->ops->check_status (bs);
5728       if (bs->stop)
5729         {
5730           bpstat_check_breakpoint_conditions (bs, ptid);
5731
5732           if (bs->stop)
5733             {
5734               ++(b->hit_count);
5735               observer_notify_breakpoint_modified (b);
5736
5737               /* We will stop here.  */
5738               if (b->disposition == disp_disable)
5739                 {
5740                   --(b->enable_count);
5741                   if (b->enable_count <= 0)
5742                     b->enable_state = bp_disabled;
5743                   removed_any = 1;
5744                 }
5745               if (b->silent)
5746                 bs->print = 0;
5747               bs->commands = b->commands;
5748               incref_counted_command_line (bs->commands);
5749               if (command_line_is_silent (bs->commands
5750                                           ? bs->commands->commands : NULL))
5751                 bs->print = 0;
5752
5753               b->ops->after_condition_true (bs);
5754             }
5755
5756         }
5757
5758       /* Print nothing for this entry if we don't stop or don't
5759          print.  */
5760       if (!bs->stop || !bs->print)
5761         bs->print_it = print_it_noop;
5762     }
5763
5764   /* If we aren't stopping, the value of some hardware watchpoint may
5765      not have changed, but the intermediate memory locations we are
5766      watching may have.  Don't bother if we're stopping; this will get
5767      done later.  */
5768   need_remove_insert = 0;
5769   if (! bpstat_causes_stop (bs_head))
5770     for (bs = bs_head; bs != NULL; bs = bs->next)
5771       if (!bs->stop
5772           && bs->breakpoint_at
5773           && is_hardware_watchpoint (bs->breakpoint_at))
5774         {
5775           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5776
5777           update_watchpoint (w, 0 /* don't reparse.  */);
5778           need_remove_insert = 1;
5779         }
5780
5781   if (need_remove_insert)
5782     update_global_location_list (UGLL_MAY_INSERT);
5783   else if (removed_any)
5784     update_global_location_list (UGLL_DONT_INSERT);
5785
5786   return bs_head;
5787 }
5788
5789 static void
5790 handle_jit_event (void)
5791 {
5792   struct frame_info *frame;
5793   struct gdbarch *gdbarch;
5794
5795   if (debug_infrun)
5796     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5797
5798   /* Switch terminal for any messages produced by
5799      breakpoint_re_set.  */
5800   target_terminal_ours_for_output ();
5801
5802   frame = get_current_frame ();
5803   gdbarch = get_frame_arch (frame);
5804
5805   jit_event_handler (gdbarch);
5806
5807   target_terminal_inferior ();
5808 }
5809
5810 /* Prepare WHAT final decision for infrun.  */
5811
5812 /* Decide what infrun needs to do with this bpstat.  */
5813
5814 struct bpstat_what
5815 bpstat_what (bpstat bs_head)
5816 {
5817   struct bpstat_what retval;
5818   bpstat bs;
5819
5820   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5821   retval.call_dummy = STOP_NONE;
5822   retval.is_longjmp = 0;
5823
5824   for (bs = bs_head; bs != NULL; bs = bs->next)
5825     {
5826       /* Extract this BS's action.  After processing each BS, we check
5827          if its action overrides all we've seem so far.  */
5828       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5829       enum bptype bptype;
5830
5831       if (bs->breakpoint_at == NULL)
5832         {
5833           /* I suspect this can happen if it was a momentary
5834              breakpoint which has since been deleted.  */
5835           bptype = bp_none;
5836         }
5837       else
5838         bptype = bs->breakpoint_at->type;
5839
5840       switch (bptype)
5841         {
5842         case bp_none:
5843           break;
5844         case bp_breakpoint:
5845         case bp_hardware_breakpoint:
5846         case bp_single_step:
5847         case bp_until:
5848         case bp_finish:
5849         case bp_shlib_event:
5850           if (bs->stop)
5851             {
5852               if (bs->print)
5853                 this_action = BPSTAT_WHAT_STOP_NOISY;
5854               else
5855                 this_action = BPSTAT_WHAT_STOP_SILENT;
5856             }
5857           else
5858             this_action = BPSTAT_WHAT_SINGLE;
5859           break;
5860         case bp_watchpoint:
5861         case bp_hardware_watchpoint:
5862         case bp_read_watchpoint:
5863         case bp_access_watchpoint:
5864           if (bs->stop)
5865             {
5866               if (bs->print)
5867                 this_action = BPSTAT_WHAT_STOP_NOISY;
5868               else
5869                 this_action = BPSTAT_WHAT_STOP_SILENT;
5870             }
5871           else
5872             {
5873               /* There was a watchpoint, but we're not stopping.
5874                  This requires no further action.  */
5875             }
5876           break;
5877         case bp_longjmp:
5878         case bp_longjmp_call_dummy:
5879         case bp_exception:
5880           if (bs->stop)
5881             {
5882               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5883               retval.is_longjmp = bptype != bp_exception;
5884             }
5885           else
5886             this_action = BPSTAT_WHAT_SINGLE;
5887           break;
5888         case bp_longjmp_resume:
5889         case bp_exception_resume:
5890           if (bs->stop)
5891             {
5892               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5893               retval.is_longjmp = bptype == bp_longjmp_resume;
5894             }
5895           else
5896             this_action = BPSTAT_WHAT_SINGLE;
5897           break;
5898         case bp_step_resume:
5899           if (bs->stop)
5900             this_action = BPSTAT_WHAT_STEP_RESUME;
5901           else
5902             {
5903               /* It is for the wrong frame.  */
5904               this_action = BPSTAT_WHAT_SINGLE;
5905             }
5906           break;
5907         case bp_hp_step_resume:
5908           if (bs->stop)
5909             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5910           else
5911             {
5912               /* It is for the wrong frame.  */
5913               this_action = BPSTAT_WHAT_SINGLE;
5914             }
5915           break;
5916         case bp_watchpoint_scope:
5917         case bp_thread_event:
5918         case bp_overlay_event:
5919         case bp_longjmp_master:
5920         case bp_std_terminate_master:
5921         case bp_exception_master:
5922           this_action = BPSTAT_WHAT_SINGLE;
5923           break;
5924         case bp_catchpoint:
5925           if (bs->stop)
5926             {
5927               if (bs->print)
5928                 this_action = BPSTAT_WHAT_STOP_NOISY;
5929               else
5930                 this_action = BPSTAT_WHAT_STOP_SILENT;
5931             }
5932           else
5933             {
5934               /* There was a catchpoint, but we're not stopping.
5935                  This requires no further action.  */
5936             }
5937           break;
5938         case bp_jit_event:
5939           this_action = BPSTAT_WHAT_SINGLE;
5940           break;
5941         case bp_call_dummy:
5942           /* Make sure the action is stop (silent or noisy),
5943              so infrun.c pops the dummy frame.  */
5944           retval.call_dummy = STOP_STACK_DUMMY;
5945           this_action = BPSTAT_WHAT_STOP_SILENT;
5946           break;
5947         case bp_std_terminate:
5948           /* Make sure the action is stop (silent or noisy),
5949              so infrun.c pops the dummy frame.  */
5950           retval.call_dummy = STOP_STD_TERMINATE;
5951           this_action = BPSTAT_WHAT_STOP_SILENT;
5952           break;
5953         case bp_tracepoint:
5954         case bp_fast_tracepoint:
5955         case bp_static_tracepoint:
5956           /* Tracepoint hits should not be reported back to GDB, and
5957              if one got through somehow, it should have been filtered
5958              out already.  */
5959           internal_error (__FILE__, __LINE__,
5960                           _("bpstat_what: tracepoint encountered"));
5961           break;
5962         case bp_gnu_ifunc_resolver:
5963           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5964           this_action = BPSTAT_WHAT_SINGLE;
5965           break;
5966         case bp_gnu_ifunc_resolver_return:
5967           /* The breakpoint will be removed, execution will restart from the
5968              PC of the former breakpoint.  */
5969           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5970           break;
5971
5972         case bp_dprintf:
5973           if (bs->stop)
5974             this_action = BPSTAT_WHAT_STOP_SILENT;
5975           else
5976             this_action = BPSTAT_WHAT_SINGLE;
5977           break;
5978
5979         default:
5980           internal_error (__FILE__, __LINE__,
5981                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5982         }
5983
5984       retval.main_action = std::max (retval.main_action, this_action);
5985     }
5986
5987   return retval;
5988 }
5989
5990 void
5991 bpstat_run_callbacks (bpstat bs_head)
5992 {
5993   bpstat bs;
5994
5995   for (bs = bs_head; bs != NULL; bs = bs->next)
5996     {
5997       struct breakpoint *b = bs->breakpoint_at;
5998
5999       if (b == NULL)
6000         continue;
6001       switch (b->type)
6002         {
6003         case bp_jit_event:
6004           handle_jit_event ();
6005           break;
6006         case bp_gnu_ifunc_resolver:
6007           gnu_ifunc_resolver_stop (b);
6008           break;
6009         case bp_gnu_ifunc_resolver_return:
6010           gnu_ifunc_resolver_return_stop (b);
6011           break;
6012         }
6013     }
6014 }
6015
6016 /* Nonzero if we should step constantly (e.g. watchpoints on machines
6017    without hardware support).  This isn't related to a specific bpstat,
6018    just to things like whether watchpoints are set.  */
6019
6020 int
6021 bpstat_should_step (void)
6022 {
6023   struct breakpoint *b;
6024
6025   ALL_BREAKPOINTS (b)
6026     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
6027       return 1;
6028   return 0;
6029 }
6030
6031 int
6032 bpstat_causes_stop (bpstat bs)
6033 {
6034   for (; bs != NULL; bs = bs->next)
6035     if (bs->stop)
6036       return 1;
6037
6038   return 0;
6039 }
6040
6041 \f
6042
6043 /* Compute a string of spaces suitable to indent the next line
6044    so it starts at the position corresponding to the table column
6045    named COL_NAME in the currently active table of UIOUT.  */
6046
6047 static char *
6048 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6049 {
6050   static char wrap_indent[80];
6051   int i, total_width, width, align;
6052   const char *text;
6053
6054   total_width = 0;
6055   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
6056     {
6057       if (strcmp (text, col_name) == 0)
6058         {
6059           gdb_assert (total_width < sizeof wrap_indent);
6060           memset (wrap_indent, ' ', total_width);
6061           wrap_indent[total_width] = 0;
6062
6063           return wrap_indent;
6064         }
6065
6066       total_width += width + 1;
6067     }
6068
6069   return NULL;
6070 }
6071
6072 /* Determine if the locations of this breakpoint will have their conditions
6073    evaluated by the target, host or a mix of both.  Returns the following:
6074
6075     "host": Host evals condition.
6076     "host or target": Host or Target evals condition.
6077     "target": Target evals condition.
6078 */
6079
6080 static const char *
6081 bp_condition_evaluator (struct breakpoint *b)
6082 {
6083   struct bp_location *bl;
6084   char host_evals = 0;
6085   char target_evals = 0;
6086
6087   if (!b)
6088     return NULL;
6089
6090   if (!is_breakpoint (b))
6091     return NULL;
6092
6093   if (gdb_evaluates_breakpoint_condition_p ()
6094       || !target_supports_evaluation_of_breakpoint_conditions ())
6095     return condition_evaluation_host;
6096
6097   for (bl = b->loc; bl; bl = bl->next)
6098     {
6099       if (bl->cond_bytecode)
6100         target_evals++;
6101       else
6102         host_evals++;
6103     }
6104
6105   if (host_evals && target_evals)
6106     return condition_evaluation_both;
6107   else if (target_evals)
6108     return condition_evaluation_target;
6109   else
6110     return condition_evaluation_host;
6111 }
6112
6113 /* Determine the breakpoint location's condition evaluator.  This is
6114    similar to bp_condition_evaluator, but for locations.  */
6115
6116 static const char *
6117 bp_location_condition_evaluator (struct bp_location *bl)
6118 {
6119   if (bl && !is_breakpoint (bl->owner))
6120     return NULL;
6121
6122   if (gdb_evaluates_breakpoint_condition_p ()
6123       || !target_supports_evaluation_of_breakpoint_conditions ())
6124     return condition_evaluation_host;
6125
6126   if (bl && bl->cond_bytecode)
6127     return condition_evaluation_target;
6128   else
6129     return condition_evaluation_host;
6130 }
6131
6132 /* Print the LOC location out of the list of B->LOC locations.  */
6133
6134 static void
6135 print_breakpoint_location (struct breakpoint *b,
6136                            struct bp_location *loc)
6137 {
6138   struct ui_out *uiout = current_uiout;
6139
6140   scoped_restore_current_program_space restore_pspace;
6141
6142   if (loc != NULL && loc->shlib_disabled)
6143     loc = NULL;
6144
6145   if (loc != NULL)
6146     set_current_program_space (loc->pspace);
6147
6148   if (b->display_canonical)
6149     uiout->field_string ("what", event_location_to_string (b->location.get ()));
6150   else if (loc && loc->symtab)
6151     {
6152       struct symbol *sym 
6153         = find_pc_sect_function (loc->address, loc->section);
6154       if (sym)
6155         {
6156           uiout->text ("in ");
6157           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
6158           uiout->text (" ");
6159           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6160           uiout->text ("at ");
6161         }
6162       uiout->field_string ("file",
6163                            symtab_to_filename_for_display (loc->symtab));
6164       uiout->text (":");
6165
6166       if (uiout->is_mi_like_p ())
6167         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
6168       
6169       uiout->field_int ("line", loc->line_number);
6170     }
6171   else if (loc)
6172     {
6173       string_file stb;
6174
6175       print_address_symbolic (loc->gdbarch, loc->address, &stb,
6176                               demangle, "");
6177       uiout->field_stream ("at", stb);
6178     }
6179   else
6180     {
6181       uiout->field_string ("pending",
6182                            event_location_to_string (b->location.get ()));
6183       /* If extra_string is available, it could be holding a condition
6184          or dprintf arguments.  In either case, make sure it is printed,
6185          too, but only for non-MI streams.  */
6186       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
6187         {
6188           if (b->type == bp_dprintf)
6189             uiout->text (",");
6190           else
6191             uiout->text (" ");
6192           uiout->text (b->extra_string);
6193         }
6194     }
6195
6196   if (loc && is_breakpoint (b)
6197       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6198       && bp_condition_evaluator (b) == condition_evaluation_both)
6199     {
6200       uiout->text (" (");
6201       uiout->field_string ("evaluated-by",
6202                            bp_location_condition_evaluator (loc));
6203       uiout->text (")");
6204     }
6205 }
6206
6207 static const char *
6208 bptype_string (enum bptype type)
6209 {
6210   struct ep_type_description
6211     {
6212       enum bptype type;
6213       const char *description;
6214     };
6215   static struct ep_type_description bptypes[] =
6216   {
6217     {bp_none, "?deleted?"},
6218     {bp_breakpoint, "breakpoint"},
6219     {bp_hardware_breakpoint, "hw breakpoint"},
6220     {bp_single_step, "sw single-step"},
6221     {bp_until, "until"},
6222     {bp_finish, "finish"},
6223     {bp_watchpoint, "watchpoint"},
6224     {bp_hardware_watchpoint, "hw watchpoint"},
6225     {bp_read_watchpoint, "read watchpoint"},
6226     {bp_access_watchpoint, "acc watchpoint"},
6227     {bp_longjmp, "longjmp"},
6228     {bp_longjmp_resume, "longjmp resume"},
6229     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6230     {bp_exception, "exception"},
6231     {bp_exception_resume, "exception resume"},
6232     {bp_step_resume, "step resume"},
6233     {bp_hp_step_resume, "high-priority step resume"},
6234     {bp_watchpoint_scope, "watchpoint scope"},
6235     {bp_call_dummy, "call dummy"},
6236     {bp_std_terminate, "std::terminate"},
6237     {bp_shlib_event, "shlib events"},
6238     {bp_thread_event, "thread events"},
6239     {bp_overlay_event, "overlay events"},
6240     {bp_longjmp_master, "longjmp master"},
6241     {bp_std_terminate_master, "std::terminate master"},
6242     {bp_exception_master, "exception master"},
6243     {bp_catchpoint, "catchpoint"},
6244     {bp_tracepoint, "tracepoint"},
6245     {bp_fast_tracepoint, "fast tracepoint"},
6246     {bp_static_tracepoint, "static tracepoint"},
6247     {bp_dprintf, "dprintf"},
6248     {bp_jit_event, "jit events"},
6249     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6250     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6251   };
6252
6253   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6254       || ((int) type != bptypes[(int) type].type))
6255     internal_error (__FILE__, __LINE__,
6256                     _("bptypes table does not describe type #%d."),
6257                     (int) type);
6258
6259   return bptypes[(int) type].description;
6260 }
6261
6262 /* For MI, output a field named 'thread-groups' with a list as the value.
6263    For CLI, prefix the list with the string 'inf'. */
6264
6265 static void
6266 output_thread_groups (struct ui_out *uiout,
6267                       const char *field_name,
6268                       VEC(int) *inf_num,
6269                       int mi_only)
6270 {
6271   int is_mi = uiout->is_mi_like_p ();
6272   int inf;
6273   int i;
6274
6275   /* For backward compatibility, don't display inferiors in CLI unless
6276      there are several.  Always display them for MI. */
6277   if (!is_mi && mi_only)
6278     return;
6279
6280   ui_out_emit_list list_emitter (uiout, field_name);
6281
6282   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6283     {
6284       if (is_mi)
6285         {
6286           char mi_group[10];
6287
6288           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6289           uiout->field_string (NULL, mi_group);
6290         }
6291       else
6292         {
6293           if (i == 0)
6294             uiout->text (" inf ");
6295           else
6296             uiout->text (", ");
6297         
6298           uiout->text (plongest (inf));
6299         }
6300     }
6301 }
6302
6303 /* Print B to gdb_stdout.  */
6304
6305 static void
6306 print_one_breakpoint_location (struct breakpoint *b,
6307                                struct bp_location *loc,
6308                                int loc_number,
6309                                struct bp_location **last_loc,
6310                                int allflag)
6311 {
6312   struct command_line *l;
6313   static char bpenables[] = "nynny";
6314
6315   struct ui_out *uiout = current_uiout;
6316   int header_of_multiple = 0;
6317   int part_of_multiple = (loc != NULL);
6318   struct value_print_options opts;
6319
6320   get_user_print_options (&opts);
6321
6322   gdb_assert (!loc || loc_number != 0);
6323   /* See comment in print_one_breakpoint concerning treatment of
6324      breakpoints with single disabled location.  */
6325   if (loc == NULL 
6326       && (b->loc != NULL 
6327           && (b->loc->next != NULL || !b->loc->enabled)))
6328     header_of_multiple = 1;
6329   if (loc == NULL)
6330     loc = b->loc;
6331
6332   annotate_record ();
6333
6334   /* 1 */
6335   annotate_field (0);
6336   if (part_of_multiple)
6337     {
6338       char *formatted;
6339       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6340       uiout->field_string ("number", formatted);
6341       xfree (formatted);
6342     }
6343   else
6344     {
6345       uiout->field_int ("number", b->number);
6346     }
6347
6348   /* 2 */
6349   annotate_field (1);
6350   if (part_of_multiple)
6351     uiout->field_skip ("type");
6352   else
6353     uiout->field_string ("type", bptype_string (b->type));
6354
6355   /* 3 */
6356   annotate_field (2);
6357   if (part_of_multiple)
6358     uiout->field_skip ("disp");
6359   else
6360     uiout->field_string ("disp", bpdisp_text (b->disposition));
6361
6362
6363   /* 4 */
6364   annotate_field (3);
6365   if (part_of_multiple)
6366     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6367   else
6368     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6369   uiout->spaces (2);
6370
6371   
6372   /* 5 and 6 */
6373   if (b->ops != NULL && b->ops->print_one != NULL)
6374     {
6375       /* Although the print_one can possibly print all locations,
6376          calling it here is not likely to get any nice result.  So,
6377          make sure there's just one location.  */
6378       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6379       b->ops->print_one (b, last_loc);
6380     }
6381   else
6382     switch (b->type)
6383       {
6384       case bp_none:
6385         internal_error (__FILE__, __LINE__,
6386                         _("print_one_breakpoint: bp_none encountered\n"));
6387         break;
6388
6389       case bp_watchpoint:
6390       case bp_hardware_watchpoint:
6391       case bp_read_watchpoint:
6392       case bp_access_watchpoint:
6393         {
6394           struct watchpoint *w = (struct watchpoint *) b;
6395
6396           /* Field 4, the address, is omitted (which makes the columns
6397              not line up too nicely with the headers, but the effect
6398              is relatively readable).  */
6399           if (opts.addressprint)
6400             uiout->field_skip ("addr");
6401           annotate_field (5);
6402           uiout->field_string ("what", w->exp_string);
6403         }
6404         break;
6405
6406       case bp_breakpoint:
6407       case bp_hardware_breakpoint:
6408       case bp_single_step:
6409       case bp_until:
6410       case bp_finish:
6411       case bp_longjmp:
6412       case bp_longjmp_resume:
6413       case bp_longjmp_call_dummy:
6414       case bp_exception:
6415       case bp_exception_resume:
6416       case bp_step_resume:
6417       case bp_hp_step_resume:
6418       case bp_watchpoint_scope:
6419       case bp_call_dummy:
6420       case bp_std_terminate:
6421       case bp_shlib_event:
6422       case bp_thread_event:
6423       case bp_overlay_event:
6424       case bp_longjmp_master:
6425       case bp_std_terminate_master:
6426       case bp_exception_master:
6427       case bp_tracepoint:
6428       case bp_fast_tracepoint:
6429       case bp_static_tracepoint:
6430       case bp_dprintf:
6431       case bp_jit_event:
6432       case bp_gnu_ifunc_resolver:
6433       case bp_gnu_ifunc_resolver_return:
6434         if (opts.addressprint)
6435           {
6436             annotate_field (4);
6437             if (header_of_multiple)
6438               uiout->field_string ("addr", "<MULTIPLE>");
6439             else if (b->loc == NULL || loc->shlib_disabled)
6440               uiout->field_string ("addr", "<PENDING>");
6441             else
6442               uiout->field_core_addr ("addr",
6443                                       loc->gdbarch, loc->address);
6444           }
6445         annotate_field (5);
6446         if (!header_of_multiple)
6447           print_breakpoint_location (b, loc);
6448         if (b->loc)
6449           *last_loc = b->loc;
6450         break;
6451       }
6452
6453
6454   if (loc != NULL && !header_of_multiple)
6455     {
6456       struct inferior *inf;
6457       VEC(int) *inf_num = NULL;
6458       int mi_only = 1;
6459
6460       ALL_INFERIORS (inf)
6461         {
6462           if (inf->pspace == loc->pspace)
6463             VEC_safe_push (int, inf_num, inf->num);
6464         }
6465
6466         /* For backward compatibility, don't display inferiors in CLI unless
6467            there are several.  Always display for MI. */
6468         if (allflag
6469             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6470                 && (number_of_program_spaces () > 1
6471                     || number_of_inferiors () > 1)
6472                 /* LOC is for existing B, it cannot be in
6473                    moribund_locations and thus having NULL OWNER.  */
6474                 && loc->owner->type != bp_catchpoint))
6475         mi_only = 0;
6476       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6477       VEC_free (int, inf_num);
6478     }
6479
6480   if (!part_of_multiple)
6481     {
6482       if (b->thread != -1)
6483         {
6484           /* FIXME: This seems to be redundant and lost here; see the
6485              "stop only in" line a little further down.  */
6486           uiout->text (" thread ");
6487           uiout->field_int ("thread", b->thread);
6488         }
6489       else if (b->task != 0)
6490         {
6491           uiout->text (" task ");
6492           uiout->field_int ("task", b->task);
6493         }
6494     }
6495
6496   uiout->text ("\n");
6497
6498   if (!part_of_multiple)
6499     b->ops->print_one_detail (b, uiout);
6500
6501   if (part_of_multiple && frame_id_p (b->frame_id))
6502     {
6503       annotate_field (6);
6504       uiout->text ("\tstop only in stack frame at ");
6505       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6506          the frame ID.  */
6507       uiout->field_core_addr ("frame",
6508                               b->gdbarch, b->frame_id.stack_addr);
6509       uiout->text ("\n");
6510     }
6511   
6512   if (!part_of_multiple && b->cond_string)
6513     {
6514       annotate_field (7);
6515       if (is_tracepoint (b))
6516         uiout->text ("\ttrace only if ");
6517       else
6518         uiout->text ("\tstop only if ");
6519       uiout->field_string ("cond", b->cond_string);
6520
6521       /* Print whether the target is doing the breakpoint's condition
6522          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6523       if (is_breakpoint (b)
6524           && breakpoint_condition_evaluation_mode ()
6525           == condition_evaluation_target)
6526         {
6527           uiout->text (" (");
6528           uiout->field_string ("evaluated-by",
6529                                bp_condition_evaluator (b));
6530           uiout->text (" evals)");
6531         }
6532       uiout->text ("\n");
6533     }
6534
6535   if (!part_of_multiple && b->thread != -1)
6536     {
6537       /* FIXME should make an annotation for this.  */
6538       uiout->text ("\tstop only in thread ");
6539       if (uiout->is_mi_like_p ())
6540         uiout->field_int ("thread", b->thread);
6541       else
6542         {
6543           struct thread_info *thr = find_thread_global_id (b->thread);
6544
6545           uiout->field_string ("thread", print_thread_id (thr));
6546         }
6547       uiout->text ("\n");
6548     }
6549   
6550   if (!part_of_multiple)
6551     {
6552       if (b->hit_count)
6553         {
6554           /* FIXME should make an annotation for this.  */
6555           if (is_catchpoint (b))
6556             uiout->text ("\tcatchpoint");
6557           else if (is_tracepoint (b))
6558             uiout->text ("\ttracepoint");
6559           else
6560             uiout->text ("\tbreakpoint");
6561           uiout->text (" already hit ");
6562           uiout->field_int ("times", b->hit_count);
6563           if (b->hit_count == 1)
6564             uiout->text (" time\n");
6565           else
6566             uiout->text (" times\n");
6567         }
6568       else
6569         {
6570           /* Output the count also if it is zero, but only if this is mi.  */
6571           if (uiout->is_mi_like_p ())
6572             uiout->field_int ("times", b->hit_count);
6573         }
6574     }
6575
6576   if (!part_of_multiple && b->ignore_count)
6577     {
6578       annotate_field (8);
6579       uiout->text ("\tignore next ");
6580       uiout->field_int ("ignore", b->ignore_count);
6581       uiout->text (" hits\n");
6582     }
6583
6584   /* Note that an enable count of 1 corresponds to "enable once"
6585      behavior, which is reported by the combination of enablement and
6586      disposition, so we don't need to mention it here.  */
6587   if (!part_of_multiple && b->enable_count > 1)
6588     {
6589       annotate_field (8);
6590       uiout->text ("\tdisable after ");
6591       /* Tweak the wording to clarify that ignore and enable counts
6592          are distinct, and have additive effect.  */
6593       if (b->ignore_count)
6594         uiout->text ("additional ");
6595       else
6596         uiout->text ("next ");
6597       uiout->field_int ("enable", b->enable_count);
6598       uiout->text (" hits\n");
6599     }
6600
6601   if (!part_of_multiple && is_tracepoint (b))
6602     {
6603       struct tracepoint *tp = (struct tracepoint *) b;
6604
6605       if (tp->traceframe_usage)
6606         {
6607           uiout->text ("\ttrace buffer usage ");
6608           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6609           uiout->text (" bytes\n");
6610         }
6611     }
6612
6613   l = b->commands ? b->commands->commands : NULL;
6614   if (!part_of_multiple && l)
6615     {
6616       annotate_field (9);
6617       ui_out_emit_tuple tuple_emitter (uiout, "script");
6618       print_command_lines (uiout, l, 4);
6619     }
6620
6621   if (is_tracepoint (b))
6622     {
6623       struct tracepoint *t = (struct tracepoint *) b;
6624
6625       if (!part_of_multiple && t->pass_count)
6626         {
6627           annotate_field (10);
6628           uiout->text ("\tpass count ");
6629           uiout->field_int ("pass", t->pass_count);
6630           uiout->text (" \n");
6631         }
6632
6633       /* Don't display it when tracepoint or tracepoint location is
6634          pending.   */
6635       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6636         {
6637           annotate_field (11);
6638
6639           if (uiout->is_mi_like_p ())
6640             uiout->field_string ("installed",
6641                                  loc->inserted ? "y" : "n");
6642           else
6643             {
6644               if (loc->inserted)
6645                 uiout->text ("\t");
6646               else
6647                 uiout->text ("\tnot ");
6648               uiout->text ("installed on target\n");
6649             }
6650         }
6651     }
6652
6653   if (uiout->is_mi_like_p () && !part_of_multiple)
6654     {
6655       if (is_watchpoint (b))
6656         {
6657           struct watchpoint *w = (struct watchpoint *) b;
6658
6659           uiout->field_string ("original-location", w->exp_string);
6660         }
6661       else if (b->location != NULL
6662                && event_location_to_string (b->location.get ()) != NULL)
6663         uiout->field_string ("original-location",
6664                              event_location_to_string (b->location.get ()));
6665     }
6666 }
6667
6668 static void
6669 print_one_breakpoint (struct breakpoint *b,
6670                       struct bp_location **last_loc, 
6671                       int allflag)
6672 {
6673   struct ui_out *uiout = current_uiout;
6674
6675   {
6676     ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
6677
6678     print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6679   }
6680
6681   /* If this breakpoint has custom print function,
6682      it's already printed.  Otherwise, print individual
6683      locations, if any.  */
6684   if (b->ops == NULL || b->ops->print_one == NULL)
6685     {
6686       /* If breakpoint has a single location that is disabled, we
6687          print it as if it had several locations, since otherwise it's
6688          hard to represent "breakpoint enabled, location disabled"
6689          situation.
6690
6691          Note that while hardware watchpoints have several locations
6692          internally, that's not a property exposed to user.  */
6693       if (b->loc 
6694           && !is_hardware_watchpoint (b)
6695           && (b->loc->next || !b->loc->enabled))
6696         {
6697           struct bp_location *loc;
6698           int n = 1;
6699
6700           for (loc = b->loc; loc; loc = loc->next, ++n)
6701             {
6702               ui_out_emit_tuple tuple_emitter (uiout, NULL);
6703               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6704             }
6705         }
6706     }
6707 }
6708
6709 static int
6710 breakpoint_address_bits (struct breakpoint *b)
6711 {
6712   int print_address_bits = 0;
6713   struct bp_location *loc;
6714
6715   /* Software watchpoints that aren't watching memory don't have an
6716      address to print.  */
6717   if (is_no_memory_software_watchpoint (b))
6718     return 0;
6719
6720   for (loc = b->loc; loc; loc = loc->next)
6721     {
6722       int addr_bit;
6723
6724       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6725       if (addr_bit > print_address_bits)
6726         print_address_bits = addr_bit;
6727     }
6728
6729   return print_address_bits;
6730 }
6731
6732 struct captured_breakpoint_query_args
6733   {
6734     int bnum;
6735   };
6736
6737 static int
6738 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6739 {
6740   struct captured_breakpoint_query_args *args
6741     = (struct captured_breakpoint_query_args *) data;
6742   struct breakpoint *b;
6743   struct bp_location *dummy_loc = NULL;
6744
6745   ALL_BREAKPOINTS (b)
6746     {
6747       if (args->bnum == b->number)
6748         {
6749           print_one_breakpoint (b, &dummy_loc, 0);
6750           return GDB_RC_OK;
6751         }
6752     }
6753   return GDB_RC_NONE;
6754 }
6755
6756 enum gdb_rc
6757 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6758                       char **error_message)
6759 {
6760   struct captured_breakpoint_query_args args;
6761
6762   args.bnum = bnum;
6763   /* For the moment we don't trust print_one_breakpoint() to not throw
6764      an error.  */
6765   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6766                                  error_message, RETURN_MASK_ALL) < 0)
6767     return GDB_RC_FAIL;
6768   else
6769     return GDB_RC_OK;
6770 }
6771
6772 /* Return true if this breakpoint was set by the user, false if it is
6773    internal or momentary.  */
6774
6775 int
6776 user_breakpoint_p (struct breakpoint *b)
6777 {
6778   return b->number > 0;
6779 }
6780
6781 /* See breakpoint.h.  */
6782
6783 int
6784 pending_breakpoint_p (struct breakpoint *b)
6785 {
6786   return b->loc == NULL;
6787 }
6788
6789 /* Print information on user settable breakpoint (watchpoint, etc)
6790    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6791    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6792    FILTER is non-NULL, call it on each breakpoint and only include the
6793    ones for which it returns non-zero.  Return the total number of
6794    breakpoints listed.  */
6795
6796 static int
6797 breakpoint_1 (char *args, int allflag, 
6798               int (*filter) (const struct breakpoint *))
6799 {
6800   struct breakpoint *b;
6801   struct bp_location *last_loc = NULL;
6802   int nr_printable_breakpoints;
6803   struct value_print_options opts;
6804   int print_address_bits = 0;
6805   int print_type_col_width = 14;
6806   struct ui_out *uiout = current_uiout;
6807
6808   get_user_print_options (&opts);
6809
6810   /* Compute the number of rows in the table, as well as the size
6811      required for address fields.  */
6812   nr_printable_breakpoints = 0;
6813   ALL_BREAKPOINTS (b)
6814     {
6815       /* If we have a filter, only list the breakpoints it accepts.  */
6816       if (filter && !filter (b))
6817         continue;
6818
6819       /* If we have an "args" string, it is a list of breakpoints to 
6820          accept.  Skip the others.  */
6821       if (args != NULL && *args != '\0')
6822         {
6823           if (allflag && parse_and_eval_long (args) != b->number)
6824             continue;
6825           if (!allflag && !number_is_in_list (args, b->number))
6826             continue;
6827         }
6828
6829       if (allflag || user_breakpoint_p (b))
6830         {
6831           int addr_bit, type_len;
6832
6833           addr_bit = breakpoint_address_bits (b);
6834           if (addr_bit > print_address_bits)
6835             print_address_bits = addr_bit;
6836
6837           type_len = strlen (bptype_string (b->type));
6838           if (type_len > print_type_col_width)
6839             print_type_col_width = type_len;
6840
6841           nr_printable_breakpoints++;
6842         }
6843     }
6844
6845   {
6846     ui_out_emit_table table_emitter (uiout,
6847                                      opts.addressprint ? 6 : 5,
6848                                      nr_printable_breakpoints,
6849                                      "BreakpointTable");
6850
6851     if (nr_printable_breakpoints > 0)
6852       annotate_breakpoints_headers ();
6853     if (nr_printable_breakpoints > 0)
6854       annotate_field (0);
6855     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6856     if (nr_printable_breakpoints > 0)
6857       annotate_field (1);
6858     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6859     if (nr_printable_breakpoints > 0)
6860       annotate_field (2);
6861     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6862     if (nr_printable_breakpoints > 0)
6863       annotate_field (3);
6864     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6865     if (opts.addressprint)
6866       {
6867         if (nr_printable_breakpoints > 0)
6868           annotate_field (4);
6869         if (print_address_bits <= 32)
6870           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6871         else
6872           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6873       }
6874     if (nr_printable_breakpoints > 0)
6875       annotate_field (5);
6876     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6877     uiout->table_body ();
6878     if (nr_printable_breakpoints > 0)
6879       annotate_breakpoints_table ();
6880
6881     ALL_BREAKPOINTS (b)
6882       {
6883         QUIT;
6884         /* If we have a filter, only list the breakpoints it accepts.  */
6885         if (filter && !filter (b))
6886           continue;
6887
6888         /* If we have an "args" string, it is a list of breakpoints to 
6889            accept.  Skip the others.  */
6890
6891         if (args != NULL && *args != '\0')
6892           {
6893             if (allflag)        /* maintenance info breakpoint */
6894               {
6895                 if (parse_and_eval_long (args) != b->number)
6896                   continue;
6897               }
6898             else                /* all others */
6899               {
6900                 if (!number_is_in_list (args, b->number))
6901                   continue;
6902               }
6903           }
6904         /* We only print out user settable breakpoints unless the
6905            allflag is set.  */
6906         if (allflag || user_breakpoint_p (b))
6907           print_one_breakpoint (b, &last_loc, allflag);
6908       }
6909   }
6910
6911   if (nr_printable_breakpoints == 0)
6912     {
6913       /* If there's a filter, let the caller decide how to report
6914          empty list.  */
6915       if (!filter)
6916         {
6917           if (args == NULL || *args == '\0')
6918             uiout->message ("No breakpoints or watchpoints.\n");
6919           else
6920             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6921                             args);
6922         }
6923     }
6924   else
6925     {
6926       if (last_loc && !server_command)
6927         set_next_address (last_loc->gdbarch, last_loc->address);
6928     }
6929
6930   /* FIXME?  Should this be moved up so that it is only called when
6931      there have been breakpoints? */
6932   annotate_breakpoints_table_end ();
6933
6934   return nr_printable_breakpoints;
6935 }
6936
6937 /* Display the value of default-collect in a way that is generally
6938    compatible with the breakpoint list.  */
6939
6940 static void
6941 default_collect_info (void)
6942 {
6943   struct ui_out *uiout = current_uiout;
6944
6945   /* If it has no value (which is frequently the case), say nothing; a
6946      message like "No default-collect." gets in user's face when it's
6947      not wanted.  */
6948   if (!*default_collect)
6949     return;
6950
6951   /* The following phrase lines up nicely with per-tracepoint collect
6952      actions.  */
6953   uiout->text ("default collect ");
6954   uiout->field_string ("default-collect", default_collect);
6955   uiout->text (" \n");
6956 }
6957   
6958 static void
6959 info_breakpoints_command (char *args, int from_tty)
6960 {
6961   breakpoint_1 (args, 0, NULL);
6962
6963   default_collect_info ();
6964 }
6965
6966 static void
6967 info_watchpoints_command (char *args, int from_tty)
6968 {
6969   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6970   struct ui_out *uiout = current_uiout;
6971
6972   if (num_printed == 0)
6973     {
6974       if (args == NULL || *args == '\0')
6975         uiout->message ("No watchpoints.\n");
6976       else
6977         uiout->message ("No watchpoint matching '%s'.\n", args);
6978     }
6979 }
6980
6981 static void
6982 maintenance_info_breakpoints (char *args, int from_tty)
6983 {
6984   breakpoint_1 (args, 1, NULL);
6985
6986   default_collect_info ();
6987 }
6988
6989 static int
6990 breakpoint_has_pc (struct breakpoint *b,
6991                    struct program_space *pspace,
6992                    CORE_ADDR pc, struct obj_section *section)
6993 {
6994   struct bp_location *bl = b->loc;
6995
6996   for (; bl; bl = bl->next)
6997     {
6998       if (bl->pspace == pspace
6999           && bl->address == pc
7000           && (!overlay_debugging || bl->section == section))
7001         return 1;         
7002     }
7003   return 0;
7004 }
7005
7006 /* Print a message describing any user-breakpoints set at PC.  This
7007    concerns with logical breakpoints, so we match program spaces, not
7008    address spaces.  */
7009
7010 static void
7011 describe_other_breakpoints (struct gdbarch *gdbarch,
7012                             struct program_space *pspace, CORE_ADDR pc,
7013                             struct obj_section *section, int thread)
7014 {
7015   int others = 0;
7016   struct breakpoint *b;
7017
7018   ALL_BREAKPOINTS (b)
7019     others += (user_breakpoint_p (b)
7020                && breakpoint_has_pc (b, pspace, pc, section));
7021   if (others > 0)
7022     {
7023       if (others == 1)
7024         printf_filtered (_("Note: breakpoint "));
7025       else /* if (others == ???) */
7026         printf_filtered (_("Note: breakpoints "));
7027       ALL_BREAKPOINTS (b)
7028         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
7029           {
7030             others--;
7031             printf_filtered ("%d", b->number);
7032             if (b->thread == -1 && thread != -1)
7033               printf_filtered (" (all threads)");
7034             else if (b->thread != -1)
7035               printf_filtered (" (thread %d)", b->thread);
7036             printf_filtered ("%s%s ",
7037                              ((b->enable_state == bp_disabled
7038                                || b->enable_state == bp_call_disabled)
7039                               ? " (disabled)"
7040                               : ""),
7041                              (others > 1) ? "," 
7042                              : ((others == 1) ? " and" : ""));
7043           }
7044       printf_filtered (_("also set at pc "));
7045       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
7046       printf_filtered (".\n");
7047     }
7048 }
7049 \f
7050
7051 /* Return true iff it is meaningful to use the address member of
7052    BPT locations.  For some breakpoint types, the locations' address members
7053    are irrelevant and it makes no sense to attempt to compare them to other
7054    addresses (or use them for any other purpose either).
7055
7056    More specifically, each of the following breakpoint types will
7057    always have a zero valued location address and we don't want to mark
7058    breakpoints of any of these types to be a duplicate of an actual
7059    breakpoint location at address zero:
7060
7061       bp_watchpoint
7062       bp_catchpoint
7063
7064 */
7065
7066 static int
7067 breakpoint_address_is_meaningful (struct breakpoint *bpt)
7068 {
7069   enum bptype type = bpt->type;
7070
7071   return (type != bp_watchpoint && type != bp_catchpoint);
7072 }
7073
7074 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7075    true if LOC1 and LOC2 represent the same watchpoint location.  */
7076
7077 static int
7078 watchpoint_locations_match (struct bp_location *loc1, 
7079                             struct bp_location *loc2)
7080 {
7081   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7082   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7083
7084   /* Both of them must exist.  */
7085   gdb_assert (w1 != NULL);
7086   gdb_assert (w2 != NULL);
7087
7088   /* If the target can evaluate the condition expression in hardware,
7089      then we we need to insert both watchpoints even if they are at
7090      the same place.  Otherwise the watchpoint will only trigger when
7091      the condition of whichever watchpoint was inserted evaluates to
7092      true, not giving a chance for GDB to check the condition of the
7093      other watchpoint.  */
7094   if ((w1->cond_exp
7095        && target_can_accel_watchpoint_condition (loc1->address, 
7096                                                  loc1->length,
7097                                                  loc1->watchpoint_type,
7098                                                  w1->cond_exp.get ()))
7099       || (w2->cond_exp
7100           && target_can_accel_watchpoint_condition (loc2->address, 
7101                                                     loc2->length,
7102                                                     loc2->watchpoint_type,
7103                                                     w2->cond_exp.get ())))
7104     return 0;
7105
7106   /* Note that this checks the owner's type, not the location's.  In
7107      case the target does not support read watchpoints, but does
7108      support access watchpoints, we'll have bp_read_watchpoint
7109      watchpoints with hw_access locations.  Those should be considered
7110      duplicates of hw_read locations.  The hw_read locations will
7111      become hw_access locations later.  */
7112   return (loc1->owner->type == loc2->owner->type
7113           && loc1->pspace->aspace == loc2->pspace->aspace
7114           && loc1->address == loc2->address
7115           && loc1->length == loc2->length);
7116 }
7117
7118 /* See breakpoint.h.  */
7119
7120 int
7121 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7122                           struct address_space *aspace2, CORE_ADDR addr2)
7123 {
7124   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7125            || aspace1 == aspace2)
7126           && addr1 == addr2);
7127 }
7128
7129 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7130    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
7131    matches ASPACE2.  On targets that have global breakpoints, the address
7132    space doesn't really matter.  */
7133
7134 static int
7135 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7136                                 int len1, struct address_space *aspace2,
7137                                 CORE_ADDR addr2)
7138 {
7139   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7140            || aspace1 == aspace2)
7141           && addr2 >= addr1 && addr2 < addr1 + len1);
7142 }
7143
7144 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
7145    a ranged breakpoint.  In most targets, a match happens only if ASPACE
7146    matches the breakpoint's address space.  On targets that have global
7147    breakpoints, the address space doesn't really matter.  */
7148
7149 static int
7150 breakpoint_location_address_match (struct bp_location *bl,
7151                                    struct address_space *aspace,
7152                                    CORE_ADDR addr)
7153 {
7154   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7155                                     aspace, addr)
7156           || (bl->length
7157               && breakpoint_address_match_range (bl->pspace->aspace,
7158                                                  bl->address, bl->length,
7159                                                  aspace, addr)));
7160 }
7161
7162 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7163    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
7164    match happens only if ASPACE matches the breakpoint's address
7165    space.  On targets that have global breakpoints, the address space
7166    doesn't really matter.  */
7167
7168 static int
7169 breakpoint_location_address_range_overlap (struct bp_location *bl,
7170                                            struct address_space *aspace,
7171                                            CORE_ADDR addr, int len)
7172 {
7173   if (gdbarch_has_global_breakpoints (target_gdbarch ())
7174       || bl->pspace->aspace == aspace)
7175     {
7176       int bl_len = bl->length != 0 ? bl->length : 1;
7177
7178       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7179         return 1;
7180     }
7181   return 0;
7182 }
7183
7184 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7185    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7186    true, otherwise returns false.  */
7187
7188 static int
7189 tracepoint_locations_match (struct bp_location *loc1,
7190                             struct bp_location *loc2)
7191 {
7192   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7193     /* Since tracepoint locations are never duplicated with others', tracepoint
7194        locations at the same address of different tracepoints are regarded as
7195        different locations.  */
7196     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7197   else
7198     return 0;
7199 }
7200
7201 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7202    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7203    represent the same location.  */
7204
7205 static int
7206 breakpoint_locations_match (struct bp_location *loc1, 
7207                             struct bp_location *loc2)
7208 {
7209   int hw_point1, hw_point2;
7210
7211   /* Both of them must not be in moribund_locations.  */
7212   gdb_assert (loc1->owner != NULL);
7213   gdb_assert (loc2->owner != NULL);
7214
7215   hw_point1 = is_hardware_watchpoint (loc1->owner);
7216   hw_point2 = is_hardware_watchpoint (loc2->owner);
7217
7218   if (hw_point1 != hw_point2)
7219     return 0;
7220   else if (hw_point1)
7221     return watchpoint_locations_match (loc1, loc2);
7222   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7223     return tracepoint_locations_match (loc1, loc2);
7224   else
7225     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7226     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7227                                      loc2->pspace->aspace, loc2->address)
7228             && loc1->length == loc2->length);
7229 }
7230
7231 static void
7232 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7233                                int bnum, int have_bnum)
7234 {
7235   /* The longest string possibly returned by hex_string_custom
7236      is 50 chars.  These must be at least that big for safety.  */
7237   char astr1[64];
7238   char astr2[64];
7239
7240   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7241   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7242   if (have_bnum)
7243     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7244              bnum, astr1, astr2);
7245   else
7246     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7247 }
7248
7249 /* Adjust a breakpoint's address to account for architectural
7250    constraints on breakpoint placement.  Return the adjusted address.
7251    Note: Very few targets require this kind of adjustment.  For most
7252    targets, this function is simply the identity function.  */
7253
7254 static CORE_ADDR
7255 adjust_breakpoint_address (struct gdbarch *gdbarch,
7256                            CORE_ADDR bpaddr, enum bptype bptype)
7257 {
7258   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7259     {
7260       /* Very few targets need any kind of breakpoint adjustment.  */
7261       return bpaddr;
7262     }
7263   else if (bptype == bp_watchpoint
7264            || bptype == bp_hardware_watchpoint
7265            || bptype == bp_read_watchpoint
7266            || bptype == bp_access_watchpoint
7267            || bptype == bp_catchpoint)
7268     {
7269       /* Watchpoints and the various bp_catch_* eventpoints should not
7270          have their addresses modified.  */
7271       return bpaddr;
7272     }
7273   else if (bptype == bp_single_step)
7274     {
7275       /* Single-step breakpoints should not have their addresses
7276          modified.  If there's any architectural constrain that
7277          applies to this address, then it should have already been
7278          taken into account when the breakpoint was created in the
7279          first place.  If we didn't do this, stepping through e.g.,
7280          Thumb-2 IT blocks would break.  */
7281       return bpaddr;
7282     }
7283   else
7284     {
7285       CORE_ADDR adjusted_bpaddr;
7286
7287       /* Some targets have architectural constraints on the placement
7288          of breakpoint instructions.  Obtain the adjusted address.  */
7289       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7290
7291       /* An adjusted breakpoint address can significantly alter
7292          a user's expectations.  Print a warning if an adjustment
7293          is required.  */
7294       if (adjusted_bpaddr != bpaddr)
7295         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7296
7297       return adjusted_bpaddr;
7298     }
7299 }
7300
7301 bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7302 {
7303   bp_location *loc = this;
7304
7305   gdb_assert (ops != NULL);
7306
7307   loc->ops = ops;
7308   loc->owner = owner;
7309   loc->cond_bytecode = NULL;
7310   loc->shlib_disabled = 0;
7311   loc->enabled = 1;
7312
7313   switch (owner->type)
7314     {
7315     case bp_breakpoint:
7316     case bp_single_step:
7317     case bp_until:
7318     case bp_finish:
7319     case bp_longjmp:
7320     case bp_longjmp_resume:
7321     case bp_longjmp_call_dummy:
7322     case bp_exception:
7323     case bp_exception_resume:
7324     case bp_step_resume:
7325     case bp_hp_step_resume:
7326     case bp_watchpoint_scope:
7327     case bp_call_dummy:
7328     case bp_std_terminate:
7329     case bp_shlib_event:
7330     case bp_thread_event:
7331     case bp_overlay_event:
7332     case bp_jit_event:
7333     case bp_longjmp_master:
7334     case bp_std_terminate_master:
7335     case bp_exception_master:
7336     case bp_gnu_ifunc_resolver:
7337     case bp_gnu_ifunc_resolver_return:
7338     case bp_dprintf:
7339       loc->loc_type = bp_loc_software_breakpoint;
7340       mark_breakpoint_location_modified (loc);
7341       break;
7342     case bp_hardware_breakpoint:
7343       loc->loc_type = bp_loc_hardware_breakpoint;
7344       mark_breakpoint_location_modified (loc);
7345       break;
7346     case bp_hardware_watchpoint:
7347     case bp_read_watchpoint:
7348     case bp_access_watchpoint:
7349       loc->loc_type = bp_loc_hardware_watchpoint;
7350       break;
7351     case bp_watchpoint:
7352     case bp_catchpoint:
7353     case bp_tracepoint:
7354     case bp_fast_tracepoint:
7355     case bp_static_tracepoint:
7356       loc->loc_type = bp_loc_other;
7357       break;
7358     default:
7359       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7360     }
7361
7362   loc->refc = 1;
7363 }
7364
7365 /* Allocate a struct bp_location.  */
7366
7367 static struct bp_location *
7368 allocate_bp_location (struct breakpoint *bpt)
7369 {
7370   return bpt->ops->allocate_location (bpt);
7371 }
7372
7373 static void
7374 free_bp_location (struct bp_location *loc)
7375 {
7376   loc->ops->dtor (loc);
7377   delete loc;
7378 }
7379
7380 /* Increment reference count.  */
7381
7382 static void
7383 incref_bp_location (struct bp_location *bl)
7384 {
7385   ++bl->refc;
7386 }
7387
7388 /* Decrement reference count.  If the reference count reaches 0,
7389    destroy the bp_location.  Sets *BLP to NULL.  */
7390
7391 static void
7392 decref_bp_location (struct bp_location **blp)
7393 {
7394   gdb_assert ((*blp)->refc > 0);
7395
7396   if (--(*blp)->refc == 0)
7397     free_bp_location (*blp);
7398   *blp = NULL;
7399 }
7400
7401 /* Add breakpoint B at the end of the global breakpoint chain.  */
7402
7403 static breakpoint *
7404 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7405 {
7406   struct breakpoint *b1;
7407   struct breakpoint *result = b.get ();
7408
7409   /* Add this breakpoint to the end of the chain so that a list of
7410      breakpoints will come out in order of increasing numbers.  */
7411
7412   b1 = breakpoint_chain;
7413   if (b1 == 0)
7414     breakpoint_chain = b.release ();
7415   else
7416     {
7417       while (b1->next)
7418         b1 = b1->next;
7419       b1->next = b.release ();
7420     }
7421
7422   return result;
7423 }
7424
7425 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7426
7427 static void
7428 init_raw_breakpoint_without_location (struct breakpoint *b,
7429                                       struct gdbarch *gdbarch,
7430                                       enum bptype bptype,
7431                                       const struct breakpoint_ops *ops)
7432 {
7433   gdb_assert (ops != NULL);
7434
7435   b->ops = ops;
7436   b->type = bptype;
7437   b->gdbarch = gdbarch;
7438   b->language = current_language->la_language;
7439   b->input_radix = input_radix;
7440   b->related_breakpoint = b;
7441 }
7442
7443 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7444    that has type BPTYPE and has no locations as yet.  */
7445
7446 static struct breakpoint *
7447 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7448                                      enum bptype bptype,
7449                                      const struct breakpoint_ops *ops)
7450 {
7451   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7452
7453   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7454   return add_to_breakpoint_chain (std::move (b));
7455 }
7456
7457 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7458    resolutions should be made as the user specified the location explicitly
7459    enough.  */
7460
7461 static void
7462 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7463 {
7464   gdb_assert (loc->owner != NULL);
7465
7466   if (loc->owner->type == bp_breakpoint
7467       || loc->owner->type == bp_hardware_breakpoint
7468       || is_tracepoint (loc->owner))
7469     {
7470       int is_gnu_ifunc;
7471       const char *function_name;
7472       CORE_ADDR func_addr;
7473
7474       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7475                                           &func_addr, NULL, &is_gnu_ifunc);
7476
7477       if (is_gnu_ifunc && !explicit_loc)
7478         {
7479           struct breakpoint *b = loc->owner;
7480
7481           gdb_assert (loc->pspace == current_program_space);
7482           if (gnu_ifunc_resolve_name (function_name,
7483                                       &loc->requested_address))
7484             {
7485               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7486               loc->address = adjust_breakpoint_address (loc->gdbarch,
7487                                                         loc->requested_address,
7488                                                         b->type);
7489             }
7490           else if (b->type == bp_breakpoint && b->loc == loc
7491                    && loc->next == NULL && b->related_breakpoint == b)
7492             {
7493               /* Create only the whole new breakpoint of this type but do not
7494                  mess more complicated breakpoints with multiple locations.  */
7495               b->type = bp_gnu_ifunc_resolver;
7496               /* Remember the resolver's address for use by the return
7497                  breakpoint.  */
7498               loc->related_address = func_addr;
7499             }
7500         }
7501
7502       if (function_name)
7503         loc->function_name = xstrdup (function_name);
7504     }
7505 }
7506
7507 /* Attempt to determine architecture of location identified by SAL.  */
7508 struct gdbarch *
7509 get_sal_arch (struct symtab_and_line sal)
7510 {
7511   if (sal.section)
7512     return get_objfile_arch (sal.section->objfile);
7513   if (sal.symtab)
7514     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7515
7516   return NULL;
7517 }
7518
7519 /* Low level routine for partially initializing a breakpoint of type
7520    BPTYPE.  The newly created breakpoint's address, section, source
7521    file name, and line number are provided by SAL.
7522
7523    It is expected that the caller will complete the initialization of
7524    the newly created breakpoint struct as well as output any status
7525    information regarding the creation of a new breakpoint.  */
7526
7527 static void
7528 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7529                      struct symtab_and_line sal, enum bptype bptype,
7530                      const struct breakpoint_ops *ops)
7531 {
7532   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7533
7534   add_location_to_breakpoint (b, &sal);
7535
7536   if (bptype != bp_catchpoint)
7537     gdb_assert (sal.pspace != NULL);
7538
7539   /* Store the program space that was used to set the breakpoint,
7540      except for ordinary breakpoints, which are independent of the
7541      program space.  */
7542   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7543     b->pspace = sal.pspace;
7544 }
7545
7546 /* set_raw_breakpoint is a low level routine for allocating and
7547    partially initializing a breakpoint of type BPTYPE.  The newly
7548    created breakpoint's address, section, source file name, and line
7549    number are provided by SAL.  The newly created and partially
7550    initialized breakpoint is added to the breakpoint chain and
7551    is also returned as the value of this function.
7552
7553    It is expected that the caller will complete the initialization of
7554    the newly created breakpoint struct as well as output any status
7555    information regarding the creation of a new breakpoint.  In
7556    particular, set_raw_breakpoint does NOT set the breakpoint
7557    number!  Care should be taken to not allow an error to occur
7558    prior to completing the initialization of the breakpoint.  If this
7559    should happen, a bogus breakpoint will be left on the chain.  */
7560
7561 struct breakpoint *
7562 set_raw_breakpoint (struct gdbarch *gdbarch,
7563                     struct symtab_and_line sal, enum bptype bptype,
7564                     const struct breakpoint_ops *ops)
7565 {
7566   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7567
7568   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7569   return add_to_breakpoint_chain (std::move (b));
7570 }
7571
7572 /* Call this routine when stepping and nexting to enable a breakpoint
7573    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7574    initiated the operation.  */
7575
7576 void
7577 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7578 {
7579   struct breakpoint *b, *b_tmp;
7580   int thread = tp->global_num;
7581
7582   /* To avoid having to rescan all objfile symbols at every step,
7583      we maintain a list of continually-inserted but always disabled
7584      longjmp "master" breakpoints.  Here, we simply create momentary
7585      clones of those and enable them for the requested thread.  */
7586   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7587     if (b->pspace == current_program_space
7588         && (b->type == bp_longjmp_master
7589             || b->type == bp_exception_master))
7590       {
7591         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7592         struct breakpoint *clone;
7593
7594         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7595            after their removal.  */
7596         clone = momentary_breakpoint_from_master (b, type,
7597                                                   &momentary_breakpoint_ops, 1);
7598         clone->thread = thread;
7599       }
7600
7601   tp->initiating_frame = frame;
7602 }
7603
7604 /* Delete all longjmp breakpoints from THREAD.  */
7605 void
7606 delete_longjmp_breakpoint (int thread)
7607 {
7608   struct breakpoint *b, *b_tmp;
7609
7610   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7611     if (b->type == bp_longjmp || b->type == bp_exception)
7612       {
7613         if (b->thread == thread)
7614           delete_breakpoint (b);
7615       }
7616 }
7617
7618 void
7619 delete_longjmp_breakpoint_at_next_stop (int thread)
7620 {
7621   struct breakpoint *b, *b_tmp;
7622
7623   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7624     if (b->type == bp_longjmp || b->type == bp_exception)
7625       {
7626         if (b->thread == thread)
7627           b->disposition = disp_del_at_next_stop;
7628       }
7629 }
7630
7631 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7632    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7633    pointer to any of them.  Return NULL if this system cannot place longjmp
7634    breakpoints.  */
7635
7636 struct breakpoint *
7637 set_longjmp_breakpoint_for_call_dummy (void)
7638 {
7639   struct breakpoint *b, *retval = NULL;
7640
7641   ALL_BREAKPOINTS (b)
7642     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7643       {
7644         struct breakpoint *new_b;
7645
7646         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7647                                                   &momentary_breakpoint_ops,
7648                                                   1);
7649         new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7650
7651         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7652
7653         gdb_assert (new_b->related_breakpoint == new_b);
7654         if (retval == NULL)
7655           retval = new_b;
7656         new_b->related_breakpoint = retval;
7657         while (retval->related_breakpoint != new_b->related_breakpoint)
7658           retval = retval->related_breakpoint;
7659         retval->related_breakpoint = new_b;
7660       }
7661
7662   return retval;
7663 }
7664
7665 /* Verify all existing dummy frames and their associated breakpoints for
7666    TP.  Remove those which can no longer be found in the current frame
7667    stack.
7668
7669    You should call this function only at places where it is safe to currently
7670    unwind the whole stack.  Failed stack unwind would discard live dummy
7671    frames.  */
7672
7673 void
7674 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7675 {
7676   struct breakpoint *b, *b_tmp;
7677
7678   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7679     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7680       {
7681         struct breakpoint *dummy_b = b->related_breakpoint;
7682
7683         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7684           dummy_b = dummy_b->related_breakpoint;
7685         if (dummy_b->type != bp_call_dummy
7686             || frame_find_by_id (dummy_b->frame_id) != NULL)
7687           continue;
7688         
7689         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7690
7691         while (b->related_breakpoint != b)
7692           {
7693             if (b_tmp == b->related_breakpoint)
7694               b_tmp = b->related_breakpoint->next;
7695             delete_breakpoint (b->related_breakpoint);
7696           }
7697         delete_breakpoint (b);
7698       }
7699 }
7700
7701 void
7702 enable_overlay_breakpoints (void)
7703 {
7704   struct breakpoint *b;
7705
7706   ALL_BREAKPOINTS (b)
7707     if (b->type == bp_overlay_event)
7708     {
7709       b->enable_state = bp_enabled;
7710       update_global_location_list (UGLL_MAY_INSERT);
7711       overlay_events_enabled = 1;
7712     }
7713 }
7714
7715 void
7716 disable_overlay_breakpoints (void)
7717 {
7718   struct breakpoint *b;
7719
7720   ALL_BREAKPOINTS (b)
7721     if (b->type == bp_overlay_event)
7722     {
7723       b->enable_state = bp_disabled;
7724       update_global_location_list (UGLL_DONT_INSERT);
7725       overlay_events_enabled = 0;
7726     }
7727 }
7728
7729 /* Set an active std::terminate breakpoint for each std::terminate
7730    master breakpoint.  */
7731 void
7732 set_std_terminate_breakpoint (void)
7733 {
7734   struct breakpoint *b, *b_tmp;
7735
7736   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7737     if (b->pspace == current_program_space
7738         && b->type == bp_std_terminate_master)
7739       {
7740         momentary_breakpoint_from_master (b, bp_std_terminate,
7741                                           &momentary_breakpoint_ops, 1);
7742       }
7743 }
7744
7745 /* Delete all the std::terminate breakpoints.  */
7746 void
7747 delete_std_terminate_breakpoint (void)
7748 {
7749   struct breakpoint *b, *b_tmp;
7750
7751   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7752     if (b->type == bp_std_terminate)
7753       delete_breakpoint (b);
7754 }
7755
7756 struct breakpoint *
7757 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7758 {
7759   struct breakpoint *b;
7760
7761   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7762                                   &internal_breakpoint_ops);
7763
7764   b->enable_state = bp_enabled;
7765   /* location has to be used or breakpoint_re_set will delete me.  */
7766   b->location = new_address_location (b->loc->address, NULL, 0);
7767
7768   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7769
7770   return b;
7771 }
7772
7773 struct lang_and_radix
7774   {
7775     enum language lang;
7776     int radix;
7777   };
7778
7779 /* Create a breakpoint for JIT code registration and unregistration.  */
7780
7781 struct breakpoint *
7782 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7783 {
7784   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7785                                      &internal_breakpoint_ops);
7786 }
7787
7788 /* Remove JIT code registration and unregistration breakpoint(s).  */
7789
7790 void
7791 remove_jit_event_breakpoints (void)
7792 {
7793   struct breakpoint *b, *b_tmp;
7794
7795   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7796     if (b->type == bp_jit_event
7797         && b->loc->pspace == current_program_space)
7798       delete_breakpoint (b);
7799 }
7800
7801 void
7802 remove_solib_event_breakpoints (void)
7803 {
7804   struct breakpoint *b, *b_tmp;
7805
7806   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7807     if (b->type == bp_shlib_event
7808         && b->loc->pspace == current_program_space)
7809       delete_breakpoint (b);
7810 }
7811
7812 /* See breakpoint.h.  */
7813
7814 void
7815 remove_solib_event_breakpoints_at_next_stop (void)
7816 {
7817   struct breakpoint *b, *b_tmp;
7818
7819   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7820     if (b->type == bp_shlib_event
7821         && b->loc->pspace == current_program_space)
7822       b->disposition = disp_del_at_next_stop;
7823 }
7824
7825 /* Helper for create_solib_event_breakpoint /
7826    create_and_insert_solib_event_breakpoint.  Allows specifying which
7827    INSERT_MODE to pass through to update_global_location_list.  */
7828
7829 static struct breakpoint *
7830 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7831                                  enum ugll_insert_mode insert_mode)
7832 {
7833   struct breakpoint *b;
7834
7835   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7836                                   &internal_breakpoint_ops);
7837   update_global_location_list_nothrow (insert_mode);
7838   return b;
7839 }
7840
7841 struct breakpoint *
7842 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7843 {
7844   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7845 }
7846
7847 /* See breakpoint.h.  */
7848
7849 struct breakpoint *
7850 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7851 {
7852   struct breakpoint *b;
7853
7854   /* Explicitly tell update_global_location_list to insert
7855      locations.  */
7856   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7857   if (!b->loc->inserted)
7858     {
7859       delete_breakpoint (b);
7860       return NULL;
7861     }
7862   return b;
7863 }
7864
7865 /* Disable any breakpoints that are on code in shared libraries.  Only
7866    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7867
7868 void
7869 disable_breakpoints_in_shlibs (void)
7870 {
7871   struct bp_location *loc, **locp_tmp;
7872
7873   ALL_BP_LOCATIONS (loc, locp_tmp)
7874   {
7875     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7876     struct breakpoint *b = loc->owner;
7877
7878     /* We apply the check to all breakpoints, including disabled for
7879        those with loc->duplicate set.  This is so that when breakpoint
7880        becomes enabled, or the duplicate is removed, gdb will try to
7881        insert all breakpoints.  If we don't set shlib_disabled here,
7882        we'll try to insert those breakpoints and fail.  */
7883     if (((b->type == bp_breakpoint)
7884          || (b->type == bp_jit_event)
7885          || (b->type == bp_hardware_breakpoint)
7886          || (is_tracepoint (b)))
7887         && loc->pspace == current_program_space
7888         && !loc->shlib_disabled
7889         && solib_name_from_address (loc->pspace, loc->address)
7890         )
7891       {
7892         loc->shlib_disabled = 1;
7893       }
7894   }
7895 }
7896
7897 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7898    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7899    disabled ones can just stay disabled.  */
7900
7901 static void
7902 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7903 {
7904   struct bp_location *loc, **locp_tmp;
7905   int disabled_shlib_breaks = 0;
7906
7907   ALL_BP_LOCATIONS (loc, locp_tmp)
7908   {
7909     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7910     struct breakpoint *b = loc->owner;
7911
7912     if (solib->pspace == loc->pspace
7913         && !loc->shlib_disabled
7914         && (((b->type == bp_breakpoint
7915               || b->type == bp_jit_event
7916               || b->type == bp_hardware_breakpoint)
7917              && (loc->loc_type == bp_loc_hardware_breakpoint
7918                  || loc->loc_type == bp_loc_software_breakpoint))
7919             || is_tracepoint (b))
7920         && solib_contains_address_p (solib, loc->address))
7921       {
7922         loc->shlib_disabled = 1;
7923         /* At this point, we cannot rely on remove_breakpoint
7924            succeeding so we must mark the breakpoint as not inserted
7925            to prevent future errors occurring in remove_breakpoints.  */
7926         loc->inserted = 0;
7927
7928         /* This may cause duplicate notifications for the same breakpoint.  */
7929         observer_notify_breakpoint_modified (b);
7930
7931         if (!disabled_shlib_breaks)
7932           {
7933             target_terminal_ours_for_output ();
7934             warning (_("Temporarily disabling breakpoints "
7935                        "for unloaded shared library \"%s\""),
7936                      solib->so_name);
7937           }
7938         disabled_shlib_breaks = 1;
7939       }
7940   }
7941 }
7942
7943 /* Disable any breakpoints and tracepoints in OBJFILE upon
7944    notification of free_objfile.  Only apply to enabled breakpoints,
7945    disabled ones can just stay disabled.  */
7946
7947 static void
7948 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7949 {
7950   struct breakpoint *b;
7951
7952   if (objfile == NULL)
7953     return;
7954
7955   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7956      managed by the user with add-symbol-file/remove-symbol-file.
7957      Similarly to how breakpoints in shared libraries are handled in
7958      response to "nosharedlibrary", mark breakpoints in such modules
7959      shlib_disabled so they end up uninserted on the next global
7960      location list update.  Shared libraries not loaded by the user
7961      aren't handled here -- they're already handled in
7962      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7963      solib_unloaded observer.  We skip objfiles that are not
7964      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7965      main objfile).  */
7966   if ((objfile->flags & OBJF_SHARED) == 0
7967       || (objfile->flags & OBJF_USERLOADED) == 0)
7968     return;
7969
7970   ALL_BREAKPOINTS (b)
7971     {
7972       struct bp_location *loc;
7973       int bp_modified = 0;
7974
7975       if (!is_breakpoint (b) && !is_tracepoint (b))
7976         continue;
7977
7978       for (loc = b->loc; loc != NULL; loc = loc->next)
7979         {
7980           CORE_ADDR loc_addr = loc->address;
7981
7982           if (loc->loc_type != bp_loc_hardware_breakpoint
7983               && loc->loc_type != bp_loc_software_breakpoint)
7984             continue;
7985
7986           if (loc->shlib_disabled != 0)
7987             continue;
7988
7989           if (objfile->pspace != loc->pspace)
7990             continue;
7991
7992           if (loc->loc_type != bp_loc_hardware_breakpoint
7993               && loc->loc_type != bp_loc_software_breakpoint)
7994             continue;
7995
7996           if (is_addr_in_objfile (loc_addr, objfile))
7997             {
7998               loc->shlib_disabled = 1;
7999               /* At this point, we don't know whether the object was
8000                  unmapped from the inferior or not, so leave the
8001                  inserted flag alone.  We'll handle failure to
8002                  uninsert quietly, in case the object was indeed
8003                  unmapped.  */
8004
8005               mark_breakpoint_location_modified (loc);
8006
8007               bp_modified = 1;
8008             }
8009         }
8010
8011       if (bp_modified)
8012         observer_notify_breakpoint_modified (b);
8013     }
8014 }
8015
8016 /* FORK & VFORK catchpoints.  */
8017
8018 /* An instance of this type is used to represent a fork or vfork
8019    catchpoint.  A breakpoint is really of this type iff its ops pointer points
8020    to CATCH_FORK_BREAKPOINT_OPS.  */
8021
8022 struct fork_catchpoint : public breakpoint
8023 {
8024   /* Process id of a child process whose forking triggered this
8025      catchpoint.  This field is only valid immediately after this
8026      catchpoint has triggered.  */
8027   ptid_t forked_inferior_pid;
8028 };
8029
8030 /* Implement the "insert" breakpoint_ops method for fork
8031    catchpoints.  */
8032
8033 static int
8034 insert_catch_fork (struct bp_location *bl)
8035 {
8036   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
8037 }
8038
8039 /* Implement the "remove" breakpoint_ops method for fork
8040    catchpoints.  */
8041
8042 static int
8043 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
8044 {
8045   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
8046 }
8047
8048 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
8049    catchpoints.  */
8050
8051 static int
8052 breakpoint_hit_catch_fork (const struct bp_location *bl,
8053                            struct address_space *aspace, CORE_ADDR bp_addr,
8054                            const struct target_waitstatus *ws)
8055 {
8056   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8057
8058   if (ws->kind != TARGET_WAITKIND_FORKED)
8059     return 0;
8060
8061   c->forked_inferior_pid = ws->value.related_pid;
8062   return 1;
8063 }
8064
8065 /* Implement the "print_it" breakpoint_ops method for fork
8066    catchpoints.  */
8067
8068 static enum print_stop_action
8069 print_it_catch_fork (bpstat bs)
8070 {
8071   struct ui_out *uiout = current_uiout;
8072   struct breakpoint *b = bs->breakpoint_at;
8073   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8074
8075   annotate_catchpoint (b->number);
8076   maybe_print_thread_hit_breakpoint (uiout);
8077   if (b->disposition == disp_del)
8078     uiout->text ("Temporary catchpoint ");
8079   else
8080     uiout->text ("Catchpoint ");
8081   if (uiout->is_mi_like_p ())
8082     {
8083       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
8084       uiout->field_string ("disp", bpdisp_text (b->disposition));
8085     }
8086   uiout->field_int ("bkptno", b->number);
8087   uiout->text (" (forked process ");
8088   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8089   uiout->text ("), ");
8090   return PRINT_SRC_AND_LOC;
8091 }
8092
8093 /* Implement the "print_one" breakpoint_ops method for fork
8094    catchpoints.  */
8095
8096 static void
8097 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8098 {
8099   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8100   struct value_print_options opts;
8101   struct ui_out *uiout = current_uiout;
8102
8103   get_user_print_options (&opts);
8104
8105   /* Field 4, the address, is omitted (which makes the columns not
8106      line up too nicely with the headers, but the effect is relatively
8107      readable).  */
8108   if (opts.addressprint)
8109     uiout->field_skip ("addr");
8110   annotate_field (5);
8111   uiout->text ("fork");
8112   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8113     {
8114       uiout->text (", process ");
8115       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8116       uiout->spaces (1);
8117     }
8118
8119   if (uiout->is_mi_like_p ())
8120     uiout->field_string ("catch-type", "fork");
8121 }
8122
8123 /* Implement the "print_mention" breakpoint_ops method for fork
8124    catchpoints.  */
8125
8126 static void
8127 print_mention_catch_fork (struct breakpoint *b)
8128 {
8129   printf_filtered (_("Catchpoint %d (fork)"), b->number);
8130 }
8131
8132 /* Implement the "print_recreate" breakpoint_ops method for fork
8133    catchpoints.  */
8134
8135 static void
8136 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8137 {
8138   fprintf_unfiltered (fp, "catch fork");
8139   print_recreate_thread (b, fp);
8140 }
8141
8142 /* The breakpoint_ops structure to be used in fork catchpoints.  */
8143
8144 static struct breakpoint_ops catch_fork_breakpoint_ops;
8145
8146 /* Implement the "insert" breakpoint_ops method for vfork
8147    catchpoints.  */
8148
8149 static int
8150 insert_catch_vfork (struct bp_location *bl)
8151 {
8152   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8153 }
8154
8155 /* Implement the "remove" breakpoint_ops method for vfork
8156    catchpoints.  */
8157
8158 static int
8159 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
8160 {
8161   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8162 }
8163
8164 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8165    catchpoints.  */
8166
8167 static int
8168 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8169                             struct address_space *aspace, CORE_ADDR bp_addr,
8170                             const struct target_waitstatus *ws)
8171 {
8172   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8173
8174   if (ws->kind != TARGET_WAITKIND_VFORKED)
8175     return 0;
8176
8177   c->forked_inferior_pid = ws->value.related_pid;
8178   return 1;
8179 }
8180
8181 /* Implement the "print_it" breakpoint_ops method for vfork
8182    catchpoints.  */
8183
8184 static enum print_stop_action
8185 print_it_catch_vfork (bpstat bs)
8186 {
8187   struct ui_out *uiout = current_uiout;
8188   struct breakpoint *b = bs->breakpoint_at;
8189   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8190
8191   annotate_catchpoint (b->number);
8192   maybe_print_thread_hit_breakpoint (uiout);
8193   if (b->disposition == disp_del)
8194     uiout->text ("Temporary catchpoint ");
8195   else
8196     uiout->text ("Catchpoint ");
8197   if (uiout->is_mi_like_p ())
8198     {
8199       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
8200       uiout->field_string ("disp", bpdisp_text (b->disposition));
8201     }
8202   uiout->field_int ("bkptno", b->number);
8203   uiout->text (" (vforked process ");
8204   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8205   uiout->text ("), ");
8206   return PRINT_SRC_AND_LOC;
8207 }
8208
8209 /* Implement the "print_one" breakpoint_ops method for vfork
8210    catchpoints.  */
8211
8212 static void
8213 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8214 {
8215   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8216   struct value_print_options opts;
8217   struct ui_out *uiout = current_uiout;
8218
8219   get_user_print_options (&opts);
8220   /* Field 4, the address, is omitted (which makes the columns not
8221      line up too nicely with the headers, but the effect is relatively
8222      readable).  */
8223   if (opts.addressprint)
8224     uiout->field_skip ("addr");
8225   annotate_field (5);
8226   uiout->text ("vfork");
8227   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8228     {
8229       uiout->text (", process ");
8230       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8231       uiout->spaces (1);
8232     }
8233
8234   if (uiout->is_mi_like_p ())
8235     uiout->field_string ("catch-type", "vfork");
8236 }
8237
8238 /* Implement the "print_mention" breakpoint_ops method for vfork
8239    catchpoints.  */
8240
8241 static void
8242 print_mention_catch_vfork (struct breakpoint *b)
8243 {
8244   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8245 }
8246
8247 /* Implement the "print_recreate" breakpoint_ops method for vfork
8248    catchpoints.  */
8249
8250 static void
8251 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8252 {
8253   fprintf_unfiltered (fp, "catch vfork");
8254   print_recreate_thread (b, fp);
8255 }
8256
8257 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8258
8259 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8260
8261 /* An instance of this type is used to represent an solib catchpoint.
8262    A breakpoint is really of this type iff its ops pointer points to
8263    CATCH_SOLIB_BREAKPOINT_OPS.  */
8264
8265 struct solib_catchpoint : public breakpoint
8266 {
8267   ~solib_catchpoint () override;
8268
8269   /* True for "catch load", false for "catch unload".  */
8270   unsigned char is_load;
8271
8272   /* Regular expression to match, if any.  COMPILED is only valid when
8273      REGEX is non-NULL.  */
8274   char *regex;
8275   std::unique_ptr<compiled_regex> compiled;
8276 };
8277
8278 solib_catchpoint::~solib_catchpoint ()
8279 {
8280   xfree (this->regex);
8281 }
8282
8283 static int
8284 insert_catch_solib (struct bp_location *ignore)
8285 {
8286   return 0;
8287 }
8288
8289 static int
8290 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8291 {
8292   return 0;
8293 }
8294
8295 static int
8296 breakpoint_hit_catch_solib (const struct bp_location *bl,
8297                             struct address_space *aspace,
8298                             CORE_ADDR bp_addr,
8299                             const struct target_waitstatus *ws)
8300 {
8301   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8302   struct breakpoint *other;
8303
8304   if (ws->kind == TARGET_WAITKIND_LOADED)
8305     return 1;
8306
8307   ALL_BREAKPOINTS (other)
8308   {
8309     struct bp_location *other_bl;
8310
8311     if (other == bl->owner)
8312       continue;
8313
8314     if (other->type != bp_shlib_event)
8315       continue;
8316
8317     if (self->pspace != NULL && other->pspace != self->pspace)
8318       continue;
8319
8320     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8321       {
8322         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8323           return 1;
8324       }
8325   }
8326
8327   return 0;
8328 }
8329
8330 static void
8331 check_status_catch_solib (struct bpstats *bs)
8332 {
8333   struct solib_catchpoint *self
8334     = (struct solib_catchpoint *) bs->breakpoint_at;
8335   int ix;
8336
8337   if (self->is_load)
8338     {
8339       struct so_list *iter;
8340
8341       for (ix = 0;
8342            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8343                         ix, iter);
8344            ++ix)
8345         {
8346           if (!self->regex
8347               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
8348             return;
8349         }
8350     }
8351   else
8352     {
8353       char *iter;
8354
8355       for (ix = 0;
8356            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8357                         ix, iter);
8358            ++ix)
8359         {
8360           if (!self->regex
8361               || self->compiled->exec (iter, 0, NULL, 0) == 0)
8362             return;
8363         }
8364     }
8365
8366   bs->stop = 0;
8367   bs->print_it = print_it_noop;
8368 }
8369
8370 static enum print_stop_action
8371 print_it_catch_solib (bpstat bs)
8372 {
8373   struct breakpoint *b = bs->breakpoint_at;
8374   struct ui_out *uiout = current_uiout;
8375
8376   annotate_catchpoint (b->number);
8377   maybe_print_thread_hit_breakpoint (uiout);
8378   if (b->disposition == disp_del)
8379     uiout->text ("Temporary catchpoint ");
8380   else
8381     uiout->text ("Catchpoint ");
8382   uiout->field_int ("bkptno", b->number);
8383   uiout->text ("\n");
8384   if (uiout->is_mi_like_p ())
8385     uiout->field_string ("disp", bpdisp_text (b->disposition));
8386   print_solib_event (1);
8387   return PRINT_SRC_AND_LOC;
8388 }
8389
8390 static void
8391 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8392 {
8393   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8394   struct value_print_options opts;
8395   struct ui_out *uiout = current_uiout;
8396   char *msg;
8397
8398   get_user_print_options (&opts);
8399   /* Field 4, the address, is omitted (which makes the columns not
8400      line up too nicely with the headers, but the effect is relatively
8401      readable).  */
8402   if (opts.addressprint)
8403     {
8404       annotate_field (4);
8405       uiout->field_skip ("addr");
8406     }
8407
8408   annotate_field (5);
8409   if (self->is_load)
8410     {
8411       if (self->regex)
8412         msg = xstrprintf (_("load of library matching %s"), self->regex);
8413       else
8414         msg = xstrdup (_("load of library"));
8415     }
8416   else
8417     {
8418       if (self->regex)
8419         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8420       else
8421         msg = xstrdup (_("unload of library"));
8422     }
8423   uiout->field_string ("what", msg);
8424   xfree (msg);
8425
8426   if (uiout->is_mi_like_p ())
8427     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8428 }
8429
8430 static void
8431 print_mention_catch_solib (struct breakpoint *b)
8432 {
8433   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8434
8435   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8436                    self->is_load ? "load" : "unload");
8437 }
8438
8439 static void
8440 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8441 {
8442   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8443
8444   fprintf_unfiltered (fp, "%s %s",
8445                       b->disposition == disp_del ? "tcatch" : "catch",
8446                       self->is_load ? "load" : "unload");
8447   if (self->regex)
8448     fprintf_unfiltered (fp, " %s", self->regex);
8449   fprintf_unfiltered (fp, "\n");
8450 }
8451
8452 static struct breakpoint_ops catch_solib_breakpoint_ops;
8453
8454 /* Shared helper function (MI and CLI) for creating and installing
8455    a shared object event catchpoint.  If IS_LOAD is non-zero then
8456    the events to be caught are load events, otherwise they are
8457    unload events.  If IS_TEMP is non-zero the catchpoint is a
8458    temporary one.  If ENABLED is non-zero the catchpoint is
8459    created in an enabled state.  */
8460
8461 void
8462 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8463 {
8464   struct gdbarch *gdbarch = get_current_arch ();
8465
8466   if (!arg)
8467     arg = "";
8468   arg = skip_spaces_const (arg);
8469
8470   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8471
8472   if (*arg != '\0')
8473     {
8474       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8475                                              _("Invalid regexp")));
8476       c->regex = xstrdup (arg);
8477     }
8478
8479   c->is_load = is_load;
8480   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8481                    &catch_solib_breakpoint_ops);
8482
8483   c->enable_state = enabled ? bp_enabled : bp_disabled;
8484
8485   install_breakpoint (0, std::move (c), 1);
8486 }
8487
8488 /* A helper function that does all the work for "catch load" and
8489    "catch unload".  */
8490
8491 static void
8492 catch_load_or_unload (char *arg, int from_tty, int is_load,
8493                       struct cmd_list_element *command)
8494 {
8495   int tempflag;
8496   const int enabled = 1;
8497
8498   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8499
8500   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8501 }
8502
8503 static void
8504 catch_load_command_1 (char *arg, int from_tty,
8505                       struct cmd_list_element *command)
8506 {
8507   catch_load_or_unload (arg, from_tty, 1, command);
8508 }
8509
8510 static void
8511 catch_unload_command_1 (char *arg, int from_tty,
8512                         struct cmd_list_element *command)
8513 {
8514   catch_load_or_unload (arg, from_tty, 0, command);
8515 }
8516
8517 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8518    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8519    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8520    the breakpoint_ops structure associated to the catchpoint.  */
8521
8522 void
8523 init_catchpoint (struct breakpoint *b,
8524                  struct gdbarch *gdbarch, int tempflag,
8525                  const char *cond_string,
8526                  const struct breakpoint_ops *ops)
8527 {
8528   struct symtab_and_line sal;
8529
8530   init_sal (&sal);
8531   sal.pspace = current_program_space;
8532
8533   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8534
8535   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8536   b->disposition = tempflag ? disp_del : disp_donttouch;
8537 }
8538
8539 void
8540 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8541 {
8542   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8543   set_breakpoint_number (internal, b);
8544   if (is_tracepoint (b))
8545     set_tracepoint_count (breakpoint_count);
8546   if (!internal)
8547     mention (b);
8548   observer_notify_breakpoint_created (b);
8549
8550   if (update_gll)
8551     update_global_location_list (UGLL_MAY_INSERT);
8552 }
8553
8554 static void
8555 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8556                                     int tempflag, const char *cond_string,
8557                                     const struct breakpoint_ops *ops)
8558 {
8559   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8560
8561   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8562
8563   c->forked_inferior_pid = null_ptid;
8564
8565   install_breakpoint (0, std::move (c), 1);
8566 }
8567
8568 /* Exec catchpoints.  */
8569
8570 /* An instance of this type is used to represent an exec catchpoint.
8571    A breakpoint is really of this type iff its ops pointer points to
8572    CATCH_EXEC_BREAKPOINT_OPS.  */
8573
8574 struct exec_catchpoint : public breakpoint
8575 {
8576   ~exec_catchpoint () override;
8577
8578   /* Filename of a program whose exec triggered this catchpoint.
8579      This field is only valid immediately after this catchpoint has
8580      triggered.  */
8581   char *exec_pathname;
8582 };
8583
8584 /* Exec catchpoint destructor.  */
8585
8586 exec_catchpoint::~exec_catchpoint ()
8587 {
8588   xfree (this->exec_pathname);
8589 }
8590
8591 static int
8592 insert_catch_exec (struct bp_location *bl)
8593 {
8594   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8595 }
8596
8597 static int
8598 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8599 {
8600   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8601 }
8602
8603 static int
8604 breakpoint_hit_catch_exec (const struct bp_location *bl,
8605                            struct address_space *aspace, CORE_ADDR bp_addr,
8606                            const struct target_waitstatus *ws)
8607 {
8608   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8609
8610   if (ws->kind != TARGET_WAITKIND_EXECD)
8611     return 0;
8612
8613   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8614   return 1;
8615 }
8616
8617 static enum print_stop_action
8618 print_it_catch_exec (bpstat bs)
8619 {
8620   struct ui_out *uiout = current_uiout;
8621   struct breakpoint *b = bs->breakpoint_at;
8622   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8623
8624   annotate_catchpoint (b->number);
8625   maybe_print_thread_hit_breakpoint (uiout);
8626   if (b->disposition == disp_del)
8627     uiout->text ("Temporary catchpoint ");
8628   else
8629     uiout->text ("Catchpoint ");
8630   if (uiout->is_mi_like_p ())
8631     {
8632       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8633       uiout->field_string ("disp", bpdisp_text (b->disposition));
8634     }
8635   uiout->field_int ("bkptno", b->number);
8636   uiout->text (" (exec'd ");
8637   uiout->field_string ("new-exec", c->exec_pathname);
8638   uiout->text ("), ");
8639
8640   return PRINT_SRC_AND_LOC;
8641 }
8642
8643 static void
8644 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8645 {
8646   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8647   struct value_print_options opts;
8648   struct ui_out *uiout = current_uiout;
8649
8650   get_user_print_options (&opts);
8651
8652   /* Field 4, the address, is omitted (which makes the columns
8653      not line up too nicely with the headers, but the effect
8654      is relatively readable).  */
8655   if (opts.addressprint)
8656     uiout->field_skip ("addr");
8657   annotate_field (5);
8658   uiout->text ("exec");
8659   if (c->exec_pathname != NULL)
8660     {
8661       uiout->text (", program \"");
8662       uiout->field_string ("what", c->exec_pathname);
8663       uiout->text ("\" ");
8664     }
8665
8666   if (uiout->is_mi_like_p ())
8667     uiout->field_string ("catch-type", "exec");
8668 }
8669
8670 static void
8671 print_mention_catch_exec (struct breakpoint *b)
8672 {
8673   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8674 }
8675
8676 /* Implement the "print_recreate" breakpoint_ops method for exec
8677    catchpoints.  */
8678
8679 static void
8680 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8681 {
8682   fprintf_unfiltered (fp, "catch exec");
8683   print_recreate_thread (b, fp);
8684 }
8685
8686 static struct breakpoint_ops catch_exec_breakpoint_ops;
8687
8688 static int
8689 hw_breakpoint_used_count (void)
8690 {
8691   int i = 0;
8692   struct breakpoint *b;
8693   struct bp_location *bl;
8694
8695   ALL_BREAKPOINTS (b)
8696   {
8697     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8698       for (bl = b->loc; bl; bl = bl->next)
8699         {
8700           /* Special types of hardware breakpoints may use more than
8701              one register.  */
8702           i += b->ops->resources_needed (bl);
8703         }
8704   }
8705
8706   return i;
8707 }
8708
8709 /* Returns the resources B would use if it were a hardware
8710    watchpoint.  */
8711
8712 static int
8713 hw_watchpoint_use_count (struct breakpoint *b)
8714 {
8715   int i = 0;
8716   struct bp_location *bl;
8717
8718   if (!breakpoint_enabled (b))
8719     return 0;
8720
8721   for (bl = b->loc; bl; bl = bl->next)
8722     {
8723       /* Special types of hardware watchpoints may use more than
8724          one register.  */
8725       i += b->ops->resources_needed (bl);
8726     }
8727
8728   return i;
8729 }
8730
8731 /* Returns the sum the used resources of all hardware watchpoints of
8732    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8733    the sum of the used resources of all hardware watchpoints of other
8734    types _not_ TYPE.  */
8735
8736 static int
8737 hw_watchpoint_used_count_others (struct breakpoint *except,
8738                                  enum bptype type, int *other_type_used)
8739 {
8740   int i = 0;
8741   struct breakpoint *b;
8742
8743   *other_type_used = 0;
8744   ALL_BREAKPOINTS (b)
8745     {
8746       if (b == except)
8747         continue;
8748       if (!breakpoint_enabled (b))
8749         continue;
8750
8751       if (b->type == type)
8752         i += hw_watchpoint_use_count (b);
8753       else if (is_hardware_watchpoint (b))
8754         *other_type_used = 1;
8755     }
8756
8757   return i;
8758 }
8759
8760 void
8761 disable_watchpoints_before_interactive_call_start (void)
8762 {
8763   struct breakpoint *b;
8764
8765   ALL_BREAKPOINTS (b)
8766   {
8767     if (is_watchpoint (b) && breakpoint_enabled (b))
8768       {
8769         b->enable_state = bp_call_disabled;
8770         update_global_location_list (UGLL_DONT_INSERT);
8771       }
8772   }
8773 }
8774
8775 void
8776 enable_watchpoints_after_interactive_call_stop (void)
8777 {
8778   struct breakpoint *b;
8779
8780   ALL_BREAKPOINTS (b)
8781   {
8782     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8783       {
8784         b->enable_state = bp_enabled;
8785         update_global_location_list (UGLL_MAY_INSERT);
8786       }
8787   }
8788 }
8789
8790 void
8791 disable_breakpoints_before_startup (void)
8792 {
8793   current_program_space->executing_startup = 1;
8794   update_global_location_list (UGLL_DONT_INSERT);
8795 }
8796
8797 void
8798 enable_breakpoints_after_startup (void)
8799 {
8800   current_program_space->executing_startup = 0;
8801   breakpoint_re_set ();
8802 }
8803
8804 /* Create a new single-step breakpoint for thread THREAD, with no
8805    locations.  */
8806
8807 static struct breakpoint *
8808 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8809 {
8810   std::unique_ptr<breakpoint> b (new breakpoint ());
8811
8812   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8813                                         &momentary_breakpoint_ops);
8814
8815   b->disposition = disp_donttouch;
8816   b->frame_id = null_frame_id;
8817
8818   b->thread = thread;
8819   gdb_assert (b->thread != 0);
8820
8821   return add_to_breakpoint_chain (std::move (b));
8822 }
8823
8824 /* Set a momentary breakpoint of type TYPE at address specified by
8825    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8826    frame.  */
8827
8828 struct breakpoint *
8829 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8830                           struct frame_id frame_id, enum bptype type)
8831 {
8832   struct breakpoint *b;
8833
8834   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8835      tail-called one.  */
8836   gdb_assert (!frame_id_artificial_p (frame_id));
8837
8838   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8839   b->enable_state = bp_enabled;
8840   b->disposition = disp_donttouch;
8841   b->frame_id = frame_id;
8842
8843   /* If we're debugging a multi-threaded program, then we want
8844      momentary breakpoints to be active in only a single thread of
8845      control.  */
8846   if (in_thread_list (inferior_ptid))
8847     b->thread = ptid_to_global_thread_id (inferior_ptid);
8848
8849   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8850
8851   return b;
8852 }
8853
8854 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8855    The new breakpoint will have type TYPE, use OPS as its
8856    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8857
8858 static struct breakpoint *
8859 momentary_breakpoint_from_master (struct breakpoint *orig,
8860                                   enum bptype type,
8861                                   const struct breakpoint_ops *ops,
8862                                   int loc_enabled)
8863 {
8864   struct breakpoint *copy;
8865
8866   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8867   copy->loc = allocate_bp_location (copy);
8868   set_breakpoint_location_function (copy->loc, 1);
8869
8870   copy->loc->gdbarch = orig->loc->gdbarch;
8871   copy->loc->requested_address = orig->loc->requested_address;
8872   copy->loc->address = orig->loc->address;
8873   copy->loc->section = orig->loc->section;
8874   copy->loc->pspace = orig->loc->pspace;
8875   copy->loc->probe = orig->loc->probe;
8876   copy->loc->line_number = orig->loc->line_number;
8877   copy->loc->symtab = orig->loc->symtab;
8878   copy->loc->enabled = loc_enabled;
8879   copy->frame_id = orig->frame_id;
8880   copy->thread = orig->thread;
8881   copy->pspace = orig->pspace;
8882
8883   copy->enable_state = bp_enabled;
8884   copy->disposition = disp_donttouch;
8885   copy->number = internal_breakpoint_number--;
8886
8887   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8888   return copy;
8889 }
8890
8891 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8892    ORIG is NULL.  */
8893
8894 struct breakpoint *
8895 clone_momentary_breakpoint (struct breakpoint *orig)
8896 {
8897   /* If there's nothing to clone, then return nothing.  */
8898   if (orig == NULL)
8899     return NULL;
8900
8901   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8902 }
8903
8904 struct breakpoint *
8905 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8906                                 enum bptype type)
8907 {
8908   struct symtab_and_line sal;
8909
8910   sal = find_pc_line (pc, 0);
8911   sal.pc = pc;
8912   sal.section = find_pc_overlay (pc);
8913   sal.explicit_pc = 1;
8914
8915   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8916 }
8917 \f
8918
8919 /* Tell the user we have just set a breakpoint B.  */
8920
8921 static void
8922 mention (struct breakpoint *b)
8923 {
8924   b->ops->print_mention (b);
8925   if (current_uiout->is_mi_like_p ())
8926     return;
8927   printf_filtered ("\n");
8928 }
8929 \f
8930
8931 static int bp_loc_is_permanent (struct bp_location *loc);
8932
8933 static struct bp_location *
8934 add_location_to_breakpoint (struct breakpoint *b,
8935                             const struct symtab_and_line *sal)
8936 {
8937   struct bp_location *loc, **tmp;
8938   CORE_ADDR adjusted_address;
8939   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8940
8941   if (loc_gdbarch == NULL)
8942     loc_gdbarch = b->gdbarch;
8943
8944   /* Adjust the breakpoint's address prior to allocating a location.
8945      Once we call allocate_bp_location(), that mostly uninitialized
8946      location will be placed on the location chain.  Adjustment of the
8947      breakpoint may cause target_read_memory() to be called and we do
8948      not want its scan of the location chain to find a breakpoint and
8949      location that's only been partially initialized.  */
8950   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8951                                                 sal->pc, b->type);
8952
8953   /* Sort the locations by their ADDRESS.  */
8954   loc = allocate_bp_location (b);
8955   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8956        tmp = &((*tmp)->next))
8957     ;
8958   loc->next = *tmp;
8959   *tmp = loc;
8960
8961   loc->requested_address = sal->pc;
8962   loc->address = adjusted_address;
8963   loc->pspace = sal->pspace;
8964   loc->probe.probe = sal->probe;
8965   loc->probe.objfile = sal->objfile;
8966   gdb_assert (loc->pspace != NULL);
8967   loc->section = sal->section;
8968   loc->gdbarch = loc_gdbarch;
8969   loc->line_number = sal->line;
8970   loc->symtab = sal->symtab;
8971
8972   set_breakpoint_location_function (loc,
8973                                     sal->explicit_pc || sal->explicit_line);
8974
8975   /* While by definition, permanent breakpoints are already present in the
8976      code, we don't mark the location as inserted.  Normally one would expect
8977      that GDB could rely on that breakpoint instruction to stop the program,
8978      thus removing the need to insert its own breakpoint, except that executing
8979      the breakpoint instruction can kill the target instead of reporting a
8980      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8981      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8982      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8983      breakpoint be inserted normally results in QEMU knowing about the GDB
8984      breakpoint, and thus trap before the breakpoint instruction is executed.
8985      (If GDB later needs to continue execution past the permanent breakpoint,
8986      it manually increments the PC, thus avoiding executing the breakpoint
8987      instruction.)  */
8988   if (bp_loc_is_permanent (loc))
8989     loc->permanent = 1;
8990
8991   return loc;
8992 }
8993 \f
8994
8995 /* See breakpoint.h.  */
8996
8997 int
8998 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8999 {
9000   int len;
9001   CORE_ADDR addr;
9002   const gdb_byte *bpoint;
9003   gdb_byte *target_mem;
9004   struct cleanup *cleanup;
9005   int retval = 0;
9006
9007   addr = address;
9008   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9009
9010   /* Software breakpoints unsupported?  */
9011   if (bpoint == NULL)
9012     return 0;
9013
9014   target_mem = (gdb_byte *) alloca (len);
9015
9016   /* Enable the automatic memory restoration from breakpoints while
9017      we read the memory.  Otherwise we could say about our temporary
9018      breakpoints they are permanent.  */
9019   cleanup = make_show_memory_breakpoints_cleanup (0);
9020
9021   if (target_read_memory (address, target_mem, len) == 0
9022       && memcmp (target_mem, bpoint, len) == 0)
9023     retval = 1;
9024
9025   do_cleanups (cleanup);
9026
9027   return retval;
9028 }
9029
9030 /* Return 1 if LOC is pointing to a permanent breakpoint,
9031    return 0 otherwise.  */
9032
9033 static int
9034 bp_loc_is_permanent (struct bp_location *loc)
9035 {
9036   gdb_assert (loc != NULL);
9037
9038   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
9039      attempt to read from the addresses the locations of these breakpoint types
9040      point to.  program_breakpoint_here_p, below, will attempt to read
9041      memory.  */
9042   if (!breakpoint_address_is_meaningful (loc->owner))
9043     return 0;
9044
9045   scoped_restore_current_pspace_and_thread restore_pspace_thread;
9046   switch_to_program_space_and_thread (loc->pspace);
9047   return program_breakpoint_here_p (loc->gdbarch, loc->address);
9048 }
9049
9050 /* Build a command list for the dprintf corresponding to the current
9051    settings of the dprintf style options.  */
9052
9053 static void
9054 update_dprintf_command_list (struct breakpoint *b)
9055 {
9056   char *dprintf_args = b->extra_string;
9057   char *printf_line = NULL;
9058
9059   if (!dprintf_args)
9060     return;
9061
9062   dprintf_args = skip_spaces (dprintf_args);
9063
9064   /* Allow a comma, as it may have terminated a location, but don't
9065      insist on it.  */
9066   if (*dprintf_args == ',')
9067     ++dprintf_args;
9068   dprintf_args = skip_spaces (dprintf_args);
9069
9070   if (*dprintf_args != '"')
9071     error (_("Bad format string, missing '\"'."));
9072
9073   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9074     printf_line = xstrprintf ("printf %s", dprintf_args);
9075   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9076     {
9077       if (!dprintf_function)
9078         error (_("No function supplied for dprintf call"));
9079
9080       if (dprintf_channel && strlen (dprintf_channel) > 0)
9081         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9082                                   dprintf_function,
9083                                   dprintf_channel,
9084                                   dprintf_args);
9085       else
9086         printf_line = xstrprintf ("call (void) %s (%s)",
9087                                   dprintf_function,
9088                                   dprintf_args);
9089     }
9090   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9091     {
9092       if (target_can_run_breakpoint_commands ())
9093         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9094       else
9095         {
9096           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9097           printf_line = xstrprintf ("printf %s", dprintf_args);
9098         }
9099     }
9100   else
9101     internal_error (__FILE__, __LINE__,
9102                     _("Invalid dprintf style."));
9103
9104   gdb_assert (printf_line != NULL);
9105   /* Manufacture a printf sequence.  */
9106   {
9107     struct command_line *printf_cmd_line = XNEW (struct command_line);
9108
9109     printf_cmd_line->control_type = simple_control;
9110     printf_cmd_line->body_count = 0;
9111     printf_cmd_line->body_list = NULL;
9112     printf_cmd_line->next = NULL;
9113     printf_cmd_line->line = printf_line;
9114
9115     breakpoint_set_commands (b, command_line_up (printf_cmd_line));
9116   }
9117 }
9118
9119 /* Update all dprintf commands, making their command lists reflect
9120    current style settings.  */
9121
9122 static void
9123 update_dprintf_commands (char *args, int from_tty,
9124                          struct cmd_list_element *c)
9125 {
9126   struct breakpoint *b;
9127
9128   ALL_BREAKPOINTS (b)
9129     {
9130       if (b->type == bp_dprintf)
9131         update_dprintf_command_list (b);
9132     }
9133 }
9134
9135 /* Create a breakpoint with SAL as location.  Use LOCATION
9136    as a description of the location, and COND_STRING
9137    as condition expression.  If LOCATION is NULL then create an
9138    "address location" from the address in the SAL.  */
9139
9140 static void
9141 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9142                      struct symtabs_and_lines sals,
9143                      event_location_up &&location,
9144                      gdb::unique_xmalloc_ptr<char> filter,
9145                      gdb::unique_xmalloc_ptr<char> cond_string,
9146                      gdb::unique_xmalloc_ptr<char> extra_string,
9147                      enum bptype type, enum bpdisp disposition,
9148                      int thread, int task, int ignore_count,
9149                      const struct breakpoint_ops *ops, int from_tty,
9150                      int enabled, int internal, unsigned flags,
9151                      int display_canonical)
9152 {
9153   int i;
9154
9155   if (type == bp_hardware_breakpoint)
9156     {
9157       int target_resources_ok;
9158
9159       i = hw_breakpoint_used_count ();
9160       target_resources_ok =
9161         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9162                                             i + 1, 0);
9163       if (target_resources_ok == 0)
9164         error (_("No hardware breakpoint support in the target."));
9165       else if (target_resources_ok < 0)
9166         error (_("Hardware breakpoints used exceeds limit."));
9167     }
9168
9169   gdb_assert (sals.nelts > 0);
9170
9171   for (i = 0; i < sals.nelts; ++i)
9172     {
9173       struct symtab_and_line sal = sals.sals[i];
9174       struct bp_location *loc;
9175
9176       if (from_tty)
9177         {
9178           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9179           if (!loc_gdbarch)
9180             loc_gdbarch = gdbarch;
9181
9182           describe_other_breakpoints (loc_gdbarch,
9183                                       sal.pspace, sal.pc, sal.section, thread);
9184         }
9185
9186       if (i == 0)
9187         {
9188           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9189           b->thread = thread;
9190           b->task = task;
9191
9192           b->cond_string = cond_string.release ();
9193           b->extra_string = extra_string.release ();
9194           b->ignore_count = ignore_count;
9195           b->enable_state = enabled ? bp_enabled : bp_disabled;
9196           b->disposition = disposition;
9197
9198           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9199             b->loc->inserted = 1;
9200
9201           if (type == bp_static_tracepoint)
9202             {
9203               struct tracepoint *t = (struct tracepoint *) b;
9204               struct static_tracepoint_marker marker;
9205
9206               if (strace_marker_p (b))
9207                 {
9208                   /* We already know the marker exists, otherwise, we
9209                      wouldn't see a sal for it.  */
9210                   const char *p
9211                     = &event_location_to_string (b->location.get ())[3];
9212                   const char *endp;
9213                   char *marker_str;
9214
9215                   p = skip_spaces_const (p);
9216
9217                   endp = skip_to_space_const (p);
9218
9219                   marker_str = savestring (p, endp - p);
9220                   t->static_trace_marker_id = marker_str;
9221
9222                   printf_filtered (_("Probed static tracepoint "
9223                                      "marker \"%s\"\n"),
9224                                    t->static_trace_marker_id);
9225                 }
9226               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9227                 {
9228                   t->static_trace_marker_id = xstrdup (marker.str_id);
9229                   release_static_tracepoint_marker (&marker);
9230
9231                   printf_filtered (_("Probed static tracepoint "
9232                                      "marker \"%s\"\n"),
9233                                    t->static_trace_marker_id);
9234                 }
9235               else
9236                 warning (_("Couldn't determine the static "
9237                            "tracepoint marker to probe"));
9238             }
9239
9240           loc = b->loc;
9241         }
9242       else
9243         {
9244           loc = add_location_to_breakpoint (b, &sal);
9245           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9246             loc->inserted = 1;
9247         }
9248
9249       if (b->cond_string)
9250         {
9251           const char *arg = b->cond_string;
9252
9253           loc->cond = parse_exp_1 (&arg, loc->address,
9254                                    block_for_pc (loc->address), 0);
9255           if (*arg)
9256               error (_("Garbage '%s' follows condition"), arg);
9257         }
9258
9259       /* Dynamic printf requires and uses additional arguments on the
9260          command line, otherwise it's an error.  */
9261       if (type == bp_dprintf)
9262         {
9263           if (b->extra_string)
9264             update_dprintf_command_list (b);
9265           else
9266             error (_("Format string required"));
9267         }
9268       else if (b->extra_string)
9269         error (_("Garbage '%s' at end of command"), b->extra_string);
9270     }
9271
9272   b->display_canonical = display_canonical;
9273   if (location != NULL)
9274     b->location = std::move (location);
9275   else
9276     b->location = new_address_location (b->loc->address, NULL, 0);
9277   b->filter = filter.release ();
9278 }
9279
9280 static void
9281 create_breakpoint_sal (struct gdbarch *gdbarch,
9282                        struct symtabs_and_lines sals,
9283                        event_location_up &&location,
9284                        gdb::unique_xmalloc_ptr<char> filter,
9285                        gdb::unique_xmalloc_ptr<char> cond_string,
9286                        gdb::unique_xmalloc_ptr<char> extra_string,
9287                        enum bptype type, enum bpdisp disposition,
9288                        int thread, int task, int ignore_count,
9289                        const struct breakpoint_ops *ops, int from_tty,
9290                        int enabled, int internal, unsigned flags,
9291                        int display_canonical)
9292 {
9293   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
9294
9295   init_breakpoint_sal (b.get (), gdbarch,
9296                        sals, std::move (location),
9297                        std::move (filter),
9298                        std::move (cond_string),
9299                        std::move (extra_string),
9300                        type, disposition,
9301                        thread, task, ignore_count,
9302                        ops, from_tty,
9303                        enabled, internal, flags,
9304                        display_canonical);
9305
9306   install_breakpoint (internal, std::move (b), 0);
9307 }
9308
9309 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9310    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9311    value.  COND_STRING, if not NULL, specified the condition to be
9312    used for all breakpoints.  Essentially the only case where
9313    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9314    function.  In that case, it's still not possible to specify
9315    separate conditions for different overloaded functions, so
9316    we take just a single condition string.
9317    
9318    NOTE: If the function succeeds, the caller is expected to cleanup
9319    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9320    array contents).  If the function fails (error() is called), the
9321    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9322    COND and SALS arrays and each of those arrays contents.  */
9323
9324 static void
9325 create_breakpoints_sal (struct gdbarch *gdbarch,
9326                         struct linespec_result *canonical,
9327                         gdb::unique_xmalloc_ptr<char> cond_string,
9328                         gdb::unique_xmalloc_ptr<char> extra_string,
9329                         enum bptype type, enum bpdisp disposition,
9330                         int thread, int task, int ignore_count,
9331                         const struct breakpoint_ops *ops, int from_tty,
9332                         int enabled, int internal, unsigned flags)
9333 {
9334   int i;
9335   struct linespec_sals *lsal;
9336
9337   if (canonical->pre_expanded)
9338     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9339
9340   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9341     {
9342       /* Note that 'location' can be NULL in the case of a plain
9343          'break', without arguments.  */
9344       event_location_up location
9345         = (canonical->location != NULL
9346            ? copy_event_location (canonical->location.get ()) : NULL);
9347       gdb::unique_xmalloc_ptr<char> filter_string
9348         (lsal->canonical != NULL ? xstrdup (lsal->canonical) : NULL);
9349
9350       create_breakpoint_sal (gdbarch, lsal->sals,
9351                              std::move (location),
9352                              std::move (filter_string),
9353                              std::move (cond_string),
9354                              std::move (extra_string),
9355                              type, disposition,
9356                              thread, task, ignore_count, ops,
9357                              from_tty, enabled, internal, flags,
9358                              canonical->special_display);
9359     }
9360 }
9361
9362 /* Parse LOCATION which is assumed to be a SAL specification possibly
9363    followed by conditionals.  On return, SALS contains an array of SAL
9364    addresses found.  LOCATION points to the end of the SAL (for
9365    linespec locations).
9366
9367    The array and the line spec strings are allocated on the heap, it is
9368    the caller's responsibility to free them.  */
9369
9370 static void
9371 parse_breakpoint_sals (const struct event_location *location,
9372                        struct linespec_result *canonical)
9373 {
9374   struct symtab_and_line cursal;
9375
9376   if (event_location_type (location) == LINESPEC_LOCATION)
9377     {
9378       const char *address = get_linespec_location (location);
9379
9380       if (address == NULL)
9381         {
9382           /* The last displayed codepoint, if it's valid, is our default
9383              breakpoint address.  */
9384           if (last_displayed_sal_is_valid ())
9385             {
9386               struct linespec_sals lsal;
9387               struct symtab_and_line sal;
9388               CORE_ADDR pc;
9389
9390               init_sal (&sal);          /* Initialize to zeroes.  */
9391               lsal.sals.sals = XNEW (struct symtab_and_line);
9392
9393               /* Set sal's pspace, pc, symtab, and line to the values
9394                  corresponding to the last call to print_frame_info.
9395                  Be sure to reinitialize LINE with NOTCURRENT == 0
9396                  as the breakpoint line number is inappropriate otherwise.
9397                  find_pc_line would adjust PC, re-set it back.  */
9398               get_last_displayed_sal (&sal);
9399               pc = sal.pc;
9400               sal = find_pc_line (pc, 0);
9401
9402               /* "break" without arguments is equivalent to "break *PC"
9403                  where PC is the last displayed codepoint's address.  So
9404                  make sure to set sal.explicit_pc to prevent GDB from
9405                  trying to expand the list of sals to include all other
9406                  instances with the same symtab and line.  */
9407               sal.pc = pc;
9408               sal.explicit_pc = 1;
9409
9410               lsal.sals.sals[0] = sal;
9411               lsal.sals.nelts = 1;
9412               lsal.canonical = NULL;
9413
9414               VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9415               return;
9416             }
9417           else
9418             error (_("No default breakpoint address now."));
9419         }
9420     }
9421
9422   /* Force almost all breakpoints to be in terms of the
9423      current_source_symtab (which is decode_line_1's default).
9424      This should produce the results we want almost all of the
9425      time while leaving default_breakpoint_* alone.
9426
9427      ObjC: However, don't match an Objective-C method name which
9428      may have a '+' or '-' succeeded by a '['.  */
9429   cursal = get_current_source_symtab_and_line ();
9430   if (last_displayed_sal_is_valid ())
9431     {
9432       const char *address = NULL;
9433
9434       if (event_location_type (location) == LINESPEC_LOCATION)
9435         address = get_linespec_location (location);
9436
9437       if (!cursal.symtab
9438           || (address != NULL
9439               && strchr ("+-", address[0]) != NULL
9440               && address[1] != '['))
9441         {
9442           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9443                             get_last_displayed_symtab (),
9444                             get_last_displayed_line (),
9445                             canonical, NULL, NULL);
9446           return;
9447         }
9448     }
9449
9450   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9451                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9452 }
9453
9454
9455 /* Convert each SAL into a real PC.  Verify that the PC can be
9456    inserted as a breakpoint.  If it can't throw an error.  */
9457
9458 static void
9459 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9460 {    
9461   int i;
9462
9463   for (i = 0; i < sals->nelts; i++)
9464     resolve_sal_pc (&sals->sals[i]);
9465 }
9466
9467 /* Fast tracepoints may have restrictions on valid locations.  For
9468    instance, a fast tracepoint using a jump instead of a trap will
9469    likely have to overwrite more bytes than a trap would, and so can
9470    only be placed where the instruction is longer than the jump, or a
9471    multi-instruction sequence does not have a jump into the middle of
9472    it, etc.  */
9473
9474 static void
9475 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9476                             struct symtabs_and_lines *sals)
9477 {
9478   int i, rslt;
9479   struct symtab_and_line *sal;
9480   char *msg;
9481   struct cleanup *old_chain;
9482
9483   for (i = 0; i < sals->nelts; i++)
9484     {
9485       struct gdbarch *sarch;
9486
9487       sal = &sals->sals[i];
9488
9489       sarch = get_sal_arch (*sal);
9490       /* We fall back to GDBARCH if there is no architecture
9491          associated with SAL.  */
9492       if (sarch == NULL)
9493         sarch = gdbarch;
9494       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc, &msg);
9495       old_chain = make_cleanup (xfree, msg);
9496
9497       if (!rslt)
9498         error (_("May not have a fast tracepoint at %s%s"),
9499                paddress (sarch, sal->pc), (msg ? msg : ""));
9500
9501       do_cleanups (old_chain);
9502     }
9503 }
9504
9505 /* Given TOK, a string specification of condition and thread, as
9506    accepted by the 'break' command, extract the condition
9507    string and thread number and set *COND_STRING and *THREAD.
9508    PC identifies the context at which the condition should be parsed.
9509    If no condition is found, *COND_STRING is set to NULL.
9510    If no thread is found, *THREAD is set to -1.  */
9511
9512 static void
9513 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9514                            char **cond_string, int *thread, int *task,
9515                            char **rest)
9516 {
9517   *cond_string = NULL;
9518   *thread = -1;
9519   *task = 0;
9520   *rest = NULL;
9521
9522   while (tok && *tok)
9523     {
9524       const char *end_tok;
9525       int toklen;
9526       const char *cond_start = NULL;
9527       const char *cond_end = NULL;
9528
9529       tok = skip_spaces_const (tok);
9530
9531       if ((*tok == '"' || *tok == ',') && rest)
9532         {
9533           *rest = savestring (tok, strlen (tok));
9534           return;
9535         }
9536
9537       end_tok = skip_to_space_const (tok);
9538
9539       toklen = end_tok - tok;
9540
9541       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9542         {
9543           tok = cond_start = end_tok + 1;
9544           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9545           cond_end = tok;
9546           *cond_string = savestring (cond_start, cond_end - cond_start);
9547         }
9548       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9549         {
9550           const char *tmptok;
9551           struct thread_info *thr;
9552
9553           tok = end_tok + 1;
9554           thr = parse_thread_id (tok, &tmptok);
9555           if (tok == tmptok)
9556             error (_("Junk after thread keyword."));
9557           *thread = thr->global_num;
9558           tok = tmptok;
9559         }
9560       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9561         {
9562           char *tmptok;
9563
9564           tok = end_tok + 1;
9565           *task = strtol (tok, &tmptok, 0);
9566           if (tok == tmptok)
9567             error (_("Junk after task keyword."));
9568           if (!valid_task_id (*task))
9569             error (_("Unknown task %d."), *task);
9570           tok = tmptok;
9571         }
9572       else if (rest)
9573         {
9574           *rest = savestring (tok, strlen (tok));
9575           return;
9576         }
9577       else
9578         error (_("Junk at end of arguments."));
9579     }
9580 }
9581
9582 /* Decode a static tracepoint marker spec.  */
9583
9584 static struct symtabs_and_lines
9585 decode_static_tracepoint_spec (const char **arg_p)
9586 {
9587   VEC(static_tracepoint_marker_p) *markers = NULL;
9588   struct symtabs_and_lines sals;
9589   struct cleanup *old_chain;
9590   const char *p = &(*arg_p)[3];
9591   const char *endp;
9592   char *marker_str;
9593   int i;
9594
9595   p = skip_spaces_const (p);
9596
9597   endp = skip_to_space_const (p);
9598
9599   marker_str = savestring (p, endp - p);
9600   old_chain = make_cleanup (xfree, marker_str);
9601
9602   markers = target_static_tracepoint_markers_by_strid (marker_str);
9603   if (VEC_empty(static_tracepoint_marker_p, markers))
9604     error (_("No known static tracepoint marker named %s"), marker_str);
9605
9606   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9607   sals.sals = XNEWVEC (struct symtab_and_line, sals.nelts);
9608
9609   for (i = 0; i < sals.nelts; i++)
9610     {
9611       struct static_tracepoint_marker *marker;
9612
9613       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9614
9615       init_sal (&sals.sals[i]);
9616
9617       sals.sals[i] = find_pc_line (marker->address, 0);
9618       sals.sals[i].pc = marker->address;
9619
9620       release_static_tracepoint_marker (marker);
9621     }
9622
9623   do_cleanups (old_chain);
9624
9625   *arg_p = endp;
9626   return sals;
9627 }
9628
9629 /* See breakpoint.h.  */
9630
9631 int
9632 create_breakpoint (struct gdbarch *gdbarch,
9633                    const struct event_location *location,
9634                    const char *cond_string,
9635                    int thread, const char *extra_string,
9636                    int parse_extra,
9637                    int tempflag, enum bptype type_wanted,
9638                    int ignore_count,
9639                    enum auto_boolean pending_break_support,
9640                    const struct breakpoint_ops *ops,
9641                    int from_tty, int enabled, int internal,
9642                    unsigned flags)
9643 {
9644   struct linespec_result canonical;
9645   struct cleanup *bkpt_chain = NULL;
9646   int pending = 0;
9647   int task = 0;
9648   int prev_bkpt_count = breakpoint_count;
9649
9650   gdb_assert (ops != NULL);
9651
9652   /* If extra_string isn't useful, set it to NULL.  */
9653   if (extra_string != NULL && *extra_string == '\0')
9654     extra_string = NULL;
9655
9656   TRY
9657     {
9658       ops->create_sals_from_location (location, &canonical, type_wanted);
9659     }
9660   CATCH (e, RETURN_MASK_ERROR)
9661     {
9662       /* If caller is interested in rc value from parse, set
9663          value.  */
9664       if (e.error == NOT_FOUND_ERROR)
9665         {
9666           /* If pending breakpoint support is turned off, throw
9667              error.  */
9668
9669           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9670             throw_exception (e);
9671
9672           exception_print (gdb_stderr, e);
9673
9674           /* If pending breakpoint support is auto query and the user
9675              selects no, then simply return the error code.  */
9676           if (pending_break_support == AUTO_BOOLEAN_AUTO
9677               && !nquery (_("Make %s pending on future shared library load? "),
9678                           bptype_string (type_wanted)))
9679             return 0;
9680
9681           /* At this point, either the user was queried about setting
9682              a pending breakpoint and selected yes, or pending
9683              breakpoint behavior is on and thus a pending breakpoint
9684              is defaulted on behalf of the user.  */
9685           pending = 1;
9686         }
9687       else
9688         throw_exception (e);
9689     }
9690   END_CATCH
9691
9692   if (!pending && VEC_empty (linespec_sals, canonical.sals))
9693     return 0;
9694
9695   /* ----------------------------- SNIP -----------------------------
9696      Anything added to the cleanup chain beyond this point is assumed
9697      to be part of a breakpoint.  If the breakpoint create succeeds
9698      then the memory is not reclaimed.  */
9699   bkpt_chain = make_cleanup (null_cleanup, 0);
9700
9701   /* Resolve all line numbers to PC's and verify that the addresses
9702      are ok for the target.  */
9703   if (!pending)
9704     {
9705       int ix;
9706       struct linespec_sals *iter;
9707
9708       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9709         breakpoint_sals_to_pc (&iter->sals);
9710     }
9711
9712   /* Fast tracepoints may have additional restrictions on location.  */
9713   if (!pending && type_wanted == bp_fast_tracepoint)
9714     {
9715       int ix;
9716       struct linespec_sals *iter;
9717
9718       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9719         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9720     }
9721
9722   /* Verify that condition can be parsed, before setting any
9723      breakpoints.  Allocate a separate condition expression for each
9724      breakpoint.  */
9725   if (!pending)
9726     {
9727       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9728       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9729
9730       if (parse_extra)
9731         {
9732           char *rest;
9733           char *cond;
9734           struct linespec_sals *lsal;
9735
9736           lsal = VEC_index (linespec_sals, canonical.sals, 0);
9737
9738           /* Here we only parse 'arg' to separate condition
9739              from thread number, so parsing in context of first
9740              sal is OK.  When setting the breakpoint we'll
9741              re-parse it in context of each sal.  */
9742
9743           find_condition_and_thread (extra_string, lsal->sals.sals[0].pc,
9744                                      &cond, &thread, &task, &rest);
9745           cond_string_copy.reset (cond);
9746           extra_string_copy.reset (rest);
9747         }
9748       else
9749         {
9750           if (type_wanted != bp_dprintf
9751               && extra_string != NULL && *extra_string != '\0')
9752                 error (_("Garbage '%s' at end of location"), extra_string);
9753
9754           /* Create a private copy of condition string.  */
9755           if (cond_string)
9756             cond_string_copy.reset (xstrdup (cond_string));
9757           /* Create a private copy of any extra string.  */
9758           if (extra_string)
9759             extra_string_copy.reset (xstrdup (extra_string));
9760         }
9761
9762       ops->create_breakpoints_sal (gdbarch, &canonical,
9763                                    std::move (cond_string_copy),
9764                                    std::move (extra_string_copy),
9765                                    type_wanted,
9766                                    tempflag ? disp_del : disp_donttouch,
9767                                    thread, task, ignore_count, ops,
9768                                    from_tty, enabled, internal, flags);
9769     }
9770   else
9771     {
9772       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9773
9774       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9775       b->location = copy_event_location (location);
9776
9777       if (parse_extra)
9778         b->cond_string = NULL;
9779       else
9780         {
9781           /* Create a private copy of condition string.  */
9782           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9783           b->thread = thread;
9784         }
9785
9786       /* Create a private copy of any extra string.  */
9787       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9788       b->ignore_count = ignore_count;
9789       b->disposition = tempflag ? disp_del : disp_donttouch;
9790       b->condition_not_parsed = 1;
9791       b->enable_state = enabled ? bp_enabled : bp_disabled;
9792       if ((type_wanted != bp_breakpoint
9793            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9794         b->pspace = current_program_space;
9795
9796       install_breakpoint (internal, std::move (b), 0);
9797     }
9798   
9799   if (VEC_length (linespec_sals, canonical.sals) > 1)
9800     {
9801       warning (_("Multiple breakpoints were set.\nUse the "
9802                  "\"delete\" command to delete unwanted breakpoints."));
9803       prev_breakpoint_count = prev_bkpt_count;
9804     }
9805
9806   /* That's it.  Discard the cleanups for data inserted into the
9807      breakpoint.  */
9808   discard_cleanups (bkpt_chain);
9809
9810   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9811   update_global_location_list (UGLL_MAY_INSERT);
9812
9813   return 1;
9814 }
9815
9816 /* Set a breakpoint.
9817    ARG is a string describing breakpoint address,
9818    condition, and thread.
9819    FLAG specifies if a breakpoint is hardware on,
9820    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9821    and BP_TEMPFLAG.  */
9822
9823 static void
9824 break_command_1 (char *arg, int flag, int from_tty)
9825 {
9826   int tempflag = flag & BP_TEMPFLAG;
9827   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9828                              ? bp_hardware_breakpoint
9829                              : bp_breakpoint);
9830   struct breakpoint_ops *ops;
9831
9832   event_location_up location = string_to_event_location (&arg, current_language);
9833
9834   /* Matching breakpoints on probes.  */
9835   if (location != NULL
9836       && event_location_type (location.get ()) == PROBE_LOCATION)
9837     ops = &bkpt_probe_breakpoint_ops;
9838   else
9839     ops = &bkpt_breakpoint_ops;
9840
9841   create_breakpoint (get_current_arch (),
9842                      location.get (),
9843                      NULL, 0, arg, 1 /* parse arg */,
9844                      tempflag, type_wanted,
9845                      0 /* Ignore count */,
9846                      pending_break_support,
9847                      ops,
9848                      from_tty,
9849                      1 /* enabled */,
9850                      0 /* internal */,
9851                      0);
9852 }
9853
9854 /* Helper function for break_command_1 and disassemble_command.  */
9855
9856 void
9857 resolve_sal_pc (struct symtab_and_line *sal)
9858 {
9859   CORE_ADDR pc;
9860
9861   if (sal->pc == 0 && sal->symtab != NULL)
9862     {
9863       if (!find_line_pc (sal->symtab, sal->line, &pc))
9864         error (_("No line %d in file \"%s\"."),
9865                sal->line, symtab_to_filename_for_display (sal->symtab));
9866       sal->pc = pc;
9867
9868       /* If this SAL corresponds to a breakpoint inserted using a line
9869          number, then skip the function prologue if necessary.  */
9870       if (sal->explicit_line)
9871         skip_prologue_sal (sal);
9872     }
9873
9874   if (sal->section == 0 && sal->symtab != NULL)
9875     {
9876       const struct blockvector *bv;
9877       const struct block *b;
9878       struct symbol *sym;
9879
9880       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9881                                     SYMTAB_COMPUNIT (sal->symtab));
9882       if (bv != NULL)
9883         {
9884           sym = block_linkage_function (b);
9885           if (sym != NULL)
9886             {
9887               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9888               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9889                                                  sym);
9890             }
9891           else
9892             {
9893               /* It really is worthwhile to have the section, so we'll
9894                  just have to look harder. This case can be executed
9895                  if we have line numbers but no functions (as can
9896                  happen in assembly source).  */
9897
9898               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9899               switch_to_program_space_and_thread (sal->pspace);
9900
9901               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9902               if (msym.minsym)
9903                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9904             }
9905         }
9906     }
9907 }
9908
9909 void
9910 break_command (char *arg, int from_tty)
9911 {
9912   break_command_1 (arg, 0, from_tty);
9913 }
9914
9915 void
9916 tbreak_command (char *arg, int from_tty)
9917 {
9918   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9919 }
9920
9921 static void
9922 hbreak_command (char *arg, int from_tty)
9923 {
9924   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9925 }
9926
9927 static void
9928 thbreak_command (char *arg, int from_tty)
9929 {
9930   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9931 }
9932
9933 static void
9934 stop_command (char *arg, int from_tty)
9935 {
9936   printf_filtered (_("Specify the type of breakpoint to set.\n\
9937 Usage: stop in <function | address>\n\
9938        stop at <line>\n"));
9939 }
9940
9941 static void
9942 stopin_command (char *arg, int from_tty)
9943 {
9944   int badInput = 0;
9945
9946   if (arg == (char *) NULL)
9947     badInput = 1;
9948   else if (*arg != '*')
9949     {
9950       char *argptr = arg;
9951       int hasColon = 0;
9952
9953       /* Look for a ':'.  If this is a line number specification, then
9954          say it is bad, otherwise, it should be an address or
9955          function/method name.  */
9956       while (*argptr && !hasColon)
9957         {
9958           hasColon = (*argptr == ':');
9959           argptr++;
9960         }
9961
9962       if (hasColon)
9963         badInput = (*argptr != ':');    /* Not a class::method */
9964       else
9965         badInput = isdigit (*arg);      /* a simple line number */
9966     }
9967
9968   if (badInput)
9969     printf_filtered (_("Usage: stop in <function | address>\n"));
9970   else
9971     break_command_1 (arg, 0, from_tty);
9972 }
9973
9974 static void
9975 stopat_command (char *arg, int from_tty)
9976 {
9977   int badInput = 0;
9978
9979   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9980     badInput = 1;
9981   else
9982     {
9983       char *argptr = arg;
9984       int hasColon = 0;
9985
9986       /* Look for a ':'.  If there is a '::' then get out, otherwise
9987          it is probably a line number.  */
9988       while (*argptr && !hasColon)
9989         {
9990           hasColon = (*argptr == ':');
9991           argptr++;
9992         }
9993
9994       if (hasColon)
9995         badInput = (*argptr == ':');    /* we have class::method */
9996       else
9997         badInput = !isdigit (*arg);     /* not a line number */
9998     }
9999
10000   if (badInput)
10001     printf_filtered (_("Usage: stop at <line>\n"));
10002   else
10003     break_command_1 (arg, 0, from_tty);
10004 }
10005
10006 /* The dynamic printf command is mostly like a regular breakpoint, but
10007    with a prewired command list consisting of a single output command,
10008    built from extra arguments supplied on the dprintf command
10009    line.  */
10010
10011 static void
10012 dprintf_command (char *arg, int from_tty)
10013 {
10014   event_location_up location = string_to_event_location (&arg, current_language);
10015
10016   /* If non-NULL, ARG should have been advanced past the location;
10017      the next character must be ','.  */
10018   if (arg != NULL)
10019     {
10020       if (arg[0] != ',' || arg[1] == '\0')
10021         error (_("Format string required"));
10022       else
10023         {
10024           /* Skip the comma.  */
10025           ++arg;
10026         }
10027     }
10028
10029   create_breakpoint (get_current_arch (),
10030                      location.get (),
10031                      NULL, 0, arg, 1 /* parse arg */,
10032                      0, bp_dprintf,
10033                      0 /* Ignore count */,
10034                      pending_break_support,
10035                      &dprintf_breakpoint_ops,
10036                      from_tty,
10037                      1 /* enabled */,
10038                      0 /* internal */,
10039                      0);
10040 }
10041
10042 static void
10043 agent_printf_command (char *arg, int from_tty)
10044 {
10045   error (_("May only run agent-printf on the target"));
10046 }
10047
10048 /* Implement the "breakpoint_hit" breakpoint_ops method for
10049    ranged breakpoints.  */
10050
10051 static int
10052 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10053                                   struct address_space *aspace,
10054                                   CORE_ADDR bp_addr,
10055                                   const struct target_waitstatus *ws)
10056 {
10057   if (ws->kind != TARGET_WAITKIND_STOPPED
10058       || ws->value.sig != GDB_SIGNAL_TRAP)
10059     return 0;
10060
10061   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10062                                          bl->length, aspace, bp_addr);
10063 }
10064
10065 /* Implement the "resources_needed" breakpoint_ops method for
10066    ranged breakpoints.  */
10067
10068 static int
10069 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10070 {
10071   return target_ranged_break_num_registers ();
10072 }
10073
10074 /* Implement the "print_it" breakpoint_ops method for
10075    ranged breakpoints.  */
10076
10077 static enum print_stop_action
10078 print_it_ranged_breakpoint (bpstat bs)
10079 {
10080   struct breakpoint *b = bs->breakpoint_at;
10081   struct bp_location *bl = b->loc;
10082   struct ui_out *uiout = current_uiout;
10083
10084   gdb_assert (b->type == bp_hardware_breakpoint);
10085
10086   /* Ranged breakpoints have only one location.  */
10087   gdb_assert (bl && bl->next == NULL);
10088
10089   annotate_breakpoint (b->number);
10090
10091   maybe_print_thread_hit_breakpoint (uiout);
10092
10093   if (b->disposition == disp_del)
10094     uiout->text ("Temporary ranged breakpoint ");
10095   else
10096     uiout->text ("Ranged breakpoint ");
10097   if (uiout->is_mi_like_p ())
10098     {
10099       uiout->field_string ("reason",
10100                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10101       uiout->field_string ("disp", bpdisp_text (b->disposition));
10102     }
10103   uiout->field_int ("bkptno", b->number);
10104   uiout->text (", ");
10105
10106   return PRINT_SRC_AND_LOC;
10107 }
10108
10109 /* Implement the "print_one" breakpoint_ops method for
10110    ranged breakpoints.  */
10111
10112 static void
10113 print_one_ranged_breakpoint (struct breakpoint *b,
10114                              struct bp_location **last_loc)
10115 {
10116   struct bp_location *bl = b->loc;
10117   struct value_print_options opts;
10118   struct ui_out *uiout = current_uiout;
10119
10120   /* Ranged breakpoints have only one location.  */
10121   gdb_assert (bl && bl->next == NULL);
10122
10123   get_user_print_options (&opts);
10124
10125   if (opts.addressprint)
10126     /* We don't print the address range here, it will be printed later
10127        by print_one_detail_ranged_breakpoint.  */
10128     uiout->field_skip ("addr");
10129   annotate_field (5);
10130   print_breakpoint_location (b, bl);
10131   *last_loc = bl;
10132 }
10133
10134 /* Implement the "print_one_detail" breakpoint_ops method for
10135    ranged breakpoints.  */
10136
10137 static void
10138 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10139                                     struct ui_out *uiout)
10140 {
10141   CORE_ADDR address_start, address_end;
10142   struct bp_location *bl = b->loc;
10143   string_file stb;
10144
10145   gdb_assert (bl);
10146
10147   address_start = bl->address;
10148   address_end = address_start + bl->length - 1;
10149
10150   uiout->text ("\taddress range: ");
10151   stb.printf ("[%s, %s]",
10152               print_core_address (bl->gdbarch, address_start),
10153               print_core_address (bl->gdbarch, address_end));
10154   uiout->field_stream ("addr", stb);
10155   uiout->text ("\n");
10156 }
10157
10158 /* Implement the "print_mention" breakpoint_ops method for
10159    ranged breakpoints.  */
10160
10161 static void
10162 print_mention_ranged_breakpoint (struct breakpoint *b)
10163 {
10164   struct bp_location *bl = b->loc;
10165   struct ui_out *uiout = current_uiout;
10166
10167   gdb_assert (bl);
10168   gdb_assert (b->type == bp_hardware_breakpoint);
10169
10170   if (uiout->is_mi_like_p ())
10171     return;
10172
10173   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10174                    b->number, paddress (bl->gdbarch, bl->address),
10175                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10176 }
10177
10178 /* Implement the "print_recreate" breakpoint_ops method for
10179    ranged breakpoints.  */
10180
10181 static void
10182 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10183 {
10184   fprintf_unfiltered (fp, "break-range %s, %s",
10185                       event_location_to_string (b->location.get ()),
10186                       event_location_to_string (b->location_range_end.get ()));
10187   print_recreate_thread (b, fp);
10188 }
10189
10190 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10191
10192 static struct breakpoint_ops ranged_breakpoint_ops;
10193
10194 /* Find the address where the end of the breakpoint range should be
10195    placed, given the SAL of the end of the range.  This is so that if
10196    the user provides a line number, the end of the range is set to the
10197    last instruction of the given line.  */
10198
10199 static CORE_ADDR
10200 find_breakpoint_range_end (struct symtab_and_line sal)
10201 {
10202   CORE_ADDR end;
10203
10204   /* If the user provided a PC value, use it.  Otherwise,
10205      find the address of the end of the given location.  */
10206   if (sal.explicit_pc)
10207     end = sal.pc;
10208   else
10209     {
10210       int ret;
10211       CORE_ADDR start;
10212
10213       ret = find_line_pc_range (sal, &start, &end);
10214       if (!ret)
10215         error (_("Could not find location of the end of the range."));
10216
10217       /* find_line_pc_range returns the start of the next line.  */
10218       end--;
10219     }
10220
10221   return end;
10222 }
10223
10224 /* Implement the "break-range" CLI command.  */
10225
10226 static void
10227 break_range_command (char *arg, int from_tty)
10228 {
10229   char *arg_start, *addr_string_start;
10230   struct linespec_result canonical_start, canonical_end;
10231   int bp_count, can_use_bp, length;
10232   CORE_ADDR end;
10233   struct breakpoint *b;
10234   struct symtab_and_line sal_start, sal_end;
10235   struct cleanup *cleanup_bkpt;
10236   struct linespec_sals *lsal_start, *lsal_end;
10237
10238   /* We don't support software ranged breakpoints.  */
10239   if (target_ranged_break_num_registers () < 0)
10240     error (_("This target does not support hardware ranged breakpoints."));
10241
10242   bp_count = hw_breakpoint_used_count ();
10243   bp_count += target_ranged_break_num_registers ();
10244   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10245                                                    bp_count, 0);
10246   if (can_use_bp < 0)
10247     error (_("Hardware breakpoints used exceeds limit."));
10248
10249   arg = skip_spaces (arg);
10250   if (arg == NULL || arg[0] == '\0')
10251     error(_("No address range specified."));
10252
10253   arg_start = arg;
10254   event_location_up start_location = string_to_event_location (&arg,
10255                                                                current_language);
10256   parse_breakpoint_sals (start_location.get (), &canonical_start);
10257
10258   if (arg[0] != ',')
10259     error (_("Too few arguments."));
10260   else if (VEC_empty (linespec_sals, canonical_start.sals))
10261     error (_("Could not find location of the beginning of the range."));
10262
10263   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10264
10265   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10266       || lsal_start->sals.nelts != 1)
10267     error (_("Cannot create a ranged breakpoint with multiple locations."));
10268
10269   sal_start = lsal_start->sals.sals[0];
10270   addr_string_start = savestring (arg_start, arg - arg_start);
10271   cleanup_bkpt = make_cleanup (xfree, addr_string_start);
10272
10273   arg++;        /* Skip the comma.  */
10274   arg = skip_spaces (arg);
10275
10276   /* Parse the end location.  */
10277
10278   arg_start = arg;
10279
10280   /* We call decode_line_full directly here instead of using
10281      parse_breakpoint_sals because we need to specify the start location's
10282      symtab and line as the default symtab and line for the end of the
10283      range.  This makes it possible to have ranges like "foo.c:27, +14",
10284      where +14 means 14 lines from the start location.  */
10285   event_location_up end_location = string_to_event_location (&arg,
10286                                                              current_language);
10287   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10288                     sal_start.symtab, sal_start.line,
10289                     &canonical_end, NULL, NULL);
10290
10291   if (VEC_empty (linespec_sals, canonical_end.sals))
10292     error (_("Could not find location of the end of the range."));
10293
10294   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10295   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10296       || lsal_end->sals.nelts != 1)
10297     error (_("Cannot create a ranged breakpoint with multiple locations."));
10298
10299   sal_end = lsal_end->sals.sals[0];
10300
10301   end = find_breakpoint_range_end (sal_end);
10302   if (sal_start.pc > end)
10303     error (_("Invalid address range, end precedes start."));
10304
10305   length = end - sal_start.pc + 1;
10306   if (length < 0)
10307     /* Length overflowed.  */
10308     error (_("Address range too large."));
10309   else if (length == 1)
10310     {
10311       /* This range is simple enough to be handled by
10312          the `hbreak' command.  */
10313       hbreak_command (addr_string_start, 1);
10314
10315       do_cleanups (cleanup_bkpt);
10316
10317       return;
10318     }
10319
10320   /* Now set up the breakpoint.  */
10321   b = set_raw_breakpoint (get_current_arch (), sal_start,
10322                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10323   set_breakpoint_count (breakpoint_count + 1);
10324   b->number = breakpoint_count;
10325   b->disposition = disp_donttouch;
10326   b->location = std::move (start_location);
10327   b->location_range_end = std::move (end_location);
10328   b->loc->length = length;
10329
10330   do_cleanups (cleanup_bkpt);
10331
10332   mention (b);
10333   observer_notify_breakpoint_created (b);
10334   update_global_location_list (UGLL_MAY_INSERT);
10335 }
10336
10337 /*  Return non-zero if EXP is verified as constant.  Returned zero
10338     means EXP is variable.  Also the constant detection may fail for
10339     some constant expressions and in such case still falsely return
10340     zero.  */
10341
10342 static int
10343 watchpoint_exp_is_const (const struct expression *exp)
10344 {
10345   int i = exp->nelts;
10346
10347   while (i > 0)
10348     {
10349       int oplenp, argsp;
10350
10351       /* We are only interested in the descriptor of each element.  */
10352       operator_length (exp, i, &oplenp, &argsp);
10353       i -= oplenp;
10354
10355       switch (exp->elts[i].opcode)
10356         {
10357         case BINOP_ADD:
10358         case BINOP_SUB:
10359         case BINOP_MUL:
10360         case BINOP_DIV:
10361         case BINOP_REM:
10362         case BINOP_MOD:
10363         case BINOP_LSH:
10364         case BINOP_RSH:
10365         case BINOP_LOGICAL_AND:
10366         case BINOP_LOGICAL_OR:
10367         case BINOP_BITWISE_AND:
10368         case BINOP_BITWISE_IOR:
10369         case BINOP_BITWISE_XOR:
10370         case BINOP_EQUAL:
10371         case BINOP_NOTEQUAL:
10372         case BINOP_LESS:
10373         case BINOP_GTR:
10374         case BINOP_LEQ:
10375         case BINOP_GEQ:
10376         case BINOP_REPEAT:
10377         case BINOP_COMMA:
10378         case BINOP_EXP:
10379         case BINOP_MIN:
10380         case BINOP_MAX:
10381         case BINOP_INTDIV:
10382         case BINOP_CONCAT:
10383         case TERNOP_COND:
10384         case TERNOP_SLICE:
10385
10386         case OP_LONG:
10387         case OP_DOUBLE:
10388         case OP_DECFLOAT:
10389         case OP_LAST:
10390         case OP_COMPLEX:
10391         case OP_STRING:
10392         case OP_ARRAY:
10393         case OP_TYPE:
10394         case OP_TYPEOF:
10395         case OP_DECLTYPE:
10396         case OP_TYPEID:
10397         case OP_NAME:
10398         case OP_OBJC_NSSTRING:
10399
10400         case UNOP_NEG:
10401         case UNOP_LOGICAL_NOT:
10402         case UNOP_COMPLEMENT:
10403         case UNOP_ADDR:
10404         case UNOP_HIGH:
10405         case UNOP_CAST:
10406
10407         case UNOP_CAST_TYPE:
10408         case UNOP_REINTERPRET_CAST:
10409         case UNOP_DYNAMIC_CAST:
10410           /* Unary, binary and ternary operators: We have to check
10411              their operands.  If they are constant, then so is the
10412              result of that operation.  For instance, if A and B are
10413              determined to be constants, then so is "A + B".
10414
10415              UNOP_IND is one exception to the rule above, because the
10416              value of *ADDR is not necessarily a constant, even when
10417              ADDR is.  */
10418           break;
10419
10420         case OP_VAR_VALUE:
10421           /* Check whether the associated symbol is a constant.
10422
10423              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10424              possible that a buggy compiler could mark a variable as
10425              constant even when it is not, and TYPE_CONST would return
10426              true in this case, while SYMBOL_CLASS wouldn't.
10427
10428              We also have to check for function symbols because they
10429              are always constant.  */
10430           {
10431             struct symbol *s = exp->elts[i + 2].symbol;
10432
10433             if (SYMBOL_CLASS (s) != LOC_BLOCK
10434                 && SYMBOL_CLASS (s) != LOC_CONST
10435                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10436               return 0;
10437             break;
10438           }
10439
10440         /* The default action is to return 0 because we are using
10441            the optimistic approach here: If we don't know something,
10442            then it is not a constant.  */
10443         default:
10444           return 0;
10445         }
10446     }
10447
10448   return 1;
10449 }
10450
10451 /* Watchpoint destructor.  */
10452
10453 watchpoint::~watchpoint ()
10454 {
10455   xfree (this->exp_string);
10456   xfree (this->exp_string_reparse);
10457   value_free (this->val);
10458 }
10459
10460 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10461
10462 static void
10463 re_set_watchpoint (struct breakpoint *b)
10464 {
10465   struct watchpoint *w = (struct watchpoint *) b;
10466
10467   /* Watchpoint can be either on expression using entirely global
10468      variables, or it can be on local variables.
10469
10470      Watchpoints of the first kind are never auto-deleted, and even
10471      persist across program restarts.  Since they can use variables
10472      from shared libraries, we need to reparse expression as libraries
10473      are loaded and unloaded.
10474
10475      Watchpoints on local variables can also change meaning as result
10476      of solib event.  For example, if a watchpoint uses both a local
10477      and a global variables in expression, it's a local watchpoint,
10478      but unloading of a shared library will make the expression
10479      invalid.  This is not a very common use case, but we still
10480      re-evaluate expression, to avoid surprises to the user.
10481
10482      Note that for local watchpoints, we re-evaluate it only if
10483      watchpoints frame id is still valid.  If it's not, it means the
10484      watchpoint is out of scope and will be deleted soon.  In fact,
10485      I'm not sure we'll ever be called in this case.
10486
10487      If a local watchpoint's frame id is still valid, then
10488      w->exp_valid_block is likewise valid, and we can safely use it.
10489
10490      Don't do anything about disabled watchpoints, since they will be
10491      reevaluated again when enabled.  */
10492   update_watchpoint (w, 1 /* reparse */);
10493 }
10494
10495 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10496
10497 static int
10498 insert_watchpoint (struct bp_location *bl)
10499 {
10500   struct watchpoint *w = (struct watchpoint *) bl->owner;
10501   int length = w->exact ? 1 : bl->length;
10502
10503   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10504                                    w->cond_exp.get ());
10505 }
10506
10507 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10508
10509 static int
10510 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10511 {
10512   struct watchpoint *w = (struct watchpoint *) bl->owner;
10513   int length = w->exact ? 1 : bl->length;
10514
10515   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10516                                    w->cond_exp.get ());
10517 }
10518
10519 static int
10520 breakpoint_hit_watchpoint (const struct bp_location *bl,
10521                            struct address_space *aspace, CORE_ADDR bp_addr,
10522                            const struct target_waitstatus *ws)
10523 {
10524   struct breakpoint *b = bl->owner;
10525   struct watchpoint *w = (struct watchpoint *) b;
10526
10527   /* Continuable hardware watchpoints are treated as non-existent if the
10528      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10529      some data address).  Otherwise gdb won't stop on a break instruction
10530      in the code (not from a breakpoint) when a hardware watchpoint has
10531      been defined.  Also skip watchpoints which we know did not trigger
10532      (did not match the data address).  */
10533   if (is_hardware_watchpoint (b)
10534       && w->watchpoint_triggered == watch_triggered_no)
10535     return 0;
10536
10537   return 1;
10538 }
10539
10540 static void
10541 check_status_watchpoint (bpstat bs)
10542 {
10543   gdb_assert (is_watchpoint (bs->breakpoint_at));
10544
10545   bpstat_check_watchpoint (bs);
10546 }
10547
10548 /* Implement the "resources_needed" breakpoint_ops method for
10549    hardware watchpoints.  */
10550
10551 static int
10552 resources_needed_watchpoint (const struct bp_location *bl)
10553 {
10554   struct watchpoint *w = (struct watchpoint *) bl->owner;
10555   int length = w->exact? 1 : bl->length;
10556
10557   return target_region_ok_for_hw_watchpoint (bl->address, length);
10558 }
10559
10560 /* Implement the "works_in_software_mode" breakpoint_ops method for
10561    hardware watchpoints.  */
10562
10563 static int
10564 works_in_software_mode_watchpoint (const struct breakpoint *b)
10565 {
10566   /* Read and access watchpoints only work with hardware support.  */
10567   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10568 }
10569
10570 static enum print_stop_action
10571 print_it_watchpoint (bpstat bs)
10572 {
10573   struct cleanup *old_chain;
10574   struct breakpoint *b;
10575   enum print_stop_action result;
10576   struct watchpoint *w;
10577   struct ui_out *uiout = current_uiout;
10578
10579   gdb_assert (bs->bp_location_at != NULL);
10580
10581   b = bs->breakpoint_at;
10582   w = (struct watchpoint *) b;
10583
10584   old_chain = make_cleanup (null_cleanup, NULL);
10585
10586   annotate_watchpoint (b->number);
10587   maybe_print_thread_hit_breakpoint (uiout);
10588
10589   string_file stb;
10590
10591   switch (b->type)
10592     {
10593     case bp_watchpoint:
10594     case bp_hardware_watchpoint:
10595       if (uiout->is_mi_like_p ())
10596         uiout->field_string
10597           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10598       mention (b);
10599       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10600       uiout->text ("\nOld value = ");
10601       watchpoint_value_print (bs->old_val, &stb);
10602       uiout->field_stream ("old", stb);
10603       uiout->text ("\nNew value = ");
10604       watchpoint_value_print (w->val, &stb);
10605       uiout->field_stream ("new", stb);
10606       uiout->text ("\n");
10607       /* More than one watchpoint may have been triggered.  */
10608       result = PRINT_UNKNOWN;
10609       break;
10610
10611     case bp_read_watchpoint:
10612       if (uiout->is_mi_like_p ())
10613         uiout->field_string
10614           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10615       mention (b);
10616       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10617       uiout->text ("\nValue = ");
10618       watchpoint_value_print (w->val, &stb);
10619       uiout->field_stream ("value", stb);
10620       uiout->text ("\n");
10621       result = PRINT_UNKNOWN;
10622       break;
10623
10624     case bp_access_watchpoint:
10625       if (bs->old_val != NULL)
10626         {
10627           if (uiout->is_mi_like_p ())
10628             uiout->field_string
10629               ("reason",
10630                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10631           mention (b);
10632           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10633           uiout->text ("\nOld value = ");
10634           watchpoint_value_print (bs->old_val, &stb);
10635           uiout->field_stream ("old", stb);
10636           uiout->text ("\nNew value = ");
10637         }
10638       else
10639         {
10640           mention (b);
10641           if (uiout->is_mi_like_p ())
10642             uiout->field_string
10643               ("reason",
10644                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10645           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10646           uiout->text ("\nValue = ");
10647         }
10648       watchpoint_value_print (w->val, &stb);
10649       uiout->field_stream ("new", stb);
10650       uiout->text ("\n");
10651       result = PRINT_UNKNOWN;
10652       break;
10653     default:
10654       result = PRINT_UNKNOWN;
10655     }
10656
10657   do_cleanups (old_chain);
10658   return result;
10659 }
10660
10661 /* Implement the "print_mention" breakpoint_ops method for hardware
10662    watchpoints.  */
10663
10664 static void
10665 print_mention_watchpoint (struct breakpoint *b)
10666 {
10667   struct watchpoint *w = (struct watchpoint *) b;
10668   struct ui_out *uiout = current_uiout;
10669   const char *tuple_name;
10670
10671   switch (b->type)
10672     {
10673     case bp_watchpoint:
10674       uiout->text ("Watchpoint ");
10675       tuple_name = "wpt";
10676       break;
10677     case bp_hardware_watchpoint:
10678       uiout->text ("Hardware watchpoint ");
10679       tuple_name = "wpt";
10680       break;
10681     case bp_read_watchpoint:
10682       uiout->text ("Hardware read watchpoint ");
10683       tuple_name = "hw-rwpt";
10684       break;
10685     case bp_access_watchpoint:
10686       uiout->text ("Hardware access (read/write) watchpoint ");
10687       tuple_name = "hw-awpt";
10688       break;
10689     default:
10690       internal_error (__FILE__, __LINE__,
10691                       _("Invalid hardware watchpoint type."));
10692     }
10693
10694   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10695   uiout->field_int ("number", b->number);
10696   uiout->text (": ");
10697   uiout->field_string ("exp", w->exp_string);
10698 }
10699
10700 /* Implement the "print_recreate" breakpoint_ops method for
10701    watchpoints.  */
10702
10703 static void
10704 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10705 {
10706   struct watchpoint *w = (struct watchpoint *) b;
10707
10708   switch (b->type)
10709     {
10710     case bp_watchpoint:
10711     case bp_hardware_watchpoint:
10712       fprintf_unfiltered (fp, "watch");
10713       break;
10714     case bp_read_watchpoint:
10715       fprintf_unfiltered (fp, "rwatch");
10716       break;
10717     case bp_access_watchpoint:
10718       fprintf_unfiltered (fp, "awatch");
10719       break;
10720     default:
10721       internal_error (__FILE__, __LINE__,
10722                       _("Invalid watchpoint type."));
10723     }
10724
10725   fprintf_unfiltered (fp, " %s", w->exp_string);
10726   print_recreate_thread (b, fp);
10727 }
10728
10729 /* Implement the "explains_signal" breakpoint_ops method for
10730    watchpoints.  */
10731
10732 static int
10733 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10734 {
10735   /* A software watchpoint cannot cause a signal other than
10736      GDB_SIGNAL_TRAP.  */
10737   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10738     return 0;
10739
10740   return 1;
10741 }
10742
10743 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10744
10745 static struct breakpoint_ops watchpoint_breakpoint_ops;
10746
10747 /* Implement the "insert" breakpoint_ops method for
10748    masked hardware watchpoints.  */
10749
10750 static int
10751 insert_masked_watchpoint (struct bp_location *bl)
10752 {
10753   struct watchpoint *w = (struct watchpoint *) bl->owner;
10754
10755   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10756                                         bl->watchpoint_type);
10757 }
10758
10759 /* Implement the "remove" breakpoint_ops method for
10760    masked hardware watchpoints.  */
10761
10762 static int
10763 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10764 {
10765   struct watchpoint *w = (struct watchpoint *) bl->owner;
10766
10767   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10768                                         bl->watchpoint_type);
10769 }
10770
10771 /* Implement the "resources_needed" breakpoint_ops method for
10772    masked hardware watchpoints.  */
10773
10774 static int
10775 resources_needed_masked_watchpoint (const struct bp_location *bl)
10776 {
10777   struct watchpoint *w = (struct watchpoint *) bl->owner;
10778
10779   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10780 }
10781
10782 /* Implement the "works_in_software_mode" breakpoint_ops method for
10783    masked hardware watchpoints.  */
10784
10785 static int
10786 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10787 {
10788   return 0;
10789 }
10790
10791 /* Implement the "print_it" breakpoint_ops method for
10792    masked hardware watchpoints.  */
10793
10794 static enum print_stop_action
10795 print_it_masked_watchpoint (bpstat bs)
10796 {
10797   struct breakpoint *b = bs->breakpoint_at;
10798   struct ui_out *uiout = current_uiout;
10799
10800   /* Masked watchpoints have only one location.  */
10801   gdb_assert (b->loc && b->loc->next == NULL);
10802
10803   annotate_watchpoint (b->number);
10804   maybe_print_thread_hit_breakpoint (uiout);
10805
10806   switch (b->type)
10807     {
10808     case bp_hardware_watchpoint:
10809       if (uiout->is_mi_like_p ())
10810         uiout->field_string
10811           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10812       break;
10813
10814     case bp_read_watchpoint:
10815       if (uiout->is_mi_like_p ())
10816         uiout->field_string
10817           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10818       break;
10819
10820     case bp_access_watchpoint:
10821       if (uiout->is_mi_like_p ())
10822         uiout->field_string
10823           ("reason",
10824            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10825       break;
10826     default:
10827       internal_error (__FILE__, __LINE__,
10828                       _("Invalid hardware watchpoint type."));
10829     }
10830
10831   mention (b);
10832   uiout->text (_("\n\
10833 Check the underlying instruction at PC for the memory\n\
10834 address and value which triggered this watchpoint.\n"));
10835   uiout->text ("\n");
10836
10837   /* More than one watchpoint may have been triggered.  */
10838   return PRINT_UNKNOWN;
10839 }
10840
10841 /* Implement the "print_one_detail" breakpoint_ops method for
10842    masked hardware watchpoints.  */
10843
10844 static void
10845 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10846                                     struct ui_out *uiout)
10847 {
10848   struct watchpoint *w = (struct watchpoint *) b;
10849
10850   /* Masked watchpoints have only one location.  */
10851   gdb_assert (b->loc && b->loc->next == NULL);
10852
10853   uiout->text ("\tmask ");
10854   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10855   uiout->text ("\n");
10856 }
10857
10858 /* Implement the "print_mention" breakpoint_ops method for
10859    masked hardware watchpoints.  */
10860
10861 static void
10862 print_mention_masked_watchpoint (struct breakpoint *b)
10863 {
10864   struct watchpoint *w = (struct watchpoint *) b;
10865   struct ui_out *uiout = current_uiout;
10866   const char *tuple_name;
10867
10868   switch (b->type)
10869     {
10870     case bp_hardware_watchpoint:
10871       uiout->text ("Masked hardware watchpoint ");
10872       tuple_name = "wpt";
10873       break;
10874     case bp_read_watchpoint:
10875       uiout->text ("Masked hardware read watchpoint ");
10876       tuple_name = "hw-rwpt";
10877       break;
10878     case bp_access_watchpoint:
10879       uiout->text ("Masked hardware access (read/write) watchpoint ");
10880       tuple_name = "hw-awpt";
10881       break;
10882     default:
10883       internal_error (__FILE__, __LINE__,
10884                       _("Invalid hardware watchpoint type."));
10885     }
10886
10887   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10888   uiout->field_int ("number", b->number);
10889   uiout->text (": ");
10890   uiout->field_string ("exp", w->exp_string);
10891 }
10892
10893 /* Implement the "print_recreate" breakpoint_ops method for
10894    masked hardware watchpoints.  */
10895
10896 static void
10897 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10898 {
10899   struct watchpoint *w = (struct watchpoint *) b;
10900   char tmp[40];
10901
10902   switch (b->type)
10903     {
10904     case bp_hardware_watchpoint:
10905       fprintf_unfiltered (fp, "watch");
10906       break;
10907     case bp_read_watchpoint:
10908       fprintf_unfiltered (fp, "rwatch");
10909       break;
10910     case bp_access_watchpoint:
10911       fprintf_unfiltered (fp, "awatch");
10912       break;
10913     default:
10914       internal_error (__FILE__, __LINE__,
10915                       _("Invalid hardware watchpoint type."));
10916     }
10917
10918   sprintf_vma (tmp, w->hw_wp_mask);
10919   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10920   print_recreate_thread (b, fp);
10921 }
10922
10923 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10924
10925 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10926
10927 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10928
10929 static int
10930 is_masked_watchpoint (const struct breakpoint *b)
10931 {
10932   return b->ops == &masked_watchpoint_breakpoint_ops;
10933 }
10934
10935 /* accessflag:  hw_write:  watch write, 
10936                 hw_read:   watch read, 
10937                 hw_access: watch access (read or write) */
10938 static void
10939 watch_command_1 (const char *arg, int accessflag, int from_tty,
10940                  int just_location, int internal)
10941 {
10942   struct breakpoint *scope_breakpoint = NULL;
10943   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10944   struct value *val, *mark, *result;
10945   int saved_bitpos = 0, saved_bitsize = 0;
10946   const char *exp_start = NULL;
10947   const char *exp_end = NULL;
10948   const char *tok, *end_tok;
10949   int toklen = -1;
10950   const char *cond_start = NULL;
10951   const char *cond_end = NULL;
10952   enum bptype bp_type;
10953   int thread = -1;
10954   int pc = 0;
10955   /* Flag to indicate whether we are going to use masks for
10956      the hardware watchpoint.  */
10957   int use_mask = 0;
10958   CORE_ADDR mask = 0;
10959   char *expression;
10960   struct cleanup *back_to;
10961
10962   /* Make sure that we actually have parameters to parse.  */
10963   if (arg != NULL && arg[0] != '\0')
10964     {
10965       const char *value_start;
10966
10967       exp_end = arg + strlen (arg);
10968
10969       /* Look for "parameter value" pairs at the end
10970          of the arguments string.  */
10971       for (tok = exp_end - 1; tok > arg; tok--)
10972         {
10973           /* Skip whitespace at the end of the argument list.  */
10974           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10975             tok--;
10976
10977           /* Find the beginning of the last token.
10978              This is the value of the parameter.  */
10979           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10980             tok--;
10981           value_start = tok + 1;
10982
10983           /* Skip whitespace.  */
10984           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10985             tok--;
10986
10987           end_tok = tok;
10988
10989           /* Find the beginning of the second to last token.
10990              This is the parameter itself.  */
10991           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10992             tok--;
10993           tok++;
10994           toklen = end_tok - tok + 1;
10995
10996           if (toklen == 6 && startswith (tok, "thread"))
10997             {
10998               struct thread_info *thr;
10999               /* At this point we've found a "thread" token, which means
11000                  the user is trying to set a watchpoint that triggers
11001                  only in a specific thread.  */
11002               const char *endp;
11003
11004               if (thread != -1)
11005                 error(_("You can specify only one thread."));
11006
11007               /* Extract the thread ID from the next token.  */
11008               thr = parse_thread_id (value_start, &endp);
11009
11010               /* Check if the user provided a valid thread ID.  */
11011               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11012                 invalid_thread_id_error (value_start);
11013
11014               thread = thr->global_num;
11015             }
11016           else if (toklen == 4 && startswith (tok, "mask"))
11017             {
11018               /* We've found a "mask" token, which means the user wants to
11019                  create a hardware watchpoint that is going to have the mask
11020                  facility.  */
11021               struct value *mask_value, *mark;
11022
11023               if (use_mask)
11024                 error(_("You can specify only one mask."));
11025
11026               use_mask = just_location = 1;
11027
11028               mark = value_mark ();
11029               mask_value = parse_to_comma_and_eval (&value_start);
11030               mask = value_as_address (mask_value);
11031               value_free_to_mark (mark);
11032             }
11033           else
11034             /* We didn't recognize what we found.  We should stop here.  */
11035             break;
11036
11037           /* Truncate the string and get rid of the "parameter value" pair before
11038              the arguments string is parsed by the parse_exp_1 function.  */
11039           exp_end = tok;
11040         }
11041     }
11042   else
11043     exp_end = arg;
11044
11045   /* Parse the rest of the arguments.  From here on out, everything
11046      is in terms of a newly allocated string instead of the original
11047      ARG.  */
11048   innermost_block = NULL;
11049   expression = savestring (arg, exp_end - arg);
11050   back_to = make_cleanup (xfree, expression);
11051   exp_start = arg = expression;
11052   expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
11053   exp_end = arg;
11054   /* Remove trailing whitespace from the expression before saving it.
11055      This makes the eventual display of the expression string a bit
11056      prettier.  */
11057   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11058     --exp_end;
11059
11060   /* Checking if the expression is not constant.  */
11061   if (watchpoint_exp_is_const (exp.get ()))
11062     {
11063       int len;
11064
11065       len = exp_end - exp_start;
11066       while (len > 0 && isspace (exp_start[len - 1]))
11067         len--;
11068       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11069     }
11070
11071   exp_valid_block = innermost_block;
11072   mark = value_mark ();
11073   fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
11074
11075   if (val != NULL && just_location)
11076     {
11077       saved_bitpos = value_bitpos (val);
11078       saved_bitsize = value_bitsize (val);
11079     }
11080
11081   if (just_location)
11082     {
11083       int ret;
11084
11085       exp_valid_block = NULL;
11086       val = value_addr (result);
11087       release_value (val);
11088       value_free_to_mark (mark);
11089
11090       if (use_mask)
11091         {
11092           ret = target_masked_watch_num_registers (value_as_address (val),
11093                                                    mask);
11094           if (ret == -1)
11095             error (_("This target does not support masked watchpoints."));
11096           else if (ret == -2)
11097             error (_("Invalid mask or memory region."));
11098         }
11099     }
11100   else if (val != NULL)
11101     release_value (val);
11102
11103   tok = skip_spaces_const (arg);
11104   end_tok = skip_to_space_const (tok);
11105
11106   toklen = end_tok - tok;
11107   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11108     {
11109       innermost_block = NULL;
11110       tok = cond_start = end_tok + 1;
11111       parse_exp_1 (&tok, 0, 0, 0);
11112
11113       /* The watchpoint expression may not be local, but the condition
11114          may still be.  E.g.: `watch global if local > 0'.  */
11115       cond_exp_valid_block = innermost_block;
11116
11117       cond_end = tok;
11118     }
11119   if (*tok)
11120     error (_("Junk at end of command."));
11121
11122   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
11123
11124   /* Save this because create_internal_breakpoint below invalidates
11125      'wp_frame'.  */
11126   frame_id watchpoint_frame = get_frame_id (wp_frame);
11127
11128   /* If the expression is "local", then set up a "watchpoint scope"
11129      breakpoint at the point where we've left the scope of the watchpoint
11130      expression.  Create the scope breakpoint before the watchpoint, so
11131      that we will encounter it first in bpstat_stop_status.  */
11132   if (exp_valid_block != NULL && wp_frame != NULL)
11133     {
11134       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
11135
11136       if (frame_id_p (caller_frame_id))
11137         {
11138           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
11139           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
11140
11141           scope_breakpoint
11142             = create_internal_breakpoint (caller_arch, caller_pc,
11143                                           bp_watchpoint_scope,
11144                                           &momentary_breakpoint_ops);
11145
11146           /* create_internal_breakpoint could invalidate WP_FRAME.  */
11147           wp_frame = NULL;
11148
11149           scope_breakpoint->enable_state = bp_enabled;
11150
11151           /* Automatically delete the breakpoint when it hits.  */
11152           scope_breakpoint->disposition = disp_del;
11153
11154           /* Only break in the proper frame (help with recursion).  */
11155           scope_breakpoint->frame_id = caller_frame_id;
11156
11157           /* Set the address at which we will stop.  */
11158           scope_breakpoint->loc->gdbarch = caller_arch;
11159           scope_breakpoint->loc->requested_address = caller_pc;
11160           scope_breakpoint->loc->address
11161             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11162                                          scope_breakpoint->loc->requested_address,
11163                                          scope_breakpoint->type);
11164         }
11165     }
11166
11167   /* Now set up the breakpoint.  We create all watchpoints as hardware
11168      watchpoints here even if hardware watchpoints are turned off, a call
11169      to update_watchpoint later in this function will cause the type to
11170      drop back to bp_watchpoint (software watchpoint) if required.  */
11171
11172   if (accessflag == hw_read)
11173     bp_type = bp_read_watchpoint;
11174   else if (accessflag == hw_access)
11175     bp_type = bp_access_watchpoint;
11176   else
11177     bp_type = bp_hardware_watchpoint;
11178
11179   std::unique_ptr<watchpoint> w (new watchpoint ());
11180
11181   if (use_mask)
11182     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
11183                                           &masked_watchpoint_breakpoint_ops);
11184   else
11185     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
11186                                           &watchpoint_breakpoint_ops);
11187   w->thread = thread;
11188   w->disposition = disp_donttouch;
11189   w->pspace = current_program_space;
11190   w->exp = std::move (exp);
11191   w->exp_valid_block = exp_valid_block;
11192   w->cond_exp_valid_block = cond_exp_valid_block;
11193   if (just_location)
11194     {
11195       struct type *t = value_type (val);
11196       CORE_ADDR addr = value_as_address (val);
11197
11198       w->exp_string_reparse
11199         = current_language->la_watch_location_expression (t, addr).release ();
11200
11201       w->exp_string = xstrprintf ("-location %.*s",
11202                                   (int) (exp_end - exp_start), exp_start);
11203     }
11204   else
11205     w->exp_string = savestring (exp_start, exp_end - exp_start);
11206
11207   if (use_mask)
11208     {
11209       w->hw_wp_mask = mask;
11210     }
11211   else
11212     {
11213       w->val = val;
11214       w->val_bitpos = saved_bitpos;
11215       w->val_bitsize = saved_bitsize;
11216       w->val_valid = 1;
11217     }
11218
11219   if (cond_start)
11220     w->cond_string = savestring (cond_start, cond_end - cond_start);
11221   else
11222     w->cond_string = 0;
11223
11224   if (frame_id_p (watchpoint_frame))
11225     {
11226       w->watchpoint_frame = watchpoint_frame;
11227       w->watchpoint_thread = inferior_ptid;
11228     }
11229   else
11230     {
11231       w->watchpoint_frame = null_frame_id;
11232       w->watchpoint_thread = null_ptid;
11233     }
11234
11235   if (scope_breakpoint != NULL)
11236     {
11237       /* The scope breakpoint is related to the watchpoint.  We will
11238          need to act on them together.  */
11239       w->related_breakpoint = scope_breakpoint;
11240       scope_breakpoint->related_breakpoint = w.get ();
11241     }
11242
11243   if (!just_location)
11244     value_free_to_mark (mark);
11245
11246   /* Finally update the new watchpoint.  This creates the locations
11247      that should be inserted.  */
11248   update_watchpoint (w.get (), 1);
11249
11250   install_breakpoint (internal, std::move (w), 1);
11251   do_cleanups (back_to);
11252 }
11253
11254 /* Return count of debug registers needed to watch the given expression.
11255    If the watchpoint cannot be handled in hardware return zero.  */
11256
11257 static int
11258 can_use_hardware_watchpoint (struct value *v)
11259 {
11260   int found_memory_cnt = 0;
11261   struct value *head = v;
11262
11263   /* Did the user specifically forbid us to use hardware watchpoints? */
11264   if (!can_use_hw_watchpoints)
11265     return 0;
11266
11267   /* Make sure that the value of the expression depends only upon
11268      memory contents, and values computed from them within GDB.  If we
11269      find any register references or function calls, we can't use a
11270      hardware watchpoint.
11271
11272      The idea here is that evaluating an expression generates a series
11273      of values, one holding the value of every subexpression.  (The
11274      expression a*b+c has five subexpressions: a, b, a*b, c, and
11275      a*b+c.)  GDB's values hold almost enough information to establish
11276      the criteria given above --- they identify memory lvalues,
11277      register lvalues, computed values, etcetera.  So we can evaluate
11278      the expression, and then scan the chain of values that leaves
11279      behind to decide whether we can detect any possible change to the
11280      expression's final value using only hardware watchpoints.
11281
11282      However, I don't think that the values returned by inferior
11283      function calls are special in any way.  So this function may not
11284      notice that an expression involving an inferior function call
11285      can't be watched with hardware watchpoints.  FIXME.  */
11286   for (; v; v = value_next (v))
11287     {
11288       if (VALUE_LVAL (v) == lval_memory)
11289         {
11290           if (v != head && value_lazy (v))
11291             /* A lazy memory lvalue in the chain is one that GDB never
11292                needed to fetch; we either just used its address (e.g.,
11293                `a' in `a.b') or we never needed it at all (e.g., `a'
11294                in `a,b').  This doesn't apply to HEAD; if that is
11295                lazy then it was not readable, but watch it anyway.  */
11296             ;
11297           else
11298             {
11299               /* Ahh, memory we actually used!  Check if we can cover
11300                  it with hardware watchpoints.  */
11301               struct type *vtype = check_typedef (value_type (v));
11302
11303               /* We only watch structs and arrays if user asked for it
11304                  explicitly, never if they just happen to appear in a
11305                  middle of some value chain.  */
11306               if (v == head
11307                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11308                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11309                 {
11310                   CORE_ADDR vaddr = value_address (v);
11311                   int len;
11312                   int num_regs;
11313
11314                   len = (target_exact_watchpoints
11315                          && is_scalar_type_recursive (vtype))?
11316                     1 : TYPE_LENGTH (value_type (v));
11317
11318                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11319                   if (!num_regs)
11320                     return 0;
11321                   else
11322                     found_memory_cnt += num_regs;
11323                 }
11324             }
11325         }
11326       else if (VALUE_LVAL (v) != not_lval
11327                && deprecated_value_modifiable (v) == 0)
11328         return 0;       /* These are values from the history (e.g., $1).  */
11329       else if (VALUE_LVAL (v) == lval_register)
11330         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11331     }
11332
11333   /* The expression itself looks suitable for using a hardware
11334      watchpoint, but give the target machine a chance to reject it.  */
11335   return found_memory_cnt;
11336 }
11337
11338 void
11339 watch_command_wrapper (char *arg, int from_tty, int internal)
11340 {
11341   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11342 }
11343
11344 /* A helper function that looks for the "-location" argument and then
11345    calls watch_command_1.  */
11346
11347 static void
11348 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11349 {
11350   int just_location = 0;
11351
11352   if (arg
11353       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11354           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11355     {
11356       arg = skip_spaces (arg);
11357       just_location = 1;
11358     }
11359
11360   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11361 }
11362
11363 static void
11364 watch_command (char *arg, int from_tty)
11365 {
11366   watch_maybe_just_location (arg, hw_write, from_tty);
11367 }
11368
11369 void
11370 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11371 {
11372   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11373 }
11374
11375 static void
11376 rwatch_command (char *arg, int from_tty)
11377 {
11378   watch_maybe_just_location (arg, hw_read, from_tty);
11379 }
11380
11381 void
11382 awatch_command_wrapper (char *arg, int from_tty, int internal)
11383 {
11384   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11385 }
11386
11387 static void
11388 awatch_command (char *arg, int from_tty)
11389 {
11390   watch_maybe_just_location (arg, hw_access, from_tty);
11391 }
11392 \f
11393
11394 /* Data for the FSM that manages the until(location)/advance commands
11395    in infcmd.c.  Here because it uses the mechanisms of
11396    breakpoints.  */
11397
11398 struct until_break_fsm
11399 {
11400   /* The base class.  */
11401   struct thread_fsm thread_fsm;
11402
11403   /* The thread that as current when the command was executed.  */
11404   int thread;
11405
11406   /* The breakpoint set at the destination location.  */
11407   struct breakpoint *location_breakpoint;
11408
11409   /* Breakpoint set at the return address in the caller frame.  May be
11410      NULL.  */
11411   struct breakpoint *caller_breakpoint;
11412 };
11413
11414 static void until_break_fsm_clean_up (struct thread_fsm *self,
11415                                       struct thread_info *thread);
11416 static int until_break_fsm_should_stop (struct thread_fsm *self,
11417                                         struct thread_info *thread);
11418 static enum async_reply_reason
11419   until_break_fsm_async_reply_reason (struct thread_fsm *self);
11420
11421 /* until_break_fsm's vtable.  */
11422
11423 static struct thread_fsm_ops until_break_fsm_ops =
11424 {
11425   NULL, /* dtor */
11426   until_break_fsm_clean_up,
11427   until_break_fsm_should_stop,
11428   NULL, /* return_value */
11429   until_break_fsm_async_reply_reason,
11430 };
11431
11432 /* Allocate a new until_break_command_fsm.  */
11433
11434 static struct until_break_fsm *
11435 new_until_break_fsm (struct interp *cmd_interp, int thread,
11436                      struct breakpoint *location_breakpoint,
11437                      struct breakpoint *caller_breakpoint)
11438 {
11439   struct until_break_fsm *sm;
11440
11441   sm = XCNEW (struct until_break_fsm);
11442   thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11443
11444   sm->thread = thread;
11445   sm->location_breakpoint = location_breakpoint;
11446   sm->caller_breakpoint = caller_breakpoint;
11447
11448   return sm;
11449 }
11450
11451 /* Implementation of the 'should_stop' FSM method for the
11452    until(location)/advance commands.  */
11453
11454 static int
11455 until_break_fsm_should_stop (struct thread_fsm *self,
11456                              struct thread_info *tp)
11457 {
11458   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11459
11460   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11461                               sm->location_breakpoint) != NULL
11462       || (sm->caller_breakpoint != NULL
11463           && bpstat_find_breakpoint (tp->control.stop_bpstat,
11464                                      sm->caller_breakpoint) != NULL))
11465     thread_fsm_set_finished (self);
11466
11467   return 1;
11468 }
11469
11470 /* Implementation of the 'clean_up' FSM method for the
11471    until(location)/advance commands.  */
11472
11473 static void
11474 until_break_fsm_clean_up (struct thread_fsm *self,
11475                           struct thread_info *thread)
11476 {
11477   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11478
11479   /* Clean up our temporary breakpoints.  */
11480   if (sm->location_breakpoint != NULL)
11481     {
11482       delete_breakpoint (sm->location_breakpoint);
11483       sm->location_breakpoint = NULL;
11484     }
11485   if (sm->caller_breakpoint != NULL)
11486     {
11487       delete_breakpoint (sm->caller_breakpoint);
11488       sm->caller_breakpoint = NULL;
11489     }
11490   delete_longjmp_breakpoint (sm->thread);
11491 }
11492
11493 /* Implementation of the 'async_reply_reason' FSM method for the
11494    until(location)/advance commands.  */
11495
11496 static enum async_reply_reason
11497 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11498 {
11499   return EXEC_ASYNC_LOCATION_REACHED;
11500 }
11501
11502 void
11503 until_break_command (char *arg, int from_tty, int anywhere)
11504 {
11505   struct symtabs_and_lines sals;
11506   struct symtab_and_line sal;
11507   struct frame_info *frame;
11508   struct gdbarch *frame_gdbarch;
11509   struct frame_id stack_frame_id;
11510   struct frame_id caller_frame_id;
11511   struct breakpoint *location_breakpoint;
11512   struct breakpoint *caller_breakpoint = NULL;
11513   struct cleanup *old_chain;
11514   int thread;
11515   struct thread_info *tp;
11516   struct until_break_fsm *sm;
11517
11518   clear_proceed_status (0);
11519
11520   /* Set a breakpoint where the user wants it and at return from
11521      this function.  */
11522
11523   event_location_up location = string_to_event_location (&arg, current_language);
11524
11525   if (last_displayed_sal_is_valid ())
11526     sals = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11527                           get_last_displayed_symtab (),
11528                           get_last_displayed_line ());
11529   else
11530     sals = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11531                           NULL, (struct symtab *) NULL, 0);
11532
11533   if (sals.nelts != 1)
11534     error (_("Couldn't get information on specified line."));
11535
11536   sal = sals.sals[0];
11537   xfree (sals.sals);    /* malloc'd, so freed.  */
11538
11539   if (*arg)
11540     error (_("Junk at end of arguments."));
11541
11542   resolve_sal_pc (&sal);
11543
11544   tp = inferior_thread ();
11545   thread = tp->global_num;
11546
11547   old_chain = make_cleanup (null_cleanup, NULL);
11548
11549   /* Note linespec handling above invalidates the frame chain.
11550      Installing a breakpoint also invalidates the frame chain (as it
11551      may need to switch threads), so do any frame handling before
11552      that.  */
11553
11554   frame = get_selected_frame (NULL);
11555   frame_gdbarch = get_frame_arch (frame);
11556   stack_frame_id = get_stack_frame_id (frame);
11557   caller_frame_id = frame_unwind_caller_id (frame);
11558
11559   /* Keep within the current frame, or in frames called by the current
11560      one.  */
11561
11562   if (frame_id_p (caller_frame_id))
11563     {
11564       struct symtab_and_line sal2;
11565       struct gdbarch *caller_gdbarch;
11566
11567       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11568       sal2.pc = frame_unwind_caller_pc (frame);
11569       caller_gdbarch = frame_unwind_caller_arch (frame);
11570       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11571                                                     sal2,
11572                                                     caller_frame_id,
11573                                                     bp_until);
11574       make_cleanup_delete_breakpoint (caller_breakpoint);
11575
11576       set_longjmp_breakpoint (tp, caller_frame_id);
11577       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11578     }
11579
11580   /* set_momentary_breakpoint could invalidate FRAME.  */
11581   frame = NULL;
11582
11583   if (anywhere)
11584     /* If the user told us to continue until a specified location,
11585        we don't specify a frame at which we need to stop.  */
11586     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11587                                                     null_frame_id, bp_until);
11588   else
11589     /* Otherwise, specify the selected frame, because we want to stop
11590        only at the very same frame.  */
11591     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11592                                                     stack_frame_id, bp_until);
11593   make_cleanup_delete_breakpoint (location_breakpoint);
11594
11595   sm = new_until_break_fsm (command_interp (), tp->global_num,
11596                             location_breakpoint, caller_breakpoint);
11597   tp->thread_fsm = &sm->thread_fsm;
11598
11599   discard_cleanups (old_chain);
11600
11601   proceed (-1, GDB_SIGNAL_DEFAULT);
11602 }
11603
11604 /* This function attempts to parse an optional "if <cond>" clause
11605    from the arg string.  If one is not found, it returns NULL.
11606
11607    Else, it returns a pointer to the condition string.  (It does not
11608    attempt to evaluate the string against a particular block.)  And,
11609    it updates arg to point to the first character following the parsed
11610    if clause in the arg string.  */
11611
11612 const char *
11613 ep_parse_optional_if_clause (const char **arg)
11614 {
11615   const char *cond_string;
11616
11617   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11618     return NULL;
11619
11620   /* Skip the "if" keyword.  */
11621   (*arg) += 2;
11622
11623   /* Skip any extra leading whitespace, and record the start of the
11624      condition string.  */
11625   *arg = skip_spaces_const (*arg);
11626   cond_string = *arg;
11627
11628   /* Assume that the condition occupies the remainder of the arg
11629      string.  */
11630   (*arg) += strlen (cond_string);
11631
11632   return cond_string;
11633 }
11634
11635 /* Commands to deal with catching events, such as signals, exceptions,
11636    process start/exit, etc.  */
11637
11638 typedef enum
11639 {
11640   catch_fork_temporary, catch_vfork_temporary,
11641   catch_fork_permanent, catch_vfork_permanent
11642 }
11643 catch_fork_kind;
11644
11645 static void
11646 catch_fork_command_1 (char *arg_entry, int from_tty,
11647                       struct cmd_list_element *command)
11648 {
11649   const char *arg = arg_entry;
11650   struct gdbarch *gdbarch = get_current_arch ();
11651   const char *cond_string = NULL;
11652   catch_fork_kind fork_kind;
11653   int tempflag;
11654
11655   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11656   tempflag = (fork_kind == catch_fork_temporary
11657               || fork_kind == catch_vfork_temporary);
11658
11659   if (!arg)
11660     arg = "";
11661   arg = skip_spaces_const (arg);
11662
11663   /* The allowed syntax is:
11664      catch [v]fork
11665      catch [v]fork if <cond>
11666
11667      First, check if there's an if clause.  */
11668   cond_string = ep_parse_optional_if_clause (&arg);
11669
11670   if ((*arg != '\0') && !isspace (*arg))
11671     error (_("Junk at end of arguments."));
11672
11673   /* If this target supports it, create a fork or vfork catchpoint
11674      and enable reporting of such events.  */
11675   switch (fork_kind)
11676     {
11677     case catch_fork_temporary:
11678     case catch_fork_permanent:
11679       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11680                                           &catch_fork_breakpoint_ops);
11681       break;
11682     case catch_vfork_temporary:
11683     case catch_vfork_permanent:
11684       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11685                                           &catch_vfork_breakpoint_ops);
11686       break;
11687     default:
11688       error (_("unsupported or unknown fork kind; cannot catch it"));
11689       break;
11690     }
11691 }
11692
11693 static void
11694 catch_exec_command_1 (char *arg_entry, int from_tty,
11695                       struct cmd_list_element *command)
11696 {
11697   const char *arg = arg_entry;
11698   struct gdbarch *gdbarch = get_current_arch ();
11699   int tempflag;
11700   const char *cond_string = NULL;
11701
11702   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11703
11704   if (!arg)
11705     arg = "";
11706   arg = skip_spaces_const (arg);
11707
11708   /* The allowed syntax is:
11709      catch exec
11710      catch exec if <cond>
11711
11712      First, check if there's an if clause.  */
11713   cond_string = ep_parse_optional_if_clause (&arg);
11714
11715   if ((*arg != '\0') && !isspace (*arg))
11716     error (_("Junk at end of arguments."));
11717
11718   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11719   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11720                    &catch_exec_breakpoint_ops);
11721   c->exec_pathname = NULL;
11722
11723   install_breakpoint (0, std::move (c), 1);
11724 }
11725
11726 void
11727 init_ada_exception_breakpoint (struct breakpoint *b,
11728                                struct gdbarch *gdbarch,
11729                                struct symtab_and_line sal,
11730                                char *addr_string,
11731                                const struct breakpoint_ops *ops,
11732                                int tempflag,
11733                                int enabled,
11734                                int from_tty)
11735 {
11736   if (from_tty)
11737     {
11738       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11739       if (!loc_gdbarch)
11740         loc_gdbarch = gdbarch;
11741
11742       describe_other_breakpoints (loc_gdbarch,
11743                                   sal.pspace, sal.pc, sal.section, -1);
11744       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11745          version for exception catchpoints, because two catchpoints
11746          used for different exception names will use the same address.
11747          In this case, a "breakpoint ... also set at..." warning is
11748          unproductive.  Besides, the warning phrasing is also a bit
11749          inappropriate, we should use the word catchpoint, and tell
11750          the user what type of catchpoint it is.  The above is good
11751          enough for now, though.  */
11752     }
11753
11754   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11755
11756   b->enable_state = enabled ? bp_enabled : bp_disabled;
11757   b->disposition = tempflag ? disp_del : disp_donttouch;
11758   b->location = string_to_event_location (&addr_string,
11759                                           language_def (language_ada));
11760   b->language = language_ada;
11761 }
11762
11763 static void
11764 catch_command (char *arg, int from_tty)
11765 {
11766   error (_("Catch requires an event name."));
11767 }
11768 \f
11769
11770 static void
11771 tcatch_command (char *arg, int from_tty)
11772 {
11773   error (_("Catch requires an event name."));
11774 }
11775
11776 /* A qsort comparison function that sorts breakpoints in order.  */
11777
11778 static int
11779 compare_breakpoints (const void *a, const void *b)
11780 {
11781   const breakpoint_p *ba = (const breakpoint_p *) a;
11782   uintptr_t ua = (uintptr_t) *ba;
11783   const breakpoint_p *bb = (const breakpoint_p *) b;
11784   uintptr_t ub = (uintptr_t) *bb;
11785
11786   if ((*ba)->number < (*bb)->number)
11787     return -1;
11788   else if ((*ba)->number > (*bb)->number)
11789     return 1;
11790
11791   /* Now sort by address, in case we see, e..g, two breakpoints with
11792      the number 0.  */
11793   if (ua < ub)
11794     return -1;
11795   return ua > ub ? 1 : 0;
11796 }
11797
11798 /* Delete breakpoints by address or line.  */
11799
11800 static void
11801 clear_command (char *arg, int from_tty)
11802 {
11803   struct breakpoint *b, *prev;
11804   VEC(breakpoint_p) *found = 0;
11805   int ix;
11806   int default_match;
11807   struct symtabs_and_lines sals;
11808   struct symtab_and_line sal;
11809   int i;
11810   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11811
11812   if (arg)
11813     {
11814       sals = decode_line_with_current_source (arg,
11815                                               (DECODE_LINE_FUNFIRSTLINE
11816                                                | DECODE_LINE_LIST_MODE));
11817       make_cleanup (xfree, sals.sals);
11818       default_match = 0;
11819     }
11820   else
11821     {
11822       sals.sals = XNEW (struct symtab_and_line);
11823       make_cleanup (xfree, sals.sals);
11824       init_sal (&sal);          /* Initialize to zeroes.  */
11825
11826       /* Set sal's line, symtab, pc, and pspace to the values
11827          corresponding to the last call to print_frame_info.  If the
11828          codepoint is not valid, this will set all the fields to 0.  */
11829       get_last_displayed_sal (&sal);
11830       if (sal.symtab == 0)
11831         error (_("No source file specified."));
11832
11833       sals.sals[0] = sal;
11834       sals.nelts = 1;
11835
11836       default_match = 1;
11837     }
11838
11839   /* We don't call resolve_sal_pc here.  That's not as bad as it
11840      seems, because all existing breakpoints typically have both
11841      file/line and pc set.  So, if clear is given file/line, we can
11842      match this to existing breakpoint without obtaining pc at all.
11843
11844      We only support clearing given the address explicitly 
11845      present in breakpoint table.  Say, we've set breakpoint 
11846      at file:line.  There were several PC values for that file:line,
11847      due to optimization, all in one block.
11848
11849      We've picked one PC value.  If "clear" is issued with another
11850      PC corresponding to the same file:line, the breakpoint won't
11851      be cleared.  We probably can still clear the breakpoint, but 
11852      since the other PC value is never presented to user, user
11853      can only find it by guessing, and it does not seem important
11854      to support that.  */
11855
11856   /* For each line spec given, delete bps which correspond to it.  Do
11857      it in two passes, solely to preserve the current behavior that
11858      from_tty is forced true if we delete more than one
11859      breakpoint.  */
11860
11861   found = NULL;
11862   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11863   for (i = 0; i < sals.nelts; i++)
11864     {
11865       const char *sal_fullname;
11866
11867       /* If exact pc given, clear bpts at that pc.
11868          If line given (pc == 0), clear all bpts on specified line.
11869          If defaulting, clear all bpts on default line
11870          or at default pc.
11871
11872          defaulting    sal.pc != 0    tests to do
11873
11874          0              1             pc
11875          1              1             pc _and_ line
11876          0              0             line
11877          1              0             <can't happen> */
11878
11879       sal = sals.sals[i];
11880       sal_fullname = (sal.symtab == NULL
11881                       ? NULL : symtab_to_fullname (sal.symtab));
11882
11883       /* Find all matching breakpoints and add them to 'found'.  */
11884       ALL_BREAKPOINTS (b)
11885         {
11886           int match = 0;
11887           /* Are we going to delete b?  */
11888           if (b->type != bp_none && !is_watchpoint (b))
11889             {
11890               struct bp_location *loc = b->loc;
11891               for (; loc; loc = loc->next)
11892                 {
11893                   /* If the user specified file:line, don't allow a PC
11894                      match.  This matches historical gdb behavior.  */
11895                   int pc_match = (!sal.explicit_line
11896                                   && sal.pc
11897                                   && (loc->pspace == sal.pspace)
11898                                   && (loc->address == sal.pc)
11899                                   && (!section_is_overlay (loc->section)
11900                                       || loc->section == sal.section));
11901                   int line_match = 0;
11902
11903                   if ((default_match || sal.explicit_line)
11904                       && loc->symtab != NULL
11905                       && sal_fullname != NULL
11906                       && sal.pspace == loc->pspace
11907                       && loc->line_number == sal.line
11908                       && filename_cmp (symtab_to_fullname (loc->symtab),
11909                                        sal_fullname) == 0)
11910                     line_match = 1;
11911
11912                   if (pc_match || line_match)
11913                     {
11914                       match = 1;
11915                       break;
11916                     }
11917                 }
11918             }
11919
11920           if (match)
11921             VEC_safe_push(breakpoint_p, found, b);
11922         }
11923     }
11924
11925   /* Now go thru the 'found' chain and delete them.  */
11926   if (VEC_empty(breakpoint_p, found))
11927     {
11928       if (arg)
11929         error (_("No breakpoint at %s."), arg);
11930       else
11931         error (_("No breakpoint at this line."));
11932     }
11933
11934   /* Remove duplicates from the vec.  */
11935   qsort (VEC_address (breakpoint_p, found),
11936          VEC_length (breakpoint_p, found),
11937          sizeof (breakpoint_p),
11938          compare_breakpoints);
11939   prev = VEC_index (breakpoint_p, found, 0);
11940   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11941     {
11942       if (b == prev)
11943         {
11944           VEC_ordered_remove (breakpoint_p, found, ix);
11945           --ix;
11946         }
11947     }
11948
11949   if (VEC_length(breakpoint_p, found) > 1)
11950     from_tty = 1;       /* Always report if deleted more than one.  */
11951   if (from_tty)
11952     {
11953       if (VEC_length(breakpoint_p, found) == 1)
11954         printf_unfiltered (_("Deleted breakpoint "));
11955       else
11956         printf_unfiltered (_("Deleted breakpoints "));
11957     }
11958
11959   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11960     {
11961       if (from_tty)
11962         printf_unfiltered ("%d ", b->number);
11963       delete_breakpoint (b);
11964     }
11965   if (from_tty)
11966     putchar_unfiltered ('\n');
11967
11968   do_cleanups (cleanups);
11969 }
11970 \f
11971 /* Delete breakpoint in BS if they are `delete' breakpoints and
11972    all breakpoints that are marked for deletion, whether hit or not.
11973    This is called after any breakpoint is hit, or after errors.  */
11974
11975 void
11976 breakpoint_auto_delete (bpstat bs)
11977 {
11978   struct breakpoint *b, *b_tmp;
11979
11980   for (; bs; bs = bs->next)
11981     if (bs->breakpoint_at
11982         && bs->breakpoint_at->disposition == disp_del
11983         && bs->stop)
11984       delete_breakpoint (bs->breakpoint_at);
11985
11986   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11987   {
11988     if (b->disposition == disp_del_at_next_stop)
11989       delete_breakpoint (b);
11990   }
11991 }
11992
11993 /* A comparison function for bp_location AP and BP being interfaced to
11994    qsort.  Sort elements primarily by their ADDRESS (no matter what
11995    does breakpoint_address_is_meaningful say for its OWNER),
11996    secondarily by ordering first permanent elements and
11997    terciarily just ensuring the array is sorted stable way despite
11998    qsort being an unstable algorithm.  */
11999
12000 static int
12001 bp_locations_compare (const void *ap, const void *bp)
12002 {
12003   const struct bp_location *a = *(const struct bp_location **) ap;
12004   const struct bp_location *b = *(const struct bp_location **) bp;
12005
12006   if (a->address != b->address)
12007     return (a->address > b->address) - (a->address < b->address);
12008
12009   /* Sort locations at the same address by their pspace number, keeping
12010      locations of the same inferior (in a multi-inferior environment)
12011      grouped.  */
12012
12013   if (a->pspace->num != b->pspace->num)
12014     return ((a->pspace->num > b->pspace->num)
12015             - (a->pspace->num < b->pspace->num));
12016
12017   /* Sort permanent breakpoints first.  */
12018   if (a->permanent != b->permanent)
12019     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
12020
12021   /* Make the internal GDB representation stable across GDB runs
12022      where A and B memory inside GDB can differ.  Breakpoint locations of
12023      the same type at the same address can be sorted in arbitrary order.  */
12024
12025   if (a->owner->number != b->owner->number)
12026     return ((a->owner->number > b->owner->number)
12027             - (a->owner->number < b->owner->number));
12028
12029   return (a > b) - (a < b);
12030 }
12031
12032 /* Set bp_locations_placed_address_before_address_max and
12033    bp_locations_shadow_len_after_address_max according to the current
12034    content of the bp_locations array.  */
12035
12036 static void
12037 bp_locations_target_extensions_update (void)
12038 {
12039   struct bp_location *bl, **blp_tmp;
12040
12041   bp_locations_placed_address_before_address_max = 0;
12042   bp_locations_shadow_len_after_address_max = 0;
12043
12044   ALL_BP_LOCATIONS (bl, blp_tmp)
12045     {
12046       CORE_ADDR start, end, addr;
12047
12048       if (!bp_location_has_shadow (bl))
12049         continue;
12050
12051       start = bl->target_info.placed_address;
12052       end = start + bl->target_info.shadow_len;
12053
12054       gdb_assert (bl->address >= start);
12055       addr = bl->address - start;
12056       if (addr > bp_locations_placed_address_before_address_max)
12057         bp_locations_placed_address_before_address_max = addr;
12058
12059       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12060
12061       gdb_assert (bl->address < end);
12062       addr = end - bl->address;
12063       if (addr > bp_locations_shadow_len_after_address_max)
12064         bp_locations_shadow_len_after_address_max = addr;
12065     }
12066 }
12067
12068 /* Download tracepoint locations if they haven't been.  */
12069
12070 static void
12071 download_tracepoint_locations (void)
12072 {
12073   struct breakpoint *b;
12074   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
12075
12076   scoped_restore_current_pspace_and_thread restore_pspace_thread;
12077
12078   ALL_TRACEPOINTS (b)
12079     {
12080       struct bp_location *bl;
12081       struct tracepoint *t;
12082       int bp_location_downloaded = 0;
12083
12084       if ((b->type == bp_fast_tracepoint
12085            ? !may_insert_fast_tracepoints
12086            : !may_insert_tracepoints))
12087         continue;
12088
12089       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12090         {
12091           if (target_can_download_tracepoint ())
12092             can_download_tracepoint = TRIBOOL_TRUE;
12093           else
12094             can_download_tracepoint = TRIBOOL_FALSE;
12095         }
12096
12097       if (can_download_tracepoint == TRIBOOL_FALSE)
12098         break;
12099
12100       for (bl = b->loc; bl; bl = bl->next)
12101         {
12102           /* In tracepoint, locations are _never_ duplicated, so
12103              should_be_inserted is equivalent to
12104              unduplicated_should_be_inserted.  */
12105           if (!should_be_inserted (bl) || bl->inserted)
12106             continue;
12107
12108           switch_to_program_space_and_thread (bl->pspace);
12109
12110           target_download_tracepoint (bl);
12111
12112           bl->inserted = 1;
12113           bp_location_downloaded = 1;
12114         }
12115       t = (struct tracepoint *) b;
12116       t->number_on_target = b->number;
12117       if (bp_location_downloaded)
12118         observer_notify_breakpoint_modified (b);
12119     }
12120 }
12121
12122 /* Swap the insertion/duplication state between two locations.  */
12123
12124 static void
12125 swap_insertion (struct bp_location *left, struct bp_location *right)
12126 {
12127   const int left_inserted = left->inserted;
12128   const int left_duplicate = left->duplicate;
12129   const int left_needs_update = left->needs_update;
12130   const struct bp_target_info left_target_info = left->target_info;
12131
12132   /* Locations of tracepoints can never be duplicated.  */
12133   if (is_tracepoint (left->owner))
12134     gdb_assert (!left->duplicate);
12135   if (is_tracepoint (right->owner))
12136     gdb_assert (!right->duplicate);
12137
12138   left->inserted = right->inserted;
12139   left->duplicate = right->duplicate;
12140   left->needs_update = right->needs_update;
12141   left->target_info = right->target_info;
12142   right->inserted = left_inserted;
12143   right->duplicate = left_duplicate;
12144   right->needs_update = left_needs_update;
12145   right->target_info = left_target_info;
12146 }
12147
12148 /* Force the re-insertion of the locations at ADDRESS.  This is called
12149    once a new/deleted/modified duplicate location is found and we are evaluating
12150    conditions on the target's side.  Such conditions need to be updated on
12151    the target.  */
12152
12153 static void
12154 force_breakpoint_reinsertion (struct bp_location *bl)
12155 {
12156   struct bp_location **locp = NULL, **loc2p;
12157   struct bp_location *loc;
12158   CORE_ADDR address = 0;
12159   int pspace_num;
12160
12161   address = bl->address;
12162   pspace_num = bl->pspace->num;
12163
12164   /* This is only meaningful if the target is
12165      evaluating conditions and if the user has
12166      opted for condition evaluation on the target's
12167      side.  */
12168   if (gdb_evaluates_breakpoint_condition_p ()
12169       || !target_supports_evaluation_of_breakpoint_conditions ())
12170     return;
12171
12172   /* Flag all breakpoint locations with this address and
12173      the same program space as the location
12174      as "its condition has changed".  We need to
12175      update the conditions on the target's side.  */
12176   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12177     {
12178       loc = *loc2p;
12179
12180       if (!is_breakpoint (loc->owner)
12181           || pspace_num != loc->pspace->num)
12182         continue;
12183
12184       /* Flag the location appropriately.  We use a different state to
12185          let everyone know that we already updated the set of locations
12186          with addr bl->address and program space bl->pspace.  This is so
12187          we don't have to keep calling these functions just to mark locations
12188          that have already been marked.  */
12189       loc->condition_changed = condition_updated;
12190
12191       /* Free the agent expression bytecode as well.  We will compute
12192          it later on.  */
12193       loc->cond_bytecode.reset ();
12194     }
12195 }
12196 /* Called whether new breakpoints are created, or existing breakpoints
12197    deleted, to update the global location list and recompute which
12198    locations are duplicate of which.
12199
12200    The INSERT_MODE flag determines whether locations may not, may, or
12201    shall be inserted now.  See 'enum ugll_insert_mode' for more
12202    info.  */
12203
12204 static void
12205 update_global_location_list (enum ugll_insert_mode insert_mode)
12206 {
12207   struct breakpoint *b;
12208   struct bp_location **locp, *loc;
12209   struct cleanup *cleanups;
12210   /* Last breakpoint location address that was marked for update.  */
12211   CORE_ADDR last_addr = 0;
12212   /* Last breakpoint location program space that was marked for update.  */
12213   int last_pspace_num = -1;
12214
12215   /* Used in the duplicates detection below.  When iterating over all
12216      bp_locations, points to the first bp_location of a given address.
12217      Breakpoints and watchpoints of different types are never
12218      duplicates of each other.  Keep one pointer for each type of
12219      breakpoint/watchpoint, so we only need to loop over all locations
12220      once.  */
12221   struct bp_location *bp_loc_first;  /* breakpoint */
12222   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12223   struct bp_location *awp_loc_first; /* access watchpoint */
12224   struct bp_location *rwp_loc_first; /* read watchpoint */
12225
12226   /* Saved former bp_locations array which we compare against the newly
12227      built bp_locations from the current state of ALL_BREAKPOINTS.  */
12228   struct bp_location **old_locations, **old_locp;
12229   unsigned old_locations_count;
12230
12231   old_locations = bp_locations;
12232   old_locations_count = bp_locations_count;
12233   bp_locations = NULL;
12234   bp_locations_count = 0;
12235   cleanups = make_cleanup (xfree, old_locations);
12236
12237   ALL_BREAKPOINTS (b)
12238     for (loc = b->loc; loc; loc = loc->next)
12239       bp_locations_count++;
12240
12241   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
12242   locp = bp_locations;
12243   ALL_BREAKPOINTS (b)
12244     for (loc = b->loc; loc; loc = loc->next)
12245       *locp++ = loc;
12246   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
12247          bp_locations_compare);
12248
12249   bp_locations_target_extensions_update ();
12250
12251   /* Identify bp_location instances that are no longer present in the
12252      new list, and therefore should be freed.  Note that it's not
12253      necessary that those locations should be removed from inferior --
12254      if there's another location at the same address (previously
12255      marked as duplicate), we don't need to remove/insert the
12256      location.
12257      
12258      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12259      and former bp_location array state respectively.  */
12260
12261   locp = bp_locations;
12262   for (old_locp = old_locations;
12263        old_locp < old_locations + old_locations_count;
12264        old_locp++)
12265     {
12266       struct bp_location *old_loc = *old_locp;
12267       struct bp_location **loc2p;
12268
12269       /* Tells if 'old_loc' is found among the new locations.  If
12270          not, we have to free it.  */
12271       int found_object = 0;
12272       /* Tells if the location should remain inserted in the target.  */
12273       int keep_in_target = 0;
12274       int removed = 0;
12275
12276       /* Skip LOCP entries which will definitely never be needed.
12277          Stop either at or being the one matching OLD_LOC.  */
12278       while (locp < bp_locations + bp_locations_count
12279              && (*locp)->address < old_loc->address)
12280         locp++;
12281
12282       for (loc2p = locp;
12283            (loc2p < bp_locations + bp_locations_count
12284             && (*loc2p)->address == old_loc->address);
12285            loc2p++)
12286         {
12287           /* Check if this is a new/duplicated location or a duplicated
12288              location that had its condition modified.  If so, we want to send
12289              its condition to the target if evaluation of conditions is taking
12290              place there.  */
12291           if ((*loc2p)->condition_changed == condition_modified
12292               && (last_addr != old_loc->address
12293                   || last_pspace_num != old_loc->pspace->num))
12294             {
12295               force_breakpoint_reinsertion (*loc2p);
12296               last_pspace_num = old_loc->pspace->num;
12297             }
12298
12299           if (*loc2p == old_loc)
12300             found_object = 1;
12301         }
12302
12303       /* We have already handled this address, update it so that we don't
12304          have to go through updates again.  */
12305       last_addr = old_loc->address;
12306
12307       /* Target-side condition evaluation: Handle deleted locations.  */
12308       if (!found_object)
12309         force_breakpoint_reinsertion (old_loc);
12310
12311       /* If this location is no longer present, and inserted, look if
12312          there's maybe a new location at the same address.  If so,
12313          mark that one inserted, and don't remove this one.  This is
12314          needed so that we don't have a time window where a breakpoint
12315          at certain location is not inserted.  */
12316
12317       if (old_loc->inserted)
12318         {
12319           /* If the location is inserted now, we might have to remove
12320              it.  */
12321
12322           if (found_object && should_be_inserted (old_loc))
12323             {
12324               /* The location is still present in the location list,
12325                  and still should be inserted.  Don't do anything.  */
12326               keep_in_target = 1;
12327             }
12328           else
12329             {
12330               /* This location still exists, but it won't be kept in the
12331                  target since it may have been disabled.  We proceed to
12332                  remove its target-side condition.  */
12333
12334               /* The location is either no longer present, or got
12335                  disabled.  See if there's another location at the
12336                  same address, in which case we don't need to remove
12337                  this one from the target.  */
12338
12339               /* OLD_LOC comes from existing struct breakpoint.  */
12340               if (breakpoint_address_is_meaningful (old_loc->owner))
12341                 {
12342                   for (loc2p = locp;
12343                        (loc2p < bp_locations + bp_locations_count
12344                         && (*loc2p)->address == old_loc->address);
12345                        loc2p++)
12346                     {
12347                       struct bp_location *loc2 = *loc2p;
12348
12349                       if (breakpoint_locations_match (loc2, old_loc))
12350                         {
12351                           /* Read watchpoint locations are switched to
12352                              access watchpoints, if the former are not
12353                              supported, but the latter are.  */
12354                           if (is_hardware_watchpoint (old_loc->owner))
12355                             {
12356                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12357                               loc2->watchpoint_type = old_loc->watchpoint_type;
12358                             }
12359
12360                           /* loc2 is a duplicated location. We need to check
12361                              if it should be inserted in case it will be
12362                              unduplicated.  */
12363                           if (loc2 != old_loc
12364                               && unduplicated_should_be_inserted (loc2))
12365                             {
12366                               swap_insertion (old_loc, loc2);
12367                               keep_in_target = 1;
12368                               break;
12369                             }
12370                         }
12371                     }
12372                 }
12373             }
12374
12375           if (!keep_in_target)
12376             {
12377               if (remove_breakpoint (old_loc))
12378                 {
12379                   /* This is just about all we can do.  We could keep
12380                      this location on the global list, and try to
12381                      remove it next time, but there's no particular
12382                      reason why we will succeed next time.
12383                      
12384                      Note that at this point, old_loc->owner is still
12385                      valid, as delete_breakpoint frees the breakpoint
12386                      only after calling us.  */
12387                   printf_filtered (_("warning: Error removing "
12388                                      "breakpoint %d\n"), 
12389                                    old_loc->owner->number);
12390                 }
12391               removed = 1;
12392             }
12393         }
12394
12395       if (!found_object)
12396         {
12397           if (removed && target_is_non_stop_p ()
12398               && need_moribund_for_location_type (old_loc))
12399             {
12400               /* This location was removed from the target.  In
12401                  non-stop mode, a race condition is possible where
12402                  we've removed a breakpoint, but stop events for that
12403                  breakpoint are already queued and will arrive later.
12404                  We apply an heuristic to be able to distinguish such
12405                  SIGTRAPs from other random SIGTRAPs: we keep this
12406                  breakpoint location for a bit, and will retire it
12407                  after we see some number of events.  The theory here
12408                  is that reporting of events should, "on the average",
12409                  be fair, so after a while we'll see events from all
12410                  threads that have anything of interest, and no longer
12411                  need to keep this breakpoint location around.  We
12412                  don't hold locations forever so to reduce chances of
12413                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12414                  SIGTRAP.
12415
12416                  The heuristic failing can be disastrous on
12417                  decr_pc_after_break targets.
12418
12419                  On decr_pc_after_break targets, like e.g., x86-linux,
12420                  if we fail to recognize a late breakpoint SIGTRAP,
12421                  because events_till_retirement has reached 0 too
12422                  soon, we'll fail to do the PC adjustment, and report
12423                  a random SIGTRAP to the user.  When the user resumes
12424                  the inferior, it will most likely immediately crash
12425                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12426                  corrupted, because of being resumed e.g., in the
12427                  middle of a multi-byte instruction, or skipped a
12428                  one-byte instruction.  This was actually seen happen
12429                  on native x86-linux, and should be less rare on
12430                  targets that do not support new thread events, like
12431                  remote, due to the heuristic depending on
12432                  thread_count.
12433
12434                  Mistaking a random SIGTRAP for a breakpoint trap
12435                  causes similar symptoms (PC adjustment applied when
12436                  it shouldn't), but then again, playing with SIGTRAPs
12437                  behind the debugger's back is asking for trouble.
12438
12439                  Since hardware watchpoint traps are always
12440                  distinguishable from other traps, so we don't need to
12441                  apply keep hardware watchpoint moribund locations
12442                  around.  We simply always ignore hardware watchpoint
12443                  traps we can no longer explain.  */
12444
12445               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12446               old_loc->owner = NULL;
12447
12448               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12449             }
12450           else
12451             {
12452               old_loc->owner = NULL;
12453               decref_bp_location (&old_loc);
12454             }
12455         }
12456     }
12457
12458   /* Rescan breakpoints at the same address and section, marking the
12459      first one as "first" and any others as "duplicates".  This is so
12460      that the bpt instruction is only inserted once.  If we have a
12461      permanent breakpoint at the same place as BPT, make that one the
12462      official one, and the rest as duplicates.  Permanent breakpoints
12463      are sorted first for the same address.
12464
12465      Do the same for hardware watchpoints, but also considering the
12466      watchpoint's type (regular/access/read) and length.  */
12467
12468   bp_loc_first = NULL;
12469   wp_loc_first = NULL;
12470   awp_loc_first = NULL;
12471   rwp_loc_first = NULL;
12472   ALL_BP_LOCATIONS (loc, locp)
12473     {
12474       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12475          non-NULL.  */
12476       struct bp_location **loc_first_p;
12477       b = loc->owner;
12478
12479       if (!unduplicated_should_be_inserted (loc)
12480           || !breakpoint_address_is_meaningful (b)
12481           /* Don't detect duplicate for tracepoint locations because they are
12482            never duplicated.  See the comments in field `duplicate' of
12483            `struct bp_location'.  */
12484           || is_tracepoint (b))
12485         {
12486           /* Clear the condition modification flag.  */
12487           loc->condition_changed = condition_unchanged;
12488           continue;
12489         }
12490
12491       if (b->type == bp_hardware_watchpoint)
12492         loc_first_p = &wp_loc_first;
12493       else if (b->type == bp_read_watchpoint)
12494         loc_first_p = &rwp_loc_first;
12495       else if (b->type == bp_access_watchpoint)
12496         loc_first_p = &awp_loc_first;
12497       else
12498         loc_first_p = &bp_loc_first;
12499
12500       if (*loc_first_p == NULL
12501           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12502           || !breakpoint_locations_match (loc, *loc_first_p))
12503         {
12504           *loc_first_p = loc;
12505           loc->duplicate = 0;
12506
12507           if (is_breakpoint (loc->owner) && loc->condition_changed)
12508             {
12509               loc->needs_update = 1;
12510               /* Clear the condition modification flag.  */
12511               loc->condition_changed = condition_unchanged;
12512             }
12513           continue;
12514         }
12515
12516
12517       /* This and the above ensure the invariant that the first location
12518          is not duplicated, and is the inserted one.
12519          All following are marked as duplicated, and are not inserted.  */
12520       if (loc->inserted)
12521         swap_insertion (loc, *loc_first_p);
12522       loc->duplicate = 1;
12523
12524       /* Clear the condition modification flag.  */
12525       loc->condition_changed = condition_unchanged;
12526     }
12527
12528   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12529     {
12530       if (insert_mode != UGLL_DONT_INSERT)
12531         insert_breakpoint_locations ();
12532       else
12533         {
12534           /* Even though the caller told us to not insert new
12535              locations, we may still need to update conditions on the
12536              target's side of breakpoints that were already inserted
12537              if the target is evaluating breakpoint conditions.  We
12538              only update conditions for locations that are marked
12539              "needs_update".  */
12540           update_inserted_breakpoint_locations ();
12541         }
12542     }
12543
12544   if (insert_mode != UGLL_DONT_INSERT)
12545     download_tracepoint_locations ();
12546
12547   do_cleanups (cleanups);
12548 }
12549
12550 void
12551 breakpoint_retire_moribund (void)
12552 {
12553   struct bp_location *loc;
12554   int ix;
12555
12556   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12557     if (--(loc->events_till_retirement) == 0)
12558       {
12559         decref_bp_location (&loc);
12560         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12561         --ix;
12562       }
12563 }
12564
12565 static void
12566 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12567 {
12568
12569   TRY
12570     {
12571       update_global_location_list (insert_mode);
12572     }
12573   CATCH (e, RETURN_MASK_ERROR)
12574     {
12575     }
12576   END_CATCH
12577 }
12578
12579 /* Clear BKP from a BPS.  */
12580
12581 static void
12582 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12583 {
12584   bpstat bs;
12585
12586   for (bs = bps; bs; bs = bs->next)
12587     if (bs->breakpoint_at == bpt)
12588       {
12589         bs->breakpoint_at = NULL;
12590         bs->old_val = NULL;
12591         /* bs->commands will be freed later.  */
12592       }
12593 }
12594
12595 /* Callback for iterate_over_threads.  */
12596 static int
12597 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12598 {
12599   struct breakpoint *bpt = (struct breakpoint *) data;
12600
12601   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12602   return 0;
12603 }
12604
12605 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12606    callbacks.  */
12607
12608 static void
12609 say_where (struct breakpoint *b)
12610 {
12611   struct value_print_options opts;
12612
12613   get_user_print_options (&opts);
12614
12615   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12616      single string.  */
12617   if (b->loc == NULL)
12618     {
12619       /* For pending locations, the output differs slightly based
12620          on b->extra_string.  If this is non-NULL, it contains either
12621          a condition or dprintf arguments.  */
12622       if (b->extra_string == NULL)
12623         {
12624           printf_filtered (_(" (%s) pending."),
12625                            event_location_to_string (b->location.get ()));
12626         }
12627       else if (b->type == bp_dprintf)
12628         {
12629           printf_filtered (_(" (%s,%s) pending."),
12630                            event_location_to_string (b->location.get ()),
12631                            b->extra_string);
12632         }
12633       else
12634         {
12635           printf_filtered (_(" (%s %s) pending."),
12636                            event_location_to_string (b->location.get ()),
12637                            b->extra_string);
12638         }
12639     }
12640   else
12641     {
12642       if (opts.addressprint || b->loc->symtab == NULL)
12643         {
12644           printf_filtered (" at ");
12645           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12646                           gdb_stdout);
12647         }
12648       if (b->loc->symtab != NULL)
12649         {
12650           /* If there is a single location, we can print the location
12651              more nicely.  */
12652           if (b->loc->next == NULL)
12653             printf_filtered (": file %s, line %d.",
12654                              symtab_to_filename_for_display (b->loc->symtab),
12655                              b->loc->line_number);
12656           else
12657             /* This is not ideal, but each location may have a
12658                different file name, and this at least reflects the
12659                real situation somewhat.  */
12660             printf_filtered (": %s.",
12661                              event_location_to_string (b->location.get ()));
12662         }
12663
12664       if (b->loc->next)
12665         {
12666           struct bp_location *loc = b->loc;
12667           int n = 0;
12668           for (; loc; loc = loc->next)
12669             ++n;
12670           printf_filtered (" (%d locations)", n);
12671         }
12672     }
12673 }
12674
12675 /* Default bp_location_ops methods.  */
12676
12677 static void
12678 bp_location_dtor (struct bp_location *self)
12679 {
12680   xfree (self->function_name);
12681 }
12682
12683 static const struct bp_location_ops bp_location_ops =
12684 {
12685   bp_location_dtor
12686 };
12687
12688 /* Destructor for the breakpoint base class.  */
12689
12690 breakpoint::~breakpoint ()
12691 {
12692   decref_counted_command_line (&this->commands);
12693   xfree (this->cond_string);
12694   xfree (this->extra_string);
12695   xfree (this->filter);
12696 }
12697
12698 static struct bp_location *
12699 base_breakpoint_allocate_location (struct breakpoint *self)
12700 {
12701   return new bp_location (&bp_location_ops, self);
12702 }
12703
12704 static void
12705 base_breakpoint_re_set (struct breakpoint *b)
12706 {
12707   /* Nothing to re-set. */
12708 }
12709
12710 #define internal_error_pure_virtual_called() \
12711   gdb_assert_not_reached ("pure virtual function called")
12712
12713 static int
12714 base_breakpoint_insert_location (struct bp_location *bl)
12715 {
12716   internal_error_pure_virtual_called ();
12717 }
12718
12719 static int
12720 base_breakpoint_remove_location (struct bp_location *bl,
12721                                  enum remove_bp_reason reason)
12722 {
12723   internal_error_pure_virtual_called ();
12724 }
12725
12726 static int
12727 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12728                                 struct address_space *aspace,
12729                                 CORE_ADDR bp_addr,
12730                                 const struct target_waitstatus *ws)
12731 {
12732   internal_error_pure_virtual_called ();
12733 }
12734
12735 static void
12736 base_breakpoint_check_status (bpstat bs)
12737 {
12738   /* Always stop.   */
12739 }
12740
12741 /* A "works_in_software_mode" breakpoint_ops method that just internal
12742    errors.  */
12743
12744 static int
12745 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12746 {
12747   internal_error_pure_virtual_called ();
12748 }
12749
12750 /* A "resources_needed" breakpoint_ops method that just internal
12751    errors.  */
12752
12753 static int
12754 base_breakpoint_resources_needed (const struct bp_location *bl)
12755 {
12756   internal_error_pure_virtual_called ();
12757 }
12758
12759 static enum print_stop_action
12760 base_breakpoint_print_it (bpstat bs)
12761 {
12762   internal_error_pure_virtual_called ();
12763 }
12764
12765 static void
12766 base_breakpoint_print_one_detail (const struct breakpoint *self,
12767                                   struct ui_out *uiout)
12768 {
12769   /* nothing */
12770 }
12771
12772 static void
12773 base_breakpoint_print_mention (struct breakpoint *b)
12774 {
12775   internal_error_pure_virtual_called ();
12776 }
12777
12778 static void
12779 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12780 {
12781   internal_error_pure_virtual_called ();
12782 }
12783
12784 static void
12785 base_breakpoint_create_sals_from_location
12786   (const struct event_location *location,
12787    struct linespec_result *canonical,
12788    enum bptype type_wanted)
12789 {
12790   internal_error_pure_virtual_called ();
12791 }
12792
12793 static void
12794 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12795                                         struct linespec_result *c,
12796                                         gdb::unique_xmalloc_ptr<char> cond_string,
12797                                         gdb::unique_xmalloc_ptr<char> extra_string,
12798                                         enum bptype type_wanted,
12799                                         enum bpdisp disposition,
12800                                         int thread,
12801                                         int task, int ignore_count,
12802                                         const struct breakpoint_ops *o,
12803                                         int from_tty, int enabled,
12804                                         int internal, unsigned flags)
12805 {
12806   internal_error_pure_virtual_called ();
12807 }
12808
12809 static void
12810 base_breakpoint_decode_location (struct breakpoint *b,
12811                                  const struct event_location *location,
12812                                  struct program_space *search_pspace,
12813                                  struct symtabs_and_lines *sals)
12814 {
12815   internal_error_pure_virtual_called ();
12816 }
12817
12818 /* The default 'explains_signal' method.  */
12819
12820 static int
12821 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12822 {
12823   return 1;
12824 }
12825
12826 /* The default "after_condition_true" method.  */
12827
12828 static void
12829 base_breakpoint_after_condition_true (struct bpstats *bs)
12830 {
12831   /* Nothing to do.   */
12832 }
12833
12834 struct breakpoint_ops base_breakpoint_ops =
12835 {
12836   base_breakpoint_allocate_location,
12837   base_breakpoint_re_set,
12838   base_breakpoint_insert_location,
12839   base_breakpoint_remove_location,
12840   base_breakpoint_breakpoint_hit,
12841   base_breakpoint_check_status,
12842   base_breakpoint_resources_needed,
12843   base_breakpoint_works_in_software_mode,
12844   base_breakpoint_print_it,
12845   NULL,
12846   base_breakpoint_print_one_detail,
12847   base_breakpoint_print_mention,
12848   base_breakpoint_print_recreate,
12849   base_breakpoint_create_sals_from_location,
12850   base_breakpoint_create_breakpoints_sal,
12851   base_breakpoint_decode_location,
12852   base_breakpoint_explains_signal,
12853   base_breakpoint_after_condition_true,
12854 };
12855
12856 /* Default breakpoint_ops methods.  */
12857
12858 static void
12859 bkpt_re_set (struct breakpoint *b)
12860 {
12861   /* FIXME: is this still reachable?  */
12862   if (breakpoint_event_location_empty_p (b))
12863     {
12864       /* Anything without a location can't be re-set.  */
12865       delete_breakpoint (b);
12866       return;
12867     }
12868
12869   breakpoint_re_set_default (b);
12870 }
12871
12872 static int
12873 bkpt_insert_location (struct bp_location *bl)
12874 {
12875   CORE_ADDR addr = bl->target_info.reqstd_address;
12876
12877   bl->target_info.kind = breakpoint_kind (bl, &addr);
12878   bl->target_info.placed_address = addr;
12879
12880   if (bl->loc_type == bp_loc_hardware_breakpoint)
12881     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12882   else
12883     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12884 }
12885
12886 static int
12887 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12888 {
12889   if (bl->loc_type == bp_loc_hardware_breakpoint)
12890     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12891   else
12892     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12893 }
12894
12895 static int
12896 bkpt_breakpoint_hit (const struct bp_location *bl,
12897                      struct address_space *aspace, CORE_ADDR bp_addr,
12898                      const struct target_waitstatus *ws)
12899 {
12900   if (ws->kind != TARGET_WAITKIND_STOPPED
12901       || ws->value.sig != GDB_SIGNAL_TRAP)
12902     return 0;
12903
12904   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12905                                  aspace, bp_addr))
12906     return 0;
12907
12908   if (overlay_debugging         /* unmapped overlay section */
12909       && section_is_overlay (bl->section)
12910       && !section_is_mapped (bl->section))
12911     return 0;
12912
12913   return 1;
12914 }
12915
12916 static int
12917 dprintf_breakpoint_hit (const struct bp_location *bl,
12918                         struct address_space *aspace, CORE_ADDR bp_addr,
12919                         const struct target_waitstatus *ws)
12920 {
12921   if (dprintf_style == dprintf_style_agent
12922       && target_can_run_breakpoint_commands ())
12923     {
12924       /* An agent-style dprintf never causes a stop.  If we see a trap
12925          for this address it must be for a breakpoint that happens to
12926          be set at the same address.  */
12927       return 0;
12928     }
12929
12930   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12931 }
12932
12933 static int
12934 bkpt_resources_needed (const struct bp_location *bl)
12935 {
12936   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12937
12938   return 1;
12939 }
12940
12941 static enum print_stop_action
12942 bkpt_print_it (bpstat bs)
12943 {
12944   struct breakpoint *b;
12945   const struct bp_location *bl;
12946   int bp_temp;
12947   struct ui_out *uiout = current_uiout;
12948
12949   gdb_assert (bs->bp_location_at != NULL);
12950
12951   bl = bs->bp_location_at;
12952   b = bs->breakpoint_at;
12953
12954   bp_temp = b->disposition == disp_del;
12955   if (bl->address != bl->requested_address)
12956     breakpoint_adjustment_warning (bl->requested_address,
12957                                    bl->address,
12958                                    b->number, 1);
12959   annotate_breakpoint (b->number);
12960   maybe_print_thread_hit_breakpoint (uiout);
12961
12962   if (bp_temp)
12963     uiout->text ("Temporary breakpoint ");
12964   else
12965     uiout->text ("Breakpoint ");
12966   if (uiout->is_mi_like_p ())
12967     {
12968       uiout->field_string ("reason",
12969                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12970       uiout->field_string ("disp", bpdisp_text (b->disposition));
12971     }
12972   uiout->field_int ("bkptno", b->number);
12973   uiout->text (", ");
12974
12975   return PRINT_SRC_AND_LOC;
12976 }
12977
12978 static void
12979 bkpt_print_mention (struct breakpoint *b)
12980 {
12981   if (current_uiout->is_mi_like_p ())
12982     return;
12983
12984   switch (b->type)
12985     {
12986     case bp_breakpoint:
12987     case bp_gnu_ifunc_resolver:
12988       if (b->disposition == disp_del)
12989         printf_filtered (_("Temporary breakpoint"));
12990       else
12991         printf_filtered (_("Breakpoint"));
12992       printf_filtered (_(" %d"), b->number);
12993       if (b->type == bp_gnu_ifunc_resolver)
12994         printf_filtered (_(" at gnu-indirect-function resolver"));
12995       break;
12996     case bp_hardware_breakpoint:
12997       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12998       break;
12999     case bp_dprintf:
13000       printf_filtered (_("Dprintf %d"), b->number);
13001       break;
13002     }
13003
13004   say_where (b);
13005 }
13006
13007 static void
13008 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13009 {
13010   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13011     fprintf_unfiltered (fp, "tbreak");
13012   else if (tp->type == bp_breakpoint)
13013     fprintf_unfiltered (fp, "break");
13014   else if (tp->type == bp_hardware_breakpoint
13015            && tp->disposition == disp_del)
13016     fprintf_unfiltered (fp, "thbreak");
13017   else if (tp->type == bp_hardware_breakpoint)
13018     fprintf_unfiltered (fp, "hbreak");
13019   else
13020     internal_error (__FILE__, __LINE__,
13021                     _("unhandled breakpoint type %d"), (int) tp->type);
13022
13023   fprintf_unfiltered (fp, " %s",
13024                       event_location_to_string (tp->location.get ()));
13025
13026   /* Print out extra_string if this breakpoint is pending.  It might
13027      contain, for example, conditions that were set by the user.  */
13028   if (tp->loc == NULL && tp->extra_string != NULL)
13029     fprintf_unfiltered (fp, " %s", tp->extra_string);
13030
13031   print_recreate_thread (tp, fp);
13032 }
13033
13034 static void
13035 bkpt_create_sals_from_location (const struct event_location *location,
13036                                 struct linespec_result *canonical,
13037                                 enum bptype type_wanted)
13038 {
13039   create_sals_from_location_default (location, canonical, type_wanted);
13040 }
13041
13042 static void
13043 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13044                              struct linespec_result *canonical,
13045                              gdb::unique_xmalloc_ptr<char> cond_string,
13046                              gdb::unique_xmalloc_ptr<char> extra_string,
13047                              enum bptype type_wanted,
13048                              enum bpdisp disposition,
13049                              int thread,
13050                              int task, int ignore_count,
13051                              const struct breakpoint_ops *ops,
13052                              int from_tty, int enabled,
13053                              int internal, unsigned flags)
13054 {
13055   create_breakpoints_sal_default (gdbarch, canonical,
13056                                   std::move (cond_string),
13057                                   std::move (extra_string),
13058                                   type_wanted,
13059                                   disposition, thread, task,
13060                                   ignore_count, ops, from_tty,
13061                                   enabled, internal, flags);
13062 }
13063
13064 static void
13065 bkpt_decode_location (struct breakpoint *b,
13066                       const struct event_location *location,
13067                       struct program_space *search_pspace,
13068                       struct symtabs_and_lines *sals)
13069 {
13070   decode_location_default (b, location, search_pspace, sals);
13071 }
13072
13073 /* Virtual table for internal breakpoints.  */
13074
13075 static void
13076 internal_bkpt_re_set (struct breakpoint *b)
13077 {
13078   switch (b->type)
13079     {
13080       /* Delete overlay event and longjmp master breakpoints; they
13081          will be reset later by breakpoint_re_set.  */
13082     case bp_overlay_event:
13083     case bp_longjmp_master:
13084     case bp_std_terminate_master:
13085     case bp_exception_master:
13086       delete_breakpoint (b);
13087       break;
13088
13089       /* This breakpoint is special, it's set up when the inferior
13090          starts and we really don't want to touch it.  */
13091     case bp_shlib_event:
13092
13093       /* Like bp_shlib_event, this breakpoint type is special.  Once
13094          it is set up, we do not want to touch it.  */
13095     case bp_thread_event:
13096       break;
13097     }
13098 }
13099
13100 static void
13101 internal_bkpt_check_status (bpstat bs)
13102 {
13103   if (bs->breakpoint_at->type == bp_shlib_event)
13104     {
13105       /* If requested, stop when the dynamic linker notifies GDB of
13106          events.  This allows the user to get control and place
13107          breakpoints in initializer routines for dynamically loaded
13108          objects (among other things).  */
13109       bs->stop = stop_on_solib_events;
13110       bs->print = stop_on_solib_events;
13111     }
13112   else
13113     bs->stop = 0;
13114 }
13115
13116 static enum print_stop_action
13117 internal_bkpt_print_it (bpstat bs)
13118 {
13119   struct breakpoint *b;
13120
13121   b = bs->breakpoint_at;
13122
13123   switch (b->type)
13124     {
13125     case bp_shlib_event:
13126       /* Did we stop because the user set the stop_on_solib_events
13127          variable?  (If so, we report this as a generic, "Stopped due
13128          to shlib event" message.) */
13129       print_solib_event (0);
13130       break;
13131
13132     case bp_thread_event:
13133       /* Not sure how we will get here.
13134          GDB should not stop for these breakpoints.  */
13135       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13136       break;
13137
13138     case bp_overlay_event:
13139       /* By analogy with the thread event, GDB should not stop for these.  */
13140       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13141       break;
13142
13143     case bp_longjmp_master:
13144       /* These should never be enabled.  */
13145       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13146       break;
13147
13148     case bp_std_terminate_master:
13149       /* These should never be enabled.  */
13150       printf_filtered (_("std::terminate Master Breakpoint: "
13151                          "gdb should not stop!\n"));
13152       break;
13153
13154     case bp_exception_master:
13155       /* These should never be enabled.  */
13156       printf_filtered (_("Exception Master Breakpoint: "
13157                          "gdb should not stop!\n"));
13158       break;
13159     }
13160
13161   return PRINT_NOTHING;
13162 }
13163
13164 static void
13165 internal_bkpt_print_mention (struct breakpoint *b)
13166 {
13167   /* Nothing to mention.  These breakpoints are internal.  */
13168 }
13169
13170 /* Virtual table for momentary breakpoints  */
13171
13172 static void
13173 momentary_bkpt_re_set (struct breakpoint *b)
13174 {
13175   /* Keep temporary breakpoints, which can be encountered when we step
13176      over a dlopen call and solib_add is resetting the breakpoints.
13177      Otherwise these should have been blown away via the cleanup chain
13178      or by breakpoint_init_inferior when we rerun the executable.  */
13179 }
13180
13181 static void
13182 momentary_bkpt_check_status (bpstat bs)
13183 {
13184   /* Nothing.  The point of these breakpoints is causing a stop.  */
13185 }
13186
13187 static enum print_stop_action
13188 momentary_bkpt_print_it (bpstat bs)
13189 {
13190   return PRINT_UNKNOWN;
13191 }
13192
13193 static void
13194 momentary_bkpt_print_mention (struct breakpoint *b)
13195 {
13196   /* Nothing to mention.  These breakpoints are internal.  */
13197 }
13198
13199 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13200
13201    It gets cleared already on the removal of the first one of such placed
13202    breakpoints.  This is OK as they get all removed altogether.  */
13203
13204 longjmp_breakpoint::~longjmp_breakpoint ()
13205 {
13206   thread_info *tp = find_thread_global_id (this->thread);
13207
13208   if (tp != NULL)
13209     tp->initiating_frame = null_frame_id;
13210 }
13211
13212 /* Specific methods for probe breakpoints.  */
13213
13214 static int
13215 bkpt_probe_insert_location (struct bp_location *bl)
13216 {
13217   int v = bkpt_insert_location (bl);
13218
13219   if (v == 0)
13220     {
13221       /* The insertion was successful, now let's set the probe's semaphore
13222          if needed.  */
13223       if (bl->probe.probe->pops->set_semaphore != NULL)
13224         bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13225                                               bl->probe.objfile,
13226                                               bl->gdbarch);
13227     }
13228
13229   return v;
13230 }
13231
13232 static int
13233 bkpt_probe_remove_location (struct bp_location *bl,
13234                             enum remove_bp_reason reason)
13235 {
13236   /* Let's clear the semaphore before removing the location.  */
13237   if (bl->probe.probe->pops->clear_semaphore != NULL)
13238     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13239                                             bl->probe.objfile,
13240                                             bl->gdbarch);
13241
13242   return bkpt_remove_location (bl, reason);
13243 }
13244
13245 static void
13246 bkpt_probe_create_sals_from_location (const struct event_location *location,
13247                                       struct linespec_result *canonical,
13248                                       enum bptype type_wanted)
13249 {
13250   struct linespec_sals lsal;
13251
13252   lsal.sals = parse_probes (location, NULL, canonical);
13253   lsal.canonical
13254     = xstrdup (event_location_to_string (canonical->location.get ()));
13255   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13256 }
13257
13258 static void
13259 bkpt_probe_decode_location (struct breakpoint *b,
13260                             const struct event_location *location,
13261                             struct program_space *search_pspace,
13262                             struct symtabs_and_lines *sals)
13263 {
13264   *sals = parse_probes (location, search_pspace, NULL);
13265   if (!sals->sals)
13266     error (_("probe not found"));
13267 }
13268
13269 /* The breakpoint_ops structure to be used in tracepoints.  */
13270
13271 static void
13272 tracepoint_re_set (struct breakpoint *b)
13273 {
13274   breakpoint_re_set_default (b);
13275 }
13276
13277 static int
13278 tracepoint_breakpoint_hit (const struct bp_location *bl,
13279                            struct address_space *aspace, CORE_ADDR bp_addr,
13280                            const struct target_waitstatus *ws)
13281 {
13282   /* By definition, the inferior does not report stops at
13283      tracepoints.  */
13284   return 0;
13285 }
13286
13287 static void
13288 tracepoint_print_one_detail (const struct breakpoint *self,
13289                              struct ui_out *uiout)
13290 {
13291   struct tracepoint *tp = (struct tracepoint *) self;
13292   if (tp->static_trace_marker_id)
13293     {
13294       gdb_assert (self->type == bp_static_tracepoint);
13295
13296       uiout->text ("\tmarker id is ");
13297       uiout->field_string ("static-tracepoint-marker-string-id",
13298                            tp->static_trace_marker_id);
13299       uiout->text ("\n");
13300     }
13301 }
13302
13303 static void
13304 tracepoint_print_mention (struct breakpoint *b)
13305 {
13306   if (current_uiout->is_mi_like_p ())
13307     return;
13308
13309   switch (b->type)
13310     {
13311     case bp_tracepoint:
13312       printf_filtered (_("Tracepoint"));
13313       printf_filtered (_(" %d"), b->number);
13314       break;
13315     case bp_fast_tracepoint:
13316       printf_filtered (_("Fast tracepoint"));
13317       printf_filtered (_(" %d"), b->number);
13318       break;
13319     case bp_static_tracepoint:
13320       printf_filtered (_("Static tracepoint"));
13321       printf_filtered (_(" %d"), b->number);
13322       break;
13323     default:
13324       internal_error (__FILE__, __LINE__,
13325                       _("unhandled tracepoint type %d"), (int) b->type);
13326     }
13327
13328   say_where (b);
13329 }
13330
13331 static void
13332 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13333 {
13334   struct tracepoint *tp = (struct tracepoint *) self;
13335
13336   if (self->type == bp_fast_tracepoint)
13337     fprintf_unfiltered (fp, "ftrace");
13338   else if (self->type == bp_static_tracepoint)
13339     fprintf_unfiltered (fp, "strace");
13340   else if (self->type == bp_tracepoint)
13341     fprintf_unfiltered (fp, "trace");
13342   else
13343     internal_error (__FILE__, __LINE__,
13344                     _("unhandled tracepoint type %d"), (int) self->type);
13345
13346   fprintf_unfiltered (fp, " %s",
13347                       event_location_to_string (self->location.get ()));
13348   print_recreate_thread (self, fp);
13349
13350   if (tp->pass_count)
13351     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13352 }
13353
13354 static void
13355 tracepoint_create_sals_from_location (const struct event_location *location,
13356                                       struct linespec_result *canonical,
13357                                       enum bptype type_wanted)
13358 {
13359   create_sals_from_location_default (location, canonical, type_wanted);
13360 }
13361
13362 static void
13363 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13364                                    struct linespec_result *canonical,
13365                                    gdb::unique_xmalloc_ptr<char> cond_string,
13366                                    gdb::unique_xmalloc_ptr<char> extra_string,
13367                                    enum bptype type_wanted,
13368                                    enum bpdisp disposition,
13369                                    int thread,
13370                                    int task, int ignore_count,
13371                                    const struct breakpoint_ops *ops,
13372                                    int from_tty, int enabled,
13373                                    int internal, unsigned flags)
13374 {
13375   create_breakpoints_sal_default (gdbarch, canonical,
13376                                   std::move (cond_string),
13377                                   std::move (extra_string),
13378                                   type_wanted,
13379                                   disposition, thread, task,
13380                                   ignore_count, ops, from_tty,
13381                                   enabled, internal, flags);
13382 }
13383
13384 static void
13385 tracepoint_decode_location (struct breakpoint *b,
13386                             const struct event_location *location,
13387                             struct program_space *search_pspace,
13388                             struct symtabs_and_lines *sals)
13389 {
13390   decode_location_default (b, location, search_pspace, sals);
13391 }
13392
13393 struct breakpoint_ops tracepoint_breakpoint_ops;
13394
13395 /* The breakpoint_ops structure to be use on tracepoints placed in a
13396    static probe.  */
13397
13398 static void
13399 tracepoint_probe_create_sals_from_location
13400   (const struct event_location *location,
13401    struct linespec_result *canonical,
13402    enum bptype type_wanted)
13403 {
13404   /* We use the same method for breakpoint on probes.  */
13405   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13406 }
13407
13408 static void
13409 tracepoint_probe_decode_location (struct breakpoint *b,
13410                                   const struct event_location *location,
13411                                   struct program_space *search_pspace,
13412                                   struct symtabs_and_lines *sals)
13413 {
13414   /* We use the same method for breakpoint on probes.  */
13415   bkpt_probe_decode_location (b, location, search_pspace, sals);
13416 }
13417
13418 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13419
13420 /* Dprintf breakpoint_ops methods.  */
13421
13422 static void
13423 dprintf_re_set (struct breakpoint *b)
13424 {
13425   breakpoint_re_set_default (b);
13426
13427   /* extra_string should never be non-NULL for dprintf.  */
13428   gdb_assert (b->extra_string != NULL);
13429
13430   /* 1 - connect to target 1, that can run breakpoint commands.
13431      2 - create a dprintf, which resolves fine.
13432      3 - disconnect from target 1
13433      4 - connect to target 2, that can NOT run breakpoint commands.
13434
13435      After steps #3/#4, you'll want the dprintf command list to
13436      be updated, because target 1 and 2 may well return different
13437      answers for target_can_run_breakpoint_commands().
13438      Given absence of finer grained resetting, we get to do
13439      it all the time.  */
13440   if (b->extra_string != NULL)
13441     update_dprintf_command_list (b);
13442 }
13443
13444 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13445
13446 static void
13447 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13448 {
13449   fprintf_unfiltered (fp, "dprintf %s,%s",
13450                       event_location_to_string (tp->location.get ()),
13451                       tp->extra_string);
13452   print_recreate_thread (tp, fp);
13453 }
13454
13455 /* Implement the "after_condition_true" breakpoint_ops method for
13456    dprintf.
13457
13458    dprintf's are implemented with regular commands in their command
13459    list, but we run the commands here instead of before presenting the
13460    stop to the user, as dprintf's don't actually cause a stop.  This
13461    also makes it so that the commands of multiple dprintfs at the same
13462    address are all handled.  */
13463
13464 static void
13465 dprintf_after_condition_true (struct bpstats *bs)
13466 {
13467   struct cleanup *old_chain;
13468   struct bpstats tmp_bs = { NULL };
13469   struct bpstats *tmp_bs_p = &tmp_bs;
13470
13471   /* dprintf's never cause a stop.  This wasn't set in the
13472      check_status hook instead because that would make the dprintf's
13473      condition not be evaluated.  */
13474   bs->stop = 0;
13475
13476   /* Run the command list here.  Take ownership of it instead of
13477      copying.  We never want these commands to run later in
13478      bpstat_do_actions, if a breakpoint that causes a stop happens to
13479      be set at same address as this dprintf, or even if running the
13480      commands here throws.  */
13481   tmp_bs.commands = bs->commands;
13482   bs->commands = NULL;
13483   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13484
13485   bpstat_do_actions_1 (&tmp_bs_p);
13486
13487   /* 'tmp_bs.commands' will usually be NULL by now, but
13488      bpstat_do_actions_1 may return early without processing the whole
13489      list.  */
13490   do_cleanups (old_chain);
13491 }
13492
13493 /* The breakpoint_ops structure to be used on static tracepoints with
13494    markers (`-m').  */
13495
13496 static void
13497 strace_marker_create_sals_from_location (const struct event_location *location,
13498                                          struct linespec_result *canonical,
13499                                          enum bptype type_wanted)
13500 {
13501   struct linespec_sals lsal;
13502   const char *arg_start, *arg;
13503   char *str;
13504   struct cleanup *cleanup;
13505
13506   arg = arg_start = get_linespec_location (location);
13507   lsal.sals = decode_static_tracepoint_spec (&arg);
13508
13509   str = savestring (arg_start, arg - arg_start);
13510   cleanup = make_cleanup (xfree, str);
13511   canonical->location = new_linespec_location (&str);
13512   do_cleanups (cleanup);
13513
13514   lsal.canonical
13515     = xstrdup (event_location_to_string (canonical->location.get ()));
13516   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13517 }
13518
13519 static void
13520 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13521                                       struct linespec_result *canonical,
13522                                       gdb::unique_xmalloc_ptr<char> cond_string,
13523                                       gdb::unique_xmalloc_ptr<char> extra_string,
13524                                       enum bptype type_wanted,
13525                                       enum bpdisp disposition,
13526                                       int thread,
13527                                       int task, int ignore_count,
13528                                       const struct breakpoint_ops *ops,
13529                                       int from_tty, int enabled,
13530                                       int internal, unsigned flags)
13531 {
13532   int i;
13533   struct linespec_sals *lsal = VEC_index (linespec_sals,
13534                                           canonical->sals, 0);
13535
13536   /* If the user is creating a static tracepoint by marker id
13537      (strace -m MARKER_ID), then store the sals index, so that
13538      breakpoint_re_set can try to match up which of the newly
13539      found markers corresponds to this one, and, don't try to
13540      expand multiple locations for each sal, given than SALS
13541      already should contain all sals for MARKER_ID.  */
13542
13543   for (i = 0; i < lsal->sals.nelts; ++i)
13544     {
13545       struct symtabs_and_lines expanded;
13546       event_location_up location;
13547
13548       expanded.nelts = 1;
13549       expanded.sals = &lsal->sals.sals[i];
13550
13551       location = copy_event_location (canonical->location.get ());
13552
13553       std::unique_ptr<tracepoint> tp (new tracepoint ());
13554       init_breakpoint_sal (tp.get (), gdbarch, expanded,
13555                            std::move (location), NULL,
13556                            std::move (cond_string),
13557                            std::move (extra_string),
13558                            type_wanted, disposition,
13559                            thread, task, ignore_count, ops,
13560                            from_tty, enabled, internal, flags,
13561                            canonical->special_display);
13562       /* Given that its possible to have multiple markers with
13563          the same string id, if the user is creating a static
13564          tracepoint by marker id ("strace -m MARKER_ID"), then
13565          store the sals index, so that breakpoint_re_set can
13566          try to match up which of the newly found markers
13567          corresponds to this one  */
13568       tp->static_trace_marker_id_idx = i;
13569
13570       install_breakpoint (internal, std::move (tp), 0);
13571     }
13572 }
13573
13574 static void
13575 strace_marker_decode_location (struct breakpoint *b,
13576                                const struct event_location *location,
13577                                struct program_space *search_pspace,
13578                                struct symtabs_and_lines *sals)
13579 {
13580   struct tracepoint *tp = (struct tracepoint *) b;
13581   const char *s = get_linespec_location (location);
13582
13583   *sals = decode_static_tracepoint_spec (&s);
13584   if (sals->nelts > tp->static_trace_marker_id_idx)
13585     {
13586       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13587       sals->nelts = 1;
13588     }
13589   else
13590     error (_("marker %s not found"), tp->static_trace_marker_id);
13591 }
13592
13593 static struct breakpoint_ops strace_marker_breakpoint_ops;
13594
13595 static int
13596 strace_marker_p (struct breakpoint *b)
13597 {
13598   return b->ops == &strace_marker_breakpoint_ops;
13599 }
13600
13601 /* Delete a breakpoint and clean up all traces of it in the data
13602    structures.  */
13603
13604 void
13605 delete_breakpoint (struct breakpoint *bpt)
13606 {
13607   struct breakpoint *b;
13608
13609   gdb_assert (bpt != NULL);
13610
13611   /* Has this bp already been deleted?  This can happen because
13612      multiple lists can hold pointers to bp's.  bpstat lists are
13613      especial culprits.
13614
13615      One example of this happening is a watchpoint's scope bp.  When
13616      the scope bp triggers, we notice that the watchpoint is out of
13617      scope, and delete it.  We also delete its scope bp.  But the
13618      scope bp is marked "auto-deleting", and is already on a bpstat.
13619      That bpstat is then checked for auto-deleting bp's, which are
13620      deleted.
13621
13622      A real solution to this problem might involve reference counts in
13623      bp's, and/or giving them pointers back to their referencing
13624      bpstat's, and teaching delete_breakpoint to only free a bp's
13625      storage when no more references were extent.  A cheaper bandaid
13626      was chosen.  */
13627   if (bpt->type == bp_none)
13628     return;
13629
13630   /* At least avoid this stale reference until the reference counting
13631      of breakpoints gets resolved.  */
13632   if (bpt->related_breakpoint != bpt)
13633     {
13634       struct breakpoint *related;
13635       struct watchpoint *w;
13636
13637       if (bpt->type == bp_watchpoint_scope)
13638         w = (struct watchpoint *) bpt->related_breakpoint;
13639       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13640         w = (struct watchpoint *) bpt;
13641       else
13642         w = NULL;
13643       if (w != NULL)
13644         watchpoint_del_at_next_stop (w);
13645
13646       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13647       for (related = bpt; related->related_breakpoint != bpt;
13648            related = related->related_breakpoint);
13649       related->related_breakpoint = bpt->related_breakpoint;
13650       bpt->related_breakpoint = bpt;
13651     }
13652
13653   /* watch_command_1 creates a watchpoint but only sets its number if
13654      update_watchpoint succeeds in creating its bp_locations.  If there's
13655      a problem in that process, we'll be asked to delete the half-created
13656      watchpoint.  In that case, don't announce the deletion.  */
13657   if (bpt->number)
13658     observer_notify_breakpoint_deleted (bpt);
13659
13660   if (breakpoint_chain == bpt)
13661     breakpoint_chain = bpt->next;
13662
13663   ALL_BREAKPOINTS (b)
13664     if (b->next == bpt)
13665     {
13666       b->next = bpt->next;
13667       break;
13668     }
13669
13670   /* Be sure no bpstat's are pointing at the breakpoint after it's
13671      been freed.  */
13672   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13673      in all threads for now.  Note that we cannot just remove bpstats
13674      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13675      commands are associated with the bpstat; if we remove it here,
13676      then the later call to bpstat_do_actions (&stop_bpstat); in
13677      event-top.c won't do anything, and temporary breakpoints with
13678      commands won't work.  */
13679
13680   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13681
13682   /* Now that breakpoint is removed from breakpoint list, update the
13683      global location list.  This will remove locations that used to
13684      belong to this breakpoint.  Do this before freeing the breakpoint
13685      itself, since remove_breakpoint looks at location's owner.  It
13686      might be better design to have location completely
13687      self-contained, but it's not the case now.  */
13688   update_global_location_list (UGLL_DONT_INSERT);
13689
13690   /* On the chance that someone will soon try again to delete this
13691      same bp, we mark it as deleted before freeing its storage.  */
13692   bpt->type = bp_none;
13693   delete bpt;
13694 }
13695
13696 static void
13697 do_delete_breakpoint_cleanup (void *b)
13698 {
13699   delete_breakpoint ((struct breakpoint *) b);
13700 }
13701
13702 struct cleanup *
13703 make_cleanup_delete_breakpoint (struct breakpoint *b)
13704 {
13705   return make_cleanup (do_delete_breakpoint_cleanup, b);
13706 }
13707
13708 /* Iterator function to call a user-provided callback function once
13709    for each of B and its related breakpoints.  */
13710
13711 static void
13712 iterate_over_related_breakpoints (struct breakpoint *b,
13713                                   void (*function) (struct breakpoint *,
13714                                                     void *),
13715                                   void *data)
13716 {
13717   struct breakpoint *related;
13718
13719   related = b;
13720   do
13721     {
13722       struct breakpoint *next;
13723
13724       /* FUNCTION may delete RELATED.  */
13725       next = related->related_breakpoint;
13726
13727       if (next == related)
13728         {
13729           /* RELATED is the last ring entry.  */
13730           function (related, data);
13731
13732           /* FUNCTION may have deleted it, so we'd never reach back to
13733              B.  There's nothing left to do anyway, so just break
13734              out.  */
13735           break;
13736         }
13737       else
13738         function (related, data);
13739
13740       related = next;
13741     }
13742   while (related != b);
13743 }
13744
13745 static void
13746 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13747 {
13748   delete_breakpoint (b);
13749 }
13750
13751 /* A callback for map_breakpoint_numbers that calls
13752    delete_breakpoint.  */
13753
13754 static void
13755 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13756 {
13757   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13758 }
13759
13760 void
13761 delete_command (char *arg, int from_tty)
13762 {
13763   struct breakpoint *b, *b_tmp;
13764
13765   dont_repeat ();
13766
13767   if (arg == 0)
13768     {
13769       int breaks_to_delete = 0;
13770
13771       /* Delete all breakpoints if no argument.  Do not delete
13772          internal breakpoints, these have to be deleted with an
13773          explicit breakpoint number argument.  */
13774       ALL_BREAKPOINTS (b)
13775         if (user_breakpoint_p (b))
13776           {
13777             breaks_to_delete = 1;
13778             break;
13779           }
13780
13781       /* Ask user only if there are some breakpoints to delete.  */
13782       if (!from_tty
13783           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13784         {
13785           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13786             if (user_breakpoint_p (b))
13787               delete_breakpoint (b);
13788         }
13789     }
13790   else
13791     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13792 }
13793
13794 /* Return true if all locations of B bound to PSPACE are pending.  If
13795    PSPACE is NULL, all locations of all program spaces are
13796    considered.  */
13797
13798 static int
13799 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13800 {
13801   struct bp_location *loc;
13802
13803   for (loc = b->loc; loc != NULL; loc = loc->next)
13804     if ((pspace == NULL
13805          || loc->pspace == pspace)
13806         && !loc->shlib_disabled
13807         && !loc->pspace->executing_startup)
13808       return 0;
13809   return 1;
13810 }
13811
13812 /* Subroutine of update_breakpoint_locations to simplify it.
13813    Return non-zero if multiple fns in list LOC have the same name.
13814    Null names are ignored.  */
13815
13816 static int
13817 ambiguous_names_p (struct bp_location *loc)
13818 {
13819   struct bp_location *l;
13820   htab_t htab = htab_create_alloc (13, htab_hash_string,
13821                                    (int (*) (const void *, 
13822                                              const void *)) streq,
13823                                    NULL, xcalloc, xfree);
13824
13825   for (l = loc; l != NULL; l = l->next)
13826     {
13827       const char **slot;
13828       const char *name = l->function_name;
13829
13830       /* Allow for some names to be NULL, ignore them.  */
13831       if (name == NULL)
13832         continue;
13833
13834       slot = (const char **) htab_find_slot (htab, (const void *) name,
13835                                              INSERT);
13836       /* NOTE: We can assume slot != NULL here because xcalloc never
13837          returns NULL.  */
13838       if (*slot != NULL)
13839         {
13840           htab_delete (htab);
13841           return 1;
13842         }
13843       *slot = name;
13844     }
13845
13846   htab_delete (htab);
13847   return 0;
13848 }
13849
13850 /* When symbols change, it probably means the sources changed as well,
13851    and it might mean the static tracepoint markers are no longer at
13852    the same address or line numbers they used to be at last we
13853    checked.  Losing your static tracepoints whenever you rebuild is
13854    undesirable.  This function tries to resync/rematch gdb static
13855    tracepoints with the markers on the target, for static tracepoints
13856    that have not been set by marker id.  Static tracepoint that have
13857    been set by marker id are reset by marker id in breakpoint_re_set.
13858    The heuristic is:
13859
13860    1) For a tracepoint set at a specific address, look for a marker at
13861    the old PC.  If one is found there, assume to be the same marker.
13862    If the name / string id of the marker found is different from the
13863    previous known name, assume that means the user renamed the marker
13864    in the sources, and output a warning.
13865
13866    2) For a tracepoint set at a given line number, look for a marker
13867    at the new address of the old line number.  If one is found there,
13868    assume to be the same marker.  If the name / string id of the
13869    marker found is different from the previous known name, assume that
13870    means the user renamed the marker in the sources, and output a
13871    warning.
13872
13873    3) If a marker is no longer found at the same address or line, it
13874    may mean the marker no longer exists.  But it may also just mean
13875    the code changed a bit.  Maybe the user added a few lines of code
13876    that made the marker move up or down (in line number terms).  Ask
13877    the target for info about the marker with the string id as we knew
13878    it.  If found, update line number and address in the matching
13879    static tracepoint.  This will get confused if there's more than one
13880    marker with the same ID (possible in UST, although unadvised
13881    precisely because it confuses tools).  */
13882
13883 static struct symtab_and_line
13884 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13885 {
13886   struct tracepoint *tp = (struct tracepoint *) b;
13887   struct static_tracepoint_marker marker;
13888   CORE_ADDR pc;
13889
13890   pc = sal.pc;
13891   if (sal.line)
13892     find_line_pc (sal.symtab, sal.line, &pc);
13893
13894   if (target_static_tracepoint_marker_at (pc, &marker))
13895     {
13896       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13897         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13898                  b->number,
13899                  tp->static_trace_marker_id, marker.str_id);
13900
13901       xfree (tp->static_trace_marker_id);
13902       tp->static_trace_marker_id = xstrdup (marker.str_id);
13903       release_static_tracepoint_marker (&marker);
13904
13905       return sal;
13906     }
13907
13908   /* Old marker wasn't found on target at lineno.  Try looking it up
13909      by string ID.  */
13910   if (!sal.explicit_pc
13911       && sal.line != 0
13912       && sal.symtab != NULL
13913       && tp->static_trace_marker_id != NULL)
13914     {
13915       VEC(static_tracepoint_marker_p) *markers;
13916
13917       markers
13918         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13919
13920       if (!VEC_empty(static_tracepoint_marker_p, markers))
13921         {
13922           struct symtab_and_line sal2;
13923           struct symbol *sym;
13924           struct static_tracepoint_marker *tpmarker;
13925           struct ui_out *uiout = current_uiout;
13926           struct explicit_location explicit_loc;
13927
13928           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13929
13930           xfree (tp->static_trace_marker_id);
13931           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13932
13933           warning (_("marker for static tracepoint %d (%s) not "
13934                      "found at previous line number"),
13935                    b->number, tp->static_trace_marker_id);
13936
13937           init_sal (&sal2);
13938
13939           sal2.pc = tpmarker->address;
13940
13941           sal2 = find_pc_line (tpmarker->address, 0);
13942           sym = find_pc_sect_function (tpmarker->address, NULL);
13943           uiout->text ("Now in ");
13944           if (sym)
13945             {
13946               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13947               uiout->text (" at ");
13948             }
13949           uiout->field_string ("file",
13950                                symtab_to_filename_for_display (sal2.symtab));
13951           uiout->text (":");
13952
13953           if (uiout->is_mi_like_p ())
13954             {
13955               const char *fullname = symtab_to_fullname (sal2.symtab);
13956
13957               uiout->field_string ("fullname", fullname);
13958             }
13959
13960           uiout->field_int ("line", sal2.line);
13961           uiout->text ("\n");
13962
13963           b->loc->line_number = sal2.line;
13964           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13965
13966           b->location.reset (NULL);
13967           initialize_explicit_location (&explicit_loc);
13968           explicit_loc.source_filename
13969             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13970           explicit_loc.line_offset.offset = b->loc->line_number;
13971           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13972           b->location = new_explicit_location (&explicit_loc);
13973
13974           /* Might be nice to check if function changed, and warn if
13975              so.  */
13976
13977           release_static_tracepoint_marker (tpmarker);
13978         }
13979     }
13980   return sal;
13981 }
13982
13983 /* Returns 1 iff locations A and B are sufficiently same that
13984    we don't need to report breakpoint as changed.  */
13985
13986 static int
13987 locations_are_equal (struct bp_location *a, struct bp_location *b)
13988 {
13989   while (a && b)
13990     {
13991       if (a->address != b->address)
13992         return 0;
13993
13994       if (a->shlib_disabled != b->shlib_disabled)
13995         return 0;
13996
13997       if (a->enabled != b->enabled)
13998         return 0;
13999
14000       a = a->next;
14001       b = b->next;
14002     }
14003
14004   if ((a == NULL) != (b == NULL))
14005     return 0;
14006
14007   return 1;
14008 }
14009
14010 /* Split all locations of B that are bound to PSPACE out of B's
14011    location list to a separate list and return that list's head.  If
14012    PSPACE is NULL, hoist out all locations of B.  */
14013
14014 static struct bp_location *
14015 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
14016 {
14017   struct bp_location head;
14018   struct bp_location *i = b->loc;
14019   struct bp_location **i_link = &b->loc;
14020   struct bp_location *hoisted = &head;
14021
14022   if (pspace == NULL)
14023     {
14024       i = b->loc;
14025       b->loc = NULL;
14026       return i;
14027     }
14028
14029   head.next = NULL;
14030
14031   while (i != NULL)
14032     {
14033       if (i->pspace == pspace)
14034         {
14035           *i_link = i->next;
14036           i->next = NULL;
14037           hoisted->next = i;
14038           hoisted = i;
14039         }
14040       else
14041         i_link = &i->next;
14042       i = *i_link;
14043     }
14044
14045   return head.next;
14046 }
14047
14048 /* Create new breakpoint locations for B (a hardware or software
14049    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
14050    zero, then B is a ranged breakpoint.  Only recreates locations for
14051    FILTER_PSPACE.  Locations of other program spaces are left
14052    untouched.  */
14053
14054 void
14055 update_breakpoint_locations (struct breakpoint *b,
14056                              struct program_space *filter_pspace,
14057                              struct symtabs_and_lines sals,
14058                              struct symtabs_and_lines sals_end)
14059 {
14060   int i;
14061   struct bp_location *existing_locations;
14062
14063   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14064     {
14065       /* Ranged breakpoints have only one start location and one end
14066          location.  */
14067       b->enable_state = bp_disabled;
14068       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14069                            "multiple locations found\n"),
14070                          b->number);
14071       return;
14072     }
14073
14074   /* If there's no new locations, and all existing locations are
14075      pending, don't do anything.  This optimizes the common case where
14076      all locations are in the same shared library, that was unloaded.
14077      We'd like to retain the location, so that when the library is
14078      loaded again, we don't loose the enabled/disabled status of the
14079      individual locations.  */
14080   if (all_locations_are_pending (b, filter_pspace) && sals.nelts == 0)
14081     return;
14082
14083   existing_locations = hoist_existing_locations (b, filter_pspace);
14084
14085   for (i = 0; i < sals.nelts; ++i)
14086     {
14087       struct bp_location *new_loc;
14088
14089       switch_to_program_space_and_thread (sals.sals[i].pspace);
14090
14091       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14092
14093       /* Reparse conditions, they might contain references to the
14094          old symtab.  */
14095       if (b->cond_string != NULL)
14096         {
14097           const char *s;
14098
14099           s = b->cond_string;
14100           TRY
14101             {
14102               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14103                                            block_for_pc (sals.sals[i].pc), 
14104                                            0);
14105             }
14106           CATCH (e, RETURN_MASK_ERROR)
14107             {
14108               warning (_("failed to reevaluate condition "
14109                          "for breakpoint %d: %s"), 
14110                        b->number, e.message);
14111               new_loc->enabled = 0;
14112             }
14113           END_CATCH
14114         }
14115
14116       if (sals_end.nelts)
14117         {
14118           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14119
14120           new_loc->length = end - sals.sals[0].pc + 1;
14121         }
14122     }
14123
14124   /* If possible, carry over 'disable' status from existing
14125      breakpoints.  */
14126   {
14127     struct bp_location *e = existing_locations;
14128     /* If there are multiple breakpoints with the same function name,
14129        e.g. for inline functions, comparing function names won't work.
14130        Instead compare pc addresses; this is just a heuristic as things
14131        may have moved, but in practice it gives the correct answer
14132        often enough until a better solution is found.  */
14133     int have_ambiguous_names = ambiguous_names_p (b->loc);
14134
14135     for (; e; e = e->next)
14136       {
14137         if (!e->enabled && e->function_name)
14138           {
14139             struct bp_location *l = b->loc;
14140             if (have_ambiguous_names)
14141               {
14142                 for (; l; l = l->next)
14143                   if (breakpoint_locations_match (e, l))
14144                     {
14145                       l->enabled = 0;
14146                       break;
14147                     }
14148               }
14149             else
14150               {
14151                 for (; l; l = l->next)
14152                   if (l->function_name
14153                       && strcmp (e->function_name, l->function_name) == 0)
14154                     {
14155                       l->enabled = 0;
14156                       break;
14157                     }
14158               }
14159           }
14160       }
14161   }
14162
14163   if (!locations_are_equal (existing_locations, b->loc))
14164     observer_notify_breakpoint_modified (b);
14165 }
14166
14167 /* Find the SaL locations corresponding to the given LOCATION.
14168    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14169
14170 static struct symtabs_and_lines
14171 location_to_sals (struct breakpoint *b, struct event_location *location,
14172                   struct program_space *search_pspace, int *found)
14173 {
14174   struct symtabs_and_lines sals = {0};
14175   struct gdb_exception exception = exception_none;
14176
14177   gdb_assert (b->ops != NULL);
14178
14179   TRY
14180     {
14181       b->ops->decode_location (b, location, search_pspace, &sals);
14182     }
14183   CATCH (e, RETURN_MASK_ERROR)
14184     {
14185       int not_found_and_ok = 0;
14186
14187       exception = e;
14188
14189       /* For pending breakpoints, it's expected that parsing will
14190          fail until the right shared library is loaded.  User has
14191          already told to create pending breakpoints and don't need
14192          extra messages.  If breakpoint is in bp_shlib_disabled
14193          state, then user already saw the message about that
14194          breakpoint being disabled, and don't want to see more
14195          errors.  */
14196       if (e.error == NOT_FOUND_ERROR
14197           && (b->condition_not_parsed
14198               || (b->loc != NULL
14199                   && search_pspace != NULL
14200                   && b->loc->pspace != search_pspace)
14201               || (b->loc && b->loc->shlib_disabled)
14202               || (b->loc && b->loc->pspace->executing_startup)
14203               || b->enable_state == bp_disabled))
14204         not_found_and_ok = 1;
14205
14206       if (!not_found_and_ok)
14207         {
14208           /* We surely don't want to warn about the same breakpoint
14209              10 times.  One solution, implemented here, is disable
14210              the breakpoint on error.  Another solution would be to
14211              have separate 'warning emitted' flag.  Since this
14212              happens only when a binary has changed, I don't know
14213              which approach is better.  */
14214           b->enable_state = bp_disabled;
14215           throw_exception (e);
14216         }
14217     }
14218   END_CATCH
14219
14220   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
14221     {
14222       int i;
14223
14224       for (i = 0; i < sals.nelts; ++i)
14225         resolve_sal_pc (&sals.sals[i]);
14226       if (b->condition_not_parsed && b->extra_string != NULL)
14227         {
14228           char *cond_string, *extra_string;
14229           int thread, task;
14230
14231           find_condition_and_thread (b->extra_string, sals.sals[0].pc,
14232                                      &cond_string, &thread, &task,
14233                                      &extra_string);
14234           gdb_assert (b->cond_string == NULL);
14235           if (cond_string)
14236             b->cond_string = cond_string;
14237           b->thread = thread;
14238           b->task = task;
14239           if (extra_string)
14240             {
14241               xfree (b->extra_string);
14242               b->extra_string = extra_string;
14243             }
14244           b->condition_not_parsed = 0;
14245         }
14246
14247       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14248         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14249
14250       *found = 1;
14251     }
14252   else
14253     *found = 0;
14254
14255   return sals;
14256 }
14257
14258 /* The default re_set method, for typical hardware or software
14259    breakpoints.  Reevaluate the breakpoint and recreate its
14260    locations.  */
14261
14262 static void
14263 breakpoint_re_set_default (struct breakpoint *b)
14264 {
14265   int found;
14266   struct symtabs_and_lines sals, sals_end;
14267   struct symtabs_and_lines expanded = {0};
14268   struct symtabs_and_lines expanded_end = {0};
14269   struct program_space *filter_pspace = current_program_space;
14270
14271   sals = location_to_sals (b, b->location.get (), filter_pspace, &found);
14272   if (found)
14273     {
14274       make_cleanup (xfree, sals.sals);
14275       expanded = sals;
14276     }
14277
14278   if (b->location_range_end != NULL)
14279     {
14280       sals_end = location_to_sals (b, b->location_range_end.get (),
14281                                    filter_pspace, &found);
14282       if (found)
14283         {
14284           make_cleanup (xfree, sals_end.sals);
14285           expanded_end = sals_end;
14286         }
14287     }
14288
14289   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
14290 }
14291
14292 /* Default method for creating SALs from an address string.  It basically
14293    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14294
14295 static void
14296 create_sals_from_location_default (const struct event_location *location,
14297                                    struct linespec_result *canonical,
14298                                    enum bptype type_wanted)
14299 {
14300   parse_breakpoint_sals (location, canonical);
14301 }
14302
14303 /* Call create_breakpoints_sal for the given arguments.  This is the default
14304    function for the `create_breakpoints_sal' method of
14305    breakpoint_ops.  */
14306
14307 static void
14308 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14309                                 struct linespec_result *canonical,
14310                                 gdb::unique_xmalloc_ptr<char> cond_string,
14311                                 gdb::unique_xmalloc_ptr<char> extra_string,
14312                                 enum bptype type_wanted,
14313                                 enum bpdisp disposition,
14314                                 int thread,
14315                                 int task, int ignore_count,
14316                                 const struct breakpoint_ops *ops,
14317                                 int from_tty, int enabled,
14318                                 int internal, unsigned flags)
14319 {
14320   create_breakpoints_sal (gdbarch, canonical,
14321                           std::move (cond_string),
14322                           std::move (extra_string),
14323                           type_wanted, disposition,
14324                           thread, task, ignore_count, ops, from_tty,
14325                           enabled, internal, flags);
14326 }
14327
14328 /* Decode the line represented by S by calling decode_line_full.  This is the
14329    default function for the `decode_location' method of breakpoint_ops.  */
14330
14331 static void
14332 decode_location_default (struct breakpoint *b,
14333                          const struct event_location *location,
14334                          struct program_space *search_pspace,
14335                          struct symtabs_and_lines *sals)
14336 {
14337   struct linespec_result canonical;
14338
14339   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14340                     (struct symtab *) NULL, 0,
14341                     &canonical, multiple_symbols_all,
14342                     b->filter);
14343
14344   /* We should get 0 or 1 resulting SALs.  */
14345   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14346
14347   if (VEC_length (linespec_sals, canonical.sals) > 0)
14348     {
14349       struct linespec_sals *lsal;
14350
14351       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14352       *sals = lsal->sals;
14353       /* Arrange it so the destructor does not free the
14354          contents.  */
14355       lsal->sals.sals = NULL;
14356     }
14357 }
14358
14359 /* Prepare the global context for a re-set of breakpoint B.  */
14360
14361 static struct cleanup *
14362 prepare_re_set_context (struct breakpoint *b)
14363 {
14364   input_radix = b->input_radix;
14365   set_language (b->language);
14366
14367   return make_cleanup (null_cleanup, NULL);
14368 }
14369
14370 /* Reset a breakpoint given it's struct breakpoint * BINT.
14371    The value we return ends up being the return value from catch_errors.
14372    Unused in this case.  */
14373
14374 static int
14375 breakpoint_re_set_one (void *bint)
14376 {
14377   /* Get past catch_errs.  */
14378   struct breakpoint *b = (struct breakpoint *) bint;
14379   struct cleanup *cleanups;
14380
14381   cleanups = prepare_re_set_context (b);
14382   b->ops->re_set (b);
14383   do_cleanups (cleanups);
14384   return 0;
14385 }
14386
14387 /* Re-set breakpoint locations for the current program space.
14388    Locations bound to other program spaces are left untouched.  */
14389
14390 void
14391 breakpoint_re_set (void)
14392 {
14393   struct breakpoint *b, *b_tmp;
14394   enum language save_language;
14395   int save_input_radix;
14396
14397   save_language = current_language->la_language;
14398   save_input_radix = input_radix;
14399
14400   {
14401     scoped_restore_current_pspace_and_thread restore_pspace_thread;
14402
14403     /* Note: we must not try to insert locations until after all
14404        breakpoints have been re-set.  Otherwise, e.g., when re-setting
14405        breakpoint 1, we'd insert the locations of breakpoint 2, which
14406        hadn't been re-set yet, and thus may have stale locations.  */
14407
14408     ALL_BREAKPOINTS_SAFE (b, b_tmp)
14409       {
14410         /* Format possible error msg.  */
14411         char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14412                                     b->number);
14413         struct cleanup *cleanups = make_cleanup (xfree, message);
14414         catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14415         do_cleanups (cleanups);
14416       }
14417     set_language (save_language);
14418     input_radix = save_input_radix;
14419
14420     jit_breakpoint_re_set ();
14421   }
14422
14423   create_overlay_event_breakpoint ();
14424   create_longjmp_master_breakpoint ();
14425   create_std_terminate_master_breakpoint ();
14426   create_exception_master_breakpoint ();
14427
14428   /* Now we can insert.  */
14429   update_global_location_list (UGLL_MAY_INSERT);
14430 }
14431 \f
14432 /* Reset the thread number of this breakpoint:
14433
14434    - If the breakpoint is for all threads, leave it as-is.
14435    - Else, reset it to the current thread for inferior_ptid.  */
14436 void
14437 breakpoint_re_set_thread (struct breakpoint *b)
14438 {
14439   if (b->thread != -1)
14440     {
14441       if (in_thread_list (inferior_ptid))
14442         b->thread = ptid_to_global_thread_id (inferior_ptid);
14443
14444       /* We're being called after following a fork.  The new fork is
14445          selected as current, and unless this was a vfork will have a
14446          different program space from the original thread.  Reset that
14447          as well.  */
14448       b->loc->pspace = current_program_space;
14449     }
14450 }
14451
14452 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14453    If from_tty is nonzero, it prints a message to that effect,
14454    which ends with a period (no newline).  */
14455
14456 void
14457 set_ignore_count (int bptnum, int count, int from_tty)
14458 {
14459   struct breakpoint *b;
14460
14461   if (count < 0)
14462     count = 0;
14463
14464   ALL_BREAKPOINTS (b)
14465     if (b->number == bptnum)
14466     {
14467       if (is_tracepoint (b))
14468         {
14469           if (from_tty && count != 0)
14470             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14471                              bptnum);
14472           return;
14473         }
14474       
14475       b->ignore_count = count;
14476       if (from_tty)
14477         {
14478           if (count == 0)
14479             printf_filtered (_("Will stop next time "
14480                                "breakpoint %d is reached."),
14481                              bptnum);
14482           else if (count == 1)
14483             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14484                              bptnum);
14485           else
14486             printf_filtered (_("Will ignore next %d "
14487                                "crossings of breakpoint %d."),
14488                              count, bptnum);
14489         }
14490       observer_notify_breakpoint_modified (b);
14491       return;
14492     }
14493
14494   error (_("No breakpoint number %d."), bptnum);
14495 }
14496
14497 /* Command to set ignore-count of breakpoint N to COUNT.  */
14498
14499 static void
14500 ignore_command (char *args, int from_tty)
14501 {
14502   char *p = args;
14503   int num;
14504
14505   if (p == 0)
14506     error_no_arg (_("a breakpoint number"));
14507
14508   num = get_number (&p);
14509   if (num == 0)
14510     error (_("bad breakpoint number: '%s'"), args);
14511   if (*p == 0)
14512     error (_("Second argument (specified ignore-count) is missing."));
14513
14514   set_ignore_count (num,
14515                     longest_to_int (value_as_long (parse_and_eval (p))),
14516                     from_tty);
14517   if (from_tty)
14518     printf_filtered ("\n");
14519 }
14520 \f
14521 /* Call FUNCTION on each of the breakpoints
14522    whose numbers are given in ARGS.  */
14523
14524 static void
14525 map_breakpoint_numbers (const char *args,
14526                         void (*function) (struct breakpoint *,
14527                                           void *),
14528                         void *data)
14529 {
14530   int num;
14531   struct breakpoint *b, *tmp;
14532
14533   if (args == 0 || *args == '\0')
14534     error_no_arg (_("one or more breakpoint numbers"));
14535
14536   number_or_range_parser parser (args);
14537
14538   while (!parser.finished ())
14539     {
14540       const char *p = parser.cur_tok ();
14541       bool match = false;
14542
14543       num = parser.get_number ();
14544       if (num == 0)
14545         {
14546           warning (_("bad breakpoint number at or near '%s'"), p);
14547         }
14548       else
14549         {
14550           ALL_BREAKPOINTS_SAFE (b, tmp)
14551             if (b->number == num)
14552               {
14553                 match = true;
14554                 function (b, data);
14555                 break;
14556               }
14557           if (!match)
14558             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14559         }
14560     }
14561 }
14562
14563 static struct bp_location *
14564 find_location_by_number (char *number)
14565 {
14566   char *dot = strchr (number, '.');
14567   char *p1;
14568   int bp_num;
14569   int loc_num;
14570   struct breakpoint *b;
14571   struct bp_location *loc;  
14572
14573   *dot = '\0';
14574
14575   p1 = number;
14576   bp_num = get_number (&p1);
14577   if (bp_num == 0)
14578     error (_("Bad breakpoint number '%s'"), number);
14579
14580   ALL_BREAKPOINTS (b)
14581     if (b->number == bp_num)
14582       {
14583         break;
14584       }
14585
14586   if (!b || b->number != bp_num)
14587     error (_("Bad breakpoint number '%s'"), number);
14588   
14589   p1 = dot+1;
14590   loc_num = get_number (&p1);
14591   if (loc_num == 0)
14592     error (_("Bad breakpoint location number '%s'"), number);
14593
14594   --loc_num;
14595   loc = b->loc;
14596   for (;loc_num && loc; --loc_num, loc = loc->next)
14597     ;
14598   if (!loc)
14599     error (_("Bad breakpoint location number '%s'"), dot+1);
14600     
14601   return loc;  
14602 }
14603
14604
14605 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14606    If from_tty is nonzero, it prints a message to that effect,
14607    which ends with a period (no newline).  */
14608
14609 void
14610 disable_breakpoint (struct breakpoint *bpt)
14611 {
14612   /* Never disable a watchpoint scope breakpoint; we want to
14613      hit them when we leave scope so we can delete both the
14614      watchpoint and its scope breakpoint at that time.  */
14615   if (bpt->type == bp_watchpoint_scope)
14616     return;
14617
14618   bpt->enable_state = bp_disabled;
14619
14620   /* Mark breakpoint locations modified.  */
14621   mark_breakpoint_modified (bpt);
14622
14623   if (target_supports_enable_disable_tracepoint ()
14624       && current_trace_status ()->running && is_tracepoint (bpt))
14625     {
14626       struct bp_location *location;
14627      
14628       for (location = bpt->loc; location; location = location->next)
14629         target_disable_tracepoint (location);
14630     }
14631
14632   update_global_location_list (UGLL_DONT_INSERT);
14633
14634   observer_notify_breakpoint_modified (bpt);
14635 }
14636
14637 /* A callback for iterate_over_related_breakpoints.  */
14638
14639 static void
14640 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14641 {
14642   disable_breakpoint (b);
14643 }
14644
14645 /* A callback for map_breakpoint_numbers that calls
14646    disable_breakpoint.  */
14647
14648 static void
14649 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14650 {
14651   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14652 }
14653
14654 static void
14655 disable_command (char *args, int from_tty)
14656 {
14657   if (args == 0)
14658     {
14659       struct breakpoint *bpt;
14660
14661       ALL_BREAKPOINTS (bpt)
14662         if (user_breakpoint_p (bpt))
14663           disable_breakpoint (bpt);
14664     }
14665   else
14666     {
14667       char *num = extract_arg (&args);
14668
14669       while (num)
14670         {
14671           if (strchr (num, '.'))
14672             {
14673               struct bp_location *loc = find_location_by_number (num);
14674
14675               if (loc)
14676                 {
14677                   if (loc->enabled)
14678                     {
14679                       loc->enabled = 0;
14680                       mark_breakpoint_location_modified (loc);
14681                     }
14682                   if (target_supports_enable_disable_tracepoint ()
14683                       && current_trace_status ()->running && loc->owner
14684                       && is_tracepoint (loc->owner))
14685                     target_disable_tracepoint (loc);
14686                 }
14687               update_global_location_list (UGLL_DONT_INSERT);
14688             }
14689           else
14690             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14691           num = extract_arg (&args);
14692         }
14693     }
14694 }
14695
14696 static void
14697 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14698                         int count)
14699 {
14700   int target_resources_ok;
14701
14702   if (bpt->type == bp_hardware_breakpoint)
14703     {
14704       int i;
14705       i = hw_breakpoint_used_count ();
14706       target_resources_ok = 
14707         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14708                                             i + 1, 0);
14709       if (target_resources_ok == 0)
14710         error (_("No hardware breakpoint support in the target."));
14711       else if (target_resources_ok < 0)
14712         error (_("Hardware breakpoints used exceeds limit."));
14713     }
14714
14715   if (is_watchpoint (bpt))
14716     {
14717       /* Initialize it just to avoid a GCC false warning.  */
14718       enum enable_state orig_enable_state = bp_disabled;
14719
14720       TRY
14721         {
14722           struct watchpoint *w = (struct watchpoint *) bpt;
14723
14724           orig_enable_state = bpt->enable_state;
14725           bpt->enable_state = bp_enabled;
14726           update_watchpoint (w, 1 /* reparse */);
14727         }
14728       CATCH (e, RETURN_MASK_ALL)
14729         {
14730           bpt->enable_state = orig_enable_state;
14731           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14732                              bpt->number);
14733           return;
14734         }
14735       END_CATCH
14736     }
14737
14738   bpt->enable_state = bp_enabled;
14739
14740   /* Mark breakpoint locations modified.  */
14741   mark_breakpoint_modified (bpt);
14742
14743   if (target_supports_enable_disable_tracepoint ()
14744       && current_trace_status ()->running && is_tracepoint (bpt))
14745     {
14746       struct bp_location *location;
14747
14748       for (location = bpt->loc; location; location = location->next)
14749         target_enable_tracepoint (location);
14750     }
14751
14752   bpt->disposition = disposition;
14753   bpt->enable_count = count;
14754   update_global_location_list (UGLL_MAY_INSERT);
14755
14756   observer_notify_breakpoint_modified (bpt);
14757 }
14758
14759
14760 void
14761 enable_breakpoint (struct breakpoint *bpt)
14762 {
14763   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14764 }
14765
14766 static void
14767 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14768 {
14769   enable_breakpoint (bpt);
14770 }
14771
14772 /* A callback for map_breakpoint_numbers that calls
14773    enable_breakpoint.  */
14774
14775 static void
14776 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14777 {
14778   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14779 }
14780
14781 /* The enable command enables the specified breakpoints (or all defined
14782    breakpoints) so they once again become (or continue to be) effective
14783    in stopping the inferior.  */
14784
14785 static void
14786 enable_command (char *args, int from_tty)
14787 {
14788   if (args == 0)
14789     {
14790       struct breakpoint *bpt;
14791
14792       ALL_BREAKPOINTS (bpt)
14793         if (user_breakpoint_p (bpt))
14794           enable_breakpoint (bpt);
14795     }
14796   else
14797     {
14798       char *num = extract_arg (&args);
14799
14800       while (num)
14801         {
14802           if (strchr (num, '.'))
14803             {
14804               struct bp_location *loc = find_location_by_number (num);
14805
14806               if (loc)
14807                 {
14808                   if (!loc->enabled)
14809                     {
14810                       loc->enabled = 1;
14811                       mark_breakpoint_location_modified (loc);
14812                     }
14813                   if (target_supports_enable_disable_tracepoint ()
14814                       && current_trace_status ()->running && loc->owner
14815                       && is_tracepoint (loc->owner))
14816                     target_enable_tracepoint (loc);
14817                 }
14818               update_global_location_list (UGLL_MAY_INSERT);
14819             }
14820           else
14821             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
14822           num = extract_arg (&args);
14823         }
14824     }
14825 }
14826
14827 /* This struct packages up disposition data for application to multiple
14828    breakpoints.  */
14829
14830 struct disp_data
14831 {
14832   enum bpdisp disp;
14833   int count;
14834 };
14835
14836 static void
14837 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14838 {
14839   struct disp_data disp_data = *(struct disp_data *) arg;
14840
14841   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14842 }
14843
14844 static void
14845 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14846 {
14847   struct disp_data disp = { disp_disable, 1 };
14848
14849   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14850 }
14851
14852 static void
14853 enable_once_command (char *args, int from_tty)
14854 {
14855   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14856 }
14857
14858 static void
14859 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14860 {
14861   struct disp_data disp = { disp_disable, *(int *) countptr };
14862
14863   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14864 }
14865
14866 static void
14867 enable_count_command (char *args, int from_tty)
14868 {
14869   int count;
14870
14871   if (args == NULL)
14872     error_no_arg (_("hit count"));
14873
14874   count = get_number (&args);
14875
14876   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14877 }
14878
14879 static void
14880 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14881 {
14882   struct disp_data disp = { disp_del, 1 };
14883
14884   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14885 }
14886
14887 static void
14888 enable_delete_command (char *args, int from_tty)
14889 {
14890   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14891 }
14892 \f
14893 static void
14894 set_breakpoint_cmd (char *args, int from_tty)
14895 {
14896 }
14897
14898 static void
14899 show_breakpoint_cmd (char *args, int from_tty)
14900 {
14901 }
14902
14903 /* Invalidate last known value of any hardware watchpoint if
14904    the memory which that value represents has been written to by
14905    GDB itself.  */
14906
14907 static void
14908 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14909                                       CORE_ADDR addr, ssize_t len,
14910                                       const bfd_byte *data)
14911 {
14912   struct breakpoint *bp;
14913
14914   ALL_BREAKPOINTS (bp)
14915     if (bp->enable_state == bp_enabled
14916         && bp->type == bp_hardware_watchpoint)
14917       {
14918         struct watchpoint *wp = (struct watchpoint *) bp;
14919
14920         if (wp->val_valid && wp->val)
14921           {
14922             struct bp_location *loc;
14923
14924             for (loc = bp->loc; loc != NULL; loc = loc->next)
14925               if (loc->loc_type == bp_loc_hardware_watchpoint
14926                   && loc->address + loc->length > addr
14927                   && addr + len > loc->address)
14928                 {
14929                   value_free (wp->val);
14930                   wp->val = NULL;
14931                   wp->val_valid = 0;
14932                 }
14933           }
14934       }
14935 }
14936
14937 /* Create and insert a breakpoint for software single step.  */
14938
14939 void
14940 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14941                                struct address_space *aspace, 
14942                                CORE_ADDR next_pc)
14943 {
14944   struct thread_info *tp = inferior_thread ();
14945   struct symtab_and_line sal;
14946   CORE_ADDR pc = next_pc;
14947
14948   if (tp->control.single_step_breakpoints == NULL)
14949     {
14950       tp->control.single_step_breakpoints
14951         = new_single_step_breakpoint (tp->global_num, gdbarch);
14952     }
14953
14954   sal = find_pc_line (pc, 0);
14955   sal.pc = pc;
14956   sal.section = find_pc_overlay (pc);
14957   sal.explicit_pc = 1;
14958   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14959
14960   update_global_location_list (UGLL_INSERT);
14961 }
14962
14963 /* Insert single step breakpoints according to the current state.  */
14964
14965 int
14966 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14967 {
14968   struct regcache *regcache = get_current_regcache ();
14969   std::vector<CORE_ADDR> next_pcs;
14970
14971   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14972
14973   if (!next_pcs.empty ())
14974     {
14975       struct frame_info *frame = get_current_frame ();
14976       struct address_space *aspace = get_frame_address_space (frame);
14977
14978       for (CORE_ADDR pc : next_pcs)
14979         insert_single_step_breakpoint (gdbarch, aspace, pc);
14980
14981       return 1;
14982     }
14983   else
14984     return 0;
14985 }
14986
14987 /* See breakpoint.h.  */
14988
14989 int
14990 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14991                                        struct address_space *aspace,
14992                                        CORE_ADDR pc)
14993 {
14994   struct bp_location *loc;
14995
14996   for (loc = bp->loc; loc != NULL; loc = loc->next)
14997     if (loc->inserted
14998         && breakpoint_location_address_match (loc, aspace, pc))
14999       return 1;
15000
15001   return 0;
15002 }
15003
15004 /* Check whether a software single-step breakpoint is inserted at
15005    PC.  */
15006
15007 int
15008 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15009                                         CORE_ADDR pc)
15010 {
15011   struct breakpoint *bpt;
15012
15013   ALL_BREAKPOINTS (bpt)
15014     {
15015       if (bpt->type == bp_single_step
15016           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
15017         return 1;
15018     }
15019   return 0;
15020 }
15021
15022 /* Tracepoint-specific operations.  */
15023
15024 /* Set tracepoint count to NUM.  */
15025 static void
15026 set_tracepoint_count (int num)
15027 {
15028   tracepoint_count = num;
15029   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15030 }
15031
15032 static void
15033 trace_command (char *arg, int from_tty)
15034 {
15035   struct breakpoint_ops *ops;
15036
15037   event_location_up location = string_to_event_location (&arg,
15038                                                          current_language);
15039   if (location != NULL
15040       && event_location_type (location.get ()) == PROBE_LOCATION)
15041     ops = &tracepoint_probe_breakpoint_ops;
15042   else
15043     ops = &tracepoint_breakpoint_ops;
15044
15045   create_breakpoint (get_current_arch (),
15046                      location.get (),
15047                      NULL, 0, arg, 1 /* parse arg */,
15048                      0 /* tempflag */,
15049                      bp_tracepoint /* type_wanted */,
15050                      0 /* Ignore count */,
15051                      pending_break_support,
15052                      ops,
15053                      from_tty,
15054                      1 /* enabled */,
15055                      0 /* internal */, 0);
15056 }
15057
15058 static void
15059 ftrace_command (char *arg, int from_tty)
15060 {
15061   event_location_up location = string_to_event_location (&arg,
15062                                                          current_language);
15063   create_breakpoint (get_current_arch (),
15064                      location.get (),
15065                      NULL, 0, arg, 1 /* parse arg */,
15066                      0 /* tempflag */,
15067                      bp_fast_tracepoint /* type_wanted */,
15068                      0 /* Ignore count */,
15069                      pending_break_support,
15070                      &tracepoint_breakpoint_ops,
15071                      from_tty,
15072                      1 /* enabled */,
15073                      0 /* internal */, 0);
15074 }
15075
15076 /* strace command implementation.  Creates a static tracepoint.  */
15077
15078 static void
15079 strace_command (char *arg, int from_tty)
15080 {
15081   struct breakpoint_ops *ops;
15082   event_location_up location;
15083   struct cleanup *back_to;
15084
15085   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15086      or with a normal static tracepoint.  */
15087   if (arg && startswith (arg, "-m") && isspace (arg[2]))
15088     {
15089       ops = &strace_marker_breakpoint_ops;
15090       location = new_linespec_location (&arg);
15091     }
15092   else
15093     {
15094       ops = &tracepoint_breakpoint_ops;
15095       location = string_to_event_location (&arg, current_language);
15096     }
15097
15098   create_breakpoint (get_current_arch (),
15099                      location.get (),
15100                      NULL, 0, arg, 1 /* parse arg */,
15101                      0 /* tempflag */,
15102                      bp_static_tracepoint /* type_wanted */,
15103                      0 /* Ignore count */,
15104                      pending_break_support,
15105                      ops,
15106                      from_tty,
15107                      1 /* enabled */,
15108                      0 /* internal */, 0);
15109 }
15110
15111 /* Set up a fake reader function that gets command lines from a linked
15112    list that was acquired during tracepoint uploading.  */
15113
15114 static struct uploaded_tp *this_utp;
15115 static int next_cmd;
15116
15117 static char *
15118 read_uploaded_action (void)
15119 {
15120   char *rslt;
15121
15122   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15123
15124   next_cmd++;
15125
15126   return rslt;
15127 }
15128
15129 /* Given information about a tracepoint as recorded on a target (which
15130    can be either a live system or a trace file), attempt to create an
15131    equivalent GDB tracepoint.  This is not a reliable process, since
15132    the target does not necessarily have all the information used when
15133    the tracepoint was originally defined.  */
15134   
15135 struct tracepoint *
15136 create_tracepoint_from_upload (struct uploaded_tp *utp)
15137 {
15138   char *addr_str, small_buf[100];
15139   struct tracepoint *tp;
15140
15141   if (utp->at_string)
15142     addr_str = utp->at_string;
15143   else
15144     {
15145       /* In the absence of a source location, fall back to raw
15146          address.  Since there is no way to confirm that the address
15147          means the same thing as when the trace was started, warn the
15148          user.  */
15149       warning (_("Uploaded tracepoint %d has no "
15150                  "source location, using raw address"),
15151                utp->number);
15152       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15153       addr_str = small_buf;
15154     }
15155
15156   /* There's not much we can do with a sequence of bytecodes.  */
15157   if (utp->cond && !utp->cond_string)
15158     warning (_("Uploaded tracepoint %d condition "
15159                "has no source form, ignoring it"),
15160              utp->number);
15161
15162   event_location_up location = string_to_event_location (&addr_str,
15163                                                          current_language);
15164   if (!create_breakpoint (get_current_arch (),
15165                           location.get (),
15166                           utp->cond_string, -1, addr_str,
15167                           0 /* parse cond/thread */,
15168                           0 /* tempflag */,
15169                           utp->type /* type_wanted */,
15170                           0 /* Ignore count */,
15171                           pending_break_support,
15172                           &tracepoint_breakpoint_ops,
15173                           0 /* from_tty */,
15174                           utp->enabled /* enabled */,
15175                           0 /* internal */,
15176                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15177     return NULL;
15178
15179   /* Get the tracepoint we just created.  */
15180   tp = get_tracepoint (tracepoint_count);
15181   gdb_assert (tp != NULL);
15182
15183   if (utp->pass > 0)
15184     {
15185       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15186                  tp->number);
15187
15188       trace_pass_command (small_buf, 0);
15189     }
15190
15191   /* If we have uploaded versions of the original commands, set up a
15192      special-purpose "reader" function and call the usual command line
15193      reader, then pass the result to the breakpoint command-setting
15194      function.  */
15195   if (!VEC_empty (char_ptr, utp->cmd_strings))
15196     {
15197       command_line_up cmd_list;
15198
15199       this_utp = utp;
15200       next_cmd = 0;
15201
15202       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15203
15204       breakpoint_set_commands (tp, std::move (cmd_list));
15205     }
15206   else if (!VEC_empty (char_ptr, utp->actions)
15207            || !VEC_empty (char_ptr, utp->step_actions))
15208     warning (_("Uploaded tracepoint %d actions "
15209                "have no source form, ignoring them"),
15210              utp->number);
15211
15212   /* Copy any status information that might be available.  */
15213   tp->hit_count = utp->hit_count;
15214   tp->traceframe_usage = utp->traceframe_usage;
15215
15216   return tp;
15217 }
15218   
15219 /* Print information on tracepoint number TPNUM_EXP, or all if
15220    omitted.  */
15221
15222 static void
15223 info_tracepoints_command (char *args, int from_tty)
15224 {
15225   struct ui_out *uiout = current_uiout;
15226   int num_printed;
15227
15228   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15229
15230   if (num_printed == 0)
15231     {
15232       if (args == NULL || *args == '\0')
15233         uiout->message ("No tracepoints.\n");
15234       else
15235         uiout->message ("No tracepoint matching '%s'.\n", args);
15236     }
15237
15238   default_collect_info ();
15239 }
15240
15241 /* The 'enable trace' command enables tracepoints.
15242    Not supported by all targets.  */
15243 static void
15244 enable_trace_command (char *args, int from_tty)
15245 {
15246   enable_command (args, from_tty);
15247 }
15248
15249 /* The 'disable trace' command disables tracepoints.
15250    Not supported by all targets.  */
15251 static void
15252 disable_trace_command (char *args, int from_tty)
15253 {
15254   disable_command (args, from_tty);
15255 }
15256
15257 /* Remove a tracepoint (or all if no argument).  */
15258 static void
15259 delete_trace_command (char *arg, int from_tty)
15260 {
15261   struct breakpoint *b, *b_tmp;
15262
15263   dont_repeat ();
15264
15265   if (arg == 0)
15266     {
15267       int breaks_to_delete = 0;
15268
15269       /* Delete all breakpoints if no argument.
15270          Do not delete internal or call-dummy breakpoints, these
15271          have to be deleted with an explicit breakpoint number 
15272          argument.  */
15273       ALL_TRACEPOINTS (b)
15274         if (is_tracepoint (b) && user_breakpoint_p (b))
15275           {
15276             breaks_to_delete = 1;
15277             break;
15278           }
15279
15280       /* Ask user only if there are some breakpoints to delete.  */
15281       if (!from_tty
15282           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15283         {
15284           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15285             if (is_tracepoint (b) && user_breakpoint_p (b))
15286               delete_breakpoint (b);
15287         }
15288     }
15289   else
15290     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15291 }
15292
15293 /* Helper function for trace_pass_command.  */
15294
15295 static void
15296 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15297 {
15298   tp->pass_count = count;
15299   observer_notify_breakpoint_modified (tp);
15300   if (from_tty)
15301     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15302                      tp->number, count);
15303 }
15304
15305 /* Set passcount for tracepoint.
15306
15307    First command argument is passcount, second is tracepoint number.
15308    If tracepoint number omitted, apply to most recently defined.
15309    Also accepts special argument "all".  */
15310
15311 static void
15312 trace_pass_command (char *args, int from_tty)
15313 {
15314   struct tracepoint *t1;
15315   unsigned int count;
15316
15317   if (args == 0 || *args == 0)
15318     error (_("passcount command requires an "
15319              "argument (count + optional TP num)"));
15320
15321   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15322
15323   args = skip_spaces (args);
15324   if (*args && strncasecmp (args, "all", 3) == 0)
15325     {
15326       struct breakpoint *b;
15327
15328       args += 3;                        /* Skip special argument "all".  */
15329       if (*args)
15330         error (_("Junk at end of arguments."));
15331
15332       ALL_TRACEPOINTS (b)
15333       {
15334         t1 = (struct tracepoint *) b;
15335         trace_pass_set_count (t1, count, from_tty);
15336       }
15337     }
15338   else if (*args == '\0')
15339     {
15340       t1 = get_tracepoint_by_number (&args, NULL);
15341       if (t1)
15342         trace_pass_set_count (t1, count, from_tty);
15343     }
15344   else
15345     {
15346       number_or_range_parser parser (args);
15347       while (!parser.finished ())
15348         {
15349           t1 = get_tracepoint_by_number (&args, &parser);
15350           if (t1)
15351             trace_pass_set_count (t1, count, from_tty);
15352         }
15353     }
15354 }
15355
15356 struct tracepoint *
15357 get_tracepoint (int num)
15358 {
15359   struct breakpoint *t;
15360
15361   ALL_TRACEPOINTS (t)
15362     if (t->number == num)
15363       return (struct tracepoint *) t;
15364
15365   return NULL;
15366 }
15367
15368 /* Find the tracepoint with the given target-side number (which may be
15369    different from the tracepoint number after disconnecting and
15370    reconnecting).  */
15371
15372 struct tracepoint *
15373 get_tracepoint_by_number_on_target (int num)
15374 {
15375   struct breakpoint *b;
15376
15377   ALL_TRACEPOINTS (b)
15378     {
15379       struct tracepoint *t = (struct tracepoint *) b;
15380
15381       if (t->number_on_target == num)
15382         return t;
15383     }
15384
15385   return NULL;
15386 }
15387
15388 /* Utility: parse a tracepoint number and look it up in the list.
15389    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15390    If the argument is missing, the most recent tracepoint
15391    (tracepoint_count) is returned.  */
15392
15393 struct tracepoint *
15394 get_tracepoint_by_number (char **arg,
15395                           number_or_range_parser *parser)
15396 {
15397   struct breakpoint *t;
15398   int tpnum;
15399   char *instring = arg == NULL ? NULL : *arg;
15400
15401   if (parser != NULL)
15402     {
15403       gdb_assert (!parser->finished ());
15404       tpnum = parser->get_number ();
15405     }
15406   else if (arg == NULL || *arg == NULL || ! **arg)
15407     tpnum = tracepoint_count;
15408   else
15409     tpnum = get_number (arg);
15410
15411   if (tpnum <= 0)
15412     {
15413       if (instring && *instring)
15414         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15415                          instring);
15416       else
15417         printf_filtered (_("No previous tracepoint\n"));
15418       return NULL;
15419     }
15420
15421   ALL_TRACEPOINTS (t)
15422     if (t->number == tpnum)
15423     {
15424       return (struct tracepoint *) t;
15425     }
15426
15427   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15428   return NULL;
15429 }
15430
15431 void
15432 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15433 {
15434   if (b->thread != -1)
15435     fprintf_unfiltered (fp, " thread %d", b->thread);
15436
15437   if (b->task != 0)
15438     fprintf_unfiltered (fp, " task %d", b->task);
15439
15440   fprintf_unfiltered (fp, "\n");
15441 }
15442
15443 /* Save information on user settable breakpoints (watchpoints, etc) to
15444    a new script file named FILENAME.  If FILTER is non-NULL, call it
15445    on each breakpoint and only include the ones for which it returns
15446    non-zero.  */
15447
15448 static void
15449 save_breakpoints (char *filename, int from_tty,
15450                   int (*filter) (const struct breakpoint *))
15451 {
15452   struct breakpoint *tp;
15453   int any = 0;
15454   int extra_trace_bits = 0;
15455
15456   if (filename == 0 || *filename == 0)
15457     error (_("Argument required (file name in which to save)"));
15458
15459   /* See if we have anything to save.  */
15460   ALL_BREAKPOINTS (tp)
15461   {
15462     /* Skip internal and momentary breakpoints.  */
15463     if (!user_breakpoint_p (tp))
15464       continue;
15465
15466     /* If we have a filter, only save the breakpoints it accepts.  */
15467     if (filter && !filter (tp))
15468       continue;
15469
15470     any = 1;
15471
15472     if (is_tracepoint (tp))
15473       {
15474         extra_trace_bits = 1;
15475
15476         /* We can stop searching.  */
15477         break;
15478       }
15479   }
15480
15481   if (!any)
15482     {
15483       warning (_("Nothing to save."));
15484       return;
15485     }
15486
15487   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
15488
15489   stdio_file fp;
15490
15491   if (!fp.open (expanded_filename.get (), "w"))
15492     error (_("Unable to open file '%s' for saving (%s)"),
15493            expanded_filename.get (), safe_strerror (errno));
15494
15495   if (extra_trace_bits)
15496     save_trace_state_variables (&fp);
15497
15498   ALL_BREAKPOINTS (tp)
15499   {
15500     /* Skip internal and momentary breakpoints.  */
15501     if (!user_breakpoint_p (tp))
15502       continue;
15503
15504     /* If we have a filter, only save the breakpoints it accepts.  */
15505     if (filter && !filter (tp))
15506       continue;
15507
15508     tp->ops->print_recreate (tp, &fp);
15509
15510     /* Note, we can't rely on tp->number for anything, as we can't
15511        assume the recreated breakpoint numbers will match.  Use $bpnum
15512        instead.  */
15513
15514     if (tp->cond_string)
15515       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
15516
15517     if (tp->ignore_count)
15518       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
15519
15520     if (tp->type != bp_dprintf && tp->commands)
15521       {
15522         fp.puts ("  commands\n");
15523         
15524         current_uiout->redirect (&fp);
15525         TRY
15526           {
15527             print_command_lines (current_uiout, tp->commands->commands, 2);
15528           }
15529         CATCH (ex, RETURN_MASK_ALL)
15530           {
15531           current_uiout->redirect (NULL);
15532             throw_exception (ex);
15533           }
15534         END_CATCH
15535
15536         current_uiout->redirect (NULL);
15537         fp.puts ("  end\n");
15538       }
15539
15540     if (tp->enable_state == bp_disabled)
15541       fp.puts ("disable $bpnum\n");
15542
15543     /* If this is a multi-location breakpoint, check if the locations
15544        should be individually disabled.  Watchpoint locations are
15545        special, and not user visible.  */
15546     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15547       {
15548         struct bp_location *loc;
15549         int n = 1;
15550
15551         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15552           if (!loc->enabled)
15553             fp.printf ("disable $bpnum.%d\n", n);
15554       }
15555   }
15556
15557   if (extra_trace_bits && *default_collect)
15558     fp.printf ("set default-collect %s\n", default_collect);
15559
15560   if (from_tty)
15561     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15562 }
15563
15564 /* The `save breakpoints' command.  */
15565
15566 static void
15567 save_breakpoints_command (char *args, int from_tty)
15568 {
15569   save_breakpoints (args, from_tty, NULL);
15570 }
15571
15572 /* The `save tracepoints' command.  */
15573
15574 static void
15575 save_tracepoints_command (char *args, int from_tty)
15576 {
15577   save_breakpoints (args, from_tty, is_tracepoint);
15578 }
15579
15580 /* Create a vector of all tracepoints.  */
15581
15582 VEC(breakpoint_p) *
15583 all_tracepoints (void)
15584 {
15585   VEC(breakpoint_p) *tp_vec = 0;
15586   struct breakpoint *tp;
15587
15588   ALL_TRACEPOINTS (tp)
15589   {
15590     VEC_safe_push (breakpoint_p, tp_vec, tp);
15591   }
15592
15593   return tp_vec;
15594 }
15595
15596 \f
15597 /* This help string is used to consolidate all the help string for specifying
15598    locations used by several commands.  */
15599
15600 #define LOCATION_HELP_STRING \
15601 "Linespecs are colon-separated lists of location parameters, such as\n\
15602 source filename, function name, label name, and line number.\n\
15603 Example: To specify the start of a label named \"the_top\" in the\n\
15604 function \"fact\" in the file \"factorial.c\", use\n\
15605 \"factorial.c:fact:the_top\".\n\
15606 \n\
15607 Address locations begin with \"*\" and specify an exact address in the\n\
15608 program.  Example: To specify the fourth byte past the start function\n\
15609 \"main\", use \"*main + 4\".\n\
15610 \n\
15611 Explicit locations are similar to linespecs but use an option/argument\n\
15612 syntax to specify location parameters.\n\
15613 Example: To specify the start of the label named \"the_top\" in the\n\
15614 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15615 -function fact -label the_top\".\n"
15616
15617 /* This help string is used for the break, hbreak, tbreak and thbreak
15618    commands.  It is defined as a macro to prevent duplication.
15619    COMMAND should be a string constant containing the name of the
15620    command.  */
15621
15622 #define BREAK_ARGS_HELP(command) \
15623 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15624 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15625 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15626 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15627 `-probe-dtrace' (for a DTrace probe).\n\
15628 LOCATION may be a linespec, address, or explicit location as described\n\
15629 below.\n\
15630 \n\
15631 With no LOCATION, uses current execution address of the selected\n\
15632 stack frame.  This is useful for breaking on return to a stack frame.\n\
15633 \n\
15634 THREADNUM is the number from \"info threads\".\n\
15635 CONDITION is a boolean expression.\n\
15636 \n" LOCATION_HELP_STRING "\n\
15637 Multiple breakpoints at one place are permitted, and useful if their\n\
15638 conditions are different.\n\
15639 \n\
15640 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15641
15642 /* List of subcommands for "catch".  */
15643 static struct cmd_list_element *catch_cmdlist;
15644
15645 /* List of subcommands for "tcatch".  */
15646 static struct cmd_list_element *tcatch_cmdlist;
15647
15648 void
15649 add_catch_command (const char *name, const char *docstring,
15650                    cmd_sfunc_ftype *sfunc,
15651                    completer_ftype *completer,
15652                    void *user_data_catch,
15653                    void *user_data_tcatch)
15654 {
15655   struct cmd_list_element *command;
15656
15657   command = add_cmd (name, class_breakpoint, NULL, docstring,
15658                      &catch_cmdlist);
15659   set_cmd_sfunc (command, sfunc);
15660   set_cmd_context (command, user_data_catch);
15661   set_cmd_completer (command, completer);
15662
15663   command = add_cmd (name, class_breakpoint, NULL, docstring,
15664                      &tcatch_cmdlist);
15665   set_cmd_sfunc (command, sfunc);
15666   set_cmd_context (command, user_data_tcatch);
15667   set_cmd_completer (command, completer);
15668 }
15669
15670 static void
15671 save_command (char *arg, int from_tty)
15672 {
15673   printf_unfiltered (_("\"save\" must be followed by "
15674                        "the name of a save subcommand.\n"));
15675   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15676 }
15677
15678 struct breakpoint *
15679 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15680                           void *data)
15681 {
15682   struct breakpoint *b, *b_tmp;
15683
15684   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15685     {
15686       if ((*callback) (b, data))
15687         return b;
15688     }
15689
15690   return NULL;
15691 }
15692
15693 /* Zero if any of the breakpoint's locations could be a location where
15694    functions have been inlined, nonzero otherwise.  */
15695
15696 static int
15697 is_non_inline_function (struct breakpoint *b)
15698 {
15699   /* The shared library event breakpoint is set on the address of a
15700      non-inline function.  */
15701   if (b->type == bp_shlib_event)
15702     return 1;
15703
15704   return 0;
15705 }
15706
15707 /* Nonzero if the specified PC cannot be a location where functions
15708    have been inlined.  */
15709
15710 int
15711 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15712                            const struct target_waitstatus *ws)
15713 {
15714   struct breakpoint *b;
15715   struct bp_location *bl;
15716
15717   ALL_BREAKPOINTS (b)
15718     {
15719       if (!is_non_inline_function (b))
15720         continue;
15721
15722       for (bl = b->loc; bl != NULL; bl = bl->next)
15723         {
15724           if (!bl->shlib_disabled
15725               && bpstat_check_location (bl, aspace, pc, ws))
15726             return 1;
15727         }
15728     }
15729
15730   return 0;
15731 }
15732
15733 /* Remove any references to OBJFILE which is going to be freed.  */
15734
15735 void
15736 breakpoint_free_objfile (struct objfile *objfile)
15737 {
15738   struct bp_location **locp, *loc;
15739
15740   ALL_BP_LOCATIONS (loc, locp)
15741     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15742       loc->symtab = NULL;
15743 }
15744
15745 void
15746 initialize_breakpoint_ops (void)
15747 {
15748   static int initialized = 0;
15749
15750   struct breakpoint_ops *ops;
15751
15752   if (initialized)
15753     return;
15754   initialized = 1;
15755
15756   /* The breakpoint_ops structure to be inherit by all kinds of
15757      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15758      internal and momentary breakpoints, etc.).  */
15759   ops = &bkpt_base_breakpoint_ops;
15760   *ops = base_breakpoint_ops;
15761   ops->re_set = bkpt_re_set;
15762   ops->insert_location = bkpt_insert_location;
15763   ops->remove_location = bkpt_remove_location;
15764   ops->breakpoint_hit = bkpt_breakpoint_hit;
15765   ops->create_sals_from_location = bkpt_create_sals_from_location;
15766   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15767   ops->decode_location = bkpt_decode_location;
15768
15769   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15770   ops = &bkpt_breakpoint_ops;
15771   *ops = bkpt_base_breakpoint_ops;
15772   ops->re_set = bkpt_re_set;
15773   ops->resources_needed = bkpt_resources_needed;
15774   ops->print_it = bkpt_print_it;
15775   ops->print_mention = bkpt_print_mention;
15776   ops->print_recreate = bkpt_print_recreate;
15777
15778   /* Ranged breakpoints.  */
15779   ops = &ranged_breakpoint_ops;
15780   *ops = bkpt_breakpoint_ops;
15781   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15782   ops->resources_needed = resources_needed_ranged_breakpoint;
15783   ops->print_it = print_it_ranged_breakpoint;
15784   ops->print_one = print_one_ranged_breakpoint;
15785   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15786   ops->print_mention = print_mention_ranged_breakpoint;
15787   ops->print_recreate = print_recreate_ranged_breakpoint;
15788
15789   /* Internal breakpoints.  */
15790   ops = &internal_breakpoint_ops;
15791   *ops = bkpt_base_breakpoint_ops;
15792   ops->re_set = internal_bkpt_re_set;
15793   ops->check_status = internal_bkpt_check_status;
15794   ops->print_it = internal_bkpt_print_it;
15795   ops->print_mention = internal_bkpt_print_mention;
15796
15797   /* Momentary breakpoints.  */
15798   ops = &momentary_breakpoint_ops;
15799   *ops = bkpt_base_breakpoint_ops;
15800   ops->re_set = momentary_bkpt_re_set;
15801   ops->check_status = momentary_bkpt_check_status;
15802   ops->print_it = momentary_bkpt_print_it;
15803   ops->print_mention = momentary_bkpt_print_mention;
15804
15805   /* Probe breakpoints.  */
15806   ops = &bkpt_probe_breakpoint_ops;
15807   *ops = bkpt_breakpoint_ops;
15808   ops->insert_location = bkpt_probe_insert_location;
15809   ops->remove_location = bkpt_probe_remove_location;
15810   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15811   ops->decode_location = bkpt_probe_decode_location;
15812
15813   /* Watchpoints.  */
15814   ops = &watchpoint_breakpoint_ops;
15815   *ops = base_breakpoint_ops;
15816   ops->re_set = re_set_watchpoint;
15817   ops->insert_location = insert_watchpoint;
15818   ops->remove_location = remove_watchpoint;
15819   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15820   ops->check_status = check_status_watchpoint;
15821   ops->resources_needed = resources_needed_watchpoint;
15822   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15823   ops->print_it = print_it_watchpoint;
15824   ops->print_mention = print_mention_watchpoint;
15825   ops->print_recreate = print_recreate_watchpoint;
15826   ops->explains_signal = explains_signal_watchpoint;
15827
15828   /* Masked watchpoints.  */
15829   ops = &masked_watchpoint_breakpoint_ops;
15830   *ops = watchpoint_breakpoint_ops;
15831   ops->insert_location = insert_masked_watchpoint;
15832   ops->remove_location = remove_masked_watchpoint;
15833   ops->resources_needed = resources_needed_masked_watchpoint;
15834   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15835   ops->print_it = print_it_masked_watchpoint;
15836   ops->print_one_detail = print_one_detail_masked_watchpoint;
15837   ops->print_mention = print_mention_masked_watchpoint;
15838   ops->print_recreate = print_recreate_masked_watchpoint;
15839
15840   /* Tracepoints.  */
15841   ops = &tracepoint_breakpoint_ops;
15842   *ops = base_breakpoint_ops;
15843   ops->re_set = tracepoint_re_set;
15844   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15845   ops->print_one_detail = tracepoint_print_one_detail;
15846   ops->print_mention = tracepoint_print_mention;
15847   ops->print_recreate = tracepoint_print_recreate;
15848   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15849   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15850   ops->decode_location = tracepoint_decode_location;
15851
15852   /* Probe tracepoints.  */
15853   ops = &tracepoint_probe_breakpoint_ops;
15854   *ops = tracepoint_breakpoint_ops;
15855   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15856   ops->decode_location = tracepoint_probe_decode_location;
15857
15858   /* Static tracepoints with marker (`-m').  */
15859   ops = &strace_marker_breakpoint_ops;
15860   *ops = tracepoint_breakpoint_ops;
15861   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15862   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15863   ops->decode_location = strace_marker_decode_location;
15864
15865   /* Fork catchpoints.  */
15866   ops = &catch_fork_breakpoint_ops;
15867   *ops = base_breakpoint_ops;
15868   ops->insert_location = insert_catch_fork;
15869   ops->remove_location = remove_catch_fork;
15870   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15871   ops->print_it = print_it_catch_fork;
15872   ops->print_one = print_one_catch_fork;
15873   ops->print_mention = print_mention_catch_fork;
15874   ops->print_recreate = print_recreate_catch_fork;
15875
15876   /* Vfork catchpoints.  */
15877   ops = &catch_vfork_breakpoint_ops;
15878   *ops = base_breakpoint_ops;
15879   ops->insert_location = insert_catch_vfork;
15880   ops->remove_location = remove_catch_vfork;
15881   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15882   ops->print_it = print_it_catch_vfork;
15883   ops->print_one = print_one_catch_vfork;
15884   ops->print_mention = print_mention_catch_vfork;
15885   ops->print_recreate = print_recreate_catch_vfork;
15886
15887   /* Exec catchpoints.  */
15888   ops = &catch_exec_breakpoint_ops;
15889   *ops = base_breakpoint_ops;
15890   ops->insert_location = insert_catch_exec;
15891   ops->remove_location = remove_catch_exec;
15892   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15893   ops->print_it = print_it_catch_exec;
15894   ops->print_one = print_one_catch_exec;
15895   ops->print_mention = print_mention_catch_exec;
15896   ops->print_recreate = print_recreate_catch_exec;
15897
15898   /* Solib-related catchpoints.  */
15899   ops = &catch_solib_breakpoint_ops;
15900   *ops = base_breakpoint_ops;
15901   ops->insert_location = insert_catch_solib;
15902   ops->remove_location = remove_catch_solib;
15903   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15904   ops->check_status = check_status_catch_solib;
15905   ops->print_it = print_it_catch_solib;
15906   ops->print_one = print_one_catch_solib;
15907   ops->print_mention = print_mention_catch_solib;
15908   ops->print_recreate = print_recreate_catch_solib;
15909
15910   ops = &dprintf_breakpoint_ops;
15911   *ops = bkpt_base_breakpoint_ops;
15912   ops->re_set = dprintf_re_set;
15913   ops->resources_needed = bkpt_resources_needed;
15914   ops->print_it = bkpt_print_it;
15915   ops->print_mention = bkpt_print_mention;
15916   ops->print_recreate = dprintf_print_recreate;
15917   ops->after_condition_true = dprintf_after_condition_true;
15918   ops->breakpoint_hit = dprintf_breakpoint_hit;
15919 }
15920
15921 /* Chain containing all defined "enable breakpoint" subcommands.  */
15922
15923 static struct cmd_list_element *enablebreaklist = NULL;
15924
15925 void
15926 _initialize_breakpoint (void)
15927 {
15928   struct cmd_list_element *c;
15929
15930   initialize_breakpoint_ops ();
15931
15932   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15933   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
15934   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15935
15936   breakpoint_objfile_key
15937     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15938
15939   breakpoint_chain = 0;
15940   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15941      before a breakpoint is set.  */
15942   breakpoint_count = 0;
15943
15944   tracepoint_count = 0;
15945
15946   add_com ("ignore", class_breakpoint, ignore_command, _("\
15947 Set ignore-count of breakpoint number N to COUNT.\n\
15948 Usage is `ignore N COUNT'."));
15949
15950   add_com ("commands", class_breakpoint, commands_command, _("\
15951 Set commands to be executed when the given breakpoints are hit.\n\
15952 Give a space-separated breakpoint list as argument after \"commands\".\n\
15953 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15954 (e.g. `5-7').\n\
15955 With no argument, the targeted breakpoint is the last one set.\n\
15956 The commands themselves follow starting on the next line.\n\
15957 Type a line containing \"end\" to indicate the end of them.\n\
15958 Give \"silent\" as the first line to make the breakpoint silent;\n\
15959 then no output is printed when it is hit, except what the commands print."));
15960
15961   c = add_com ("condition", class_breakpoint, condition_command, _("\
15962 Specify breakpoint number N to break only if COND is true.\n\
15963 Usage is `condition N COND', where N is an integer and COND is an\n\
15964 expression to be evaluated whenever breakpoint N is reached."));
15965   set_cmd_completer (c, condition_completer);
15966
15967   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15968 Set a temporary breakpoint.\n\
15969 Like \"break\" except the breakpoint is only temporary,\n\
15970 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15971 by using \"enable delete\" on the breakpoint number.\n\
15972 \n"
15973 BREAK_ARGS_HELP ("tbreak")));
15974   set_cmd_completer (c, location_completer);
15975
15976   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15977 Set a hardware assisted breakpoint.\n\
15978 Like \"break\" except the breakpoint requires hardware support,\n\
15979 some target hardware may not have this support.\n\
15980 \n"
15981 BREAK_ARGS_HELP ("hbreak")));
15982   set_cmd_completer (c, location_completer);
15983
15984   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15985 Set a temporary hardware assisted breakpoint.\n\
15986 Like \"hbreak\" except the breakpoint is only temporary,\n\
15987 so it will be deleted when hit.\n\
15988 \n"
15989 BREAK_ARGS_HELP ("thbreak")));
15990   set_cmd_completer (c, location_completer);
15991
15992   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15993 Enable some breakpoints.\n\
15994 Give breakpoint numbers (separated by spaces) as arguments.\n\
15995 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15996 This is used to cancel the effect of the \"disable\" command.\n\
15997 With a subcommand you can enable temporarily."),
15998                   &enablelist, "enable ", 1, &cmdlist);
15999
16000   add_com_alias ("en", "enable", class_breakpoint, 1);
16001
16002   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16003 Enable some breakpoints.\n\
16004 Give breakpoint numbers (separated by spaces) as arguments.\n\
16005 This is used to cancel the effect of the \"disable\" command.\n\
16006 May be abbreviated to simply \"enable\".\n"),
16007                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16008
16009   add_cmd ("once", no_class, enable_once_command, _("\
16010 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16011 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16012            &enablebreaklist);
16013
16014   add_cmd ("delete", no_class, enable_delete_command, _("\
16015 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16016 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16017            &enablebreaklist);
16018
16019   add_cmd ("count", no_class, enable_count_command, _("\
16020 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16021 If a breakpoint is hit while enabled in this fashion,\n\
16022 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16023            &enablebreaklist);
16024
16025   add_cmd ("delete", no_class, enable_delete_command, _("\
16026 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16027 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16028            &enablelist);
16029
16030   add_cmd ("once", no_class, enable_once_command, _("\
16031 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16032 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16033            &enablelist);
16034
16035   add_cmd ("count", no_class, enable_count_command, _("\
16036 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16037 If a breakpoint is hit while enabled in this fashion,\n\
16038 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16039            &enablelist);
16040
16041   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16042 Disable some breakpoints.\n\
16043 Arguments are breakpoint numbers with spaces in between.\n\
16044 To disable all breakpoints, give no argument.\n\
16045 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16046                   &disablelist, "disable ", 1, &cmdlist);
16047   add_com_alias ("dis", "disable", class_breakpoint, 1);
16048   add_com_alias ("disa", "disable", class_breakpoint, 1);
16049
16050   add_cmd ("breakpoints", class_alias, disable_command, _("\
16051 Disable some breakpoints.\n\
16052 Arguments are breakpoint numbers with spaces in between.\n\
16053 To disable all breakpoints, give no argument.\n\
16054 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16055 This command may be abbreviated \"disable\"."),
16056            &disablelist);
16057
16058   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16059 Delete some breakpoints or auto-display expressions.\n\
16060 Arguments are breakpoint numbers with spaces in between.\n\
16061 To delete all breakpoints, give no argument.\n\
16062 \n\
16063 Also a prefix command for deletion of other GDB objects.\n\
16064 The \"unset\" command is also an alias for \"delete\"."),
16065                   &deletelist, "delete ", 1, &cmdlist);
16066   add_com_alias ("d", "delete", class_breakpoint, 1);
16067   add_com_alias ("del", "delete", class_breakpoint, 1);
16068
16069   add_cmd ("breakpoints", class_alias, delete_command, _("\
16070 Delete some breakpoints or auto-display expressions.\n\
16071 Arguments are breakpoint numbers with spaces in between.\n\
16072 To delete all breakpoints, give no argument.\n\
16073 This command may be abbreviated \"delete\"."),
16074            &deletelist);
16075
16076   add_com ("clear", class_breakpoint, clear_command, _("\
16077 Clear breakpoint at specified location.\n\
16078 Argument may be a linespec, explicit, or address location as described below.\n\
16079 \n\
16080 With no argument, clears all breakpoints in the line that the selected frame\n\
16081 is executing in.\n"
16082 "\n" LOCATION_HELP_STRING "\n\
16083 See also the \"delete\" command which clears breakpoints by number."));
16084   add_com_alias ("cl", "clear", class_breakpoint, 1);
16085
16086   c = add_com ("break", class_breakpoint, break_command, _("\
16087 Set breakpoint at specified location.\n"
16088 BREAK_ARGS_HELP ("break")));
16089   set_cmd_completer (c, location_completer);
16090
16091   add_com_alias ("b", "break", class_run, 1);
16092   add_com_alias ("br", "break", class_run, 1);
16093   add_com_alias ("bre", "break", class_run, 1);
16094   add_com_alias ("brea", "break", class_run, 1);
16095
16096   if (dbx_commands)
16097     {
16098       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16099 Break in function/address or break at a line in the current file."),
16100                              &stoplist, "stop ", 1, &cmdlist);
16101       add_cmd ("in", class_breakpoint, stopin_command,
16102                _("Break in function or address."), &stoplist);
16103       add_cmd ("at", class_breakpoint, stopat_command,
16104                _("Break at a line in the current file."), &stoplist);
16105       add_com ("status", class_info, info_breakpoints_command, _("\
16106 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16107 The \"Type\" column indicates one of:\n\
16108 \tbreakpoint     - normal breakpoint\n\
16109 \twatchpoint     - watchpoint\n\
16110 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16111 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16112 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16113 address and file/line number respectively.\n\
16114 \n\
16115 Convenience variable \"$_\" and default examine address for \"x\"\n\
16116 are set to the address of the last breakpoint listed unless the command\n\
16117 is prefixed with \"server \".\n\n\
16118 Convenience variable \"$bpnum\" contains the number of the last\n\
16119 breakpoint set."));
16120     }
16121
16122   add_info ("breakpoints", info_breakpoints_command, _("\
16123 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16124 The \"Type\" column indicates one of:\n\
16125 \tbreakpoint     - normal breakpoint\n\
16126 \twatchpoint     - watchpoint\n\
16127 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16128 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16129 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16130 address and file/line number respectively.\n\
16131 \n\
16132 Convenience variable \"$_\" and default examine address for \"x\"\n\
16133 are set to the address of the last breakpoint listed unless the command\n\
16134 is prefixed with \"server \".\n\n\
16135 Convenience variable \"$bpnum\" contains the number of the last\n\
16136 breakpoint set."));
16137
16138   add_info_alias ("b", "breakpoints", 1);
16139
16140   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16141 Status of all breakpoints, or breakpoint number NUMBER.\n\
16142 The \"Type\" column indicates one of:\n\
16143 \tbreakpoint     - normal breakpoint\n\
16144 \twatchpoint     - watchpoint\n\
16145 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16146 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16147 \tuntil          - internal breakpoint used by the \"until\" command\n\
16148 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16149 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16150 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16151 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16152 address and file/line number respectively.\n\
16153 \n\
16154 Convenience variable \"$_\" and default examine address for \"x\"\n\
16155 are set to the address of the last breakpoint listed unless the command\n\
16156 is prefixed with \"server \".\n\n\
16157 Convenience variable \"$bpnum\" contains the number of the last\n\
16158 breakpoint set."),
16159            &maintenanceinfolist);
16160
16161   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16162 Set catchpoints to catch events."),
16163                   &catch_cmdlist, "catch ",
16164                   0/*allow-unknown*/, &cmdlist);
16165
16166   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16167 Set temporary catchpoints to catch events."),
16168                   &tcatch_cmdlist, "tcatch ",
16169                   0/*allow-unknown*/, &cmdlist);
16170
16171   add_catch_command ("fork", _("Catch calls to fork."),
16172                      catch_fork_command_1,
16173                      NULL,
16174                      (void *) (uintptr_t) catch_fork_permanent,
16175                      (void *) (uintptr_t) catch_fork_temporary);
16176   add_catch_command ("vfork", _("Catch calls to vfork."),
16177                      catch_fork_command_1,
16178                      NULL,
16179                      (void *) (uintptr_t) catch_vfork_permanent,
16180                      (void *) (uintptr_t) catch_vfork_temporary);
16181   add_catch_command ("exec", _("Catch calls to exec."),
16182                      catch_exec_command_1,
16183                      NULL,
16184                      CATCH_PERMANENT,
16185                      CATCH_TEMPORARY);
16186   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16187 Usage: catch load [REGEX]\n\
16188 If REGEX is given, only stop for libraries matching the regular expression."),
16189                      catch_load_command_1,
16190                      NULL,
16191                      CATCH_PERMANENT,
16192                      CATCH_TEMPORARY);
16193   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16194 Usage: catch unload [REGEX]\n\
16195 If REGEX is given, only stop for libraries matching the regular expression."),
16196                      catch_unload_command_1,
16197                      NULL,
16198                      CATCH_PERMANENT,
16199                      CATCH_TEMPORARY);
16200
16201   c = add_com ("watch", class_breakpoint, watch_command, _("\
16202 Set a watchpoint for an expression.\n\
16203 Usage: watch [-l|-location] EXPRESSION\n\
16204 A watchpoint stops execution of your program whenever the value of\n\
16205 an expression changes.\n\
16206 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16207 the memory to which it refers."));
16208   set_cmd_completer (c, expression_completer);
16209
16210   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16211 Set a read watchpoint for an expression.\n\
16212 Usage: rwatch [-l|-location] EXPRESSION\n\
16213 A watchpoint stops execution of your program whenever the value of\n\
16214 an expression is read.\n\
16215 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16216 the memory to which it refers."));
16217   set_cmd_completer (c, expression_completer);
16218
16219   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16220 Set a watchpoint for an expression.\n\
16221 Usage: awatch [-l|-location] EXPRESSION\n\
16222 A watchpoint stops execution of your program whenever the value of\n\
16223 an expression is either read or written.\n\
16224 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16225 the memory to which it refers."));
16226   set_cmd_completer (c, expression_completer);
16227
16228   add_info ("watchpoints", info_watchpoints_command, _("\
16229 Status of specified watchpoints (all watchpoints if no argument)."));
16230
16231   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16232      respond to changes - contrary to the description.  */
16233   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16234                             &can_use_hw_watchpoints, _("\
16235 Set debugger's willingness to use watchpoint hardware."), _("\
16236 Show debugger's willingness to use watchpoint hardware."), _("\
16237 If zero, gdb will not use hardware for new watchpoints, even if\n\
16238 such is available.  (However, any hardware watchpoints that were\n\
16239 created before setting this to nonzero, will continue to use watchpoint\n\
16240 hardware.)"),
16241                             NULL,
16242                             show_can_use_hw_watchpoints,
16243                             &setlist, &showlist);
16244
16245   can_use_hw_watchpoints = 1;
16246
16247   /* Tracepoint manipulation commands.  */
16248
16249   c = add_com ("trace", class_breakpoint, trace_command, _("\
16250 Set a tracepoint at specified location.\n\
16251 \n"
16252 BREAK_ARGS_HELP ("trace") "\n\
16253 Do \"help tracepoints\" for info on other tracepoint commands."));
16254   set_cmd_completer (c, location_completer);
16255
16256   add_com_alias ("tp", "trace", class_alias, 0);
16257   add_com_alias ("tr", "trace", class_alias, 1);
16258   add_com_alias ("tra", "trace", class_alias, 1);
16259   add_com_alias ("trac", "trace", class_alias, 1);
16260
16261   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16262 Set a fast tracepoint at specified location.\n\
16263 \n"
16264 BREAK_ARGS_HELP ("ftrace") "\n\
16265 Do \"help tracepoints\" for info on other tracepoint commands."));
16266   set_cmd_completer (c, location_completer);
16267
16268   c = add_com ("strace", class_breakpoint, strace_command, _("\
16269 Set a static tracepoint at location or marker.\n\
16270 \n\
16271 strace [LOCATION] [if CONDITION]\n\
16272 LOCATION may be a linespec, explicit, or address location (described below) \n\
16273 or -m MARKER_ID.\n\n\
16274 If a marker id is specified, probe the marker with that name.  With\n\
16275 no LOCATION, uses current execution address of the selected stack frame.\n\
16276 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16277 This collects arbitrary user data passed in the probe point call to the\n\
16278 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16279 by printing the $_sdata variable like any other convenience variable.\n\
16280 \n\
16281 CONDITION is a boolean expression.\n\
16282 \n" LOCATION_HELP_STRING "\n\
16283 Multiple tracepoints at one place are permitted, and useful if their\n\
16284 conditions are different.\n\
16285 \n\
16286 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16287 Do \"help tracepoints\" for info on other tracepoint commands."));
16288   set_cmd_completer (c, location_completer);
16289
16290   add_info ("tracepoints", info_tracepoints_command, _("\
16291 Status of specified tracepoints (all tracepoints if no argument).\n\
16292 Convenience variable \"$tpnum\" contains the number of the\n\
16293 last tracepoint set."));
16294
16295   add_info_alias ("tp", "tracepoints", 1);
16296
16297   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16298 Delete specified tracepoints.\n\
16299 Arguments are tracepoint numbers, separated by spaces.\n\
16300 No argument means delete all tracepoints."),
16301            &deletelist);
16302   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16303
16304   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16305 Disable specified tracepoints.\n\
16306 Arguments are tracepoint numbers, separated by spaces.\n\
16307 No argument means disable all tracepoints."),
16308            &disablelist);
16309   deprecate_cmd (c, "disable");
16310
16311   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16312 Enable specified tracepoints.\n\
16313 Arguments are tracepoint numbers, separated by spaces.\n\
16314 No argument means enable all tracepoints."),
16315            &enablelist);
16316   deprecate_cmd (c, "enable");
16317
16318   add_com ("passcount", class_trace, trace_pass_command, _("\
16319 Set the passcount for a tracepoint.\n\
16320 The trace will end when the tracepoint has been passed 'count' times.\n\
16321 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16322 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16323
16324   add_prefix_cmd ("save", class_breakpoint, save_command,
16325                   _("Save breakpoint definitions as a script."),
16326                   &save_cmdlist, "save ",
16327                   0/*allow-unknown*/, &cmdlist);
16328
16329   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16330 Save current breakpoint definitions as a script.\n\
16331 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16332 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16333 session to restore them."),
16334                &save_cmdlist);
16335   set_cmd_completer (c, filename_completer);
16336
16337   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16338 Save current tracepoint definitions as a script.\n\
16339 Use the 'source' command in another debug session to restore them."),
16340                &save_cmdlist);
16341   set_cmd_completer (c, filename_completer);
16342
16343   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16344   deprecate_cmd (c, "save tracepoints");
16345
16346   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16347 Breakpoint specific settings\n\
16348 Configure various breakpoint-specific variables such as\n\
16349 pending breakpoint behavior"),
16350                   &breakpoint_set_cmdlist, "set breakpoint ",
16351                   0/*allow-unknown*/, &setlist);
16352   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16353 Breakpoint specific settings\n\
16354 Configure various breakpoint-specific variables such as\n\
16355 pending breakpoint behavior"),
16356                   &breakpoint_show_cmdlist, "show breakpoint ",
16357                   0/*allow-unknown*/, &showlist);
16358
16359   add_setshow_auto_boolean_cmd ("pending", no_class,
16360                                 &pending_break_support, _("\
16361 Set debugger's behavior regarding pending breakpoints."), _("\
16362 Show debugger's behavior regarding pending breakpoints."), _("\
16363 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16364 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16365 an error.  If auto, an unrecognized breakpoint location results in a\n\
16366 user-query to see if a pending breakpoint should be created."),
16367                                 NULL,
16368                                 show_pending_break_support,
16369                                 &breakpoint_set_cmdlist,
16370                                 &breakpoint_show_cmdlist);
16371
16372   pending_break_support = AUTO_BOOLEAN_AUTO;
16373
16374   add_setshow_boolean_cmd ("auto-hw", no_class,
16375                            &automatic_hardware_breakpoints, _("\
16376 Set automatic usage of hardware breakpoints."), _("\
16377 Show automatic usage of hardware breakpoints."), _("\
16378 If set, the debugger will automatically use hardware breakpoints for\n\
16379 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16380 a warning will be emitted for such breakpoints."),
16381                            NULL,
16382                            show_automatic_hardware_breakpoints,
16383                            &breakpoint_set_cmdlist,
16384                            &breakpoint_show_cmdlist);
16385
16386   add_setshow_boolean_cmd ("always-inserted", class_support,
16387                            &always_inserted_mode, _("\
16388 Set mode for inserting breakpoints."), _("\
16389 Show mode for inserting breakpoints."), _("\
16390 When this mode is on, breakpoints are inserted immediately as soon as\n\
16391 they're created, kept inserted even when execution stops, and removed\n\
16392 only when the user deletes them.  When this mode is off (the default),\n\
16393 breakpoints are inserted only when execution continues, and removed\n\
16394 when execution stops."),
16395                                 NULL,
16396                                 &show_always_inserted_mode,
16397                                 &breakpoint_set_cmdlist,
16398                                 &breakpoint_show_cmdlist);
16399
16400   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16401                         condition_evaluation_enums,
16402                         &condition_evaluation_mode_1, _("\
16403 Set mode of breakpoint condition evaluation."), _("\
16404 Show mode of breakpoint condition evaluation."), _("\
16405 When this is set to \"host\", breakpoint conditions will be\n\
16406 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16407 breakpoint conditions will be downloaded to the target (if the target\n\
16408 supports such feature) and conditions will be evaluated on the target's side.\n\
16409 If this is set to \"auto\" (default), this will be automatically set to\n\
16410 \"target\" if it supports condition evaluation, otherwise it will\n\
16411 be set to \"gdb\""),
16412                            &set_condition_evaluation_mode,
16413                            &show_condition_evaluation_mode,
16414                            &breakpoint_set_cmdlist,
16415                            &breakpoint_show_cmdlist);
16416
16417   add_com ("break-range", class_breakpoint, break_range_command, _("\
16418 Set a breakpoint for an address range.\n\
16419 break-range START-LOCATION, END-LOCATION\n\
16420 where START-LOCATION and END-LOCATION can be one of the following:\n\
16421   LINENUM, for that line in the current file,\n\
16422   FILE:LINENUM, for that line in that file,\n\
16423   +OFFSET, for that number of lines after the current line\n\
16424            or the start of the range\n\
16425   FUNCTION, for the first line in that function,\n\
16426   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16427   *ADDRESS, for the instruction at that address.\n\
16428 \n\
16429 The breakpoint will stop execution of the inferior whenever it executes\n\
16430 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16431 range (including START-LOCATION and END-LOCATION)."));
16432
16433   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16434 Set a dynamic printf at specified location.\n\
16435 dprintf location,format string,arg1,arg2,...\n\
16436 location may be a linespec, explicit, or address location.\n"
16437 "\n" LOCATION_HELP_STRING));
16438   set_cmd_completer (c, location_completer);
16439
16440   add_setshow_enum_cmd ("dprintf-style", class_support,
16441                         dprintf_style_enums, &dprintf_style, _("\
16442 Set the style of usage for dynamic printf."), _("\
16443 Show the style of usage for dynamic printf."), _("\
16444 This setting chooses how GDB will do a dynamic printf.\n\
16445 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16446 console, as with the \"printf\" command.\n\
16447 If the value is \"call\", the print is done by calling a function in your\n\
16448 program; by default printf(), but you can choose a different function or\n\
16449 output stream by setting dprintf-function and dprintf-channel."),
16450                         update_dprintf_commands, NULL,
16451                         &setlist, &showlist);
16452
16453   dprintf_function = xstrdup ("printf");
16454   add_setshow_string_cmd ("dprintf-function", class_support,
16455                           &dprintf_function, _("\
16456 Set the function to use for dynamic printf"), _("\
16457 Show the function to use for dynamic printf"), NULL,
16458                           update_dprintf_commands, NULL,
16459                           &setlist, &showlist);
16460
16461   dprintf_channel = xstrdup ("");
16462   add_setshow_string_cmd ("dprintf-channel", class_support,
16463                           &dprintf_channel, _("\
16464 Set the channel to use for dynamic printf"), _("\
16465 Show the channel to use for dynamic printf"), NULL,
16466                           update_dprintf_commands, NULL,
16467                           &setlist, &showlist);
16468
16469   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16470                            &disconnected_dprintf, _("\
16471 Set whether dprintf continues after GDB disconnects."), _("\
16472 Show whether dprintf continues after GDB disconnects."), _("\
16473 Use this to let dprintf commands continue to hit and produce output\n\
16474 even if GDB disconnects or detaches from the target."),
16475                            NULL,
16476                            NULL,
16477                            &setlist, &showlist);
16478
16479   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16480 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16481 (target agent only) This is useful for formatted output in user-defined commands."));
16482
16483   automatic_hardware_breakpoints = 1;
16484
16485   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16486   observer_attach_thread_exit (remove_threaded_breakpoints);
16487 }