breakpoint.c: bp_location (the array) shadows bp_location (the type)
[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
84 /* Enums for exception-handling support.  */
85 enum exception_event_kind
86 {
87   EX_EVENT_THROW,
88   EX_EVENT_RETHROW,
89   EX_EVENT_CATCH
90 };
91
92 /* Prototypes for local functions.  */
93
94 static void enable_delete_command (char *, int);
95
96 static void enable_once_command (char *, int);
97
98 static void enable_count_command (char *, int);
99
100 static void disable_command (char *, int);
101
102 static void enable_command (char *, int);
103
104 static void map_breakpoint_numbers (const char *,
105                                     void (*) (struct breakpoint *,
106                                               void *),
107                                     void *);
108
109 static void ignore_command (char *, int);
110
111 static int breakpoint_re_set_one (void *);
112
113 static void breakpoint_re_set_default (struct breakpoint *);
114
115 static void
116   create_sals_from_location_default (const struct event_location *location,
117                                      struct linespec_result *canonical,
118                                      enum bptype type_wanted);
119
120 static void create_breakpoints_sal_default (struct gdbarch *,
121                                             struct linespec_result *,
122                                             char *, char *, enum bptype,
123                                             enum bpdisp, int, int,
124                                             int,
125                                             const struct breakpoint_ops *,
126                                             int, int, int, unsigned);
127
128 static void decode_location_default (struct breakpoint *b,
129                                      const struct event_location *location,
130                                      struct program_space *search_pspace,
131                                      struct symtabs_and_lines *sals);
132
133 static void clear_command (char *, int);
134
135 static void catch_command (char *, int);
136
137 static int can_use_hardware_watchpoint (struct value *);
138
139 static void break_command_1 (char *, int, int);
140
141 static void mention (struct breakpoint *);
142
143 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
144                                                                enum bptype,
145                                                                const struct breakpoint_ops *);
146 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
147                                                        const struct symtab_and_line *);
148
149 /* This function is used in gdbtk sources and thus can not be made
150    static.  */
151 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
152                                        struct symtab_and_line,
153                                        enum bptype,
154                                        const struct breakpoint_ops *);
155
156 static struct breakpoint *
157   momentary_breakpoint_from_master (struct breakpoint *orig,
158                                     enum bptype type,
159                                     const struct breakpoint_ops *ops,
160                                     int loc_enabled);
161
162 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
163
164 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
165                                             CORE_ADDR bpaddr,
166                                             enum bptype bptype);
167
168 static void describe_other_breakpoints (struct gdbarch *,
169                                         struct program_space *, CORE_ADDR,
170                                         struct obj_section *, int);
171
172 static int watchpoint_locations_match (struct bp_location *loc1,
173                                        struct bp_location *loc2);
174
175 static int breakpoint_location_address_match (struct bp_location *bl,
176                                               struct address_space *aspace,
177                                               CORE_ADDR addr);
178
179 static int breakpoint_location_address_range_overlap (struct bp_location *,
180                                                       struct address_space *,
181                                                       CORE_ADDR, int);
182
183 static void breakpoints_info (char *, int);
184
185 static void watchpoints_info (char *, int);
186
187 static int breakpoint_1 (char *, int, 
188                          int (*) (const struct breakpoint *));
189
190 static int breakpoint_cond_eval (void *);
191
192 static void cleanup_executing_breakpoints (void *);
193
194 static void commands_command (char *, int);
195
196 static void condition_command (char *, int);
197
198 static int remove_breakpoint (struct bp_location *);
199 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
200
201 static enum print_stop_action print_bp_stop_message (bpstat bs);
202
203 static int watchpoint_check (void *);
204
205 static void maintenance_info_breakpoints (char *, int);
206
207 static int hw_breakpoint_used_count (void);
208
209 static int hw_watchpoint_use_count (struct breakpoint *);
210
211 static int hw_watchpoint_used_count_others (struct breakpoint *except,
212                                             enum bptype type,
213                                             int *other_type_used);
214
215 static void hbreak_command (char *, int);
216
217 static void thbreak_command (char *, int);
218
219 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
220                                     int count);
221
222 static void stop_command (char *arg, int from_tty);
223
224 static void stopin_command (char *arg, int from_tty);
225
226 static void stopat_command (char *arg, int from_tty);
227
228 static void tcatch_command (char *arg, int from_tty);
229
230 static void free_bp_location (struct bp_location *loc);
231 static void incref_bp_location (struct bp_location *loc);
232 static void decref_bp_location (struct bp_location **loc);
233
234 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
235
236 /* update_global_location_list's modes of operation wrt to whether to
237    insert locations now.  */
238 enum ugll_insert_mode
239 {
240   /* Don't insert any breakpoint locations into the inferior, only
241      remove already-inserted locations that no longer should be
242      inserted.  Functions that delete a breakpoint or breakpoints
243      should specify this mode, so that deleting a breakpoint doesn't
244      have the side effect of inserting the locations of other
245      breakpoints that are marked not-inserted, but should_be_inserted
246      returns true on them.
247
248      This behavior is useful is situations close to tear-down -- e.g.,
249      after an exec, while the target still has execution, but
250      breakpoint shadows of the previous executable image should *NOT*
251      be restored to the new image; or before detaching, where the
252      target still has execution and wants to delete breakpoints from
253      GDB's lists, and all breakpoints had already been removed from
254      the inferior.  */
255   UGLL_DONT_INSERT,
256
257   /* May insert breakpoints iff breakpoints_should_be_inserted_now
258      claims breakpoints should be inserted now.  */
259   UGLL_MAY_INSERT,
260
261   /* Insert locations now, irrespective of
262      breakpoints_should_be_inserted_now.  E.g., say all threads are
263      stopped right now, and the user did "continue".  We need to
264      insert breakpoints _before_ resuming the target, but
265      UGLL_MAY_INSERT wouldn't insert them, because
266      breakpoints_should_be_inserted_now returns false at that point,
267      as no thread is running yet.  */
268   UGLL_INSERT
269 };
270
271 static void update_global_location_list (enum ugll_insert_mode);
272
273 static void update_global_location_list_nothrow (enum ugll_insert_mode);
274
275 static int is_hardware_watchpoint (const struct breakpoint *bpt);
276
277 static void insert_breakpoint_locations (void);
278
279 static void tracepoints_info (char *, int);
280
281 static void delete_trace_command (char *, int);
282
283 static void enable_trace_command (char *, int);
284
285 static void disable_trace_command (char *, int);
286
287 static void trace_pass_command (char *, int);
288
289 static void set_tracepoint_count (int num);
290
291 static int is_masked_watchpoint (const struct breakpoint *b);
292
293 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
294
295 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
296    otherwise.  */
297
298 static int strace_marker_p (struct breakpoint *b);
299
300 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
301    that are implemented on top of software or hardware breakpoints
302    (user breakpoints, internal and momentary breakpoints, etc.).  */
303 static struct breakpoint_ops bkpt_base_breakpoint_ops;
304
305 /* Internal breakpoints class type.  */
306 static struct breakpoint_ops internal_breakpoint_ops;
307
308 /* Momentary breakpoints class type.  */
309 static struct breakpoint_ops momentary_breakpoint_ops;
310
311 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
312 static struct breakpoint_ops longjmp_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   memset (&dummy_loc, 0, sizeof (struct bp_location));
951   dummy_loc.address = address;
952
953   /* Find a close match to the first location at ADDRESS.  */
954   locp_found = ((struct bp_location **)
955                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
956                          sizeof (struct bp_location **),
957                          bp_locations_compare_addrs));
958
959   /* Nothing was found, nothing left to do.  */
960   if (locp_found == NULL)
961     return NULL;
962
963   /* We may have found a location that is at ADDRESS but is not the first in the
964      location's list.  Go backwards (if possible) and locate the first one.  */
965   while ((locp_found - 1) >= bp_locations
966          && (*(locp_found - 1))->address == address)
967     locp_found--;
968
969   return locp_found;
970 }
971
972 void
973 set_breakpoint_condition (struct breakpoint *b, const char *exp,
974                           int from_tty)
975 {
976   xfree (b->cond_string);
977   b->cond_string = NULL;
978
979   if (is_watchpoint (b))
980     {
981       struct watchpoint *w = (struct watchpoint *) b;
982
983       w->cond_exp.reset ();
984     }
985   else
986     {
987       struct bp_location *loc;
988
989       for (loc = b->loc; loc; loc = loc->next)
990         {
991           loc->cond.reset ();
992
993           /* No need to free the condition agent expression
994              bytecode (if we have one).  We will handle this
995              when we go through update_global_location_list.  */
996         }
997     }
998
999   if (*exp == 0)
1000     {
1001       if (from_tty)
1002         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1003     }
1004   else
1005     {
1006       const char *arg = exp;
1007
1008       /* I don't know if it matters whether this is the string the user
1009          typed in or the decompiled expression.  */
1010       b->cond_string = xstrdup (arg);
1011       b->condition_not_parsed = 0;
1012
1013       if (is_watchpoint (b))
1014         {
1015           struct watchpoint *w = (struct watchpoint *) b;
1016
1017           innermost_block = NULL;
1018           arg = exp;
1019           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1020           if (*arg)
1021             error (_("Junk at end of expression"));
1022           w->cond_exp_valid_block = innermost_block;
1023         }
1024       else
1025         {
1026           struct bp_location *loc;
1027
1028           for (loc = b->loc; loc; loc = loc->next)
1029             {
1030               arg = exp;
1031               loc->cond =
1032                 parse_exp_1 (&arg, loc->address,
1033                              block_for_pc (loc->address), 0);
1034               if (*arg)
1035                 error (_("Junk at end of expression"));
1036             }
1037         }
1038     }
1039   mark_breakpoint_modified (b);
1040
1041   observer_notify_breakpoint_modified (b);
1042 }
1043
1044 /* Completion for the "condition" command.  */
1045
1046 static VEC (char_ptr) *
1047 condition_completer (struct cmd_list_element *cmd,
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             return NULL;
1065           return complete_internalvar (&text[1]);
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             VEC_safe_push (char_ptr, result, xstrdup (number));
1079         }
1080
1081       return result;
1082     }
1083
1084   /* We're completing the expression part.  */
1085   text = skip_spaces_const (space);
1086   return expression_completer (cmd, text, word);
1087 }
1088
1089 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1090
1091 static void
1092 condition_command (char *arg, int from_tty)
1093 {
1094   struct breakpoint *b;
1095   char *p;
1096   int bnum;
1097
1098   if (arg == 0)
1099     error_no_arg (_("breakpoint number"));
1100
1101   p = arg;
1102   bnum = get_number (&p);
1103   if (bnum == 0)
1104     error (_("Bad breakpoint argument: '%s'"), arg);
1105
1106   ALL_BREAKPOINTS (b)
1107     if (b->number == bnum)
1108       {
1109         /* Check if this breakpoint has a "stop" method implemented in an
1110            extension language.  This method and conditions entered into GDB
1111            from the CLI are mutually exclusive.  */
1112         const struct extension_language_defn *extlang
1113           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1114
1115         if (extlang != NULL)
1116           {
1117             error (_("Only one stop condition allowed.  There is currently"
1118                      " a %s stop condition defined for this breakpoint."),
1119                    ext_lang_capitalized_name (extlang));
1120           }
1121         set_breakpoint_condition (b, p, from_tty);
1122
1123         if (is_breakpoint (b))
1124           update_global_location_list (UGLL_MAY_INSERT);
1125
1126         return;
1127       }
1128
1129   error (_("No breakpoint number %d."), bnum);
1130 }
1131
1132 /* Check that COMMAND do not contain commands that are suitable
1133    only for tracepoints and not suitable for ordinary breakpoints.
1134    Throw if any such commands is found.  */
1135
1136 static void
1137 check_no_tracepoint_commands (struct command_line *commands)
1138 {
1139   struct command_line *c;
1140
1141   for (c = commands; c; c = c->next)
1142     {
1143       int i;
1144
1145       if (c->control_type == while_stepping_control)
1146         error (_("The 'while-stepping' command can "
1147                  "only be used for tracepoints"));
1148
1149       for (i = 0; i < c->body_count; ++i)
1150         check_no_tracepoint_commands ((c->body_list)[i]);
1151
1152       /* Not that command parsing removes leading whitespace and comment
1153          lines and also empty lines.  So, we only need to check for
1154          command directly.  */
1155       if (strstr (c->line, "collect ") == c->line)
1156         error (_("The 'collect' command can only be used for tracepoints"));
1157
1158       if (strstr (c->line, "teval ") == c->line)
1159         error (_("The 'teval' command can only be used for tracepoints"));
1160     }
1161 }
1162
1163 /* Encapsulate tests for different types of tracepoints.  */
1164
1165 static int
1166 is_tracepoint_type (enum bptype type)
1167 {
1168   return (type == bp_tracepoint
1169           || type == bp_fast_tracepoint
1170           || type == bp_static_tracepoint);
1171 }
1172
1173 int
1174 is_tracepoint (const struct breakpoint *b)
1175 {
1176   return is_tracepoint_type (b->type);
1177 }
1178
1179 /* A helper function that validates that COMMANDS are valid for a
1180    breakpoint.  This function will throw an exception if a problem is
1181    found.  */
1182
1183 static void
1184 validate_commands_for_breakpoint (struct breakpoint *b,
1185                                   struct command_line *commands)
1186 {
1187   if (is_tracepoint (b))
1188     {
1189       struct tracepoint *t = (struct tracepoint *) b;
1190       struct command_line *c;
1191       struct command_line *while_stepping = 0;
1192
1193       /* Reset the while-stepping step count.  The previous commands
1194          might have included a while-stepping action, while the new
1195          ones might not.  */
1196       t->step_count = 0;
1197
1198       /* We need to verify that each top-level element of commands is
1199          valid for tracepoints, that there's at most one
1200          while-stepping element, and that the while-stepping's body
1201          has valid tracing commands excluding nested while-stepping.
1202          We also need to validate the tracepoint action line in the
1203          context of the tracepoint --- validate_actionline actually
1204          has side effects, like setting the tracepoint's
1205          while-stepping STEP_COUNT, in addition to checking if the
1206          collect/teval actions parse and make sense in the
1207          tracepoint's context.  */
1208       for (c = commands; c; c = c->next)
1209         {
1210           if (c->control_type == while_stepping_control)
1211             {
1212               if (b->type == bp_fast_tracepoint)
1213                 error (_("The 'while-stepping' command "
1214                          "cannot be used for fast tracepoint"));
1215               else if (b->type == bp_static_tracepoint)
1216                 error (_("The 'while-stepping' command "
1217                          "cannot be used for static tracepoint"));
1218
1219               if (while_stepping)
1220                 error (_("The 'while-stepping' command "
1221                          "can be used only once"));
1222               else
1223                 while_stepping = c;
1224             }
1225
1226           validate_actionline (c->line, b);
1227         }
1228       if (while_stepping)
1229         {
1230           struct command_line *c2;
1231
1232           gdb_assert (while_stepping->body_count == 1);
1233           c2 = while_stepping->body_list[0];
1234           for (; c2; c2 = c2->next)
1235             {
1236               if (c2->control_type == while_stepping_control)
1237                 error (_("The 'while-stepping' command cannot be nested"));
1238             }
1239         }
1240     }
1241   else
1242     {
1243       check_no_tracepoint_commands (commands);
1244     }
1245 }
1246
1247 /* Return a vector of all the static tracepoints set at ADDR.  The
1248    caller is responsible for releasing the vector.  */
1249
1250 VEC(breakpoint_p) *
1251 static_tracepoints_here (CORE_ADDR addr)
1252 {
1253   struct breakpoint *b;
1254   VEC(breakpoint_p) *found = 0;
1255   struct bp_location *loc;
1256
1257   ALL_BREAKPOINTS (b)
1258     if (b->type == bp_static_tracepoint)
1259       {
1260         for (loc = b->loc; loc; loc = loc->next)
1261           if (loc->address == addr)
1262             VEC_safe_push(breakpoint_p, found, b);
1263       }
1264
1265   return found;
1266 }
1267
1268 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1269    validate that only allowed commands are included.  */
1270
1271 void
1272 breakpoint_set_commands (struct breakpoint *b, 
1273                          command_line_up &&commands)
1274 {
1275   validate_commands_for_breakpoint (b, commands.get ());
1276
1277   decref_counted_command_line (&b->commands);
1278   b->commands = alloc_counted_command_line (commands.release ());
1279   observer_notify_breakpoint_modified (b);
1280 }
1281
1282 /* Set the internal `silent' flag on the breakpoint.  Note that this
1283    is not the same as the "silent" that may appear in the breakpoint's
1284    commands.  */
1285
1286 void
1287 breakpoint_set_silent (struct breakpoint *b, int silent)
1288 {
1289   int old_silent = b->silent;
1290
1291   b->silent = silent;
1292   if (old_silent != silent)
1293     observer_notify_breakpoint_modified (b);
1294 }
1295
1296 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1297    breakpoint work for any thread.  */
1298
1299 void
1300 breakpoint_set_thread (struct breakpoint *b, int thread)
1301 {
1302   int old_thread = b->thread;
1303
1304   b->thread = thread;
1305   if (old_thread != thread)
1306     observer_notify_breakpoint_modified (b);
1307 }
1308
1309 /* Set the task for this breakpoint.  If TASK is 0, make the
1310    breakpoint work for any task.  */
1311
1312 void
1313 breakpoint_set_task (struct breakpoint *b, int task)
1314 {
1315   int old_task = b->task;
1316
1317   b->task = task;
1318   if (old_task != task)
1319     observer_notify_breakpoint_modified (b);
1320 }
1321
1322 void
1323 check_tracepoint_command (char *line, void *closure)
1324 {
1325   struct breakpoint *b = (struct breakpoint *) closure;
1326
1327   validate_actionline (line, b);
1328 }
1329
1330 /* A structure used to pass information through
1331    map_breakpoint_numbers.  */
1332
1333 struct commands_info
1334 {
1335   /* True if the command was typed at a tty.  */
1336   int from_tty;
1337
1338   /* The breakpoint range spec.  */
1339   const char *arg;
1340
1341   /* Non-NULL if the body of the commands are being read from this
1342      already-parsed command.  */
1343   struct command_line *control;
1344
1345   /* The command lines read from the user, or NULL if they have not
1346      yet been read.  */
1347   struct counted_command_line *cmd;
1348 };
1349
1350 /* A callback for map_breakpoint_numbers that sets the commands for
1351    commands_command.  */
1352
1353 static void
1354 do_map_commands_command (struct breakpoint *b, void *data)
1355 {
1356   struct commands_info *info = (struct commands_info *) data;
1357
1358   if (info->cmd == NULL)
1359     {
1360       command_line_up l;
1361
1362       if (info->control != NULL)
1363         l = copy_command_lines (info->control->body_list[0]);
1364       else
1365         {
1366           struct cleanup *old_chain;
1367           char *str;
1368
1369           str = xstrprintf (_("Type commands for breakpoint(s) "
1370                               "%s, one per line."),
1371                             info->arg);
1372
1373           old_chain = make_cleanup (xfree, str);
1374
1375           l = read_command_lines (str,
1376                                   info->from_tty, 1,
1377                                   (is_tracepoint (b)
1378                                    ? check_tracepoint_command : 0),
1379                                   b);
1380
1381           do_cleanups (old_chain);
1382         }
1383
1384       info->cmd = alloc_counted_command_line (l.release ());
1385     }
1386
1387   /* If a breakpoint was on the list more than once, we don't need to
1388      do anything.  */
1389   if (b->commands != info->cmd)
1390     {
1391       validate_commands_for_breakpoint (b, info->cmd->commands);
1392       incref_counted_command_line (info->cmd);
1393       decref_counted_command_line (&b->commands);
1394       b->commands = info->cmd;
1395       observer_notify_breakpoint_modified (b);
1396     }
1397 }
1398
1399 static void
1400 commands_command_1 (const char *arg, int from_tty,
1401                     struct command_line *control)
1402 {
1403   struct cleanup *cleanups;
1404   struct commands_info info;
1405
1406   info.from_tty = from_tty;
1407   info.control = control;
1408   info.cmd = NULL;
1409   /* If we read command lines from the user, then `info' will hold an
1410      extra reference to the commands that we must clean up.  */
1411   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1412
1413   std::string new_arg;
1414
1415   if (arg == NULL || !*arg)
1416     {
1417       if (breakpoint_count - prev_breakpoint_count > 1)
1418         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1419                                  breakpoint_count);
1420       else if (breakpoint_count > 0)
1421         new_arg = string_printf ("%d", breakpoint_count);
1422     }
1423   else
1424     new_arg = arg;
1425
1426   info.arg = new_arg.c_str ();
1427
1428   map_breakpoint_numbers (info.arg, do_map_commands_command, &info);
1429
1430   if (info.cmd == NULL)
1431     error (_("No breakpoints specified."));
1432
1433   do_cleanups (cleanups);
1434 }
1435
1436 static void
1437 commands_command (char *arg, int from_tty)
1438 {
1439   commands_command_1 (arg, from_tty, NULL);
1440 }
1441
1442 /* Like commands_command, but instead of reading the commands from
1443    input stream, takes them from an already parsed command structure.
1444
1445    This is used by cli-script.c to DTRT with breakpoint commands
1446    that are part of if and while bodies.  */
1447 enum command_control_type
1448 commands_from_control_command (const char *arg, struct command_line *cmd)
1449 {
1450   commands_command_1 (arg, 0, cmd);
1451   return simple_control;
1452 }
1453
1454 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1455
1456 static int
1457 bp_location_has_shadow (struct bp_location *bl)
1458 {
1459   if (bl->loc_type != bp_loc_software_breakpoint)
1460     return 0;
1461   if (!bl->inserted)
1462     return 0;
1463   if (bl->target_info.shadow_len == 0)
1464     /* BL isn't valid, or doesn't shadow memory.  */
1465     return 0;
1466   return 1;
1467 }
1468
1469 /* Update BUF, which is LEN bytes read from the target address
1470    MEMADDR, by replacing a memory breakpoint with its shadowed
1471    contents.
1472
1473    If READBUF is not NULL, this buffer must not overlap with the of
1474    the breakpoint location's shadow_contents buffer.  Otherwise, a
1475    failed assertion internal error will be raised.  */
1476
1477 static void
1478 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1479                             const gdb_byte *writebuf_org,
1480                             ULONGEST memaddr, LONGEST len,
1481                             struct bp_target_info *target_info,
1482                             struct gdbarch *gdbarch)
1483 {
1484   /* Now do full processing of the found relevant range of elements.  */
1485   CORE_ADDR bp_addr = 0;
1486   int bp_size = 0;
1487   int bptoffset = 0;
1488
1489   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1490                                  current_program_space->aspace, 0))
1491     {
1492       /* The breakpoint is inserted in a different address space.  */
1493       return;
1494     }
1495
1496   /* Addresses and length of the part of the breakpoint that
1497      we need to copy.  */
1498   bp_addr = target_info->placed_address;
1499   bp_size = target_info->shadow_len;
1500
1501   if (bp_addr + bp_size <= memaddr)
1502     {
1503       /* The breakpoint is entirely before the chunk of memory we are
1504          reading.  */
1505       return;
1506     }
1507
1508   if (bp_addr >= memaddr + len)
1509     {
1510       /* The breakpoint is entirely after the chunk of memory we are
1511          reading.  */
1512       return;
1513     }
1514
1515   /* Offset within shadow_contents.  */
1516   if (bp_addr < memaddr)
1517     {
1518       /* Only copy the second part of the breakpoint.  */
1519       bp_size -= memaddr - bp_addr;
1520       bptoffset = memaddr - bp_addr;
1521       bp_addr = memaddr;
1522     }
1523
1524   if (bp_addr + bp_size > memaddr + len)
1525     {
1526       /* Only copy the first part of the breakpoint.  */
1527       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1528     }
1529
1530   if (readbuf != NULL)
1531     {
1532       /* Verify that the readbuf buffer does not overlap with the
1533          shadow_contents buffer.  */
1534       gdb_assert (target_info->shadow_contents >= readbuf + len
1535                   || readbuf >= (target_info->shadow_contents
1536                                  + target_info->shadow_len));
1537
1538       /* Update the read buffer with this inserted breakpoint's
1539          shadow.  */
1540       memcpy (readbuf + bp_addr - memaddr,
1541               target_info->shadow_contents + bptoffset, bp_size);
1542     }
1543   else
1544     {
1545       const unsigned char *bp;
1546       CORE_ADDR addr = target_info->reqstd_address;
1547       int placed_size;
1548
1549       /* Update the shadow with what we want to write to memory.  */
1550       memcpy (target_info->shadow_contents + bptoffset,
1551               writebuf_org + bp_addr - memaddr, bp_size);
1552
1553       /* Determine appropriate breakpoint contents and size for this
1554          address.  */
1555       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1556
1557       /* Update the final write buffer with this inserted
1558          breakpoint's INSN.  */
1559       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1560     }
1561 }
1562
1563 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1564    by replacing any memory breakpoints with their shadowed contents.
1565
1566    If READBUF is not NULL, this buffer must not overlap with any of
1567    the breakpoint location's shadow_contents buffers.  Otherwise,
1568    a failed assertion internal error will be raised.
1569
1570    The range of shadowed area by each bp_location is:
1571      bl->address - bp_locations_placed_address_before_address_max
1572      up to bl->address + bp_locations_shadow_len_after_address_max
1573    The range we were requested to resolve shadows for is:
1574      memaddr ... memaddr + len
1575    Thus the safe cutoff boundaries for performance optimization are
1576      memaddr + len <= (bl->address
1577                        - bp_locations_placed_address_before_address_max)
1578    and:
1579      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1580
1581 void
1582 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1583                         const gdb_byte *writebuf_org,
1584                         ULONGEST memaddr, LONGEST len)
1585 {
1586   /* Left boundary, right boundary and median element of our binary
1587      search.  */
1588   unsigned bc_l, bc_r, bc;
1589
1590   /* Find BC_L which is a leftmost element which may affect BUF
1591      content.  It is safe to report lower value but a failure to
1592      report higher one.  */
1593
1594   bc_l = 0;
1595   bc_r = bp_locations_count;
1596   while (bc_l + 1 < bc_r)
1597     {
1598       struct bp_location *bl;
1599
1600       bc = (bc_l + bc_r) / 2;
1601       bl = bp_locations[bc];
1602
1603       /* Check first BL->ADDRESS will not overflow due to the added
1604          constant.  Then advance the left boundary only if we are sure
1605          the BC element can in no way affect the BUF content (MEMADDR
1606          to MEMADDR + LEN range).
1607
1608          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1609          offset so that we cannot miss a breakpoint with its shadow
1610          range tail still reaching MEMADDR.  */
1611
1612       if ((bl->address + bp_locations_shadow_len_after_address_max
1613            >= bl->address)
1614           && (bl->address + bp_locations_shadow_len_after_address_max
1615               <= memaddr))
1616         bc_l = bc;
1617       else
1618         bc_r = bc;
1619     }
1620
1621   /* Due to the binary search above, we need to make sure we pick the
1622      first location that's at BC_L's address.  E.g., if there are
1623      multiple locations at the same address, BC_L may end up pointing
1624      at a duplicate location, and miss the "master"/"inserted"
1625      location.  Say, given locations L1, L2 and L3 at addresses A and
1626      B:
1627
1628       L1@A, L2@A, L3@B, ...
1629
1630      BC_L could end up pointing at location L2, while the "master"
1631      location could be L1.  Since the `loc->inserted' flag is only set
1632      on "master" locations, we'd forget to restore the shadow of L1
1633      and L2.  */
1634   while (bc_l > 0
1635          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1636     bc_l--;
1637
1638   /* Now do full processing of the found relevant range of elements.  */
1639
1640   for (bc = bc_l; bc < bp_locations_count; bc++)
1641   {
1642     struct bp_location *bl = bp_locations[bc];
1643
1644     /* bp_location array has BL->OWNER always non-NULL.  */
1645     if (bl->owner->type == bp_none)
1646       warning (_("reading through apparently deleted breakpoint #%d?"),
1647                bl->owner->number);
1648
1649     /* Performance optimization: any further element can no longer affect BUF
1650        content.  */
1651
1652     if (bl->address >= bp_locations_placed_address_before_address_max
1653         && memaddr + len <= (bl->address
1654                              - bp_locations_placed_address_before_address_max))
1655       break;
1656
1657     if (!bp_location_has_shadow (bl))
1658       continue;
1659
1660     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1661                                 memaddr, len, &bl->target_info, bl->gdbarch);
1662   }
1663 }
1664
1665 \f
1666
1667 /* Return true if BPT is either a software breakpoint or a hardware
1668    breakpoint.  */
1669
1670 int
1671 is_breakpoint (const struct breakpoint *bpt)
1672 {
1673   return (bpt->type == bp_breakpoint
1674           || bpt->type == bp_hardware_breakpoint
1675           || bpt->type == bp_dprintf);
1676 }
1677
1678 /* Return true if BPT is of any hardware watchpoint kind.  */
1679
1680 static int
1681 is_hardware_watchpoint (const struct breakpoint *bpt)
1682 {
1683   return (bpt->type == bp_hardware_watchpoint
1684           || bpt->type == bp_read_watchpoint
1685           || bpt->type == bp_access_watchpoint);
1686 }
1687
1688 /* Return true if BPT is of any watchpoint kind, hardware or
1689    software.  */
1690
1691 int
1692 is_watchpoint (const struct breakpoint *bpt)
1693 {
1694   return (is_hardware_watchpoint (bpt)
1695           || bpt->type == bp_watchpoint);
1696 }
1697
1698 /* Returns true if the current thread and its running state are safe
1699    to evaluate or update watchpoint B.  Watchpoints on local
1700    expressions need to be evaluated in the context of the thread that
1701    was current when the watchpoint was created, and, that thread needs
1702    to be stopped to be able to select the correct frame context.
1703    Watchpoints on global expressions can be evaluated on any thread,
1704    and in any state.  It is presently left to the target allowing
1705    memory accesses when threads are running.  */
1706
1707 static int
1708 watchpoint_in_thread_scope (struct watchpoint *b)
1709 {
1710   return (b->base.pspace == current_program_space
1711           && (ptid_equal (b->watchpoint_thread, null_ptid)
1712               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1713                   && !is_executing (inferior_ptid))));
1714 }
1715
1716 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1717    associated bp_watchpoint_scope breakpoint.  */
1718
1719 static void
1720 watchpoint_del_at_next_stop (struct watchpoint *w)
1721 {
1722   struct breakpoint *b = &w->base;
1723
1724   if (b->related_breakpoint != b)
1725     {
1726       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1727       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1728       b->related_breakpoint->disposition = disp_del_at_next_stop;
1729       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1730       b->related_breakpoint = b;
1731     }
1732   b->disposition = disp_del_at_next_stop;
1733 }
1734
1735 /* Extract a bitfield value from value VAL using the bit parameters contained in
1736    watchpoint W.  */
1737
1738 static struct value *
1739 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1740 {
1741   struct value *bit_val;
1742
1743   if (val == NULL)
1744     return NULL;
1745
1746   bit_val = allocate_value (value_type (val));
1747
1748   unpack_value_bitfield (bit_val,
1749                          w->val_bitpos,
1750                          w->val_bitsize,
1751                          value_contents_for_printing (val),
1752                          value_offset (val),
1753                          val);
1754
1755   return bit_val;
1756 }
1757
1758 /* Allocate a dummy location and add it to B, which must be a software
1759    watchpoint.  This is required because even if a software watchpoint
1760    is not watching any memory, bpstat_stop_status requires a location
1761    to be able to report stops.  */
1762
1763 static void
1764 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1765                                             struct program_space *pspace)
1766 {
1767   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1768
1769   b->loc = allocate_bp_location (b);
1770   b->loc->pspace = pspace;
1771   b->loc->address = -1;
1772   b->loc->length = -1;
1773 }
1774
1775 /* Returns true if B is a software watchpoint that is not watching any
1776    memory (e.g., "watch $pc").  */
1777
1778 static int
1779 is_no_memory_software_watchpoint (struct breakpoint *b)
1780 {
1781   return (b->type == bp_watchpoint
1782           && b->loc != NULL
1783           && b->loc->next == NULL
1784           && b->loc->address == -1
1785           && b->loc->length == -1);
1786 }
1787
1788 /* Assuming that B is a watchpoint:
1789    - Reparse watchpoint expression, if REPARSE is non-zero
1790    - Evaluate expression and store the result in B->val
1791    - Evaluate the condition if there is one, and store the result
1792      in b->loc->cond.
1793    - Update the list of values that must be watched in B->loc.
1794
1795    If the watchpoint disposition is disp_del_at_next_stop, then do
1796    nothing.  If this is local watchpoint that is out of scope, delete
1797    it.
1798
1799    Even with `set breakpoint always-inserted on' the watchpoints are
1800    removed + inserted on each stop here.  Normal breakpoints must
1801    never be removed because they might be missed by a running thread
1802    when debugging in non-stop mode.  On the other hand, hardware
1803    watchpoints (is_hardware_watchpoint; processed here) are specific
1804    to each LWP since they are stored in each LWP's hardware debug
1805    registers.  Therefore, such LWP must be stopped first in order to
1806    be able to modify its hardware watchpoints.
1807
1808    Hardware watchpoints must be reset exactly once after being
1809    presented to the user.  It cannot be done sooner, because it would
1810    reset the data used to present the watchpoint hit to the user.  And
1811    it must not be done later because it could display the same single
1812    watchpoint hit during multiple GDB stops.  Note that the latter is
1813    relevant only to the hardware watchpoint types bp_read_watchpoint
1814    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1815    not user-visible - its hit is suppressed if the memory content has
1816    not changed.
1817
1818    The following constraints influence the location where we can reset
1819    hardware watchpoints:
1820
1821    * target_stopped_by_watchpoint and target_stopped_data_address are
1822      called several times when GDB stops.
1823
1824    [linux] 
1825    * Multiple hardware watchpoints can be hit at the same time,
1826      causing GDB to stop.  GDB only presents one hardware watchpoint
1827      hit at a time as the reason for stopping, and all the other hits
1828      are presented later, one after the other, each time the user
1829      requests the execution to be resumed.  Execution is not resumed
1830      for the threads still having pending hit event stored in
1831      LWP_INFO->STATUS.  While the watchpoint is already removed from
1832      the inferior on the first stop the thread hit event is kept being
1833      reported from its cached value by linux_nat_stopped_data_address
1834      until the real thread resume happens after the watchpoint gets
1835      presented and thus its LWP_INFO->STATUS gets reset.
1836
1837    Therefore the hardware watchpoint hit can get safely reset on the
1838    watchpoint removal from inferior.  */
1839
1840 static void
1841 update_watchpoint (struct watchpoint *b, int reparse)
1842 {
1843   int within_current_scope;
1844   struct frame_id saved_frame_id;
1845   int frame_saved;
1846
1847   /* If this is a local watchpoint, we only want to check if the
1848      watchpoint frame is in scope if the current thread is the thread
1849      that was used to create the watchpoint.  */
1850   if (!watchpoint_in_thread_scope (b))
1851     return;
1852
1853   if (b->base.disposition == disp_del_at_next_stop)
1854     return;
1855  
1856   frame_saved = 0;
1857
1858   /* Determine if the watchpoint is within scope.  */
1859   if (b->exp_valid_block == NULL)
1860     within_current_scope = 1;
1861   else
1862     {
1863       struct frame_info *fi = get_current_frame ();
1864       struct gdbarch *frame_arch = get_frame_arch (fi);
1865       CORE_ADDR frame_pc = get_frame_pc (fi);
1866
1867       /* If we're at a point where the stack has been destroyed
1868          (e.g. in a function epilogue), unwinding may not work
1869          properly. Do not attempt to recreate locations at this
1870          point.  See similar comments in watchpoint_check.  */
1871       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1872         return;
1873
1874       /* Save the current frame's ID so we can restore it after
1875          evaluating the watchpoint expression on its own frame.  */
1876       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1877          took a frame parameter, so that we didn't have to change the
1878          selected frame.  */
1879       frame_saved = 1;
1880       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1881
1882       fi = frame_find_by_id (b->watchpoint_frame);
1883       within_current_scope = (fi != NULL);
1884       if (within_current_scope)
1885         select_frame (fi);
1886     }
1887
1888   /* We don't free locations.  They are stored in the bp_location array
1889      and update_global_location_list will eventually delete them and
1890      remove breakpoints if needed.  */
1891   b->base.loc = NULL;
1892
1893   if (within_current_scope && reparse)
1894     {
1895       const char *s;
1896
1897       b->exp.reset ();
1898       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1899       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1900       /* If the meaning of expression itself changed, the old value is
1901          no longer relevant.  We don't want to report a watchpoint hit
1902          to the user when the old value and the new value may actually
1903          be completely different objects.  */
1904       value_free (b->val);
1905       b->val = NULL;
1906       b->val_valid = 0;
1907
1908       /* Note that unlike with breakpoints, the watchpoint's condition
1909          expression is stored in the breakpoint object, not in the
1910          locations (re)created below.  */
1911       if (b->base.cond_string != NULL)
1912         {
1913           b->cond_exp.reset ();
1914
1915           s = b->base.cond_string;
1916           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1917         }
1918     }
1919
1920   /* If we failed to parse the expression, for example because
1921      it refers to a global variable in a not-yet-loaded shared library,
1922      don't try to insert watchpoint.  We don't automatically delete
1923      such watchpoint, though, since failure to parse expression
1924      is different from out-of-scope watchpoint.  */
1925   if (!target_has_execution)
1926     {
1927       /* Without execution, memory can't change.  No use to try and
1928          set watchpoint locations.  The watchpoint will be reset when
1929          the target gains execution, through breakpoint_re_set.  */
1930       if (!can_use_hw_watchpoints)
1931         {
1932           if (b->base.ops->works_in_software_mode (&b->base))
1933             b->base.type = bp_watchpoint;
1934           else
1935             error (_("Can't set read/access watchpoint when "
1936                      "hardware watchpoints are disabled."));
1937         }
1938     }
1939   else if (within_current_scope && b->exp)
1940     {
1941       int pc = 0;
1942       struct value *val_chain, *v, *result, *next;
1943       struct program_space *frame_pspace;
1944
1945       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1946
1947       /* Avoid setting b->val if it's already set.  The meaning of
1948          b->val is 'the last value' user saw, and we should update
1949          it only if we reported that last value to user.  As it
1950          happens, the code that reports it updates b->val directly.
1951          We don't keep track of the memory value for masked
1952          watchpoints.  */
1953       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1954         {
1955           if (b->val_bitsize != 0)
1956             {
1957               v = extract_bitfield_from_watchpoint_value (b, v);
1958               if (v != NULL)
1959                 release_value (v);
1960             }
1961           b->val = v;
1962           b->val_valid = 1;
1963         }
1964
1965       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1966
1967       /* Look at each value on the value chain.  */
1968       for (v = val_chain; v; v = value_next (v))
1969         {
1970           /* If it's a memory location, and GDB actually needed
1971              its contents to evaluate the expression, then we
1972              must watch it.  If the first value returned is
1973              still lazy, that means an error occurred reading it;
1974              watch it anyway in case it becomes readable.  */
1975           if (VALUE_LVAL (v) == lval_memory
1976               && (v == val_chain || ! value_lazy (v)))
1977             {
1978               struct type *vtype = check_typedef (value_type (v));
1979
1980               /* We only watch structs and arrays if user asked
1981                  for it explicitly, never if they just happen to
1982                  appear in the middle of some value chain.  */
1983               if (v == result
1984                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1985                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1986                 {
1987                   CORE_ADDR addr;
1988                   enum target_hw_bp_type type;
1989                   struct bp_location *loc, **tmp;
1990                   int bitpos = 0, bitsize = 0;
1991
1992                   if (value_bitsize (v) != 0)
1993                     {
1994                       /* Extract the bit parameters out from the bitfield
1995                          sub-expression.  */
1996                       bitpos = value_bitpos (v);
1997                       bitsize = value_bitsize (v);
1998                     }
1999                   else if (v == result && b->val_bitsize != 0)
2000                     {
2001                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2002                         lvalue whose bit parameters are saved in the fields
2003                         VAL_BITPOS and VAL_BITSIZE.  */
2004                       bitpos = b->val_bitpos;
2005                       bitsize = b->val_bitsize;
2006                     }
2007
2008                   addr = value_address (v);
2009                   if (bitsize != 0)
2010                     {
2011                       /* Skip the bytes that don't contain the bitfield.  */
2012                       addr += bitpos / 8;
2013                     }
2014
2015                   type = hw_write;
2016                   if (b->base.type == bp_read_watchpoint)
2017                     type = hw_read;
2018                   else if (b->base.type == bp_access_watchpoint)
2019                     type = hw_access;
2020
2021                   loc = allocate_bp_location (&b->base);
2022                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
2023                     ;
2024                   *tmp = loc;
2025                   loc->gdbarch = get_type_arch (value_type (v));
2026
2027                   loc->pspace = frame_pspace;
2028                   loc->address = addr;
2029
2030                   if (bitsize != 0)
2031                     {
2032                       /* Just cover the bytes that make up the bitfield.  */
2033                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2034                     }
2035                   else
2036                     loc->length = TYPE_LENGTH (value_type (v));
2037
2038                   loc->watchpoint_type = type;
2039                 }
2040             }
2041         }
2042
2043       /* Change the type of breakpoint between hardware assisted or
2044          an ordinary watchpoint depending on the hardware support
2045          and free hardware slots.  REPARSE is set when the inferior
2046          is started.  */
2047       if (reparse)
2048         {
2049           int reg_cnt;
2050           enum bp_loc_type loc_type;
2051           struct bp_location *bl;
2052
2053           reg_cnt = can_use_hardware_watchpoint (val_chain);
2054
2055           if (reg_cnt)
2056             {
2057               int i, target_resources_ok, other_type_used;
2058               enum bptype type;
2059
2060               /* Use an exact watchpoint when there's only one memory region to be
2061                  watched, and only one debug register is needed to watch it.  */
2062               b->exact = target_exact_watchpoints && reg_cnt == 1;
2063
2064               /* We need to determine how many resources are already
2065                  used for all other hardware watchpoints plus this one
2066                  to see if we still have enough resources to also fit
2067                  this watchpoint in as well.  */
2068
2069               /* If this is a software watchpoint, we try to turn it
2070                  to a hardware one -- count resources as if B was of
2071                  hardware watchpoint type.  */
2072               type = b->base.type;
2073               if (type == bp_watchpoint)
2074                 type = bp_hardware_watchpoint;
2075
2076               /* This watchpoint may or may not have been placed on
2077                  the list yet at this point (it won't be in the list
2078                  if we're trying to create it for the first time,
2079                  through watch_command), so always account for it
2080                  manually.  */
2081
2082               /* Count resources used by all watchpoints except B.  */
2083               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
2084
2085               /* Add in the resources needed for B.  */
2086               i += hw_watchpoint_use_count (&b->base);
2087
2088               target_resources_ok
2089                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2090               if (target_resources_ok <= 0)
2091                 {
2092                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
2093
2094                   if (target_resources_ok == 0 && !sw_mode)
2095                     error (_("Target does not support this type of "
2096                              "hardware watchpoint."));
2097                   else if (target_resources_ok < 0 && !sw_mode)
2098                     error (_("There are not enough available hardware "
2099                              "resources for this watchpoint."));
2100
2101                   /* Downgrade to software watchpoint.  */
2102                   b->base.type = bp_watchpoint;
2103                 }
2104               else
2105                 {
2106                   /* If this was a software watchpoint, we've just
2107                      found we have enough resources to turn it to a
2108                      hardware watchpoint.  Otherwise, this is a
2109                      nop.  */
2110                   b->base.type = type;
2111                 }
2112             }
2113           else if (!b->base.ops->works_in_software_mode (&b->base))
2114             {
2115               if (!can_use_hw_watchpoints)
2116                 error (_("Can't set read/access watchpoint when "
2117                          "hardware watchpoints are disabled."));
2118               else
2119                 error (_("Expression cannot be implemented with "
2120                          "read/access watchpoint."));
2121             }
2122           else
2123             b->base.type = bp_watchpoint;
2124
2125           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2126                       : bp_loc_hardware_watchpoint);
2127           for (bl = b->base.loc; bl; bl = bl->next)
2128             bl->loc_type = loc_type;
2129         }
2130
2131       for (v = val_chain; v; v = next)
2132         {
2133           next = value_next (v);
2134           if (v != b->val)
2135             value_free (v);
2136         }
2137
2138       /* If a software watchpoint is not watching any memory, then the
2139          above left it without any location set up.  But,
2140          bpstat_stop_status requires a location to be able to report
2141          stops, so make sure there's at least a dummy one.  */
2142       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2143         software_watchpoint_add_no_memory_location (&b->base, frame_pspace);
2144     }
2145   else if (!within_current_scope)
2146     {
2147       printf_filtered (_("\
2148 Watchpoint %d deleted because the program has left the block\n\
2149 in which its expression is valid.\n"),
2150                        b->base.number);
2151       watchpoint_del_at_next_stop (b);
2152     }
2153
2154   /* Restore the selected frame.  */
2155   if (frame_saved)
2156     select_frame (frame_find_by_id (saved_frame_id));
2157 }
2158
2159
2160 /* Returns 1 iff breakpoint location should be
2161    inserted in the inferior.  We don't differentiate the type of BL's owner
2162    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2163    breakpoint_ops is not defined, because in insert_bp_location,
2164    tracepoint's insert_location will not be called.  */
2165 static int
2166 should_be_inserted (struct bp_location *bl)
2167 {
2168   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2169     return 0;
2170
2171   if (bl->owner->disposition == disp_del_at_next_stop)
2172     return 0;
2173
2174   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2175     return 0;
2176
2177   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2178     return 0;
2179
2180   /* This is set for example, when we're attached to the parent of a
2181      vfork, and have detached from the child.  The child is running
2182      free, and we expect it to do an exec or exit, at which point the
2183      OS makes the parent schedulable again (and the target reports
2184      that the vfork is done).  Until the child is done with the shared
2185      memory region, do not insert breakpoints in the parent, otherwise
2186      the child could still trip on the parent's breakpoints.  Since
2187      the parent is blocked anyway, it won't miss any breakpoint.  */
2188   if (bl->pspace->breakpoints_not_allowed)
2189     return 0;
2190
2191   /* Don't insert a breakpoint if we're trying to step past its
2192      location, except if the breakpoint is a single-step breakpoint,
2193      and the breakpoint's thread is the thread which is stepping past
2194      a breakpoint.  */
2195   if ((bl->loc_type == bp_loc_software_breakpoint
2196        || bl->loc_type == bp_loc_hardware_breakpoint)
2197       && stepping_past_instruction_at (bl->pspace->aspace,
2198                                        bl->address)
2199       /* The single-step breakpoint may be inserted at the location
2200          we're trying to step if the instruction branches to itself.
2201          However, the instruction won't be executed at all and it may
2202          break the semantics of the instruction, for example, the
2203          instruction is a conditional branch or updates some flags.
2204          We can't fix it unless GDB is able to emulate the instruction
2205          or switch to displaced stepping.  */
2206       && !(bl->owner->type == bp_single_step
2207            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2208     {
2209       if (debug_infrun)
2210         {
2211           fprintf_unfiltered (gdb_stdlog,
2212                               "infrun: skipping breakpoint: "
2213                               "stepping past insn at: %s\n",
2214                               paddress (bl->gdbarch, bl->address));
2215         }
2216       return 0;
2217     }
2218
2219   /* Don't insert watchpoints if we're trying to step past the
2220      instruction that triggered one.  */
2221   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2222       && stepping_past_nonsteppable_watchpoint ())
2223     {
2224       if (debug_infrun)
2225         {
2226           fprintf_unfiltered (gdb_stdlog,
2227                               "infrun: stepping past non-steppable watchpoint. "
2228                               "skipping watchpoint at %s:%d\n",
2229                               paddress (bl->gdbarch, bl->address),
2230                               bl->length);
2231         }
2232       return 0;
2233     }
2234
2235   return 1;
2236 }
2237
2238 /* Same as should_be_inserted but does the check assuming
2239    that the location is not duplicated.  */
2240
2241 static int
2242 unduplicated_should_be_inserted (struct bp_location *bl)
2243 {
2244   int result;
2245   const int save_duplicate = bl->duplicate;
2246
2247   bl->duplicate = 0;
2248   result = should_be_inserted (bl);
2249   bl->duplicate = save_duplicate;
2250   return result;
2251 }
2252
2253 /* Parses a conditional described by an expression COND into an
2254    agent expression bytecode suitable for evaluation
2255    by the bytecode interpreter.  Return NULL if there was
2256    any error during parsing.  */
2257
2258 static agent_expr_up
2259 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2260 {
2261   if (cond == NULL)
2262     return NULL;
2263
2264   agent_expr_up aexpr;
2265
2266   /* We don't want to stop processing, so catch any errors
2267      that may show up.  */
2268   TRY
2269     {
2270       aexpr = gen_eval_for_expr (scope, cond);
2271     }
2272
2273   CATCH (ex, RETURN_MASK_ERROR)
2274     {
2275       /* If we got here, it means the condition could not be parsed to a valid
2276          bytecode expression and thus can't be evaluated on the target's side.
2277          It's no use iterating through the conditions.  */
2278     }
2279   END_CATCH
2280
2281   /* We have a valid agent expression.  */
2282   return aexpr;
2283 }
2284
2285 /* Based on location BL, create a list of breakpoint conditions to be
2286    passed on to the target.  If we have duplicated locations with different
2287    conditions, we will add such conditions to the list.  The idea is that the
2288    target will evaluate the list of conditions and will only notify GDB when
2289    one of them is true.  */
2290
2291 static void
2292 build_target_condition_list (struct bp_location *bl)
2293 {
2294   struct bp_location **locp = NULL, **loc2p;
2295   int null_condition_or_parse_error = 0;
2296   int modified = bl->needs_update;
2297   struct bp_location *loc;
2298
2299   /* Release conditions left over from a previous insert.  */
2300   bl->target_info.conditions.clear ();
2301
2302   /* This is only meaningful if the target is
2303      evaluating conditions and if the user has
2304      opted for condition evaluation on the target's
2305      side.  */
2306   if (gdb_evaluates_breakpoint_condition_p ()
2307       || !target_supports_evaluation_of_breakpoint_conditions ())
2308     return;
2309
2310   /* Do a first pass to check for locations with no assigned
2311      conditions or conditions that fail to parse to a valid agent expression
2312      bytecode.  If any of these happen, then it's no use to send conditions
2313      to the target since this location will always trigger and generate a
2314      response back to GDB.  */
2315   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2316     {
2317       loc = (*loc2p);
2318       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2319         {
2320           if (modified)
2321             {
2322               /* Re-parse the conditions since something changed.  In that
2323                  case we already freed the condition bytecodes (see
2324                  force_breakpoint_reinsertion).  We just
2325                  need to parse the condition to bytecodes again.  */
2326               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2327                                                         loc->cond.get ());
2328             }
2329
2330           /* If we have a NULL bytecode expression, it means something
2331              went wrong or we have a null condition expression.  */
2332           if (!loc->cond_bytecode)
2333             {
2334               null_condition_or_parse_error = 1;
2335               break;
2336             }
2337         }
2338     }
2339
2340   /* If any of these happened, it means we will have to evaluate the conditions
2341      for the location's address on gdb's side.  It is no use keeping bytecodes
2342      for all the other duplicate locations, thus we free all of them here.
2343
2344      This is so we have a finer control over which locations' conditions are
2345      being evaluated by GDB or the remote stub.  */
2346   if (null_condition_or_parse_error)
2347     {
2348       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2349         {
2350           loc = (*loc2p);
2351           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2352             {
2353               /* Only go as far as the first NULL bytecode is
2354                  located.  */
2355               if (!loc->cond_bytecode)
2356                 return;
2357
2358               loc->cond_bytecode.reset ();
2359             }
2360         }
2361     }
2362
2363   /* No NULL conditions or failed bytecode generation.  Build a condition list
2364      for this location's address.  */
2365   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2366     {
2367       loc = (*loc2p);
2368       if (loc->cond
2369           && is_breakpoint (loc->owner)
2370           && loc->pspace->num == bl->pspace->num
2371           && loc->owner->enable_state == bp_enabled
2372           && loc->enabled)
2373         {
2374           /* Add the condition to the vector.  This will be used later
2375              to send the conditions to the target.  */
2376           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2377         }
2378     }
2379
2380   return;
2381 }
2382
2383 /* Parses a command described by string CMD into an agent expression
2384    bytecode suitable for evaluation by the bytecode interpreter.
2385    Return NULL if there was any error during parsing.  */
2386
2387 static agent_expr_up
2388 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2389 {
2390   struct cleanup *old_cleanups = 0;
2391   struct expression **argvec;
2392   const char *cmdrest;
2393   const char *format_start, *format_end;
2394   struct format_piece *fpieces;
2395   int nargs;
2396   struct gdbarch *gdbarch = get_current_arch ();
2397
2398   if (cmd == NULL)
2399     return NULL;
2400
2401   cmdrest = cmd;
2402
2403   if (*cmdrest == ',')
2404     ++cmdrest;
2405   cmdrest = skip_spaces_const (cmdrest);
2406
2407   if (*cmdrest++ != '"')
2408     error (_("No format string following the location"));
2409
2410   format_start = cmdrest;
2411
2412   fpieces = parse_format_string (&cmdrest);
2413
2414   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2415
2416   format_end = cmdrest;
2417
2418   if (*cmdrest++ != '"')
2419     error (_("Bad format string, non-terminated '\"'."));
2420   
2421   cmdrest = skip_spaces_const (cmdrest);
2422
2423   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2424     error (_("Invalid argument syntax"));
2425
2426   if (*cmdrest == ',')
2427     cmdrest++;
2428   cmdrest = skip_spaces_const (cmdrest);
2429
2430   /* For each argument, make an expression.  */
2431
2432   argvec = (struct expression **) alloca (strlen (cmd)
2433                                          * sizeof (struct expression *));
2434
2435   nargs = 0;
2436   while (*cmdrest != '\0')
2437     {
2438       const char *cmd1;
2439
2440       cmd1 = cmdrest;
2441       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2442       argvec[nargs++] = expr.release ();
2443       cmdrest = cmd1;
2444       if (*cmdrest == ',')
2445         ++cmdrest;
2446     }
2447
2448   agent_expr_up aexpr;
2449
2450   /* We don't want to stop processing, so catch any errors
2451      that may show up.  */
2452   TRY
2453     {
2454       aexpr = gen_printf (scope, gdbarch, 0, 0,
2455                           format_start, format_end - format_start,
2456                           fpieces, nargs, argvec);
2457     }
2458   CATCH (ex, RETURN_MASK_ERROR)
2459     {
2460       /* If we got here, it means the command could not be parsed to a valid
2461          bytecode expression and thus can't be evaluated on the target's side.
2462          It's no use iterating through the other commands.  */
2463     }
2464   END_CATCH
2465
2466   do_cleanups (old_cleanups);
2467
2468   /* We have a valid agent expression, return it.  */
2469   return aexpr;
2470 }
2471
2472 /* Based on location BL, create a list of breakpoint commands to be
2473    passed on to the target.  If we have duplicated locations with
2474    different commands, we will add any such to the list.  */
2475
2476 static void
2477 build_target_command_list (struct bp_location *bl)
2478 {
2479   struct bp_location **locp = NULL, **loc2p;
2480   int null_command_or_parse_error = 0;
2481   int modified = bl->needs_update;
2482   struct bp_location *loc;
2483
2484   /* Clear commands left over from a previous insert.  */
2485   bl->target_info.tcommands.clear ();
2486
2487   if (!target_can_run_breakpoint_commands ())
2488     return;
2489
2490   /* For now, limit to agent-style dprintf breakpoints.  */
2491   if (dprintf_style != dprintf_style_agent)
2492     return;
2493
2494   /* For now, if we have any duplicate location that isn't a dprintf,
2495      don't install the target-side commands, as that would make the
2496      breakpoint not be reported to the core, and we'd lose
2497      control.  */
2498   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2499     {
2500       loc = (*loc2p);
2501       if (is_breakpoint (loc->owner)
2502           && loc->pspace->num == bl->pspace->num
2503           && loc->owner->type != bp_dprintf)
2504         return;
2505     }
2506
2507   /* Do a first pass to check for locations with no assigned
2508      conditions or conditions that fail to parse to a valid agent expression
2509      bytecode.  If any of these happen, then it's no use to send conditions
2510      to the target since this location will always trigger and generate a
2511      response back to GDB.  */
2512   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2513     {
2514       loc = (*loc2p);
2515       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2516         {
2517           if (modified)
2518             {
2519               /* Re-parse the commands since something changed.  In that
2520                  case we already freed the command bytecodes (see
2521                  force_breakpoint_reinsertion).  We just
2522                  need to parse the command to bytecodes again.  */
2523               loc->cmd_bytecode
2524                 = parse_cmd_to_aexpr (bl->address,
2525                                       loc->owner->extra_string);
2526             }
2527
2528           /* If we have a NULL bytecode expression, it means something
2529              went wrong or we have a null command expression.  */
2530           if (!loc->cmd_bytecode)
2531             {
2532               null_command_or_parse_error = 1;
2533               break;
2534             }
2535         }
2536     }
2537
2538   /* If anything failed, then we're not doing target-side commands,
2539      and so clean up.  */
2540   if (null_command_or_parse_error)
2541     {
2542       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2543         {
2544           loc = (*loc2p);
2545           if (is_breakpoint (loc->owner)
2546               && loc->pspace->num == bl->pspace->num)
2547             {
2548               /* Only go as far as the first NULL bytecode is
2549                  located.  */
2550               if (loc->cmd_bytecode == NULL)
2551                 return;
2552
2553               loc->cmd_bytecode.reset ();
2554             }
2555         }
2556     }
2557
2558   /* No NULL commands or failed bytecode generation.  Build a command list
2559      for this location's address.  */
2560   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2561     {
2562       loc = (*loc2p);
2563       if (loc->owner->extra_string
2564           && is_breakpoint (loc->owner)
2565           && loc->pspace->num == bl->pspace->num
2566           && loc->owner->enable_state == bp_enabled
2567           && loc->enabled)
2568         {
2569           /* Add the command to the vector.  This will be used later
2570              to send the commands to the target.  */
2571           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2572         }
2573     }
2574
2575   bl->target_info.persist = 0;
2576   /* Maybe flag this location as persistent.  */
2577   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2578     bl->target_info.persist = 1;
2579 }
2580
2581 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2582    of breakpoint according to ADDR except single-step breakpoint.
2583    Get the kind of single-step breakpoint according to the current
2584    registers state.  */
2585
2586 static int
2587 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2588 {
2589   if (bl->owner->type == bp_single_step)
2590     {
2591       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2592       struct regcache *regcache;
2593
2594       regcache = get_thread_regcache (thr->ptid);
2595
2596       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2597                                                          regcache, addr);
2598     }
2599   else
2600     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2601 }
2602
2603 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2604    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2605    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2606    Returns 0 for success, 1 if the bp_location type is not supported or
2607    -1 for failure.
2608
2609    NOTE drow/2003-09-09: This routine could be broken down to an
2610    object-style method for each breakpoint or catchpoint type.  */
2611 static int
2612 insert_bp_location (struct bp_location *bl,
2613                     struct ui_file *tmp_error_stream,
2614                     int *disabled_breaks,
2615                     int *hw_breakpoint_error,
2616                     int *hw_bp_error_explained_already)
2617 {
2618   enum errors bp_err = GDB_NO_ERROR;
2619   const char *bp_err_message = NULL;
2620
2621   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2622     return 0;
2623
2624   /* Note we don't initialize bl->target_info, as that wipes out
2625      the breakpoint location's shadow_contents if the breakpoint
2626      is still inserted at that location.  This in turn breaks
2627      target_read_memory which depends on these buffers when
2628      a memory read is requested at the breakpoint location:
2629      Once the target_info has been wiped, we fail to see that
2630      we have a breakpoint inserted at that address and thus
2631      read the breakpoint instead of returning the data saved in
2632      the breakpoint location's shadow contents.  */
2633   bl->target_info.reqstd_address = bl->address;
2634   bl->target_info.placed_address_space = bl->pspace->aspace;
2635   bl->target_info.length = bl->length;
2636
2637   /* When working with target-side conditions, we must pass all the conditions
2638      for the same breakpoint address down to the target since GDB will not
2639      insert those locations.  With a list of breakpoint conditions, the target
2640      can decide when to stop and notify GDB.  */
2641
2642   if (is_breakpoint (bl->owner))
2643     {
2644       build_target_condition_list (bl);
2645       build_target_command_list (bl);
2646       /* Reset the modification marker.  */
2647       bl->needs_update = 0;
2648     }
2649
2650   if (bl->loc_type == bp_loc_software_breakpoint
2651       || bl->loc_type == bp_loc_hardware_breakpoint)
2652     {
2653       if (bl->owner->type != bp_hardware_breakpoint)
2654         {
2655           /* If the explicitly specified breakpoint type
2656              is not hardware breakpoint, check the memory map to see
2657              if the breakpoint address is in read only memory or not.
2658
2659              Two important cases are:
2660              - location type is not hardware breakpoint, memory
2661              is readonly.  We change the type of the location to
2662              hardware breakpoint.
2663              - location type is hardware breakpoint, memory is
2664              read-write.  This means we've previously made the
2665              location hardware one, but then the memory map changed,
2666              so we undo.
2667              
2668              When breakpoints are removed, remove_breakpoints will use
2669              location types we've just set here, the only possible
2670              problem is that memory map has changed during running
2671              program, but it's not going to work anyway with current
2672              gdb.  */
2673           struct mem_region *mr 
2674             = lookup_mem_region (bl->target_info.reqstd_address);
2675           
2676           if (mr)
2677             {
2678               if (automatic_hardware_breakpoints)
2679                 {
2680                   enum bp_loc_type new_type;
2681                   
2682                   if (mr->attrib.mode != MEM_RW)
2683                     new_type = bp_loc_hardware_breakpoint;
2684                   else 
2685                     new_type = bp_loc_software_breakpoint;
2686                   
2687                   if (new_type != bl->loc_type)
2688                     {
2689                       static int said = 0;
2690
2691                       bl->loc_type = new_type;
2692                       if (!said)
2693                         {
2694                           fprintf_filtered (gdb_stdout,
2695                                             _("Note: automatically using "
2696                                               "hardware breakpoints for "
2697                                               "read-only addresses.\n"));
2698                           said = 1;
2699                         }
2700                     }
2701                 }
2702               else if (bl->loc_type == bp_loc_software_breakpoint
2703                        && mr->attrib.mode != MEM_RW)
2704                 {
2705                   fprintf_unfiltered (tmp_error_stream,
2706                                       _("Cannot insert breakpoint %d.\n"
2707                                         "Cannot set software breakpoint "
2708                                         "at read-only address %s\n"),
2709                                       bl->owner->number,
2710                                       paddress (bl->gdbarch, bl->address));
2711                   return 1;
2712                 }
2713             }
2714         }
2715         
2716       /* First check to see if we have to handle an overlay.  */
2717       if (overlay_debugging == ovly_off
2718           || bl->section == NULL
2719           || !(section_is_overlay (bl->section)))
2720         {
2721           /* No overlay handling: just set the breakpoint.  */
2722           TRY
2723             {
2724               int val;
2725
2726               val = bl->owner->ops->insert_location (bl);
2727               if (val)
2728                 bp_err = GENERIC_ERROR;
2729             }
2730           CATCH (e, RETURN_MASK_ALL)
2731             {
2732               bp_err = e.error;
2733               bp_err_message = e.message;
2734             }
2735           END_CATCH
2736         }
2737       else
2738         {
2739           /* This breakpoint is in an overlay section.
2740              Shall we set a breakpoint at the LMA?  */
2741           if (!overlay_events_enabled)
2742             {
2743               /* Yes -- overlay event support is not active, 
2744                  so we must try to set a breakpoint at the LMA.
2745                  This will not work for a hardware breakpoint.  */
2746               if (bl->loc_type == bp_loc_hardware_breakpoint)
2747                 warning (_("hardware breakpoint %d not supported in overlay!"),
2748                          bl->owner->number);
2749               else
2750                 {
2751                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2752                                                              bl->section);
2753                   /* Set a software (trap) breakpoint at the LMA.  */
2754                   bl->overlay_target_info = bl->target_info;
2755                   bl->overlay_target_info.reqstd_address = addr;
2756
2757                   /* No overlay handling: just set the breakpoint.  */
2758                   TRY
2759                     {
2760                       int val;
2761
2762                       bl->overlay_target_info.kind
2763                         = breakpoint_kind (bl, &addr);
2764                       bl->overlay_target_info.placed_address = addr;
2765                       val = target_insert_breakpoint (bl->gdbarch,
2766                                                       &bl->overlay_target_info);
2767                       if (val)
2768                         bp_err = GENERIC_ERROR;
2769                     }
2770                   CATCH (e, RETURN_MASK_ALL)
2771                     {
2772                       bp_err = e.error;
2773                       bp_err_message = e.message;
2774                     }
2775                   END_CATCH
2776
2777                   if (bp_err != GDB_NO_ERROR)
2778                     fprintf_unfiltered (tmp_error_stream,
2779                                         "Overlay breakpoint %d "
2780                                         "failed: in ROM?\n",
2781                                         bl->owner->number);
2782                 }
2783             }
2784           /* Shall we set a breakpoint at the VMA? */
2785           if (section_is_mapped (bl->section))
2786             {
2787               /* Yes.  This overlay section is mapped into memory.  */
2788               TRY
2789                 {
2790                   int val;
2791
2792                   val = bl->owner->ops->insert_location (bl);
2793                   if (val)
2794                     bp_err = GENERIC_ERROR;
2795                 }
2796               CATCH (e, RETURN_MASK_ALL)
2797                 {
2798                   bp_err = e.error;
2799                   bp_err_message = e.message;
2800                 }
2801               END_CATCH
2802             }
2803           else
2804             {
2805               /* No.  This breakpoint will not be inserted.  
2806                  No error, but do not mark the bp as 'inserted'.  */
2807               return 0;
2808             }
2809         }
2810
2811       if (bp_err != GDB_NO_ERROR)
2812         {
2813           /* Can't set the breakpoint.  */
2814
2815           /* In some cases, we might not be able to insert a
2816              breakpoint in a shared library that has already been
2817              removed, but we have not yet processed the shlib unload
2818              event.  Unfortunately, some targets that implement
2819              breakpoint insertion themselves can't tell why the
2820              breakpoint insertion failed (e.g., the remote target
2821              doesn't define error codes), so we must treat generic
2822              errors as memory errors.  */
2823           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2824               && bl->loc_type == bp_loc_software_breakpoint
2825               && (solib_name_from_address (bl->pspace, bl->address)
2826                   || shared_objfile_contains_address_p (bl->pspace,
2827                                                         bl->address)))
2828             {
2829               /* See also: disable_breakpoints_in_shlibs.  */
2830               bl->shlib_disabled = 1;
2831               observer_notify_breakpoint_modified (bl->owner);
2832               if (!*disabled_breaks)
2833                 {
2834                   fprintf_unfiltered (tmp_error_stream, 
2835                                       "Cannot insert breakpoint %d.\n", 
2836                                       bl->owner->number);
2837                   fprintf_unfiltered (tmp_error_stream, 
2838                                       "Temporarily disabling shared "
2839                                       "library breakpoints:\n");
2840                 }
2841               *disabled_breaks = 1;
2842               fprintf_unfiltered (tmp_error_stream,
2843                                   "breakpoint #%d\n", bl->owner->number);
2844               return 0;
2845             }
2846           else
2847             {
2848               if (bl->loc_type == bp_loc_hardware_breakpoint)
2849                 {
2850                   *hw_breakpoint_error = 1;
2851                   *hw_bp_error_explained_already = bp_err_message != NULL;
2852                   fprintf_unfiltered (tmp_error_stream,
2853                                       "Cannot insert hardware breakpoint %d%s",
2854                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2855                   if (bp_err_message != NULL)
2856                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2857                 }
2858               else
2859                 {
2860                   if (bp_err_message == NULL)
2861                     {
2862                       char *message
2863                         = memory_error_message (TARGET_XFER_E_IO,
2864                                                 bl->gdbarch, bl->address);
2865                       struct cleanup *old_chain = make_cleanup (xfree, message);
2866
2867                       fprintf_unfiltered (tmp_error_stream,
2868                                           "Cannot insert breakpoint %d.\n"
2869                                           "%s\n",
2870                                           bl->owner->number, message);
2871                       do_cleanups (old_chain);
2872                     }
2873                   else
2874                     {
2875                       fprintf_unfiltered (tmp_error_stream,
2876                                           "Cannot insert breakpoint %d: %s\n",
2877                                           bl->owner->number,
2878                                           bp_err_message);
2879                     }
2880                 }
2881               return 1;
2882
2883             }
2884         }
2885       else
2886         bl->inserted = 1;
2887
2888       return 0;
2889     }
2890
2891   else if (bl->loc_type == bp_loc_hardware_watchpoint
2892            /* NOTE drow/2003-09-08: This state only exists for removing
2893               watchpoints.  It's not clear that it's necessary...  */
2894            && bl->owner->disposition != disp_del_at_next_stop)
2895     {
2896       int val;
2897
2898       gdb_assert (bl->owner->ops != NULL
2899                   && bl->owner->ops->insert_location != NULL);
2900
2901       val = bl->owner->ops->insert_location (bl);
2902
2903       /* If trying to set a read-watchpoint, and it turns out it's not
2904          supported, try emulating one with an access watchpoint.  */
2905       if (val == 1 && bl->watchpoint_type == hw_read)
2906         {
2907           struct bp_location *loc, **loc_temp;
2908
2909           /* But don't try to insert it, if there's already another
2910              hw_access location that would be considered a duplicate
2911              of this one.  */
2912           ALL_BP_LOCATIONS (loc, loc_temp)
2913             if (loc != bl
2914                 && loc->watchpoint_type == hw_access
2915                 && watchpoint_locations_match (bl, loc))
2916               {
2917                 bl->duplicate = 1;
2918                 bl->inserted = 1;
2919                 bl->target_info = loc->target_info;
2920                 bl->watchpoint_type = hw_access;
2921                 val = 0;
2922                 break;
2923               }
2924
2925           if (val == 1)
2926             {
2927               bl->watchpoint_type = hw_access;
2928               val = bl->owner->ops->insert_location (bl);
2929
2930               if (val)
2931                 /* Back to the original value.  */
2932                 bl->watchpoint_type = hw_read;
2933             }
2934         }
2935
2936       bl->inserted = (val == 0);
2937     }
2938
2939   else if (bl->owner->type == bp_catchpoint)
2940     {
2941       int val;
2942
2943       gdb_assert (bl->owner->ops != NULL
2944                   && bl->owner->ops->insert_location != NULL);
2945
2946       val = bl->owner->ops->insert_location (bl);
2947       if (val)
2948         {
2949           bl->owner->enable_state = bp_disabled;
2950
2951           if (val == 1)
2952             warning (_("\
2953 Error inserting catchpoint %d: Your system does not support this type\n\
2954 of catchpoint."), bl->owner->number);
2955           else
2956             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2957         }
2958
2959       bl->inserted = (val == 0);
2960
2961       /* We've already printed an error message if there was a problem
2962          inserting this catchpoint, and we've disabled the catchpoint,
2963          so just return success.  */
2964       return 0;
2965     }
2966
2967   return 0;
2968 }
2969
2970 /* This function is called when program space PSPACE is about to be
2971    deleted.  It takes care of updating breakpoints to not reference
2972    PSPACE anymore.  */
2973
2974 void
2975 breakpoint_program_space_exit (struct program_space *pspace)
2976 {
2977   struct breakpoint *b, *b_temp;
2978   struct bp_location *loc, **loc_temp;
2979
2980   /* Remove any breakpoint that was set through this program space.  */
2981   ALL_BREAKPOINTS_SAFE (b, b_temp)
2982     {
2983       if (b->pspace == pspace)
2984         delete_breakpoint (b);
2985     }
2986
2987   /* Breakpoints set through other program spaces could have locations
2988      bound to PSPACE as well.  Remove those.  */
2989   ALL_BP_LOCATIONS (loc, loc_temp)
2990     {
2991       struct bp_location *tmp;
2992
2993       if (loc->pspace == pspace)
2994         {
2995           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2996           if (loc->owner->loc == loc)
2997             loc->owner->loc = loc->next;
2998           else
2999             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3000               if (tmp->next == loc)
3001                 {
3002                   tmp->next = loc->next;
3003                   break;
3004                 }
3005         }
3006     }
3007
3008   /* Now update the global location list to permanently delete the
3009      removed locations above.  */
3010   update_global_location_list (UGLL_DONT_INSERT);
3011 }
3012
3013 /* Make sure all breakpoints are inserted in inferior.
3014    Throws exception on any error.
3015    A breakpoint that is already inserted won't be inserted
3016    again, so calling this function twice is safe.  */
3017 void
3018 insert_breakpoints (void)
3019 {
3020   struct breakpoint *bpt;
3021
3022   ALL_BREAKPOINTS (bpt)
3023     if (is_hardware_watchpoint (bpt))
3024       {
3025         struct watchpoint *w = (struct watchpoint *) bpt;
3026
3027         update_watchpoint (w, 0 /* don't reparse.  */);
3028       }
3029
3030   /* Updating watchpoints creates new locations, so update the global
3031      location list.  Explicitly tell ugll to insert locations and
3032      ignore breakpoints_always_inserted_mode.  */
3033   update_global_location_list (UGLL_INSERT);
3034 }
3035
3036 /* Invoke CALLBACK for each of bp_location.  */
3037
3038 void
3039 iterate_over_bp_locations (walk_bp_location_callback callback)
3040 {
3041   struct bp_location *loc, **loc_tmp;
3042
3043   ALL_BP_LOCATIONS (loc, loc_tmp)
3044     {
3045       callback (loc, NULL);
3046     }
3047 }
3048
3049 /* This is used when we need to synch breakpoint conditions between GDB and the
3050    target.  It is the case with deleting and disabling of breakpoints when using
3051    always-inserted mode.  */
3052
3053 static void
3054 update_inserted_breakpoint_locations (void)
3055 {
3056   struct bp_location *bl, **blp_tmp;
3057   int error_flag = 0;
3058   int val = 0;
3059   int disabled_breaks = 0;
3060   int hw_breakpoint_error = 0;
3061   int hw_bp_details_reported = 0;
3062
3063   string_file tmp_error_stream;
3064
3065   /* Explicitly mark the warning -- this will only be printed if
3066      there was an error.  */
3067   tmp_error_stream.puts ("Warning:\n");
3068
3069   struct cleanup *cleanups = save_current_space_and_thread ();
3070
3071   ALL_BP_LOCATIONS (bl, blp_tmp)
3072     {
3073       /* We only want to update software breakpoints and hardware
3074          breakpoints.  */
3075       if (!is_breakpoint (bl->owner))
3076         continue;
3077
3078       /* We only want to update locations that are already inserted
3079          and need updating.  This is to avoid unwanted insertion during
3080          deletion of breakpoints.  */
3081       if (!bl->inserted || (bl->inserted && !bl->needs_update))
3082         continue;
3083
3084       switch_to_program_space_and_thread (bl->pspace);
3085
3086       /* For targets that support global breakpoints, there's no need
3087          to select an inferior to insert breakpoint to.  In fact, even
3088          if we aren't attached to any process yet, we should still
3089          insert breakpoints.  */
3090       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3091           && ptid_equal (inferior_ptid, null_ptid))
3092         continue;
3093
3094       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3095                                     &hw_breakpoint_error, &hw_bp_details_reported);
3096       if (val)
3097         error_flag = val;
3098     }
3099
3100   if (error_flag)
3101     {
3102       target_terminal_ours_for_output ();
3103       error_stream (tmp_error_stream);
3104     }
3105
3106   do_cleanups (cleanups);
3107 }
3108
3109 /* Used when starting or continuing the program.  */
3110
3111 static void
3112 insert_breakpoint_locations (void)
3113 {
3114   struct breakpoint *bpt;
3115   struct bp_location *bl, **blp_tmp;
3116   int error_flag = 0;
3117   int val = 0;
3118   int disabled_breaks = 0;
3119   int hw_breakpoint_error = 0;
3120   int hw_bp_error_explained_already = 0;
3121
3122   string_file tmp_error_stream;
3123
3124   /* Explicitly mark the warning -- this will only be printed if
3125      there was an error.  */
3126   tmp_error_stream.puts ("Warning:\n");
3127
3128   struct cleanup *cleanups = save_current_space_and_thread ();
3129
3130   ALL_BP_LOCATIONS (bl, blp_tmp)
3131     {
3132       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3133         continue;
3134
3135       /* There is no point inserting thread-specific breakpoints if
3136          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3137          has BL->OWNER always non-NULL.  */
3138       if (bl->owner->thread != -1
3139           && !valid_global_thread_id (bl->owner->thread))
3140         continue;
3141
3142       switch_to_program_space_and_thread (bl->pspace);
3143
3144       /* For targets that support global breakpoints, there's no need
3145          to select an inferior to insert breakpoint to.  In fact, even
3146          if we aren't attached to any process yet, we should still
3147          insert breakpoints.  */
3148       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3149           && ptid_equal (inferior_ptid, null_ptid))
3150         continue;
3151
3152       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3153                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3154       if (val)
3155         error_flag = val;
3156     }
3157
3158   /* If we failed to insert all locations of a watchpoint, remove
3159      them, as half-inserted watchpoint is of limited use.  */
3160   ALL_BREAKPOINTS (bpt)  
3161     {
3162       int some_failed = 0;
3163       struct bp_location *loc;
3164
3165       if (!is_hardware_watchpoint (bpt))
3166         continue;
3167
3168       if (!breakpoint_enabled (bpt))
3169         continue;
3170
3171       if (bpt->disposition == disp_del_at_next_stop)
3172         continue;
3173       
3174       for (loc = bpt->loc; loc; loc = loc->next)
3175         if (!loc->inserted && should_be_inserted (loc))
3176           {
3177             some_failed = 1;
3178             break;
3179           }
3180       if (some_failed)
3181         {
3182           for (loc = bpt->loc; loc; loc = loc->next)
3183             if (loc->inserted)
3184               remove_breakpoint (loc);
3185
3186           hw_breakpoint_error = 1;
3187           tmp_error_stream.printf ("Could not insert "
3188                                    "hardware watchpoint %d.\n",
3189                                    bpt->number);
3190           error_flag = -1;
3191         }
3192     }
3193
3194   if (error_flag)
3195     {
3196       /* If a hardware breakpoint or watchpoint was inserted, add a
3197          message about possibly exhausted resources.  */
3198       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3199         {
3200           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3201 You may have requested too many hardware breakpoints/watchpoints.\n");
3202         }
3203       target_terminal_ours_for_output ();
3204       error_stream (tmp_error_stream);
3205     }
3206
3207   do_cleanups (cleanups);
3208 }
3209
3210 /* Used when the program stops.
3211    Returns zero if successful, or non-zero if there was a problem
3212    removing a breakpoint location.  */
3213
3214 int
3215 remove_breakpoints (void)
3216 {
3217   struct bp_location *bl, **blp_tmp;
3218   int val = 0;
3219
3220   ALL_BP_LOCATIONS (bl, blp_tmp)
3221   {
3222     if (bl->inserted && !is_tracepoint (bl->owner))
3223       val |= remove_breakpoint (bl);
3224   }
3225   return val;
3226 }
3227
3228 /* When a thread exits, remove breakpoints that are related to
3229    that thread.  */
3230
3231 static void
3232 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3233 {
3234   struct breakpoint *b, *b_tmp;
3235
3236   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3237     {
3238       if (b->thread == tp->global_num && user_breakpoint_p (b))
3239         {
3240           b->disposition = disp_del_at_next_stop;
3241
3242           printf_filtered (_("\
3243 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3244                            b->number, print_thread_id (tp));
3245
3246           /* Hide it from the user.  */
3247           b->number = 0;
3248        }
3249     }
3250 }
3251
3252 /* Remove breakpoints of process PID.  */
3253
3254 int
3255 remove_breakpoints_pid (int pid)
3256 {
3257   struct bp_location *bl, **blp_tmp;
3258   int val;
3259   struct inferior *inf = find_inferior_pid (pid);
3260
3261   ALL_BP_LOCATIONS (bl, blp_tmp)
3262   {
3263     if (bl->pspace != inf->pspace)
3264       continue;
3265
3266     if (bl->inserted && !bl->target_info.persist)
3267       {
3268         val = remove_breakpoint (bl);
3269         if (val != 0)
3270           return val;
3271       }
3272   }
3273   return 0;
3274 }
3275
3276 int
3277 reattach_breakpoints (int pid)
3278 {
3279   struct cleanup *old_chain;
3280   struct bp_location *bl, **blp_tmp;
3281   int val;
3282   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3283   struct inferior *inf;
3284   struct thread_info *tp;
3285
3286   tp = any_live_thread_of_process (pid);
3287   if (tp == NULL)
3288     return 1;
3289
3290   inf = find_inferior_pid (pid);
3291   old_chain = save_inferior_ptid ();
3292
3293   inferior_ptid = tp->ptid;
3294
3295   string_file tmp_error_stream;
3296
3297   ALL_BP_LOCATIONS (bl, blp_tmp)
3298   {
3299     if (bl->pspace != inf->pspace)
3300       continue;
3301
3302     if (bl->inserted)
3303       {
3304         bl->inserted = 0;
3305         val = insert_bp_location (bl, &tmp_error_stream, &dummy1, &dummy2, &dummy3);
3306         if (val != 0)
3307           {
3308             do_cleanups (old_chain);
3309             return val;
3310           }
3311       }
3312   }
3313   do_cleanups (old_chain);
3314   return 0;
3315 }
3316
3317 static int internal_breakpoint_number = -1;
3318
3319 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3320    If INTERNAL is non-zero, the breakpoint number will be populated
3321    from internal_breakpoint_number and that variable decremented.
3322    Otherwise the breakpoint number will be populated from
3323    breakpoint_count and that value incremented.  Internal breakpoints
3324    do not set the internal var bpnum.  */
3325 static void
3326 set_breakpoint_number (int internal, struct breakpoint *b)
3327 {
3328   if (internal)
3329     b->number = internal_breakpoint_number--;
3330   else
3331     {
3332       set_breakpoint_count (breakpoint_count + 1);
3333       b->number = breakpoint_count;
3334     }
3335 }
3336
3337 static struct breakpoint *
3338 create_internal_breakpoint (struct gdbarch *gdbarch,
3339                             CORE_ADDR address, enum bptype type,
3340                             const struct breakpoint_ops *ops)
3341 {
3342   struct symtab_and_line sal;
3343   struct breakpoint *b;
3344
3345   init_sal (&sal);              /* Initialize to zeroes.  */
3346
3347   sal.pc = address;
3348   sal.section = find_pc_overlay (sal.pc);
3349   sal.pspace = current_program_space;
3350
3351   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3352   b->number = internal_breakpoint_number--;
3353   b->disposition = disp_donttouch;
3354
3355   return b;
3356 }
3357
3358 static const char *const longjmp_names[] =
3359   {
3360     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3361   };
3362 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3363
3364 /* Per-objfile data private to breakpoint.c.  */
3365 struct breakpoint_objfile_data
3366 {
3367   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3368   struct bound_minimal_symbol overlay_msym;
3369
3370   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3371   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3372
3373   /* True if we have looked for longjmp probes.  */
3374   int longjmp_searched;
3375
3376   /* SystemTap probe points for longjmp (if any).  */
3377   VEC (probe_p) *longjmp_probes;
3378
3379   /* Minimal symbol for "std::terminate()" (if any).  */
3380   struct bound_minimal_symbol terminate_msym;
3381
3382   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3383   struct bound_minimal_symbol exception_msym;
3384
3385   /* True if we have looked for exception probes.  */
3386   int exception_searched;
3387
3388   /* SystemTap probe points for unwinding (if any).  */
3389   VEC (probe_p) *exception_probes;
3390 };
3391
3392 static const struct objfile_data *breakpoint_objfile_key;
3393
3394 /* Minimal symbol not found sentinel.  */
3395 static struct minimal_symbol msym_not_found;
3396
3397 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3398
3399 static int
3400 msym_not_found_p (const struct minimal_symbol *msym)
3401 {
3402   return msym == &msym_not_found;
3403 }
3404
3405 /* Return per-objfile data needed by breakpoint.c.
3406    Allocate the data if necessary.  */
3407
3408 static struct breakpoint_objfile_data *
3409 get_breakpoint_objfile_data (struct objfile *objfile)
3410 {
3411   struct breakpoint_objfile_data *bp_objfile_data;
3412
3413   bp_objfile_data = ((struct breakpoint_objfile_data *)
3414                      objfile_data (objfile, breakpoint_objfile_key));
3415   if (bp_objfile_data == NULL)
3416     {
3417       bp_objfile_data =
3418         XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3419
3420       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3421       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3422     }
3423   return bp_objfile_data;
3424 }
3425
3426 static void
3427 free_breakpoint_probes (struct objfile *obj, void *data)
3428 {
3429   struct breakpoint_objfile_data *bp_objfile_data
3430     = (struct breakpoint_objfile_data *) data;
3431
3432   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3433   VEC_free (probe_p, bp_objfile_data->exception_probes);
3434 }
3435
3436 static void
3437 create_overlay_event_breakpoint (void)
3438 {
3439   struct objfile *objfile;
3440   const char *const func_name = "_ovly_debug_event";
3441
3442   ALL_OBJFILES (objfile)
3443     {
3444       struct breakpoint *b;
3445       struct breakpoint_objfile_data *bp_objfile_data;
3446       CORE_ADDR addr;
3447       struct explicit_location explicit_loc;
3448
3449       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3450
3451       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3452         continue;
3453
3454       if (bp_objfile_data->overlay_msym.minsym == NULL)
3455         {
3456           struct bound_minimal_symbol m;
3457
3458           m = lookup_minimal_symbol_text (func_name, objfile);
3459           if (m.minsym == NULL)
3460             {
3461               /* Avoid future lookups in this objfile.  */
3462               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3463               continue;
3464             }
3465           bp_objfile_data->overlay_msym = m;
3466         }
3467
3468       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3469       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3470                                       bp_overlay_event,
3471                                       &internal_breakpoint_ops);
3472       initialize_explicit_location (&explicit_loc);
3473       explicit_loc.function_name = ASTRDUP (func_name);
3474       b->location = new_explicit_location (&explicit_loc);
3475
3476       if (overlay_debugging == ovly_auto)
3477         {
3478           b->enable_state = bp_enabled;
3479           overlay_events_enabled = 1;
3480         }
3481       else
3482        {
3483          b->enable_state = bp_disabled;
3484          overlay_events_enabled = 0;
3485        }
3486     }
3487 }
3488
3489 static void
3490 create_longjmp_master_breakpoint (void)
3491 {
3492   struct program_space *pspace;
3493   struct cleanup *old_chain;
3494
3495   old_chain = save_current_program_space ();
3496
3497   ALL_PSPACES (pspace)
3498   {
3499     struct objfile *objfile;
3500
3501     set_current_program_space (pspace);
3502
3503     ALL_OBJFILES (objfile)
3504     {
3505       int i;
3506       struct gdbarch *gdbarch;
3507       struct breakpoint_objfile_data *bp_objfile_data;
3508
3509       gdbarch = get_objfile_arch (objfile);
3510
3511       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3512
3513       if (!bp_objfile_data->longjmp_searched)
3514         {
3515           VEC (probe_p) *ret;
3516
3517           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3518           if (ret != NULL)
3519             {
3520               /* We are only interested in checking one element.  */
3521               struct probe *p = VEC_index (probe_p, ret, 0);
3522
3523               if (!can_evaluate_probe_arguments (p))
3524                 {
3525                   /* We cannot use the probe interface here, because it does
3526                      not know how to evaluate arguments.  */
3527                   VEC_free (probe_p, ret);
3528                   ret = NULL;
3529                 }
3530             }
3531           bp_objfile_data->longjmp_probes = ret;
3532           bp_objfile_data->longjmp_searched = 1;
3533         }
3534
3535       if (bp_objfile_data->longjmp_probes != NULL)
3536         {
3537           int i;
3538           struct probe *probe;
3539           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3540
3541           for (i = 0;
3542                VEC_iterate (probe_p,
3543                             bp_objfile_data->longjmp_probes,
3544                             i, probe);
3545                ++i)
3546             {
3547               struct breakpoint *b;
3548
3549               b = create_internal_breakpoint (gdbarch,
3550                                               get_probe_address (probe,
3551                                                                  objfile),
3552                                               bp_longjmp_master,
3553                                               &internal_breakpoint_ops);
3554               b->location = new_probe_location ("-probe-stap libc:longjmp");
3555               b->enable_state = bp_disabled;
3556             }
3557
3558           continue;
3559         }
3560
3561       if (!gdbarch_get_longjmp_target_p (gdbarch))
3562         continue;
3563
3564       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3565         {
3566           struct breakpoint *b;
3567           const char *func_name;
3568           CORE_ADDR addr;
3569           struct explicit_location explicit_loc;
3570
3571           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3572             continue;
3573
3574           func_name = longjmp_names[i];
3575           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3576             {
3577               struct bound_minimal_symbol m;
3578
3579               m = lookup_minimal_symbol_text (func_name, objfile);
3580               if (m.minsym == NULL)
3581                 {
3582                   /* Prevent future lookups in this objfile.  */
3583                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3584                   continue;
3585                 }
3586               bp_objfile_data->longjmp_msym[i] = m;
3587             }
3588
3589           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3590           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3591                                           &internal_breakpoint_ops);
3592           initialize_explicit_location (&explicit_loc);
3593           explicit_loc.function_name = ASTRDUP (func_name);
3594           b->location = new_explicit_location (&explicit_loc);
3595           b->enable_state = bp_disabled;
3596         }
3597     }
3598   }
3599
3600   do_cleanups (old_chain);
3601 }
3602
3603 /* Create a master std::terminate breakpoint.  */
3604 static void
3605 create_std_terminate_master_breakpoint (void)
3606 {
3607   struct program_space *pspace;
3608   struct cleanup *old_chain;
3609   const char *const func_name = "std::terminate()";
3610
3611   old_chain = save_current_program_space ();
3612
3613   ALL_PSPACES (pspace)
3614   {
3615     struct objfile *objfile;
3616     CORE_ADDR addr;
3617
3618     set_current_program_space (pspace);
3619
3620     ALL_OBJFILES (objfile)
3621     {
3622       struct breakpoint *b;
3623       struct breakpoint_objfile_data *bp_objfile_data;
3624       struct explicit_location explicit_loc;
3625
3626       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3627
3628       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3629         continue;
3630
3631       if (bp_objfile_data->terminate_msym.minsym == NULL)
3632         {
3633           struct bound_minimal_symbol m;
3634
3635           m = lookup_minimal_symbol (func_name, NULL, objfile);
3636           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3637                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3638             {
3639               /* Prevent future lookups in this objfile.  */
3640               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3641               continue;
3642             }
3643           bp_objfile_data->terminate_msym = m;
3644         }
3645
3646       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3647       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3648                                       bp_std_terminate_master,
3649                                       &internal_breakpoint_ops);
3650       initialize_explicit_location (&explicit_loc);
3651       explicit_loc.function_name = ASTRDUP (func_name);
3652       b->location = new_explicit_location (&explicit_loc);
3653       b->enable_state = bp_disabled;
3654     }
3655   }
3656
3657   do_cleanups (old_chain);
3658 }
3659
3660 /* Install a master breakpoint on the unwinder's debug hook.  */
3661
3662 static void
3663 create_exception_master_breakpoint (void)
3664 {
3665   struct objfile *objfile;
3666   const char *const func_name = "_Unwind_DebugHook";
3667
3668   ALL_OBJFILES (objfile)
3669     {
3670       struct breakpoint *b;
3671       struct gdbarch *gdbarch;
3672       struct breakpoint_objfile_data *bp_objfile_data;
3673       CORE_ADDR addr;
3674       struct explicit_location explicit_loc;
3675
3676       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3677
3678       /* We prefer the SystemTap probe point if it exists.  */
3679       if (!bp_objfile_data->exception_searched)
3680         {
3681           VEC (probe_p) *ret;
3682
3683           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3684
3685           if (ret != NULL)
3686             {
3687               /* We are only interested in checking one element.  */
3688               struct probe *p = VEC_index (probe_p, ret, 0);
3689
3690               if (!can_evaluate_probe_arguments (p))
3691                 {
3692                   /* We cannot use the probe interface here, because it does
3693                      not know how to evaluate arguments.  */
3694                   VEC_free (probe_p, ret);
3695                   ret = NULL;
3696                 }
3697             }
3698           bp_objfile_data->exception_probes = ret;
3699           bp_objfile_data->exception_searched = 1;
3700         }
3701
3702       if (bp_objfile_data->exception_probes != NULL)
3703         {
3704           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3705           int i;
3706           struct probe *probe;
3707
3708           for (i = 0;
3709                VEC_iterate (probe_p,
3710                             bp_objfile_data->exception_probes,
3711                             i, probe);
3712                ++i)
3713             {
3714               struct breakpoint *b;
3715
3716               b = create_internal_breakpoint (gdbarch,
3717                                               get_probe_address (probe,
3718                                                                  objfile),
3719                                               bp_exception_master,
3720                                               &internal_breakpoint_ops);
3721               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3722               b->enable_state = bp_disabled;
3723             }
3724
3725           continue;
3726         }
3727
3728       /* Otherwise, try the hook function.  */
3729
3730       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3731         continue;
3732
3733       gdbarch = get_objfile_arch (objfile);
3734
3735       if (bp_objfile_data->exception_msym.minsym == NULL)
3736         {
3737           struct bound_minimal_symbol debug_hook;
3738
3739           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3740           if (debug_hook.minsym == NULL)
3741             {
3742               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3743               continue;
3744             }
3745
3746           bp_objfile_data->exception_msym = debug_hook;
3747         }
3748
3749       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3750       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3751                                                  &current_target);
3752       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3753                                       &internal_breakpoint_ops);
3754       initialize_explicit_location (&explicit_loc);
3755       explicit_loc.function_name = ASTRDUP (func_name);
3756       b->location = new_explicit_location (&explicit_loc);
3757       b->enable_state = bp_disabled;
3758     }
3759 }
3760
3761 /* Does B have a location spec?  */
3762
3763 static int
3764 breakpoint_event_location_empty_p (const struct breakpoint *b)
3765 {
3766   return b->location != NULL && event_location_empty_p (b->location.get ());
3767 }
3768
3769 void
3770 update_breakpoints_after_exec (void)
3771 {
3772   struct breakpoint *b, *b_tmp;
3773   struct bp_location *bploc, **bplocp_tmp;
3774
3775   /* We're about to delete breakpoints from GDB's lists.  If the
3776      INSERTED flag is true, GDB will try to lift the breakpoints by
3777      writing the breakpoints' "shadow contents" back into memory.  The
3778      "shadow contents" are NOT valid after an exec, so GDB should not
3779      do that.  Instead, the target is responsible from marking
3780      breakpoints out as soon as it detects an exec.  We don't do that
3781      here instead, because there may be other attempts to delete
3782      breakpoints after detecting an exec and before reaching here.  */
3783   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3784     if (bploc->pspace == current_program_space)
3785       gdb_assert (!bploc->inserted);
3786
3787   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3788   {
3789     if (b->pspace != current_program_space)
3790       continue;
3791
3792     /* Solib breakpoints must be explicitly reset after an exec().  */
3793     if (b->type == bp_shlib_event)
3794       {
3795         delete_breakpoint (b);
3796         continue;
3797       }
3798
3799     /* JIT breakpoints must be explicitly reset after an exec().  */
3800     if (b->type == bp_jit_event)
3801       {
3802         delete_breakpoint (b);
3803         continue;
3804       }
3805
3806     /* Thread event breakpoints must be set anew after an exec(),
3807        as must overlay event and longjmp master breakpoints.  */
3808     if (b->type == bp_thread_event || b->type == bp_overlay_event
3809         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3810         || b->type == bp_exception_master)
3811       {
3812         delete_breakpoint (b);
3813         continue;
3814       }
3815
3816     /* Step-resume breakpoints are meaningless after an exec().  */
3817     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3818       {
3819         delete_breakpoint (b);
3820         continue;
3821       }
3822
3823     /* Just like single-step breakpoints.  */
3824     if (b->type == bp_single_step)
3825       {
3826         delete_breakpoint (b);
3827         continue;
3828       }
3829
3830     /* Longjmp and longjmp-resume breakpoints are also meaningless
3831        after an exec.  */
3832     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3833         || b->type == bp_longjmp_call_dummy
3834         || b->type == bp_exception || b->type == bp_exception_resume)
3835       {
3836         delete_breakpoint (b);
3837         continue;
3838       }
3839
3840     if (b->type == bp_catchpoint)
3841       {
3842         /* For now, none of the bp_catchpoint breakpoints need to
3843            do anything at this point.  In the future, if some of
3844            the catchpoints need to something, we will need to add
3845            a new method, and call this method from here.  */
3846         continue;
3847       }
3848
3849     /* bp_finish is a special case.  The only way we ought to be able
3850        to see one of these when an exec() has happened, is if the user
3851        caught a vfork, and then said "finish".  Ordinarily a finish just
3852        carries them to the call-site of the current callee, by setting
3853        a temporary bp there and resuming.  But in this case, the finish
3854        will carry them entirely through the vfork & exec.
3855
3856        We don't want to allow a bp_finish to remain inserted now.  But
3857        we can't safely delete it, 'cause finish_command has a handle to
3858        the bp on a bpstat, and will later want to delete it.  There's a
3859        chance (and I've seen it happen) that if we delete the bp_finish
3860        here, that its storage will get reused by the time finish_command
3861        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3862        We really must allow finish_command to delete a bp_finish.
3863
3864        In the absence of a general solution for the "how do we know
3865        it's safe to delete something others may have handles to?"
3866        problem, what we'll do here is just uninsert the bp_finish, and
3867        let finish_command delete it.
3868
3869        (We know the bp_finish is "doomed" in the sense that it's
3870        momentary, and will be deleted as soon as finish_command sees
3871        the inferior stopped.  So it doesn't matter that the bp's
3872        address is probably bogus in the new a.out, unlike e.g., the
3873        solib breakpoints.)  */
3874
3875     if (b->type == bp_finish)
3876       {
3877         continue;
3878       }
3879
3880     /* Without a symbolic address, we have little hope of the
3881        pre-exec() address meaning the same thing in the post-exec()
3882        a.out.  */
3883     if (breakpoint_event_location_empty_p (b))
3884       {
3885         delete_breakpoint (b);
3886         continue;
3887       }
3888   }
3889 }
3890
3891 int
3892 detach_breakpoints (ptid_t ptid)
3893 {
3894   struct bp_location *bl, **blp_tmp;
3895   int val = 0;
3896   struct cleanup *old_chain = save_inferior_ptid ();
3897   struct inferior *inf = current_inferior ();
3898
3899   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3900     error (_("Cannot detach breakpoints of inferior_ptid"));
3901
3902   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3903   inferior_ptid = ptid;
3904   ALL_BP_LOCATIONS (bl, blp_tmp)
3905   {
3906     if (bl->pspace != inf->pspace)
3907       continue;
3908
3909     /* This function must physically remove breakpoints locations
3910        from the specified ptid, without modifying the breakpoint
3911        package's state.  Locations of type bp_loc_other are only
3912        maintained at GDB side.  So, there is no need to remove
3913        these bp_loc_other locations.  Moreover, removing these
3914        would modify the breakpoint package's state.  */
3915     if (bl->loc_type == bp_loc_other)
3916       continue;
3917
3918     if (bl->inserted)
3919       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3920   }
3921
3922   do_cleanups (old_chain);
3923   return val;
3924 }
3925
3926 /* Remove the breakpoint location BL from the current address space.
3927    Note that this is used to detach breakpoints from a child fork.
3928    When we get here, the child isn't in the inferior list, and neither
3929    do we have objects to represent its address space --- we should
3930    *not* look at bl->pspace->aspace here.  */
3931
3932 static int
3933 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3934 {
3935   int val;
3936
3937   /* BL is never in moribund_locations by our callers.  */
3938   gdb_assert (bl->owner != NULL);
3939
3940   /* The type of none suggests that owner is actually deleted.
3941      This should not ever happen.  */
3942   gdb_assert (bl->owner->type != bp_none);
3943
3944   if (bl->loc_type == bp_loc_software_breakpoint
3945       || bl->loc_type == bp_loc_hardware_breakpoint)
3946     {
3947       /* "Normal" instruction breakpoint: either the standard
3948          trap-instruction bp (bp_breakpoint), or a
3949          bp_hardware_breakpoint.  */
3950
3951       /* First check to see if we have to handle an overlay.  */
3952       if (overlay_debugging == ovly_off
3953           || bl->section == NULL
3954           || !(section_is_overlay (bl->section)))
3955         {
3956           /* No overlay handling: just remove the breakpoint.  */
3957
3958           /* If we're trying to uninsert a memory breakpoint that we
3959              know is set in a dynamic object that is marked
3960              shlib_disabled, then either the dynamic object was
3961              removed with "remove-symbol-file" or with
3962              "nosharedlibrary".  In the former case, we don't know
3963              whether another dynamic object might have loaded over the
3964              breakpoint's address -- the user might well let us know
3965              about it next with add-symbol-file (the whole point of
3966              add-symbol-file is letting the user manually maintain a
3967              list of dynamically loaded objects).  If we have the
3968              breakpoint's shadow memory, that is, this is a software
3969              breakpoint managed by GDB, check whether the breakpoint
3970              is still inserted in memory, to avoid overwriting wrong
3971              code with stale saved shadow contents.  Note that HW
3972              breakpoints don't have shadow memory, as they're
3973              implemented using a mechanism that is not dependent on
3974              being able to modify the target's memory, and as such
3975              they should always be removed.  */
3976           if (bl->shlib_disabled
3977               && bl->target_info.shadow_len != 0
3978               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3979             val = 0;
3980           else
3981             val = bl->owner->ops->remove_location (bl, reason);
3982         }
3983       else
3984         {
3985           /* This breakpoint is in an overlay section.
3986              Did we set a breakpoint at the LMA?  */
3987           if (!overlay_events_enabled)
3988               {
3989                 /* Yes -- overlay event support is not active, so we
3990                    should have set a breakpoint at the LMA.  Remove it.  
3991                 */
3992                 /* Ignore any failures: if the LMA is in ROM, we will
3993                    have already warned when we failed to insert it.  */
3994                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3995                   target_remove_hw_breakpoint (bl->gdbarch,
3996                                                &bl->overlay_target_info);
3997                 else
3998                   target_remove_breakpoint (bl->gdbarch,
3999                                             &bl->overlay_target_info,
4000                                             reason);
4001               }
4002           /* Did we set a breakpoint at the VMA? 
4003              If so, we will have marked the breakpoint 'inserted'.  */
4004           if (bl->inserted)
4005             {
4006               /* Yes -- remove it.  Previously we did not bother to
4007                  remove the breakpoint if the section had been
4008                  unmapped, but let's not rely on that being safe.  We
4009                  don't know what the overlay manager might do.  */
4010
4011               /* However, we should remove *software* breakpoints only
4012                  if the section is still mapped, or else we overwrite
4013                  wrong code with the saved shadow contents.  */
4014               if (bl->loc_type == bp_loc_hardware_breakpoint
4015                   || section_is_mapped (bl->section))
4016                 val = bl->owner->ops->remove_location (bl, reason);
4017               else
4018                 val = 0;
4019             }
4020           else
4021             {
4022               /* No -- not inserted, so no need to remove.  No error.  */
4023               val = 0;
4024             }
4025         }
4026
4027       /* In some cases, we might not be able to remove a breakpoint in
4028          a shared library that has already been removed, but we have
4029          not yet processed the shlib unload event.  Similarly for an
4030          unloaded add-symbol-file object - the user might not yet have
4031          had the chance to remove-symbol-file it.  shlib_disabled will
4032          be set if the library/object has already been removed, but
4033          the breakpoint hasn't been uninserted yet, e.g., after
4034          "nosharedlibrary" or "remove-symbol-file" with breakpoints
4035          always-inserted mode.  */
4036       if (val
4037           && (bl->loc_type == bp_loc_software_breakpoint
4038               && (bl->shlib_disabled
4039                   || solib_name_from_address (bl->pspace, bl->address)
4040                   || shared_objfile_contains_address_p (bl->pspace,
4041                                                         bl->address))))
4042         val = 0;
4043
4044       if (val)
4045         return val;
4046       bl->inserted = (reason == DETACH_BREAKPOINT);
4047     }
4048   else if (bl->loc_type == bp_loc_hardware_watchpoint)
4049     {
4050       gdb_assert (bl->owner->ops != NULL
4051                   && bl->owner->ops->remove_location != NULL);
4052
4053       bl->inserted = (reason == DETACH_BREAKPOINT);
4054       bl->owner->ops->remove_location (bl, reason);
4055
4056       /* Failure to remove any of the hardware watchpoints comes here.  */
4057       if (reason == REMOVE_BREAKPOINT && bl->inserted)
4058         warning (_("Could not remove hardware watchpoint %d."),
4059                  bl->owner->number);
4060     }
4061   else if (bl->owner->type == bp_catchpoint
4062            && breakpoint_enabled (bl->owner)
4063            && !bl->duplicate)
4064     {
4065       gdb_assert (bl->owner->ops != NULL
4066                   && bl->owner->ops->remove_location != NULL);
4067
4068       val = bl->owner->ops->remove_location (bl, reason);
4069       if (val)
4070         return val;
4071
4072       bl->inserted = (reason == DETACH_BREAKPOINT);
4073     }
4074
4075   return 0;
4076 }
4077
4078 static int
4079 remove_breakpoint (struct bp_location *bl)
4080 {
4081   int ret;
4082   struct cleanup *old_chain;
4083
4084   /* BL is never in moribund_locations by our callers.  */
4085   gdb_assert (bl->owner != NULL);
4086
4087   /* The type of none suggests that owner is actually deleted.
4088      This should not ever happen.  */
4089   gdb_assert (bl->owner->type != bp_none);
4090
4091   old_chain = save_current_space_and_thread ();
4092
4093   switch_to_program_space_and_thread (bl->pspace);
4094
4095   ret = remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
4096
4097   do_cleanups (old_chain);
4098   return ret;
4099 }
4100
4101 /* Clear the "inserted" flag in all breakpoints.  */
4102
4103 void
4104 mark_breakpoints_out (void)
4105 {
4106   struct bp_location *bl, **blp_tmp;
4107
4108   ALL_BP_LOCATIONS (bl, blp_tmp)
4109     if (bl->pspace == current_program_space)
4110       bl->inserted = 0;
4111 }
4112
4113 /* Clear the "inserted" flag in all breakpoints and delete any
4114    breakpoints which should go away between runs of the program.
4115
4116    Plus other such housekeeping that has to be done for breakpoints
4117    between runs.
4118
4119    Note: this function gets called at the end of a run (by
4120    generic_mourn_inferior) and when a run begins (by
4121    init_wait_for_inferior).  */
4122
4123
4124
4125 void
4126 breakpoint_init_inferior (enum inf_context context)
4127 {
4128   struct breakpoint *b, *b_tmp;
4129   struct bp_location *bl;
4130   int ix;
4131   struct program_space *pspace = current_program_space;
4132
4133   /* If breakpoint locations are shared across processes, then there's
4134      nothing to do.  */
4135   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4136     return;
4137
4138   mark_breakpoints_out ();
4139
4140   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4141   {
4142     if (b->loc && b->loc->pspace != pspace)
4143       continue;
4144
4145     switch (b->type)
4146       {
4147       case bp_call_dummy:
4148       case bp_longjmp_call_dummy:
4149
4150         /* If the call dummy breakpoint is at the entry point it will
4151            cause problems when the inferior is rerun, so we better get
4152            rid of it.  */
4153
4154       case bp_watchpoint_scope:
4155
4156         /* Also get rid of scope breakpoints.  */
4157
4158       case bp_shlib_event:
4159
4160         /* Also remove solib event breakpoints.  Their addresses may
4161            have changed since the last time we ran the program.
4162            Actually we may now be debugging against different target;
4163            and so the solib backend that installed this breakpoint may
4164            not be used in by the target.  E.g.,
4165
4166            (gdb) file prog-linux
4167            (gdb) run               # native linux target
4168            ...
4169            (gdb) kill
4170            (gdb) file prog-win.exe
4171            (gdb) tar rem :9999     # remote Windows gdbserver.
4172         */
4173
4174       case bp_step_resume:
4175
4176         /* Also remove step-resume breakpoints.  */
4177
4178       case bp_single_step:
4179
4180         /* Also remove single-step breakpoints.  */
4181
4182         delete_breakpoint (b);
4183         break;
4184
4185       case bp_watchpoint:
4186       case bp_hardware_watchpoint:
4187       case bp_read_watchpoint:
4188       case bp_access_watchpoint:
4189         {
4190           struct watchpoint *w = (struct watchpoint *) b;
4191
4192           /* Likewise for watchpoints on local expressions.  */
4193           if (w->exp_valid_block != NULL)
4194             delete_breakpoint (b);
4195           else
4196             {
4197               /* Get rid of existing locations, which are no longer
4198                  valid.  New ones will be created in
4199                  update_watchpoint, when the inferior is restarted.
4200                  The next update_global_location_list call will
4201                  garbage collect them.  */
4202               b->loc = NULL;
4203
4204               if (context == inf_starting)
4205                 {
4206                   /* Reset val field to force reread of starting value in
4207                      insert_breakpoints.  */
4208                   if (w->val)
4209                     value_free (w->val);
4210                   w->val = NULL;
4211                   w->val_valid = 0;
4212                 }
4213             }
4214         }
4215         break;
4216       default:
4217         break;
4218       }
4219   }
4220
4221   /* Get rid of the moribund locations.  */
4222   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4223     decref_bp_location (&bl);
4224   VEC_free (bp_location_p, moribund_locations);
4225 }
4226
4227 /* These functions concern about actual breakpoints inserted in the
4228    target --- to e.g. check if we need to do decr_pc adjustment or if
4229    we need to hop over the bkpt --- so we check for address space
4230    match, not program space.  */
4231
4232 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4233    exists at PC.  It returns ordinary_breakpoint_here if it's an
4234    ordinary breakpoint, or permanent_breakpoint_here if it's a
4235    permanent breakpoint.
4236    - When continuing from a location with an ordinary breakpoint, we
4237      actually single step once before calling insert_breakpoints.
4238    - When continuing from a location with a permanent breakpoint, we
4239      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4240      the target, to advance the PC past the breakpoint.  */
4241
4242 enum breakpoint_here
4243 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4244 {
4245   struct bp_location *bl, **blp_tmp;
4246   int any_breakpoint_here = 0;
4247
4248   ALL_BP_LOCATIONS (bl, blp_tmp)
4249     {
4250       if (bl->loc_type != bp_loc_software_breakpoint
4251           && bl->loc_type != bp_loc_hardware_breakpoint)
4252         continue;
4253
4254       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4255       if ((breakpoint_enabled (bl->owner)
4256            || bl->permanent)
4257           && breakpoint_location_address_match (bl, aspace, pc))
4258         {
4259           if (overlay_debugging 
4260               && section_is_overlay (bl->section)
4261               && !section_is_mapped (bl->section))
4262             continue;           /* unmapped overlay -- can't be a match */
4263           else if (bl->permanent)
4264             return permanent_breakpoint_here;
4265           else
4266             any_breakpoint_here = 1;
4267         }
4268     }
4269
4270   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4271 }
4272
4273 /* See breakpoint.h.  */
4274
4275 int
4276 breakpoint_in_range_p (struct address_space *aspace,
4277                        CORE_ADDR addr, ULONGEST len)
4278 {
4279   struct bp_location *bl, **blp_tmp;
4280
4281   ALL_BP_LOCATIONS (bl, blp_tmp)
4282     {
4283       if (bl->loc_type != bp_loc_software_breakpoint
4284           && bl->loc_type != bp_loc_hardware_breakpoint)
4285         continue;
4286
4287       if ((breakpoint_enabled (bl->owner)
4288            || bl->permanent)
4289           && breakpoint_location_address_range_overlap (bl, aspace,
4290                                                         addr, len))
4291         {
4292           if (overlay_debugging
4293               && section_is_overlay (bl->section)
4294               && !section_is_mapped (bl->section))
4295             {
4296               /* Unmapped overlay -- can't be a match.  */
4297               continue;
4298             }
4299
4300           return 1;
4301         }
4302     }
4303
4304   return 0;
4305 }
4306
4307 /* Return true if there's a moribund breakpoint at PC.  */
4308
4309 int
4310 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4311 {
4312   struct bp_location *loc;
4313   int ix;
4314
4315   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4316     if (breakpoint_location_address_match (loc, aspace, pc))
4317       return 1;
4318
4319   return 0;
4320 }
4321
4322 /* Returns non-zero iff BL is inserted at PC, in address space
4323    ASPACE.  */
4324
4325 static int
4326 bp_location_inserted_here_p (struct bp_location *bl,
4327                              struct address_space *aspace, CORE_ADDR pc)
4328 {
4329   if (bl->inserted
4330       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4331                                    aspace, pc))
4332     {
4333       if (overlay_debugging
4334           && section_is_overlay (bl->section)
4335           && !section_is_mapped (bl->section))
4336         return 0;               /* unmapped overlay -- can't be a match */
4337       else
4338         return 1;
4339     }
4340   return 0;
4341 }
4342
4343 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4344
4345 int
4346 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4347 {
4348   struct bp_location **blp, **blp_tmp = NULL;
4349
4350   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4351     {
4352       struct bp_location *bl = *blp;
4353
4354       if (bl->loc_type != bp_loc_software_breakpoint
4355           && bl->loc_type != bp_loc_hardware_breakpoint)
4356         continue;
4357
4358       if (bp_location_inserted_here_p (bl, aspace, pc))
4359         return 1;
4360     }
4361   return 0;
4362 }
4363
4364 /* This function returns non-zero iff there is a software breakpoint
4365    inserted at PC.  */
4366
4367 int
4368 software_breakpoint_inserted_here_p (struct address_space *aspace,
4369                                      CORE_ADDR pc)
4370 {
4371   struct bp_location **blp, **blp_tmp = NULL;
4372
4373   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4374     {
4375       struct bp_location *bl = *blp;
4376
4377       if (bl->loc_type != bp_loc_software_breakpoint)
4378         continue;
4379
4380       if (bp_location_inserted_here_p (bl, aspace, pc))
4381         return 1;
4382     }
4383
4384   return 0;
4385 }
4386
4387 /* See breakpoint.h.  */
4388
4389 int
4390 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4391                                      CORE_ADDR pc)
4392 {
4393   struct bp_location **blp, **blp_tmp = NULL;
4394
4395   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4396     {
4397       struct bp_location *bl = *blp;
4398
4399       if (bl->loc_type != bp_loc_hardware_breakpoint)
4400         continue;
4401
4402       if (bp_location_inserted_here_p (bl, aspace, pc))
4403         return 1;
4404     }
4405
4406   return 0;
4407 }
4408
4409 int
4410 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4411                                        CORE_ADDR addr, ULONGEST len)
4412 {
4413   struct breakpoint *bpt;
4414
4415   ALL_BREAKPOINTS (bpt)
4416     {
4417       struct bp_location *loc;
4418
4419       if (bpt->type != bp_hardware_watchpoint
4420           && bpt->type != bp_access_watchpoint)
4421         continue;
4422
4423       if (!breakpoint_enabled (bpt))
4424         continue;
4425
4426       for (loc = bpt->loc; loc; loc = loc->next)
4427         if (loc->pspace->aspace == aspace && loc->inserted)
4428           {
4429             CORE_ADDR l, h;
4430
4431             /* Check for intersection.  */
4432             l = std::max<CORE_ADDR> (loc->address, addr);
4433             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4434             if (l < h)
4435               return 1;
4436           }
4437     }
4438   return 0;
4439 }
4440 \f
4441
4442 /* bpstat stuff.  External routines' interfaces are documented
4443    in breakpoint.h.  */
4444
4445 int
4446 is_catchpoint (struct breakpoint *ep)
4447 {
4448   return (ep->type == bp_catchpoint);
4449 }
4450
4451 /* Frees any storage that is part of a bpstat.  Does not walk the
4452    'next' chain.  */
4453
4454 static void
4455 bpstat_free (bpstat bs)
4456 {
4457   if (bs->old_val != NULL)
4458     value_free (bs->old_val);
4459   decref_counted_command_line (&bs->commands);
4460   decref_bp_location (&bs->bp_location_at);
4461   xfree (bs);
4462 }
4463
4464 /* Clear a bpstat so that it says we are not at any breakpoint.
4465    Also free any storage that is part of a bpstat.  */
4466
4467 void
4468 bpstat_clear (bpstat *bsp)
4469 {
4470   bpstat p;
4471   bpstat q;
4472
4473   if (bsp == 0)
4474     return;
4475   p = *bsp;
4476   while (p != NULL)
4477     {
4478       q = p->next;
4479       bpstat_free (p);
4480       p = q;
4481     }
4482   *bsp = NULL;
4483 }
4484
4485 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4486    is part of the bpstat is copied as well.  */
4487
4488 bpstat
4489 bpstat_copy (bpstat bs)
4490 {
4491   bpstat p = NULL;
4492   bpstat tmp;
4493   bpstat retval = NULL;
4494
4495   if (bs == NULL)
4496     return bs;
4497
4498   for (; bs != NULL; bs = bs->next)
4499     {
4500       tmp = (bpstat) xmalloc (sizeof (*tmp));
4501       memcpy (tmp, bs, sizeof (*tmp));
4502       incref_counted_command_line (tmp->commands);
4503       incref_bp_location (tmp->bp_location_at);
4504       if (bs->old_val != NULL)
4505         {
4506           tmp->old_val = value_copy (bs->old_val);
4507           release_value (tmp->old_val);
4508         }
4509
4510       if (p == NULL)
4511         /* This is the first thing in the chain.  */
4512         retval = tmp;
4513       else
4514         p->next = tmp;
4515       p = tmp;
4516     }
4517   p->next = NULL;
4518   return retval;
4519 }
4520
4521 /* Find the bpstat associated with this breakpoint.  */
4522
4523 bpstat
4524 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4525 {
4526   if (bsp == NULL)
4527     return NULL;
4528
4529   for (; bsp != NULL; bsp = bsp->next)
4530     {
4531       if (bsp->breakpoint_at == breakpoint)
4532         return bsp;
4533     }
4534   return NULL;
4535 }
4536
4537 /* See breakpoint.h.  */
4538
4539 int
4540 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4541 {
4542   for (; bsp != NULL; bsp = bsp->next)
4543     {
4544       if (bsp->breakpoint_at == NULL)
4545         {
4546           /* A moribund location can never explain a signal other than
4547              GDB_SIGNAL_TRAP.  */
4548           if (sig == GDB_SIGNAL_TRAP)
4549             return 1;
4550         }
4551       else
4552         {
4553           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4554                                                         sig))
4555             return 1;
4556         }
4557     }
4558
4559   return 0;
4560 }
4561
4562 /* Put in *NUM the breakpoint number of the first breakpoint we are
4563    stopped at.  *BSP upon return is a bpstat which points to the
4564    remaining breakpoints stopped at (but which is not guaranteed to be
4565    good for anything but further calls to bpstat_num).
4566
4567    Return 0 if passed a bpstat which does not indicate any breakpoints.
4568    Return -1 if stopped at a breakpoint that has been deleted since
4569    we set it.
4570    Return 1 otherwise.  */
4571
4572 int
4573 bpstat_num (bpstat *bsp, int *num)
4574 {
4575   struct breakpoint *b;
4576
4577   if ((*bsp) == NULL)
4578     return 0;                   /* No more breakpoint values */
4579
4580   /* We assume we'll never have several bpstats that correspond to a
4581      single breakpoint -- otherwise, this function might return the
4582      same number more than once and this will look ugly.  */
4583   b = (*bsp)->breakpoint_at;
4584   *bsp = (*bsp)->next;
4585   if (b == NULL)
4586     return -1;                  /* breakpoint that's been deleted since */
4587
4588   *num = b->number;             /* We have its number */
4589   return 1;
4590 }
4591
4592 /* See breakpoint.h.  */
4593
4594 void
4595 bpstat_clear_actions (void)
4596 {
4597   struct thread_info *tp;
4598   bpstat bs;
4599
4600   if (ptid_equal (inferior_ptid, null_ptid))
4601     return;
4602
4603   tp = find_thread_ptid (inferior_ptid);
4604   if (tp == NULL)
4605     return;
4606
4607   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4608     {
4609       decref_counted_command_line (&bs->commands);
4610
4611       if (bs->old_val != NULL)
4612         {
4613           value_free (bs->old_val);
4614           bs->old_val = NULL;
4615         }
4616     }
4617 }
4618
4619 /* Called when a command is about to proceed the inferior.  */
4620
4621 static void
4622 breakpoint_about_to_proceed (void)
4623 {
4624   if (!ptid_equal (inferior_ptid, null_ptid))
4625     {
4626       struct thread_info *tp = inferior_thread ();
4627
4628       /* Allow inferior function calls in breakpoint commands to not
4629          interrupt the command list.  When the call finishes
4630          successfully, the inferior will be standing at the same
4631          breakpoint as if nothing happened.  */
4632       if (tp->control.in_infcall)
4633         return;
4634     }
4635
4636   breakpoint_proceeded = 1;
4637 }
4638
4639 /* Stub for cleaning up our state if we error-out of a breakpoint
4640    command.  */
4641 static void
4642 cleanup_executing_breakpoints (void *ignore)
4643 {
4644   executing_breakpoint_commands = 0;
4645 }
4646
4647 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4648    or its equivalent.  */
4649
4650 static int
4651 command_line_is_silent (struct command_line *cmd)
4652 {
4653   return cmd && (strcmp ("silent", cmd->line) == 0);
4654 }
4655
4656 /* Execute all the commands associated with all the breakpoints at
4657    this location.  Any of these commands could cause the process to
4658    proceed beyond this point, etc.  We look out for such changes by
4659    checking the global "breakpoint_proceeded" after each command.
4660
4661    Returns true if a breakpoint command resumed the inferior.  In that
4662    case, it is the caller's responsibility to recall it again with the
4663    bpstat of the current thread.  */
4664
4665 static int
4666 bpstat_do_actions_1 (bpstat *bsp)
4667 {
4668   bpstat bs;
4669   struct cleanup *old_chain;
4670   int again = 0;
4671
4672   /* Avoid endless recursion if a `source' command is contained
4673      in bs->commands.  */
4674   if (executing_breakpoint_commands)
4675     return 0;
4676
4677   executing_breakpoint_commands = 1;
4678   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4679
4680   scoped_restore preventer = prevent_dont_repeat ();
4681
4682   /* This pointer will iterate over the list of bpstat's.  */
4683   bs = *bsp;
4684
4685   breakpoint_proceeded = 0;
4686   for (; bs != NULL; bs = bs->next)
4687     {
4688       struct counted_command_line *ccmd;
4689       struct command_line *cmd;
4690       struct cleanup *this_cmd_tree_chain;
4691
4692       /* Take ownership of the BSP's command tree, if it has one.
4693
4694          The command tree could legitimately contain commands like
4695          'step' and 'next', which call clear_proceed_status, which
4696          frees stop_bpstat's command tree.  To make sure this doesn't
4697          free the tree we're executing out from under us, we need to
4698          take ownership of the tree ourselves.  Since a given bpstat's
4699          commands are only executed once, we don't need to copy it; we
4700          can clear the pointer in the bpstat, and make sure we free
4701          the tree when we're done.  */
4702       ccmd = bs->commands;
4703       bs->commands = NULL;
4704       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4705       cmd = ccmd ? ccmd->commands : NULL;
4706       if (command_line_is_silent (cmd))
4707         {
4708           /* The action has been already done by bpstat_stop_status.  */
4709           cmd = cmd->next;
4710         }
4711
4712       while (cmd != NULL)
4713         {
4714           execute_control_command (cmd);
4715
4716           if (breakpoint_proceeded)
4717             break;
4718           else
4719             cmd = cmd->next;
4720         }
4721
4722       /* We can free this command tree now.  */
4723       do_cleanups (this_cmd_tree_chain);
4724
4725       if (breakpoint_proceeded)
4726         {
4727           if (current_ui->async)
4728             /* If we are in async mode, then the target might be still
4729                running, not stopped at any breakpoint, so nothing for
4730                us to do here -- just return to the event loop.  */
4731             ;
4732           else
4733             /* In sync mode, when execute_control_command returns
4734                we're already standing on the next breakpoint.
4735                Breakpoint commands for that stop were not run, since
4736                execute_command does not run breakpoint commands --
4737                only command_line_handler does, but that one is not
4738                involved in execution of breakpoint commands.  So, we
4739                can now execute breakpoint commands.  It should be
4740                noted that making execute_command do bpstat actions is
4741                not an option -- in this case we'll have recursive
4742                invocation of bpstat for each breakpoint with a
4743                command, and can easily blow up GDB stack.  Instead, we
4744                return true, which will trigger the caller to recall us
4745                with the new stop_bpstat.  */
4746             again = 1;
4747           break;
4748         }
4749     }
4750   do_cleanups (old_chain);
4751   return again;
4752 }
4753
4754 void
4755 bpstat_do_actions (void)
4756 {
4757   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4758
4759   /* Do any commands attached to breakpoint we are stopped at.  */
4760   while (!ptid_equal (inferior_ptid, null_ptid)
4761          && target_has_execution
4762          && !is_exited (inferior_ptid)
4763          && !is_executing (inferior_ptid))
4764     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4765        and only return when it is stopped at the next breakpoint, we
4766        keep doing breakpoint actions until it returns false to
4767        indicate the inferior was not resumed.  */
4768     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4769       break;
4770
4771   discard_cleanups (cleanup_if_error);
4772 }
4773
4774 /* Print out the (old or new) value associated with a watchpoint.  */
4775
4776 static void
4777 watchpoint_value_print (struct value *val, struct ui_file *stream)
4778 {
4779   if (val == NULL)
4780     fprintf_unfiltered (stream, _("<unreadable>"));
4781   else
4782     {
4783       struct value_print_options opts;
4784       get_user_print_options (&opts);
4785       value_print (val, stream, &opts);
4786     }
4787 }
4788
4789 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4790    debugging multiple threads.  */
4791
4792 void
4793 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4794 {
4795   if (uiout->is_mi_like_p ())
4796     return;
4797
4798   uiout->text ("\n");
4799
4800   if (show_thread_that_caused_stop ())
4801     {
4802       const char *name;
4803       struct thread_info *thr = inferior_thread ();
4804
4805       uiout->text ("Thread ");
4806       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4807
4808       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4809       if (name != NULL)
4810         {
4811           uiout->text (" \"");
4812           uiout->field_fmt ("name", "%s", name);
4813           uiout->text ("\"");
4814         }
4815
4816       uiout->text (" hit ");
4817     }
4818 }
4819
4820 /* Generic routine for printing messages indicating why we
4821    stopped.  The behavior of this function depends on the value
4822    'print_it' in the bpstat structure.  Under some circumstances we
4823    may decide not to print anything here and delegate the task to
4824    normal_stop().  */
4825
4826 static enum print_stop_action
4827 print_bp_stop_message (bpstat bs)
4828 {
4829   switch (bs->print_it)
4830     {
4831     case print_it_noop:
4832       /* Nothing should be printed for this bpstat entry.  */
4833       return PRINT_UNKNOWN;
4834       break;
4835
4836     case print_it_done:
4837       /* We still want to print the frame, but we already printed the
4838          relevant messages.  */
4839       return PRINT_SRC_AND_LOC;
4840       break;
4841
4842     case print_it_normal:
4843       {
4844         struct breakpoint *b = bs->breakpoint_at;
4845
4846         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4847            which has since been deleted.  */
4848         if (b == NULL)
4849           return PRINT_UNKNOWN;
4850
4851         /* Normal case.  Call the breakpoint's print_it method.  */
4852         return b->ops->print_it (bs);
4853       }
4854       break;
4855
4856     default:
4857       internal_error (__FILE__, __LINE__,
4858                       _("print_bp_stop_message: unrecognized enum value"));
4859       break;
4860     }
4861 }
4862
4863 /* A helper function that prints a shared library stopped event.  */
4864
4865 static void
4866 print_solib_event (int is_catchpoint)
4867 {
4868   int any_deleted
4869     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4870   int any_added
4871     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4872
4873   if (!is_catchpoint)
4874     {
4875       if (any_added || any_deleted)
4876         current_uiout->text (_("Stopped due to shared library event:\n"));
4877       else
4878         current_uiout->text (_("Stopped due to shared library event (no "
4879                                "libraries added or removed)\n"));
4880     }
4881
4882   if (current_uiout->is_mi_like_p ())
4883     current_uiout->field_string ("reason",
4884                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4885
4886   if (any_deleted)
4887     {
4888       struct cleanup *cleanup;
4889       char *name;
4890       int ix;
4891
4892       current_uiout->text (_("  Inferior unloaded "));
4893       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4894                                                     "removed");
4895       for (ix = 0;
4896            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4897                         ix, name);
4898            ++ix)
4899         {
4900           if (ix > 0)
4901             current_uiout->text ("    ");
4902           current_uiout->field_string ("library", name);
4903           current_uiout->text ("\n");
4904         }
4905
4906       do_cleanups (cleanup);
4907     }
4908
4909   if (any_added)
4910     {
4911       struct so_list *iter;
4912       int ix;
4913       struct cleanup *cleanup;
4914
4915       current_uiout->text (_("  Inferior loaded "));
4916       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4917                                                     "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       do_cleanups (cleanup);
4930     }
4931 }
4932
4933 /* Print a message indicating what happened.  This is called from
4934    normal_stop().  The input to this routine is the head of the bpstat
4935    list - a list of the eventpoints that caused this stop.  KIND is
4936    the target_waitkind for the stopping event.  This
4937    routine calls the generic print routine for printing a message
4938    about reasons for stopping.  This will print (for example) the
4939    "Breakpoint n," part of the output.  The return value of this
4940    routine is one of:
4941
4942    PRINT_UNKNOWN: Means we printed nothing.
4943    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4944    code to print the location.  An example is 
4945    "Breakpoint 1, " which should be followed by
4946    the location.
4947    PRINT_SRC_ONLY: Means we printed something, but there is no need
4948    to also print the location part of the message.
4949    An example is the catch/throw messages, which
4950    don't require a location appended to the end.
4951    PRINT_NOTHING: We have done some printing and we don't need any 
4952    further info to be printed.  */
4953
4954 enum print_stop_action
4955 bpstat_print (bpstat bs, int kind)
4956 {
4957   enum print_stop_action val;
4958
4959   /* Maybe another breakpoint in the chain caused us to stop.
4960      (Currently all watchpoints go on the bpstat whether hit or not.
4961      That probably could (should) be changed, provided care is taken
4962      with respect to bpstat_explains_signal).  */
4963   for (; bs; bs = bs->next)
4964     {
4965       val = print_bp_stop_message (bs);
4966       if (val == PRINT_SRC_ONLY 
4967           || val == PRINT_SRC_AND_LOC 
4968           || val == PRINT_NOTHING)
4969         return val;
4970     }
4971
4972   /* If we had hit a shared library event breakpoint,
4973      print_bp_stop_message would print out this message.  If we hit an
4974      OS-level shared library event, do the same thing.  */
4975   if (kind == TARGET_WAITKIND_LOADED)
4976     {
4977       print_solib_event (0);
4978       return PRINT_NOTHING;
4979     }
4980
4981   /* We reached the end of the chain, or we got a null BS to start
4982      with and nothing was printed.  */
4983   return PRINT_UNKNOWN;
4984 }
4985
4986 /* Evaluate the expression EXP and return 1 if value is zero.
4987    This returns the inverse of the condition because it is called
4988    from catch_errors which returns 0 if an exception happened, and if an
4989    exception happens we want execution to stop.
4990    The argument is a "struct expression *" that has been cast to a
4991    "void *" to make it pass through catch_errors.  */
4992
4993 static int
4994 breakpoint_cond_eval (void *exp)
4995 {
4996   struct value *mark = value_mark ();
4997   int i = !value_true (evaluate_expression ((struct expression *) exp));
4998
4999   value_free_to_mark (mark);
5000   return i;
5001 }
5002
5003 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
5004
5005 static bpstat
5006 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
5007 {
5008   bpstat bs;
5009
5010   bs = (bpstat) xmalloc (sizeof (*bs));
5011   bs->next = NULL;
5012   **bs_link_pointer = bs;
5013   *bs_link_pointer = &bs->next;
5014   bs->breakpoint_at = bl->owner;
5015   bs->bp_location_at = bl;
5016   incref_bp_location (bl);
5017   /* If the condition is false, etc., don't do the commands.  */
5018   bs->commands = NULL;
5019   bs->old_val = NULL;
5020   bs->print_it = print_it_normal;
5021   return bs;
5022 }
5023 \f
5024 /* The target has stopped with waitstatus WS.  Check if any hardware
5025    watchpoints have triggered, according to the target.  */
5026
5027 int
5028 watchpoints_triggered (struct target_waitstatus *ws)
5029 {
5030   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
5031   CORE_ADDR addr;
5032   struct breakpoint *b;
5033
5034   if (!stopped_by_watchpoint)
5035     {
5036       /* We were not stopped by a watchpoint.  Mark all watchpoints
5037          as not triggered.  */
5038       ALL_BREAKPOINTS (b)
5039         if (is_hardware_watchpoint (b))
5040           {
5041             struct watchpoint *w = (struct watchpoint *) b;
5042
5043             w->watchpoint_triggered = watch_triggered_no;
5044           }
5045
5046       return 0;
5047     }
5048
5049   if (!target_stopped_data_address (&current_target, &addr))
5050     {
5051       /* We were stopped by a watchpoint, but we don't know where.
5052          Mark all watchpoints as unknown.  */
5053       ALL_BREAKPOINTS (b)
5054         if (is_hardware_watchpoint (b))
5055           {
5056             struct watchpoint *w = (struct watchpoint *) b;
5057
5058             w->watchpoint_triggered = watch_triggered_unknown;
5059           }
5060
5061       return 1;
5062     }
5063
5064   /* The target could report the data address.  Mark watchpoints
5065      affected by this data address as triggered, and all others as not
5066      triggered.  */
5067
5068   ALL_BREAKPOINTS (b)
5069     if (is_hardware_watchpoint (b))
5070       {
5071         struct watchpoint *w = (struct watchpoint *) b;
5072         struct bp_location *loc;
5073
5074         w->watchpoint_triggered = watch_triggered_no;
5075         for (loc = b->loc; loc; loc = loc->next)
5076           {
5077             if (is_masked_watchpoint (b))
5078               {
5079                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5080                 CORE_ADDR start = loc->address & w->hw_wp_mask;
5081
5082                 if (newaddr == start)
5083                   {
5084                     w->watchpoint_triggered = watch_triggered_yes;
5085                     break;
5086                   }
5087               }
5088             /* Exact match not required.  Within range is sufficient.  */
5089             else if (target_watchpoint_addr_within_range (&current_target,
5090                                                          addr, loc->address,
5091                                                          loc->length))
5092               {
5093                 w->watchpoint_triggered = watch_triggered_yes;
5094                 break;
5095               }
5096           }
5097       }
5098
5099   return 1;
5100 }
5101
5102 /* Possible return values for watchpoint_check (this can't be an enum
5103    because of check_errors).  */
5104 /* The watchpoint has been deleted.  */
5105 #define WP_DELETED 1
5106 /* The value has changed.  */
5107 #define WP_VALUE_CHANGED 2
5108 /* The value has not changed.  */
5109 #define WP_VALUE_NOT_CHANGED 3
5110 /* Ignore this watchpoint, no matter if the value changed or not.  */
5111 #define WP_IGNORE 4
5112
5113 #define BP_TEMPFLAG 1
5114 #define BP_HARDWAREFLAG 2
5115
5116 /* Evaluate watchpoint condition expression and check if its value
5117    changed.
5118
5119    P should be a pointer to struct bpstat, but is defined as a void *
5120    in order for this function to be usable with catch_errors.  */
5121
5122 static int
5123 watchpoint_check (void *p)
5124 {
5125   bpstat bs = (bpstat) p;
5126   struct watchpoint *b;
5127   struct frame_info *fr;
5128   int within_current_scope;
5129
5130   /* BS is built from an existing struct breakpoint.  */
5131   gdb_assert (bs->breakpoint_at != NULL);
5132   b = (struct watchpoint *) bs->breakpoint_at;
5133
5134   /* If this is a local watchpoint, we only want to check if the
5135      watchpoint frame is in scope if the current thread is the thread
5136      that was used to create the watchpoint.  */
5137   if (!watchpoint_in_thread_scope (b))
5138     return WP_IGNORE;
5139
5140   if (b->exp_valid_block == NULL)
5141     within_current_scope = 1;
5142   else
5143     {
5144       struct frame_info *frame = get_current_frame ();
5145       struct gdbarch *frame_arch = get_frame_arch (frame);
5146       CORE_ADDR frame_pc = get_frame_pc (frame);
5147
5148       /* stack_frame_destroyed_p() returns a non-zero value if we're
5149          still in the function but the stack frame has already been
5150          invalidated.  Since we can't rely on the values of local
5151          variables after the stack has been destroyed, we are treating
5152          the watchpoint in that state as `not changed' without further
5153          checking.  Don't mark watchpoints as changed if the current
5154          frame is in an epilogue - even if they are in some other
5155          frame, our view of the stack is likely to be wrong and
5156          frame_find_by_id could error out.  */
5157       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5158         return WP_IGNORE;
5159
5160       fr = frame_find_by_id (b->watchpoint_frame);
5161       within_current_scope = (fr != NULL);
5162
5163       /* If we've gotten confused in the unwinder, we might have
5164          returned a frame that can't describe this variable.  */
5165       if (within_current_scope)
5166         {
5167           struct symbol *function;
5168
5169           function = get_frame_function (fr);
5170           if (function == NULL
5171               || !contained_in (b->exp_valid_block,
5172                                 SYMBOL_BLOCK_VALUE (function)))
5173             within_current_scope = 0;
5174         }
5175
5176       if (within_current_scope)
5177         /* If we end up stopping, the current frame will get selected
5178            in normal_stop.  So this call to select_frame won't affect
5179            the user.  */
5180         select_frame (fr);
5181     }
5182
5183   if (within_current_scope)
5184     {
5185       /* We use value_{,free_to_}mark because it could be a *long*
5186          time before we return to the command level and call
5187          free_all_values.  We can't call free_all_values because we
5188          might be in the middle of evaluating a function call.  */
5189
5190       int pc = 0;
5191       struct value *mark;
5192       struct value *new_val;
5193
5194       if (is_masked_watchpoint (&b->base))
5195         /* Since we don't know the exact trigger address (from
5196            stopped_data_address), just tell the user we've triggered
5197            a mask watchpoint.  */
5198         return WP_VALUE_CHANGED;
5199
5200       mark = value_mark ();
5201       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
5202
5203       if (b->val_bitsize != 0)
5204         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5205
5206       /* We use value_equal_contents instead of value_equal because
5207          the latter coerces an array to a pointer, thus comparing just
5208          the address of the array instead of its contents.  This is
5209          not what we want.  */
5210       if ((b->val != NULL) != (new_val != NULL)
5211           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5212         {
5213           if (new_val != NULL)
5214             {
5215               release_value (new_val);
5216               value_free_to_mark (mark);
5217             }
5218           bs->old_val = b->val;
5219           b->val = new_val;
5220           b->val_valid = 1;
5221           return WP_VALUE_CHANGED;
5222         }
5223       else
5224         {
5225           /* Nothing changed.  */
5226           value_free_to_mark (mark);
5227           return WP_VALUE_NOT_CHANGED;
5228         }
5229     }
5230   else
5231     {
5232       /* This seems like the only logical thing to do because
5233          if we temporarily ignored the watchpoint, then when
5234          we reenter the block in which it is valid it contains
5235          garbage (in the case of a function, it may have two
5236          garbage values, one before and one after the prologue).
5237          So we can't even detect the first assignment to it and
5238          watch after that (since the garbage may or may not equal
5239          the first value assigned).  */
5240       /* We print all the stop information in
5241          breakpoint_ops->print_it, but in this case, by the time we
5242          call breakpoint_ops->print_it this bp will be deleted
5243          already.  So we have no choice but print the information
5244          here.  */
5245
5246       SWITCH_THRU_ALL_UIS ()
5247         {
5248           struct ui_out *uiout = current_uiout;
5249
5250           if (uiout->is_mi_like_p ())
5251             uiout->field_string
5252               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5253           uiout->text ("\nWatchpoint ");
5254           uiout->field_int ("wpnum", b->base.number);
5255           uiout->text (" deleted because the program has left the block in\n"
5256                        "which its expression is valid.\n");
5257         }
5258
5259       /* Make sure the watchpoint's commands aren't executed.  */
5260       decref_counted_command_line (&b->base.commands);
5261       watchpoint_del_at_next_stop (b);
5262
5263       return WP_DELETED;
5264     }
5265 }
5266
5267 /* Return true if it looks like target has stopped due to hitting
5268    breakpoint location BL.  This function does not check if we should
5269    stop, only if BL explains the stop.  */
5270
5271 static int
5272 bpstat_check_location (const struct bp_location *bl,
5273                        struct address_space *aspace, CORE_ADDR bp_addr,
5274                        const struct target_waitstatus *ws)
5275 {
5276   struct breakpoint *b = bl->owner;
5277
5278   /* BL is from an existing breakpoint.  */
5279   gdb_assert (b != NULL);
5280
5281   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5282 }
5283
5284 /* Determine if the watched values have actually changed, and we
5285    should stop.  If not, set BS->stop to 0.  */
5286
5287 static void
5288 bpstat_check_watchpoint (bpstat bs)
5289 {
5290   const struct bp_location *bl;
5291   struct watchpoint *b;
5292
5293   /* BS is built for existing struct breakpoint.  */
5294   bl = bs->bp_location_at;
5295   gdb_assert (bl != NULL);
5296   b = (struct watchpoint *) bs->breakpoint_at;
5297   gdb_assert (b != NULL);
5298
5299     {
5300       int must_check_value = 0;
5301       
5302       if (b->base.type == bp_watchpoint)
5303         /* For a software watchpoint, we must always check the
5304            watched value.  */
5305         must_check_value = 1;
5306       else if (b->watchpoint_triggered == watch_triggered_yes)
5307         /* We have a hardware watchpoint (read, write, or access)
5308            and the target earlier reported an address watched by
5309            this watchpoint.  */
5310         must_check_value = 1;
5311       else if (b->watchpoint_triggered == watch_triggered_unknown
5312                && b->base.type == bp_hardware_watchpoint)
5313         /* We were stopped by a hardware watchpoint, but the target could
5314            not report the data address.  We must check the watchpoint's
5315            value.  Access and read watchpoints are out of luck; without
5316            a data address, we can't figure it out.  */
5317         must_check_value = 1;
5318
5319       if (must_check_value)
5320         {
5321           char *message
5322             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5323                           b->base.number);
5324           struct cleanup *cleanups = make_cleanup (xfree, message);
5325           int e = catch_errors (watchpoint_check, bs, message,
5326                                 RETURN_MASK_ALL);
5327           do_cleanups (cleanups);
5328           switch (e)
5329             {
5330             case WP_DELETED:
5331               /* We've already printed what needs to be printed.  */
5332               bs->print_it = print_it_done;
5333               /* Stop.  */
5334               break;
5335             case WP_IGNORE:
5336               bs->print_it = print_it_noop;
5337               bs->stop = 0;
5338               break;
5339             case WP_VALUE_CHANGED:
5340               if (b->base.type == bp_read_watchpoint)
5341                 {
5342                   /* There are two cases to consider here:
5343
5344                      1. We're watching the triggered memory for reads.
5345                      In that case, trust the target, and always report
5346                      the watchpoint hit to the user.  Even though
5347                      reads don't cause value changes, the value may
5348                      have changed since the last time it was read, and
5349                      since we're not trapping writes, we will not see
5350                      those, and as such we should ignore our notion of
5351                      old value.
5352
5353                      2. We're watching the triggered memory for both
5354                      reads and writes.  There are two ways this may
5355                      happen:
5356
5357                      2.1. This is a target that can't break on data
5358                      reads only, but can break on accesses (reads or
5359                      writes), such as e.g., x86.  We detect this case
5360                      at the time we try to insert read watchpoints.
5361
5362                      2.2. Otherwise, the target supports read
5363                      watchpoints, but, the user set an access or write
5364                      watchpoint watching the same memory as this read
5365                      watchpoint.
5366
5367                      If we're watching memory writes as well as reads,
5368                      ignore watchpoint hits when we find that the
5369                      value hasn't changed, as reads don't cause
5370                      changes.  This still gives false positives when
5371                      the program writes the same value to memory as
5372                      what there was already in memory (we will confuse
5373                      it for a read), but it's much better than
5374                      nothing.  */
5375
5376                   int other_write_watchpoint = 0;
5377
5378                   if (bl->watchpoint_type == hw_read)
5379                     {
5380                       struct breakpoint *other_b;
5381
5382                       ALL_BREAKPOINTS (other_b)
5383                         if (other_b->type == bp_hardware_watchpoint
5384                             || other_b->type == bp_access_watchpoint)
5385                           {
5386                             struct watchpoint *other_w =
5387                               (struct watchpoint *) other_b;
5388
5389                             if (other_w->watchpoint_triggered
5390                                 == watch_triggered_yes)
5391                               {
5392                                 other_write_watchpoint = 1;
5393                                 break;
5394                               }
5395                           }
5396                     }
5397
5398                   if (other_write_watchpoint
5399                       || bl->watchpoint_type == hw_access)
5400                     {
5401                       /* We're watching the same memory for writes,
5402                          and the value changed since the last time we
5403                          updated it, so this trap must be for a write.
5404                          Ignore it.  */
5405                       bs->print_it = print_it_noop;
5406                       bs->stop = 0;
5407                     }
5408                 }
5409               break;
5410             case WP_VALUE_NOT_CHANGED:
5411               if (b->base.type == bp_hardware_watchpoint
5412                   || b->base.type == bp_watchpoint)
5413                 {
5414                   /* Don't stop: write watchpoints shouldn't fire if
5415                      the value hasn't changed.  */
5416                   bs->print_it = print_it_noop;
5417                   bs->stop = 0;
5418                 }
5419               /* Stop.  */
5420               break;
5421             default:
5422               /* Can't happen.  */
5423             case 0:
5424               /* Error from catch_errors.  */
5425               {
5426                 SWITCH_THRU_ALL_UIS ()
5427                   {
5428                     printf_filtered (_("Watchpoint %d deleted.\n"),
5429                                      b->base.number);
5430                   }
5431                 watchpoint_del_at_next_stop (b);
5432                 /* We've already printed what needs to be printed.  */
5433                 bs->print_it = print_it_done;
5434               }
5435               break;
5436             }
5437         }
5438       else      /* must_check_value == 0 */
5439         {
5440           /* This is a case where some watchpoint(s) triggered, but
5441              not at the address of this watchpoint, or else no
5442              watchpoint triggered after all.  So don't print
5443              anything for this watchpoint.  */
5444           bs->print_it = print_it_noop;
5445           bs->stop = 0;
5446         }
5447     }
5448 }
5449
5450 /* For breakpoints that are currently marked as telling gdb to stop,
5451    check conditions (condition proper, frame, thread and ignore count)
5452    of breakpoint referred to by BS.  If we should not stop for this
5453    breakpoint, set BS->stop to 0.  */
5454
5455 static void
5456 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5457 {
5458   const struct bp_location *bl;
5459   struct breakpoint *b;
5460   int value_is_zero = 0;
5461   struct expression *cond;
5462
5463   gdb_assert (bs->stop);
5464
5465   /* BS is built for existing struct breakpoint.  */
5466   bl = bs->bp_location_at;
5467   gdb_assert (bl != NULL);
5468   b = bs->breakpoint_at;
5469   gdb_assert (b != NULL);
5470
5471   /* Even if the target evaluated the condition on its end and notified GDB, we
5472      need to do so again since GDB does not know if we stopped due to a
5473      breakpoint or a single step breakpoint.  */
5474
5475   if (frame_id_p (b->frame_id)
5476       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5477     {
5478       bs->stop = 0;
5479       return;
5480     }
5481
5482   /* If this is a thread/task-specific breakpoint, don't waste cpu
5483      evaluating the condition if this isn't the specified
5484      thread/task.  */
5485   if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5486       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5487
5488     {
5489       bs->stop = 0;
5490       return;
5491     }
5492
5493   /* Evaluate extension language breakpoints that have a "stop" method
5494      implemented.  */
5495   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5496
5497   if (is_watchpoint (b))
5498     {
5499       struct watchpoint *w = (struct watchpoint *) b;
5500
5501       cond = w->cond_exp.get ();
5502     }
5503   else
5504     cond = bl->cond.get ();
5505
5506   if (cond && b->disposition != disp_del_at_next_stop)
5507     {
5508       int within_current_scope = 1;
5509       struct watchpoint * w;
5510
5511       /* We use value_mark and value_free_to_mark because it could
5512          be a long time before we return to the command level and
5513          call free_all_values.  We can't call free_all_values
5514          because we might be in the middle of evaluating a
5515          function call.  */
5516       struct value *mark = value_mark ();
5517
5518       if (is_watchpoint (b))
5519         w = (struct watchpoint *) b;
5520       else
5521         w = NULL;
5522
5523       /* Need to select the frame, with all that implies so that
5524          the conditions will have the right context.  Because we
5525          use the frame, we will not see an inlined function's
5526          variables when we arrive at a breakpoint at the start
5527          of the inlined function; the current frame will be the
5528          call site.  */
5529       if (w == NULL || w->cond_exp_valid_block == NULL)
5530         select_frame (get_current_frame ());
5531       else
5532         {
5533           struct frame_info *frame;
5534
5535           /* For local watchpoint expressions, which particular
5536              instance of a local is being watched matters, so we
5537              keep track of the frame to evaluate the expression
5538              in.  To evaluate the condition however, it doesn't
5539              really matter which instantiation of the function
5540              where the condition makes sense triggers the
5541              watchpoint.  This allows an expression like "watch
5542              global if q > 10" set in `func', catch writes to
5543              global on all threads that call `func', or catch
5544              writes on all recursive calls of `func' by a single
5545              thread.  We simply always evaluate the condition in
5546              the innermost frame that's executing where it makes
5547              sense to evaluate the condition.  It seems
5548              intuitive.  */
5549           frame = block_innermost_frame (w->cond_exp_valid_block);
5550           if (frame != NULL)
5551             select_frame (frame);
5552           else
5553             within_current_scope = 0;
5554         }
5555       if (within_current_scope)
5556         value_is_zero
5557           = catch_errors (breakpoint_cond_eval, cond,
5558                           "Error in testing breakpoint condition:\n",
5559                           RETURN_MASK_ALL);
5560       else
5561         {
5562           warning (_("Watchpoint condition cannot be tested "
5563                      "in the current scope"));
5564           /* If we failed to set the right context for this
5565              watchpoint, unconditionally report it.  */
5566           value_is_zero = 0;
5567         }
5568       /* FIXME-someday, should give breakpoint #.  */
5569       value_free_to_mark (mark);
5570     }
5571
5572   if (cond && value_is_zero)
5573     {
5574       bs->stop = 0;
5575     }
5576   else if (b->ignore_count > 0)
5577     {
5578       b->ignore_count--;
5579       bs->stop = 0;
5580       /* Increase the hit count even though we don't stop.  */
5581       ++(b->hit_count);
5582       observer_notify_breakpoint_modified (b);
5583     }   
5584 }
5585
5586 /* Returns true if we need to track moribund locations of LOC's type
5587    on the current target.  */
5588
5589 static int
5590 need_moribund_for_location_type (struct bp_location *loc)
5591 {
5592   return ((loc->loc_type == bp_loc_software_breakpoint
5593            && !target_supports_stopped_by_sw_breakpoint ())
5594           || (loc->loc_type == bp_loc_hardware_breakpoint
5595               && !target_supports_stopped_by_hw_breakpoint ()));
5596 }
5597
5598
5599 /* Get a bpstat associated with having just stopped at address
5600    BP_ADDR in thread PTID.
5601
5602    Determine whether we stopped at a breakpoint, etc, or whether we
5603    don't understand this stop.  Result is a chain of bpstat's such
5604    that:
5605
5606    if we don't understand the stop, the result is a null pointer.
5607
5608    if we understand why we stopped, the result is not null.
5609
5610    Each element of the chain refers to a particular breakpoint or
5611    watchpoint at which we have stopped.  (We may have stopped for
5612    several reasons concurrently.)
5613
5614    Each element of the chain has valid next, breakpoint_at,
5615    commands, FIXME??? fields.  */
5616
5617 bpstat
5618 bpstat_stop_status (struct address_space *aspace,
5619                     CORE_ADDR bp_addr, ptid_t ptid,
5620                     const struct target_waitstatus *ws)
5621 {
5622   struct breakpoint *b = NULL;
5623   struct bp_location *bl;
5624   struct bp_location *loc;
5625   /* First item of allocated bpstat's.  */
5626   bpstat bs_head = NULL, *bs_link = &bs_head;
5627   /* Pointer to the last thing in the chain currently.  */
5628   bpstat bs;
5629   int ix;
5630   int need_remove_insert;
5631   int removed_any;
5632
5633   /* First, build the bpstat chain with locations that explain a
5634      target stop, while being careful to not set the target running,
5635      as that may invalidate locations (in particular watchpoint
5636      locations are recreated).  Resuming will happen here with
5637      breakpoint conditions or watchpoint expressions that include
5638      inferior function calls.  */
5639
5640   ALL_BREAKPOINTS (b)
5641     {
5642       if (!breakpoint_enabled (b))
5643         continue;
5644
5645       for (bl = b->loc; bl != NULL; bl = bl->next)
5646         {
5647           /* For hardware watchpoints, we look only at the first
5648              location.  The watchpoint_check function will work on the
5649              entire expression, not the individual locations.  For
5650              read watchpoints, the watchpoints_triggered function has
5651              checked all locations already.  */
5652           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5653             break;
5654
5655           if (!bl->enabled || bl->shlib_disabled)
5656             continue;
5657
5658           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5659             continue;
5660
5661           /* Come here if it's a watchpoint, or if the break address
5662              matches.  */
5663
5664           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5665                                                    explain stop.  */
5666
5667           /* Assume we stop.  Should we find a watchpoint that is not
5668              actually triggered, or if the condition of the breakpoint
5669              evaluates as false, we'll reset 'stop' to 0.  */
5670           bs->stop = 1;
5671           bs->print = 1;
5672
5673           /* If this is a scope breakpoint, mark the associated
5674              watchpoint as triggered so that we will handle the
5675              out-of-scope event.  We'll get to the watchpoint next
5676              iteration.  */
5677           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5678             {
5679               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5680
5681               w->watchpoint_triggered = watch_triggered_yes;
5682             }
5683         }
5684     }
5685
5686   /* Check if a moribund breakpoint explains the stop.  */
5687   if (!target_supports_stopped_by_sw_breakpoint ()
5688       || !target_supports_stopped_by_hw_breakpoint ())
5689     {
5690       for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5691         {
5692           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5693               && need_moribund_for_location_type (loc))
5694             {
5695               bs = bpstat_alloc (loc, &bs_link);
5696               /* For hits of moribund locations, we should just proceed.  */
5697               bs->stop = 0;
5698               bs->print = 0;
5699               bs->print_it = print_it_noop;
5700             }
5701         }
5702     }
5703
5704   /* A bit of special processing for shlib breakpoints.  We need to
5705      process solib loading here, so that the lists of loaded and
5706      unloaded libraries are correct before we handle "catch load" and
5707      "catch unload".  */
5708   for (bs = bs_head; bs != NULL; bs = bs->next)
5709     {
5710       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5711         {
5712           handle_solib_event ();
5713           break;
5714         }
5715     }
5716
5717   /* Now go through the locations that caused the target to stop, and
5718      check whether we're interested in reporting this stop to higher
5719      layers, or whether we should resume the target transparently.  */
5720
5721   removed_any = 0;
5722
5723   for (bs = bs_head; bs != NULL; bs = bs->next)
5724     {
5725       if (!bs->stop)
5726         continue;
5727
5728       b = bs->breakpoint_at;
5729       b->ops->check_status (bs);
5730       if (bs->stop)
5731         {
5732           bpstat_check_breakpoint_conditions (bs, ptid);
5733
5734           if (bs->stop)
5735             {
5736               ++(b->hit_count);
5737               observer_notify_breakpoint_modified (b);
5738
5739               /* We will stop here.  */
5740               if (b->disposition == disp_disable)
5741                 {
5742                   --(b->enable_count);
5743                   if (b->enable_count <= 0)
5744                     b->enable_state = bp_disabled;
5745                   removed_any = 1;
5746                 }
5747               if (b->silent)
5748                 bs->print = 0;
5749               bs->commands = b->commands;
5750               incref_counted_command_line (bs->commands);
5751               if (command_line_is_silent (bs->commands
5752                                           ? bs->commands->commands : NULL))
5753                 bs->print = 0;
5754
5755               b->ops->after_condition_true (bs);
5756             }
5757
5758         }
5759
5760       /* Print nothing for this entry if we don't stop or don't
5761          print.  */
5762       if (!bs->stop || !bs->print)
5763         bs->print_it = print_it_noop;
5764     }
5765
5766   /* If we aren't stopping, the value of some hardware watchpoint may
5767      not have changed, but the intermediate memory locations we are
5768      watching may have.  Don't bother if we're stopping; this will get
5769      done later.  */
5770   need_remove_insert = 0;
5771   if (! bpstat_causes_stop (bs_head))
5772     for (bs = bs_head; bs != NULL; bs = bs->next)
5773       if (!bs->stop
5774           && bs->breakpoint_at
5775           && is_hardware_watchpoint (bs->breakpoint_at))
5776         {
5777           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5778
5779           update_watchpoint (w, 0 /* don't reparse.  */);
5780           need_remove_insert = 1;
5781         }
5782
5783   if (need_remove_insert)
5784     update_global_location_list (UGLL_MAY_INSERT);
5785   else if (removed_any)
5786     update_global_location_list (UGLL_DONT_INSERT);
5787
5788   return bs_head;
5789 }
5790
5791 static void
5792 handle_jit_event (void)
5793 {
5794   struct frame_info *frame;
5795   struct gdbarch *gdbarch;
5796
5797   if (debug_infrun)
5798     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5799
5800   /* Switch terminal for any messages produced by
5801      breakpoint_re_set.  */
5802   target_terminal_ours_for_output ();
5803
5804   frame = get_current_frame ();
5805   gdbarch = get_frame_arch (frame);
5806
5807   jit_event_handler (gdbarch);
5808
5809   target_terminal_inferior ();
5810 }
5811
5812 /* Prepare WHAT final decision for infrun.  */
5813
5814 /* Decide what infrun needs to do with this bpstat.  */
5815
5816 struct bpstat_what
5817 bpstat_what (bpstat bs_head)
5818 {
5819   struct bpstat_what retval;
5820   bpstat bs;
5821
5822   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5823   retval.call_dummy = STOP_NONE;
5824   retval.is_longjmp = 0;
5825
5826   for (bs = bs_head; bs != NULL; bs = bs->next)
5827     {
5828       /* Extract this BS's action.  After processing each BS, we check
5829          if its action overrides all we've seem so far.  */
5830       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5831       enum bptype bptype;
5832
5833       if (bs->breakpoint_at == NULL)
5834         {
5835           /* I suspect this can happen if it was a momentary
5836              breakpoint which has since been deleted.  */
5837           bptype = bp_none;
5838         }
5839       else
5840         bptype = bs->breakpoint_at->type;
5841
5842       switch (bptype)
5843         {
5844         case bp_none:
5845           break;
5846         case bp_breakpoint:
5847         case bp_hardware_breakpoint:
5848         case bp_single_step:
5849         case bp_until:
5850         case bp_finish:
5851         case bp_shlib_event:
5852           if (bs->stop)
5853             {
5854               if (bs->print)
5855                 this_action = BPSTAT_WHAT_STOP_NOISY;
5856               else
5857                 this_action = BPSTAT_WHAT_STOP_SILENT;
5858             }
5859           else
5860             this_action = BPSTAT_WHAT_SINGLE;
5861           break;
5862         case bp_watchpoint:
5863         case bp_hardware_watchpoint:
5864         case bp_read_watchpoint:
5865         case bp_access_watchpoint:
5866           if (bs->stop)
5867             {
5868               if (bs->print)
5869                 this_action = BPSTAT_WHAT_STOP_NOISY;
5870               else
5871                 this_action = BPSTAT_WHAT_STOP_SILENT;
5872             }
5873           else
5874             {
5875               /* There was a watchpoint, but we're not stopping.
5876                  This requires no further action.  */
5877             }
5878           break;
5879         case bp_longjmp:
5880         case bp_longjmp_call_dummy:
5881         case bp_exception:
5882           if (bs->stop)
5883             {
5884               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5885               retval.is_longjmp = bptype != bp_exception;
5886             }
5887           else
5888             this_action = BPSTAT_WHAT_SINGLE;
5889           break;
5890         case bp_longjmp_resume:
5891         case bp_exception_resume:
5892           if (bs->stop)
5893             {
5894               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5895               retval.is_longjmp = bptype == bp_longjmp_resume;
5896             }
5897           else
5898             this_action = BPSTAT_WHAT_SINGLE;
5899           break;
5900         case bp_step_resume:
5901           if (bs->stop)
5902             this_action = BPSTAT_WHAT_STEP_RESUME;
5903           else
5904             {
5905               /* It is for the wrong frame.  */
5906               this_action = BPSTAT_WHAT_SINGLE;
5907             }
5908           break;
5909         case bp_hp_step_resume:
5910           if (bs->stop)
5911             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5912           else
5913             {
5914               /* It is for the wrong frame.  */
5915               this_action = BPSTAT_WHAT_SINGLE;
5916             }
5917           break;
5918         case bp_watchpoint_scope:
5919         case bp_thread_event:
5920         case bp_overlay_event:
5921         case bp_longjmp_master:
5922         case bp_std_terminate_master:
5923         case bp_exception_master:
5924           this_action = BPSTAT_WHAT_SINGLE;
5925           break;
5926         case bp_catchpoint:
5927           if (bs->stop)
5928             {
5929               if (bs->print)
5930                 this_action = BPSTAT_WHAT_STOP_NOISY;
5931               else
5932                 this_action = BPSTAT_WHAT_STOP_SILENT;
5933             }
5934           else
5935             {
5936               /* There was a catchpoint, but we're not stopping.
5937                  This requires no further action.  */
5938             }
5939           break;
5940         case bp_jit_event:
5941           this_action = BPSTAT_WHAT_SINGLE;
5942           break;
5943         case bp_call_dummy:
5944           /* Make sure the action is stop (silent or noisy),
5945              so infrun.c pops the dummy frame.  */
5946           retval.call_dummy = STOP_STACK_DUMMY;
5947           this_action = BPSTAT_WHAT_STOP_SILENT;
5948           break;
5949         case bp_std_terminate:
5950           /* Make sure the action is stop (silent or noisy),
5951              so infrun.c pops the dummy frame.  */
5952           retval.call_dummy = STOP_STD_TERMINATE;
5953           this_action = BPSTAT_WHAT_STOP_SILENT;
5954           break;
5955         case bp_tracepoint:
5956         case bp_fast_tracepoint:
5957         case bp_static_tracepoint:
5958           /* Tracepoint hits should not be reported back to GDB, and
5959              if one got through somehow, it should have been filtered
5960              out already.  */
5961           internal_error (__FILE__, __LINE__,
5962                           _("bpstat_what: tracepoint encountered"));
5963           break;
5964         case bp_gnu_ifunc_resolver:
5965           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5966           this_action = BPSTAT_WHAT_SINGLE;
5967           break;
5968         case bp_gnu_ifunc_resolver_return:
5969           /* The breakpoint will be removed, execution will restart from the
5970              PC of the former breakpoint.  */
5971           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5972           break;
5973
5974         case bp_dprintf:
5975           if (bs->stop)
5976             this_action = BPSTAT_WHAT_STOP_SILENT;
5977           else
5978             this_action = BPSTAT_WHAT_SINGLE;
5979           break;
5980
5981         default:
5982           internal_error (__FILE__, __LINE__,
5983                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5984         }
5985
5986       retval.main_action = std::max (retval.main_action, this_action);
5987     }
5988
5989   return retval;
5990 }
5991
5992 void
5993 bpstat_run_callbacks (bpstat bs_head)
5994 {
5995   bpstat bs;
5996
5997   for (bs = bs_head; bs != NULL; bs = bs->next)
5998     {
5999       struct breakpoint *b = bs->breakpoint_at;
6000
6001       if (b == NULL)
6002         continue;
6003       switch (b->type)
6004         {
6005         case bp_jit_event:
6006           handle_jit_event ();
6007           break;
6008         case bp_gnu_ifunc_resolver:
6009           gnu_ifunc_resolver_stop (b);
6010           break;
6011         case bp_gnu_ifunc_resolver_return:
6012           gnu_ifunc_resolver_return_stop (b);
6013           break;
6014         }
6015     }
6016 }
6017
6018 /* Nonzero if we should step constantly (e.g. watchpoints on machines
6019    without hardware support).  This isn't related to a specific bpstat,
6020    just to things like whether watchpoints are set.  */
6021
6022 int
6023 bpstat_should_step (void)
6024 {
6025   struct breakpoint *b;
6026
6027   ALL_BREAKPOINTS (b)
6028     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
6029       return 1;
6030   return 0;
6031 }
6032
6033 int
6034 bpstat_causes_stop (bpstat bs)
6035 {
6036   for (; bs != NULL; bs = bs->next)
6037     if (bs->stop)
6038       return 1;
6039
6040   return 0;
6041 }
6042
6043 \f
6044
6045 /* Compute a string of spaces suitable to indent the next line
6046    so it starts at the position corresponding to the table column
6047    named COL_NAME in the currently active table of UIOUT.  */
6048
6049 static char *
6050 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6051 {
6052   static char wrap_indent[80];
6053   int i, total_width, width, align;
6054   const char *text;
6055
6056   total_width = 0;
6057   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
6058     {
6059       if (strcmp (text, col_name) == 0)
6060         {
6061           gdb_assert (total_width < sizeof wrap_indent);
6062           memset (wrap_indent, ' ', total_width);
6063           wrap_indent[total_width] = 0;
6064
6065           return wrap_indent;
6066         }
6067
6068       total_width += width + 1;
6069     }
6070
6071   return NULL;
6072 }
6073
6074 /* Determine if the locations of this breakpoint will have their conditions
6075    evaluated by the target, host or a mix of both.  Returns the following:
6076
6077     "host": Host evals condition.
6078     "host or target": Host or Target evals condition.
6079     "target": Target evals condition.
6080 */
6081
6082 static const char *
6083 bp_condition_evaluator (struct breakpoint *b)
6084 {
6085   struct bp_location *bl;
6086   char host_evals = 0;
6087   char target_evals = 0;
6088
6089   if (!b)
6090     return NULL;
6091
6092   if (!is_breakpoint (b))
6093     return NULL;
6094
6095   if (gdb_evaluates_breakpoint_condition_p ()
6096       || !target_supports_evaluation_of_breakpoint_conditions ())
6097     return condition_evaluation_host;
6098
6099   for (bl = b->loc; bl; bl = bl->next)
6100     {
6101       if (bl->cond_bytecode)
6102         target_evals++;
6103       else
6104         host_evals++;
6105     }
6106
6107   if (host_evals && target_evals)
6108     return condition_evaluation_both;
6109   else if (target_evals)
6110     return condition_evaluation_target;
6111   else
6112     return condition_evaluation_host;
6113 }
6114
6115 /* Determine the breakpoint location's condition evaluator.  This is
6116    similar to bp_condition_evaluator, but for locations.  */
6117
6118 static const char *
6119 bp_location_condition_evaluator (struct bp_location *bl)
6120 {
6121   if (bl && !is_breakpoint (bl->owner))
6122     return NULL;
6123
6124   if (gdb_evaluates_breakpoint_condition_p ()
6125       || !target_supports_evaluation_of_breakpoint_conditions ())
6126     return condition_evaluation_host;
6127
6128   if (bl && bl->cond_bytecode)
6129     return condition_evaluation_target;
6130   else
6131     return condition_evaluation_host;
6132 }
6133
6134 /* Print the LOC location out of the list of B->LOC locations.  */
6135
6136 static void
6137 print_breakpoint_location (struct breakpoint *b,
6138                            struct bp_location *loc)
6139 {
6140   struct ui_out *uiout = current_uiout;
6141   struct cleanup *old_chain = save_current_program_space ();
6142
6143   if (loc != NULL && loc->shlib_disabled)
6144     loc = NULL;
6145
6146   if (loc != NULL)
6147     set_current_program_space (loc->pspace);
6148
6149   if (b->display_canonical)
6150     uiout->field_string ("what", event_location_to_string (b->location.get ()));
6151   else if (loc && loc->symtab)
6152     {
6153       struct symbol *sym 
6154         = find_pc_sect_function (loc->address, loc->section);
6155       if (sym)
6156         {
6157           uiout->text ("in ");
6158           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
6159           uiout->text (" ");
6160           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6161           uiout->text ("at ");
6162         }
6163       uiout->field_string ("file",
6164                            symtab_to_filename_for_display (loc->symtab));
6165       uiout->text (":");
6166
6167       if (uiout->is_mi_like_p ())
6168         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
6169       
6170       uiout->field_int ("line", loc->line_number);
6171     }
6172   else if (loc)
6173     {
6174       string_file stb;
6175
6176       print_address_symbolic (loc->gdbarch, loc->address, &stb,
6177                               demangle, "");
6178       uiout->field_stream ("at", stb);
6179     }
6180   else
6181     {
6182       uiout->field_string ("pending",
6183                            event_location_to_string (b->location.get ()));
6184       /* If extra_string is available, it could be holding a condition
6185          or dprintf arguments.  In either case, make sure it is printed,
6186          too, but only for non-MI streams.  */
6187       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
6188         {
6189           if (b->type == bp_dprintf)
6190             uiout->text (",");
6191           else
6192             uiout->text (" ");
6193           uiout->text (b->extra_string);
6194         }
6195     }
6196
6197   if (loc && is_breakpoint (b)
6198       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6199       && bp_condition_evaluator (b) == condition_evaluation_both)
6200     {
6201       uiout->text (" (");
6202       uiout->field_string ("evaluated-by",
6203                            bp_location_condition_evaluator (loc));
6204       uiout->text (")");
6205     }
6206
6207   do_cleanups (old_chain);
6208 }
6209
6210 static const char *
6211 bptype_string (enum bptype type)
6212 {
6213   struct ep_type_description
6214     {
6215       enum bptype type;
6216       const char *description;
6217     };
6218   static struct ep_type_description bptypes[] =
6219   {
6220     {bp_none, "?deleted?"},
6221     {bp_breakpoint, "breakpoint"},
6222     {bp_hardware_breakpoint, "hw breakpoint"},
6223     {bp_single_step, "sw single-step"},
6224     {bp_until, "until"},
6225     {bp_finish, "finish"},
6226     {bp_watchpoint, "watchpoint"},
6227     {bp_hardware_watchpoint, "hw watchpoint"},
6228     {bp_read_watchpoint, "read watchpoint"},
6229     {bp_access_watchpoint, "acc watchpoint"},
6230     {bp_longjmp, "longjmp"},
6231     {bp_longjmp_resume, "longjmp resume"},
6232     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6233     {bp_exception, "exception"},
6234     {bp_exception_resume, "exception resume"},
6235     {bp_step_resume, "step resume"},
6236     {bp_hp_step_resume, "high-priority step resume"},
6237     {bp_watchpoint_scope, "watchpoint scope"},
6238     {bp_call_dummy, "call dummy"},
6239     {bp_std_terminate, "std::terminate"},
6240     {bp_shlib_event, "shlib events"},
6241     {bp_thread_event, "thread events"},
6242     {bp_overlay_event, "overlay events"},
6243     {bp_longjmp_master, "longjmp master"},
6244     {bp_std_terminate_master, "std::terminate master"},
6245     {bp_exception_master, "exception master"},
6246     {bp_catchpoint, "catchpoint"},
6247     {bp_tracepoint, "tracepoint"},
6248     {bp_fast_tracepoint, "fast tracepoint"},
6249     {bp_static_tracepoint, "static tracepoint"},
6250     {bp_dprintf, "dprintf"},
6251     {bp_jit_event, "jit events"},
6252     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6253     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6254   };
6255
6256   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6257       || ((int) type != bptypes[(int) type].type))
6258     internal_error (__FILE__, __LINE__,
6259                     _("bptypes table does not describe type #%d."),
6260                     (int) type);
6261
6262   return bptypes[(int) type].description;
6263 }
6264
6265 /* For MI, output a field named 'thread-groups' with a list as the value.
6266    For CLI, prefix the list with the string 'inf'. */
6267
6268 static void
6269 output_thread_groups (struct ui_out *uiout,
6270                       const char *field_name,
6271                       VEC(int) *inf_num,
6272                       int mi_only)
6273 {
6274   struct cleanup *back_to;
6275   int is_mi = uiout->is_mi_like_p ();
6276   int inf;
6277   int i;
6278
6279   /* For backward compatibility, don't display inferiors in CLI unless
6280      there are several.  Always display them for MI. */
6281   if (!is_mi && mi_only)
6282     return;
6283
6284   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6285
6286   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6287     {
6288       if (is_mi)
6289         {
6290           char mi_group[10];
6291
6292           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6293           uiout->field_string (NULL, mi_group);
6294         }
6295       else
6296         {
6297           if (i == 0)
6298             uiout->text (" inf ");
6299           else
6300             uiout->text (", ");
6301         
6302           uiout->text (plongest (inf));
6303         }
6304     }
6305
6306   do_cleanups (back_to);
6307 }
6308
6309 /* Print B to gdb_stdout.  */
6310
6311 static void
6312 print_one_breakpoint_location (struct breakpoint *b,
6313                                struct bp_location *loc,
6314                                int loc_number,
6315                                struct bp_location **last_loc,
6316                                int allflag)
6317 {
6318   struct command_line *l;
6319   static char bpenables[] = "nynny";
6320
6321   struct ui_out *uiout = current_uiout;
6322   int header_of_multiple = 0;
6323   int part_of_multiple = (loc != NULL);
6324   struct value_print_options opts;
6325
6326   get_user_print_options (&opts);
6327
6328   gdb_assert (!loc || loc_number != 0);
6329   /* See comment in print_one_breakpoint concerning treatment of
6330      breakpoints with single disabled location.  */
6331   if (loc == NULL 
6332       && (b->loc != NULL 
6333           && (b->loc->next != NULL || !b->loc->enabled)))
6334     header_of_multiple = 1;
6335   if (loc == NULL)
6336     loc = b->loc;
6337
6338   annotate_record ();
6339
6340   /* 1 */
6341   annotate_field (0);
6342   if (part_of_multiple)
6343     {
6344       char *formatted;
6345       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6346       uiout->field_string ("number", formatted);
6347       xfree (formatted);
6348     }
6349   else
6350     {
6351       uiout->field_int ("number", b->number);
6352     }
6353
6354   /* 2 */
6355   annotate_field (1);
6356   if (part_of_multiple)
6357     uiout->field_skip ("type");
6358   else
6359     uiout->field_string ("type", bptype_string (b->type));
6360
6361   /* 3 */
6362   annotate_field (2);
6363   if (part_of_multiple)
6364     uiout->field_skip ("disp");
6365   else
6366     uiout->field_string ("disp", bpdisp_text (b->disposition));
6367
6368
6369   /* 4 */
6370   annotate_field (3);
6371   if (part_of_multiple)
6372     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6373   else
6374     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6375   uiout->spaces (2);
6376
6377   
6378   /* 5 and 6 */
6379   if (b->ops != NULL && b->ops->print_one != NULL)
6380     {
6381       /* Although the print_one can possibly print all locations,
6382          calling it here is not likely to get any nice result.  So,
6383          make sure there's just one location.  */
6384       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6385       b->ops->print_one (b, last_loc);
6386     }
6387   else
6388     switch (b->type)
6389       {
6390       case bp_none:
6391         internal_error (__FILE__, __LINE__,
6392                         _("print_one_breakpoint: bp_none encountered\n"));
6393         break;
6394
6395       case bp_watchpoint:
6396       case bp_hardware_watchpoint:
6397       case bp_read_watchpoint:
6398       case bp_access_watchpoint:
6399         {
6400           struct watchpoint *w = (struct watchpoint *) b;
6401
6402           /* Field 4, the address, is omitted (which makes the columns
6403              not line up too nicely with the headers, but the effect
6404              is relatively readable).  */
6405           if (opts.addressprint)
6406             uiout->field_skip ("addr");
6407           annotate_field (5);
6408           uiout->field_string ("what", w->exp_string);
6409         }
6410         break;
6411
6412       case bp_breakpoint:
6413       case bp_hardware_breakpoint:
6414       case bp_single_step:
6415       case bp_until:
6416       case bp_finish:
6417       case bp_longjmp:
6418       case bp_longjmp_resume:
6419       case bp_longjmp_call_dummy:
6420       case bp_exception:
6421       case bp_exception_resume:
6422       case bp_step_resume:
6423       case bp_hp_step_resume:
6424       case bp_watchpoint_scope:
6425       case bp_call_dummy:
6426       case bp_std_terminate:
6427       case bp_shlib_event:
6428       case bp_thread_event:
6429       case bp_overlay_event:
6430       case bp_longjmp_master:
6431       case bp_std_terminate_master:
6432       case bp_exception_master:
6433       case bp_tracepoint:
6434       case bp_fast_tracepoint:
6435       case bp_static_tracepoint:
6436       case bp_dprintf:
6437       case bp_jit_event:
6438       case bp_gnu_ifunc_resolver:
6439       case bp_gnu_ifunc_resolver_return:
6440         if (opts.addressprint)
6441           {
6442             annotate_field (4);
6443             if (header_of_multiple)
6444               uiout->field_string ("addr", "<MULTIPLE>");
6445             else if (b->loc == NULL || loc->shlib_disabled)
6446               uiout->field_string ("addr", "<PENDING>");
6447             else
6448               uiout->field_core_addr ("addr",
6449                                       loc->gdbarch, loc->address);
6450           }
6451         annotate_field (5);
6452         if (!header_of_multiple)
6453           print_breakpoint_location (b, loc);
6454         if (b->loc)
6455           *last_loc = b->loc;
6456         break;
6457       }
6458
6459
6460   if (loc != NULL && !header_of_multiple)
6461     {
6462       struct inferior *inf;
6463       VEC(int) *inf_num = NULL;
6464       int mi_only = 1;
6465
6466       ALL_INFERIORS (inf)
6467         {
6468           if (inf->pspace == loc->pspace)
6469             VEC_safe_push (int, inf_num, inf->num);
6470         }
6471
6472         /* For backward compatibility, don't display inferiors in CLI unless
6473            there are several.  Always display for MI. */
6474         if (allflag
6475             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6476                 && (number_of_program_spaces () > 1
6477                     || number_of_inferiors () > 1)
6478                 /* LOC is for existing B, it cannot be in
6479                    moribund_locations and thus having NULL OWNER.  */
6480                 && loc->owner->type != bp_catchpoint))
6481         mi_only = 0;
6482       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6483       VEC_free (int, inf_num);
6484     }
6485
6486   if (!part_of_multiple)
6487     {
6488       if (b->thread != -1)
6489         {
6490           /* FIXME: This seems to be redundant and lost here; see the
6491              "stop only in" line a little further down.  */
6492           uiout->text (" thread ");
6493           uiout->field_int ("thread", b->thread);
6494         }
6495       else if (b->task != 0)
6496         {
6497           uiout->text (" task ");
6498           uiout->field_int ("task", b->task);
6499         }
6500     }
6501
6502   uiout->text ("\n");
6503
6504   if (!part_of_multiple)
6505     b->ops->print_one_detail (b, uiout);
6506
6507   if (part_of_multiple && frame_id_p (b->frame_id))
6508     {
6509       annotate_field (6);
6510       uiout->text ("\tstop only in stack frame at ");
6511       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6512          the frame ID.  */
6513       uiout->field_core_addr ("frame",
6514                               b->gdbarch, b->frame_id.stack_addr);
6515       uiout->text ("\n");
6516     }
6517   
6518   if (!part_of_multiple && b->cond_string)
6519     {
6520       annotate_field (7);
6521       if (is_tracepoint (b))
6522         uiout->text ("\ttrace only if ");
6523       else
6524         uiout->text ("\tstop only if ");
6525       uiout->field_string ("cond", b->cond_string);
6526
6527       /* Print whether the target is doing the breakpoint's condition
6528          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6529       if (is_breakpoint (b)
6530           && breakpoint_condition_evaluation_mode ()
6531           == condition_evaluation_target)
6532         {
6533           uiout->text (" (");
6534           uiout->field_string ("evaluated-by",
6535                                bp_condition_evaluator (b));
6536           uiout->text (" evals)");
6537         }
6538       uiout->text ("\n");
6539     }
6540
6541   if (!part_of_multiple && b->thread != -1)
6542     {
6543       /* FIXME should make an annotation for this.  */
6544       uiout->text ("\tstop only in thread ");
6545       if (uiout->is_mi_like_p ())
6546         uiout->field_int ("thread", b->thread);
6547       else
6548         {
6549           struct thread_info *thr = find_thread_global_id (b->thread);
6550
6551           uiout->field_string ("thread", print_thread_id (thr));
6552         }
6553       uiout->text ("\n");
6554     }
6555   
6556   if (!part_of_multiple)
6557     {
6558       if (b->hit_count)
6559         {
6560           /* FIXME should make an annotation for this.  */
6561           if (is_catchpoint (b))
6562             uiout->text ("\tcatchpoint");
6563           else if (is_tracepoint (b))
6564             uiout->text ("\ttracepoint");
6565           else
6566             uiout->text ("\tbreakpoint");
6567           uiout->text (" already hit ");
6568           uiout->field_int ("times", b->hit_count);
6569           if (b->hit_count == 1)
6570             uiout->text (" time\n");
6571           else
6572             uiout->text (" times\n");
6573         }
6574       else
6575         {
6576           /* Output the count also if it is zero, but only if this is mi.  */
6577           if (uiout->is_mi_like_p ())
6578             uiout->field_int ("times", b->hit_count);
6579         }
6580     }
6581
6582   if (!part_of_multiple && b->ignore_count)
6583     {
6584       annotate_field (8);
6585       uiout->text ("\tignore next ");
6586       uiout->field_int ("ignore", b->ignore_count);
6587       uiout->text (" hits\n");
6588     }
6589
6590   /* Note that an enable count of 1 corresponds to "enable once"
6591      behavior, which is reported by the combination of enablement and
6592      disposition, so we don't need to mention it here.  */
6593   if (!part_of_multiple && b->enable_count > 1)
6594     {
6595       annotate_field (8);
6596       uiout->text ("\tdisable after ");
6597       /* Tweak the wording to clarify that ignore and enable counts
6598          are distinct, and have additive effect.  */
6599       if (b->ignore_count)
6600         uiout->text ("additional ");
6601       else
6602         uiout->text ("next ");
6603       uiout->field_int ("enable", b->enable_count);
6604       uiout->text (" hits\n");
6605     }
6606
6607   if (!part_of_multiple && is_tracepoint (b))
6608     {
6609       struct tracepoint *tp = (struct tracepoint *) b;
6610
6611       if (tp->traceframe_usage)
6612         {
6613           uiout->text ("\ttrace buffer usage ");
6614           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6615           uiout->text (" bytes\n");
6616         }
6617     }
6618
6619   l = b->commands ? b->commands->commands : NULL;
6620   if (!part_of_multiple && l)
6621     {
6622       struct cleanup *script_chain;
6623
6624       annotate_field (9);
6625       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6626       print_command_lines (uiout, l, 4);
6627       do_cleanups (script_chain);
6628     }
6629
6630   if (is_tracepoint (b))
6631     {
6632       struct tracepoint *t = (struct tracepoint *) b;
6633
6634       if (!part_of_multiple && t->pass_count)
6635         {
6636           annotate_field (10);
6637           uiout->text ("\tpass count ");
6638           uiout->field_int ("pass", t->pass_count);
6639           uiout->text (" \n");
6640         }
6641
6642       /* Don't display it when tracepoint or tracepoint location is
6643          pending.   */
6644       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6645         {
6646           annotate_field (11);
6647
6648           if (uiout->is_mi_like_p ())
6649             uiout->field_string ("installed",
6650                                  loc->inserted ? "y" : "n");
6651           else
6652             {
6653               if (loc->inserted)
6654                 uiout->text ("\t");
6655               else
6656                 uiout->text ("\tnot ");
6657               uiout->text ("installed on target\n");
6658             }
6659         }
6660     }
6661
6662   if (uiout->is_mi_like_p () && !part_of_multiple)
6663     {
6664       if (is_watchpoint (b))
6665         {
6666           struct watchpoint *w = (struct watchpoint *) b;
6667
6668           uiout->field_string ("original-location", w->exp_string);
6669         }
6670       else if (b->location != NULL
6671                && event_location_to_string (b->location.get ()) != NULL)
6672         uiout->field_string ("original-location",
6673                              event_location_to_string (b->location.get ()));
6674     }
6675 }
6676
6677 static void
6678 print_one_breakpoint (struct breakpoint *b,
6679                       struct bp_location **last_loc, 
6680                       int allflag)
6681 {
6682   struct cleanup *bkpt_chain;
6683   struct ui_out *uiout = current_uiout;
6684
6685   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6686
6687   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6688   do_cleanups (bkpt_chain);
6689
6690   /* If this breakpoint has custom print function,
6691      it's already printed.  Otherwise, print individual
6692      locations, if any.  */
6693   if (b->ops == NULL || b->ops->print_one == NULL)
6694     {
6695       /* If breakpoint has a single location that is disabled, we
6696          print it as if it had several locations, since otherwise it's
6697          hard to represent "breakpoint enabled, location disabled"
6698          situation.
6699
6700          Note that while hardware watchpoints have several locations
6701          internally, that's not a property exposed to user.  */
6702       if (b->loc 
6703           && !is_hardware_watchpoint (b)
6704           && (b->loc->next || !b->loc->enabled))
6705         {
6706           struct bp_location *loc;
6707           int n = 1;
6708
6709           for (loc = b->loc; loc; loc = loc->next, ++n)
6710             {
6711               struct cleanup *inner2 =
6712                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6713               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6714               do_cleanups (inner2);
6715             }
6716         }
6717     }
6718 }
6719
6720 static int
6721 breakpoint_address_bits (struct breakpoint *b)
6722 {
6723   int print_address_bits = 0;
6724   struct bp_location *loc;
6725
6726   /* Software watchpoints that aren't watching memory don't have an
6727      address to print.  */
6728   if (is_no_memory_software_watchpoint (b))
6729     return 0;
6730
6731   for (loc = b->loc; loc; loc = loc->next)
6732     {
6733       int addr_bit;
6734
6735       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6736       if (addr_bit > print_address_bits)
6737         print_address_bits = addr_bit;
6738     }
6739
6740   return print_address_bits;
6741 }
6742
6743 struct captured_breakpoint_query_args
6744   {
6745     int bnum;
6746   };
6747
6748 static int
6749 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6750 {
6751   struct captured_breakpoint_query_args *args
6752     = (struct captured_breakpoint_query_args *) data;
6753   struct breakpoint *b;
6754   struct bp_location *dummy_loc = NULL;
6755
6756   ALL_BREAKPOINTS (b)
6757     {
6758       if (args->bnum == b->number)
6759         {
6760           print_one_breakpoint (b, &dummy_loc, 0);
6761           return GDB_RC_OK;
6762         }
6763     }
6764   return GDB_RC_NONE;
6765 }
6766
6767 enum gdb_rc
6768 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6769                       char **error_message)
6770 {
6771   struct captured_breakpoint_query_args args;
6772
6773   args.bnum = bnum;
6774   /* For the moment we don't trust print_one_breakpoint() to not throw
6775      an error.  */
6776   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6777                                  error_message, RETURN_MASK_ALL) < 0)
6778     return GDB_RC_FAIL;
6779   else
6780     return GDB_RC_OK;
6781 }
6782
6783 /* Return true if this breakpoint was set by the user, false if it is
6784    internal or momentary.  */
6785
6786 int
6787 user_breakpoint_p (struct breakpoint *b)
6788 {
6789   return b->number > 0;
6790 }
6791
6792 /* See breakpoint.h.  */
6793
6794 int
6795 pending_breakpoint_p (struct breakpoint *b)
6796 {
6797   return b->loc == NULL;
6798 }
6799
6800 /* Print information on user settable breakpoint (watchpoint, etc)
6801    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6802    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6803    FILTER is non-NULL, call it on each breakpoint and only include the
6804    ones for which it returns non-zero.  Return the total number of
6805    breakpoints listed.  */
6806
6807 static int
6808 breakpoint_1 (char *args, int allflag, 
6809               int (*filter) (const struct breakpoint *))
6810 {
6811   struct breakpoint *b;
6812   struct bp_location *last_loc = NULL;
6813   int nr_printable_breakpoints;
6814   struct cleanup *bkpttbl_chain;
6815   struct value_print_options opts;
6816   int print_address_bits = 0;
6817   int print_type_col_width = 14;
6818   struct ui_out *uiout = current_uiout;
6819
6820   get_user_print_options (&opts);
6821
6822   /* Compute the number of rows in the table, as well as the size
6823      required for address fields.  */
6824   nr_printable_breakpoints = 0;
6825   ALL_BREAKPOINTS (b)
6826     {
6827       /* If we have a filter, only list the breakpoints it accepts.  */
6828       if (filter && !filter (b))
6829         continue;
6830
6831       /* If we have an "args" string, it is a list of breakpoints to 
6832          accept.  Skip the others.  */
6833       if (args != NULL && *args != '\0')
6834         {
6835           if (allflag && parse_and_eval_long (args) != b->number)
6836             continue;
6837           if (!allflag && !number_is_in_list (args, b->number))
6838             continue;
6839         }
6840
6841       if (allflag || user_breakpoint_p (b))
6842         {
6843           int addr_bit, type_len;
6844
6845           addr_bit = breakpoint_address_bits (b);
6846           if (addr_bit > print_address_bits)
6847             print_address_bits = addr_bit;
6848
6849           type_len = strlen (bptype_string (b->type));
6850           if (type_len > print_type_col_width)
6851             print_type_col_width = type_len;
6852
6853           nr_printable_breakpoints++;
6854         }
6855     }
6856
6857   if (opts.addressprint)
6858     bkpttbl_chain 
6859       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6860                                              nr_printable_breakpoints,
6861                                              "BreakpointTable");
6862   else
6863     bkpttbl_chain 
6864       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6865                                              nr_printable_breakpoints,
6866                                              "BreakpointTable");
6867
6868   if (nr_printable_breakpoints > 0)
6869     annotate_breakpoints_headers ();
6870   if (nr_printable_breakpoints > 0)
6871     annotate_field (0);
6872   uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6873   if (nr_printable_breakpoints > 0)
6874     annotate_field (1);
6875   uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6876   if (nr_printable_breakpoints > 0)
6877     annotate_field (2);
6878   uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6879   if (nr_printable_breakpoints > 0)
6880     annotate_field (3);
6881   uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6882   if (opts.addressprint)
6883     {
6884       if (nr_printable_breakpoints > 0)
6885         annotate_field (4);
6886       if (print_address_bits <= 32)
6887         uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6888       else
6889         uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6890     }
6891   if (nr_printable_breakpoints > 0)
6892     annotate_field (5);
6893   uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6894   uiout->table_body ();
6895   if (nr_printable_breakpoints > 0)
6896     annotate_breakpoints_table ();
6897
6898   ALL_BREAKPOINTS (b)
6899     {
6900       QUIT;
6901       /* If we have a filter, only list the breakpoints it accepts.  */
6902       if (filter && !filter (b))
6903         continue;
6904
6905       /* If we have an "args" string, it is a list of breakpoints to 
6906          accept.  Skip the others.  */
6907
6908       if (args != NULL && *args != '\0')
6909         {
6910           if (allflag)  /* maintenance info breakpoint */
6911             {
6912               if (parse_and_eval_long (args) != b->number)
6913                 continue;
6914             }
6915           else          /* all others */
6916             {
6917               if (!number_is_in_list (args, b->number))
6918                 continue;
6919             }
6920         }
6921       /* We only print out user settable breakpoints unless the
6922          allflag is set.  */
6923       if (allflag || user_breakpoint_p (b))
6924         print_one_breakpoint (b, &last_loc, allflag);
6925     }
6926
6927   do_cleanups (bkpttbl_chain);
6928
6929   if (nr_printable_breakpoints == 0)
6930     {
6931       /* If there's a filter, let the caller decide how to report
6932          empty list.  */
6933       if (!filter)
6934         {
6935           if (args == NULL || *args == '\0')
6936             uiout->message ("No breakpoints or watchpoints.\n");
6937           else
6938             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6939                             args);
6940         }
6941     }
6942   else
6943     {
6944       if (last_loc && !server_command)
6945         set_next_address (last_loc->gdbarch, last_loc->address);
6946     }
6947
6948   /* FIXME?  Should this be moved up so that it is only called when
6949      there have been breakpoints? */
6950   annotate_breakpoints_table_end ();
6951
6952   return nr_printable_breakpoints;
6953 }
6954
6955 /* Display the value of default-collect in a way that is generally
6956    compatible with the breakpoint list.  */
6957
6958 static void
6959 default_collect_info (void)
6960 {
6961   struct ui_out *uiout = current_uiout;
6962
6963   /* If it has no value (which is frequently the case), say nothing; a
6964      message like "No default-collect." gets in user's face when it's
6965      not wanted.  */
6966   if (!*default_collect)
6967     return;
6968
6969   /* The following phrase lines up nicely with per-tracepoint collect
6970      actions.  */
6971   uiout->text ("default collect ");
6972   uiout->field_string ("default-collect", default_collect);
6973   uiout->text (" \n");
6974 }
6975   
6976 static void
6977 breakpoints_info (char *args, int from_tty)
6978 {
6979   breakpoint_1 (args, 0, NULL);
6980
6981   default_collect_info ();
6982 }
6983
6984 static void
6985 watchpoints_info (char *args, int from_tty)
6986 {
6987   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6988   struct ui_out *uiout = current_uiout;
6989
6990   if (num_printed == 0)
6991     {
6992       if (args == NULL || *args == '\0')
6993         uiout->message ("No watchpoints.\n");
6994       else
6995         uiout->message ("No watchpoint matching '%s'.\n", args);
6996     }
6997 }
6998
6999 static void
7000 maintenance_info_breakpoints (char *args, int from_tty)
7001 {
7002   breakpoint_1 (args, 1, NULL);
7003
7004   default_collect_info ();
7005 }
7006
7007 static int
7008 breakpoint_has_pc (struct breakpoint *b,
7009                    struct program_space *pspace,
7010                    CORE_ADDR pc, struct obj_section *section)
7011 {
7012   struct bp_location *bl = b->loc;
7013
7014   for (; bl; bl = bl->next)
7015     {
7016       if (bl->pspace == pspace
7017           && bl->address == pc
7018           && (!overlay_debugging || bl->section == section))
7019         return 1;         
7020     }
7021   return 0;
7022 }
7023
7024 /* Print a message describing any user-breakpoints set at PC.  This
7025    concerns with logical breakpoints, so we match program spaces, not
7026    address spaces.  */
7027
7028 static void
7029 describe_other_breakpoints (struct gdbarch *gdbarch,
7030                             struct program_space *pspace, CORE_ADDR pc,
7031                             struct obj_section *section, int thread)
7032 {
7033   int others = 0;
7034   struct breakpoint *b;
7035
7036   ALL_BREAKPOINTS (b)
7037     others += (user_breakpoint_p (b)
7038                && breakpoint_has_pc (b, pspace, pc, section));
7039   if (others > 0)
7040     {
7041       if (others == 1)
7042         printf_filtered (_("Note: breakpoint "));
7043       else /* if (others == ???) */
7044         printf_filtered (_("Note: breakpoints "));
7045       ALL_BREAKPOINTS (b)
7046         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
7047           {
7048             others--;
7049             printf_filtered ("%d", b->number);
7050             if (b->thread == -1 && thread != -1)
7051               printf_filtered (" (all threads)");
7052             else if (b->thread != -1)
7053               printf_filtered (" (thread %d)", b->thread);
7054             printf_filtered ("%s%s ",
7055                              ((b->enable_state == bp_disabled
7056                                || b->enable_state == bp_call_disabled)
7057                               ? " (disabled)"
7058                               : ""),
7059                              (others > 1) ? "," 
7060                              : ((others == 1) ? " and" : ""));
7061           }
7062       printf_filtered (_("also set at pc "));
7063       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
7064       printf_filtered (".\n");
7065     }
7066 }
7067 \f
7068
7069 /* Return true iff it is meaningful to use the address member of
7070    BPT locations.  For some breakpoint types, the locations' address members
7071    are irrelevant and it makes no sense to attempt to compare them to other
7072    addresses (or use them for any other purpose either).
7073
7074    More specifically, each of the following breakpoint types will
7075    always have a zero valued location address and we don't want to mark
7076    breakpoints of any of these types to be a duplicate of an actual
7077    breakpoint location at address zero:
7078
7079       bp_watchpoint
7080       bp_catchpoint
7081
7082 */
7083
7084 static int
7085 breakpoint_address_is_meaningful (struct breakpoint *bpt)
7086 {
7087   enum bptype type = bpt->type;
7088
7089   return (type != bp_watchpoint && type != bp_catchpoint);
7090 }
7091
7092 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7093    true if LOC1 and LOC2 represent the same watchpoint location.  */
7094
7095 static int
7096 watchpoint_locations_match (struct bp_location *loc1, 
7097                             struct bp_location *loc2)
7098 {
7099   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7100   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7101
7102   /* Both of them must exist.  */
7103   gdb_assert (w1 != NULL);
7104   gdb_assert (w2 != NULL);
7105
7106   /* If the target can evaluate the condition expression in hardware,
7107      then we we need to insert both watchpoints even if they are at
7108      the same place.  Otherwise the watchpoint will only trigger when
7109      the condition of whichever watchpoint was inserted evaluates to
7110      true, not giving a chance for GDB to check the condition of the
7111      other watchpoint.  */
7112   if ((w1->cond_exp
7113        && target_can_accel_watchpoint_condition (loc1->address, 
7114                                                  loc1->length,
7115                                                  loc1->watchpoint_type,
7116                                                  w1->cond_exp.get ()))
7117       || (w2->cond_exp
7118           && target_can_accel_watchpoint_condition (loc2->address, 
7119                                                     loc2->length,
7120                                                     loc2->watchpoint_type,
7121                                                     w2->cond_exp.get ())))
7122     return 0;
7123
7124   /* Note that this checks the owner's type, not the location's.  In
7125      case the target does not support read watchpoints, but does
7126      support access watchpoints, we'll have bp_read_watchpoint
7127      watchpoints with hw_access locations.  Those should be considered
7128      duplicates of hw_read locations.  The hw_read locations will
7129      become hw_access locations later.  */
7130   return (loc1->owner->type == loc2->owner->type
7131           && loc1->pspace->aspace == loc2->pspace->aspace
7132           && loc1->address == loc2->address
7133           && loc1->length == loc2->length);
7134 }
7135
7136 /* See breakpoint.h.  */
7137
7138 int
7139 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7140                           struct address_space *aspace2, CORE_ADDR addr2)
7141 {
7142   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7143            || aspace1 == aspace2)
7144           && addr1 == addr2);
7145 }
7146
7147 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7148    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
7149    matches ASPACE2.  On targets that have global breakpoints, the address
7150    space doesn't really matter.  */
7151
7152 static int
7153 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7154                                 int len1, struct address_space *aspace2,
7155                                 CORE_ADDR addr2)
7156 {
7157   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7158            || aspace1 == aspace2)
7159           && addr2 >= addr1 && addr2 < addr1 + len1);
7160 }
7161
7162 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
7163    a ranged breakpoint.  In most targets, a match happens only if ASPACE
7164    matches the breakpoint's address space.  On targets that have global
7165    breakpoints, the address space doesn't really matter.  */
7166
7167 static int
7168 breakpoint_location_address_match (struct bp_location *bl,
7169                                    struct address_space *aspace,
7170                                    CORE_ADDR addr)
7171 {
7172   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7173                                     aspace, addr)
7174           || (bl->length
7175               && breakpoint_address_match_range (bl->pspace->aspace,
7176                                                  bl->address, bl->length,
7177                                                  aspace, addr)));
7178 }
7179
7180 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7181    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
7182    match happens only if ASPACE matches the breakpoint's address
7183    space.  On targets that have global breakpoints, the address space
7184    doesn't really matter.  */
7185
7186 static int
7187 breakpoint_location_address_range_overlap (struct bp_location *bl,
7188                                            struct address_space *aspace,
7189                                            CORE_ADDR addr, int len)
7190 {
7191   if (gdbarch_has_global_breakpoints (target_gdbarch ())
7192       || bl->pspace->aspace == aspace)
7193     {
7194       int bl_len = bl->length != 0 ? bl->length : 1;
7195
7196       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7197         return 1;
7198     }
7199   return 0;
7200 }
7201
7202 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7203    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7204    true, otherwise returns false.  */
7205
7206 static int
7207 tracepoint_locations_match (struct bp_location *loc1,
7208                             struct bp_location *loc2)
7209 {
7210   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7211     /* Since tracepoint locations are never duplicated with others', tracepoint
7212        locations at the same address of different tracepoints are regarded as
7213        different locations.  */
7214     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7215   else
7216     return 0;
7217 }
7218
7219 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7220    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7221    represent the same location.  */
7222
7223 static int
7224 breakpoint_locations_match (struct bp_location *loc1, 
7225                             struct bp_location *loc2)
7226 {
7227   int hw_point1, hw_point2;
7228
7229   /* Both of them must not be in moribund_locations.  */
7230   gdb_assert (loc1->owner != NULL);
7231   gdb_assert (loc2->owner != NULL);
7232
7233   hw_point1 = is_hardware_watchpoint (loc1->owner);
7234   hw_point2 = is_hardware_watchpoint (loc2->owner);
7235
7236   if (hw_point1 != hw_point2)
7237     return 0;
7238   else if (hw_point1)
7239     return watchpoint_locations_match (loc1, loc2);
7240   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7241     return tracepoint_locations_match (loc1, loc2);
7242   else
7243     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7244     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7245                                      loc2->pspace->aspace, loc2->address)
7246             && loc1->length == loc2->length);
7247 }
7248
7249 static void
7250 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7251                                int bnum, int have_bnum)
7252 {
7253   /* The longest string possibly returned by hex_string_custom
7254      is 50 chars.  These must be at least that big for safety.  */
7255   char astr1[64];
7256   char astr2[64];
7257
7258   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7259   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7260   if (have_bnum)
7261     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7262              bnum, astr1, astr2);
7263   else
7264     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7265 }
7266
7267 /* Adjust a breakpoint's address to account for architectural
7268    constraints on breakpoint placement.  Return the adjusted address.
7269    Note: Very few targets require this kind of adjustment.  For most
7270    targets, this function is simply the identity function.  */
7271
7272 static CORE_ADDR
7273 adjust_breakpoint_address (struct gdbarch *gdbarch,
7274                            CORE_ADDR bpaddr, enum bptype bptype)
7275 {
7276   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7277     {
7278       /* Very few targets need any kind of breakpoint adjustment.  */
7279       return bpaddr;
7280     }
7281   else if (bptype == bp_watchpoint
7282            || bptype == bp_hardware_watchpoint
7283            || bptype == bp_read_watchpoint
7284            || bptype == bp_access_watchpoint
7285            || bptype == bp_catchpoint)
7286     {
7287       /* Watchpoints and the various bp_catch_* eventpoints should not
7288          have their addresses modified.  */
7289       return bpaddr;
7290     }
7291   else if (bptype == bp_single_step)
7292     {
7293       /* Single-step breakpoints should not have their addresses
7294          modified.  If there's any architectural constrain that
7295          applies to this address, then it should have already been
7296          taken into account when the breakpoint was created in the
7297          first place.  If we didn't do this, stepping through e.g.,
7298          Thumb-2 IT blocks would break.  */
7299       return bpaddr;
7300     }
7301   else
7302     {
7303       CORE_ADDR adjusted_bpaddr;
7304
7305       /* Some targets have architectural constraints on the placement
7306          of breakpoint instructions.  Obtain the adjusted address.  */
7307       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7308
7309       /* An adjusted breakpoint address can significantly alter
7310          a user's expectations.  Print a warning if an adjustment
7311          is required.  */
7312       if (adjusted_bpaddr != bpaddr)
7313         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7314
7315       return adjusted_bpaddr;
7316     }
7317 }
7318
7319 void
7320 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7321                   struct breakpoint *owner)
7322 {
7323   memset (loc, 0, sizeof (*loc));
7324
7325   gdb_assert (ops != NULL);
7326
7327   loc->ops = ops;
7328   loc->owner = owner;
7329   loc->cond_bytecode = NULL;
7330   loc->shlib_disabled = 0;
7331   loc->enabled = 1;
7332
7333   switch (owner->type)
7334     {
7335     case bp_breakpoint:
7336     case bp_single_step:
7337     case bp_until:
7338     case bp_finish:
7339     case bp_longjmp:
7340     case bp_longjmp_resume:
7341     case bp_longjmp_call_dummy:
7342     case bp_exception:
7343     case bp_exception_resume:
7344     case bp_step_resume:
7345     case bp_hp_step_resume:
7346     case bp_watchpoint_scope:
7347     case bp_call_dummy:
7348     case bp_std_terminate:
7349     case bp_shlib_event:
7350     case bp_thread_event:
7351     case bp_overlay_event:
7352     case bp_jit_event:
7353     case bp_longjmp_master:
7354     case bp_std_terminate_master:
7355     case bp_exception_master:
7356     case bp_gnu_ifunc_resolver:
7357     case bp_gnu_ifunc_resolver_return:
7358     case bp_dprintf:
7359       loc->loc_type = bp_loc_software_breakpoint;
7360       mark_breakpoint_location_modified (loc);
7361       break;
7362     case bp_hardware_breakpoint:
7363       loc->loc_type = bp_loc_hardware_breakpoint;
7364       mark_breakpoint_location_modified (loc);
7365       break;
7366     case bp_hardware_watchpoint:
7367     case bp_read_watchpoint:
7368     case bp_access_watchpoint:
7369       loc->loc_type = bp_loc_hardware_watchpoint;
7370       break;
7371     case bp_watchpoint:
7372     case bp_catchpoint:
7373     case bp_tracepoint:
7374     case bp_fast_tracepoint:
7375     case bp_static_tracepoint:
7376       loc->loc_type = bp_loc_other;
7377       break;
7378     default:
7379       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7380     }
7381
7382   loc->refc = 1;
7383 }
7384
7385 /* Allocate a struct bp_location.  */
7386
7387 static struct bp_location *
7388 allocate_bp_location (struct breakpoint *bpt)
7389 {
7390   return bpt->ops->allocate_location (bpt);
7391 }
7392
7393 static void
7394 free_bp_location (struct bp_location *loc)
7395 {
7396   loc->ops->dtor (loc);
7397   delete loc;
7398 }
7399
7400 /* Increment reference count.  */
7401
7402 static void
7403 incref_bp_location (struct bp_location *bl)
7404 {
7405   ++bl->refc;
7406 }
7407
7408 /* Decrement reference count.  If the reference count reaches 0,
7409    destroy the bp_location.  Sets *BLP to NULL.  */
7410
7411 static void
7412 decref_bp_location (struct bp_location **blp)
7413 {
7414   gdb_assert ((*blp)->refc > 0);
7415
7416   if (--(*blp)->refc == 0)
7417     free_bp_location (*blp);
7418   *blp = NULL;
7419 }
7420
7421 /* Add breakpoint B at the end of the global breakpoint chain.  */
7422
7423 static void
7424 add_to_breakpoint_chain (struct breakpoint *b)
7425 {
7426   struct breakpoint *b1;
7427
7428   /* Add this breakpoint to the end of the chain so that a list of
7429      breakpoints will come out in order of increasing numbers.  */
7430
7431   b1 = breakpoint_chain;
7432   if (b1 == 0)
7433     breakpoint_chain = b;
7434   else
7435     {
7436       while (b1->next)
7437         b1 = b1->next;
7438       b1->next = b;
7439     }
7440 }
7441
7442 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7443
7444 static void
7445 init_raw_breakpoint_without_location (struct breakpoint *b,
7446                                       struct gdbarch *gdbarch,
7447                                       enum bptype bptype,
7448                                       const struct breakpoint_ops *ops)
7449 {
7450   memset (b, 0, sizeof (*b));
7451
7452   gdb_assert (ops != NULL);
7453
7454   b->ops = ops;
7455   b->type = bptype;
7456   b->gdbarch = gdbarch;
7457   b->language = current_language->la_language;
7458   b->input_radix = input_radix;
7459   b->thread = -1;
7460   b->enable_state = bp_enabled;
7461   b->next = 0;
7462   b->silent = 0;
7463   b->ignore_count = 0;
7464   b->commands = NULL;
7465   b->frame_id = null_frame_id;
7466   b->condition_not_parsed = 0;
7467   b->py_bp_object = NULL;
7468   b->related_breakpoint = b;
7469   b->location = NULL;
7470 }
7471
7472 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7473    that has type BPTYPE and has no locations as yet.  */
7474
7475 static struct breakpoint *
7476 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7477                                      enum bptype bptype,
7478                                      const struct breakpoint_ops *ops)
7479 {
7480   struct breakpoint *b = new breakpoint ();
7481
7482   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7483   add_to_breakpoint_chain (b);
7484   return b;
7485 }
7486
7487 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7488    resolutions should be made as the user specified the location explicitly
7489    enough.  */
7490
7491 static void
7492 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7493 {
7494   gdb_assert (loc->owner != NULL);
7495
7496   if (loc->owner->type == bp_breakpoint
7497       || loc->owner->type == bp_hardware_breakpoint
7498       || is_tracepoint (loc->owner))
7499     {
7500       int is_gnu_ifunc;
7501       const char *function_name;
7502       CORE_ADDR func_addr;
7503
7504       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7505                                           &func_addr, NULL, &is_gnu_ifunc);
7506
7507       if (is_gnu_ifunc && !explicit_loc)
7508         {
7509           struct breakpoint *b = loc->owner;
7510
7511           gdb_assert (loc->pspace == current_program_space);
7512           if (gnu_ifunc_resolve_name (function_name,
7513                                       &loc->requested_address))
7514             {
7515               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7516               loc->address = adjust_breakpoint_address (loc->gdbarch,
7517                                                         loc->requested_address,
7518                                                         b->type);
7519             }
7520           else if (b->type == bp_breakpoint && b->loc == loc
7521                    && loc->next == NULL && b->related_breakpoint == b)
7522             {
7523               /* Create only the whole new breakpoint of this type but do not
7524                  mess more complicated breakpoints with multiple locations.  */
7525               b->type = bp_gnu_ifunc_resolver;
7526               /* Remember the resolver's address for use by the return
7527                  breakpoint.  */
7528               loc->related_address = func_addr;
7529             }
7530         }
7531
7532       if (function_name)
7533         loc->function_name = xstrdup (function_name);
7534     }
7535 }
7536
7537 /* Attempt to determine architecture of location identified by SAL.  */
7538 struct gdbarch *
7539 get_sal_arch (struct symtab_and_line sal)
7540 {
7541   if (sal.section)
7542     return get_objfile_arch (sal.section->objfile);
7543   if (sal.symtab)
7544     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7545
7546   return NULL;
7547 }
7548
7549 /* Low level routine for partially initializing a breakpoint of type
7550    BPTYPE.  The newly created breakpoint's address, section, source
7551    file name, and line number are provided by SAL.
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.  */
7556
7557 static void
7558 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7559                      struct symtab_and_line sal, enum bptype bptype,
7560                      const struct breakpoint_ops *ops)
7561 {
7562   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7563
7564   add_location_to_breakpoint (b, &sal);
7565
7566   if (bptype != bp_catchpoint)
7567     gdb_assert (sal.pspace != NULL);
7568
7569   /* Store the program space that was used to set the breakpoint,
7570      except for ordinary breakpoints, which are independent of the
7571      program space.  */
7572   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7573     b->pspace = sal.pspace;
7574 }
7575
7576 /* set_raw_breakpoint is a low level routine for allocating and
7577    partially initializing a breakpoint of type BPTYPE.  The newly
7578    created breakpoint's address, section, source file name, and line
7579    number are provided by SAL.  The newly created and partially
7580    initialized breakpoint is added to the breakpoint chain and
7581    is also returned as the value of this function.
7582
7583    It is expected that the caller will complete the initialization of
7584    the newly created breakpoint struct as well as output any status
7585    information regarding the creation of a new breakpoint.  In
7586    particular, set_raw_breakpoint does NOT set the breakpoint
7587    number!  Care should be taken to not allow an error to occur
7588    prior to completing the initialization of the breakpoint.  If this
7589    should happen, a bogus breakpoint will be left on the chain.  */
7590
7591 struct breakpoint *
7592 set_raw_breakpoint (struct gdbarch *gdbarch,
7593                     struct symtab_and_line sal, enum bptype bptype,
7594                     const struct breakpoint_ops *ops)
7595 {
7596   struct breakpoint *b = new breakpoint ();
7597
7598   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7599   add_to_breakpoint_chain (b);
7600   return b;
7601 }
7602
7603 /* Call this routine when stepping and nexting to enable a breakpoint
7604    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7605    initiated the operation.  */
7606
7607 void
7608 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7609 {
7610   struct breakpoint *b, *b_tmp;
7611   int thread = tp->global_num;
7612
7613   /* To avoid having to rescan all objfile symbols at every step,
7614      we maintain a list of continually-inserted but always disabled
7615      longjmp "master" breakpoints.  Here, we simply create momentary
7616      clones of those and enable them for the requested thread.  */
7617   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7618     if (b->pspace == current_program_space
7619         && (b->type == bp_longjmp_master
7620             || b->type == bp_exception_master))
7621       {
7622         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7623         struct breakpoint *clone;
7624
7625         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7626            after their removal.  */
7627         clone = momentary_breakpoint_from_master (b, type,
7628                                                   &longjmp_breakpoint_ops, 1);
7629         clone->thread = thread;
7630       }
7631
7632   tp->initiating_frame = frame;
7633 }
7634
7635 /* Delete all longjmp breakpoints from THREAD.  */
7636 void
7637 delete_longjmp_breakpoint (int thread)
7638 {
7639   struct breakpoint *b, *b_tmp;
7640
7641   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7642     if (b->type == bp_longjmp || b->type == bp_exception)
7643       {
7644         if (b->thread == thread)
7645           delete_breakpoint (b);
7646       }
7647 }
7648
7649 void
7650 delete_longjmp_breakpoint_at_next_stop (int thread)
7651 {
7652   struct breakpoint *b, *b_tmp;
7653
7654   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7655     if (b->type == bp_longjmp || b->type == bp_exception)
7656       {
7657         if (b->thread == thread)
7658           b->disposition = disp_del_at_next_stop;
7659       }
7660 }
7661
7662 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7663    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7664    pointer to any of them.  Return NULL if this system cannot place longjmp
7665    breakpoints.  */
7666
7667 struct breakpoint *
7668 set_longjmp_breakpoint_for_call_dummy (void)
7669 {
7670   struct breakpoint *b, *retval = NULL;
7671
7672   ALL_BREAKPOINTS (b)
7673     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7674       {
7675         struct breakpoint *new_b;
7676
7677         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7678                                                   &momentary_breakpoint_ops,
7679                                                   1);
7680         new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7681
7682         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7683
7684         gdb_assert (new_b->related_breakpoint == new_b);
7685         if (retval == NULL)
7686           retval = new_b;
7687         new_b->related_breakpoint = retval;
7688         while (retval->related_breakpoint != new_b->related_breakpoint)
7689           retval = retval->related_breakpoint;
7690         retval->related_breakpoint = new_b;
7691       }
7692
7693   return retval;
7694 }
7695
7696 /* Verify all existing dummy frames and their associated breakpoints for
7697    TP.  Remove those which can no longer be found in the current frame
7698    stack.
7699
7700    You should call this function only at places where it is safe to currently
7701    unwind the whole stack.  Failed stack unwind would discard live dummy
7702    frames.  */
7703
7704 void
7705 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7706 {
7707   struct breakpoint *b, *b_tmp;
7708
7709   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7710     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7711       {
7712         struct breakpoint *dummy_b = b->related_breakpoint;
7713
7714         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7715           dummy_b = dummy_b->related_breakpoint;
7716         if (dummy_b->type != bp_call_dummy
7717             || frame_find_by_id (dummy_b->frame_id) != NULL)
7718           continue;
7719         
7720         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7721
7722         while (b->related_breakpoint != b)
7723           {
7724             if (b_tmp == b->related_breakpoint)
7725               b_tmp = b->related_breakpoint->next;
7726             delete_breakpoint (b->related_breakpoint);
7727           }
7728         delete_breakpoint (b);
7729       }
7730 }
7731
7732 void
7733 enable_overlay_breakpoints (void)
7734 {
7735   struct breakpoint *b;
7736
7737   ALL_BREAKPOINTS (b)
7738     if (b->type == bp_overlay_event)
7739     {
7740       b->enable_state = bp_enabled;
7741       update_global_location_list (UGLL_MAY_INSERT);
7742       overlay_events_enabled = 1;
7743     }
7744 }
7745
7746 void
7747 disable_overlay_breakpoints (void)
7748 {
7749   struct breakpoint *b;
7750
7751   ALL_BREAKPOINTS (b)
7752     if (b->type == bp_overlay_event)
7753     {
7754       b->enable_state = bp_disabled;
7755       update_global_location_list (UGLL_DONT_INSERT);
7756       overlay_events_enabled = 0;
7757     }
7758 }
7759
7760 /* Set an active std::terminate breakpoint for each std::terminate
7761    master breakpoint.  */
7762 void
7763 set_std_terminate_breakpoint (void)
7764 {
7765   struct breakpoint *b, *b_tmp;
7766
7767   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7768     if (b->pspace == current_program_space
7769         && b->type == bp_std_terminate_master)
7770       {
7771         momentary_breakpoint_from_master (b, bp_std_terminate,
7772                                           &momentary_breakpoint_ops, 1);
7773       }
7774 }
7775
7776 /* Delete all the std::terminate breakpoints.  */
7777 void
7778 delete_std_terminate_breakpoint (void)
7779 {
7780   struct breakpoint *b, *b_tmp;
7781
7782   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7783     if (b->type == bp_std_terminate)
7784       delete_breakpoint (b);
7785 }
7786
7787 struct breakpoint *
7788 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7789 {
7790   struct breakpoint *b;
7791
7792   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7793                                   &internal_breakpoint_ops);
7794
7795   b->enable_state = bp_enabled;
7796   /* location has to be used or breakpoint_re_set will delete me.  */
7797   b->location = new_address_location (b->loc->address, NULL, 0);
7798
7799   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7800
7801   return b;
7802 }
7803
7804 struct lang_and_radix
7805   {
7806     enum language lang;
7807     int radix;
7808   };
7809
7810 /* Create a breakpoint for JIT code registration and unregistration.  */
7811
7812 struct breakpoint *
7813 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7814 {
7815   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7816                                      &internal_breakpoint_ops);
7817 }
7818
7819 /* Remove JIT code registration and unregistration breakpoint(s).  */
7820
7821 void
7822 remove_jit_event_breakpoints (void)
7823 {
7824   struct breakpoint *b, *b_tmp;
7825
7826   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7827     if (b->type == bp_jit_event
7828         && b->loc->pspace == current_program_space)
7829       delete_breakpoint (b);
7830 }
7831
7832 void
7833 remove_solib_event_breakpoints (void)
7834 {
7835   struct breakpoint *b, *b_tmp;
7836
7837   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7838     if (b->type == bp_shlib_event
7839         && b->loc->pspace == current_program_space)
7840       delete_breakpoint (b);
7841 }
7842
7843 /* See breakpoint.h.  */
7844
7845 void
7846 remove_solib_event_breakpoints_at_next_stop (void)
7847 {
7848   struct breakpoint *b, *b_tmp;
7849
7850   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7851     if (b->type == bp_shlib_event
7852         && b->loc->pspace == current_program_space)
7853       b->disposition = disp_del_at_next_stop;
7854 }
7855
7856 /* Helper for create_solib_event_breakpoint /
7857    create_and_insert_solib_event_breakpoint.  Allows specifying which
7858    INSERT_MODE to pass through to update_global_location_list.  */
7859
7860 static struct breakpoint *
7861 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7862                                  enum ugll_insert_mode insert_mode)
7863 {
7864   struct breakpoint *b;
7865
7866   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7867                                   &internal_breakpoint_ops);
7868   update_global_location_list_nothrow (insert_mode);
7869   return b;
7870 }
7871
7872 struct breakpoint *
7873 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7874 {
7875   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7876 }
7877
7878 /* See breakpoint.h.  */
7879
7880 struct breakpoint *
7881 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7882 {
7883   struct breakpoint *b;
7884
7885   /* Explicitly tell update_global_location_list to insert
7886      locations.  */
7887   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7888   if (!b->loc->inserted)
7889     {
7890       delete_breakpoint (b);
7891       return NULL;
7892     }
7893   return b;
7894 }
7895
7896 /* Disable any breakpoints that are on code in shared libraries.  Only
7897    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7898
7899 void
7900 disable_breakpoints_in_shlibs (void)
7901 {
7902   struct bp_location *loc, **locp_tmp;
7903
7904   ALL_BP_LOCATIONS (loc, locp_tmp)
7905   {
7906     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7907     struct breakpoint *b = loc->owner;
7908
7909     /* We apply the check to all breakpoints, including disabled for
7910        those with loc->duplicate set.  This is so that when breakpoint
7911        becomes enabled, or the duplicate is removed, gdb will try to
7912        insert all breakpoints.  If we don't set shlib_disabled here,
7913        we'll try to insert those breakpoints and fail.  */
7914     if (((b->type == bp_breakpoint)
7915          || (b->type == bp_jit_event)
7916          || (b->type == bp_hardware_breakpoint)
7917          || (is_tracepoint (b)))
7918         && loc->pspace == current_program_space
7919         && !loc->shlib_disabled
7920         && solib_name_from_address (loc->pspace, loc->address)
7921         )
7922       {
7923         loc->shlib_disabled = 1;
7924       }
7925   }
7926 }
7927
7928 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7929    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7930    disabled ones can just stay disabled.  */
7931
7932 static void
7933 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7934 {
7935   struct bp_location *loc, **locp_tmp;
7936   int disabled_shlib_breaks = 0;
7937
7938   ALL_BP_LOCATIONS (loc, locp_tmp)
7939   {
7940     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7941     struct breakpoint *b = loc->owner;
7942
7943     if (solib->pspace == loc->pspace
7944         && !loc->shlib_disabled
7945         && (((b->type == bp_breakpoint
7946               || b->type == bp_jit_event
7947               || b->type == bp_hardware_breakpoint)
7948              && (loc->loc_type == bp_loc_hardware_breakpoint
7949                  || loc->loc_type == bp_loc_software_breakpoint))
7950             || is_tracepoint (b))
7951         && solib_contains_address_p (solib, loc->address))
7952       {
7953         loc->shlib_disabled = 1;
7954         /* At this point, we cannot rely on remove_breakpoint
7955            succeeding so we must mark the breakpoint as not inserted
7956            to prevent future errors occurring in remove_breakpoints.  */
7957         loc->inserted = 0;
7958
7959         /* This may cause duplicate notifications for the same breakpoint.  */
7960         observer_notify_breakpoint_modified (b);
7961
7962         if (!disabled_shlib_breaks)
7963           {
7964             target_terminal_ours_for_output ();
7965             warning (_("Temporarily disabling breakpoints "
7966                        "for unloaded shared library \"%s\""),
7967                      solib->so_name);
7968           }
7969         disabled_shlib_breaks = 1;
7970       }
7971   }
7972 }
7973
7974 /* Disable any breakpoints and tracepoints in OBJFILE upon
7975    notification of free_objfile.  Only apply to enabled breakpoints,
7976    disabled ones can just stay disabled.  */
7977
7978 static void
7979 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7980 {
7981   struct breakpoint *b;
7982
7983   if (objfile == NULL)
7984     return;
7985
7986   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7987      managed by the user with add-symbol-file/remove-symbol-file.
7988      Similarly to how breakpoints in shared libraries are handled in
7989      response to "nosharedlibrary", mark breakpoints in such modules
7990      shlib_disabled so they end up uninserted on the next global
7991      location list update.  Shared libraries not loaded by the user
7992      aren't handled here -- they're already handled in
7993      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7994      solib_unloaded observer.  We skip objfiles that are not
7995      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7996      main objfile).  */
7997   if ((objfile->flags & OBJF_SHARED) == 0
7998       || (objfile->flags & OBJF_USERLOADED) == 0)
7999     return;
8000
8001   ALL_BREAKPOINTS (b)
8002     {
8003       struct bp_location *loc;
8004       int bp_modified = 0;
8005
8006       if (!is_breakpoint (b) && !is_tracepoint (b))
8007         continue;
8008
8009       for (loc = b->loc; loc != NULL; loc = loc->next)
8010         {
8011           CORE_ADDR loc_addr = loc->address;
8012
8013           if (loc->loc_type != bp_loc_hardware_breakpoint
8014               && loc->loc_type != bp_loc_software_breakpoint)
8015             continue;
8016
8017           if (loc->shlib_disabled != 0)
8018             continue;
8019
8020           if (objfile->pspace != loc->pspace)
8021             continue;
8022
8023           if (loc->loc_type != bp_loc_hardware_breakpoint
8024               && loc->loc_type != bp_loc_software_breakpoint)
8025             continue;
8026
8027           if (is_addr_in_objfile (loc_addr, objfile))
8028             {
8029               loc->shlib_disabled = 1;
8030               /* At this point, we don't know whether the object was
8031                  unmapped from the inferior or not, so leave the
8032                  inserted flag alone.  We'll handle failure to
8033                  uninsert quietly, in case the object was indeed
8034                  unmapped.  */
8035
8036               mark_breakpoint_location_modified (loc);
8037
8038               bp_modified = 1;
8039             }
8040         }
8041
8042       if (bp_modified)
8043         observer_notify_breakpoint_modified (b);
8044     }
8045 }
8046
8047 /* FORK & VFORK catchpoints.  */
8048
8049 /* An instance of this type is used to represent a fork or vfork
8050    catchpoint.  It includes a "struct breakpoint" as a kind of base
8051    class; users downcast to "struct breakpoint *" when needed.  A
8052    breakpoint is really of this type iff its ops pointer points to
8053    CATCH_FORK_BREAKPOINT_OPS.  */
8054
8055 struct fork_catchpoint
8056 {
8057   /* The base class.  */
8058   struct breakpoint base;
8059
8060   /* Process id of a child process whose forking triggered this
8061      catchpoint.  This field is only valid immediately after this
8062      catchpoint has triggered.  */
8063   ptid_t forked_inferior_pid;
8064 };
8065
8066 /* Implement the "insert" breakpoint_ops method for fork
8067    catchpoints.  */
8068
8069 static int
8070 insert_catch_fork (struct bp_location *bl)
8071 {
8072   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
8073 }
8074
8075 /* Implement the "remove" breakpoint_ops method for fork
8076    catchpoints.  */
8077
8078 static int
8079 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
8080 {
8081   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
8082 }
8083
8084 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
8085    catchpoints.  */
8086
8087 static int
8088 breakpoint_hit_catch_fork (const struct bp_location *bl,
8089                            struct address_space *aspace, CORE_ADDR bp_addr,
8090                            const struct target_waitstatus *ws)
8091 {
8092   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8093
8094   if (ws->kind != TARGET_WAITKIND_FORKED)
8095     return 0;
8096
8097   c->forked_inferior_pid = ws->value.related_pid;
8098   return 1;
8099 }
8100
8101 /* Implement the "print_it" breakpoint_ops method for fork
8102    catchpoints.  */
8103
8104 static enum print_stop_action
8105 print_it_catch_fork (bpstat bs)
8106 {
8107   struct ui_out *uiout = current_uiout;
8108   struct breakpoint *b = bs->breakpoint_at;
8109   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8110
8111   annotate_catchpoint (b->number);
8112   maybe_print_thread_hit_breakpoint (uiout);
8113   if (b->disposition == disp_del)
8114     uiout->text ("Temporary catchpoint ");
8115   else
8116     uiout->text ("Catchpoint ");
8117   if (uiout->is_mi_like_p ())
8118     {
8119       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
8120       uiout->field_string ("disp", bpdisp_text (b->disposition));
8121     }
8122   uiout->field_int ("bkptno", b->number);
8123   uiout->text (" (forked process ");
8124   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8125   uiout->text ("), ");
8126   return PRINT_SRC_AND_LOC;
8127 }
8128
8129 /* Implement the "print_one" breakpoint_ops method for fork
8130    catchpoints.  */
8131
8132 static void
8133 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8134 {
8135   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8136   struct value_print_options opts;
8137   struct ui_out *uiout = current_uiout;
8138
8139   get_user_print_options (&opts);
8140
8141   /* Field 4, the address, is omitted (which makes the columns not
8142      line up too nicely with the headers, but the effect is relatively
8143      readable).  */
8144   if (opts.addressprint)
8145     uiout->field_skip ("addr");
8146   annotate_field (5);
8147   uiout->text ("fork");
8148   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8149     {
8150       uiout->text (", process ");
8151       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8152       uiout->spaces (1);
8153     }
8154
8155   if (uiout->is_mi_like_p ())
8156     uiout->field_string ("catch-type", "fork");
8157 }
8158
8159 /* Implement the "print_mention" breakpoint_ops method for fork
8160    catchpoints.  */
8161
8162 static void
8163 print_mention_catch_fork (struct breakpoint *b)
8164 {
8165   printf_filtered (_("Catchpoint %d (fork)"), b->number);
8166 }
8167
8168 /* Implement the "print_recreate" breakpoint_ops method for fork
8169    catchpoints.  */
8170
8171 static void
8172 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8173 {
8174   fprintf_unfiltered (fp, "catch fork");
8175   print_recreate_thread (b, fp);
8176 }
8177
8178 /* The breakpoint_ops structure to be used in fork catchpoints.  */
8179
8180 static struct breakpoint_ops catch_fork_breakpoint_ops;
8181
8182 /* Implement the "insert" breakpoint_ops method for vfork
8183    catchpoints.  */
8184
8185 static int
8186 insert_catch_vfork (struct bp_location *bl)
8187 {
8188   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8189 }
8190
8191 /* Implement the "remove" breakpoint_ops method for vfork
8192    catchpoints.  */
8193
8194 static int
8195 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
8196 {
8197   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8198 }
8199
8200 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8201    catchpoints.  */
8202
8203 static int
8204 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8205                             struct address_space *aspace, CORE_ADDR bp_addr,
8206                             const struct target_waitstatus *ws)
8207 {
8208   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8209
8210   if (ws->kind != TARGET_WAITKIND_VFORKED)
8211     return 0;
8212
8213   c->forked_inferior_pid = ws->value.related_pid;
8214   return 1;
8215 }
8216
8217 /* Implement the "print_it" breakpoint_ops method for vfork
8218    catchpoints.  */
8219
8220 static enum print_stop_action
8221 print_it_catch_vfork (bpstat bs)
8222 {
8223   struct ui_out *uiout = current_uiout;
8224   struct breakpoint *b = bs->breakpoint_at;
8225   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8226
8227   annotate_catchpoint (b->number);
8228   maybe_print_thread_hit_breakpoint (uiout);
8229   if (b->disposition == disp_del)
8230     uiout->text ("Temporary catchpoint ");
8231   else
8232     uiout->text ("Catchpoint ");
8233   if (uiout->is_mi_like_p ())
8234     {
8235       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
8236       uiout->field_string ("disp", bpdisp_text (b->disposition));
8237     }
8238   uiout->field_int ("bkptno", b->number);
8239   uiout->text (" (vforked process ");
8240   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8241   uiout->text ("), ");
8242   return PRINT_SRC_AND_LOC;
8243 }
8244
8245 /* Implement the "print_one" breakpoint_ops method for vfork
8246    catchpoints.  */
8247
8248 static void
8249 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8250 {
8251   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8252   struct value_print_options opts;
8253   struct ui_out *uiout = current_uiout;
8254
8255   get_user_print_options (&opts);
8256   /* Field 4, the address, is omitted (which makes the columns not
8257      line up too nicely with the headers, but the effect is relatively
8258      readable).  */
8259   if (opts.addressprint)
8260     uiout->field_skip ("addr");
8261   annotate_field (5);
8262   uiout->text ("vfork");
8263   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8264     {
8265       uiout->text (", process ");
8266       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8267       uiout->spaces (1);
8268     }
8269
8270   if (uiout->is_mi_like_p ())
8271     uiout->field_string ("catch-type", "vfork");
8272 }
8273
8274 /* Implement the "print_mention" breakpoint_ops method for vfork
8275    catchpoints.  */
8276
8277 static void
8278 print_mention_catch_vfork (struct breakpoint *b)
8279 {
8280   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8281 }
8282
8283 /* Implement the "print_recreate" breakpoint_ops method for vfork
8284    catchpoints.  */
8285
8286 static void
8287 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8288 {
8289   fprintf_unfiltered (fp, "catch vfork");
8290   print_recreate_thread (b, fp);
8291 }
8292
8293 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8294
8295 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8296
8297 /* An instance of this type is used to represent an solib catchpoint.
8298    It includes a "struct breakpoint" as a kind of base class; users
8299    downcast to "struct breakpoint *" when needed.  A breakpoint is
8300    really of this type iff its ops pointer points to
8301    CATCH_SOLIB_BREAKPOINT_OPS.  */
8302
8303 struct solib_catchpoint
8304 {
8305   /* The base class.  */
8306   struct breakpoint base;
8307
8308   /* True for "catch load", false for "catch unload".  */
8309   unsigned char is_load;
8310
8311   /* Regular expression to match, if any.  COMPILED is only valid when
8312      REGEX is non-NULL.  */
8313   char *regex;
8314   regex_t compiled;
8315 };
8316
8317 static void
8318 dtor_catch_solib (struct breakpoint *b)
8319 {
8320   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8321
8322   if (self->regex)
8323     regfree (&self->compiled);
8324   xfree (self->regex);
8325
8326   base_breakpoint_ops.dtor (b);
8327 }
8328
8329 static int
8330 insert_catch_solib (struct bp_location *ignore)
8331 {
8332   return 0;
8333 }
8334
8335 static int
8336 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8337 {
8338   return 0;
8339 }
8340
8341 static int
8342 breakpoint_hit_catch_solib (const struct bp_location *bl,
8343                             struct address_space *aspace,
8344                             CORE_ADDR bp_addr,
8345                             const struct target_waitstatus *ws)
8346 {
8347   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8348   struct breakpoint *other;
8349
8350   if (ws->kind == TARGET_WAITKIND_LOADED)
8351     return 1;
8352
8353   ALL_BREAKPOINTS (other)
8354   {
8355     struct bp_location *other_bl;
8356
8357     if (other == bl->owner)
8358       continue;
8359
8360     if (other->type != bp_shlib_event)
8361       continue;
8362
8363     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8364       continue;
8365
8366     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8367       {
8368         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8369           return 1;
8370       }
8371   }
8372
8373   return 0;
8374 }
8375
8376 static void
8377 check_status_catch_solib (struct bpstats *bs)
8378 {
8379   struct solib_catchpoint *self
8380     = (struct solib_catchpoint *) bs->breakpoint_at;
8381   int ix;
8382
8383   if (self->is_load)
8384     {
8385       struct so_list *iter;
8386
8387       for (ix = 0;
8388            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8389                         ix, iter);
8390            ++ix)
8391         {
8392           if (!self->regex
8393               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8394             return;
8395         }
8396     }
8397   else
8398     {
8399       char *iter;
8400
8401       for (ix = 0;
8402            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8403                         ix, iter);
8404            ++ix)
8405         {
8406           if (!self->regex
8407               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8408             return;
8409         }
8410     }
8411
8412   bs->stop = 0;
8413   bs->print_it = print_it_noop;
8414 }
8415
8416 static enum print_stop_action
8417 print_it_catch_solib (bpstat bs)
8418 {
8419   struct breakpoint *b = bs->breakpoint_at;
8420   struct ui_out *uiout = current_uiout;
8421
8422   annotate_catchpoint (b->number);
8423   maybe_print_thread_hit_breakpoint (uiout);
8424   if (b->disposition == disp_del)
8425     uiout->text ("Temporary catchpoint ");
8426   else
8427     uiout->text ("Catchpoint ");
8428   uiout->field_int ("bkptno", b->number);
8429   uiout->text ("\n");
8430   if (uiout->is_mi_like_p ())
8431     uiout->field_string ("disp", bpdisp_text (b->disposition));
8432   print_solib_event (1);
8433   return PRINT_SRC_AND_LOC;
8434 }
8435
8436 static void
8437 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8438 {
8439   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8440   struct value_print_options opts;
8441   struct ui_out *uiout = current_uiout;
8442   char *msg;
8443
8444   get_user_print_options (&opts);
8445   /* Field 4, the address, is omitted (which makes the columns not
8446      line up too nicely with the headers, but the effect is relatively
8447      readable).  */
8448   if (opts.addressprint)
8449     {
8450       annotate_field (4);
8451       uiout->field_skip ("addr");
8452     }
8453
8454   annotate_field (5);
8455   if (self->is_load)
8456     {
8457       if (self->regex)
8458         msg = xstrprintf (_("load of library matching %s"), self->regex);
8459       else
8460         msg = xstrdup (_("load of library"));
8461     }
8462   else
8463     {
8464       if (self->regex)
8465         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8466       else
8467         msg = xstrdup (_("unload of library"));
8468     }
8469   uiout->field_string ("what", msg);
8470   xfree (msg);
8471
8472   if (uiout->is_mi_like_p ())
8473     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8474 }
8475
8476 static void
8477 print_mention_catch_solib (struct breakpoint *b)
8478 {
8479   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8480
8481   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8482                    self->is_load ? "load" : "unload");
8483 }
8484
8485 static void
8486 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8487 {
8488   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8489
8490   fprintf_unfiltered (fp, "%s %s",
8491                       b->disposition == disp_del ? "tcatch" : "catch",
8492                       self->is_load ? "load" : "unload");
8493   if (self->regex)
8494     fprintf_unfiltered (fp, " %s", self->regex);
8495   fprintf_unfiltered (fp, "\n");
8496 }
8497
8498 static struct breakpoint_ops catch_solib_breakpoint_ops;
8499
8500 /* Shared helper function (MI and CLI) for creating and installing
8501    a shared object event catchpoint.  If IS_LOAD is non-zero then
8502    the events to be caught are load events, otherwise they are
8503    unload events.  If IS_TEMP is non-zero the catchpoint is a
8504    temporary one.  If ENABLED is non-zero the catchpoint is
8505    created in an enabled state.  */
8506
8507 void
8508 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8509 {
8510   struct solib_catchpoint *c;
8511   struct gdbarch *gdbarch = get_current_arch ();
8512   struct cleanup *cleanup;
8513
8514   if (!arg)
8515     arg = "";
8516   arg = skip_spaces_const (arg);
8517
8518   c = new solib_catchpoint ();
8519   cleanup = make_cleanup (xfree, c);
8520
8521   if (*arg != '\0')
8522     {
8523       int errcode;
8524
8525       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8526       if (errcode != 0)
8527         {
8528           char *err = get_regcomp_error (errcode, &c->compiled);
8529
8530           make_cleanup (xfree, err);
8531           error (_("Invalid regexp (%s): %s"), err, arg);
8532         }
8533       c->regex = xstrdup (arg);
8534     }
8535
8536   c->is_load = is_load;
8537   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8538                    &catch_solib_breakpoint_ops);
8539
8540   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8541
8542   discard_cleanups (cleanup);
8543   install_breakpoint (0, &c->base, 1);
8544 }
8545
8546 /* A helper function that does all the work for "catch load" and
8547    "catch unload".  */
8548
8549 static void
8550 catch_load_or_unload (char *arg, int from_tty, int is_load,
8551                       struct cmd_list_element *command)
8552 {
8553   int tempflag;
8554   const int enabled = 1;
8555
8556   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8557
8558   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8559 }
8560
8561 static void
8562 catch_load_command_1 (char *arg, int from_tty,
8563                       struct cmd_list_element *command)
8564 {
8565   catch_load_or_unload (arg, from_tty, 1, command);
8566 }
8567
8568 static void
8569 catch_unload_command_1 (char *arg, int from_tty,
8570                         struct cmd_list_element *command)
8571 {
8572   catch_load_or_unload (arg, from_tty, 0, command);
8573 }
8574
8575 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8576    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8577    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8578    the breakpoint_ops structure associated to the catchpoint.  */
8579
8580 void
8581 init_catchpoint (struct breakpoint *b,
8582                  struct gdbarch *gdbarch, int tempflag,
8583                  const char *cond_string,
8584                  const struct breakpoint_ops *ops)
8585 {
8586   struct symtab_and_line sal;
8587
8588   init_sal (&sal);
8589   sal.pspace = current_program_space;
8590
8591   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8592
8593   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8594   b->disposition = tempflag ? disp_del : disp_donttouch;
8595 }
8596
8597 void
8598 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8599 {
8600   add_to_breakpoint_chain (b);
8601   set_breakpoint_number (internal, b);
8602   if (is_tracepoint (b))
8603     set_tracepoint_count (breakpoint_count);
8604   if (!internal)
8605     mention (b);
8606   observer_notify_breakpoint_created (b);
8607
8608   if (update_gll)
8609     update_global_location_list (UGLL_MAY_INSERT);
8610 }
8611
8612 static void
8613 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8614                                     int tempflag, const char *cond_string,
8615                                     const struct breakpoint_ops *ops)
8616 {
8617   struct fork_catchpoint *c = new fork_catchpoint ();
8618
8619   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8620
8621   c->forked_inferior_pid = null_ptid;
8622
8623   install_breakpoint (0, &c->base, 1);
8624 }
8625
8626 /* Exec catchpoints.  */
8627
8628 /* An instance of this type is used to represent an exec catchpoint.
8629    It includes a "struct breakpoint" as a kind of base class; users
8630    downcast to "struct breakpoint *" when needed.  A breakpoint is
8631    really of this type iff its ops pointer points to
8632    CATCH_EXEC_BREAKPOINT_OPS.  */
8633
8634 struct exec_catchpoint
8635 {
8636   /* The base class.  */
8637   struct breakpoint base;
8638
8639   /* Filename of a program whose exec triggered this catchpoint.
8640      This field is only valid immediately after this catchpoint has
8641      triggered.  */
8642   char *exec_pathname;
8643 };
8644
8645 /* Implement the "dtor" breakpoint_ops method for exec
8646    catchpoints.  */
8647
8648 static void
8649 dtor_catch_exec (struct breakpoint *b)
8650 {
8651   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8652
8653   xfree (c->exec_pathname);
8654
8655   base_breakpoint_ops.dtor (b);
8656 }
8657
8658 static int
8659 insert_catch_exec (struct bp_location *bl)
8660 {
8661   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8662 }
8663
8664 static int
8665 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8666 {
8667   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8668 }
8669
8670 static int
8671 breakpoint_hit_catch_exec (const struct bp_location *bl,
8672                            struct address_space *aspace, CORE_ADDR bp_addr,
8673                            const struct target_waitstatus *ws)
8674 {
8675   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8676
8677   if (ws->kind != TARGET_WAITKIND_EXECD)
8678     return 0;
8679
8680   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8681   return 1;
8682 }
8683
8684 static enum print_stop_action
8685 print_it_catch_exec (bpstat bs)
8686 {
8687   struct ui_out *uiout = current_uiout;
8688   struct breakpoint *b = bs->breakpoint_at;
8689   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8690
8691   annotate_catchpoint (b->number);
8692   maybe_print_thread_hit_breakpoint (uiout);
8693   if (b->disposition == disp_del)
8694     uiout->text ("Temporary catchpoint ");
8695   else
8696     uiout->text ("Catchpoint ");
8697   if (uiout->is_mi_like_p ())
8698     {
8699       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8700       uiout->field_string ("disp", bpdisp_text (b->disposition));
8701     }
8702   uiout->field_int ("bkptno", b->number);
8703   uiout->text (" (exec'd ");
8704   uiout->field_string ("new-exec", c->exec_pathname);
8705   uiout->text ("), ");
8706
8707   return PRINT_SRC_AND_LOC;
8708 }
8709
8710 static void
8711 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8712 {
8713   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8714   struct value_print_options opts;
8715   struct ui_out *uiout = current_uiout;
8716
8717   get_user_print_options (&opts);
8718
8719   /* Field 4, the address, is omitted (which makes the columns
8720      not line up too nicely with the headers, but the effect
8721      is relatively readable).  */
8722   if (opts.addressprint)
8723     uiout->field_skip ("addr");
8724   annotate_field (5);
8725   uiout->text ("exec");
8726   if (c->exec_pathname != NULL)
8727     {
8728       uiout->text (", program \"");
8729       uiout->field_string ("what", c->exec_pathname);
8730       uiout->text ("\" ");
8731     }
8732
8733   if (uiout->is_mi_like_p ())
8734     uiout->field_string ("catch-type", "exec");
8735 }
8736
8737 static void
8738 print_mention_catch_exec (struct breakpoint *b)
8739 {
8740   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8741 }
8742
8743 /* Implement the "print_recreate" breakpoint_ops method for exec
8744    catchpoints.  */
8745
8746 static void
8747 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8748 {
8749   fprintf_unfiltered (fp, "catch exec");
8750   print_recreate_thread (b, fp);
8751 }
8752
8753 static struct breakpoint_ops catch_exec_breakpoint_ops;
8754
8755 static int
8756 hw_breakpoint_used_count (void)
8757 {
8758   int i = 0;
8759   struct breakpoint *b;
8760   struct bp_location *bl;
8761
8762   ALL_BREAKPOINTS (b)
8763   {
8764     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8765       for (bl = b->loc; bl; bl = bl->next)
8766         {
8767           /* Special types of hardware breakpoints may use more than
8768              one register.  */
8769           i += b->ops->resources_needed (bl);
8770         }
8771   }
8772
8773   return i;
8774 }
8775
8776 /* Returns the resources B would use if it were a hardware
8777    watchpoint.  */
8778
8779 static int
8780 hw_watchpoint_use_count (struct breakpoint *b)
8781 {
8782   int i = 0;
8783   struct bp_location *bl;
8784
8785   if (!breakpoint_enabled (b))
8786     return 0;
8787
8788   for (bl = b->loc; bl; bl = bl->next)
8789     {
8790       /* Special types of hardware watchpoints may use more than
8791          one register.  */
8792       i += b->ops->resources_needed (bl);
8793     }
8794
8795   return i;
8796 }
8797
8798 /* Returns the sum the used resources of all hardware watchpoints of
8799    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8800    the sum of the used resources of all hardware watchpoints of other
8801    types _not_ TYPE.  */
8802
8803 static int
8804 hw_watchpoint_used_count_others (struct breakpoint *except,
8805                                  enum bptype type, int *other_type_used)
8806 {
8807   int i = 0;
8808   struct breakpoint *b;
8809
8810   *other_type_used = 0;
8811   ALL_BREAKPOINTS (b)
8812     {
8813       if (b == except)
8814         continue;
8815       if (!breakpoint_enabled (b))
8816         continue;
8817
8818       if (b->type == type)
8819         i += hw_watchpoint_use_count (b);
8820       else if (is_hardware_watchpoint (b))
8821         *other_type_used = 1;
8822     }
8823
8824   return i;
8825 }
8826
8827 void
8828 disable_watchpoints_before_interactive_call_start (void)
8829 {
8830   struct breakpoint *b;
8831
8832   ALL_BREAKPOINTS (b)
8833   {
8834     if (is_watchpoint (b) && breakpoint_enabled (b))
8835       {
8836         b->enable_state = bp_call_disabled;
8837         update_global_location_list (UGLL_DONT_INSERT);
8838       }
8839   }
8840 }
8841
8842 void
8843 enable_watchpoints_after_interactive_call_stop (void)
8844 {
8845   struct breakpoint *b;
8846
8847   ALL_BREAKPOINTS (b)
8848   {
8849     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8850       {
8851         b->enable_state = bp_enabled;
8852         update_global_location_list (UGLL_MAY_INSERT);
8853       }
8854   }
8855 }
8856
8857 void
8858 disable_breakpoints_before_startup (void)
8859 {
8860   current_program_space->executing_startup = 1;
8861   update_global_location_list (UGLL_DONT_INSERT);
8862 }
8863
8864 void
8865 enable_breakpoints_after_startup (void)
8866 {
8867   current_program_space->executing_startup = 0;
8868   breakpoint_re_set ();
8869 }
8870
8871 /* Create a new single-step breakpoint for thread THREAD, with no
8872    locations.  */
8873
8874 static struct breakpoint *
8875 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8876 {
8877   struct breakpoint *b = new breakpoint ();
8878
8879   init_raw_breakpoint_without_location (b, gdbarch, bp_single_step,
8880                                         &momentary_breakpoint_ops);
8881
8882   b->disposition = disp_donttouch;
8883   b->frame_id = null_frame_id;
8884
8885   b->thread = thread;
8886   gdb_assert (b->thread != 0);
8887
8888   add_to_breakpoint_chain (b);
8889
8890   return b;
8891 }
8892
8893 /* Set a momentary breakpoint of type TYPE at address specified by
8894    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8895    frame.  */
8896
8897 struct breakpoint *
8898 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8899                           struct frame_id frame_id, enum bptype type)
8900 {
8901   struct breakpoint *b;
8902
8903   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8904      tail-called one.  */
8905   gdb_assert (!frame_id_artificial_p (frame_id));
8906
8907   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8908   b->enable_state = bp_enabled;
8909   b->disposition = disp_donttouch;
8910   b->frame_id = frame_id;
8911
8912   /* If we're debugging a multi-threaded program, then we want
8913      momentary breakpoints to be active in only a single thread of
8914      control.  */
8915   if (in_thread_list (inferior_ptid))
8916     b->thread = ptid_to_global_thread_id (inferior_ptid);
8917
8918   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8919
8920   return b;
8921 }
8922
8923 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8924    The new breakpoint will have type TYPE, use OPS as its
8925    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8926
8927 static struct breakpoint *
8928 momentary_breakpoint_from_master (struct breakpoint *orig,
8929                                   enum bptype type,
8930                                   const struct breakpoint_ops *ops,
8931                                   int loc_enabled)
8932 {
8933   struct breakpoint *copy;
8934
8935   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8936   copy->loc = allocate_bp_location (copy);
8937   set_breakpoint_location_function (copy->loc, 1);
8938
8939   copy->loc->gdbarch = orig->loc->gdbarch;
8940   copy->loc->requested_address = orig->loc->requested_address;
8941   copy->loc->address = orig->loc->address;
8942   copy->loc->section = orig->loc->section;
8943   copy->loc->pspace = orig->loc->pspace;
8944   copy->loc->probe = orig->loc->probe;
8945   copy->loc->line_number = orig->loc->line_number;
8946   copy->loc->symtab = orig->loc->symtab;
8947   copy->loc->enabled = loc_enabled;
8948   copy->frame_id = orig->frame_id;
8949   copy->thread = orig->thread;
8950   copy->pspace = orig->pspace;
8951
8952   copy->enable_state = bp_enabled;
8953   copy->disposition = disp_donttouch;
8954   copy->number = internal_breakpoint_number--;
8955
8956   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8957   return copy;
8958 }
8959
8960 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8961    ORIG is NULL.  */
8962
8963 struct breakpoint *
8964 clone_momentary_breakpoint (struct breakpoint *orig)
8965 {
8966   /* If there's nothing to clone, then return nothing.  */
8967   if (orig == NULL)
8968     return NULL;
8969
8970   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8971 }
8972
8973 struct breakpoint *
8974 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8975                                 enum bptype type)
8976 {
8977   struct symtab_and_line sal;
8978
8979   sal = find_pc_line (pc, 0);
8980   sal.pc = pc;
8981   sal.section = find_pc_overlay (pc);
8982   sal.explicit_pc = 1;
8983
8984   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8985 }
8986 \f
8987
8988 /* Tell the user we have just set a breakpoint B.  */
8989
8990 static void
8991 mention (struct breakpoint *b)
8992 {
8993   b->ops->print_mention (b);
8994   if (current_uiout->is_mi_like_p ())
8995     return;
8996   printf_filtered ("\n");
8997 }
8998 \f
8999
9000 static int bp_loc_is_permanent (struct bp_location *loc);
9001
9002 static struct bp_location *
9003 add_location_to_breakpoint (struct breakpoint *b,
9004                             const struct symtab_and_line *sal)
9005 {
9006   struct bp_location *loc, **tmp;
9007   CORE_ADDR adjusted_address;
9008   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
9009
9010   if (loc_gdbarch == NULL)
9011     loc_gdbarch = b->gdbarch;
9012
9013   /* Adjust the breakpoint's address prior to allocating a location.
9014      Once we call allocate_bp_location(), that mostly uninitialized
9015      location will be placed on the location chain.  Adjustment of the
9016      breakpoint may cause target_read_memory() to be called and we do
9017      not want its scan of the location chain to find a breakpoint and
9018      location that's only been partially initialized.  */
9019   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
9020                                                 sal->pc, b->type);
9021
9022   /* Sort the locations by their ADDRESS.  */
9023   loc = allocate_bp_location (b);
9024   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
9025        tmp = &((*tmp)->next))
9026     ;
9027   loc->next = *tmp;
9028   *tmp = loc;
9029
9030   loc->requested_address = sal->pc;
9031   loc->address = adjusted_address;
9032   loc->pspace = sal->pspace;
9033   loc->probe.probe = sal->probe;
9034   loc->probe.objfile = sal->objfile;
9035   gdb_assert (loc->pspace != NULL);
9036   loc->section = sal->section;
9037   loc->gdbarch = loc_gdbarch;
9038   loc->line_number = sal->line;
9039   loc->symtab = sal->symtab;
9040
9041   set_breakpoint_location_function (loc,
9042                                     sal->explicit_pc || sal->explicit_line);
9043
9044   /* While by definition, permanent breakpoints are already present in the
9045      code, we don't mark the location as inserted.  Normally one would expect
9046      that GDB could rely on that breakpoint instruction to stop the program,
9047      thus removing the need to insert its own breakpoint, except that executing
9048      the breakpoint instruction can kill the target instead of reporting a
9049      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
9050      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
9051      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
9052      breakpoint be inserted normally results in QEMU knowing about the GDB
9053      breakpoint, and thus trap before the breakpoint instruction is executed.
9054      (If GDB later needs to continue execution past the permanent breakpoint,
9055      it manually increments the PC, thus avoiding executing the breakpoint
9056      instruction.)  */
9057   if (bp_loc_is_permanent (loc))
9058     loc->permanent = 1;
9059
9060   return loc;
9061 }
9062 \f
9063
9064 /* See breakpoint.h.  */
9065
9066 int
9067 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
9068 {
9069   int len;
9070   CORE_ADDR addr;
9071   const gdb_byte *bpoint;
9072   gdb_byte *target_mem;
9073   struct cleanup *cleanup;
9074   int retval = 0;
9075
9076   addr = address;
9077   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9078
9079   /* Software breakpoints unsupported?  */
9080   if (bpoint == NULL)
9081     return 0;
9082
9083   target_mem = (gdb_byte *) alloca (len);
9084
9085   /* Enable the automatic memory restoration from breakpoints while
9086      we read the memory.  Otherwise we could say about our temporary
9087      breakpoints they are permanent.  */
9088   cleanup = make_show_memory_breakpoints_cleanup (0);
9089
9090   if (target_read_memory (address, target_mem, len) == 0
9091       && memcmp (target_mem, bpoint, len) == 0)
9092     retval = 1;
9093
9094   do_cleanups (cleanup);
9095
9096   return retval;
9097 }
9098
9099 /* Return 1 if LOC is pointing to a permanent breakpoint,
9100    return 0 otherwise.  */
9101
9102 static int
9103 bp_loc_is_permanent (struct bp_location *loc)
9104 {
9105   struct cleanup *cleanup;
9106   int retval;
9107
9108   gdb_assert (loc != NULL);
9109
9110   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
9111      attempt to read from the addresses the locations of these breakpoint types
9112      point to.  program_breakpoint_here_p, below, will attempt to read
9113      memory.  */
9114   if (!breakpoint_address_is_meaningful (loc->owner))
9115     return 0;
9116
9117   cleanup = save_current_space_and_thread ();
9118   switch_to_program_space_and_thread (loc->pspace);
9119
9120   retval = program_breakpoint_here_p (loc->gdbarch, loc->address);
9121
9122   do_cleanups (cleanup);
9123
9124   return retval;
9125 }
9126
9127 /* Build a command list for the dprintf corresponding to the current
9128    settings of the dprintf style options.  */
9129
9130 static void
9131 update_dprintf_command_list (struct breakpoint *b)
9132 {
9133   char *dprintf_args = b->extra_string;
9134   char *printf_line = NULL;
9135
9136   if (!dprintf_args)
9137     return;
9138
9139   dprintf_args = skip_spaces (dprintf_args);
9140
9141   /* Allow a comma, as it may have terminated a location, but don't
9142      insist on it.  */
9143   if (*dprintf_args == ',')
9144     ++dprintf_args;
9145   dprintf_args = skip_spaces (dprintf_args);
9146
9147   if (*dprintf_args != '"')
9148     error (_("Bad format string, missing '\"'."));
9149
9150   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9151     printf_line = xstrprintf ("printf %s", dprintf_args);
9152   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9153     {
9154       if (!dprintf_function)
9155         error (_("No function supplied for dprintf call"));
9156
9157       if (dprintf_channel && strlen (dprintf_channel) > 0)
9158         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9159                                   dprintf_function,
9160                                   dprintf_channel,
9161                                   dprintf_args);
9162       else
9163         printf_line = xstrprintf ("call (void) %s (%s)",
9164                                   dprintf_function,
9165                                   dprintf_args);
9166     }
9167   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9168     {
9169       if (target_can_run_breakpoint_commands ())
9170         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9171       else
9172         {
9173           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9174           printf_line = xstrprintf ("printf %s", dprintf_args);
9175         }
9176     }
9177   else
9178     internal_error (__FILE__, __LINE__,
9179                     _("Invalid dprintf style."));
9180
9181   gdb_assert (printf_line != NULL);
9182   /* Manufacture a printf sequence.  */
9183   {
9184     struct command_line *printf_cmd_line = XNEW (struct command_line);
9185
9186     printf_cmd_line->control_type = simple_control;
9187     printf_cmd_line->body_count = 0;
9188     printf_cmd_line->body_list = NULL;
9189     printf_cmd_line->next = NULL;
9190     printf_cmd_line->line = printf_line;
9191
9192     breakpoint_set_commands (b, command_line_up (printf_cmd_line));
9193   }
9194 }
9195
9196 /* Update all dprintf commands, making their command lists reflect
9197    current style settings.  */
9198
9199 static void
9200 update_dprintf_commands (char *args, int from_tty,
9201                          struct cmd_list_element *c)
9202 {
9203   struct breakpoint *b;
9204
9205   ALL_BREAKPOINTS (b)
9206     {
9207       if (b->type == bp_dprintf)
9208         update_dprintf_command_list (b);
9209     }
9210 }
9211
9212 /* Create a breakpoint with SAL as location.  Use LOCATION
9213    as a description of the location, and COND_STRING
9214    as condition expression.  If LOCATION is NULL then create an
9215    "address location" from the address in the SAL.  */
9216
9217 static void
9218 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9219                      struct symtabs_and_lines sals,
9220                      event_location_up &&location,
9221                      char *filter, char *cond_string,
9222                      char *extra_string,
9223                      enum bptype type, enum bpdisp disposition,
9224                      int thread, int task, int ignore_count,
9225                      const struct breakpoint_ops *ops, int from_tty,
9226                      int enabled, int internal, unsigned flags,
9227                      int display_canonical)
9228 {
9229   int i;
9230
9231   if (type == bp_hardware_breakpoint)
9232     {
9233       int target_resources_ok;
9234
9235       i = hw_breakpoint_used_count ();
9236       target_resources_ok =
9237         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9238                                             i + 1, 0);
9239       if (target_resources_ok == 0)
9240         error (_("No hardware breakpoint support in the target."));
9241       else if (target_resources_ok < 0)
9242         error (_("Hardware breakpoints used exceeds limit."));
9243     }
9244
9245   gdb_assert (sals.nelts > 0);
9246
9247   for (i = 0; i < sals.nelts; ++i)
9248     {
9249       struct symtab_and_line sal = sals.sals[i];
9250       struct bp_location *loc;
9251
9252       if (from_tty)
9253         {
9254           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9255           if (!loc_gdbarch)
9256             loc_gdbarch = gdbarch;
9257
9258           describe_other_breakpoints (loc_gdbarch,
9259                                       sal.pspace, sal.pc, sal.section, thread);
9260         }
9261
9262       if (i == 0)
9263         {
9264           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9265           b->thread = thread;
9266           b->task = task;
9267
9268           b->cond_string = cond_string;
9269           b->extra_string = extra_string;
9270           b->ignore_count = ignore_count;
9271           b->enable_state = enabled ? bp_enabled : bp_disabled;
9272           b->disposition = disposition;
9273
9274           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9275             b->loc->inserted = 1;
9276
9277           if (type == bp_static_tracepoint)
9278             {
9279               struct tracepoint *t = (struct tracepoint *) b;
9280               struct static_tracepoint_marker marker;
9281
9282               if (strace_marker_p (b))
9283                 {
9284                   /* We already know the marker exists, otherwise, we
9285                      wouldn't see a sal for it.  */
9286                   const char *p
9287                     = &event_location_to_string (b->location.get ())[3];
9288                   const char *endp;
9289                   char *marker_str;
9290
9291                   p = skip_spaces_const (p);
9292
9293                   endp = skip_to_space_const (p);
9294
9295                   marker_str = savestring (p, endp - p);
9296                   t->static_trace_marker_id = marker_str;
9297
9298                   printf_filtered (_("Probed static tracepoint "
9299                                      "marker \"%s\"\n"),
9300                                    t->static_trace_marker_id);
9301                 }
9302               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9303                 {
9304                   t->static_trace_marker_id = xstrdup (marker.str_id);
9305                   release_static_tracepoint_marker (&marker);
9306
9307                   printf_filtered (_("Probed static tracepoint "
9308                                      "marker \"%s\"\n"),
9309                                    t->static_trace_marker_id);
9310                 }
9311               else
9312                 warning (_("Couldn't determine the static "
9313                            "tracepoint marker to probe"));
9314             }
9315
9316           loc = b->loc;
9317         }
9318       else
9319         {
9320           loc = add_location_to_breakpoint (b, &sal);
9321           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9322             loc->inserted = 1;
9323         }
9324
9325       if (b->cond_string)
9326         {
9327           const char *arg = b->cond_string;
9328
9329           loc->cond = parse_exp_1 (&arg, loc->address,
9330                                    block_for_pc (loc->address), 0);
9331           if (*arg)
9332               error (_("Garbage '%s' follows condition"), arg);
9333         }
9334
9335       /* Dynamic printf requires and uses additional arguments on the
9336          command line, otherwise it's an error.  */
9337       if (type == bp_dprintf)
9338         {
9339           if (b->extra_string)
9340             update_dprintf_command_list (b);
9341           else
9342             error (_("Format string required"));
9343         }
9344       else if (b->extra_string)
9345         error (_("Garbage '%s' at end of command"), b->extra_string);
9346     }
9347
9348   b->display_canonical = display_canonical;
9349   if (location != NULL)
9350     b->location = std::move (location);
9351   else
9352     b->location = new_address_location (b->loc->address, NULL, 0);
9353   b->filter = filter;
9354 }
9355
9356 static void
9357 create_breakpoint_sal (struct gdbarch *gdbarch,
9358                        struct symtabs_and_lines sals,
9359                        event_location_up &&location,
9360                        char *filter, char *cond_string,
9361                        char *extra_string,
9362                        enum bptype type, enum bpdisp disposition,
9363                        int thread, int task, int ignore_count,
9364                        const struct breakpoint_ops *ops, int from_tty,
9365                        int enabled, int internal, unsigned flags,
9366                        int display_canonical)
9367 {
9368   struct breakpoint *b;
9369   struct cleanup *old_chain;
9370
9371   if (is_tracepoint_type (type))
9372     {
9373       struct tracepoint *t;
9374
9375       t = new tracepoint ();
9376       b = &t->base;
9377     }
9378   else
9379     b = new breakpoint ();
9380
9381   old_chain = make_cleanup (xfree, b);
9382
9383   init_breakpoint_sal (b, gdbarch,
9384                        sals, std::move (location),
9385                        filter, cond_string, extra_string,
9386                        type, disposition,
9387                        thread, task, ignore_count,
9388                        ops, from_tty,
9389                        enabled, internal, flags,
9390                        display_canonical);
9391   discard_cleanups (old_chain);
9392
9393   install_breakpoint (internal, b, 0);
9394 }
9395
9396 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9397    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9398    value.  COND_STRING, if not NULL, specified the condition to be
9399    used for all breakpoints.  Essentially the only case where
9400    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9401    function.  In that case, it's still not possible to specify
9402    separate conditions for different overloaded functions, so
9403    we take just a single condition string.
9404    
9405    NOTE: If the function succeeds, the caller is expected to cleanup
9406    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9407    array contents).  If the function fails (error() is called), the
9408    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9409    COND and SALS arrays and each of those arrays contents.  */
9410
9411 static void
9412 create_breakpoints_sal (struct gdbarch *gdbarch,
9413                         struct linespec_result *canonical,
9414                         char *cond_string, char *extra_string,
9415                         enum bptype type, enum bpdisp disposition,
9416                         int thread, int task, int ignore_count,
9417                         const struct breakpoint_ops *ops, int from_tty,
9418                         int enabled, int internal, unsigned flags)
9419 {
9420   int i;
9421   struct linespec_sals *lsal;
9422
9423   if (canonical->pre_expanded)
9424     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9425
9426   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9427     {
9428       /* Note that 'location' can be NULL in the case of a plain
9429          'break', without arguments.  */
9430       event_location_up location
9431         = (canonical->location != NULL
9432            ? copy_event_location (canonical->location.get ()) : NULL);
9433       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9434
9435       make_cleanup (xfree, filter_string);
9436       create_breakpoint_sal (gdbarch, lsal->sals,
9437                              std::move (location),
9438                              filter_string,
9439                              cond_string, extra_string,
9440                              type, disposition,
9441                              thread, task, ignore_count, ops,
9442                              from_tty, enabled, internal, flags,
9443                              canonical->special_display);
9444     }
9445 }
9446
9447 /* Parse LOCATION which is assumed to be a SAL specification possibly
9448    followed by conditionals.  On return, SALS contains an array of SAL
9449    addresses found.  LOCATION points to the end of the SAL (for
9450    linespec locations).
9451
9452    The array and the line spec strings are allocated on the heap, it is
9453    the caller's responsibility to free them.  */
9454
9455 static void
9456 parse_breakpoint_sals (const struct event_location *location,
9457                        struct linespec_result *canonical)
9458 {
9459   struct symtab_and_line cursal;
9460
9461   if (event_location_type (location) == LINESPEC_LOCATION)
9462     {
9463       const char *address = get_linespec_location (location);
9464
9465       if (address == NULL)
9466         {
9467           /* The last displayed codepoint, if it's valid, is our default
9468              breakpoint address.  */
9469           if (last_displayed_sal_is_valid ())
9470             {
9471               struct linespec_sals lsal;
9472               struct symtab_and_line sal;
9473               CORE_ADDR pc;
9474
9475               init_sal (&sal);          /* Initialize to zeroes.  */
9476               lsal.sals.sals = XNEW (struct symtab_and_line);
9477
9478               /* Set sal's pspace, pc, symtab, and line to the values
9479                  corresponding to the last call to print_frame_info.
9480                  Be sure to reinitialize LINE with NOTCURRENT == 0
9481                  as the breakpoint line number is inappropriate otherwise.
9482                  find_pc_line would adjust PC, re-set it back.  */
9483               get_last_displayed_sal (&sal);
9484               pc = sal.pc;
9485               sal = find_pc_line (pc, 0);
9486
9487               /* "break" without arguments is equivalent to "break *PC"
9488                  where PC is the last displayed codepoint's address.  So
9489                  make sure to set sal.explicit_pc to prevent GDB from
9490                  trying to expand the list of sals to include all other
9491                  instances with the same symtab and line.  */
9492               sal.pc = pc;
9493               sal.explicit_pc = 1;
9494
9495               lsal.sals.sals[0] = sal;
9496               lsal.sals.nelts = 1;
9497               lsal.canonical = NULL;
9498
9499               VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9500               return;
9501             }
9502           else
9503             error (_("No default breakpoint address now."));
9504         }
9505     }
9506
9507   /* Force almost all breakpoints to be in terms of the
9508      current_source_symtab (which is decode_line_1's default).
9509      This should produce the results we want almost all of the
9510      time while leaving default_breakpoint_* alone.
9511
9512      ObjC: However, don't match an Objective-C method name which
9513      may have a '+' or '-' succeeded by a '['.  */
9514   cursal = get_current_source_symtab_and_line ();
9515   if (last_displayed_sal_is_valid ())
9516     {
9517       const char *address = NULL;
9518
9519       if (event_location_type (location) == LINESPEC_LOCATION)
9520         address = get_linespec_location (location);
9521
9522       if (!cursal.symtab
9523           || (address != NULL
9524               && strchr ("+-", address[0]) != NULL
9525               && address[1] != '['))
9526         {
9527           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9528                             get_last_displayed_symtab (),
9529                             get_last_displayed_line (),
9530                             canonical, NULL, NULL);
9531           return;
9532         }
9533     }
9534
9535   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9536                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9537 }
9538
9539
9540 /* Convert each SAL into a real PC.  Verify that the PC can be
9541    inserted as a breakpoint.  If it can't throw an error.  */
9542
9543 static void
9544 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9545 {    
9546   int i;
9547
9548   for (i = 0; i < sals->nelts; i++)
9549     resolve_sal_pc (&sals->sals[i]);
9550 }
9551
9552 /* Fast tracepoints may have restrictions on valid locations.  For
9553    instance, a fast tracepoint using a jump instead of a trap will
9554    likely have to overwrite more bytes than a trap would, and so can
9555    only be placed where the instruction is longer than the jump, or a
9556    multi-instruction sequence does not have a jump into the middle of
9557    it, etc.  */
9558
9559 static void
9560 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9561                             struct symtabs_and_lines *sals)
9562 {
9563   int i, rslt;
9564   struct symtab_and_line *sal;
9565   char *msg;
9566   struct cleanup *old_chain;
9567
9568   for (i = 0; i < sals->nelts; i++)
9569     {
9570       struct gdbarch *sarch;
9571
9572       sal = &sals->sals[i];
9573
9574       sarch = get_sal_arch (*sal);
9575       /* We fall back to GDBARCH if there is no architecture
9576          associated with SAL.  */
9577       if (sarch == NULL)
9578         sarch = gdbarch;
9579       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc, &msg);
9580       old_chain = make_cleanup (xfree, msg);
9581
9582       if (!rslt)
9583         error (_("May not have a fast tracepoint at %s%s"),
9584                paddress (sarch, sal->pc), (msg ? msg : ""));
9585
9586       do_cleanups (old_chain);
9587     }
9588 }
9589
9590 /* Given TOK, a string specification of condition and thread, as
9591    accepted by the 'break' command, extract the condition
9592    string and thread number and set *COND_STRING and *THREAD.
9593    PC identifies the context at which the condition should be parsed.
9594    If no condition is found, *COND_STRING is set to NULL.
9595    If no thread is found, *THREAD is set to -1.  */
9596
9597 static void
9598 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9599                            char **cond_string, int *thread, int *task,
9600                            char **rest)
9601 {
9602   *cond_string = NULL;
9603   *thread = -1;
9604   *task = 0;
9605   *rest = NULL;
9606
9607   while (tok && *tok)
9608     {
9609       const char *end_tok;
9610       int toklen;
9611       const char *cond_start = NULL;
9612       const char *cond_end = NULL;
9613
9614       tok = skip_spaces_const (tok);
9615
9616       if ((*tok == '"' || *tok == ',') && rest)
9617         {
9618           *rest = savestring (tok, strlen (tok));
9619           return;
9620         }
9621
9622       end_tok = skip_to_space_const (tok);
9623
9624       toklen = end_tok - tok;
9625
9626       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9627         {
9628           tok = cond_start = end_tok + 1;
9629           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9630           cond_end = tok;
9631           *cond_string = savestring (cond_start, cond_end - cond_start);
9632         }
9633       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9634         {
9635           const char *tmptok;
9636           struct thread_info *thr;
9637
9638           tok = end_tok + 1;
9639           thr = parse_thread_id (tok, &tmptok);
9640           if (tok == tmptok)
9641             error (_("Junk after thread keyword."));
9642           *thread = thr->global_num;
9643           tok = tmptok;
9644         }
9645       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9646         {
9647           char *tmptok;
9648
9649           tok = end_tok + 1;
9650           *task = strtol (tok, &tmptok, 0);
9651           if (tok == tmptok)
9652             error (_("Junk after task keyword."));
9653           if (!valid_task_id (*task))
9654             error (_("Unknown task %d."), *task);
9655           tok = tmptok;
9656         }
9657       else if (rest)
9658         {
9659           *rest = savestring (tok, strlen (tok));
9660           return;
9661         }
9662       else
9663         error (_("Junk at end of arguments."));
9664     }
9665 }
9666
9667 /* Decode a static tracepoint marker spec.  */
9668
9669 static struct symtabs_and_lines
9670 decode_static_tracepoint_spec (const char **arg_p)
9671 {
9672   VEC(static_tracepoint_marker_p) *markers = NULL;
9673   struct symtabs_and_lines sals;
9674   struct cleanup *old_chain;
9675   const char *p = &(*arg_p)[3];
9676   const char *endp;
9677   char *marker_str;
9678   int i;
9679
9680   p = skip_spaces_const (p);
9681
9682   endp = skip_to_space_const (p);
9683
9684   marker_str = savestring (p, endp - p);
9685   old_chain = make_cleanup (xfree, marker_str);
9686
9687   markers = target_static_tracepoint_markers_by_strid (marker_str);
9688   if (VEC_empty(static_tracepoint_marker_p, markers))
9689     error (_("No known static tracepoint marker named %s"), marker_str);
9690
9691   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9692   sals.sals = XNEWVEC (struct symtab_and_line, sals.nelts);
9693
9694   for (i = 0; i < sals.nelts; i++)
9695     {
9696       struct static_tracepoint_marker *marker;
9697
9698       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9699
9700       init_sal (&sals.sals[i]);
9701
9702       sals.sals[i] = find_pc_line (marker->address, 0);
9703       sals.sals[i].pc = marker->address;
9704
9705       release_static_tracepoint_marker (marker);
9706     }
9707
9708   do_cleanups (old_chain);
9709
9710   *arg_p = endp;
9711   return sals;
9712 }
9713
9714 /* See breakpoint.h.  */
9715
9716 int
9717 create_breakpoint (struct gdbarch *gdbarch,
9718                    const struct event_location *location, char *cond_string,
9719                    int thread, char *extra_string,
9720                    int parse_extra,
9721                    int tempflag, enum bptype type_wanted,
9722                    int ignore_count,
9723                    enum auto_boolean pending_break_support,
9724                    const struct breakpoint_ops *ops,
9725                    int from_tty, int enabled, int internal,
9726                    unsigned flags)
9727 {
9728   struct linespec_result canonical;
9729   struct cleanup *bkpt_chain = NULL;
9730   int pending = 0;
9731   int task = 0;
9732   int prev_bkpt_count = breakpoint_count;
9733
9734   gdb_assert (ops != NULL);
9735
9736   /* If extra_string isn't useful, set it to NULL.  */
9737   if (extra_string != NULL && *extra_string == '\0')
9738     extra_string = NULL;
9739
9740   TRY
9741     {
9742       ops->create_sals_from_location (location, &canonical, type_wanted);
9743     }
9744   CATCH (e, RETURN_MASK_ERROR)
9745     {
9746       /* If caller is interested in rc value from parse, set
9747          value.  */
9748       if (e.error == NOT_FOUND_ERROR)
9749         {
9750           /* If pending breakpoint support is turned off, throw
9751              error.  */
9752
9753           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9754             throw_exception (e);
9755
9756           exception_print (gdb_stderr, e);
9757
9758           /* If pending breakpoint support is auto query and the user
9759              selects no, then simply return the error code.  */
9760           if (pending_break_support == AUTO_BOOLEAN_AUTO
9761               && !nquery (_("Make %s pending on future shared library load? "),
9762                           bptype_string (type_wanted)))
9763             return 0;
9764
9765           /* At this point, either the user was queried about setting
9766              a pending breakpoint and selected yes, or pending
9767              breakpoint behavior is on and thus a pending breakpoint
9768              is defaulted on behalf of the user.  */
9769           pending = 1;
9770         }
9771       else
9772         throw_exception (e);
9773     }
9774   END_CATCH
9775
9776   if (!pending && VEC_empty (linespec_sals, canonical.sals))
9777     return 0;
9778
9779   /* ----------------------------- SNIP -----------------------------
9780      Anything added to the cleanup chain beyond this point is assumed
9781      to be part of a breakpoint.  If the breakpoint create succeeds
9782      then the memory is not reclaimed.  */
9783   bkpt_chain = make_cleanup (null_cleanup, 0);
9784
9785   /* Resolve all line numbers to PC's and verify that the addresses
9786      are ok for the target.  */
9787   if (!pending)
9788     {
9789       int ix;
9790       struct linespec_sals *iter;
9791
9792       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9793         breakpoint_sals_to_pc (&iter->sals);
9794     }
9795
9796   /* Fast tracepoints may have additional restrictions on location.  */
9797   if (!pending && type_wanted == bp_fast_tracepoint)
9798     {
9799       int ix;
9800       struct linespec_sals *iter;
9801
9802       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9803         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9804     }
9805
9806   /* Verify that condition can be parsed, before setting any
9807      breakpoints.  Allocate a separate condition expression for each
9808      breakpoint.  */
9809   if (!pending)
9810     {
9811       if (parse_extra)
9812         {
9813           char *rest;
9814           struct linespec_sals *lsal;
9815
9816           lsal = VEC_index (linespec_sals, canonical.sals, 0);
9817
9818           /* Here we only parse 'arg' to separate condition
9819              from thread number, so parsing in context of first
9820              sal is OK.  When setting the breakpoint we'll
9821              re-parse it in context of each sal.  */
9822
9823           find_condition_and_thread (extra_string, lsal->sals.sals[0].pc,
9824                                      &cond_string, &thread, &task, &rest);
9825           if (cond_string)
9826             make_cleanup (xfree, cond_string);
9827           if (rest)
9828             make_cleanup (xfree, rest);
9829           if (rest)
9830             extra_string = rest;
9831           else
9832             extra_string = NULL;
9833         }
9834       else
9835         {
9836           if (type_wanted != bp_dprintf
9837               && extra_string != NULL && *extra_string != '\0')
9838                 error (_("Garbage '%s' at end of location"), extra_string);
9839
9840           /* Create a private copy of condition string.  */
9841           if (cond_string)
9842             {
9843               cond_string = xstrdup (cond_string);
9844               make_cleanup (xfree, cond_string);
9845             }
9846           /* Create a private copy of any extra string.  */
9847           if (extra_string)
9848             {
9849               extra_string = xstrdup (extra_string);
9850               make_cleanup (xfree, extra_string);
9851             }
9852         }
9853
9854       ops->create_breakpoints_sal (gdbarch, &canonical,
9855                                    cond_string, extra_string, type_wanted,
9856                                    tempflag ? disp_del : disp_donttouch,
9857                                    thread, task, ignore_count, ops,
9858                                    from_tty, enabled, internal, flags);
9859     }
9860   else
9861     {
9862       struct breakpoint *b;
9863
9864       if (is_tracepoint_type (type_wanted))
9865         {
9866           struct tracepoint *t;
9867
9868           t = new tracepoint ();
9869           b = &t->base;
9870         }
9871       else
9872         b = new breakpoint ();
9873
9874       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9875       b->location = copy_event_location (location);
9876
9877       if (parse_extra)
9878         b->cond_string = NULL;
9879       else
9880         {
9881           /* Create a private copy of condition string.  */
9882           if (cond_string)
9883             {
9884               cond_string = xstrdup (cond_string);
9885               make_cleanup (xfree, cond_string);
9886             }
9887           b->cond_string = cond_string;
9888           b->thread = thread;
9889         }
9890
9891       /* Create a private copy of any extra string.  */
9892       if (extra_string != NULL)
9893         {
9894           extra_string = xstrdup (extra_string);
9895           make_cleanup (xfree, extra_string);
9896         }
9897       b->extra_string = extra_string;
9898       b->ignore_count = ignore_count;
9899       b->disposition = tempflag ? disp_del : disp_donttouch;
9900       b->condition_not_parsed = 1;
9901       b->enable_state = enabled ? bp_enabled : bp_disabled;
9902       if ((type_wanted != bp_breakpoint
9903            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9904         b->pspace = current_program_space;
9905
9906       install_breakpoint (internal, b, 0);
9907     }
9908   
9909   if (VEC_length (linespec_sals, canonical.sals) > 1)
9910     {
9911       warning (_("Multiple breakpoints were set.\nUse the "
9912                  "\"delete\" command to delete unwanted breakpoints."));
9913       prev_breakpoint_count = prev_bkpt_count;
9914     }
9915
9916   /* That's it.  Discard the cleanups for data inserted into the
9917      breakpoint.  */
9918   discard_cleanups (bkpt_chain);
9919
9920   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9921   update_global_location_list (UGLL_MAY_INSERT);
9922
9923   return 1;
9924 }
9925
9926 /* Set a breakpoint.
9927    ARG is a string describing breakpoint address,
9928    condition, and thread.
9929    FLAG specifies if a breakpoint is hardware on,
9930    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9931    and BP_TEMPFLAG.  */
9932
9933 static void
9934 break_command_1 (char *arg, int flag, int from_tty)
9935 {
9936   int tempflag = flag & BP_TEMPFLAG;
9937   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9938                              ? bp_hardware_breakpoint
9939                              : bp_breakpoint);
9940   struct breakpoint_ops *ops;
9941
9942   event_location_up location = string_to_event_location (&arg, current_language);
9943
9944   /* Matching breakpoints on probes.  */
9945   if (location != NULL
9946       && event_location_type (location.get ()) == PROBE_LOCATION)
9947     ops = &bkpt_probe_breakpoint_ops;
9948   else
9949     ops = &bkpt_breakpoint_ops;
9950
9951   create_breakpoint (get_current_arch (),
9952                      location.get (),
9953                      NULL, 0, arg, 1 /* parse arg */,
9954                      tempflag, type_wanted,
9955                      0 /* Ignore count */,
9956                      pending_break_support,
9957                      ops,
9958                      from_tty,
9959                      1 /* enabled */,
9960                      0 /* internal */,
9961                      0);
9962 }
9963
9964 /* Helper function for break_command_1 and disassemble_command.  */
9965
9966 void
9967 resolve_sal_pc (struct symtab_and_line *sal)
9968 {
9969   CORE_ADDR pc;
9970
9971   if (sal->pc == 0 && sal->symtab != NULL)
9972     {
9973       if (!find_line_pc (sal->symtab, sal->line, &pc))
9974         error (_("No line %d in file \"%s\"."),
9975                sal->line, symtab_to_filename_for_display (sal->symtab));
9976       sal->pc = pc;
9977
9978       /* If this SAL corresponds to a breakpoint inserted using a line
9979          number, then skip the function prologue if necessary.  */
9980       if (sal->explicit_line)
9981         skip_prologue_sal (sal);
9982     }
9983
9984   if (sal->section == 0 && sal->symtab != NULL)
9985     {
9986       const struct blockvector *bv;
9987       const struct block *b;
9988       struct symbol *sym;
9989
9990       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9991                                     SYMTAB_COMPUNIT (sal->symtab));
9992       if (bv != NULL)
9993         {
9994           sym = block_linkage_function (b);
9995           if (sym != NULL)
9996             {
9997               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9998               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9999                                                  sym);
10000             }
10001           else
10002             {
10003               /* It really is worthwhile to have the section, so we'll
10004                  just have to look harder. This case can be executed
10005                  if we have line numbers but no functions (as can
10006                  happen in assembly source).  */
10007
10008               struct bound_minimal_symbol msym;
10009               struct cleanup *old_chain = save_current_space_and_thread ();
10010
10011               switch_to_program_space_and_thread (sal->pspace);
10012
10013               msym = lookup_minimal_symbol_by_pc (sal->pc);
10014               if (msym.minsym)
10015                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
10016
10017               do_cleanups (old_chain);
10018             }
10019         }
10020     }
10021 }
10022
10023 void
10024 break_command (char *arg, int from_tty)
10025 {
10026   break_command_1 (arg, 0, from_tty);
10027 }
10028
10029 void
10030 tbreak_command (char *arg, int from_tty)
10031 {
10032   break_command_1 (arg, BP_TEMPFLAG, from_tty);
10033 }
10034
10035 static void
10036 hbreak_command (char *arg, int from_tty)
10037 {
10038   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
10039 }
10040
10041 static void
10042 thbreak_command (char *arg, int from_tty)
10043 {
10044   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
10045 }
10046
10047 static void
10048 stop_command (char *arg, int from_tty)
10049 {
10050   printf_filtered (_("Specify the type of breakpoint to set.\n\
10051 Usage: stop in <function | address>\n\
10052        stop at <line>\n"));
10053 }
10054
10055 static void
10056 stopin_command (char *arg, int from_tty)
10057 {
10058   int badInput = 0;
10059
10060   if (arg == (char *) NULL)
10061     badInput = 1;
10062   else if (*arg != '*')
10063     {
10064       char *argptr = arg;
10065       int hasColon = 0;
10066
10067       /* Look for a ':'.  If this is a line number specification, then
10068          say it is bad, otherwise, it should be an address or
10069          function/method name.  */
10070       while (*argptr && !hasColon)
10071         {
10072           hasColon = (*argptr == ':');
10073           argptr++;
10074         }
10075
10076       if (hasColon)
10077         badInput = (*argptr != ':');    /* Not a class::method */
10078       else
10079         badInput = isdigit (*arg);      /* a simple line number */
10080     }
10081
10082   if (badInput)
10083     printf_filtered (_("Usage: stop in <function | address>\n"));
10084   else
10085     break_command_1 (arg, 0, from_tty);
10086 }
10087
10088 static void
10089 stopat_command (char *arg, int from_tty)
10090 {
10091   int badInput = 0;
10092
10093   if (arg == (char *) NULL || *arg == '*')      /* no line number */
10094     badInput = 1;
10095   else
10096     {
10097       char *argptr = arg;
10098       int hasColon = 0;
10099
10100       /* Look for a ':'.  If there is a '::' then get out, otherwise
10101          it is probably a line number.  */
10102       while (*argptr && !hasColon)
10103         {
10104           hasColon = (*argptr == ':');
10105           argptr++;
10106         }
10107
10108       if (hasColon)
10109         badInput = (*argptr == ':');    /* we have class::method */
10110       else
10111         badInput = !isdigit (*arg);     /* not a line number */
10112     }
10113
10114   if (badInput)
10115     printf_filtered (_("Usage: stop at <line>\n"));
10116   else
10117     break_command_1 (arg, 0, from_tty);
10118 }
10119
10120 /* The dynamic printf command is mostly like a regular breakpoint, but
10121    with a prewired command list consisting of a single output command,
10122    built from extra arguments supplied on the dprintf command
10123    line.  */
10124
10125 static void
10126 dprintf_command (char *arg, int from_tty)
10127 {
10128   event_location_up location = string_to_event_location (&arg, current_language);
10129
10130   /* If non-NULL, ARG should have been advanced past the location;
10131      the next character must be ','.  */
10132   if (arg != NULL)
10133     {
10134       if (arg[0] != ',' || arg[1] == '\0')
10135         error (_("Format string required"));
10136       else
10137         {
10138           /* Skip the comma.  */
10139           ++arg;
10140         }
10141     }
10142
10143   create_breakpoint (get_current_arch (),
10144                      location.get (),
10145                      NULL, 0, arg, 1 /* parse arg */,
10146                      0, bp_dprintf,
10147                      0 /* Ignore count */,
10148                      pending_break_support,
10149                      &dprintf_breakpoint_ops,
10150                      from_tty,
10151                      1 /* enabled */,
10152                      0 /* internal */,
10153                      0);
10154 }
10155
10156 static void
10157 agent_printf_command (char *arg, int from_tty)
10158 {
10159   error (_("May only run agent-printf on the target"));
10160 }
10161
10162 /* Implement the "breakpoint_hit" breakpoint_ops method for
10163    ranged breakpoints.  */
10164
10165 static int
10166 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10167                                   struct address_space *aspace,
10168                                   CORE_ADDR bp_addr,
10169                                   const struct target_waitstatus *ws)
10170 {
10171   if (ws->kind != TARGET_WAITKIND_STOPPED
10172       || ws->value.sig != GDB_SIGNAL_TRAP)
10173     return 0;
10174
10175   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10176                                          bl->length, aspace, bp_addr);
10177 }
10178
10179 /* Implement the "resources_needed" breakpoint_ops method for
10180    ranged breakpoints.  */
10181
10182 static int
10183 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10184 {
10185   return target_ranged_break_num_registers ();
10186 }
10187
10188 /* Implement the "print_it" breakpoint_ops method for
10189    ranged breakpoints.  */
10190
10191 static enum print_stop_action
10192 print_it_ranged_breakpoint (bpstat bs)
10193 {
10194   struct breakpoint *b = bs->breakpoint_at;
10195   struct bp_location *bl = b->loc;
10196   struct ui_out *uiout = current_uiout;
10197
10198   gdb_assert (b->type == bp_hardware_breakpoint);
10199
10200   /* Ranged breakpoints have only one location.  */
10201   gdb_assert (bl && bl->next == NULL);
10202
10203   annotate_breakpoint (b->number);
10204
10205   maybe_print_thread_hit_breakpoint (uiout);
10206
10207   if (b->disposition == disp_del)
10208     uiout->text ("Temporary ranged breakpoint ");
10209   else
10210     uiout->text ("Ranged breakpoint ");
10211   if (uiout->is_mi_like_p ())
10212     {
10213       uiout->field_string ("reason",
10214                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10215       uiout->field_string ("disp", bpdisp_text (b->disposition));
10216     }
10217   uiout->field_int ("bkptno", b->number);
10218   uiout->text (", ");
10219
10220   return PRINT_SRC_AND_LOC;
10221 }
10222
10223 /* Implement the "print_one" breakpoint_ops method for
10224    ranged breakpoints.  */
10225
10226 static void
10227 print_one_ranged_breakpoint (struct breakpoint *b,
10228                              struct bp_location **last_loc)
10229 {
10230   struct bp_location *bl = b->loc;
10231   struct value_print_options opts;
10232   struct ui_out *uiout = current_uiout;
10233
10234   /* Ranged breakpoints have only one location.  */
10235   gdb_assert (bl && bl->next == NULL);
10236
10237   get_user_print_options (&opts);
10238
10239   if (opts.addressprint)
10240     /* We don't print the address range here, it will be printed later
10241        by print_one_detail_ranged_breakpoint.  */
10242     uiout->field_skip ("addr");
10243   annotate_field (5);
10244   print_breakpoint_location (b, bl);
10245   *last_loc = bl;
10246 }
10247
10248 /* Implement the "print_one_detail" breakpoint_ops method for
10249    ranged breakpoints.  */
10250
10251 static void
10252 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10253                                     struct ui_out *uiout)
10254 {
10255   CORE_ADDR address_start, address_end;
10256   struct bp_location *bl = b->loc;
10257   string_file stb;
10258
10259   gdb_assert (bl);
10260
10261   address_start = bl->address;
10262   address_end = address_start + bl->length - 1;
10263
10264   uiout->text ("\taddress range: ");
10265   stb.printf ("[%s, %s]",
10266               print_core_address (bl->gdbarch, address_start),
10267               print_core_address (bl->gdbarch, address_end));
10268   uiout->field_stream ("addr", stb);
10269   uiout->text ("\n");
10270 }
10271
10272 /* Implement the "print_mention" breakpoint_ops method for
10273    ranged breakpoints.  */
10274
10275 static void
10276 print_mention_ranged_breakpoint (struct breakpoint *b)
10277 {
10278   struct bp_location *bl = b->loc;
10279   struct ui_out *uiout = current_uiout;
10280
10281   gdb_assert (bl);
10282   gdb_assert (b->type == bp_hardware_breakpoint);
10283
10284   if (uiout->is_mi_like_p ())
10285     return;
10286
10287   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10288                    b->number, paddress (bl->gdbarch, bl->address),
10289                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10290 }
10291
10292 /* Implement the "print_recreate" breakpoint_ops method for
10293    ranged breakpoints.  */
10294
10295 static void
10296 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10297 {
10298   fprintf_unfiltered (fp, "break-range %s, %s",
10299                       event_location_to_string (b->location.get ()),
10300                       event_location_to_string (b->location_range_end.get ()));
10301   print_recreate_thread (b, fp);
10302 }
10303
10304 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10305
10306 static struct breakpoint_ops ranged_breakpoint_ops;
10307
10308 /* Find the address where the end of the breakpoint range should be
10309    placed, given the SAL of the end of the range.  This is so that if
10310    the user provides a line number, the end of the range is set to the
10311    last instruction of the given line.  */
10312
10313 static CORE_ADDR
10314 find_breakpoint_range_end (struct symtab_and_line sal)
10315 {
10316   CORE_ADDR end;
10317
10318   /* If the user provided a PC value, use it.  Otherwise,
10319      find the address of the end of the given location.  */
10320   if (sal.explicit_pc)
10321     end = sal.pc;
10322   else
10323     {
10324       int ret;
10325       CORE_ADDR start;
10326
10327       ret = find_line_pc_range (sal, &start, &end);
10328       if (!ret)
10329         error (_("Could not find location of the end of the range."));
10330
10331       /* find_line_pc_range returns the start of the next line.  */
10332       end--;
10333     }
10334
10335   return end;
10336 }
10337
10338 /* Implement the "break-range" CLI command.  */
10339
10340 static void
10341 break_range_command (char *arg, int from_tty)
10342 {
10343   char *arg_start, *addr_string_start;
10344   struct linespec_result canonical_start, canonical_end;
10345   int bp_count, can_use_bp, length;
10346   CORE_ADDR end;
10347   struct breakpoint *b;
10348   struct symtab_and_line sal_start, sal_end;
10349   struct cleanup *cleanup_bkpt;
10350   struct linespec_sals *lsal_start, *lsal_end;
10351
10352   /* We don't support software ranged breakpoints.  */
10353   if (target_ranged_break_num_registers () < 0)
10354     error (_("This target does not support hardware ranged breakpoints."));
10355
10356   bp_count = hw_breakpoint_used_count ();
10357   bp_count += target_ranged_break_num_registers ();
10358   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10359                                                    bp_count, 0);
10360   if (can_use_bp < 0)
10361     error (_("Hardware breakpoints used exceeds limit."));
10362
10363   arg = skip_spaces (arg);
10364   if (arg == NULL || arg[0] == '\0')
10365     error(_("No address range specified."));
10366
10367   arg_start = arg;
10368   event_location_up start_location = string_to_event_location (&arg,
10369                                                                current_language);
10370   parse_breakpoint_sals (start_location.get (), &canonical_start);
10371
10372   if (arg[0] != ',')
10373     error (_("Too few arguments."));
10374   else if (VEC_empty (linespec_sals, canonical_start.sals))
10375     error (_("Could not find location of the beginning of the range."));
10376
10377   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10378
10379   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10380       || lsal_start->sals.nelts != 1)
10381     error (_("Cannot create a ranged breakpoint with multiple locations."));
10382
10383   sal_start = lsal_start->sals.sals[0];
10384   addr_string_start = savestring (arg_start, arg - arg_start);
10385   cleanup_bkpt = make_cleanup (xfree, addr_string_start);
10386
10387   arg++;        /* Skip the comma.  */
10388   arg = skip_spaces (arg);
10389
10390   /* Parse the end location.  */
10391
10392   arg_start = arg;
10393
10394   /* We call decode_line_full directly here instead of using
10395      parse_breakpoint_sals because we need to specify the start location's
10396      symtab and line as the default symtab and line for the end of the
10397      range.  This makes it possible to have ranges like "foo.c:27, +14",
10398      where +14 means 14 lines from the start location.  */
10399   event_location_up end_location = string_to_event_location (&arg,
10400                                                              current_language);
10401   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10402                     sal_start.symtab, sal_start.line,
10403                     &canonical_end, NULL, NULL);
10404
10405   if (VEC_empty (linespec_sals, canonical_end.sals))
10406     error (_("Could not find location of the end of the range."));
10407
10408   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10409   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10410       || lsal_end->sals.nelts != 1)
10411     error (_("Cannot create a ranged breakpoint with multiple locations."));
10412
10413   sal_end = lsal_end->sals.sals[0];
10414
10415   end = find_breakpoint_range_end (sal_end);
10416   if (sal_start.pc > end)
10417     error (_("Invalid address range, end precedes start."));
10418
10419   length = end - sal_start.pc + 1;
10420   if (length < 0)
10421     /* Length overflowed.  */
10422     error (_("Address range too large."));
10423   else if (length == 1)
10424     {
10425       /* This range is simple enough to be handled by
10426          the `hbreak' command.  */
10427       hbreak_command (addr_string_start, 1);
10428
10429       do_cleanups (cleanup_bkpt);
10430
10431       return;
10432     }
10433
10434   /* Now set up the breakpoint.  */
10435   b = set_raw_breakpoint (get_current_arch (), sal_start,
10436                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10437   set_breakpoint_count (breakpoint_count + 1);
10438   b->number = breakpoint_count;
10439   b->disposition = disp_donttouch;
10440   b->location = std::move (start_location);
10441   b->location_range_end = std::move (end_location);
10442   b->loc->length = length;
10443
10444   do_cleanups (cleanup_bkpt);
10445
10446   mention (b);
10447   observer_notify_breakpoint_created (b);
10448   update_global_location_list (UGLL_MAY_INSERT);
10449 }
10450
10451 /*  Return non-zero if EXP is verified as constant.  Returned zero
10452     means EXP is variable.  Also the constant detection may fail for
10453     some constant expressions and in such case still falsely return
10454     zero.  */
10455
10456 static int
10457 watchpoint_exp_is_const (const struct expression *exp)
10458 {
10459   int i = exp->nelts;
10460
10461   while (i > 0)
10462     {
10463       int oplenp, argsp;
10464
10465       /* We are only interested in the descriptor of each element.  */
10466       operator_length (exp, i, &oplenp, &argsp);
10467       i -= oplenp;
10468
10469       switch (exp->elts[i].opcode)
10470         {
10471         case BINOP_ADD:
10472         case BINOP_SUB:
10473         case BINOP_MUL:
10474         case BINOP_DIV:
10475         case BINOP_REM:
10476         case BINOP_MOD:
10477         case BINOP_LSH:
10478         case BINOP_RSH:
10479         case BINOP_LOGICAL_AND:
10480         case BINOP_LOGICAL_OR:
10481         case BINOP_BITWISE_AND:
10482         case BINOP_BITWISE_IOR:
10483         case BINOP_BITWISE_XOR:
10484         case BINOP_EQUAL:
10485         case BINOP_NOTEQUAL:
10486         case BINOP_LESS:
10487         case BINOP_GTR:
10488         case BINOP_LEQ:
10489         case BINOP_GEQ:
10490         case BINOP_REPEAT:
10491         case BINOP_COMMA:
10492         case BINOP_EXP:
10493         case BINOP_MIN:
10494         case BINOP_MAX:
10495         case BINOP_INTDIV:
10496         case BINOP_CONCAT:
10497         case TERNOP_COND:
10498         case TERNOP_SLICE:
10499
10500         case OP_LONG:
10501         case OP_DOUBLE:
10502         case OP_DECFLOAT:
10503         case OP_LAST:
10504         case OP_COMPLEX:
10505         case OP_STRING:
10506         case OP_ARRAY:
10507         case OP_TYPE:
10508         case OP_TYPEOF:
10509         case OP_DECLTYPE:
10510         case OP_TYPEID:
10511         case OP_NAME:
10512         case OP_OBJC_NSSTRING:
10513
10514         case UNOP_NEG:
10515         case UNOP_LOGICAL_NOT:
10516         case UNOP_COMPLEMENT:
10517         case UNOP_ADDR:
10518         case UNOP_HIGH:
10519         case UNOP_CAST:
10520
10521         case UNOP_CAST_TYPE:
10522         case UNOP_REINTERPRET_CAST:
10523         case UNOP_DYNAMIC_CAST:
10524           /* Unary, binary and ternary operators: We have to check
10525              their operands.  If they are constant, then so is the
10526              result of that operation.  For instance, if A and B are
10527              determined to be constants, then so is "A + B".
10528
10529              UNOP_IND is one exception to the rule above, because the
10530              value of *ADDR is not necessarily a constant, even when
10531              ADDR is.  */
10532           break;
10533
10534         case OP_VAR_VALUE:
10535           /* Check whether the associated symbol is a constant.
10536
10537              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10538              possible that a buggy compiler could mark a variable as
10539              constant even when it is not, and TYPE_CONST would return
10540              true in this case, while SYMBOL_CLASS wouldn't.
10541
10542              We also have to check for function symbols because they
10543              are always constant.  */
10544           {
10545             struct symbol *s = exp->elts[i + 2].symbol;
10546
10547             if (SYMBOL_CLASS (s) != LOC_BLOCK
10548                 && SYMBOL_CLASS (s) != LOC_CONST
10549                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10550               return 0;
10551             break;
10552           }
10553
10554         /* The default action is to return 0 because we are using
10555            the optimistic approach here: If we don't know something,
10556            then it is not a constant.  */
10557         default:
10558           return 0;
10559         }
10560     }
10561
10562   return 1;
10563 }
10564
10565 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10566
10567 static void
10568 dtor_watchpoint (struct breakpoint *self)
10569 {
10570   struct watchpoint *w = (struct watchpoint *) self;
10571
10572   xfree (w->exp_string);
10573   xfree (w->exp_string_reparse);
10574   value_free (w->val);
10575
10576   base_breakpoint_ops.dtor (self);
10577 }
10578
10579 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10580
10581 static void
10582 re_set_watchpoint (struct breakpoint *b)
10583 {
10584   struct watchpoint *w = (struct watchpoint *) b;
10585
10586   /* Watchpoint can be either on expression using entirely global
10587      variables, or it can be on local variables.
10588
10589      Watchpoints of the first kind are never auto-deleted, and even
10590      persist across program restarts.  Since they can use variables
10591      from shared libraries, we need to reparse expression as libraries
10592      are loaded and unloaded.
10593
10594      Watchpoints on local variables can also change meaning as result
10595      of solib event.  For example, if a watchpoint uses both a local
10596      and a global variables in expression, it's a local watchpoint,
10597      but unloading of a shared library will make the expression
10598      invalid.  This is not a very common use case, but we still
10599      re-evaluate expression, to avoid surprises to the user.
10600
10601      Note that for local watchpoints, we re-evaluate it only if
10602      watchpoints frame id is still valid.  If it's not, it means the
10603      watchpoint is out of scope and will be deleted soon.  In fact,
10604      I'm not sure we'll ever be called in this case.
10605
10606      If a local watchpoint's frame id is still valid, then
10607      w->exp_valid_block is likewise valid, and we can safely use it.
10608
10609      Don't do anything about disabled watchpoints, since they will be
10610      reevaluated again when enabled.  */
10611   update_watchpoint (w, 1 /* reparse */);
10612 }
10613
10614 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10615
10616 static int
10617 insert_watchpoint (struct bp_location *bl)
10618 {
10619   struct watchpoint *w = (struct watchpoint *) bl->owner;
10620   int length = w->exact ? 1 : bl->length;
10621
10622   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10623                                    w->cond_exp.get ());
10624 }
10625
10626 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10627
10628 static int
10629 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10630 {
10631   struct watchpoint *w = (struct watchpoint *) bl->owner;
10632   int length = w->exact ? 1 : bl->length;
10633
10634   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10635                                    w->cond_exp.get ());
10636 }
10637
10638 static int
10639 breakpoint_hit_watchpoint (const struct bp_location *bl,
10640                            struct address_space *aspace, CORE_ADDR bp_addr,
10641                            const struct target_waitstatus *ws)
10642 {
10643   struct breakpoint *b = bl->owner;
10644   struct watchpoint *w = (struct watchpoint *) b;
10645
10646   /* Continuable hardware watchpoints are treated as non-existent if the
10647      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10648      some data address).  Otherwise gdb won't stop on a break instruction
10649      in the code (not from a breakpoint) when a hardware watchpoint has
10650      been defined.  Also skip watchpoints which we know did not trigger
10651      (did not match the data address).  */
10652   if (is_hardware_watchpoint (b)
10653       && w->watchpoint_triggered == watch_triggered_no)
10654     return 0;
10655
10656   return 1;
10657 }
10658
10659 static void
10660 check_status_watchpoint (bpstat bs)
10661 {
10662   gdb_assert (is_watchpoint (bs->breakpoint_at));
10663
10664   bpstat_check_watchpoint (bs);
10665 }
10666
10667 /* Implement the "resources_needed" breakpoint_ops method for
10668    hardware watchpoints.  */
10669
10670 static int
10671 resources_needed_watchpoint (const struct bp_location *bl)
10672 {
10673   struct watchpoint *w = (struct watchpoint *) bl->owner;
10674   int length = w->exact? 1 : bl->length;
10675
10676   return target_region_ok_for_hw_watchpoint (bl->address, length);
10677 }
10678
10679 /* Implement the "works_in_software_mode" breakpoint_ops method for
10680    hardware watchpoints.  */
10681
10682 static int
10683 works_in_software_mode_watchpoint (const struct breakpoint *b)
10684 {
10685   /* Read and access watchpoints only work with hardware support.  */
10686   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10687 }
10688
10689 static enum print_stop_action
10690 print_it_watchpoint (bpstat bs)
10691 {
10692   struct cleanup *old_chain;
10693   struct breakpoint *b;
10694   enum print_stop_action result;
10695   struct watchpoint *w;
10696   struct ui_out *uiout = current_uiout;
10697
10698   gdb_assert (bs->bp_location_at != NULL);
10699
10700   b = bs->breakpoint_at;
10701   w = (struct watchpoint *) b;
10702
10703   old_chain = make_cleanup (null_cleanup, NULL);
10704
10705   annotate_watchpoint (b->number);
10706   maybe_print_thread_hit_breakpoint (uiout);
10707
10708   string_file stb;
10709
10710   switch (b->type)
10711     {
10712     case bp_watchpoint:
10713     case bp_hardware_watchpoint:
10714       if (uiout->is_mi_like_p ())
10715         uiout->field_string
10716           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10717       mention (b);
10718       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10719       uiout->text ("\nOld value = ");
10720       watchpoint_value_print (bs->old_val, &stb);
10721       uiout->field_stream ("old", stb);
10722       uiout->text ("\nNew value = ");
10723       watchpoint_value_print (w->val, &stb);
10724       uiout->field_stream ("new", stb);
10725       uiout->text ("\n");
10726       /* More than one watchpoint may have been triggered.  */
10727       result = PRINT_UNKNOWN;
10728       break;
10729
10730     case bp_read_watchpoint:
10731       if (uiout->is_mi_like_p ())
10732         uiout->field_string
10733           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10734       mention (b);
10735       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10736       uiout->text ("\nValue = ");
10737       watchpoint_value_print (w->val, &stb);
10738       uiout->field_stream ("value", stb);
10739       uiout->text ("\n");
10740       result = PRINT_UNKNOWN;
10741       break;
10742
10743     case bp_access_watchpoint:
10744       if (bs->old_val != NULL)
10745         {
10746           if (uiout->is_mi_like_p ())
10747             uiout->field_string
10748               ("reason",
10749                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10750           mention (b);
10751           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10752           uiout->text ("\nOld value = ");
10753           watchpoint_value_print (bs->old_val, &stb);
10754           uiout->field_stream ("old", stb);
10755           uiout->text ("\nNew value = ");
10756         }
10757       else
10758         {
10759           mention (b);
10760           if (uiout->is_mi_like_p ())
10761             uiout->field_string
10762               ("reason",
10763                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10764           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10765           uiout->text ("\nValue = ");
10766         }
10767       watchpoint_value_print (w->val, &stb);
10768       uiout->field_stream ("new", stb);
10769       uiout->text ("\n");
10770       result = PRINT_UNKNOWN;
10771       break;
10772     default:
10773       result = PRINT_UNKNOWN;
10774     }
10775
10776   do_cleanups (old_chain);
10777   return result;
10778 }
10779
10780 /* Implement the "print_mention" breakpoint_ops method for hardware
10781    watchpoints.  */
10782
10783 static void
10784 print_mention_watchpoint (struct breakpoint *b)
10785 {
10786   struct cleanup *ui_out_chain;
10787   struct watchpoint *w = (struct watchpoint *) b;
10788   struct ui_out *uiout = current_uiout;
10789
10790   switch (b->type)
10791     {
10792     case bp_watchpoint:
10793       uiout->text ("Watchpoint ");
10794       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10795       break;
10796     case bp_hardware_watchpoint:
10797       uiout->text ("Hardware watchpoint ");
10798       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10799       break;
10800     case bp_read_watchpoint:
10801       uiout->text ("Hardware read watchpoint ");
10802       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10803       break;
10804     case bp_access_watchpoint:
10805       uiout->text ("Hardware access (read/write) watchpoint ");
10806       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10807       break;
10808     default:
10809       internal_error (__FILE__, __LINE__,
10810                       _("Invalid hardware watchpoint type."));
10811     }
10812
10813   uiout->field_int ("number", b->number);
10814   uiout->text (": ");
10815   uiout->field_string ("exp", w->exp_string);
10816   do_cleanups (ui_out_chain);
10817 }
10818
10819 /* Implement the "print_recreate" breakpoint_ops method for
10820    watchpoints.  */
10821
10822 static void
10823 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10824 {
10825   struct watchpoint *w = (struct watchpoint *) b;
10826
10827   switch (b->type)
10828     {
10829     case bp_watchpoint:
10830     case bp_hardware_watchpoint:
10831       fprintf_unfiltered (fp, "watch");
10832       break;
10833     case bp_read_watchpoint:
10834       fprintf_unfiltered (fp, "rwatch");
10835       break;
10836     case bp_access_watchpoint:
10837       fprintf_unfiltered (fp, "awatch");
10838       break;
10839     default:
10840       internal_error (__FILE__, __LINE__,
10841                       _("Invalid watchpoint type."));
10842     }
10843
10844   fprintf_unfiltered (fp, " %s", w->exp_string);
10845   print_recreate_thread (b, fp);
10846 }
10847
10848 /* Implement the "explains_signal" breakpoint_ops method for
10849    watchpoints.  */
10850
10851 static int
10852 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10853 {
10854   /* A software watchpoint cannot cause a signal other than
10855      GDB_SIGNAL_TRAP.  */
10856   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10857     return 0;
10858
10859   return 1;
10860 }
10861
10862 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10863
10864 static struct breakpoint_ops watchpoint_breakpoint_ops;
10865
10866 /* Implement the "insert" breakpoint_ops method for
10867    masked hardware watchpoints.  */
10868
10869 static int
10870 insert_masked_watchpoint (struct bp_location *bl)
10871 {
10872   struct watchpoint *w = (struct watchpoint *) bl->owner;
10873
10874   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10875                                         bl->watchpoint_type);
10876 }
10877
10878 /* Implement the "remove" breakpoint_ops method for
10879    masked hardware watchpoints.  */
10880
10881 static int
10882 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10883 {
10884   struct watchpoint *w = (struct watchpoint *) bl->owner;
10885
10886   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10887                                         bl->watchpoint_type);
10888 }
10889
10890 /* Implement the "resources_needed" breakpoint_ops method for
10891    masked hardware watchpoints.  */
10892
10893 static int
10894 resources_needed_masked_watchpoint (const struct bp_location *bl)
10895 {
10896   struct watchpoint *w = (struct watchpoint *) bl->owner;
10897
10898   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10899 }
10900
10901 /* Implement the "works_in_software_mode" breakpoint_ops method for
10902    masked hardware watchpoints.  */
10903
10904 static int
10905 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10906 {
10907   return 0;
10908 }
10909
10910 /* Implement the "print_it" breakpoint_ops method for
10911    masked hardware watchpoints.  */
10912
10913 static enum print_stop_action
10914 print_it_masked_watchpoint (bpstat bs)
10915 {
10916   struct breakpoint *b = bs->breakpoint_at;
10917   struct ui_out *uiout = current_uiout;
10918
10919   /* Masked watchpoints have only one location.  */
10920   gdb_assert (b->loc && b->loc->next == NULL);
10921
10922   annotate_watchpoint (b->number);
10923   maybe_print_thread_hit_breakpoint (uiout);
10924
10925   switch (b->type)
10926     {
10927     case bp_hardware_watchpoint:
10928       if (uiout->is_mi_like_p ())
10929         uiout->field_string
10930           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10931       break;
10932
10933     case bp_read_watchpoint:
10934       if (uiout->is_mi_like_p ())
10935         uiout->field_string
10936           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10937       break;
10938
10939     case bp_access_watchpoint:
10940       if (uiout->is_mi_like_p ())
10941         uiout->field_string
10942           ("reason",
10943            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10944       break;
10945     default:
10946       internal_error (__FILE__, __LINE__,
10947                       _("Invalid hardware watchpoint type."));
10948     }
10949
10950   mention (b);
10951   uiout->text (_("\n\
10952 Check the underlying instruction at PC for the memory\n\
10953 address and value which triggered this watchpoint.\n"));
10954   uiout->text ("\n");
10955
10956   /* More than one watchpoint may have been triggered.  */
10957   return PRINT_UNKNOWN;
10958 }
10959
10960 /* Implement the "print_one_detail" breakpoint_ops method for
10961    masked hardware watchpoints.  */
10962
10963 static void
10964 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10965                                     struct ui_out *uiout)
10966 {
10967   struct watchpoint *w = (struct watchpoint *) b;
10968
10969   /* Masked watchpoints have only one location.  */
10970   gdb_assert (b->loc && b->loc->next == NULL);
10971
10972   uiout->text ("\tmask ");
10973   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10974   uiout->text ("\n");
10975 }
10976
10977 /* Implement the "print_mention" breakpoint_ops method for
10978    masked hardware watchpoints.  */
10979
10980 static void
10981 print_mention_masked_watchpoint (struct breakpoint *b)
10982 {
10983   struct watchpoint *w = (struct watchpoint *) b;
10984   struct ui_out *uiout = current_uiout;
10985   struct cleanup *ui_out_chain;
10986
10987   switch (b->type)
10988     {
10989     case bp_hardware_watchpoint:
10990       uiout->text ("Masked hardware watchpoint ");
10991       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10992       break;
10993     case bp_read_watchpoint:
10994       uiout->text ("Masked hardware read watchpoint ");
10995       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10996       break;
10997     case bp_access_watchpoint:
10998       uiout->text ("Masked hardware access (read/write) watchpoint ");
10999       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11000       break;
11001     default:
11002       internal_error (__FILE__, __LINE__,
11003                       _("Invalid hardware watchpoint type."));
11004     }
11005
11006   uiout->field_int ("number", b->number);
11007   uiout->text (": ");
11008   uiout->field_string ("exp", w->exp_string);
11009   do_cleanups (ui_out_chain);
11010 }
11011
11012 /* Implement the "print_recreate" breakpoint_ops method for
11013    masked hardware watchpoints.  */
11014
11015 static void
11016 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
11017 {
11018   struct watchpoint *w = (struct watchpoint *) b;
11019   char tmp[40];
11020
11021   switch (b->type)
11022     {
11023     case bp_hardware_watchpoint:
11024       fprintf_unfiltered (fp, "watch");
11025       break;
11026     case bp_read_watchpoint:
11027       fprintf_unfiltered (fp, "rwatch");
11028       break;
11029     case bp_access_watchpoint:
11030       fprintf_unfiltered (fp, "awatch");
11031       break;
11032     default:
11033       internal_error (__FILE__, __LINE__,
11034                       _("Invalid hardware watchpoint type."));
11035     }
11036
11037   sprintf_vma (tmp, w->hw_wp_mask);
11038   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
11039   print_recreate_thread (b, fp);
11040 }
11041
11042 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
11043
11044 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
11045
11046 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
11047
11048 static int
11049 is_masked_watchpoint (const struct breakpoint *b)
11050 {
11051   return b->ops == &masked_watchpoint_breakpoint_ops;
11052 }
11053
11054 /* accessflag:  hw_write:  watch write, 
11055                 hw_read:   watch read, 
11056                 hw_access: watch access (read or write) */
11057 static void
11058 watch_command_1 (const char *arg, int accessflag, int from_tty,
11059                  int just_location, int internal)
11060 {
11061   struct breakpoint *b, *scope_breakpoint = NULL;
11062   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
11063   struct value *val, *mark, *result;
11064   int saved_bitpos = 0, saved_bitsize = 0;
11065   struct frame_info *frame;
11066   const char *exp_start = NULL;
11067   const char *exp_end = NULL;
11068   const char *tok, *end_tok;
11069   int toklen = -1;
11070   const char *cond_start = NULL;
11071   const char *cond_end = NULL;
11072   enum bptype bp_type;
11073   int thread = -1;
11074   int pc = 0;
11075   /* Flag to indicate whether we are going to use masks for
11076      the hardware watchpoint.  */
11077   int use_mask = 0;
11078   CORE_ADDR mask = 0;
11079   struct watchpoint *w;
11080   char *expression;
11081   struct cleanup *back_to;
11082
11083   /* Make sure that we actually have parameters to parse.  */
11084   if (arg != NULL && arg[0] != '\0')
11085     {
11086       const char *value_start;
11087
11088       exp_end = arg + strlen (arg);
11089
11090       /* Look for "parameter value" pairs at the end
11091          of the arguments string.  */
11092       for (tok = exp_end - 1; tok > arg; tok--)
11093         {
11094           /* Skip whitespace at the end of the argument list.  */
11095           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11096             tok--;
11097
11098           /* Find the beginning of the last token.
11099              This is the value of the parameter.  */
11100           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11101             tok--;
11102           value_start = tok + 1;
11103
11104           /* Skip whitespace.  */
11105           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11106             tok--;
11107
11108           end_tok = tok;
11109
11110           /* Find the beginning of the second to last token.
11111              This is the parameter itself.  */
11112           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11113             tok--;
11114           tok++;
11115           toklen = end_tok - tok + 1;
11116
11117           if (toklen == 6 && startswith (tok, "thread"))
11118             {
11119               struct thread_info *thr;
11120               /* At this point we've found a "thread" token, which means
11121                  the user is trying to set a watchpoint that triggers
11122                  only in a specific thread.  */
11123               const char *endp;
11124
11125               if (thread != -1)
11126                 error(_("You can specify only one thread."));
11127
11128               /* Extract the thread ID from the next token.  */
11129               thr = parse_thread_id (value_start, &endp);
11130
11131               /* Check if the user provided a valid thread ID.  */
11132               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11133                 invalid_thread_id_error (value_start);
11134
11135               thread = thr->global_num;
11136             }
11137           else if (toklen == 4 && startswith (tok, "mask"))
11138             {
11139               /* We've found a "mask" token, which means the user wants to
11140                  create a hardware watchpoint that is going to have the mask
11141                  facility.  */
11142               struct value *mask_value, *mark;
11143
11144               if (use_mask)
11145                 error(_("You can specify only one mask."));
11146
11147               use_mask = just_location = 1;
11148
11149               mark = value_mark ();
11150               mask_value = parse_to_comma_and_eval (&value_start);
11151               mask = value_as_address (mask_value);
11152               value_free_to_mark (mark);
11153             }
11154           else
11155             /* We didn't recognize what we found.  We should stop here.  */
11156             break;
11157
11158           /* Truncate the string and get rid of the "parameter value" pair before
11159              the arguments string is parsed by the parse_exp_1 function.  */
11160           exp_end = tok;
11161         }
11162     }
11163   else
11164     exp_end = arg;
11165
11166   /* Parse the rest of the arguments.  From here on out, everything
11167      is in terms of a newly allocated string instead of the original
11168      ARG.  */
11169   innermost_block = NULL;
11170   expression = savestring (arg, exp_end - arg);
11171   back_to = make_cleanup (xfree, expression);
11172   exp_start = arg = expression;
11173   expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
11174   exp_end = arg;
11175   /* Remove trailing whitespace from the expression before saving it.
11176      This makes the eventual display of the expression string a bit
11177      prettier.  */
11178   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11179     --exp_end;
11180
11181   /* Checking if the expression is not constant.  */
11182   if (watchpoint_exp_is_const (exp.get ()))
11183     {
11184       int len;
11185
11186       len = exp_end - exp_start;
11187       while (len > 0 && isspace (exp_start[len - 1]))
11188         len--;
11189       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11190     }
11191
11192   exp_valid_block = innermost_block;
11193   mark = value_mark ();
11194   fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
11195
11196   if (val != NULL && just_location)
11197     {
11198       saved_bitpos = value_bitpos (val);
11199       saved_bitsize = value_bitsize (val);
11200     }
11201
11202   if (just_location)
11203     {
11204       int ret;
11205
11206       exp_valid_block = NULL;
11207       val = value_addr (result);
11208       release_value (val);
11209       value_free_to_mark (mark);
11210
11211       if (use_mask)
11212         {
11213           ret = target_masked_watch_num_registers (value_as_address (val),
11214                                                    mask);
11215           if (ret == -1)
11216             error (_("This target does not support masked watchpoints."));
11217           else if (ret == -2)
11218             error (_("Invalid mask or memory region."));
11219         }
11220     }
11221   else if (val != NULL)
11222     release_value (val);
11223
11224   tok = skip_spaces_const (arg);
11225   end_tok = skip_to_space_const (tok);
11226
11227   toklen = end_tok - tok;
11228   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11229     {
11230       innermost_block = NULL;
11231       tok = cond_start = end_tok + 1;
11232       parse_exp_1 (&tok, 0, 0, 0);
11233
11234       /* The watchpoint expression may not be local, but the condition
11235          may still be.  E.g.: `watch global if local > 0'.  */
11236       cond_exp_valid_block = innermost_block;
11237
11238       cond_end = tok;
11239     }
11240   if (*tok)
11241     error (_("Junk at end of command."));
11242
11243   frame = block_innermost_frame (exp_valid_block);
11244
11245   /* If the expression is "local", then set up a "watchpoint scope"
11246      breakpoint at the point where we've left the scope of the watchpoint
11247      expression.  Create the scope breakpoint before the watchpoint, so
11248      that we will encounter it first in bpstat_stop_status.  */
11249   if (exp_valid_block && frame)
11250     {
11251       if (frame_id_p (frame_unwind_caller_id (frame)))
11252         {
11253           scope_breakpoint
11254             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11255                                           frame_unwind_caller_pc (frame),
11256                                           bp_watchpoint_scope,
11257                                           &momentary_breakpoint_ops);
11258
11259           scope_breakpoint->enable_state = bp_enabled;
11260
11261           /* Automatically delete the breakpoint when it hits.  */
11262           scope_breakpoint->disposition = disp_del;
11263
11264           /* Only break in the proper frame (help with recursion).  */
11265           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11266
11267           /* Set the address at which we will stop.  */
11268           scope_breakpoint->loc->gdbarch
11269             = frame_unwind_caller_arch (frame);
11270           scope_breakpoint->loc->requested_address
11271             = frame_unwind_caller_pc (frame);
11272           scope_breakpoint->loc->address
11273             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11274                                          scope_breakpoint->loc->requested_address,
11275                                          scope_breakpoint->type);
11276         }
11277     }
11278
11279   /* Now set up the breakpoint.  We create all watchpoints as hardware
11280      watchpoints here even if hardware watchpoints are turned off, a call
11281      to update_watchpoint later in this function will cause the type to
11282      drop back to bp_watchpoint (software watchpoint) if required.  */
11283
11284   if (accessflag == hw_read)
11285     bp_type = bp_read_watchpoint;
11286   else if (accessflag == hw_access)
11287     bp_type = bp_access_watchpoint;
11288   else
11289     bp_type = bp_hardware_watchpoint;
11290
11291   w = new watchpoint ();
11292   b = &w->base;
11293   if (use_mask)
11294     init_raw_breakpoint_without_location (b, NULL, bp_type,
11295                                           &masked_watchpoint_breakpoint_ops);
11296   else
11297     init_raw_breakpoint_without_location (b, NULL, bp_type,
11298                                           &watchpoint_breakpoint_ops);
11299   b->thread = thread;
11300   b->disposition = disp_donttouch;
11301   b->pspace = current_program_space;
11302   w->exp = std::move (exp);
11303   w->exp_valid_block = exp_valid_block;
11304   w->cond_exp_valid_block = cond_exp_valid_block;
11305   if (just_location)
11306     {
11307       struct type *t = value_type (val);
11308       CORE_ADDR addr = value_as_address (val);
11309
11310       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11311
11312       std::string name = type_to_string (t);
11313
11314       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name.c_str (),
11315                                           core_addr_to_string (addr));
11316
11317       w->exp_string = xstrprintf ("-location %.*s",
11318                                   (int) (exp_end - exp_start), exp_start);
11319
11320       /* The above expression is in C.  */
11321       b->language = language_c;
11322     }
11323   else
11324     w->exp_string = savestring (exp_start, exp_end - exp_start);
11325
11326   if (use_mask)
11327     {
11328       w->hw_wp_mask = mask;
11329     }
11330   else
11331     {
11332       w->val = val;
11333       w->val_bitpos = saved_bitpos;
11334       w->val_bitsize = saved_bitsize;
11335       w->val_valid = 1;
11336     }
11337
11338   if (cond_start)
11339     b->cond_string = savestring (cond_start, cond_end - cond_start);
11340   else
11341     b->cond_string = 0;
11342
11343   if (frame)
11344     {
11345       w->watchpoint_frame = get_frame_id (frame);
11346       w->watchpoint_thread = inferior_ptid;
11347     }
11348   else
11349     {
11350       w->watchpoint_frame = null_frame_id;
11351       w->watchpoint_thread = null_ptid;
11352     }
11353
11354   if (scope_breakpoint != NULL)
11355     {
11356       /* The scope breakpoint is related to the watchpoint.  We will
11357          need to act on them together.  */
11358       b->related_breakpoint = scope_breakpoint;
11359       scope_breakpoint->related_breakpoint = b;
11360     }
11361
11362   if (!just_location)
11363     value_free_to_mark (mark);
11364
11365   TRY
11366     {
11367       /* Finally update the new watchpoint.  This creates the locations
11368          that should be inserted.  */
11369       update_watchpoint (w, 1);
11370     }
11371   CATCH (e, RETURN_MASK_ALL)
11372     {
11373       delete_breakpoint (b);
11374       throw_exception (e);
11375     }
11376   END_CATCH
11377
11378   install_breakpoint (internal, b, 1);
11379   do_cleanups (back_to);
11380 }
11381
11382 /* Return count of debug registers needed to watch the given expression.
11383    If the watchpoint cannot be handled in hardware return zero.  */
11384
11385 static int
11386 can_use_hardware_watchpoint (struct value *v)
11387 {
11388   int found_memory_cnt = 0;
11389   struct value *head = v;
11390
11391   /* Did the user specifically forbid us to use hardware watchpoints? */
11392   if (!can_use_hw_watchpoints)
11393     return 0;
11394
11395   /* Make sure that the value of the expression depends only upon
11396      memory contents, and values computed from them within GDB.  If we
11397      find any register references or function calls, we can't use a
11398      hardware watchpoint.
11399
11400      The idea here is that evaluating an expression generates a series
11401      of values, one holding the value of every subexpression.  (The
11402      expression a*b+c has five subexpressions: a, b, a*b, c, and
11403      a*b+c.)  GDB's values hold almost enough information to establish
11404      the criteria given above --- they identify memory lvalues,
11405      register lvalues, computed values, etcetera.  So we can evaluate
11406      the expression, and then scan the chain of values that leaves
11407      behind to decide whether we can detect any possible change to the
11408      expression's final value using only hardware watchpoints.
11409
11410      However, I don't think that the values returned by inferior
11411      function calls are special in any way.  So this function may not
11412      notice that an expression involving an inferior function call
11413      can't be watched with hardware watchpoints.  FIXME.  */
11414   for (; v; v = value_next (v))
11415     {
11416       if (VALUE_LVAL (v) == lval_memory)
11417         {
11418           if (v != head && value_lazy (v))
11419             /* A lazy memory lvalue in the chain is one that GDB never
11420                needed to fetch; we either just used its address (e.g.,
11421                `a' in `a.b') or we never needed it at all (e.g., `a'
11422                in `a,b').  This doesn't apply to HEAD; if that is
11423                lazy then it was not readable, but watch it anyway.  */
11424             ;
11425           else
11426             {
11427               /* Ahh, memory we actually used!  Check if we can cover
11428                  it with hardware watchpoints.  */
11429               struct type *vtype = check_typedef (value_type (v));
11430
11431               /* We only watch structs and arrays if user asked for it
11432                  explicitly, never if they just happen to appear in a
11433                  middle of some value chain.  */
11434               if (v == head
11435                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11436                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11437                 {
11438                   CORE_ADDR vaddr = value_address (v);
11439                   int len;
11440                   int num_regs;
11441
11442                   len = (target_exact_watchpoints
11443                          && is_scalar_type_recursive (vtype))?
11444                     1 : TYPE_LENGTH (value_type (v));
11445
11446                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11447                   if (!num_regs)
11448                     return 0;
11449                   else
11450                     found_memory_cnt += num_regs;
11451                 }
11452             }
11453         }
11454       else if (VALUE_LVAL (v) != not_lval
11455                && deprecated_value_modifiable (v) == 0)
11456         return 0;       /* These are values from the history (e.g., $1).  */
11457       else if (VALUE_LVAL (v) == lval_register)
11458         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11459     }
11460
11461   /* The expression itself looks suitable for using a hardware
11462      watchpoint, but give the target machine a chance to reject it.  */
11463   return found_memory_cnt;
11464 }
11465
11466 void
11467 watch_command_wrapper (char *arg, int from_tty, int internal)
11468 {
11469   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11470 }
11471
11472 /* A helper function that looks for the "-location" argument and then
11473    calls watch_command_1.  */
11474
11475 static void
11476 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11477 {
11478   int just_location = 0;
11479
11480   if (arg
11481       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11482           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11483     {
11484       arg = skip_spaces (arg);
11485       just_location = 1;
11486     }
11487
11488   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11489 }
11490
11491 static void
11492 watch_command (char *arg, int from_tty)
11493 {
11494   watch_maybe_just_location (arg, hw_write, from_tty);
11495 }
11496
11497 void
11498 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11499 {
11500   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11501 }
11502
11503 static void
11504 rwatch_command (char *arg, int from_tty)
11505 {
11506   watch_maybe_just_location (arg, hw_read, from_tty);
11507 }
11508
11509 void
11510 awatch_command_wrapper (char *arg, int from_tty, int internal)
11511 {
11512   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11513 }
11514
11515 static void
11516 awatch_command (char *arg, int from_tty)
11517 {
11518   watch_maybe_just_location (arg, hw_access, from_tty);
11519 }
11520 \f
11521
11522 /* Data for the FSM that manages the until(location)/advance commands
11523    in infcmd.c.  Here because it uses the mechanisms of
11524    breakpoints.  */
11525
11526 struct until_break_fsm
11527 {
11528   /* The base class.  */
11529   struct thread_fsm thread_fsm;
11530
11531   /* The thread that as current when the command was executed.  */
11532   int thread;
11533
11534   /* The breakpoint set at the destination location.  */
11535   struct breakpoint *location_breakpoint;
11536
11537   /* Breakpoint set at the return address in the caller frame.  May be
11538      NULL.  */
11539   struct breakpoint *caller_breakpoint;
11540 };
11541
11542 static void until_break_fsm_clean_up (struct thread_fsm *self,
11543                                       struct thread_info *thread);
11544 static int until_break_fsm_should_stop (struct thread_fsm *self,
11545                                         struct thread_info *thread);
11546 static enum async_reply_reason
11547   until_break_fsm_async_reply_reason (struct thread_fsm *self);
11548
11549 /* until_break_fsm's vtable.  */
11550
11551 static struct thread_fsm_ops until_break_fsm_ops =
11552 {
11553   NULL, /* dtor */
11554   until_break_fsm_clean_up,
11555   until_break_fsm_should_stop,
11556   NULL, /* return_value */
11557   until_break_fsm_async_reply_reason,
11558 };
11559
11560 /* Allocate a new until_break_command_fsm.  */
11561
11562 static struct until_break_fsm *
11563 new_until_break_fsm (struct interp *cmd_interp, int thread,
11564                      struct breakpoint *location_breakpoint,
11565                      struct breakpoint *caller_breakpoint)
11566 {
11567   struct until_break_fsm *sm;
11568
11569   sm = XCNEW (struct until_break_fsm);
11570   thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11571
11572   sm->thread = thread;
11573   sm->location_breakpoint = location_breakpoint;
11574   sm->caller_breakpoint = caller_breakpoint;
11575
11576   return sm;
11577 }
11578
11579 /* Implementation of the 'should_stop' FSM method for the
11580    until(location)/advance commands.  */
11581
11582 static int
11583 until_break_fsm_should_stop (struct thread_fsm *self,
11584                              struct thread_info *tp)
11585 {
11586   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11587
11588   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11589                               sm->location_breakpoint) != NULL
11590       || (sm->caller_breakpoint != NULL
11591           && bpstat_find_breakpoint (tp->control.stop_bpstat,
11592                                      sm->caller_breakpoint) != NULL))
11593     thread_fsm_set_finished (self);
11594
11595   return 1;
11596 }
11597
11598 /* Implementation of the 'clean_up' FSM method for the
11599    until(location)/advance commands.  */
11600
11601 static void
11602 until_break_fsm_clean_up (struct thread_fsm *self,
11603                           struct thread_info *thread)
11604 {
11605   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11606
11607   /* Clean up our temporary breakpoints.  */
11608   if (sm->location_breakpoint != NULL)
11609     {
11610       delete_breakpoint (sm->location_breakpoint);
11611       sm->location_breakpoint = NULL;
11612     }
11613   if (sm->caller_breakpoint != NULL)
11614     {
11615       delete_breakpoint (sm->caller_breakpoint);
11616       sm->caller_breakpoint = NULL;
11617     }
11618   delete_longjmp_breakpoint (sm->thread);
11619 }
11620
11621 /* Implementation of the 'async_reply_reason' FSM method for the
11622    until(location)/advance commands.  */
11623
11624 static enum async_reply_reason
11625 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11626 {
11627   return EXEC_ASYNC_LOCATION_REACHED;
11628 }
11629
11630 void
11631 until_break_command (char *arg, int from_tty, int anywhere)
11632 {
11633   struct symtabs_and_lines sals;
11634   struct symtab_and_line sal;
11635   struct frame_info *frame;
11636   struct gdbarch *frame_gdbarch;
11637   struct frame_id stack_frame_id;
11638   struct frame_id caller_frame_id;
11639   struct breakpoint *location_breakpoint;
11640   struct breakpoint *caller_breakpoint = NULL;
11641   struct cleanup *old_chain;
11642   int thread;
11643   struct thread_info *tp;
11644   struct until_break_fsm *sm;
11645
11646   clear_proceed_status (0);
11647
11648   /* Set a breakpoint where the user wants it and at return from
11649      this function.  */
11650
11651   event_location_up location = string_to_event_location (&arg, current_language);
11652
11653   if (last_displayed_sal_is_valid ())
11654     sals = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11655                           get_last_displayed_symtab (),
11656                           get_last_displayed_line ());
11657   else
11658     sals = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11659                           NULL, (struct symtab *) NULL, 0);
11660
11661   if (sals.nelts != 1)
11662     error (_("Couldn't get information on specified line."));
11663
11664   sal = sals.sals[0];
11665   xfree (sals.sals);    /* malloc'd, so freed.  */
11666
11667   if (*arg)
11668     error (_("Junk at end of arguments."));
11669
11670   resolve_sal_pc (&sal);
11671
11672   tp = inferior_thread ();
11673   thread = tp->global_num;
11674
11675   old_chain = make_cleanup (null_cleanup, NULL);
11676
11677   /* Note linespec handling above invalidates the frame chain.
11678      Installing a breakpoint also invalidates the frame chain (as it
11679      may need to switch threads), so do any frame handling before
11680      that.  */
11681
11682   frame = get_selected_frame (NULL);
11683   frame_gdbarch = get_frame_arch (frame);
11684   stack_frame_id = get_stack_frame_id (frame);
11685   caller_frame_id = frame_unwind_caller_id (frame);
11686
11687   /* Keep within the current frame, or in frames called by the current
11688      one.  */
11689
11690   if (frame_id_p (caller_frame_id))
11691     {
11692       struct symtab_and_line sal2;
11693       struct gdbarch *caller_gdbarch;
11694
11695       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11696       sal2.pc = frame_unwind_caller_pc (frame);
11697       caller_gdbarch = frame_unwind_caller_arch (frame);
11698       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11699                                                     sal2,
11700                                                     caller_frame_id,
11701                                                     bp_until);
11702       make_cleanup_delete_breakpoint (caller_breakpoint);
11703
11704       set_longjmp_breakpoint (tp, caller_frame_id);
11705       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11706     }
11707
11708   /* set_momentary_breakpoint could invalidate FRAME.  */
11709   frame = NULL;
11710
11711   if (anywhere)
11712     /* If the user told us to continue until a specified location,
11713        we don't specify a frame at which we need to stop.  */
11714     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11715                                                     null_frame_id, bp_until);
11716   else
11717     /* Otherwise, specify the selected frame, because we want to stop
11718        only at the very same frame.  */
11719     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11720                                                     stack_frame_id, bp_until);
11721   make_cleanup_delete_breakpoint (location_breakpoint);
11722
11723   sm = new_until_break_fsm (command_interp (), tp->global_num,
11724                             location_breakpoint, caller_breakpoint);
11725   tp->thread_fsm = &sm->thread_fsm;
11726
11727   discard_cleanups (old_chain);
11728
11729   proceed (-1, GDB_SIGNAL_DEFAULT);
11730 }
11731
11732 /* This function attempts to parse an optional "if <cond>" clause
11733    from the arg string.  If one is not found, it returns NULL.
11734
11735    Else, it returns a pointer to the condition string.  (It does not
11736    attempt to evaluate the string against a particular block.)  And,
11737    it updates arg to point to the first character following the parsed
11738    if clause in the arg string.  */
11739
11740 const char *
11741 ep_parse_optional_if_clause (const char **arg)
11742 {
11743   const char *cond_string;
11744
11745   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11746     return NULL;
11747
11748   /* Skip the "if" keyword.  */
11749   (*arg) += 2;
11750
11751   /* Skip any extra leading whitespace, and record the start of the
11752      condition string.  */
11753   *arg = skip_spaces_const (*arg);
11754   cond_string = *arg;
11755
11756   /* Assume that the condition occupies the remainder of the arg
11757      string.  */
11758   (*arg) += strlen (cond_string);
11759
11760   return cond_string;
11761 }
11762
11763 /* Commands to deal with catching events, such as signals, exceptions,
11764    process start/exit, etc.  */
11765
11766 typedef enum
11767 {
11768   catch_fork_temporary, catch_vfork_temporary,
11769   catch_fork_permanent, catch_vfork_permanent
11770 }
11771 catch_fork_kind;
11772
11773 static void
11774 catch_fork_command_1 (char *arg_entry, int from_tty,
11775                       struct cmd_list_element *command)
11776 {
11777   const char *arg = arg_entry;
11778   struct gdbarch *gdbarch = get_current_arch ();
11779   const char *cond_string = NULL;
11780   catch_fork_kind fork_kind;
11781   int tempflag;
11782
11783   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11784   tempflag = (fork_kind == catch_fork_temporary
11785               || fork_kind == catch_vfork_temporary);
11786
11787   if (!arg)
11788     arg = "";
11789   arg = skip_spaces_const (arg);
11790
11791   /* The allowed syntax is:
11792      catch [v]fork
11793      catch [v]fork if <cond>
11794
11795      First, check if there's an if clause.  */
11796   cond_string = ep_parse_optional_if_clause (&arg);
11797
11798   if ((*arg != '\0') && !isspace (*arg))
11799     error (_("Junk at end of arguments."));
11800
11801   /* If this target supports it, create a fork or vfork catchpoint
11802      and enable reporting of such events.  */
11803   switch (fork_kind)
11804     {
11805     case catch_fork_temporary:
11806     case catch_fork_permanent:
11807       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11808                                           &catch_fork_breakpoint_ops);
11809       break;
11810     case catch_vfork_temporary:
11811     case catch_vfork_permanent:
11812       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11813                                           &catch_vfork_breakpoint_ops);
11814       break;
11815     default:
11816       error (_("unsupported or unknown fork kind; cannot catch it"));
11817       break;
11818     }
11819 }
11820
11821 static void
11822 catch_exec_command_1 (char *arg_entry, int from_tty,
11823                       struct cmd_list_element *command)
11824 {
11825   const char *arg = arg_entry;
11826   struct exec_catchpoint *c;
11827   struct gdbarch *gdbarch = get_current_arch ();
11828   int tempflag;
11829   const char *cond_string = NULL;
11830
11831   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11832
11833   if (!arg)
11834     arg = "";
11835   arg = skip_spaces_const (arg);
11836
11837   /* The allowed syntax is:
11838      catch exec
11839      catch exec if <cond>
11840
11841      First, check if there's an if clause.  */
11842   cond_string = ep_parse_optional_if_clause (&arg);
11843
11844   if ((*arg != '\0') && !isspace (*arg))
11845     error (_("Junk at end of arguments."));
11846
11847   c = new exec_catchpoint ();
11848   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11849                    &catch_exec_breakpoint_ops);
11850   c->exec_pathname = NULL;
11851
11852   install_breakpoint (0, &c->base, 1);
11853 }
11854
11855 void
11856 init_ada_exception_breakpoint (struct breakpoint *b,
11857                                struct gdbarch *gdbarch,
11858                                struct symtab_and_line sal,
11859                                char *addr_string,
11860                                const struct breakpoint_ops *ops,
11861                                int tempflag,
11862                                int enabled,
11863                                int from_tty)
11864 {
11865   if (from_tty)
11866     {
11867       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11868       if (!loc_gdbarch)
11869         loc_gdbarch = gdbarch;
11870
11871       describe_other_breakpoints (loc_gdbarch,
11872                                   sal.pspace, sal.pc, sal.section, -1);
11873       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11874          version for exception catchpoints, because two catchpoints
11875          used for different exception names will use the same address.
11876          In this case, a "breakpoint ... also set at..." warning is
11877          unproductive.  Besides, the warning phrasing is also a bit
11878          inappropriate, we should use the word catchpoint, and tell
11879          the user what type of catchpoint it is.  The above is good
11880          enough for now, though.  */
11881     }
11882
11883   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11884
11885   b->enable_state = enabled ? bp_enabled : bp_disabled;
11886   b->disposition = tempflag ? disp_del : disp_donttouch;
11887   b->location = string_to_event_location (&addr_string,
11888                                           language_def (language_ada));
11889   b->language = language_ada;
11890 }
11891
11892 static void
11893 catch_command (char *arg, int from_tty)
11894 {
11895   error (_("Catch requires an event name."));
11896 }
11897 \f
11898
11899 static void
11900 tcatch_command (char *arg, int from_tty)
11901 {
11902   error (_("Catch requires an event name."));
11903 }
11904
11905 /* A qsort comparison function that sorts breakpoints in order.  */
11906
11907 static int
11908 compare_breakpoints (const void *a, const void *b)
11909 {
11910   const breakpoint_p *ba = (const breakpoint_p *) a;
11911   uintptr_t ua = (uintptr_t) *ba;
11912   const breakpoint_p *bb = (const breakpoint_p *) b;
11913   uintptr_t ub = (uintptr_t) *bb;
11914
11915   if ((*ba)->number < (*bb)->number)
11916     return -1;
11917   else if ((*ba)->number > (*bb)->number)
11918     return 1;
11919
11920   /* Now sort by address, in case we see, e..g, two breakpoints with
11921      the number 0.  */
11922   if (ua < ub)
11923     return -1;
11924   return ua > ub ? 1 : 0;
11925 }
11926
11927 /* Delete breakpoints by address or line.  */
11928
11929 static void
11930 clear_command (char *arg, int from_tty)
11931 {
11932   struct breakpoint *b, *prev;
11933   VEC(breakpoint_p) *found = 0;
11934   int ix;
11935   int default_match;
11936   struct symtabs_and_lines sals;
11937   struct symtab_and_line sal;
11938   int i;
11939   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11940
11941   if (arg)
11942     {
11943       sals = decode_line_with_current_source (arg,
11944                                               (DECODE_LINE_FUNFIRSTLINE
11945                                                | DECODE_LINE_LIST_MODE));
11946       make_cleanup (xfree, sals.sals);
11947       default_match = 0;
11948     }
11949   else
11950     {
11951       sals.sals = XNEW (struct symtab_and_line);
11952       make_cleanup (xfree, sals.sals);
11953       init_sal (&sal);          /* Initialize to zeroes.  */
11954
11955       /* Set sal's line, symtab, pc, and pspace to the values
11956          corresponding to the last call to print_frame_info.  If the
11957          codepoint is not valid, this will set all the fields to 0.  */
11958       get_last_displayed_sal (&sal);
11959       if (sal.symtab == 0)
11960         error (_("No source file specified."));
11961
11962       sals.sals[0] = sal;
11963       sals.nelts = 1;
11964
11965       default_match = 1;
11966     }
11967
11968   /* We don't call resolve_sal_pc here.  That's not as bad as it
11969      seems, because all existing breakpoints typically have both
11970      file/line and pc set.  So, if clear is given file/line, we can
11971      match this to existing breakpoint without obtaining pc at all.
11972
11973      We only support clearing given the address explicitly 
11974      present in breakpoint table.  Say, we've set breakpoint 
11975      at file:line.  There were several PC values for that file:line,
11976      due to optimization, all in one block.
11977
11978      We've picked one PC value.  If "clear" is issued with another
11979      PC corresponding to the same file:line, the breakpoint won't
11980      be cleared.  We probably can still clear the breakpoint, but 
11981      since the other PC value is never presented to user, user
11982      can only find it by guessing, and it does not seem important
11983      to support that.  */
11984
11985   /* For each line spec given, delete bps which correspond to it.  Do
11986      it in two passes, solely to preserve the current behavior that
11987      from_tty is forced true if we delete more than one
11988      breakpoint.  */
11989
11990   found = NULL;
11991   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11992   for (i = 0; i < sals.nelts; i++)
11993     {
11994       const char *sal_fullname;
11995
11996       /* If exact pc given, clear bpts at that pc.
11997          If line given (pc == 0), clear all bpts on specified line.
11998          If defaulting, clear all bpts on default line
11999          or at default pc.
12000
12001          defaulting    sal.pc != 0    tests to do
12002
12003          0              1             pc
12004          1              1             pc _and_ line
12005          0              0             line
12006          1              0             <can't happen> */
12007
12008       sal = sals.sals[i];
12009       sal_fullname = (sal.symtab == NULL
12010                       ? NULL : symtab_to_fullname (sal.symtab));
12011
12012       /* Find all matching breakpoints and add them to 'found'.  */
12013       ALL_BREAKPOINTS (b)
12014         {
12015           int match = 0;
12016           /* Are we going to delete b?  */
12017           if (b->type != bp_none && !is_watchpoint (b))
12018             {
12019               struct bp_location *loc = b->loc;
12020               for (; loc; loc = loc->next)
12021                 {
12022                   /* If the user specified file:line, don't allow a PC
12023                      match.  This matches historical gdb behavior.  */
12024                   int pc_match = (!sal.explicit_line
12025                                   && sal.pc
12026                                   && (loc->pspace == sal.pspace)
12027                                   && (loc->address == sal.pc)
12028                                   && (!section_is_overlay (loc->section)
12029                                       || loc->section == sal.section));
12030                   int line_match = 0;
12031
12032                   if ((default_match || sal.explicit_line)
12033                       && loc->symtab != NULL
12034                       && sal_fullname != NULL
12035                       && sal.pspace == loc->pspace
12036                       && loc->line_number == sal.line
12037                       && filename_cmp (symtab_to_fullname (loc->symtab),
12038                                        sal_fullname) == 0)
12039                     line_match = 1;
12040
12041                   if (pc_match || line_match)
12042                     {
12043                       match = 1;
12044                       break;
12045                     }
12046                 }
12047             }
12048
12049           if (match)
12050             VEC_safe_push(breakpoint_p, found, b);
12051         }
12052     }
12053
12054   /* Now go thru the 'found' chain and delete them.  */
12055   if (VEC_empty(breakpoint_p, found))
12056     {
12057       if (arg)
12058         error (_("No breakpoint at %s."), arg);
12059       else
12060         error (_("No breakpoint at this line."));
12061     }
12062
12063   /* Remove duplicates from the vec.  */
12064   qsort (VEC_address (breakpoint_p, found),
12065          VEC_length (breakpoint_p, found),
12066          sizeof (breakpoint_p),
12067          compare_breakpoints);
12068   prev = VEC_index (breakpoint_p, found, 0);
12069   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12070     {
12071       if (b == prev)
12072         {
12073           VEC_ordered_remove (breakpoint_p, found, ix);
12074           --ix;
12075         }
12076     }
12077
12078   if (VEC_length(breakpoint_p, found) > 1)
12079     from_tty = 1;       /* Always report if deleted more than one.  */
12080   if (from_tty)
12081     {
12082       if (VEC_length(breakpoint_p, found) == 1)
12083         printf_unfiltered (_("Deleted breakpoint "));
12084       else
12085         printf_unfiltered (_("Deleted breakpoints "));
12086     }
12087
12088   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12089     {
12090       if (from_tty)
12091         printf_unfiltered ("%d ", b->number);
12092       delete_breakpoint (b);
12093     }
12094   if (from_tty)
12095     putchar_unfiltered ('\n');
12096
12097   do_cleanups (cleanups);
12098 }
12099 \f
12100 /* Delete breakpoint in BS if they are `delete' breakpoints and
12101    all breakpoints that are marked for deletion, whether hit or not.
12102    This is called after any breakpoint is hit, or after errors.  */
12103
12104 void
12105 breakpoint_auto_delete (bpstat bs)
12106 {
12107   struct breakpoint *b, *b_tmp;
12108
12109   for (; bs; bs = bs->next)
12110     if (bs->breakpoint_at
12111         && bs->breakpoint_at->disposition == disp_del
12112         && bs->stop)
12113       delete_breakpoint (bs->breakpoint_at);
12114
12115   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12116   {
12117     if (b->disposition == disp_del_at_next_stop)
12118       delete_breakpoint (b);
12119   }
12120 }
12121
12122 /* A comparison function for bp_location AP and BP being interfaced to
12123    qsort.  Sort elements primarily by their ADDRESS (no matter what
12124    does breakpoint_address_is_meaningful say for its OWNER),
12125    secondarily by ordering first permanent elements and
12126    terciarily just ensuring the array is sorted stable way despite
12127    qsort being an unstable algorithm.  */
12128
12129 static int
12130 bp_locations_compare (const void *ap, const void *bp)
12131 {
12132   const struct bp_location *a = *(const struct bp_location **) ap;
12133   const struct bp_location *b = *(const struct bp_location **) bp;
12134
12135   if (a->address != b->address)
12136     return (a->address > b->address) - (a->address < b->address);
12137
12138   /* Sort locations at the same address by their pspace number, keeping
12139      locations of the same inferior (in a multi-inferior environment)
12140      grouped.  */
12141
12142   if (a->pspace->num != b->pspace->num)
12143     return ((a->pspace->num > b->pspace->num)
12144             - (a->pspace->num < b->pspace->num));
12145
12146   /* Sort permanent breakpoints first.  */
12147   if (a->permanent != b->permanent)
12148     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
12149
12150   /* Make the internal GDB representation stable across GDB runs
12151      where A and B memory inside GDB can differ.  Breakpoint locations of
12152      the same type at the same address can be sorted in arbitrary order.  */
12153
12154   if (a->owner->number != b->owner->number)
12155     return ((a->owner->number > b->owner->number)
12156             - (a->owner->number < b->owner->number));
12157
12158   return (a > b) - (a < b);
12159 }
12160
12161 /* Set bp_locations_placed_address_before_address_max and
12162    bp_locations_shadow_len_after_address_max according to the current
12163    content of the bp_locations array.  */
12164
12165 static void
12166 bp_locations_target_extensions_update (void)
12167 {
12168   struct bp_location *bl, **blp_tmp;
12169
12170   bp_locations_placed_address_before_address_max = 0;
12171   bp_locations_shadow_len_after_address_max = 0;
12172
12173   ALL_BP_LOCATIONS (bl, blp_tmp)
12174     {
12175       CORE_ADDR start, end, addr;
12176
12177       if (!bp_location_has_shadow (bl))
12178         continue;
12179
12180       start = bl->target_info.placed_address;
12181       end = start + bl->target_info.shadow_len;
12182
12183       gdb_assert (bl->address >= start);
12184       addr = bl->address - start;
12185       if (addr > bp_locations_placed_address_before_address_max)
12186         bp_locations_placed_address_before_address_max = addr;
12187
12188       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12189
12190       gdb_assert (bl->address < end);
12191       addr = end - bl->address;
12192       if (addr > bp_locations_shadow_len_after_address_max)
12193         bp_locations_shadow_len_after_address_max = addr;
12194     }
12195 }
12196
12197 /* Download tracepoint locations if they haven't been.  */
12198
12199 static void
12200 download_tracepoint_locations (void)
12201 {
12202   struct breakpoint *b;
12203   struct cleanup *old_chain;
12204   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
12205
12206   old_chain = save_current_space_and_thread ();
12207
12208   ALL_TRACEPOINTS (b)
12209     {
12210       struct bp_location *bl;
12211       struct tracepoint *t;
12212       int bp_location_downloaded = 0;
12213
12214       if ((b->type == bp_fast_tracepoint
12215            ? !may_insert_fast_tracepoints
12216            : !may_insert_tracepoints))
12217         continue;
12218
12219       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12220         {
12221           if (target_can_download_tracepoint ())
12222             can_download_tracepoint = TRIBOOL_TRUE;
12223           else
12224             can_download_tracepoint = TRIBOOL_FALSE;
12225         }
12226
12227       if (can_download_tracepoint == TRIBOOL_FALSE)
12228         break;
12229
12230       for (bl = b->loc; bl; bl = bl->next)
12231         {
12232           /* In tracepoint, locations are _never_ duplicated, so
12233              should_be_inserted is equivalent to
12234              unduplicated_should_be_inserted.  */
12235           if (!should_be_inserted (bl) || bl->inserted)
12236             continue;
12237
12238           switch_to_program_space_and_thread (bl->pspace);
12239
12240           target_download_tracepoint (bl);
12241
12242           bl->inserted = 1;
12243           bp_location_downloaded = 1;
12244         }
12245       t = (struct tracepoint *) b;
12246       t->number_on_target = b->number;
12247       if (bp_location_downloaded)
12248         observer_notify_breakpoint_modified (b);
12249     }
12250
12251   do_cleanups (old_chain);
12252 }
12253
12254 /* Swap the insertion/duplication state between two locations.  */
12255
12256 static void
12257 swap_insertion (struct bp_location *left, struct bp_location *right)
12258 {
12259   const int left_inserted = left->inserted;
12260   const int left_duplicate = left->duplicate;
12261   const int left_needs_update = left->needs_update;
12262   const struct bp_target_info left_target_info = left->target_info;
12263
12264   /* Locations of tracepoints can never be duplicated.  */
12265   if (is_tracepoint (left->owner))
12266     gdb_assert (!left->duplicate);
12267   if (is_tracepoint (right->owner))
12268     gdb_assert (!right->duplicate);
12269
12270   left->inserted = right->inserted;
12271   left->duplicate = right->duplicate;
12272   left->needs_update = right->needs_update;
12273   left->target_info = right->target_info;
12274   right->inserted = left_inserted;
12275   right->duplicate = left_duplicate;
12276   right->needs_update = left_needs_update;
12277   right->target_info = left_target_info;
12278 }
12279
12280 /* Force the re-insertion of the locations at ADDRESS.  This is called
12281    once a new/deleted/modified duplicate location is found and we are evaluating
12282    conditions on the target's side.  Such conditions need to be updated on
12283    the target.  */
12284
12285 static void
12286 force_breakpoint_reinsertion (struct bp_location *bl)
12287 {
12288   struct bp_location **locp = NULL, **loc2p;
12289   struct bp_location *loc;
12290   CORE_ADDR address = 0;
12291   int pspace_num;
12292
12293   address = bl->address;
12294   pspace_num = bl->pspace->num;
12295
12296   /* This is only meaningful if the target is
12297      evaluating conditions and if the user has
12298      opted for condition evaluation on the target's
12299      side.  */
12300   if (gdb_evaluates_breakpoint_condition_p ()
12301       || !target_supports_evaluation_of_breakpoint_conditions ())
12302     return;
12303
12304   /* Flag all breakpoint locations with this address and
12305      the same program space as the location
12306      as "its condition has changed".  We need to
12307      update the conditions on the target's side.  */
12308   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12309     {
12310       loc = *loc2p;
12311
12312       if (!is_breakpoint (loc->owner)
12313           || pspace_num != loc->pspace->num)
12314         continue;
12315
12316       /* Flag the location appropriately.  We use a different state to
12317          let everyone know that we already updated the set of locations
12318          with addr bl->address and program space bl->pspace.  This is so
12319          we don't have to keep calling these functions just to mark locations
12320          that have already been marked.  */
12321       loc->condition_changed = condition_updated;
12322
12323       /* Free the agent expression bytecode as well.  We will compute
12324          it later on.  */
12325       loc->cond_bytecode.reset ();
12326     }
12327 }
12328 /* Called whether new breakpoints are created, or existing breakpoints
12329    deleted, to update the global location list and recompute which
12330    locations are duplicate of which.
12331
12332    The INSERT_MODE flag determines whether locations may not, may, or
12333    shall be inserted now.  See 'enum ugll_insert_mode' for more
12334    info.  */
12335
12336 static void
12337 update_global_location_list (enum ugll_insert_mode insert_mode)
12338 {
12339   struct breakpoint *b;
12340   struct bp_location **locp, *loc;
12341   struct cleanup *cleanups;
12342   /* Last breakpoint location address that was marked for update.  */
12343   CORE_ADDR last_addr = 0;
12344   /* Last breakpoint location program space that was marked for update.  */
12345   int last_pspace_num = -1;
12346
12347   /* Used in the duplicates detection below.  When iterating over all
12348      bp_locations, points to the first bp_location of a given address.
12349      Breakpoints and watchpoints of different types are never
12350      duplicates of each other.  Keep one pointer for each type of
12351      breakpoint/watchpoint, so we only need to loop over all locations
12352      once.  */
12353   struct bp_location *bp_loc_first;  /* breakpoint */
12354   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12355   struct bp_location *awp_loc_first; /* access watchpoint */
12356   struct bp_location *rwp_loc_first; /* read watchpoint */
12357
12358   /* Saved former bp_locations array which we compare against the newly
12359      built bp_locations from the current state of ALL_BREAKPOINTS.  */
12360   struct bp_location **old_locations, **old_locp;
12361   unsigned old_locations_count;
12362
12363   old_locations = bp_locations;
12364   old_locations_count = bp_locations_count;
12365   bp_locations = NULL;
12366   bp_locations_count = 0;
12367   cleanups = make_cleanup (xfree, old_locations);
12368
12369   ALL_BREAKPOINTS (b)
12370     for (loc = b->loc; loc; loc = loc->next)
12371       bp_locations_count++;
12372
12373   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
12374   locp = bp_locations;
12375   ALL_BREAKPOINTS (b)
12376     for (loc = b->loc; loc; loc = loc->next)
12377       *locp++ = loc;
12378   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
12379          bp_locations_compare);
12380
12381   bp_locations_target_extensions_update ();
12382
12383   /* Identify bp_location instances that are no longer present in the
12384      new list, and therefore should be freed.  Note that it's not
12385      necessary that those locations should be removed from inferior --
12386      if there's another location at the same address (previously
12387      marked as duplicate), we don't need to remove/insert the
12388      location.
12389      
12390      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12391      and former bp_location array state respectively.  */
12392
12393   locp = bp_locations;
12394   for (old_locp = old_locations;
12395        old_locp < old_locations + old_locations_count;
12396        old_locp++)
12397     {
12398       struct bp_location *old_loc = *old_locp;
12399       struct bp_location **loc2p;
12400
12401       /* Tells if 'old_loc' is found among the new locations.  If
12402          not, we have to free it.  */
12403       int found_object = 0;
12404       /* Tells if the location should remain inserted in the target.  */
12405       int keep_in_target = 0;
12406       int removed = 0;
12407
12408       /* Skip LOCP entries which will definitely never be needed.
12409          Stop either at or being the one matching OLD_LOC.  */
12410       while (locp < bp_locations + bp_locations_count
12411              && (*locp)->address < old_loc->address)
12412         locp++;
12413
12414       for (loc2p = locp;
12415            (loc2p < bp_locations + bp_locations_count
12416             && (*loc2p)->address == old_loc->address);
12417            loc2p++)
12418         {
12419           /* Check if this is a new/duplicated location or a duplicated
12420              location that had its condition modified.  If so, we want to send
12421              its condition to the target if evaluation of conditions is taking
12422              place there.  */
12423           if ((*loc2p)->condition_changed == condition_modified
12424               && (last_addr != old_loc->address
12425                   || last_pspace_num != old_loc->pspace->num))
12426             {
12427               force_breakpoint_reinsertion (*loc2p);
12428               last_pspace_num = old_loc->pspace->num;
12429             }
12430
12431           if (*loc2p == old_loc)
12432             found_object = 1;
12433         }
12434
12435       /* We have already handled this address, update it so that we don't
12436          have to go through updates again.  */
12437       last_addr = old_loc->address;
12438
12439       /* Target-side condition evaluation: Handle deleted locations.  */
12440       if (!found_object)
12441         force_breakpoint_reinsertion (old_loc);
12442
12443       /* If this location is no longer present, and inserted, look if
12444          there's maybe a new location at the same address.  If so,
12445          mark that one inserted, and don't remove this one.  This is
12446          needed so that we don't have a time window where a breakpoint
12447          at certain location is not inserted.  */
12448
12449       if (old_loc->inserted)
12450         {
12451           /* If the location is inserted now, we might have to remove
12452              it.  */
12453
12454           if (found_object && should_be_inserted (old_loc))
12455             {
12456               /* The location is still present in the location list,
12457                  and still should be inserted.  Don't do anything.  */
12458               keep_in_target = 1;
12459             }
12460           else
12461             {
12462               /* This location still exists, but it won't be kept in the
12463                  target since it may have been disabled.  We proceed to
12464                  remove its target-side condition.  */
12465
12466               /* The location is either no longer present, or got
12467                  disabled.  See if there's another location at the
12468                  same address, in which case we don't need to remove
12469                  this one from the target.  */
12470
12471               /* OLD_LOC comes from existing struct breakpoint.  */
12472               if (breakpoint_address_is_meaningful (old_loc->owner))
12473                 {
12474                   for (loc2p = locp;
12475                        (loc2p < bp_locations + bp_locations_count
12476                         && (*loc2p)->address == old_loc->address);
12477                        loc2p++)
12478                     {
12479                       struct bp_location *loc2 = *loc2p;
12480
12481                       if (breakpoint_locations_match (loc2, old_loc))
12482                         {
12483                           /* Read watchpoint locations are switched to
12484                              access watchpoints, if the former are not
12485                              supported, but the latter are.  */
12486                           if (is_hardware_watchpoint (old_loc->owner))
12487                             {
12488                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12489                               loc2->watchpoint_type = old_loc->watchpoint_type;
12490                             }
12491
12492                           /* loc2 is a duplicated location. We need to check
12493                              if it should be inserted in case it will be
12494                              unduplicated.  */
12495                           if (loc2 != old_loc
12496                               && unduplicated_should_be_inserted (loc2))
12497                             {
12498                               swap_insertion (old_loc, loc2);
12499                               keep_in_target = 1;
12500                               break;
12501                             }
12502                         }
12503                     }
12504                 }
12505             }
12506
12507           if (!keep_in_target)
12508             {
12509               if (remove_breakpoint (old_loc))
12510                 {
12511                   /* This is just about all we can do.  We could keep
12512                      this location on the global list, and try to
12513                      remove it next time, but there's no particular
12514                      reason why we will succeed next time.
12515                      
12516                      Note that at this point, old_loc->owner is still
12517                      valid, as delete_breakpoint frees the breakpoint
12518                      only after calling us.  */
12519                   printf_filtered (_("warning: Error removing "
12520                                      "breakpoint %d\n"), 
12521                                    old_loc->owner->number);
12522                 }
12523               removed = 1;
12524             }
12525         }
12526
12527       if (!found_object)
12528         {
12529           if (removed && target_is_non_stop_p ()
12530               && need_moribund_for_location_type (old_loc))
12531             {
12532               /* This location was removed from the target.  In
12533                  non-stop mode, a race condition is possible where
12534                  we've removed a breakpoint, but stop events for that
12535                  breakpoint are already queued and will arrive later.
12536                  We apply an heuristic to be able to distinguish such
12537                  SIGTRAPs from other random SIGTRAPs: we keep this
12538                  breakpoint location for a bit, and will retire it
12539                  after we see some number of events.  The theory here
12540                  is that reporting of events should, "on the average",
12541                  be fair, so after a while we'll see events from all
12542                  threads that have anything of interest, and no longer
12543                  need to keep this breakpoint location around.  We
12544                  don't hold locations forever so to reduce chances of
12545                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12546                  SIGTRAP.
12547
12548                  The heuristic failing can be disastrous on
12549                  decr_pc_after_break targets.
12550
12551                  On decr_pc_after_break targets, like e.g., x86-linux,
12552                  if we fail to recognize a late breakpoint SIGTRAP,
12553                  because events_till_retirement has reached 0 too
12554                  soon, we'll fail to do the PC adjustment, and report
12555                  a random SIGTRAP to the user.  When the user resumes
12556                  the inferior, it will most likely immediately crash
12557                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12558                  corrupted, because of being resumed e.g., in the
12559                  middle of a multi-byte instruction, or skipped a
12560                  one-byte instruction.  This was actually seen happen
12561                  on native x86-linux, and should be less rare on
12562                  targets that do not support new thread events, like
12563                  remote, due to the heuristic depending on
12564                  thread_count.
12565
12566                  Mistaking a random SIGTRAP for a breakpoint trap
12567                  causes similar symptoms (PC adjustment applied when
12568                  it shouldn't), but then again, playing with SIGTRAPs
12569                  behind the debugger's back is asking for trouble.
12570
12571                  Since hardware watchpoint traps are always
12572                  distinguishable from other traps, so we don't need to
12573                  apply keep hardware watchpoint moribund locations
12574                  around.  We simply always ignore hardware watchpoint
12575                  traps we can no longer explain.  */
12576
12577               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12578               old_loc->owner = NULL;
12579
12580               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12581             }
12582           else
12583             {
12584               old_loc->owner = NULL;
12585               decref_bp_location (&old_loc);
12586             }
12587         }
12588     }
12589
12590   /* Rescan breakpoints at the same address and section, marking the
12591      first one as "first" and any others as "duplicates".  This is so
12592      that the bpt instruction is only inserted once.  If we have a
12593      permanent breakpoint at the same place as BPT, make that one the
12594      official one, and the rest as duplicates.  Permanent breakpoints
12595      are sorted first for the same address.
12596
12597      Do the same for hardware watchpoints, but also considering the
12598      watchpoint's type (regular/access/read) and length.  */
12599
12600   bp_loc_first = NULL;
12601   wp_loc_first = NULL;
12602   awp_loc_first = NULL;
12603   rwp_loc_first = NULL;
12604   ALL_BP_LOCATIONS (loc, locp)
12605     {
12606       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12607          non-NULL.  */
12608       struct bp_location **loc_first_p;
12609       b = loc->owner;
12610
12611       if (!unduplicated_should_be_inserted (loc)
12612           || !breakpoint_address_is_meaningful (b)
12613           /* Don't detect duplicate for tracepoint locations because they are
12614            never duplicated.  See the comments in field `duplicate' of
12615            `struct bp_location'.  */
12616           || is_tracepoint (b))
12617         {
12618           /* Clear the condition modification flag.  */
12619           loc->condition_changed = condition_unchanged;
12620           continue;
12621         }
12622
12623       if (b->type == bp_hardware_watchpoint)
12624         loc_first_p = &wp_loc_first;
12625       else if (b->type == bp_read_watchpoint)
12626         loc_first_p = &rwp_loc_first;
12627       else if (b->type == bp_access_watchpoint)
12628         loc_first_p = &awp_loc_first;
12629       else
12630         loc_first_p = &bp_loc_first;
12631
12632       if (*loc_first_p == NULL
12633           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12634           || !breakpoint_locations_match (loc, *loc_first_p))
12635         {
12636           *loc_first_p = loc;
12637           loc->duplicate = 0;
12638
12639           if (is_breakpoint (loc->owner) && loc->condition_changed)
12640             {
12641               loc->needs_update = 1;
12642               /* Clear the condition modification flag.  */
12643               loc->condition_changed = condition_unchanged;
12644             }
12645           continue;
12646         }
12647
12648
12649       /* This and the above ensure the invariant that the first location
12650          is not duplicated, and is the inserted one.
12651          All following are marked as duplicated, and are not inserted.  */
12652       if (loc->inserted)
12653         swap_insertion (loc, *loc_first_p);
12654       loc->duplicate = 1;
12655
12656       /* Clear the condition modification flag.  */
12657       loc->condition_changed = condition_unchanged;
12658     }
12659
12660   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12661     {
12662       if (insert_mode != UGLL_DONT_INSERT)
12663         insert_breakpoint_locations ();
12664       else
12665         {
12666           /* Even though the caller told us to not insert new
12667              locations, we may still need to update conditions on the
12668              target's side of breakpoints that were already inserted
12669              if the target is evaluating breakpoint conditions.  We
12670              only update conditions for locations that are marked
12671              "needs_update".  */
12672           update_inserted_breakpoint_locations ();
12673         }
12674     }
12675
12676   if (insert_mode != UGLL_DONT_INSERT)
12677     download_tracepoint_locations ();
12678
12679   do_cleanups (cleanups);
12680 }
12681
12682 void
12683 breakpoint_retire_moribund (void)
12684 {
12685   struct bp_location *loc;
12686   int ix;
12687
12688   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12689     if (--(loc->events_till_retirement) == 0)
12690       {
12691         decref_bp_location (&loc);
12692         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12693         --ix;
12694       }
12695 }
12696
12697 static void
12698 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12699 {
12700
12701   TRY
12702     {
12703       update_global_location_list (insert_mode);
12704     }
12705   CATCH (e, RETURN_MASK_ERROR)
12706     {
12707     }
12708   END_CATCH
12709 }
12710
12711 /* Clear BKP from a BPS.  */
12712
12713 static void
12714 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12715 {
12716   bpstat bs;
12717
12718   for (bs = bps; bs; bs = bs->next)
12719     if (bs->breakpoint_at == bpt)
12720       {
12721         bs->breakpoint_at = NULL;
12722         bs->old_val = NULL;
12723         /* bs->commands will be freed later.  */
12724       }
12725 }
12726
12727 /* Callback for iterate_over_threads.  */
12728 static int
12729 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12730 {
12731   struct breakpoint *bpt = (struct breakpoint *) data;
12732
12733   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12734   return 0;
12735 }
12736
12737 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12738    callbacks.  */
12739
12740 static void
12741 say_where (struct breakpoint *b)
12742 {
12743   struct value_print_options opts;
12744
12745   get_user_print_options (&opts);
12746
12747   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12748      single string.  */
12749   if (b->loc == NULL)
12750     {
12751       /* For pending locations, the output differs slightly based
12752          on b->extra_string.  If this is non-NULL, it contains either
12753          a condition or dprintf arguments.  */
12754       if (b->extra_string == NULL)
12755         {
12756           printf_filtered (_(" (%s) pending."),
12757                            event_location_to_string (b->location.get ()));
12758         }
12759       else if (b->type == bp_dprintf)
12760         {
12761           printf_filtered (_(" (%s,%s) pending."),
12762                            event_location_to_string (b->location.get ()),
12763                            b->extra_string);
12764         }
12765       else
12766         {
12767           printf_filtered (_(" (%s %s) pending."),
12768                            event_location_to_string (b->location.get ()),
12769                            b->extra_string);
12770         }
12771     }
12772   else
12773     {
12774       if (opts.addressprint || b->loc->symtab == NULL)
12775         {
12776           printf_filtered (" at ");
12777           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12778                           gdb_stdout);
12779         }
12780       if (b->loc->symtab != NULL)
12781         {
12782           /* If there is a single location, we can print the location
12783              more nicely.  */
12784           if (b->loc->next == NULL)
12785             printf_filtered (": file %s, line %d.",
12786                              symtab_to_filename_for_display (b->loc->symtab),
12787                              b->loc->line_number);
12788           else
12789             /* This is not ideal, but each location may have a
12790                different file name, and this at least reflects the
12791                real situation somewhat.  */
12792             printf_filtered (": %s.",
12793                              event_location_to_string (b->location.get ()));
12794         }
12795
12796       if (b->loc->next)
12797         {
12798           struct bp_location *loc = b->loc;
12799           int n = 0;
12800           for (; loc; loc = loc->next)
12801             ++n;
12802           printf_filtered (" (%d locations)", n);
12803         }
12804     }
12805 }
12806
12807 /* Default bp_location_ops methods.  */
12808
12809 static void
12810 bp_location_dtor (struct bp_location *self)
12811 {
12812   xfree (self->function_name);
12813 }
12814
12815 static const struct bp_location_ops bp_location_ops =
12816 {
12817   bp_location_dtor
12818 };
12819
12820 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12821    inherit from.  */
12822
12823 static void
12824 base_breakpoint_dtor (struct breakpoint *self)
12825 {
12826   decref_counted_command_line (&self->commands);
12827   xfree (self->cond_string);
12828   xfree (self->extra_string);
12829   xfree (self->filter);
12830 }
12831
12832 static struct bp_location *
12833 base_breakpoint_allocate_location (struct breakpoint *self)
12834 {
12835   struct bp_location *loc;
12836
12837   loc = new struct bp_location ();
12838   init_bp_location (loc, &bp_location_ops, self);
12839   return loc;
12840 }
12841
12842 static void
12843 base_breakpoint_re_set (struct breakpoint *b)
12844 {
12845   /* Nothing to re-set. */
12846 }
12847
12848 #define internal_error_pure_virtual_called() \
12849   gdb_assert_not_reached ("pure virtual function called")
12850
12851 static int
12852 base_breakpoint_insert_location (struct bp_location *bl)
12853 {
12854   internal_error_pure_virtual_called ();
12855 }
12856
12857 static int
12858 base_breakpoint_remove_location (struct bp_location *bl,
12859                                  enum remove_bp_reason reason)
12860 {
12861   internal_error_pure_virtual_called ();
12862 }
12863
12864 static int
12865 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12866                                 struct address_space *aspace,
12867                                 CORE_ADDR bp_addr,
12868                                 const struct target_waitstatus *ws)
12869 {
12870   internal_error_pure_virtual_called ();
12871 }
12872
12873 static void
12874 base_breakpoint_check_status (bpstat bs)
12875 {
12876   /* Always stop.   */
12877 }
12878
12879 /* A "works_in_software_mode" breakpoint_ops method that just internal
12880    errors.  */
12881
12882 static int
12883 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12884 {
12885   internal_error_pure_virtual_called ();
12886 }
12887
12888 /* A "resources_needed" breakpoint_ops method that just internal
12889    errors.  */
12890
12891 static int
12892 base_breakpoint_resources_needed (const struct bp_location *bl)
12893 {
12894   internal_error_pure_virtual_called ();
12895 }
12896
12897 static enum print_stop_action
12898 base_breakpoint_print_it (bpstat bs)
12899 {
12900   internal_error_pure_virtual_called ();
12901 }
12902
12903 static void
12904 base_breakpoint_print_one_detail (const struct breakpoint *self,
12905                                   struct ui_out *uiout)
12906 {
12907   /* nothing */
12908 }
12909
12910 static void
12911 base_breakpoint_print_mention (struct breakpoint *b)
12912 {
12913   internal_error_pure_virtual_called ();
12914 }
12915
12916 static void
12917 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12918 {
12919   internal_error_pure_virtual_called ();
12920 }
12921
12922 static void
12923 base_breakpoint_create_sals_from_location
12924   (const struct event_location *location,
12925    struct linespec_result *canonical,
12926    enum bptype type_wanted)
12927 {
12928   internal_error_pure_virtual_called ();
12929 }
12930
12931 static void
12932 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12933                                         struct linespec_result *c,
12934                                         char *cond_string,
12935                                         char *extra_string,
12936                                         enum bptype type_wanted,
12937                                         enum bpdisp disposition,
12938                                         int thread,
12939                                         int task, int ignore_count,
12940                                         const struct breakpoint_ops *o,
12941                                         int from_tty, int enabled,
12942                                         int internal, unsigned flags)
12943 {
12944   internal_error_pure_virtual_called ();
12945 }
12946
12947 static void
12948 base_breakpoint_decode_location (struct breakpoint *b,
12949                                  const struct event_location *location,
12950                                  struct program_space *search_pspace,
12951                                  struct symtabs_and_lines *sals)
12952 {
12953   internal_error_pure_virtual_called ();
12954 }
12955
12956 /* The default 'explains_signal' method.  */
12957
12958 static int
12959 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12960 {
12961   return 1;
12962 }
12963
12964 /* The default "after_condition_true" method.  */
12965
12966 static void
12967 base_breakpoint_after_condition_true (struct bpstats *bs)
12968 {
12969   /* Nothing to do.   */
12970 }
12971
12972 struct breakpoint_ops base_breakpoint_ops =
12973 {
12974   base_breakpoint_dtor,
12975   base_breakpoint_allocate_location,
12976   base_breakpoint_re_set,
12977   base_breakpoint_insert_location,
12978   base_breakpoint_remove_location,
12979   base_breakpoint_breakpoint_hit,
12980   base_breakpoint_check_status,
12981   base_breakpoint_resources_needed,
12982   base_breakpoint_works_in_software_mode,
12983   base_breakpoint_print_it,
12984   NULL,
12985   base_breakpoint_print_one_detail,
12986   base_breakpoint_print_mention,
12987   base_breakpoint_print_recreate,
12988   base_breakpoint_create_sals_from_location,
12989   base_breakpoint_create_breakpoints_sal,
12990   base_breakpoint_decode_location,
12991   base_breakpoint_explains_signal,
12992   base_breakpoint_after_condition_true,
12993 };
12994
12995 /* Default breakpoint_ops methods.  */
12996
12997 static void
12998 bkpt_re_set (struct breakpoint *b)
12999 {
13000   /* FIXME: is this still reachable?  */
13001   if (breakpoint_event_location_empty_p (b))
13002     {
13003       /* Anything without a location can't be re-set.  */
13004       delete_breakpoint (b);
13005       return;
13006     }
13007
13008   breakpoint_re_set_default (b);
13009 }
13010
13011 static int
13012 bkpt_insert_location (struct bp_location *bl)
13013 {
13014   CORE_ADDR addr = bl->target_info.reqstd_address;
13015
13016   bl->target_info.kind = breakpoint_kind (bl, &addr);
13017   bl->target_info.placed_address = addr;
13018
13019   if (bl->loc_type == bp_loc_hardware_breakpoint)
13020     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
13021   else
13022     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
13023 }
13024
13025 static int
13026 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
13027 {
13028   if (bl->loc_type == bp_loc_hardware_breakpoint)
13029     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
13030   else
13031     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
13032 }
13033
13034 static int
13035 bkpt_breakpoint_hit (const struct bp_location *bl,
13036                      struct address_space *aspace, CORE_ADDR bp_addr,
13037                      const struct target_waitstatus *ws)
13038 {
13039   if (ws->kind != TARGET_WAITKIND_STOPPED
13040       || ws->value.sig != GDB_SIGNAL_TRAP)
13041     return 0;
13042
13043   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13044                                  aspace, bp_addr))
13045     return 0;
13046
13047   if (overlay_debugging         /* unmapped overlay section */
13048       && section_is_overlay (bl->section)
13049       && !section_is_mapped (bl->section))
13050     return 0;
13051
13052   return 1;
13053 }
13054
13055 static int
13056 dprintf_breakpoint_hit (const struct bp_location *bl,
13057                         struct address_space *aspace, CORE_ADDR bp_addr,
13058                         const struct target_waitstatus *ws)
13059 {
13060   if (dprintf_style == dprintf_style_agent
13061       && target_can_run_breakpoint_commands ())
13062     {
13063       /* An agent-style dprintf never causes a stop.  If we see a trap
13064          for this address it must be for a breakpoint that happens to
13065          be set at the same address.  */
13066       return 0;
13067     }
13068
13069   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
13070 }
13071
13072 static int
13073 bkpt_resources_needed (const struct bp_location *bl)
13074 {
13075   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13076
13077   return 1;
13078 }
13079
13080 static enum print_stop_action
13081 bkpt_print_it (bpstat bs)
13082 {
13083   struct breakpoint *b;
13084   const struct bp_location *bl;
13085   int bp_temp;
13086   struct ui_out *uiout = current_uiout;
13087
13088   gdb_assert (bs->bp_location_at != NULL);
13089
13090   bl = bs->bp_location_at;
13091   b = bs->breakpoint_at;
13092
13093   bp_temp = b->disposition == disp_del;
13094   if (bl->address != bl->requested_address)
13095     breakpoint_adjustment_warning (bl->requested_address,
13096                                    bl->address,
13097                                    b->number, 1);
13098   annotate_breakpoint (b->number);
13099   maybe_print_thread_hit_breakpoint (uiout);
13100
13101   if (bp_temp)
13102     uiout->text ("Temporary breakpoint ");
13103   else
13104     uiout->text ("Breakpoint ");
13105   if (uiout->is_mi_like_p ())
13106     {
13107       uiout->field_string ("reason",
13108                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13109       uiout->field_string ("disp", bpdisp_text (b->disposition));
13110     }
13111   uiout->field_int ("bkptno", b->number);
13112   uiout->text (", ");
13113
13114   return PRINT_SRC_AND_LOC;
13115 }
13116
13117 static void
13118 bkpt_print_mention (struct breakpoint *b)
13119 {
13120   if (current_uiout->is_mi_like_p ())
13121     return;
13122
13123   switch (b->type)
13124     {
13125     case bp_breakpoint:
13126     case bp_gnu_ifunc_resolver:
13127       if (b->disposition == disp_del)
13128         printf_filtered (_("Temporary breakpoint"));
13129       else
13130         printf_filtered (_("Breakpoint"));
13131       printf_filtered (_(" %d"), b->number);
13132       if (b->type == bp_gnu_ifunc_resolver)
13133         printf_filtered (_(" at gnu-indirect-function resolver"));
13134       break;
13135     case bp_hardware_breakpoint:
13136       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13137       break;
13138     case bp_dprintf:
13139       printf_filtered (_("Dprintf %d"), b->number);
13140       break;
13141     }
13142
13143   say_where (b);
13144 }
13145
13146 static void
13147 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13148 {
13149   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13150     fprintf_unfiltered (fp, "tbreak");
13151   else if (tp->type == bp_breakpoint)
13152     fprintf_unfiltered (fp, "break");
13153   else if (tp->type == bp_hardware_breakpoint
13154            && tp->disposition == disp_del)
13155     fprintf_unfiltered (fp, "thbreak");
13156   else if (tp->type == bp_hardware_breakpoint)
13157     fprintf_unfiltered (fp, "hbreak");
13158   else
13159     internal_error (__FILE__, __LINE__,
13160                     _("unhandled breakpoint type %d"), (int) tp->type);
13161
13162   fprintf_unfiltered (fp, " %s",
13163                       event_location_to_string (tp->location.get ()));
13164
13165   /* Print out extra_string if this breakpoint is pending.  It might
13166      contain, for example, conditions that were set by the user.  */
13167   if (tp->loc == NULL && tp->extra_string != NULL)
13168     fprintf_unfiltered (fp, " %s", tp->extra_string);
13169
13170   print_recreate_thread (tp, fp);
13171 }
13172
13173 static void
13174 bkpt_create_sals_from_location (const struct event_location *location,
13175                                 struct linespec_result *canonical,
13176                                 enum bptype type_wanted)
13177 {
13178   create_sals_from_location_default (location, canonical, type_wanted);
13179 }
13180
13181 static void
13182 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13183                              struct linespec_result *canonical,
13184                              char *cond_string,
13185                              char *extra_string,
13186                              enum bptype type_wanted,
13187                              enum bpdisp disposition,
13188                              int thread,
13189                              int task, int ignore_count,
13190                              const struct breakpoint_ops *ops,
13191                              int from_tty, int enabled,
13192                              int internal, unsigned flags)
13193 {
13194   create_breakpoints_sal_default (gdbarch, canonical,
13195                                   cond_string, extra_string,
13196                                   type_wanted,
13197                                   disposition, thread, task,
13198                                   ignore_count, ops, from_tty,
13199                                   enabled, internal, flags);
13200 }
13201
13202 static void
13203 bkpt_decode_location (struct breakpoint *b,
13204                       const struct event_location *location,
13205                       struct program_space *search_pspace,
13206                       struct symtabs_and_lines *sals)
13207 {
13208   decode_location_default (b, location, search_pspace, sals);
13209 }
13210
13211 /* Virtual table for internal breakpoints.  */
13212
13213 static void
13214 internal_bkpt_re_set (struct breakpoint *b)
13215 {
13216   switch (b->type)
13217     {
13218       /* Delete overlay event and longjmp master breakpoints; they
13219          will be reset later by breakpoint_re_set.  */
13220     case bp_overlay_event:
13221     case bp_longjmp_master:
13222     case bp_std_terminate_master:
13223     case bp_exception_master:
13224       delete_breakpoint (b);
13225       break;
13226
13227       /* This breakpoint is special, it's set up when the inferior
13228          starts and we really don't want to touch it.  */
13229     case bp_shlib_event:
13230
13231       /* Like bp_shlib_event, this breakpoint type is special.  Once
13232          it is set up, we do not want to touch it.  */
13233     case bp_thread_event:
13234       break;
13235     }
13236 }
13237
13238 static void
13239 internal_bkpt_check_status (bpstat bs)
13240 {
13241   if (bs->breakpoint_at->type == bp_shlib_event)
13242     {
13243       /* If requested, stop when the dynamic linker notifies GDB of
13244          events.  This allows the user to get control and place
13245          breakpoints in initializer routines for dynamically loaded
13246          objects (among other things).  */
13247       bs->stop = stop_on_solib_events;
13248       bs->print = stop_on_solib_events;
13249     }
13250   else
13251     bs->stop = 0;
13252 }
13253
13254 static enum print_stop_action
13255 internal_bkpt_print_it (bpstat bs)
13256 {
13257   struct breakpoint *b;
13258
13259   b = bs->breakpoint_at;
13260
13261   switch (b->type)
13262     {
13263     case bp_shlib_event:
13264       /* Did we stop because the user set the stop_on_solib_events
13265          variable?  (If so, we report this as a generic, "Stopped due
13266          to shlib event" message.) */
13267       print_solib_event (0);
13268       break;
13269
13270     case bp_thread_event:
13271       /* Not sure how we will get here.
13272          GDB should not stop for these breakpoints.  */
13273       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13274       break;
13275
13276     case bp_overlay_event:
13277       /* By analogy with the thread event, GDB should not stop for these.  */
13278       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13279       break;
13280
13281     case bp_longjmp_master:
13282       /* These should never be enabled.  */
13283       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13284       break;
13285
13286     case bp_std_terminate_master:
13287       /* These should never be enabled.  */
13288       printf_filtered (_("std::terminate Master Breakpoint: "
13289                          "gdb should not stop!\n"));
13290       break;
13291
13292     case bp_exception_master:
13293       /* These should never be enabled.  */
13294       printf_filtered (_("Exception Master Breakpoint: "
13295                          "gdb should not stop!\n"));
13296       break;
13297     }
13298
13299   return PRINT_NOTHING;
13300 }
13301
13302 static void
13303 internal_bkpt_print_mention (struct breakpoint *b)
13304 {
13305   /* Nothing to mention.  These breakpoints are internal.  */
13306 }
13307
13308 /* Virtual table for momentary breakpoints  */
13309
13310 static void
13311 momentary_bkpt_re_set (struct breakpoint *b)
13312 {
13313   /* Keep temporary breakpoints, which can be encountered when we step
13314      over a dlopen call and solib_add is resetting the breakpoints.
13315      Otherwise these should have been blown away via the cleanup chain
13316      or by breakpoint_init_inferior when we rerun the executable.  */
13317 }
13318
13319 static void
13320 momentary_bkpt_check_status (bpstat bs)
13321 {
13322   /* Nothing.  The point of these breakpoints is causing a stop.  */
13323 }
13324
13325 static enum print_stop_action
13326 momentary_bkpt_print_it (bpstat bs)
13327 {
13328   return PRINT_UNKNOWN;
13329 }
13330
13331 static void
13332 momentary_bkpt_print_mention (struct breakpoint *b)
13333 {
13334   /* Nothing to mention.  These breakpoints are internal.  */
13335 }
13336
13337 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13338
13339    It gets cleared already on the removal of the first one of such placed
13340    breakpoints.  This is OK as they get all removed altogether.  */
13341
13342 static void
13343 longjmp_bkpt_dtor (struct breakpoint *self)
13344 {
13345   struct thread_info *tp = find_thread_global_id (self->thread);
13346
13347   if (tp)
13348     tp->initiating_frame = null_frame_id;
13349
13350   momentary_breakpoint_ops.dtor (self);
13351 }
13352
13353 /* Specific methods for probe breakpoints.  */
13354
13355 static int
13356 bkpt_probe_insert_location (struct bp_location *bl)
13357 {
13358   int v = bkpt_insert_location (bl);
13359
13360   if (v == 0)
13361     {
13362       /* The insertion was successful, now let's set the probe's semaphore
13363          if needed.  */
13364       if (bl->probe.probe->pops->set_semaphore != NULL)
13365         bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13366                                               bl->probe.objfile,
13367                                               bl->gdbarch);
13368     }
13369
13370   return v;
13371 }
13372
13373 static int
13374 bkpt_probe_remove_location (struct bp_location *bl,
13375                             enum remove_bp_reason reason)
13376 {
13377   /* Let's clear the semaphore before removing the location.  */
13378   if (bl->probe.probe->pops->clear_semaphore != NULL)
13379     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13380                                             bl->probe.objfile,
13381                                             bl->gdbarch);
13382
13383   return bkpt_remove_location (bl, reason);
13384 }
13385
13386 static void
13387 bkpt_probe_create_sals_from_location (const struct event_location *location,
13388                                       struct linespec_result *canonical,
13389                                       enum bptype type_wanted)
13390 {
13391   struct linespec_sals lsal;
13392
13393   lsal.sals = parse_probes (location, NULL, canonical);
13394   lsal.canonical
13395     = xstrdup (event_location_to_string (canonical->location.get ()));
13396   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13397 }
13398
13399 static void
13400 bkpt_probe_decode_location (struct breakpoint *b,
13401                             const struct event_location *location,
13402                             struct program_space *search_pspace,
13403                             struct symtabs_and_lines *sals)
13404 {
13405   *sals = parse_probes (location, search_pspace, NULL);
13406   if (!sals->sals)
13407     error (_("probe not found"));
13408 }
13409
13410 /* The breakpoint_ops structure to be used in tracepoints.  */
13411
13412 static void
13413 tracepoint_re_set (struct breakpoint *b)
13414 {
13415   breakpoint_re_set_default (b);
13416 }
13417
13418 static int
13419 tracepoint_breakpoint_hit (const struct bp_location *bl,
13420                            struct address_space *aspace, CORE_ADDR bp_addr,
13421                            const struct target_waitstatus *ws)
13422 {
13423   /* By definition, the inferior does not report stops at
13424      tracepoints.  */
13425   return 0;
13426 }
13427
13428 static void
13429 tracepoint_print_one_detail (const struct breakpoint *self,
13430                              struct ui_out *uiout)
13431 {
13432   struct tracepoint *tp = (struct tracepoint *) self;
13433   if (tp->static_trace_marker_id)
13434     {
13435       gdb_assert (self->type == bp_static_tracepoint);
13436
13437       uiout->text ("\tmarker id is ");
13438       uiout->field_string ("static-tracepoint-marker-string-id",
13439                            tp->static_trace_marker_id);
13440       uiout->text ("\n");
13441     }
13442 }
13443
13444 static void
13445 tracepoint_print_mention (struct breakpoint *b)
13446 {
13447   if (current_uiout->is_mi_like_p ())
13448     return;
13449
13450   switch (b->type)
13451     {
13452     case bp_tracepoint:
13453       printf_filtered (_("Tracepoint"));
13454       printf_filtered (_(" %d"), b->number);
13455       break;
13456     case bp_fast_tracepoint:
13457       printf_filtered (_("Fast tracepoint"));
13458       printf_filtered (_(" %d"), b->number);
13459       break;
13460     case bp_static_tracepoint:
13461       printf_filtered (_("Static tracepoint"));
13462       printf_filtered (_(" %d"), b->number);
13463       break;
13464     default:
13465       internal_error (__FILE__, __LINE__,
13466                       _("unhandled tracepoint type %d"), (int) b->type);
13467     }
13468
13469   say_where (b);
13470 }
13471
13472 static void
13473 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13474 {
13475   struct tracepoint *tp = (struct tracepoint *) self;
13476
13477   if (self->type == bp_fast_tracepoint)
13478     fprintf_unfiltered (fp, "ftrace");
13479   else if (self->type == bp_static_tracepoint)
13480     fprintf_unfiltered (fp, "strace");
13481   else if (self->type == bp_tracepoint)
13482     fprintf_unfiltered (fp, "trace");
13483   else
13484     internal_error (__FILE__, __LINE__,
13485                     _("unhandled tracepoint type %d"), (int) self->type);
13486
13487   fprintf_unfiltered (fp, " %s",
13488                       event_location_to_string (self->location.get ()));
13489   print_recreate_thread (self, fp);
13490
13491   if (tp->pass_count)
13492     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13493 }
13494
13495 static void
13496 tracepoint_create_sals_from_location (const struct event_location *location,
13497                                       struct linespec_result *canonical,
13498                                       enum bptype type_wanted)
13499 {
13500   create_sals_from_location_default (location, canonical, type_wanted);
13501 }
13502
13503 static void
13504 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13505                                    struct linespec_result *canonical,
13506                                    char *cond_string,
13507                                    char *extra_string,
13508                                    enum bptype type_wanted,
13509                                    enum bpdisp disposition,
13510                                    int thread,
13511                                    int task, int ignore_count,
13512                                    const struct breakpoint_ops *ops,
13513                                    int from_tty, int enabled,
13514                                    int internal, unsigned flags)
13515 {
13516   create_breakpoints_sal_default (gdbarch, canonical,
13517                                   cond_string, extra_string,
13518                                   type_wanted,
13519                                   disposition, thread, task,
13520                                   ignore_count, ops, from_tty,
13521                                   enabled, internal, flags);
13522 }
13523
13524 static void
13525 tracepoint_decode_location (struct breakpoint *b,
13526                             const struct event_location *location,
13527                             struct program_space *search_pspace,
13528                             struct symtabs_and_lines *sals)
13529 {
13530   decode_location_default (b, location, search_pspace, sals);
13531 }
13532
13533 struct breakpoint_ops tracepoint_breakpoint_ops;
13534
13535 /* The breakpoint_ops structure to be use on tracepoints placed in a
13536    static probe.  */
13537
13538 static void
13539 tracepoint_probe_create_sals_from_location
13540   (const struct event_location *location,
13541    struct linespec_result *canonical,
13542    enum bptype type_wanted)
13543 {
13544   /* We use the same method for breakpoint on probes.  */
13545   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13546 }
13547
13548 static void
13549 tracepoint_probe_decode_location (struct breakpoint *b,
13550                                   const struct event_location *location,
13551                                   struct program_space *search_pspace,
13552                                   struct symtabs_and_lines *sals)
13553 {
13554   /* We use the same method for breakpoint on probes.  */
13555   bkpt_probe_decode_location (b, location, search_pspace, sals);
13556 }
13557
13558 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13559
13560 /* Dprintf breakpoint_ops methods.  */
13561
13562 static void
13563 dprintf_re_set (struct breakpoint *b)
13564 {
13565   breakpoint_re_set_default (b);
13566
13567   /* extra_string should never be non-NULL for dprintf.  */
13568   gdb_assert (b->extra_string != NULL);
13569
13570   /* 1 - connect to target 1, that can run breakpoint commands.
13571      2 - create a dprintf, which resolves fine.
13572      3 - disconnect from target 1
13573      4 - connect to target 2, that can NOT run breakpoint commands.
13574
13575      After steps #3/#4, you'll want the dprintf command list to
13576      be updated, because target 1 and 2 may well return different
13577      answers for target_can_run_breakpoint_commands().
13578      Given absence of finer grained resetting, we get to do
13579      it all the time.  */
13580   if (b->extra_string != NULL)
13581     update_dprintf_command_list (b);
13582 }
13583
13584 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13585
13586 static void
13587 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13588 {
13589   fprintf_unfiltered (fp, "dprintf %s,%s",
13590                       event_location_to_string (tp->location.get ()),
13591                       tp->extra_string);
13592   print_recreate_thread (tp, fp);
13593 }
13594
13595 /* Implement the "after_condition_true" breakpoint_ops method for
13596    dprintf.
13597
13598    dprintf's are implemented with regular commands in their command
13599    list, but we run the commands here instead of before presenting the
13600    stop to the user, as dprintf's don't actually cause a stop.  This
13601    also makes it so that the commands of multiple dprintfs at the same
13602    address are all handled.  */
13603
13604 static void
13605 dprintf_after_condition_true (struct bpstats *bs)
13606 {
13607   struct cleanup *old_chain;
13608   struct bpstats tmp_bs = { NULL };
13609   struct bpstats *tmp_bs_p = &tmp_bs;
13610
13611   /* dprintf's never cause a stop.  This wasn't set in the
13612      check_status hook instead because that would make the dprintf's
13613      condition not be evaluated.  */
13614   bs->stop = 0;
13615
13616   /* Run the command list here.  Take ownership of it instead of
13617      copying.  We never want these commands to run later in
13618      bpstat_do_actions, if a breakpoint that causes a stop happens to
13619      be set at same address as this dprintf, or even if running the
13620      commands here throws.  */
13621   tmp_bs.commands = bs->commands;
13622   bs->commands = NULL;
13623   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13624
13625   bpstat_do_actions_1 (&tmp_bs_p);
13626
13627   /* 'tmp_bs.commands' will usually be NULL by now, but
13628      bpstat_do_actions_1 may return early without processing the whole
13629      list.  */
13630   do_cleanups (old_chain);
13631 }
13632
13633 /* The breakpoint_ops structure to be used on static tracepoints with
13634    markers (`-m').  */
13635
13636 static void
13637 strace_marker_create_sals_from_location (const struct event_location *location,
13638                                          struct linespec_result *canonical,
13639                                          enum bptype type_wanted)
13640 {
13641   struct linespec_sals lsal;
13642   const char *arg_start, *arg;
13643   char *str;
13644   struct cleanup *cleanup;
13645
13646   arg = arg_start = get_linespec_location (location);
13647   lsal.sals = decode_static_tracepoint_spec (&arg);
13648
13649   str = savestring (arg_start, arg - arg_start);
13650   cleanup = make_cleanup (xfree, str);
13651   canonical->location = new_linespec_location (&str);
13652   do_cleanups (cleanup);
13653
13654   lsal.canonical
13655     = xstrdup (event_location_to_string (canonical->location.get ()));
13656   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13657 }
13658
13659 static void
13660 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13661                                       struct linespec_result *canonical,
13662                                       char *cond_string,
13663                                       char *extra_string,
13664                                       enum bptype type_wanted,
13665                                       enum bpdisp disposition,
13666                                       int thread,
13667                                       int task, int ignore_count,
13668                                       const struct breakpoint_ops *ops,
13669                                       int from_tty, int enabled,
13670                                       int internal, unsigned flags)
13671 {
13672   int i;
13673   struct linespec_sals *lsal = VEC_index (linespec_sals,
13674                                           canonical->sals, 0);
13675
13676   /* If the user is creating a static tracepoint by marker id
13677      (strace -m MARKER_ID), then store the sals index, so that
13678      breakpoint_re_set can try to match up which of the newly
13679      found markers corresponds to this one, and, don't try to
13680      expand multiple locations for each sal, given than SALS
13681      already should contain all sals for MARKER_ID.  */
13682
13683   for (i = 0; i < lsal->sals.nelts; ++i)
13684     {
13685       struct symtabs_and_lines expanded;
13686       struct tracepoint *tp;
13687       event_location_up location;
13688
13689       expanded.nelts = 1;
13690       expanded.sals = &lsal->sals.sals[i];
13691
13692       location = copy_event_location (canonical->location.get ());
13693
13694       tp = new tracepoint ();
13695       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13696                            std::move (location), NULL,
13697                            cond_string, extra_string,
13698                            type_wanted, disposition,
13699                            thread, task, ignore_count, ops,
13700                            from_tty, enabled, internal, flags,
13701                            canonical->special_display);
13702       /* Given that its possible to have multiple markers with
13703          the same string id, if the user is creating a static
13704          tracepoint by marker id ("strace -m MARKER_ID"), then
13705          store the sals index, so that breakpoint_re_set can
13706          try to match up which of the newly found markers
13707          corresponds to this one  */
13708       tp->static_trace_marker_id_idx = i;
13709
13710       install_breakpoint (internal, &tp->base, 0);
13711     }
13712 }
13713
13714 static void
13715 strace_marker_decode_location (struct breakpoint *b,
13716                                const struct event_location *location,
13717                                struct program_space *search_pspace,
13718                                struct symtabs_and_lines *sals)
13719 {
13720   struct tracepoint *tp = (struct tracepoint *) b;
13721   const char *s = get_linespec_location (location);
13722
13723   *sals = decode_static_tracepoint_spec (&s);
13724   if (sals->nelts > tp->static_trace_marker_id_idx)
13725     {
13726       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13727       sals->nelts = 1;
13728     }
13729   else
13730     error (_("marker %s not found"), tp->static_trace_marker_id);
13731 }
13732
13733 static struct breakpoint_ops strace_marker_breakpoint_ops;
13734
13735 static int
13736 strace_marker_p (struct breakpoint *b)
13737 {
13738   return b->ops == &strace_marker_breakpoint_ops;
13739 }
13740
13741 /* Delete a breakpoint and clean up all traces of it in the data
13742    structures.  */
13743
13744 void
13745 delete_breakpoint (struct breakpoint *bpt)
13746 {
13747   struct breakpoint *b;
13748
13749   gdb_assert (bpt != NULL);
13750
13751   /* Has this bp already been deleted?  This can happen because
13752      multiple lists can hold pointers to bp's.  bpstat lists are
13753      especial culprits.
13754
13755      One example of this happening is a watchpoint's scope bp.  When
13756      the scope bp triggers, we notice that the watchpoint is out of
13757      scope, and delete it.  We also delete its scope bp.  But the
13758      scope bp is marked "auto-deleting", and is already on a bpstat.
13759      That bpstat is then checked for auto-deleting bp's, which are
13760      deleted.
13761
13762      A real solution to this problem might involve reference counts in
13763      bp's, and/or giving them pointers back to their referencing
13764      bpstat's, and teaching delete_breakpoint to only free a bp's
13765      storage when no more references were extent.  A cheaper bandaid
13766      was chosen.  */
13767   if (bpt->type == bp_none)
13768     return;
13769
13770   /* At least avoid this stale reference until the reference counting
13771      of breakpoints gets resolved.  */
13772   if (bpt->related_breakpoint != bpt)
13773     {
13774       struct breakpoint *related;
13775       struct watchpoint *w;
13776
13777       if (bpt->type == bp_watchpoint_scope)
13778         w = (struct watchpoint *) bpt->related_breakpoint;
13779       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13780         w = (struct watchpoint *) bpt;
13781       else
13782         w = NULL;
13783       if (w != NULL)
13784         watchpoint_del_at_next_stop (w);
13785
13786       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13787       for (related = bpt; related->related_breakpoint != bpt;
13788            related = related->related_breakpoint);
13789       related->related_breakpoint = bpt->related_breakpoint;
13790       bpt->related_breakpoint = bpt;
13791     }
13792
13793   /* watch_command_1 creates a watchpoint but only sets its number if
13794      update_watchpoint succeeds in creating its bp_locations.  If there's
13795      a problem in that process, we'll be asked to delete the half-created
13796      watchpoint.  In that case, don't announce the deletion.  */
13797   if (bpt->number)
13798     observer_notify_breakpoint_deleted (bpt);
13799
13800   if (breakpoint_chain == bpt)
13801     breakpoint_chain = bpt->next;
13802
13803   ALL_BREAKPOINTS (b)
13804     if (b->next == bpt)
13805     {
13806       b->next = bpt->next;
13807       break;
13808     }
13809
13810   /* Be sure no bpstat's are pointing at the breakpoint after it's
13811      been freed.  */
13812   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13813      in all threads for now.  Note that we cannot just remove bpstats
13814      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13815      commands are associated with the bpstat; if we remove it here,
13816      then the later call to bpstat_do_actions (&stop_bpstat); in
13817      event-top.c won't do anything, and temporary breakpoints with
13818      commands won't work.  */
13819
13820   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13821
13822   /* Now that breakpoint is removed from breakpoint list, update the
13823      global location list.  This will remove locations that used to
13824      belong to this breakpoint.  Do this before freeing the breakpoint
13825      itself, since remove_breakpoint looks at location's owner.  It
13826      might be better design to have location completely
13827      self-contained, but it's not the case now.  */
13828   update_global_location_list (UGLL_DONT_INSERT);
13829
13830   bpt->ops->dtor (bpt);
13831   /* On the chance that someone will soon try again to delete this
13832      same bp, we mark it as deleted before freeing its storage.  */
13833   bpt->type = bp_none;
13834   delete bpt;
13835 }
13836
13837 static void
13838 do_delete_breakpoint_cleanup (void *b)
13839 {
13840   delete_breakpoint ((struct breakpoint *) b);
13841 }
13842
13843 struct cleanup *
13844 make_cleanup_delete_breakpoint (struct breakpoint *b)
13845 {
13846   return make_cleanup (do_delete_breakpoint_cleanup, b);
13847 }
13848
13849 /* Iterator function to call a user-provided callback function once
13850    for each of B and its related breakpoints.  */
13851
13852 static void
13853 iterate_over_related_breakpoints (struct breakpoint *b,
13854                                   void (*function) (struct breakpoint *,
13855                                                     void *),
13856                                   void *data)
13857 {
13858   struct breakpoint *related;
13859
13860   related = b;
13861   do
13862     {
13863       struct breakpoint *next;
13864
13865       /* FUNCTION may delete RELATED.  */
13866       next = related->related_breakpoint;
13867
13868       if (next == related)
13869         {
13870           /* RELATED is the last ring entry.  */
13871           function (related, data);
13872
13873           /* FUNCTION may have deleted it, so we'd never reach back to
13874              B.  There's nothing left to do anyway, so just break
13875              out.  */
13876           break;
13877         }
13878       else
13879         function (related, data);
13880
13881       related = next;
13882     }
13883   while (related != b);
13884 }
13885
13886 static void
13887 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13888 {
13889   delete_breakpoint (b);
13890 }
13891
13892 /* A callback for map_breakpoint_numbers that calls
13893    delete_breakpoint.  */
13894
13895 static void
13896 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13897 {
13898   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13899 }
13900
13901 void
13902 delete_command (char *arg, int from_tty)
13903 {
13904   struct breakpoint *b, *b_tmp;
13905
13906   dont_repeat ();
13907
13908   if (arg == 0)
13909     {
13910       int breaks_to_delete = 0;
13911
13912       /* Delete all breakpoints if no argument.  Do not delete
13913          internal breakpoints, these have to be deleted with an
13914          explicit breakpoint number argument.  */
13915       ALL_BREAKPOINTS (b)
13916         if (user_breakpoint_p (b))
13917           {
13918             breaks_to_delete = 1;
13919             break;
13920           }
13921
13922       /* Ask user only if there are some breakpoints to delete.  */
13923       if (!from_tty
13924           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13925         {
13926           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13927             if (user_breakpoint_p (b))
13928               delete_breakpoint (b);
13929         }
13930     }
13931   else
13932     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13933 }
13934
13935 /* Return true if all locations of B bound to PSPACE are pending.  If
13936    PSPACE is NULL, all locations of all program spaces are
13937    considered.  */
13938
13939 static int
13940 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13941 {
13942   struct bp_location *loc;
13943
13944   for (loc = b->loc; loc != NULL; loc = loc->next)
13945     if ((pspace == NULL
13946          || loc->pspace == pspace)
13947         && !loc->shlib_disabled
13948         && !loc->pspace->executing_startup)
13949       return 0;
13950   return 1;
13951 }
13952
13953 /* Subroutine of update_breakpoint_locations to simplify it.
13954    Return non-zero if multiple fns in list LOC have the same name.
13955    Null names are ignored.  */
13956
13957 static int
13958 ambiguous_names_p (struct bp_location *loc)
13959 {
13960   struct bp_location *l;
13961   htab_t htab = htab_create_alloc (13, htab_hash_string,
13962                                    (int (*) (const void *, 
13963                                              const void *)) streq,
13964                                    NULL, xcalloc, xfree);
13965
13966   for (l = loc; l != NULL; l = l->next)
13967     {
13968       const char **slot;
13969       const char *name = l->function_name;
13970
13971       /* Allow for some names to be NULL, ignore them.  */
13972       if (name == NULL)
13973         continue;
13974
13975       slot = (const char **) htab_find_slot (htab, (const void *) name,
13976                                              INSERT);
13977       /* NOTE: We can assume slot != NULL here because xcalloc never
13978          returns NULL.  */
13979       if (*slot != NULL)
13980         {
13981           htab_delete (htab);
13982           return 1;
13983         }
13984       *slot = name;
13985     }
13986
13987   htab_delete (htab);
13988   return 0;
13989 }
13990
13991 /* When symbols change, it probably means the sources changed as well,
13992    and it might mean the static tracepoint markers are no longer at
13993    the same address or line numbers they used to be at last we
13994    checked.  Losing your static tracepoints whenever you rebuild is
13995    undesirable.  This function tries to resync/rematch gdb static
13996    tracepoints with the markers on the target, for static tracepoints
13997    that have not been set by marker id.  Static tracepoint that have
13998    been set by marker id are reset by marker id in breakpoint_re_set.
13999    The heuristic is:
14000
14001    1) For a tracepoint set at a specific address, look for a marker at
14002    the old PC.  If one is found there, assume to be the same marker.
14003    If the name / string id of the marker found is different from the
14004    previous known name, assume that means the user renamed the marker
14005    in the sources, and output a warning.
14006
14007    2) For a tracepoint set at a given line number, look for a marker
14008    at the new address of the old line number.  If one is found there,
14009    assume to be the same marker.  If the name / string id of the
14010    marker found is different from the previous known name, assume that
14011    means the user renamed the marker in the sources, and output a
14012    warning.
14013
14014    3) If a marker is no longer found at the same address or line, it
14015    may mean the marker no longer exists.  But it may also just mean
14016    the code changed a bit.  Maybe the user added a few lines of code
14017    that made the marker move up or down (in line number terms).  Ask
14018    the target for info about the marker with the string id as we knew
14019    it.  If found, update line number and address in the matching
14020    static tracepoint.  This will get confused if there's more than one
14021    marker with the same ID (possible in UST, although unadvised
14022    precisely because it confuses tools).  */
14023
14024 static struct symtab_and_line
14025 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
14026 {
14027   struct tracepoint *tp = (struct tracepoint *) b;
14028   struct static_tracepoint_marker marker;
14029   CORE_ADDR pc;
14030
14031   pc = sal.pc;
14032   if (sal.line)
14033     find_line_pc (sal.symtab, sal.line, &pc);
14034
14035   if (target_static_tracepoint_marker_at (pc, &marker))
14036     {
14037       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
14038         warning (_("static tracepoint %d changed probed marker from %s to %s"),
14039                  b->number,
14040                  tp->static_trace_marker_id, marker.str_id);
14041
14042       xfree (tp->static_trace_marker_id);
14043       tp->static_trace_marker_id = xstrdup (marker.str_id);
14044       release_static_tracepoint_marker (&marker);
14045
14046       return sal;
14047     }
14048
14049   /* Old marker wasn't found on target at lineno.  Try looking it up
14050      by string ID.  */
14051   if (!sal.explicit_pc
14052       && sal.line != 0
14053       && sal.symtab != NULL
14054       && tp->static_trace_marker_id != NULL)
14055     {
14056       VEC(static_tracepoint_marker_p) *markers;
14057
14058       markers
14059         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
14060
14061       if (!VEC_empty(static_tracepoint_marker_p, markers))
14062         {
14063           struct symtab_and_line sal2;
14064           struct symbol *sym;
14065           struct static_tracepoint_marker *tpmarker;
14066           struct ui_out *uiout = current_uiout;
14067           struct explicit_location explicit_loc;
14068
14069           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
14070
14071           xfree (tp->static_trace_marker_id);
14072           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
14073
14074           warning (_("marker for static tracepoint %d (%s) not "
14075                      "found at previous line number"),
14076                    b->number, tp->static_trace_marker_id);
14077
14078           init_sal (&sal2);
14079
14080           sal2.pc = tpmarker->address;
14081
14082           sal2 = find_pc_line (tpmarker->address, 0);
14083           sym = find_pc_sect_function (tpmarker->address, NULL);
14084           uiout->text ("Now in ");
14085           if (sym)
14086             {
14087               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
14088               uiout->text (" at ");
14089             }
14090           uiout->field_string ("file",
14091                                symtab_to_filename_for_display (sal2.symtab));
14092           uiout->text (":");
14093
14094           if (uiout->is_mi_like_p ())
14095             {
14096               const char *fullname = symtab_to_fullname (sal2.symtab);
14097
14098               uiout->field_string ("fullname", fullname);
14099             }
14100
14101           uiout->field_int ("line", sal2.line);
14102           uiout->text ("\n");
14103
14104           b->loc->line_number = sal2.line;
14105           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14106
14107           b->location.reset (NULL);
14108           initialize_explicit_location (&explicit_loc);
14109           explicit_loc.source_filename
14110             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
14111           explicit_loc.line_offset.offset = b->loc->line_number;
14112           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
14113           b->location = new_explicit_location (&explicit_loc);
14114
14115           /* Might be nice to check if function changed, and warn if
14116              so.  */
14117
14118           release_static_tracepoint_marker (tpmarker);
14119         }
14120     }
14121   return sal;
14122 }
14123
14124 /* Returns 1 iff locations A and B are sufficiently same that
14125    we don't need to report breakpoint as changed.  */
14126
14127 static int
14128 locations_are_equal (struct bp_location *a, struct bp_location *b)
14129 {
14130   while (a && b)
14131     {
14132       if (a->address != b->address)
14133         return 0;
14134
14135       if (a->shlib_disabled != b->shlib_disabled)
14136         return 0;
14137
14138       if (a->enabled != b->enabled)
14139         return 0;
14140
14141       a = a->next;
14142       b = b->next;
14143     }
14144
14145   if ((a == NULL) != (b == NULL))
14146     return 0;
14147
14148   return 1;
14149 }
14150
14151 /* Split all locations of B that are bound to PSPACE out of B's
14152    location list to a separate list and return that list's head.  If
14153    PSPACE is NULL, hoist out all locations of B.  */
14154
14155 static struct bp_location *
14156 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
14157 {
14158   struct bp_location head;
14159   struct bp_location *i = b->loc;
14160   struct bp_location **i_link = &b->loc;
14161   struct bp_location *hoisted = &head;
14162
14163   if (pspace == NULL)
14164     {
14165       i = b->loc;
14166       b->loc = NULL;
14167       return i;
14168     }
14169
14170   head.next = NULL;
14171
14172   while (i != NULL)
14173     {
14174       if (i->pspace == pspace)
14175         {
14176           *i_link = i->next;
14177           i->next = NULL;
14178           hoisted->next = i;
14179           hoisted = i;
14180         }
14181       else
14182         i_link = &i->next;
14183       i = *i_link;
14184     }
14185
14186   return head.next;
14187 }
14188
14189 /* Create new breakpoint locations for B (a hardware or software
14190    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
14191    zero, then B is a ranged breakpoint.  Only recreates locations for
14192    FILTER_PSPACE.  Locations of other program spaces are left
14193    untouched.  */
14194
14195 void
14196 update_breakpoint_locations (struct breakpoint *b,
14197                              struct program_space *filter_pspace,
14198                              struct symtabs_and_lines sals,
14199                              struct symtabs_and_lines sals_end)
14200 {
14201   int i;
14202   struct bp_location *existing_locations;
14203
14204   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14205     {
14206       /* Ranged breakpoints have only one start location and one end
14207          location.  */
14208       b->enable_state = bp_disabled;
14209       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14210                            "multiple locations found\n"),
14211                          b->number);
14212       return;
14213     }
14214
14215   /* If there's no new locations, and all existing locations are
14216      pending, don't do anything.  This optimizes the common case where
14217      all locations are in the same shared library, that was unloaded.
14218      We'd like to retain the location, so that when the library is
14219      loaded again, we don't loose the enabled/disabled status of the
14220      individual locations.  */
14221   if (all_locations_are_pending (b, filter_pspace) && sals.nelts == 0)
14222     return;
14223
14224   existing_locations = hoist_existing_locations (b, filter_pspace);
14225
14226   for (i = 0; i < sals.nelts; ++i)
14227     {
14228       struct bp_location *new_loc;
14229
14230       switch_to_program_space_and_thread (sals.sals[i].pspace);
14231
14232       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14233
14234       /* Reparse conditions, they might contain references to the
14235          old symtab.  */
14236       if (b->cond_string != NULL)
14237         {
14238           const char *s;
14239
14240           s = b->cond_string;
14241           TRY
14242             {
14243               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14244                                            block_for_pc (sals.sals[i].pc), 
14245                                            0);
14246             }
14247           CATCH (e, RETURN_MASK_ERROR)
14248             {
14249               warning (_("failed to reevaluate condition "
14250                          "for breakpoint %d: %s"), 
14251                        b->number, e.message);
14252               new_loc->enabled = 0;
14253             }
14254           END_CATCH
14255         }
14256
14257       if (sals_end.nelts)
14258         {
14259           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14260
14261           new_loc->length = end - sals.sals[0].pc + 1;
14262         }
14263     }
14264
14265   /* If possible, carry over 'disable' status from existing
14266      breakpoints.  */
14267   {
14268     struct bp_location *e = existing_locations;
14269     /* If there are multiple breakpoints with the same function name,
14270        e.g. for inline functions, comparing function names won't work.
14271        Instead compare pc addresses; this is just a heuristic as things
14272        may have moved, but in practice it gives the correct answer
14273        often enough until a better solution is found.  */
14274     int have_ambiguous_names = ambiguous_names_p (b->loc);
14275
14276     for (; e; e = e->next)
14277       {
14278         if (!e->enabled && e->function_name)
14279           {
14280             struct bp_location *l = b->loc;
14281             if (have_ambiguous_names)
14282               {
14283                 for (; l; l = l->next)
14284                   if (breakpoint_locations_match (e, l))
14285                     {
14286                       l->enabled = 0;
14287                       break;
14288                     }
14289               }
14290             else
14291               {
14292                 for (; l; l = l->next)
14293                   if (l->function_name
14294                       && strcmp (e->function_name, l->function_name) == 0)
14295                     {
14296                       l->enabled = 0;
14297                       break;
14298                     }
14299               }
14300           }
14301       }
14302   }
14303
14304   if (!locations_are_equal (existing_locations, b->loc))
14305     observer_notify_breakpoint_modified (b);
14306 }
14307
14308 /* Find the SaL locations corresponding to the given LOCATION.
14309    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14310
14311 static struct symtabs_and_lines
14312 location_to_sals (struct breakpoint *b, struct event_location *location,
14313                   struct program_space *search_pspace, int *found)
14314 {
14315   struct symtabs_and_lines sals = {0};
14316   struct gdb_exception exception = exception_none;
14317
14318   gdb_assert (b->ops != NULL);
14319
14320   TRY
14321     {
14322       b->ops->decode_location (b, location, search_pspace, &sals);
14323     }
14324   CATCH (e, RETURN_MASK_ERROR)
14325     {
14326       int not_found_and_ok = 0;
14327
14328       exception = e;
14329
14330       /* For pending breakpoints, it's expected that parsing will
14331          fail until the right shared library is loaded.  User has
14332          already told to create pending breakpoints and don't need
14333          extra messages.  If breakpoint is in bp_shlib_disabled
14334          state, then user already saw the message about that
14335          breakpoint being disabled, and don't want to see more
14336          errors.  */
14337       if (e.error == NOT_FOUND_ERROR
14338           && (b->condition_not_parsed
14339               || (b->loc != NULL
14340                   && search_pspace != NULL
14341                   && b->loc->pspace != search_pspace)
14342               || (b->loc && b->loc->shlib_disabled)
14343               || (b->loc && b->loc->pspace->executing_startup)
14344               || b->enable_state == bp_disabled))
14345         not_found_and_ok = 1;
14346
14347       if (!not_found_and_ok)
14348         {
14349           /* We surely don't want to warn about the same breakpoint
14350              10 times.  One solution, implemented here, is disable
14351              the breakpoint on error.  Another solution would be to
14352              have separate 'warning emitted' flag.  Since this
14353              happens only when a binary has changed, I don't know
14354              which approach is better.  */
14355           b->enable_state = bp_disabled;
14356           throw_exception (e);
14357         }
14358     }
14359   END_CATCH
14360
14361   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
14362     {
14363       int i;
14364
14365       for (i = 0; i < sals.nelts; ++i)
14366         resolve_sal_pc (&sals.sals[i]);
14367       if (b->condition_not_parsed && b->extra_string != NULL)
14368         {
14369           char *cond_string, *extra_string;
14370           int thread, task;
14371
14372           find_condition_and_thread (b->extra_string, sals.sals[0].pc,
14373                                      &cond_string, &thread, &task,
14374                                      &extra_string);
14375           gdb_assert (b->cond_string == NULL);
14376           if (cond_string)
14377             b->cond_string = cond_string;
14378           b->thread = thread;
14379           b->task = task;
14380           if (extra_string)
14381             {
14382               xfree (b->extra_string);
14383               b->extra_string = extra_string;
14384             }
14385           b->condition_not_parsed = 0;
14386         }
14387
14388       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14389         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14390
14391       *found = 1;
14392     }
14393   else
14394     *found = 0;
14395
14396   return sals;
14397 }
14398
14399 /* The default re_set method, for typical hardware or software
14400    breakpoints.  Reevaluate the breakpoint and recreate its
14401    locations.  */
14402
14403 static void
14404 breakpoint_re_set_default (struct breakpoint *b)
14405 {
14406   int found;
14407   struct symtabs_and_lines sals, sals_end;
14408   struct symtabs_and_lines expanded = {0};
14409   struct symtabs_and_lines expanded_end = {0};
14410   struct program_space *filter_pspace = current_program_space;
14411
14412   sals = location_to_sals (b, b->location.get (), filter_pspace, &found);
14413   if (found)
14414     {
14415       make_cleanup (xfree, sals.sals);
14416       expanded = sals;
14417     }
14418
14419   if (b->location_range_end != NULL)
14420     {
14421       sals_end = location_to_sals (b, b->location_range_end.get (),
14422                                    filter_pspace, &found);
14423       if (found)
14424         {
14425           make_cleanup (xfree, sals_end.sals);
14426           expanded_end = sals_end;
14427         }
14428     }
14429
14430   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
14431 }
14432
14433 /* Default method for creating SALs from an address string.  It basically
14434    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14435
14436 static void
14437 create_sals_from_location_default (const struct event_location *location,
14438                                    struct linespec_result *canonical,
14439                                    enum bptype type_wanted)
14440 {
14441   parse_breakpoint_sals (location, canonical);
14442 }
14443
14444 /* Call create_breakpoints_sal for the given arguments.  This is the default
14445    function for the `create_breakpoints_sal' method of
14446    breakpoint_ops.  */
14447
14448 static void
14449 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14450                                 struct linespec_result *canonical,
14451                                 char *cond_string,
14452                                 char *extra_string,
14453                                 enum bptype type_wanted,
14454                                 enum bpdisp disposition,
14455                                 int thread,
14456                                 int task, int ignore_count,
14457                                 const struct breakpoint_ops *ops,
14458                                 int from_tty, int enabled,
14459                                 int internal, unsigned flags)
14460 {
14461   create_breakpoints_sal (gdbarch, canonical, cond_string,
14462                           extra_string,
14463                           type_wanted, disposition,
14464                           thread, task, ignore_count, ops, from_tty,
14465                           enabled, internal, flags);
14466 }
14467
14468 /* Decode the line represented by S by calling decode_line_full.  This is the
14469    default function for the `decode_location' method of breakpoint_ops.  */
14470
14471 static void
14472 decode_location_default (struct breakpoint *b,
14473                          const struct event_location *location,
14474                          struct program_space *search_pspace,
14475                          struct symtabs_and_lines *sals)
14476 {
14477   struct linespec_result canonical;
14478
14479   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14480                     (struct symtab *) NULL, 0,
14481                     &canonical, multiple_symbols_all,
14482                     b->filter);
14483
14484   /* We should get 0 or 1 resulting SALs.  */
14485   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14486
14487   if (VEC_length (linespec_sals, canonical.sals) > 0)
14488     {
14489       struct linespec_sals *lsal;
14490
14491       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14492       *sals = lsal->sals;
14493       /* Arrange it so the destructor does not free the
14494          contents.  */
14495       lsal->sals.sals = NULL;
14496     }
14497 }
14498
14499 /* Prepare the global context for a re-set of breakpoint B.  */
14500
14501 static struct cleanup *
14502 prepare_re_set_context (struct breakpoint *b)
14503 {
14504   input_radix = b->input_radix;
14505   set_language (b->language);
14506
14507   return make_cleanup (null_cleanup, NULL);
14508 }
14509
14510 /* Reset a breakpoint given it's struct breakpoint * BINT.
14511    The value we return ends up being the return value from catch_errors.
14512    Unused in this case.  */
14513
14514 static int
14515 breakpoint_re_set_one (void *bint)
14516 {
14517   /* Get past catch_errs.  */
14518   struct breakpoint *b = (struct breakpoint *) bint;
14519   struct cleanup *cleanups;
14520
14521   cleanups = prepare_re_set_context (b);
14522   b->ops->re_set (b);
14523   do_cleanups (cleanups);
14524   return 0;
14525 }
14526
14527 /* Re-set breakpoint locations for the current program space.
14528    Locations bound to other program spaces are left untouched.  */
14529
14530 void
14531 breakpoint_re_set (void)
14532 {
14533   struct breakpoint *b, *b_tmp;
14534   enum language save_language;
14535   int save_input_radix;
14536   struct cleanup *old_chain;
14537
14538   save_language = current_language->la_language;
14539   save_input_radix = input_radix;
14540   old_chain = save_current_space_and_thread ();
14541
14542   /* Note: we must not try to insert locations until after all
14543      breakpoints have been re-set.  Otherwise, e.g., when re-setting
14544      breakpoint 1, we'd insert the locations of breakpoint 2, which
14545      hadn't been re-set yet, and thus may have stale locations.  */
14546
14547   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14548   {
14549     /* Format possible error msg.  */
14550     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14551                                 b->number);
14552     struct cleanup *cleanups = make_cleanup (xfree, message);
14553     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14554     do_cleanups (cleanups);
14555   }
14556   set_language (save_language);
14557   input_radix = save_input_radix;
14558
14559   jit_breakpoint_re_set ();
14560
14561   do_cleanups (old_chain);
14562
14563   create_overlay_event_breakpoint ();
14564   create_longjmp_master_breakpoint ();
14565   create_std_terminate_master_breakpoint ();
14566   create_exception_master_breakpoint ();
14567
14568   /* Now we can insert.  */
14569   update_global_location_list (UGLL_MAY_INSERT);
14570 }
14571 \f
14572 /* Reset the thread number of this breakpoint:
14573
14574    - If the breakpoint is for all threads, leave it as-is.
14575    - Else, reset it to the current thread for inferior_ptid.  */
14576 void
14577 breakpoint_re_set_thread (struct breakpoint *b)
14578 {
14579   if (b->thread != -1)
14580     {
14581       if (in_thread_list (inferior_ptid))
14582         b->thread = ptid_to_global_thread_id (inferior_ptid);
14583
14584       /* We're being called after following a fork.  The new fork is
14585          selected as current, and unless this was a vfork will have a
14586          different program space from the original thread.  Reset that
14587          as well.  */
14588       b->loc->pspace = current_program_space;
14589     }
14590 }
14591
14592 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14593    If from_tty is nonzero, it prints a message to that effect,
14594    which ends with a period (no newline).  */
14595
14596 void
14597 set_ignore_count (int bptnum, int count, int from_tty)
14598 {
14599   struct breakpoint *b;
14600
14601   if (count < 0)
14602     count = 0;
14603
14604   ALL_BREAKPOINTS (b)
14605     if (b->number == bptnum)
14606     {
14607       if (is_tracepoint (b))
14608         {
14609           if (from_tty && count != 0)
14610             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14611                              bptnum);
14612           return;
14613         }
14614       
14615       b->ignore_count = count;
14616       if (from_tty)
14617         {
14618           if (count == 0)
14619             printf_filtered (_("Will stop next time "
14620                                "breakpoint %d is reached."),
14621                              bptnum);
14622           else if (count == 1)
14623             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14624                              bptnum);
14625           else
14626             printf_filtered (_("Will ignore next %d "
14627                                "crossings of breakpoint %d."),
14628                              count, bptnum);
14629         }
14630       observer_notify_breakpoint_modified (b);
14631       return;
14632     }
14633
14634   error (_("No breakpoint number %d."), bptnum);
14635 }
14636
14637 /* Command to set ignore-count of breakpoint N to COUNT.  */
14638
14639 static void
14640 ignore_command (char *args, int from_tty)
14641 {
14642   char *p = args;
14643   int num;
14644
14645   if (p == 0)
14646     error_no_arg (_("a breakpoint number"));
14647
14648   num = get_number (&p);
14649   if (num == 0)
14650     error (_("bad breakpoint number: '%s'"), args);
14651   if (*p == 0)
14652     error (_("Second argument (specified ignore-count) is missing."));
14653
14654   set_ignore_count (num,
14655                     longest_to_int (value_as_long (parse_and_eval (p))),
14656                     from_tty);
14657   if (from_tty)
14658     printf_filtered ("\n");
14659 }
14660 \f
14661 /* Call FUNCTION on each of the breakpoints
14662    whose numbers are given in ARGS.  */
14663
14664 static void
14665 map_breakpoint_numbers (const char *args,
14666                         void (*function) (struct breakpoint *,
14667                                           void *),
14668                         void *data)
14669 {
14670   int num;
14671   struct breakpoint *b, *tmp;
14672
14673   if (args == 0 || *args == '\0')
14674     error_no_arg (_("one or more breakpoint numbers"));
14675
14676   number_or_range_parser parser (args);
14677
14678   while (!parser.finished ())
14679     {
14680       const char *p = parser.cur_tok ();
14681       bool match = false;
14682
14683       num = parser.get_number ();
14684       if (num == 0)
14685         {
14686           warning (_("bad breakpoint number at or near '%s'"), p);
14687         }
14688       else
14689         {
14690           ALL_BREAKPOINTS_SAFE (b, tmp)
14691             if (b->number == num)
14692               {
14693                 match = true;
14694                 function (b, data);
14695                 break;
14696               }
14697           if (!match)
14698             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14699         }
14700     }
14701 }
14702
14703 static struct bp_location *
14704 find_location_by_number (char *number)
14705 {
14706   char *dot = strchr (number, '.');
14707   char *p1;
14708   int bp_num;
14709   int loc_num;
14710   struct breakpoint *b;
14711   struct bp_location *loc;  
14712
14713   *dot = '\0';
14714
14715   p1 = number;
14716   bp_num = get_number (&p1);
14717   if (bp_num == 0)
14718     error (_("Bad breakpoint number '%s'"), number);
14719
14720   ALL_BREAKPOINTS (b)
14721     if (b->number == bp_num)
14722       {
14723         break;
14724       }
14725
14726   if (!b || b->number != bp_num)
14727     error (_("Bad breakpoint number '%s'"), number);
14728   
14729   p1 = dot+1;
14730   loc_num = get_number (&p1);
14731   if (loc_num == 0)
14732     error (_("Bad breakpoint location number '%s'"), number);
14733
14734   --loc_num;
14735   loc = b->loc;
14736   for (;loc_num && loc; --loc_num, loc = loc->next)
14737     ;
14738   if (!loc)
14739     error (_("Bad breakpoint location number '%s'"), dot+1);
14740     
14741   return loc;  
14742 }
14743
14744
14745 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14746    If from_tty is nonzero, it prints a message to that effect,
14747    which ends with a period (no newline).  */
14748
14749 void
14750 disable_breakpoint (struct breakpoint *bpt)
14751 {
14752   /* Never disable a watchpoint scope breakpoint; we want to
14753      hit them when we leave scope so we can delete both the
14754      watchpoint and its scope breakpoint at that time.  */
14755   if (bpt->type == bp_watchpoint_scope)
14756     return;
14757
14758   bpt->enable_state = bp_disabled;
14759
14760   /* Mark breakpoint locations modified.  */
14761   mark_breakpoint_modified (bpt);
14762
14763   if (target_supports_enable_disable_tracepoint ()
14764       && current_trace_status ()->running && is_tracepoint (bpt))
14765     {
14766       struct bp_location *location;
14767      
14768       for (location = bpt->loc; location; location = location->next)
14769         target_disable_tracepoint (location);
14770     }
14771
14772   update_global_location_list (UGLL_DONT_INSERT);
14773
14774   observer_notify_breakpoint_modified (bpt);
14775 }
14776
14777 /* A callback for iterate_over_related_breakpoints.  */
14778
14779 static void
14780 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14781 {
14782   disable_breakpoint (b);
14783 }
14784
14785 /* A callback for map_breakpoint_numbers that calls
14786    disable_breakpoint.  */
14787
14788 static void
14789 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14790 {
14791   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14792 }
14793
14794 static void
14795 disable_command (char *args, int from_tty)
14796 {
14797   if (args == 0)
14798     {
14799       struct breakpoint *bpt;
14800
14801       ALL_BREAKPOINTS (bpt)
14802         if (user_breakpoint_p (bpt))
14803           disable_breakpoint (bpt);
14804     }
14805   else
14806     {
14807       char *num = extract_arg (&args);
14808
14809       while (num)
14810         {
14811           if (strchr (num, '.'))
14812             {
14813               struct bp_location *loc = find_location_by_number (num);
14814
14815               if (loc)
14816                 {
14817                   if (loc->enabled)
14818                     {
14819                       loc->enabled = 0;
14820                       mark_breakpoint_location_modified (loc);
14821                     }
14822                   if (target_supports_enable_disable_tracepoint ()
14823                       && current_trace_status ()->running && loc->owner
14824                       && is_tracepoint (loc->owner))
14825                     target_disable_tracepoint (loc);
14826                 }
14827               update_global_location_list (UGLL_DONT_INSERT);
14828             }
14829           else
14830             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14831           num = extract_arg (&args);
14832         }
14833     }
14834 }
14835
14836 static void
14837 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14838                         int count)
14839 {
14840   int target_resources_ok;
14841
14842   if (bpt->type == bp_hardware_breakpoint)
14843     {
14844       int i;
14845       i = hw_breakpoint_used_count ();
14846       target_resources_ok = 
14847         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14848                                             i + 1, 0);
14849       if (target_resources_ok == 0)
14850         error (_("No hardware breakpoint support in the target."));
14851       else if (target_resources_ok < 0)
14852         error (_("Hardware breakpoints used exceeds limit."));
14853     }
14854
14855   if (is_watchpoint (bpt))
14856     {
14857       /* Initialize it just to avoid a GCC false warning.  */
14858       enum enable_state orig_enable_state = bp_disabled;
14859
14860       TRY
14861         {
14862           struct watchpoint *w = (struct watchpoint *) bpt;
14863
14864           orig_enable_state = bpt->enable_state;
14865           bpt->enable_state = bp_enabled;
14866           update_watchpoint (w, 1 /* reparse */);
14867         }
14868       CATCH (e, RETURN_MASK_ALL)
14869         {
14870           bpt->enable_state = orig_enable_state;
14871           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14872                              bpt->number);
14873           return;
14874         }
14875       END_CATCH
14876     }
14877
14878   bpt->enable_state = bp_enabled;
14879
14880   /* Mark breakpoint locations modified.  */
14881   mark_breakpoint_modified (bpt);
14882
14883   if (target_supports_enable_disable_tracepoint ()
14884       && current_trace_status ()->running && is_tracepoint (bpt))
14885     {
14886       struct bp_location *location;
14887
14888       for (location = bpt->loc; location; location = location->next)
14889         target_enable_tracepoint (location);
14890     }
14891
14892   bpt->disposition = disposition;
14893   bpt->enable_count = count;
14894   update_global_location_list (UGLL_MAY_INSERT);
14895
14896   observer_notify_breakpoint_modified (bpt);
14897 }
14898
14899
14900 void
14901 enable_breakpoint (struct breakpoint *bpt)
14902 {
14903   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14904 }
14905
14906 static void
14907 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14908 {
14909   enable_breakpoint (bpt);
14910 }
14911
14912 /* A callback for map_breakpoint_numbers that calls
14913    enable_breakpoint.  */
14914
14915 static void
14916 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14917 {
14918   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14919 }
14920
14921 /* The enable command enables the specified breakpoints (or all defined
14922    breakpoints) so they once again become (or continue to be) effective
14923    in stopping the inferior.  */
14924
14925 static void
14926 enable_command (char *args, int from_tty)
14927 {
14928   if (args == 0)
14929     {
14930       struct breakpoint *bpt;
14931
14932       ALL_BREAKPOINTS (bpt)
14933         if (user_breakpoint_p (bpt))
14934           enable_breakpoint (bpt);
14935     }
14936   else
14937     {
14938       char *num = extract_arg (&args);
14939
14940       while (num)
14941         {
14942           if (strchr (num, '.'))
14943             {
14944               struct bp_location *loc = find_location_by_number (num);
14945
14946               if (loc)
14947                 {
14948                   if (!loc->enabled)
14949                     {
14950                       loc->enabled = 1;
14951                       mark_breakpoint_location_modified (loc);
14952                     }
14953                   if (target_supports_enable_disable_tracepoint ()
14954                       && current_trace_status ()->running && loc->owner
14955                       && is_tracepoint (loc->owner))
14956                     target_enable_tracepoint (loc);
14957                 }
14958               update_global_location_list (UGLL_MAY_INSERT);
14959             }
14960           else
14961             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
14962           num = extract_arg (&args);
14963         }
14964     }
14965 }
14966
14967 /* This struct packages up disposition data for application to multiple
14968    breakpoints.  */
14969
14970 struct disp_data
14971 {
14972   enum bpdisp disp;
14973   int count;
14974 };
14975
14976 static void
14977 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14978 {
14979   struct disp_data disp_data = *(struct disp_data *) arg;
14980
14981   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14982 }
14983
14984 static void
14985 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14986 {
14987   struct disp_data disp = { disp_disable, 1 };
14988
14989   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14990 }
14991
14992 static void
14993 enable_once_command (char *args, int from_tty)
14994 {
14995   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14996 }
14997
14998 static void
14999 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
15000 {
15001   struct disp_data disp = { disp_disable, *(int *) countptr };
15002
15003   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15004 }
15005
15006 static void
15007 enable_count_command (char *args, int from_tty)
15008 {
15009   int count;
15010
15011   if (args == NULL)
15012     error_no_arg (_("hit count"));
15013
15014   count = get_number (&args);
15015
15016   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
15017 }
15018
15019 static void
15020 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
15021 {
15022   struct disp_data disp = { disp_del, 1 };
15023
15024   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15025 }
15026
15027 static void
15028 enable_delete_command (char *args, int from_tty)
15029 {
15030   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
15031 }
15032 \f
15033 static void
15034 set_breakpoint_cmd (char *args, int from_tty)
15035 {
15036 }
15037
15038 static void
15039 show_breakpoint_cmd (char *args, int from_tty)
15040 {
15041 }
15042
15043 /* Invalidate last known value of any hardware watchpoint if
15044    the memory which that value represents has been written to by
15045    GDB itself.  */
15046
15047 static void
15048 invalidate_bp_value_on_memory_change (struct inferior *inferior,
15049                                       CORE_ADDR addr, ssize_t len,
15050                                       const bfd_byte *data)
15051 {
15052   struct breakpoint *bp;
15053
15054   ALL_BREAKPOINTS (bp)
15055     if (bp->enable_state == bp_enabled
15056         && bp->type == bp_hardware_watchpoint)
15057       {
15058         struct watchpoint *wp = (struct watchpoint *) bp;
15059
15060         if (wp->val_valid && wp->val)
15061           {
15062             struct bp_location *loc;
15063
15064             for (loc = bp->loc; loc != NULL; loc = loc->next)
15065               if (loc->loc_type == bp_loc_hardware_watchpoint
15066                   && loc->address + loc->length > addr
15067                   && addr + len > loc->address)
15068                 {
15069                   value_free (wp->val);
15070                   wp->val = NULL;
15071                   wp->val_valid = 0;
15072                 }
15073           }
15074       }
15075 }
15076
15077 /* Create and insert a breakpoint for software single step.  */
15078
15079 void
15080 insert_single_step_breakpoint (struct gdbarch *gdbarch,
15081                                struct address_space *aspace, 
15082                                CORE_ADDR next_pc)
15083 {
15084   struct thread_info *tp = inferior_thread ();
15085   struct symtab_and_line sal;
15086   CORE_ADDR pc = next_pc;
15087
15088   if (tp->control.single_step_breakpoints == NULL)
15089     {
15090       tp->control.single_step_breakpoints
15091         = new_single_step_breakpoint (tp->global_num, gdbarch);
15092     }
15093
15094   sal = find_pc_line (pc, 0);
15095   sal.pc = pc;
15096   sal.section = find_pc_overlay (pc);
15097   sal.explicit_pc = 1;
15098   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
15099
15100   update_global_location_list (UGLL_INSERT);
15101 }
15102
15103 /* Insert single step breakpoints according to the current state.  */
15104
15105 int
15106 insert_single_step_breakpoints (struct gdbarch *gdbarch)
15107 {
15108   struct regcache *regcache = get_current_regcache ();
15109   VEC (CORE_ADDR) * next_pcs;
15110
15111   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
15112
15113   if (next_pcs != NULL)
15114     {
15115       int i;
15116       CORE_ADDR pc;
15117       struct frame_info *frame = get_current_frame ();
15118       struct address_space *aspace = get_frame_address_space (frame);
15119
15120       for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
15121         insert_single_step_breakpoint (gdbarch, aspace, pc);
15122
15123       VEC_free (CORE_ADDR, next_pcs);
15124
15125       return 1;
15126     }
15127   else
15128     return 0;
15129 }
15130
15131 /* See breakpoint.h.  */
15132
15133 int
15134 breakpoint_has_location_inserted_here (struct breakpoint *bp,
15135                                        struct address_space *aspace,
15136                                        CORE_ADDR pc)
15137 {
15138   struct bp_location *loc;
15139
15140   for (loc = bp->loc; loc != NULL; loc = loc->next)
15141     if (loc->inserted
15142         && breakpoint_location_address_match (loc, aspace, pc))
15143       return 1;
15144
15145   return 0;
15146 }
15147
15148 /* Check whether a software single-step breakpoint is inserted at
15149    PC.  */
15150
15151 int
15152 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15153                                         CORE_ADDR pc)
15154 {
15155   struct breakpoint *bpt;
15156
15157   ALL_BREAKPOINTS (bpt)
15158     {
15159       if (bpt->type == bp_single_step
15160           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
15161         return 1;
15162     }
15163   return 0;
15164 }
15165
15166 /* Tracepoint-specific operations.  */
15167
15168 /* Set tracepoint count to NUM.  */
15169 static void
15170 set_tracepoint_count (int num)
15171 {
15172   tracepoint_count = num;
15173   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15174 }
15175
15176 static void
15177 trace_command (char *arg, int from_tty)
15178 {
15179   struct breakpoint_ops *ops;
15180
15181   event_location_up location = string_to_event_location (&arg,
15182                                                          current_language);
15183   if (location != NULL
15184       && event_location_type (location.get ()) == PROBE_LOCATION)
15185     ops = &tracepoint_probe_breakpoint_ops;
15186   else
15187     ops = &tracepoint_breakpoint_ops;
15188
15189   create_breakpoint (get_current_arch (),
15190                      location.get (),
15191                      NULL, 0, arg, 1 /* parse arg */,
15192                      0 /* tempflag */,
15193                      bp_tracepoint /* type_wanted */,
15194                      0 /* Ignore count */,
15195                      pending_break_support,
15196                      ops,
15197                      from_tty,
15198                      1 /* enabled */,
15199                      0 /* internal */, 0);
15200 }
15201
15202 static void
15203 ftrace_command (char *arg, int from_tty)
15204 {
15205   event_location_up location = string_to_event_location (&arg,
15206                                                          current_language);
15207   create_breakpoint (get_current_arch (),
15208                      location.get (),
15209                      NULL, 0, arg, 1 /* parse arg */,
15210                      0 /* tempflag */,
15211                      bp_fast_tracepoint /* type_wanted */,
15212                      0 /* Ignore count */,
15213                      pending_break_support,
15214                      &tracepoint_breakpoint_ops,
15215                      from_tty,
15216                      1 /* enabled */,
15217                      0 /* internal */, 0);
15218 }
15219
15220 /* strace command implementation.  Creates a static tracepoint.  */
15221
15222 static void
15223 strace_command (char *arg, int from_tty)
15224 {
15225   struct breakpoint_ops *ops;
15226   event_location_up location;
15227   struct cleanup *back_to;
15228
15229   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15230      or with a normal static tracepoint.  */
15231   if (arg && startswith (arg, "-m") && isspace (arg[2]))
15232     {
15233       ops = &strace_marker_breakpoint_ops;
15234       location = new_linespec_location (&arg);
15235     }
15236   else
15237     {
15238       ops = &tracepoint_breakpoint_ops;
15239       location = string_to_event_location (&arg, current_language);
15240     }
15241
15242   create_breakpoint (get_current_arch (),
15243                      location.get (),
15244                      NULL, 0, arg, 1 /* parse arg */,
15245                      0 /* tempflag */,
15246                      bp_static_tracepoint /* type_wanted */,
15247                      0 /* Ignore count */,
15248                      pending_break_support,
15249                      ops,
15250                      from_tty,
15251                      1 /* enabled */,
15252                      0 /* internal */, 0);
15253 }
15254
15255 /* Set up a fake reader function that gets command lines from a linked
15256    list that was acquired during tracepoint uploading.  */
15257
15258 static struct uploaded_tp *this_utp;
15259 static int next_cmd;
15260
15261 static char *
15262 read_uploaded_action (void)
15263 {
15264   char *rslt;
15265
15266   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15267
15268   next_cmd++;
15269
15270   return rslt;
15271 }
15272
15273 /* Given information about a tracepoint as recorded on a target (which
15274    can be either a live system or a trace file), attempt to create an
15275    equivalent GDB tracepoint.  This is not a reliable process, since
15276    the target does not necessarily have all the information used when
15277    the tracepoint was originally defined.  */
15278   
15279 struct tracepoint *
15280 create_tracepoint_from_upload (struct uploaded_tp *utp)
15281 {
15282   char *addr_str, small_buf[100];
15283   struct tracepoint *tp;
15284
15285   if (utp->at_string)
15286     addr_str = utp->at_string;
15287   else
15288     {
15289       /* In the absence of a source location, fall back to raw
15290          address.  Since there is no way to confirm that the address
15291          means the same thing as when the trace was started, warn the
15292          user.  */
15293       warning (_("Uploaded tracepoint %d has no "
15294                  "source location, using raw address"),
15295                utp->number);
15296       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15297       addr_str = small_buf;
15298     }
15299
15300   /* There's not much we can do with a sequence of bytecodes.  */
15301   if (utp->cond && !utp->cond_string)
15302     warning (_("Uploaded tracepoint %d condition "
15303                "has no source form, ignoring it"),
15304              utp->number);
15305
15306   event_location_up location = string_to_event_location (&addr_str,
15307                                                          current_language);
15308   if (!create_breakpoint (get_current_arch (),
15309                           location.get (),
15310                           utp->cond_string, -1, addr_str,
15311                           0 /* parse cond/thread */,
15312                           0 /* tempflag */,
15313                           utp->type /* type_wanted */,
15314                           0 /* Ignore count */,
15315                           pending_break_support,
15316                           &tracepoint_breakpoint_ops,
15317                           0 /* from_tty */,
15318                           utp->enabled /* enabled */,
15319                           0 /* internal */,
15320                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15321     return NULL;
15322
15323   /* Get the tracepoint we just created.  */
15324   tp = get_tracepoint (tracepoint_count);
15325   gdb_assert (tp != NULL);
15326
15327   if (utp->pass > 0)
15328     {
15329       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15330                  tp->base.number);
15331
15332       trace_pass_command (small_buf, 0);
15333     }
15334
15335   /* If we have uploaded versions of the original commands, set up a
15336      special-purpose "reader" function and call the usual command line
15337      reader, then pass the result to the breakpoint command-setting
15338      function.  */
15339   if (!VEC_empty (char_ptr, utp->cmd_strings))
15340     {
15341       command_line_up cmd_list;
15342
15343       this_utp = utp;
15344       next_cmd = 0;
15345
15346       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15347
15348       breakpoint_set_commands (&tp->base, std::move (cmd_list));
15349     }
15350   else if (!VEC_empty (char_ptr, utp->actions)
15351            || !VEC_empty (char_ptr, utp->step_actions))
15352     warning (_("Uploaded tracepoint %d actions "
15353                "have no source form, ignoring them"),
15354              utp->number);
15355
15356   /* Copy any status information that might be available.  */
15357   tp->base.hit_count = utp->hit_count;
15358   tp->traceframe_usage = utp->traceframe_usage;
15359
15360   return tp;
15361 }
15362   
15363 /* Print information on tracepoint number TPNUM_EXP, or all if
15364    omitted.  */
15365
15366 static void
15367 tracepoints_info (char *args, int from_tty)
15368 {
15369   struct ui_out *uiout = current_uiout;
15370   int num_printed;
15371
15372   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15373
15374   if (num_printed == 0)
15375     {
15376       if (args == NULL || *args == '\0')
15377         uiout->message ("No tracepoints.\n");
15378       else
15379         uiout->message ("No tracepoint matching '%s'.\n", args);
15380     }
15381
15382   default_collect_info ();
15383 }
15384
15385 /* The 'enable trace' command enables tracepoints.
15386    Not supported by all targets.  */
15387 static void
15388 enable_trace_command (char *args, int from_tty)
15389 {
15390   enable_command (args, from_tty);
15391 }
15392
15393 /* The 'disable trace' command disables tracepoints.
15394    Not supported by all targets.  */
15395 static void
15396 disable_trace_command (char *args, int from_tty)
15397 {
15398   disable_command (args, from_tty);
15399 }
15400
15401 /* Remove a tracepoint (or all if no argument).  */
15402 static void
15403 delete_trace_command (char *arg, int from_tty)
15404 {
15405   struct breakpoint *b, *b_tmp;
15406
15407   dont_repeat ();
15408
15409   if (arg == 0)
15410     {
15411       int breaks_to_delete = 0;
15412
15413       /* Delete all breakpoints if no argument.
15414          Do not delete internal or call-dummy breakpoints, these
15415          have to be deleted with an explicit breakpoint number 
15416          argument.  */
15417       ALL_TRACEPOINTS (b)
15418         if (is_tracepoint (b) && user_breakpoint_p (b))
15419           {
15420             breaks_to_delete = 1;
15421             break;
15422           }
15423
15424       /* Ask user only if there are some breakpoints to delete.  */
15425       if (!from_tty
15426           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15427         {
15428           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15429             if (is_tracepoint (b) && user_breakpoint_p (b))
15430               delete_breakpoint (b);
15431         }
15432     }
15433   else
15434     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15435 }
15436
15437 /* Helper function for trace_pass_command.  */
15438
15439 static void
15440 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15441 {
15442   tp->pass_count = count;
15443   observer_notify_breakpoint_modified (&tp->base);
15444   if (from_tty)
15445     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15446                      tp->base.number, count);
15447 }
15448
15449 /* Set passcount for tracepoint.
15450
15451    First command argument is passcount, second is tracepoint number.
15452    If tracepoint number omitted, apply to most recently defined.
15453    Also accepts special argument "all".  */
15454
15455 static void
15456 trace_pass_command (char *args, int from_tty)
15457 {
15458   struct tracepoint *t1;
15459   unsigned int count;
15460
15461   if (args == 0 || *args == 0)
15462     error (_("passcount command requires an "
15463              "argument (count + optional TP num)"));
15464
15465   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15466
15467   args = skip_spaces (args);
15468   if (*args && strncasecmp (args, "all", 3) == 0)
15469     {
15470       struct breakpoint *b;
15471
15472       args += 3;                        /* Skip special argument "all".  */
15473       if (*args)
15474         error (_("Junk at end of arguments."));
15475
15476       ALL_TRACEPOINTS (b)
15477       {
15478         t1 = (struct tracepoint *) b;
15479         trace_pass_set_count (t1, count, from_tty);
15480       }
15481     }
15482   else if (*args == '\0')
15483     {
15484       t1 = get_tracepoint_by_number (&args, NULL);
15485       if (t1)
15486         trace_pass_set_count (t1, count, from_tty);
15487     }
15488   else
15489     {
15490       number_or_range_parser parser (args);
15491       while (!parser.finished ())
15492         {
15493           t1 = get_tracepoint_by_number (&args, &parser);
15494           if (t1)
15495             trace_pass_set_count (t1, count, from_tty);
15496         }
15497     }
15498 }
15499
15500 struct tracepoint *
15501 get_tracepoint (int num)
15502 {
15503   struct breakpoint *t;
15504
15505   ALL_TRACEPOINTS (t)
15506     if (t->number == num)
15507       return (struct tracepoint *) t;
15508
15509   return NULL;
15510 }
15511
15512 /* Find the tracepoint with the given target-side number (which may be
15513    different from the tracepoint number after disconnecting and
15514    reconnecting).  */
15515
15516 struct tracepoint *
15517 get_tracepoint_by_number_on_target (int num)
15518 {
15519   struct breakpoint *b;
15520
15521   ALL_TRACEPOINTS (b)
15522     {
15523       struct tracepoint *t = (struct tracepoint *) b;
15524
15525       if (t->number_on_target == num)
15526         return t;
15527     }
15528
15529   return NULL;
15530 }
15531
15532 /* Utility: parse a tracepoint number and look it up in the list.
15533    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15534    If the argument is missing, the most recent tracepoint
15535    (tracepoint_count) is returned.  */
15536
15537 struct tracepoint *
15538 get_tracepoint_by_number (char **arg,
15539                           number_or_range_parser *parser)
15540 {
15541   struct breakpoint *t;
15542   int tpnum;
15543   char *instring = arg == NULL ? NULL : *arg;
15544
15545   if (parser != NULL)
15546     {
15547       gdb_assert (!parser->finished ());
15548       tpnum = parser->get_number ();
15549     }
15550   else if (arg == NULL || *arg == NULL || ! **arg)
15551     tpnum = tracepoint_count;
15552   else
15553     tpnum = get_number (arg);
15554
15555   if (tpnum <= 0)
15556     {
15557       if (instring && *instring)
15558         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15559                          instring);
15560       else
15561         printf_filtered (_("No previous tracepoint\n"));
15562       return NULL;
15563     }
15564
15565   ALL_TRACEPOINTS (t)
15566     if (t->number == tpnum)
15567     {
15568       return (struct tracepoint *) t;
15569     }
15570
15571   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15572   return NULL;
15573 }
15574
15575 void
15576 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15577 {
15578   if (b->thread != -1)
15579     fprintf_unfiltered (fp, " thread %d", b->thread);
15580
15581   if (b->task != 0)
15582     fprintf_unfiltered (fp, " task %d", b->task);
15583
15584   fprintf_unfiltered (fp, "\n");
15585 }
15586
15587 /* Save information on user settable breakpoints (watchpoints, etc) to
15588    a new script file named FILENAME.  If FILTER is non-NULL, call it
15589    on each breakpoint and only include the ones for which it returns
15590    non-zero.  */
15591
15592 static void
15593 save_breakpoints (char *filename, int from_tty,
15594                   int (*filter) (const struct breakpoint *))
15595 {
15596   struct breakpoint *tp;
15597   int any = 0;
15598   struct cleanup *cleanup;
15599   int extra_trace_bits = 0;
15600
15601   if (filename == 0 || *filename == 0)
15602     error (_("Argument required (file name in which to save)"));
15603
15604   /* See if we have anything to save.  */
15605   ALL_BREAKPOINTS (tp)
15606   {
15607     /* Skip internal and momentary breakpoints.  */
15608     if (!user_breakpoint_p (tp))
15609       continue;
15610
15611     /* If we have a filter, only save the breakpoints it accepts.  */
15612     if (filter && !filter (tp))
15613       continue;
15614
15615     any = 1;
15616
15617     if (is_tracepoint (tp))
15618       {
15619         extra_trace_bits = 1;
15620
15621         /* We can stop searching.  */
15622         break;
15623       }
15624   }
15625
15626   if (!any)
15627     {
15628       warning (_("Nothing to save."));
15629       return;
15630     }
15631
15632   filename = tilde_expand (filename);
15633   cleanup = make_cleanup (xfree, filename);
15634
15635   stdio_file fp;
15636
15637   if (!fp.open (filename, "w"))
15638     error (_("Unable to open file '%s' for saving (%s)"),
15639            filename, safe_strerror (errno));
15640
15641   if (extra_trace_bits)
15642     save_trace_state_variables (&fp);
15643
15644   ALL_BREAKPOINTS (tp)
15645   {
15646     /* Skip internal and momentary breakpoints.  */
15647     if (!user_breakpoint_p (tp))
15648       continue;
15649
15650     /* If we have a filter, only save the breakpoints it accepts.  */
15651     if (filter && !filter (tp))
15652       continue;
15653
15654     tp->ops->print_recreate (tp, &fp);
15655
15656     /* Note, we can't rely on tp->number for anything, as we can't
15657        assume the recreated breakpoint numbers will match.  Use $bpnum
15658        instead.  */
15659
15660     if (tp->cond_string)
15661       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
15662
15663     if (tp->ignore_count)
15664       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
15665
15666     if (tp->type != bp_dprintf && tp->commands)
15667       {
15668         fp.puts ("  commands\n");
15669         
15670         current_uiout->redirect (&fp);
15671         TRY
15672           {
15673             print_command_lines (current_uiout, tp->commands->commands, 2);
15674           }
15675         CATCH (ex, RETURN_MASK_ALL)
15676           {
15677           current_uiout->redirect (NULL);
15678             throw_exception (ex);
15679           }
15680         END_CATCH
15681
15682         current_uiout->redirect (NULL);
15683         fp.puts ("  end\n");
15684       }
15685
15686     if (tp->enable_state == bp_disabled)
15687       fp.puts ("disable $bpnum\n");
15688
15689     /* If this is a multi-location breakpoint, check if the locations
15690        should be individually disabled.  Watchpoint locations are
15691        special, and not user visible.  */
15692     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15693       {
15694         struct bp_location *loc;
15695         int n = 1;
15696
15697         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15698           if (!loc->enabled)
15699             fp.printf ("disable $bpnum.%d\n", n);
15700       }
15701   }
15702
15703   if (extra_trace_bits && *default_collect)
15704     fp.printf ("set default-collect %s\n", default_collect);
15705
15706   if (from_tty)
15707     printf_filtered (_("Saved to file '%s'.\n"), filename);
15708   do_cleanups (cleanup);
15709 }
15710
15711 /* The `save breakpoints' command.  */
15712
15713 static void
15714 save_breakpoints_command (char *args, int from_tty)
15715 {
15716   save_breakpoints (args, from_tty, NULL);
15717 }
15718
15719 /* The `save tracepoints' command.  */
15720
15721 static void
15722 save_tracepoints_command (char *args, int from_tty)
15723 {
15724   save_breakpoints (args, from_tty, is_tracepoint);
15725 }
15726
15727 /* Create a vector of all tracepoints.  */
15728
15729 VEC(breakpoint_p) *
15730 all_tracepoints (void)
15731 {
15732   VEC(breakpoint_p) *tp_vec = 0;
15733   struct breakpoint *tp;
15734
15735   ALL_TRACEPOINTS (tp)
15736   {
15737     VEC_safe_push (breakpoint_p, tp_vec, tp);
15738   }
15739
15740   return tp_vec;
15741 }
15742
15743 \f
15744 /* This help string is used to consolidate all the help string for specifying
15745    locations used by several commands.  */
15746
15747 #define LOCATION_HELP_STRING \
15748 "Linespecs are colon-separated lists of location parameters, such as\n\
15749 source filename, function name, label name, and line number.\n\
15750 Example: To specify the start of a label named \"the_top\" in the\n\
15751 function \"fact\" in the file \"factorial.c\", use\n\
15752 \"factorial.c:fact:the_top\".\n\
15753 \n\
15754 Address locations begin with \"*\" and specify an exact address in the\n\
15755 program.  Example: To specify the fourth byte past the start function\n\
15756 \"main\", use \"*main + 4\".\n\
15757 \n\
15758 Explicit locations are similar to linespecs but use an option/argument\n\
15759 syntax to specify location parameters.\n\
15760 Example: To specify the start of the label named \"the_top\" in the\n\
15761 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15762 -function fact -label the_top\".\n"
15763
15764 /* This help string is used for the break, hbreak, tbreak and thbreak
15765    commands.  It is defined as a macro to prevent duplication.
15766    COMMAND should be a string constant containing the name of the
15767    command.  */
15768
15769 #define BREAK_ARGS_HELP(command) \
15770 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15771 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15772 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15773 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15774 `-probe-dtrace' (for a DTrace probe).\n\
15775 LOCATION may be a linespec, address, or explicit location as described\n\
15776 below.\n\
15777 \n\
15778 With no LOCATION, uses current execution address of the selected\n\
15779 stack frame.  This is useful for breaking on return to a stack frame.\n\
15780 \n\
15781 THREADNUM is the number from \"info threads\".\n\
15782 CONDITION is a boolean expression.\n\
15783 \n" LOCATION_HELP_STRING "\n\
15784 Multiple breakpoints at one place are permitted, and useful if their\n\
15785 conditions are different.\n\
15786 \n\
15787 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15788
15789 /* List of subcommands for "catch".  */
15790 static struct cmd_list_element *catch_cmdlist;
15791
15792 /* List of subcommands for "tcatch".  */
15793 static struct cmd_list_element *tcatch_cmdlist;
15794
15795 void
15796 add_catch_command (const char *name, const char *docstring,
15797                    cmd_sfunc_ftype *sfunc,
15798                    completer_ftype *completer,
15799                    void *user_data_catch,
15800                    void *user_data_tcatch)
15801 {
15802   struct cmd_list_element *command;
15803
15804   command = add_cmd (name, class_breakpoint, NULL, docstring,
15805                      &catch_cmdlist);
15806   set_cmd_sfunc (command, sfunc);
15807   set_cmd_context (command, user_data_catch);
15808   set_cmd_completer (command, completer);
15809
15810   command = add_cmd (name, class_breakpoint, NULL, docstring,
15811                      &tcatch_cmdlist);
15812   set_cmd_sfunc (command, sfunc);
15813   set_cmd_context (command, user_data_tcatch);
15814   set_cmd_completer (command, completer);
15815 }
15816
15817 static void
15818 save_command (char *arg, int from_tty)
15819 {
15820   printf_unfiltered (_("\"save\" must be followed by "
15821                        "the name of a save subcommand.\n"));
15822   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15823 }
15824
15825 struct breakpoint *
15826 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15827                           void *data)
15828 {
15829   struct breakpoint *b, *b_tmp;
15830
15831   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15832     {
15833       if ((*callback) (b, data))
15834         return b;
15835     }
15836
15837   return NULL;
15838 }
15839
15840 /* Zero if any of the breakpoint's locations could be a location where
15841    functions have been inlined, nonzero otherwise.  */
15842
15843 static int
15844 is_non_inline_function (struct breakpoint *b)
15845 {
15846   /* The shared library event breakpoint is set on the address of a
15847      non-inline function.  */
15848   if (b->type == bp_shlib_event)
15849     return 1;
15850
15851   return 0;
15852 }
15853
15854 /* Nonzero if the specified PC cannot be a location where functions
15855    have been inlined.  */
15856
15857 int
15858 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15859                            const struct target_waitstatus *ws)
15860 {
15861   struct breakpoint *b;
15862   struct bp_location *bl;
15863
15864   ALL_BREAKPOINTS (b)
15865     {
15866       if (!is_non_inline_function (b))
15867         continue;
15868
15869       for (bl = b->loc; bl != NULL; bl = bl->next)
15870         {
15871           if (!bl->shlib_disabled
15872               && bpstat_check_location (bl, aspace, pc, ws))
15873             return 1;
15874         }
15875     }
15876
15877   return 0;
15878 }
15879
15880 /* Remove any references to OBJFILE which is going to be freed.  */
15881
15882 void
15883 breakpoint_free_objfile (struct objfile *objfile)
15884 {
15885   struct bp_location **locp, *loc;
15886
15887   ALL_BP_LOCATIONS (loc, locp)
15888     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15889       loc->symtab = NULL;
15890 }
15891
15892 void
15893 initialize_breakpoint_ops (void)
15894 {
15895   static int initialized = 0;
15896
15897   struct breakpoint_ops *ops;
15898
15899   if (initialized)
15900     return;
15901   initialized = 1;
15902
15903   /* The breakpoint_ops structure to be inherit by all kinds of
15904      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15905      internal and momentary breakpoints, etc.).  */
15906   ops = &bkpt_base_breakpoint_ops;
15907   *ops = base_breakpoint_ops;
15908   ops->re_set = bkpt_re_set;
15909   ops->insert_location = bkpt_insert_location;
15910   ops->remove_location = bkpt_remove_location;
15911   ops->breakpoint_hit = bkpt_breakpoint_hit;
15912   ops->create_sals_from_location = bkpt_create_sals_from_location;
15913   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15914   ops->decode_location = bkpt_decode_location;
15915
15916   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15917   ops = &bkpt_breakpoint_ops;
15918   *ops = bkpt_base_breakpoint_ops;
15919   ops->re_set = bkpt_re_set;
15920   ops->resources_needed = bkpt_resources_needed;
15921   ops->print_it = bkpt_print_it;
15922   ops->print_mention = bkpt_print_mention;
15923   ops->print_recreate = bkpt_print_recreate;
15924
15925   /* Ranged breakpoints.  */
15926   ops = &ranged_breakpoint_ops;
15927   *ops = bkpt_breakpoint_ops;
15928   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15929   ops->resources_needed = resources_needed_ranged_breakpoint;
15930   ops->print_it = print_it_ranged_breakpoint;
15931   ops->print_one = print_one_ranged_breakpoint;
15932   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15933   ops->print_mention = print_mention_ranged_breakpoint;
15934   ops->print_recreate = print_recreate_ranged_breakpoint;
15935
15936   /* Internal breakpoints.  */
15937   ops = &internal_breakpoint_ops;
15938   *ops = bkpt_base_breakpoint_ops;
15939   ops->re_set = internal_bkpt_re_set;
15940   ops->check_status = internal_bkpt_check_status;
15941   ops->print_it = internal_bkpt_print_it;
15942   ops->print_mention = internal_bkpt_print_mention;
15943
15944   /* Momentary breakpoints.  */
15945   ops = &momentary_breakpoint_ops;
15946   *ops = bkpt_base_breakpoint_ops;
15947   ops->re_set = momentary_bkpt_re_set;
15948   ops->check_status = momentary_bkpt_check_status;
15949   ops->print_it = momentary_bkpt_print_it;
15950   ops->print_mention = momentary_bkpt_print_mention;
15951
15952   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15953   ops = &longjmp_breakpoint_ops;
15954   *ops = momentary_breakpoint_ops;
15955   ops->dtor = longjmp_bkpt_dtor;
15956
15957   /* Probe breakpoints.  */
15958   ops = &bkpt_probe_breakpoint_ops;
15959   *ops = bkpt_breakpoint_ops;
15960   ops->insert_location = bkpt_probe_insert_location;
15961   ops->remove_location = bkpt_probe_remove_location;
15962   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15963   ops->decode_location = bkpt_probe_decode_location;
15964
15965   /* Watchpoints.  */
15966   ops = &watchpoint_breakpoint_ops;
15967   *ops = base_breakpoint_ops;
15968   ops->dtor = dtor_watchpoint;
15969   ops->re_set = re_set_watchpoint;
15970   ops->insert_location = insert_watchpoint;
15971   ops->remove_location = remove_watchpoint;
15972   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15973   ops->check_status = check_status_watchpoint;
15974   ops->resources_needed = resources_needed_watchpoint;
15975   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15976   ops->print_it = print_it_watchpoint;
15977   ops->print_mention = print_mention_watchpoint;
15978   ops->print_recreate = print_recreate_watchpoint;
15979   ops->explains_signal = explains_signal_watchpoint;
15980
15981   /* Masked watchpoints.  */
15982   ops = &masked_watchpoint_breakpoint_ops;
15983   *ops = watchpoint_breakpoint_ops;
15984   ops->insert_location = insert_masked_watchpoint;
15985   ops->remove_location = remove_masked_watchpoint;
15986   ops->resources_needed = resources_needed_masked_watchpoint;
15987   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15988   ops->print_it = print_it_masked_watchpoint;
15989   ops->print_one_detail = print_one_detail_masked_watchpoint;
15990   ops->print_mention = print_mention_masked_watchpoint;
15991   ops->print_recreate = print_recreate_masked_watchpoint;
15992
15993   /* Tracepoints.  */
15994   ops = &tracepoint_breakpoint_ops;
15995   *ops = base_breakpoint_ops;
15996   ops->re_set = tracepoint_re_set;
15997   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15998   ops->print_one_detail = tracepoint_print_one_detail;
15999   ops->print_mention = tracepoint_print_mention;
16000   ops->print_recreate = tracepoint_print_recreate;
16001   ops->create_sals_from_location = tracepoint_create_sals_from_location;
16002   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
16003   ops->decode_location = tracepoint_decode_location;
16004
16005   /* Probe tracepoints.  */
16006   ops = &tracepoint_probe_breakpoint_ops;
16007   *ops = tracepoint_breakpoint_ops;
16008   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
16009   ops->decode_location = tracepoint_probe_decode_location;
16010
16011   /* Static tracepoints with marker (`-m').  */
16012   ops = &strace_marker_breakpoint_ops;
16013   *ops = tracepoint_breakpoint_ops;
16014   ops->create_sals_from_location = strace_marker_create_sals_from_location;
16015   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
16016   ops->decode_location = strace_marker_decode_location;
16017
16018   /* Fork catchpoints.  */
16019   ops = &catch_fork_breakpoint_ops;
16020   *ops = base_breakpoint_ops;
16021   ops->insert_location = insert_catch_fork;
16022   ops->remove_location = remove_catch_fork;
16023   ops->breakpoint_hit = breakpoint_hit_catch_fork;
16024   ops->print_it = print_it_catch_fork;
16025   ops->print_one = print_one_catch_fork;
16026   ops->print_mention = print_mention_catch_fork;
16027   ops->print_recreate = print_recreate_catch_fork;
16028
16029   /* Vfork catchpoints.  */
16030   ops = &catch_vfork_breakpoint_ops;
16031   *ops = base_breakpoint_ops;
16032   ops->insert_location = insert_catch_vfork;
16033   ops->remove_location = remove_catch_vfork;
16034   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16035   ops->print_it = print_it_catch_vfork;
16036   ops->print_one = print_one_catch_vfork;
16037   ops->print_mention = print_mention_catch_vfork;
16038   ops->print_recreate = print_recreate_catch_vfork;
16039
16040   /* Exec catchpoints.  */
16041   ops = &catch_exec_breakpoint_ops;
16042   *ops = base_breakpoint_ops;
16043   ops->dtor = dtor_catch_exec;
16044   ops->insert_location = insert_catch_exec;
16045   ops->remove_location = remove_catch_exec;
16046   ops->breakpoint_hit = breakpoint_hit_catch_exec;
16047   ops->print_it = print_it_catch_exec;
16048   ops->print_one = print_one_catch_exec;
16049   ops->print_mention = print_mention_catch_exec;
16050   ops->print_recreate = print_recreate_catch_exec;
16051
16052   /* Solib-related catchpoints.  */
16053   ops = &catch_solib_breakpoint_ops;
16054   *ops = base_breakpoint_ops;
16055   ops->dtor = dtor_catch_solib;
16056   ops->insert_location = insert_catch_solib;
16057   ops->remove_location = remove_catch_solib;
16058   ops->breakpoint_hit = breakpoint_hit_catch_solib;
16059   ops->check_status = check_status_catch_solib;
16060   ops->print_it = print_it_catch_solib;
16061   ops->print_one = print_one_catch_solib;
16062   ops->print_mention = print_mention_catch_solib;
16063   ops->print_recreate = print_recreate_catch_solib;
16064
16065   ops = &dprintf_breakpoint_ops;
16066   *ops = bkpt_base_breakpoint_ops;
16067   ops->re_set = dprintf_re_set;
16068   ops->resources_needed = bkpt_resources_needed;
16069   ops->print_it = bkpt_print_it;
16070   ops->print_mention = bkpt_print_mention;
16071   ops->print_recreate = dprintf_print_recreate;
16072   ops->after_condition_true = dprintf_after_condition_true;
16073   ops->breakpoint_hit = dprintf_breakpoint_hit;
16074 }
16075
16076 /* Chain containing all defined "enable breakpoint" subcommands.  */
16077
16078 static struct cmd_list_element *enablebreaklist = NULL;
16079
16080 void
16081 _initialize_breakpoint (void)
16082 {
16083   struct cmd_list_element *c;
16084
16085   initialize_breakpoint_ops ();
16086
16087   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16088   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16089   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16090
16091   breakpoint_objfile_key
16092     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16093
16094   breakpoint_chain = 0;
16095   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16096      before a breakpoint is set.  */
16097   breakpoint_count = 0;
16098
16099   tracepoint_count = 0;
16100
16101   add_com ("ignore", class_breakpoint, ignore_command, _("\
16102 Set ignore-count of breakpoint number N to COUNT.\n\
16103 Usage is `ignore N COUNT'."));
16104
16105   add_com ("commands", class_breakpoint, commands_command, _("\
16106 Set commands to be executed when the given breakpoints are hit.\n\
16107 Give a space-separated breakpoint list as argument after \"commands\".\n\
16108 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
16109 (e.g. `5-7').\n\
16110 With no argument, the targeted breakpoint is the last one set.\n\
16111 The commands themselves follow starting on the next line.\n\
16112 Type a line containing \"end\" to indicate the end of them.\n\
16113 Give \"silent\" as the first line to make the breakpoint silent;\n\
16114 then no output is printed when it is hit, except what the commands print."));
16115
16116   c = add_com ("condition", class_breakpoint, condition_command, _("\
16117 Specify breakpoint number N to break only if COND is true.\n\
16118 Usage is `condition N COND', where N is an integer and COND is an\n\
16119 expression to be evaluated whenever breakpoint N is reached."));
16120   set_cmd_completer (c, condition_completer);
16121
16122   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16123 Set a temporary breakpoint.\n\
16124 Like \"break\" except the breakpoint is only temporary,\n\
16125 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16126 by using \"enable delete\" on the breakpoint number.\n\
16127 \n"
16128 BREAK_ARGS_HELP ("tbreak")));
16129   set_cmd_completer (c, location_completer);
16130
16131   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16132 Set a hardware assisted breakpoint.\n\
16133 Like \"break\" except the breakpoint requires hardware support,\n\
16134 some target hardware may not have this support.\n\
16135 \n"
16136 BREAK_ARGS_HELP ("hbreak")));
16137   set_cmd_completer (c, location_completer);
16138
16139   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16140 Set a temporary hardware assisted breakpoint.\n\
16141 Like \"hbreak\" except the breakpoint is only temporary,\n\
16142 so it will be deleted when hit.\n\
16143 \n"
16144 BREAK_ARGS_HELP ("thbreak")));
16145   set_cmd_completer (c, location_completer);
16146
16147   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16148 Enable some breakpoints.\n\
16149 Give breakpoint numbers (separated by spaces) as arguments.\n\
16150 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16151 This is used to cancel the effect of the \"disable\" command.\n\
16152 With a subcommand you can enable temporarily."),
16153                   &enablelist, "enable ", 1, &cmdlist);
16154
16155   add_com_alias ("en", "enable", class_breakpoint, 1);
16156
16157   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16158 Enable some breakpoints.\n\
16159 Give breakpoint numbers (separated by spaces) as arguments.\n\
16160 This is used to cancel the effect of the \"disable\" command.\n\
16161 May be abbreviated to simply \"enable\".\n"),
16162                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16163
16164   add_cmd ("once", no_class, enable_once_command, _("\
16165 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16166 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16167            &enablebreaklist);
16168
16169   add_cmd ("delete", no_class, enable_delete_command, _("\
16170 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16171 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16172            &enablebreaklist);
16173
16174   add_cmd ("count", no_class, enable_count_command, _("\
16175 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16176 If a breakpoint is hit while enabled in this fashion,\n\
16177 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16178            &enablebreaklist);
16179
16180   add_cmd ("delete", no_class, enable_delete_command, _("\
16181 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16182 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16183            &enablelist);
16184
16185   add_cmd ("once", no_class, enable_once_command, _("\
16186 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16187 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16188            &enablelist);
16189
16190   add_cmd ("count", no_class, enable_count_command, _("\
16191 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16192 If a breakpoint is hit while enabled in this fashion,\n\
16193 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16194            &enablelist);
16195
16196   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16197 Disable some breakpoints.\n\
16198 Arguments are breakpoint numbers with spaces in between.\n\
16199 To disable all breakpoints, give no argument.\n\
16200 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16201                   &disablelist, "disable ", 1, &cmdlist);
16202   add_com_alias ("dis", "disable", class_breakpoint, 1);
16203   add_com_alias ("disa", "disable", class_breakpoint, 1);
16204
16205   add_cmd ("breakpoints", class_alias, disable_command, _("\
16206 Disable some breakpoints.\n\
16207 Arguments are breakpoint numbers with spaces in between.\n\
16208 To disable all breakpoints, give no argument.\n\
16209 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16210 This command may be abbreviated \"disable\"."),
16211            &disablelist);
16212
16213   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16214 Delete some breakpoints or auto-display expressions.\n\
16215 Arguments are breakpoint numbers with spaces in between.\n\
16216 To delete all breakpoints, give no argument.\n\
16217 \n\
16218 Also a prefix command for deletion of other GDB objects.\n\
16219 The \"unset\" command is also an alias for \"delete\"."),
16220                   &deletelist, "delete ", 1, &cmdlist);
16221   add_com_alias ("d", "delete", class_breakpoint, 1);
16222   add_com_alias ("del", "delete", class_breakpoint, 1);
16223
16224   add_cmd ("breakpoints", class_alias, delete_command, _("\
16225 Delete some breakpoints or auto-display expressions.\n\
16226 Arguments are breakpoint numbers with spaces in between.\n\
16227 To delete all breakpoints, give no argument.\n\
16228 This command may be abbreviated \"delete\"."),
16229            &deletelist);
16230
16231   add_com ("clear", class_breakpoint, clear_command, _("\
16232 Clear breakpoint at specified location.\n\
16233 Argument may be a linespec, explicit, or address location as described below.\n\
16234 \n\
16235 With no argument, clears all breakpoints in the line that the selected frame\n\
16236 is executing in.\n"
16237 "\n" LOCATION_HELP_STRING "\n\
16238 See also the \"delete\" command which clears breakpoints by number."));
16239   add_com_alias ("cl", "clear", class_breakpoint, 1);
16240
16241   c = add_com ("break", class_breakpoint, break_command, _("\
16242 Set breakpoint at specified location.\n"
16243 BREAK_ARGS_HELP ("break")));
16244   set_cmd_completer (c, location_completer);
16245
16246   add_com_alias ("b", "break", class_run, 1);
16247   add_com_alias ("br", "break", class_run, 1);
16248   add_com_alias ("bre", "break", class_run, 1);
16249   add_com_alias ("brea", "break", class_run, 1);
16250
16251   if (dbx_commands)
16252     {
16253       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16254 Break in function/address or break at a line in the current file."),
16255                              &stoplist, "stop ", 1, &cmdlist);
16256       add_cmd ("in", class_breakpoint, stopin_command,
16257                _("Break in function or address."), &stoplist);
16258       add_cmd ("at", class_breakpoint, stopat_command,
16259                _("Break at a line in the current file."), &stoplist);
16260       add_com ("status", class_info, breakpoints_info, _("\
16261 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16262 The \"Type\" column indicates one of:\n\
16263 \tbreakpoint     - normal breakpoint\n\
16264 \twatchpoint     - watchpoint\n\
16265 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16266 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16267 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16268 address and file/line number respectively.\n\
16269 \n\
16270 Convenience variable \"$_\" and default examine address for \"x\"\n\
16271 are set to the address of the last breakpoint listed unless the command\n\
16272 is prefixed with \"server \".\n\n\
16273 Convenience variable \"$bpnum\" contains the number of the last\n\
16274 breakpoint set."));
16275     }
16276
16277   add_info ("breakpoints", breakpoints_info, _("\
16278 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16279 The \"Type\" column indicates one of:\n\
16280 \tbreakpoint     - normal breakpoint\n\
16281 \twatchpoint     - watchpoint\n\
16282 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16283 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16284 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16285 address and file/line number respectively.\n\
16286 \n\
16287 Convenience variable \"$_\" and default examine address for \"x\"\n\
16288 are set to the address of the last breakpoint listed unless the command\n\
16289 is prefixed with \"server \".\n\n\
16290 Convenience variable \"$bpnum\" contains the number of the last\n\
16291 breakpoint set."));
16292
16293   add_info_alias ("b", "breakpoints", 1);
16294
16295   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16296 Status of all breakpoints, or breakpoint number NUMBER.\n\
16297 The \"Type\" column indicates one of:\n\
16298 \tbreakpoint     - normal breakpoint\n\
16299 \twatchpoint     - watchpoint\n\
16300 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16301 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16302 \tuntil          - internal breakpoint used by the \"until\" command\n\
16303 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16304 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16305 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16306 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16307 address and file/line number respectively.\n\
16308 \n\
16309 Convenience variable \"$_\" and default examine address for \"x\"\n\
16310 are set to the address of the last breakpoint listed unless the command\n\
16311 is prefixed with \"server \".\n\n\
16312 Convenience variable \"$bpnum\" contains the number of the last\n\
16313 breakpoint set."),
16314            &maintenanceinfolist);
16315
16316   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16317 Set catchpoints to catch events."),
16318                   &catch_cmdlist, "catch ",
16319                   0/*allow-unknown*/, &cmdlist);
16320
16321   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16322 Set temporary catchpoints to catch events."),
16323                   &tcatch_cmdlist, "tcatch ",
16324                   0/*allow-unknown*/, &cmdlist);
16325
16326   add_catch_command ("fork", _("Catch calls to fork."),
16327                      catch_fork_command_1,
16328                      NULL,
16329                      (void *) (uintptr_t) catch_fork_permanent,
16330                      (void *) (uintptr_t) catch_fork_temporary);
16331   add_catch_command ("vfork", _("Catch calls to vfork."),
16332                      catch_fork_command_1,
16333                      NULL,
16334                      (void *) (uintptr_t) catch_vfork_permanent,
16335                      (void *) (uintptr_t) catch_vfork_temporary);
16336   add_catch_command ("exec", _("Catch calls to exec."),
16337                      catch_exec_command_1,
16338                      NULL,
16339                      CATCH_PERMANENT,
16340                      CATCH_TEMPORARY);
16341   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16342 Usage: catch load [REGEX]\n\
16343 If REGEX is given, only stop for libraries matching the regular expression."),
16344                      catch_load_command_1,
16345                      NULL,
16346                      CATCH_PERMANENT,
16347                      CATCH_TEMPORARY);
16348   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16349 Usage: catch unload [REGEX]\n\
16350 If REGEX is given, only stop for libraries matching the regular expression."),
16351                      catch_unload_command_1,
16352                      NULL,
16353                      CATCH_PERMANENT,
16354                      CATCH_TEMPORARY);
16355
16356   c = add_com ("watch", class_breakpoint, watch_command, _("\
16357 Set a watchpoint for an expression.\n\
16358 Usage: watch [-l|-location] EXPRESSION\n\
16359 A watchpoint stops execution of your program whenever the value of\n\
16360 an expression changes.\n\
16361 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16362 the memory to which it refers."));
16363   set_cmd_completer (c, expression_completer);
16364
16365   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16366 Set a read watchpoint for an expression.\n\
16367 Usage: rwatch [-l|-location] EXPRESSION\n\
16368 A watchpoint stops execution of your program whenever the value of\n\
16369 an expression is read.\n\
16370 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16371 the memory to which it refers."));
16372   set_cmd_completer (c, expression_completer);
16373
16374   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16375 Set a watchpoint for an expression.\n\
16376 Usage: awatch [-l|-location] EXPRESSION\n\
16377 A watchpoint stops execution of your program whenever the value of\n\
16378 an expression is either read or written.\n\
16379 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16380 the memory to which it refers."));
16381   set_cmd_completer (c, expression_completer);
16382
16383   add_info ("watchpoints", watchpoints_info, _("\
16384 Status of specified watchpoints (all watchpoints if no argument)."));
16385
16386   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16387      respond to changes - contrary to the description.  */
16388   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16389                             &can_use_hw_watchpoints, _("\
16390 Set debugger's willingness to use watchpoint hardware."), _("\
16391 Show debugger's willingness to use watchpoint hardware."), _("\
16392 If zero, gdb will not use hardware for new watchpoints, even if\n\
16393 such is available.  (However, any hardware watchpoints that were\n\
16394 created before setting this to nonzero, will continue to use watchpoint\n\
16395 hardware.)"),
16396                             NULL,
16397                             show_can_use_hw_watchpoints,
16398                             &setlist, &showlist);
16399
16400   can_use_hw_watchpoints = 1;
16401
16402   /* Tracepoint manipulation commands.  */
16403
16404   c = add_com ("trace", class_breakpoint, trace_command, _("\
16405 Set a tracepoint at specified location.\n\
16406 \n"
16407 BREAK_ARGS_HELP ("trace") "\n\
16408 Do \"help tracepoints\" for info on other tracepoint commands."));
16409   set_cmd_completer (c, location_completer);
16410
16411   add_com_alias ("tp", "trace", class_alias, 0);
16412   add_com_alias ("tr", "trace", class_alias, 1);
16413   add_com_alias ("tra", "trace", class_alias, 1);
16414   add_com_alias ("trac", "trace", class_alias, 1);
16415
16416   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16417 Set a fast tracepoint at specified location.\n\
16418 \n"
16419 BREAK_ARGS_HELP ("ftrace") "\n\
16420 Do \"help tracepoints\" for info on other tracepoint commands."));
16421   set_cmd_completer (c, location_completer);
16422
16423   c = add_com ("strace", class_breakpoint, strace_command, _("\
16424 Set a static tracepoint at location or marker.\n\
16425 \n\
16426 strace [LOCATION] [if CONDITION]\n\
16427 LOCATION may be a linespec, explicit, or address location (described below) \n\
16428 or -m MARKER_ID.\n\n\
16429 If a marker id is specified, probe the marker with that name.  With\n\
16430 no LOCATION, uses current execution address of the selected stack frame.\n\
16431 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16432 This collects arbitrary user data passed in the probe point call to the\n\
16433 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16434 by printing the $_sdata variable like any other convenience variable.\n\
16435 \n\
16436 CONDITION is a boolean expression.\n\
16437 \n" LOCATION_HELP_STRING "\n\
16438 Multiple tracepoints at one place are permitted, and useful if their\n\
16439 conditions are different.\n\
16440 \n\
16441 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16442 Do \"help tracepoints\" for info on other tracepoint commands."));
16443   set_cmd_completer (c, location_completer);
16444
16445   add_info ("tracepoints", tracepoints_info, _("\
16446 Status of specified tracepoints (all tracepoints if no argument).\n\
16447 Convenience variable \"$tpnum\" contains the number of the\n\
16448 last tracepoint set."));
16449
16450   add_info_alias ("tp", "tracepoints", 1);
16451
16452   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16453 Delete specified tracepoints.\n\
16454 Arguments are tracepoint numbers, separated by spaces.\n\
16455 No argument means delete all tracepoints."),
16456            &deletelist);
16457   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16458
16459   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16460 Disable specified tracepoints.\n\
16461 Arguments are tracepoint numbers, separated by spaces.\n\
16462 No argument means disable all tracepoints."),
16463            &disablelist);
16464   deprecate_cmd (c, "disable");
16465
16466   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16467 Enable specified tracepoints.\n\
16468 Arguments are tracepoint numbers, separated by spaces.\n\
16469 No argument means enable all tracepoints."),
16470            &enablelist);
16471   deprecate_cmd (c, "enable");
16472
16473   add_com ("passcount", class_trace, trace_pass_command, _("\
16474 Set the passcount for a tracepoint.\n\
16475 The trace will end when the tracepoint has been passed 'count' times.\n\
16476 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16477 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16478
16479   add_prefix_cmd ("save", class_breakpoint, save_command,
16480                   _("Save breakpoint definitions as a script."),
16481                   &save_cmdlist, "save ",
16482                   0/*allow-unknown*/, &cmdlist);
16483
16484   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16485 Save current breakpoint definitions as a script.\n\
16486 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16487 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16488 session to restore them."),
16489                &save_cmdlist);
16490   set_cmd_completer (c, filename_completer);
16491
16492   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16493 Save current tracepoint definitions as a script.\n\
16494 Use the 'source' command in another debug session to restore them."),
16495                &save_cmdlist);
16496   set_cmd_completer (c, filename_completer);
16497
16498   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16499   deprecate_cmd (c, "save tracepoints");
16500
16501   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16502 Breakpoint specific settings\n\
16503 Configure various breakpoint-specific variables such as\n\
16504 pending breakpoint behavior"),
16505                   &breakpoint_set_cmdlist, "set breakpoint ",
16506                   0/*allow-unknown*/, &setlist);
16507   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16508 Breakpoint specific settings\n\
16509 Configure various breakpoint-specific variables such as\n\
16510 pending breakpoint behavior"),
16511                   &breakpoint_show_cmdlist, "show breakpoint ",
16512                   0/*allow-unknown*/, &showlist);
16513
16514   add_setshow_auto_boolean_cmd ("pending", no_class,
16515                                 &pending_break_support, _("\
16516 Set debugger's behavior regarding pending breakpoints."), _("\
16517 Show debugger's behavior regarding pending breakpoints."), _("\
16518 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16519 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16520 an error.  If auto, an unrecognized breakpoint location results in a\n\
16521 user-query to see if a pending breakpoint should be created."),
16522                                 NULL,
16523                                 show_pending_break_support,
16524                                 &breakpoint_set_cmdlist,
16525                                 &breakpoint_show_cmdlist);
16526
16527   pending_break_support = AUTO_BOOLEAN_AUTO;
16528
16529   add_setshow_boolean_cmd ("auto-hw", no_class,
16530                            &automatic_hardware_breakpoints, _("\
16531 Set automatic usage of hardware breakpoints."), _("\
16532 Show automatic usage of hardware breakpoints."), _("\
16533 If set, the debugger will automatically use hardware breakpoints for\n\
16534 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16535 a warning will be emitted for such breakpoints."),
16536                            NULL,
16537                            show_automatic_hardware_breakpoints,
16538                            &breakpoint_set_cmdlist,
16539                            &breakpoint_show_cmdlist);
16540
16541   add_setshow_boolean_cmd ("always-inserted", class_support,
16542                            &always_inserted_mode, _("\
16543 Set mode for inserting breakpoints."), _("\
16544 Show mode for inserting breakpoints."), _("\
16545 When this mode is on, breakpoints are inserted immediately as soon as\n\
16546 they're created, kept inserted even when execution stops, and removed\n\
16547 only when the user deletes them.  When this mode is off (the default),\n\
16548 breakpoints are inserted only when execution continues, and removed\n\
16549 when execution stops."),
16550                                 NULL,
16551                                 &show_always_inserted_mode,
16552                                 &breakpoint_set_cmdlist,
16553                                 &breakpoint_show_cmdlist);
16554
16555   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16556                         condition_evaluation_enums,
16557                         &condition_evaluation_mode_1, _("\
16558 Set mode of breakpoint condition evaluation."), _("\
16559 Show mode of breakpoint condition evaluation."), _("\
16560 When this is set to \"host\", breakpoint conditions will be\n\
16561 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16562 breakpoint conditions will be downloaded to the target (if the target\n\
16563 supports such feature) and conditions will be evaluated on the target's side.\n\
16564 If this is set to \"auto\" (default), this will be automatically set to\n\
16565 \"target\" if it supports condition evaluation, otherwise it will\n\
16566 be set to \"gdb\""),
16567                            &set_condition_evaluation_mode,
16568                            &show_condition_evaluation_mode,
16569                            &breakpoint_set_cmdlist,
16570                            &breakpoint_show_cmdlist);
16571
16572   add_com ("break-range", class_breakpoint, break_range_command, _("\
16573 Set a breakpoint for an address range.\n\
16574 break-range START-LOCATION, END-LOCATION\n\
16575 where START-LOCATION and END-LOCATION can be one of the following:\n\
16576   LINENUM, for that line in the current file,\n\
16577   FILE:LINENUM, for that line in that file,\n\
16578   +OFFSET, for that number of lines after the current line\n\
16579            or the start of the range\n\
16580   FUNCTION, for the first line in that function,\n\
16581   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16582   *ADDRESS, for the instruction at that address.\n\
16583 \n\
16584 The breakpoint will stop execution of the inferior whenever it executes\n\
16585 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16586 range (including START-LOCATION and END-LOCATION)."));
16587
16588   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16589 Set a dynamic printf at specified location.\n\
16590 dprintf location,format string,arg1,arg2,...\n\
16591 location may be a linespec, explicit, or address location.\n"
16592 "\n" LOCATION_HELP_STRING));
16593   set_cmd_completer (c, location_completer);
16594
16595   add_setshow_enum_cmd ("dprintf-style", class_support,
16596                         dprintf_style_enums, &dprintf_style, _("\
16597 Set the style of usage for dynamic printf."), _("\
16598 Show the style of usage for dynamic printf."), _("\
16599 This setting chooses how GDB will do a dynamic printf.\n\
16600 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16601 console, as with the \"printf\" command.\n\
16602 If the value is \"call\", the print is done by calling a function in your\n\
16603 program; by default printf(), but you can choose a different function or\n\
16604 output stream by setting dprintf-function and dprintf-channel."),
16605                         update_dprintf_commands, NULL,
16606                         &setlist, &showlist);
16607
16608   dprintf_function = xstrdup ("printf");
16609   add_setshow_string_cmd ("dprintf-function", class_support,
16610                           &dprintf_function, _("\
16611 Set the function to use for dynamic printf"), _("\
16612 Show the function to use for dynamic printf"), NULL,
16613                           update_dprintf_commands, NULL,
16614                           &setlist, &showlist);
16615
16616   dprintf_channel = xstrdup ("");
16617   add_setshow_string_cmd ("dprintf-channel", class_support,
16618                           &dprintf_channel, _("\
16619 Set the channel to use for dynamic printf"), _("\
16620 Show the channel to use for dynamic printf"), NULL,
16621                           update_dprintf_commands, NULL,
16622                           &setlist, &showlist);
16623
16624   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16625                            &disconnected_dprintf, _("\
16626 Set whether dprintf continues after GDB disconnects."), _("\
16627 Show whether dprintf continues after GDB disconnects."), _("\
16628 Use this to let dprintf commands continue to hit and produce output\n\
16629 even if GDB disconnects or detaches from the target."),
16630                            NULL,
16631                            NULL,
16632                            &setlist, &showlist);
16633
16634   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16635 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16636 (target agent only) This is useful for formatted output in user-defined commands."));
16637
16638   automatic_hardware_breakpoints = 1;
16639
16640   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16641   observer_attach_thread_exit (remove_threaded_breakpoints);
16642 }