gdb/
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 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 "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.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 "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
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 (char *, void (*) (struct breakpoint *,
105                                                       void *),
106                                     void *);
107
108 static void ignore_command (char *, int);
109
110 static int breakpoint_re_set_one (void *);
111
112 static void breakpoint_re_set_default (struct breakpoint *);
113
114 static void create_sals_from_address_default (char **,
115                                               struct linespec_result *,
116                                               enum bptype, char *,
117                                               char **);
118
119 static void create_breakpoints_sal_default (struct gdbarch *,
120                                             struct linespec_result *,
121                                             struct linespec_sals *,
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_linespec_default (struct breakpoint *, char **,
129                                      struct symtabs_and_lines *);
130
131 static void clear_command (char *, int);
132
133 static void catch_command (char *, int);
134
135 static int can_use_hardware_watchpoint (struct value *);
136
137 static void break_command_1 (char *, int, int);
138
139 static void mention (struct breakpoint *);
140
141 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
142                                                                enum bptype,
143                                                                const struct breakpoint_ops *);
144 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
145                                                        const struct symtab_and_line *);
146
147 /* This function is used in gdbtk sources and thus can not be made
148    static.  */
149 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
150                                        struct symtab_and_line,
151                                        enum bptype,
152                                        const struct breakpoint_ops *);
153
154 static struct breakpoint *
155   momentary_breakpoint_from_master (struct breakpoint *orig,
156                                     enum bptype type,
157                                     const struct breakpoint_ops *ops);
158
159 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
160
161 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
162                                             CORE_ADDR bpaddr,
163                                             enum bptype bptype);
164
165 static void describe_other_breakpoints (struct gdbarch *,
166                                         struct program_space *, CORE_ADDR,
167                                         struct obj_section *, int);
168
169 static int breakpoint_address_match (struct address_space *aspace1,
170                                      CORE_ADDR addr1,
171                                      struct address_space *aspace2,
172                                      CORE_ADDR addr2);
173
174 static int watchpoint_locations_match (struct bp_location *loc1,
175                                        struct bp_location *loc2);
176
177 static int breakpoint_location_address_match (struct bp_location *bl,
178                                               struct address_space *aspace,
179                                               CORE_ADDR addr);
180
181 static void breakpoints_info (char *, int);
182
183 static void watchpoints_info (char *, int);
184
185 static int breakpoint_1 (char *, int, 
186                          int (*) (const struct breakpoint *));
187
188 static int breakpoint_cond_eval (void *);
189
190 static void cleanup_executing_breakpoints (void *);
191
192 static void commands_command (char *, int);
193
194 static void condition_command (char *, int);
195
196 typedef enum
197   {
198     mark_inserted,
199     mark_uninserted
200   }
201 insertion_state_t;
202
203 static int remove_breakpoint (struct bp_location *, insertion_state_t);
204 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
205
206 static enum print_stop_action print_bp_stop_message (bpstat bs);
207
208 static int watchpoint_check (void *);
209
210 static void maintenance_info_breakpoints (char *, int);
211
212 static int hw_breakpoint_used_count (void);
213
214 static int hw_watchpoint_use_count (struct breakpoint *);
215
216 static int hw_watchpoint_used_count_others (struct breakpoint *except,
217                                             enum bptype type,
218                                             int *other_type_used);
219
220 static void hbreak_command (char *, int);
221
222 static void thbreak_command (char *, int);
223
224 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
225                                     int count);
226
227 static void stop_command (char *arg, int from_tty);
228
229 static void stopin_command (char *arg, int from_tty);
230
231 static void stopat_command (char *arg, int from_tty);
232
233 static char *ep_parse_optional_if_clause (char **arg);
234
235 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
236                                        char *arg, int tempflag, int from_tty);
237
238 static void tcatch_command (char *arg, int from_tty);
239
240 static void detach_single_step_breakpoints (void);
241
242 static int single_step_breakpoint_inserted_here_p (struct address_space *,
243                                                    CORE_ADDR pc);
244
245 static void free_bp_location (struct bp_location *loc);
246 static void incref_bp_location (struct bp_location *loc);
247 static void decref_bp_location (struct bp_location **loc);
248
249 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
250
251 static void update_global_location_list (int);
252
253 static void update_global_location_list_nothrow (int);
254
255 static int is_hardware_watchpoint (const struct breakpoint *bpt);
256
257 static void insert_breakpoint_locations (void);
258
259 static int syscall_catchpoint_p (struct breakpoint *b);
260
261 static void tracepoints_info (char *, int);
262
263 static void delete_trace_command (char *, int);
264
265 static void enable_trace_command (char *, int);
266
267 static void disable_trace_command (char *, int);
268
269 static void trace_pass_command (char *, int);
270
271 static void set_tracepoint_count (int num);
272
273 static int is_masked_watchpoint (const struct breakpoint *b);
274
275 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
276
277 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
278    otherwise.  */
279
280 static int strace_marker_p (struct breakpoint *b);
281
282 /* The abstract base class all breakpoint_ops structures inherit
283    from.  */
284 struct breakpoint_ops base_breakpoint_ops;
285
286 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
287    that are implemented on top of software or hardware breakpoints
288    (user breakpoints, internal and momentary breakpoints, etc.).  */
289 static struct breakpoint_ops bkpt_base_breakpoint_ops;
290
291 /* Internal breakpoints class type.  */
292 static struct breakpoint_ops internal_breakpoint_ops;
293
294 /* Momentary breakpoints class type.  */
295 static struct breakpoint_ops momentary_breakpoint_ops;
296
297 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
298 static struct breakpoint_ops longjmp_breakpoint_ops;
299
300 /* The breakpoint_ops structure to be used in regular user created
301    breakpoints.  */
302 struct breakpoint_ops bkpt_breakpoint_ops;
303
304 /* Breakpoints set on probes.  */
305 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
306
307 /* Dynamic printf class type.  */
308 static struct breakpoint_ops dprintf_breakpoint_ops;
309
310 /* The style in which to perform a dynamic printf.  This is a user
311    option because different output options have different tradeoffs;
312    if GDB does the printing, there is better error handling if there
313    is a problem with any of the arguments, but using an inferior
314    function lets you have special-purpose printers and sending of
315    output to the same place as compiled-in print functions.  */
316
317 static const char dprintf_style_gdb[] = "gdb";
318 static const char dprintf_style_call[] = "call";
319 static const char dprintf_style_agent[] = "agent";
320 static const char *const dprintf_style_enums[] = {
321   dprintf_style_gdb,
322   dprintf_style_call,
323   dprintf_style_agent,
324   NULL
325 };
326 static const char *dprintf_style = dprintf_style_gdb;
327
328 /* The function to use for dynamic printf if the preferred style is to
329    call into the inferior.  The value is simply a string that is
330    copied into the command, so it can be anything that GDB can
331    evaluate to a callable address, not necessarily a function name.  */
332
333 static char *dprintf_function = "";
334
335 /* The channel to use for dynamic printf if the preferred style is to
336    call into the inferior; if a nonempty string, it will be passed to
337    the call as the first argument, with the format string as the
338    second.  As with the dprintf function, this can be anything that
339    GDB knows how to evaluate, so in addition to common choices like
340    "stderr", this could be an app-specific expression like
341    "mystreams[curlogger]".  */
342
343 static char *dprintf_channel = "";
344
345 /* True if dprintf commands should continue to operate even if GDB
346    has disconnected.  */
347 static int disconnected_dprintf = 1;
348
349 /* A reference-counted struct command_line.  This lets multiple
350    breakpoints share a single command list.  */
351 struct counted_command_line
352 {
353   /* The reference count.  */
354   int refc;
355
356   /* The command list.  */
357   struct command_line *commands;
358 };
359
360 struct command_line *
361 breakpoint_commands (struct breakpoint *b)
362 {
363   return b->commands ? b->commands->commands : NULL;
364 }
365
366 /* Flag indicating that a command has proceeded the inferior past the
367    current breakpoint.  */
368
369 static int breakpoint_proceeded;
370
371 const char *
372 bpdisp_text (enum bpdisp disp)
373 {
374   /* NOTE: the following values are a part of MI protocol and
375      represent values of 'disp' field returned when inferior stops at
376      a breakpoint.  */
377   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
378
379   return bpdisps[(int) disp];
380 }
381
382 /* Prototypes for exported functions.  */
383 /* If FALSE, gdb will not use hardware support for watchpoints, even
384    if such is available.  */
385 static int can_use_hw_watchpoints;
386
387 static void
388 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
389                              struct cmd_list_element *c,
390                              const char *value)
391 {
392   fprintf_filtered (file,
393                     _("Debugger's willingness to use "
394                       "watchpoint hardware is %s.\n"),
395                     value);
396 }
397
398 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
399    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
400    for unrecognized breakpoint locations.
401    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
402 static enum auto_boolean pending_break_support;
403 static void
404 show_pending_break_support (struct ui_file *file, int from_tty,
405                             struct cmd_list_element *c,
406                             const char *value)
407 {
408   fprintf_filtered (file,
409                     _("Debugger's behavior regarding "
410                       "pending breakpoints is %s.\n"),
411                     value);
412 }
413
414 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
415    set with "break" but falling in read-only memory.
416    If 0, gdb will warn about such breakpoints, but won't automatically
417    use hardware breakpoints.  */
418 static int automatic_hardware_breakpoints;
419 static void
420 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
421                                      struct cmd_list_element *c,
422                                      const char *value)
423 {
424   fprintf_filtered (file,
425                     _("Automatic usage of hardware breakpoints is %s.\n"),
426                     value);
427 }
428
429 /* If on, gdb will keep breakpoints inserted even as inferior is
430    stopped, and immediately insert any new breakpoints.  If off, gdb
431    will insert breakpoints into inferior only when resuming it, and
432    will remove breakpoints upon stop.  If auto, GDB will behave as ON
433    if in non-stop mode, and as OFF if all-stop mode.*/
434
435 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
436
437 static void
438 show_always_inserted_mode (struct ui_file *file, int from_tty,
439                      struct cmd_list_element *c, const char *value)
440 {
441   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
442     fprintf_filtered (file,
443                       _("Always inserted breakpoint "
444                         "mode is %s (currently %s).\n"),
445                       value,
446                       breakpoints_always_inserted_mode () ? "on" : "off");
447   else
448     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
449                       value);
450 }
451
452 int
453 breakpoints_always_inserted_mode (void)
454 {
455   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
456           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
457 }
458
459 static const char condition_evaluation_both[] = "host or target";
460
461 /* Modes for breakpoint condition evaluation.  */
462 static const char condition_evaluation_auto[] = "auto";
463 static const char condition_evaluation_host[] = "host";
464 static const char condition_evaluation_target[] = "target";
465 static const char *const condition_evaluation_enums[] = {
466   condition_evaluation_auto,
467   condition_evaluation_host,
468   condition_evaluation_target,
469   NULL
470 };
471
472 /* Global that holds the current mode for breakpoint condition evaluation.  */
473 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
474
475 /* Global that we use to display information to the user (gets its value from
476    condition_evaluation_mode_1.  */
477 static const char *condition_evaluation_mode = condition_evaluation_auto;
478
479 /* Translate a condition evaluation mode MODE into either "host"
480    or "target".  This is used mostly to translate from "auto" to the
481    real setting that is being used.  It returns the translated
482    evaluation mode.  */
483
484 static const char *
485 translate_condition_evaluation_mode (const char *mode)
486 {
487   if (mode == condition_evaluation_auto)
488     {
489       if (target_supports_evaluation_of_breakpoint_conditions ())
490         return condition_evaluation_target;
491       else
492         return condition_evaluation_host;
493     }
494   else
495     return mode;
496 }
497
498 /* Discovers what condition_evaluation_auto translates to.  */
499
500 static const char *
501 breakpoint_condition_evaluation_mode (void)
502 {
503   return translate_condition_evaluation_mode (condition_evaluation_mode);
504 }
505
506 /* Return true if GDB should evaluate breakpoint conditions or false
507    otherwise.  */
508
509 static int
510 gdb_evaluates_breakpoint_condition_p (void)
511 {
512   const char *mode = breakpoint_condition_evaluation_mode ();
513
514   return (mode == condition_evaluation_host);
515 }
516
517 void _initialize_breakpoint (void);
518
519 /* Are we executing breakpoint commands?  */
520 static int executing_breakpoint_commands;
521
522 /* Are overlay event breakpoints enabled? */
523 static int overlay_events_enabled;
524
525 /* See description in breakpoint.h. */
526 int target_exact_watchpoints = 0;
527
528 /* Walk the following statement or block through all breakpoints.
529    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
530    current breakpoint.  */
531
532 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
533
534 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
535         for (B = breakpoint_chain;      \
536              B ? (TMP=B->next, 1): 0;   \
537              B = TMP)
538
539 /* Similar iterator for the low-level breakpoints.  SAFE variant is
540    not provided so update_global_location_list must not be called
541    while executing the block of ALL_BP_LOCATIONS.  */
542
543 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
544         for (BP_TMP = bp_location;                                      \
545              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
546              BP_TMP++)
547
548 /* Iterates through locations with address ADDRESS for the currently selected
549    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
550    to where the loop should start from.
551    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
552    appropriate location to start with.  */
553
554 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
555         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
556              BP_LOCP_TMP = BP_LOCP_START;                               \
557              BP_LOCP_START                                              \
558              && (BP_LOCP_TMP < bp_location + bp_location_count          \
559              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
560              BP_LOCP_TMP++)
561
562 /* Iterator for tracepoints only.  */
563
564 #define ALL_TRACEPOINTS(B)  \
565   for (B = breakpoint_chain; B; B = B->next)  \
566     if (is_tracepoint (B))
567
568 /* Chains of all breakpoints defined.  */
569
570 struct breakpoint *breakpoint_chain;
571
572 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
573
574 static struct bp_location **bp_location;
575
576 /* Number of elements of BP_LOCATION.  */
577
578 static unsigned bp_location_count;
579
580 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
581    ADDRESS for the current elements of BP_LOCATION which get a valid
582    result from bp_location_has_shadow.  You can use it for roughly
583    limiting the subrange of BP_LOCATION to scan for shadow bytes for
584    an address you need to read.  */
585
586 static CORE_ADDR bp_location_placed_address_before_address_max;
587
588 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
589    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
590    BP_LOCATION which get a valid result from bp_location_has_shadow.
591    You can use it for roughly limiting the subrange of BP_LOCATION to
592    scan for shadow bytes for an address you need to read.  */
593
594 static CORE_ADDR bp_location_shadow_len_after_address_max;
595
596 /* The locations that no longer correspond to any breakpoint, unlinked
597    from bp_location array, but for which a hit may still be reported
598    by a target.  */
599 VEC(bp_location_p) *moribund_locations = NULL;
600
601 /* Number of last breakpoint made.  */
602
603 static int breakpoint_count;
604
605 /* The value of `breakpoint_count' before the last command that
606    created breakpoints.  If the last (break-like) command created more
607    than one breakpoint, then the difference between BREAKPOINT_COUNT
608    and PREV_BREAKPOINT_COUNT is more than one.  */
609 static int prev_breakpoint_count;
610
611 /* Number of last tracepoint made.  */
612
613 static int tracepoint_count;
614
615 static struct cmd_list_element *breakpoint_set_cmdlist;
616 static struct cmd_list_element *breakpoint_show_cmdlist;
617 struct cmd_list_element *save_cmdlist;
618
619 /* Return whether a breakpoint is an active enabled breakpoint.  */
620 static int
621 breakpoint_enabled (struct breakpoint *b)
622 {
623   return (b->enable_state == bp_enabled);
624 }
625
626 /* Set breakpoint count to NUM.  */
627
628 static void
629 set_breakpoint_count (int num)
630 {
631   prev_breakpoint_count = breakpoint_count;
632   breakpoint_count = num;
633   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
634 }
635
636 /* Used by `start_rbreak_breakpoints' below, to record the current
637    breakpoint count before "rbreak" creates any breakpoint.  */
638 static int rbreak_start_breakpoint_count;
639
640 /* Called at the start an "rbreak" command to record the first
641    breakpoint made.  */
642
643 void
644 start_rbreak_breakpoints (void)
645 {
646   rbreak_start_breakpoint_count = breakpoint_count;
647 }
648
649 /* Called at the end of an "rbreak" command to record the last
650    breakpoint made.  */
651
652 void
653 end_rbreak_breakpoints (void)
654 {
655   prev_breakpoint_count = rbreak_start_breakpoint_count;
656 }
657
658 /* Used in run_command to zero the hit count when a new run starts.  */
659
660 void
661 clear_breakpoint_hit_counts (void)
662 {
663   struct breakpoint *b;
664
665   ALL_BREAKPOINTS (b)
666     b->hit_count = 0;
667 }
668
669 /* Allocate a new counted_command_line with reference count of 1.
670    The new structure owns COMMANDS.  */
671
672 static struct counted_command_line *
673 alloc_counted_command_line (struct command_line *commands)
674 {
675   struct counted_command_line *result
676     = xmalloc (sizeof (struct counted_command_line));
677
678   result->refc = 1;
679   result->commands = commands;
680   return result;
681 }
682
683 /* Increment reference count.  This does nothing if CMD is NULL.  */
684
685 static void
686 incref_counted_command_line (struct counted_command_line *cmd)
687 {
688   if (cmd)
689     ++cmd->refc;
690 }
691
692 /* Decrement reference count.  If the reference count reaches 0,
693    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
694    nothing if *CMDP is NULL.  */
695
696 static void
697 decref_counted_command_line (struct counted_command_line **cmdp)
698 {
699   if (*cmdp)
700     {
701       if (--(*cmdp)->refc == 0)
702         {
703           free_command_lines (&(*cmdp)->commands);
704           xfree (*cmdp);
705         }
706       *cmdp = NULL;
707     }
708 }
709
710 /* A cleanup function that calls decref_counted_command_line.  */
711
712 static void
713 do_cleanup_counted_command_line (void *arg)
714 {
715   decref_counted_command_line (arg);
716 }
717
718 /* Create a cleanup that calls decref_counted_command_line on the
719    argument.  */
720
721 static struct cleanup *
722 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
723 {
724   return make_cleanup (do_cleanup_counted_command_line, cmdp);
725 }
726
727 \f
728 /* Return the breakpoint with the specified number, or NULL
729    if the number does not refer to an existing breakpoint.  */
730
731 struct breakpoint *
732 get_breakpoint (int num)
733 {
734   struct breakpoint *b;
735
736   ALL_BREAKPOINTS (b)
737     if (b->number == num)
738       return b;
739   
740   return NULL;
741 }
742
743 \f
744
745 /* Mark locations as "conditions have changed" in case the target supports
746    evaluating conditions on its side.  */
747
748 static void
749 mark_breakpoint_modified (struct breakpoint *b)
750 {
751   struct bp_location *loc;
752
753   /* This is only meaningful if the target is
754      evaluating conditions and if the user has
755      opted for condition evaluation on the target's
756      side.  */
757   if (gdb_evaluates_breakpoint_condition_p ()
758       || !target_supports_evaluation_of_breakpoint_conditions ())
759     return;
760
761   if (!is_breakpoint (b))
762     return;
763
764   for (loc = b->loc; loc; loc = loc->next)
765     loc->condition_changed = condition_modified;
766 }
767
768 /* Mark location as "conditions have changed" in case the target supports
769    evaluating conditions on its side.  */
770
771 static void
772 mark_breakpoint_location_modified (struct bp_location *loc)
773 {
774   /* This is only meaningful if the target is
775      evaluating conditions and if the user has
776      opted for condition evaluation on the target's
777      side.  */
778   if (gdb_evaluates_breakpoint_condition_p ()
779       || !target_supports_evaluation_of_breakpoint_conditions ())
780
781     return;
782
783   if (!is_breakpoint (loc->owner))
784     return;
785
786   loc->condition_changed = condition_modified;
787 }
788
789 /* Sets the condition-evaluation mode using the static global
790    condition_evaluation_mode.  */
791
792 static void
793 set_condition_evaluation_mode (char *args, int from_tty,
794                                struct cmd_list_element *c)
795 {
796   const char *old_mode, *new_mode;
797
798   if ((condition_evaluation_mode_1 == condition_evaluation_target)
799       && !target_supports_evaluation_of_breakpoint_conditions ())
800     {
801       condition_evaluation_mode_1 = condition_evaluation_mode;
802       warning (_("Target does not support breakpoint condition evaluation.\n"
803                  "Using host evaluation mode instead."));
804       return;
805     }
806
807   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
808   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
809
810   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
811      settings was "auto".  */
812   condition_evaluation_mode = condition_evaluation_mode_1;
813
814   /* Only update the mode if the user picked a different one.  */
815   if (new_mode != old_mode)
816     {
817       struct bp_location *loc, **loc_tmp;
818       /* If the user switched to a different evaluation mode, we
819          need to synch the changes with the target as follows:
820
821          "host" -> "target": Send all (valid) conditions to the target.
822          "target" -> "host": Remove all the conditions from the target.
823       */
824
825       if (new_mode == condition_evaluation_target)
826         {
827           /* Mark everything modified and synch conditions with the
828              target.  */
829           ALL_BP_LOCATIONS (loc, loc_tmp)
830             mark_breakpoint_location_modified (loc);
831         }
832       else
833         {
834           /* Manually mark non-duplicate locations to synch conditions
835              with the target.  We do this to remove all the conditions the
836              target knows about.  */
837           ALL_BP_LOCATIONS (loc, loc_tmp)
838             if (is_breakpoint (loc->owner) && loc->inserted)
839               loc->needs_update = 1;
840         }
841
842       /* Do the update.  */
843       update_global_location_list (1);
844     }
845
846   return;
847 }
848
849 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
850    what "auto" is translating to.  */
851
852 static void
853 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
854                                 struct cmd_list_element *c, const char *value)
855 {
856   if (condition_evaluation_mode == condition_evaluation_auto)
857     fprintf_filtered (file,
858                       _("Breakpoint condition evaluation "
859                         "mode is %s (currently %s).\n"),
860                       value,
861                       breakpoint_condition_evaluation_mode ());
862   else
863     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
864                       value);
865 }
866
867 /* A comparison function for bp_location AP and BP that is used by
868    bsearch.  This comparison function only cares about addresses, unlike
869    the more general bp_location_compare function.  */
870
871 static int
872 bp_location_compare_addrs (const void *ap, const void *bp)
873 {
874   struct bp_location *a = *(void **) ap;
875   struct bp_location *b = *(void **) bp;
876
877   if (a->address == b->address)
878     return 0;
879   else
880     return ((a->address > b->address) - (a->address < b->address));
881 }
882
883 /* Helper function to skip all bp_locations with addresses
884    less than ADDRESS.  It returns the first bp_location that
885    is greater than or equal to ADDRESS.  If none is found, just
886    return NULL.  */
887
888 static struct bp_location **
889 get_first_locp_gte_addr (CORE_ADDR address)
890 {
891   struct bp_location dummy_loc;
892   struct bp_location *dummy_locp = &dummy_loc;
893   struct bp_location **locp_found = NULL;
894
895   /* Initialize the dummy location's address field.  */
896   memset (&dummy_loc, 0, sizeof (struct bp_location));
897   dummy_loc.address = address;
898
899   /* Find a close match to the first location at ADDRESS.  */
900   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
901                         sizeof (struct bp_location **),
902                         bp_location_compare_addrs);
903
904   /* Nothing was found, nothing left to do.  */
905   if (locp_found == NULL)
906     return NULL;
907
908   /* We may have found a location that is at ADDRESS but is not the first in the
909      location's list.  Go backwards (if possible) and locate the first one.  */
910   while ((locp_found - 1) >= bp_location
911          && (*(locp_found - 1))->address == address)
912     locp_found--;
913
914   return locp_found;
915 }
916
917 void
918 set_breakpoint_condition (struct breakpoint *b, char *exp,
919                           int from_tty)
920 {
921   xfree (b->cond_string);
922   b->cond_string = NULL;
923
924   if (is_watchpoint (b))
925     {
926       struct watchpoint *w = (struct watchpoint *) b;
927
928       xfree (w->cond_exp);
929       w->cond_exp = NULL;
930     }
931   else
932     {
933       struct bp_location *loc;
934
935       for (loc = b->loc; loc; loc = loc->next)
936         {
937           xfree (loc->cond);
938           loc->cond = NULL;
939
940           /* No need to free the condition agent expression
941              bytecode (if we have one).  We will handle this
942              when we go through update_global_location_list.  */
943         }
944     }
945
946   if (*exp == 0)
947     {
948       if (from_tty)
949         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
950     }
951   else
952     {
953       char *arg = exp;
954
955       /* I don't know if it matters whether this is the string the user
956          typed in or the decompiled expression.  */
957       b->cond_string = xstrdup (arg);
958       b->condition_not_parsed = 0;
959
960       if (is_watchpoint (b))
961         {
962           struct watchpoint *w = (struct watchpoint *) b;
963
964           innermost_block = NULL;
965           arg = exp;
966           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
967           if (*arg)
968             error (_("Junk at end of expression"));
969           w->cond_exp_valid_block = innermost_block;
970         }
971       else
972         {
973           struct bp_location *loc;
974
975           for (loc = b->loc; loc; loc = loc->next)
976             {
977               arg = exp;
978               loc->cond =
979                 parse_exp_1 (&arg, loc->address,
980                              block_for_pc (loc->address), 0);
981               if (*arg)
982                 error (_("Junk at end of expression"));
983             }
984         }
985     }
986   mark_breakpoint_modified (b);
987
988   observer_notify_breakpoint_modified (b);
989 }
990
991 /* Completion for the "condition" command.  */
992
993 static VEC (char_ptr) *
994 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
995 {
996   char *space;
997
998   text = skip_spaces (text);
999   space = skip_to_space (text);
1000   if (*space == '\0')
1001     {
1002       int len;
1003       struct breakpoint *b;
1004       VEC (char_ptr) *result = NULL;
1005
1006       if (text[0] == '$')
1007         {
1008           /* We don't support completion of history indices.  */
1009           if (isdigit (text[1]))
1010             return NULL;
1011           return complete_internalvar (&text[1]);
1012         }
1013
1014       /* We're completing the breakpoint number.  */
1015       len = strlen (text);
1016
1017       ALL_BREAKPOINTS (b)
1018       {
1019         int single = b->loc->next == NULL;
1020         struct bp_location *loc;
1021         int count = 1;
1022
1023         for (loc = b->loc; loc; loc = loc->next)
1024           {
1025             char location[50];
1026
1027             if (single)
1028               xsnprintf (location, sizeof (location), "%d", b->number);
1029             else
1030               xsnprintf (location, sizeof (location),  "%d.%d", b->number,
1031                          count);
1032
1033             if (strncmp (location, text, len) == 0)
1034               VEC_safe_push (char_ptr, result, xstrdup (location));
1035
1036             ++count;
1037           }
1038       }
1039
1040       return result;
1041     }
1042
1043   /* We're completing the expression part.  */
1044   text = skip_spaces (space);
1045   return expression_completer (cmd, text, word);
1046 }
1047
1048 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1049
1050 static void
1051 condition_command (char *arg, int from_tty)
1052 {
1053   struct breakpoint *b;
1054   char *p;
1055   int bnum;
1056
1057   if (arg == 0)
1058     error_no_arg (_("breakpoint number"));
1059
1060   p = arg;
1061   bnum = get_number (&p);
1062   if (bnum == 0)
1063     error (_("Bad breakpoint argument: '%s'"), arg);
1064
1065   ALL_BREAKPOINTS (b)
1066     if (b->number == bnum)
1067       {
1068         /* Check if this breakpoint has a Python object assigned to
1069            it, and if it has a definition of the "stop"
1070            method.  This method and conditions entered into GDB from
1071            the CLI are mutually exclusive.  */
1072         if (b->py_bp_object
1073             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1074           error (_("Cannot set a condition where a Python 'stop' "
1075                    "method has been defined in the breakpoint."));
1076         set_breakpoint_condition (b, p, from_tty);
1077
1078         if (is_breakpoint (b))
1079           update_global_location_list (1);
1080
1081         return;
1082       }
1083
1084   error (_("No breakpoint number %d."), bnum);
1085 }
1086
1087 /* Check that COMMAND do not contain commands that are suitable
1088    only for tracepoints and not suitable for ordinary breakpoints.
1089    Throw if any such commands is found.  */
1090
1091 static void
1092 check_no_tracepoint_commands (struct command_line *commands)
1093 {
1094   struct command_line *c;
1095
1096   for (c = commands; c; c = c->next)
1097     {
1098       int i;
1099
1100       if (c->control_type == while_stepping_control)
1101         error (_("The 'while-stepping' command can "
1102                  "only be used for tracepoints"));
1103
1104       for (i = 0; i < c->body_count; ++i)
1105         check_no_tracepoint_commands ((c->body_list)[i]);
1106
1107       /* Not that command parsing removes leading whitespace and comment
1108          lines and also empty lines.  So, we only need to check for
1109          command directly.  */
1110       if (strstr (c->line, "collect ") == c->line)
1111         error (_("The 'collect' command can only be used for tracepoints"));
1112
1113       if (strstr (c->line, "teval ") == c->line)
1114         error (_("The 'teval' command can only be used for tracepoints"));
1115     }
1116 }
1117
1118 /* Encapsulate tests for different types of tracepoints.  */
1119
1120 static int
1121 is_tracepoint_type (enum bptype type)
1122 {
1123   return (type == bp_tracepoint
1124           || type == bp_fast_tracepoint
1125           || type == bp_static_tracepoint);
1126 }
1127
1128 int
1129 is_tracepoint (const struct breakpoint *b)
1130 {
1131   return is_tracepoint_type (b->type);
1132 }
1133
1134 /* A helper function that validates that COMMANDS are valid for a
1135    breakpoint.  This function will throw an exception if a problem is
1136    found.  */
1137
1138 static void
1139 validate_commands_for_breakpoint (struct breakpoint *b,
1140                                   struct command_line *commands)
1141 {
1142   if (is_tracepoint (b))
1143     {
1144       /* We need to verify that each top-level element of commands is
1145          valid for tracepoints, that there's at most one
1146          while-stepping element, and that while-stepping's body has
1147          valid tracing commands excluding nested while-stepping.  */
1148       struct command_line *c;
1149       struct command_line *while_stepping = 0;
1150       for (c = commands; c; c = c->next)
1151         {
1152           if (c->control_type == while_stepping_control)
1153             {
1154               if (b->type == bp_fast_tracepoint)
1155                 error (_("The 'while-stepping' command "
1156                          "cannot be used for fast tracepoint"));
1157               else if (b->type == bp_static_tracepoint)
1158                 error (_("The 'while-stepping' command "
1159                          "cannot be used for static tracepoint"));
1160
1161               if (while_stepping)
1162                 error (_("The 'while-stepping' command "
1163                          "can be used only once"));
1164               else
1165                 while_stepping = c;
1166             }
1167         }
1168       if (while_stepping)
1169         {
1170           struct command_line *c2;
1171
1172           gdb_assert (while_stepping->body_count == 1);
1173           c2 = while_stepping->body_list[0];
1174           for (; c2; c2 = c2->next)
1175             {
1176               if (c2->control_type == while_stepping_control)
1177                 error (_("The 'while-stepping' command cannot be nested"));
1178             }
1179         }
1180     }
1181   else
1182     {
1183       check_no_tracepoint_commands (commands);
1184     }
1185 }
1186
1187 /* Return a vector of all the static tracepoints set at ADDR.  The
1188    caller is responsible for releasing the vector.  */
1189
1190 VEC(breakpoint_p) *
1191 static_tracepoints_here (CORE_ADDR addr)
1192 {
1193   struct breakpoint *b;
1194   VEC(breakpoint_p) *found = 0;
1195   struct bp_location *loc;
1196
1197   ALL_BREAKPOINTS (b)
1198     if (b->type == bp_static_tracepoint)
1199       {
1200         for (loc = b->loc; loc; loc = loc->next)
1201           if (loc->address == addr)
1202             VEC_safe_push(breakpoint_p, found, b);
1203       }
1204
1205   return found;
1206 }
1207
1208 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1209    validate that only allowed commands are included.  */
1210
1211 void
1212 breakpoint_set_commands (struct breakpoint *b, 
1213                          struct command_line *commands)
1214 {
1215   validate_commands_for_breakpoint (b, commands);
1216
1217   decref_counted_command_line (&b->commands);
1218   b->commands = alloc_counted_command_line (commands);
1219   observer_notify_breakpoint_modified (b);
1220 }
1221
1222 /* Set the internal `silent' flag on the breakpoint.  Note that this
1223    is not the same as the "silent" that may appear in the breakpoint's
1224    commands.  */
1225
1226 void
1227 breakpoint_set_silent (struct breakpoint *b, int silent)
1228 {
1229   int old_silent = b->silent;
1230
1231   b->silent = silent;
1232   if (old_silent != silent)
1233     observer_notify_breakpoint_modified (b);
1234 }
1235
1236 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1237    breakpoint work for any thread.  */
1238
1239 void
1240 breakpoint_set_thread (struct breakpoint *b, int thread)
1241 {
1242   int old_thread = b->thread;
1243
1244   b->thread = thread;
1245   if (old_thread != thread)
1246     observer_notify_breakpoint_modified (b);
1247 }
1248
1249 /* Set the task for this breakpoint.  If TASK is 0, make the
1250    breakpoint work for any task.  */
1251
1252 void
1253 breakpoint_set_task (struct breakpoint *b, int task)
1254 {
1255   int old_task = b->task;
1256
1257   b->task = task;
1258   if (old_task != task)
1259     observer_notify_breakpoint_modified (b);
1260 }
1261
1262 void
1263 check_tracepoint_command (char *line, void *closure)
1264 {
1265   struct breakpoint *b = closure;
1266
1267   validate_actionline (&line, b);
1268 }
1269
1270 /* A structure used to pass information through
1271    map_breakpoint_numbers.  */
1272
1273 struct commands_info
1274 {
1275   /* True if the command was typed at a tty.  */
1276   int from_tty;
1277
1278   /* The breakpoint range spec.  */
1279   char *arg;
1280
1281   /* Non-NULL if the body of the commands are being read from this
1282      already-parsed command.  */
1283   struct command_line *control;
1284
1285   /* The command lines read from the user, or NULL if they have not
1286      yet been read.  */
1287   struct counted_command_line *cmd;
1288 };
1289
1290 /* A callback for map_breakpoint_numbers that sets the commands for
1291    commands_command.  */
1292
1293 static void
1294 do_map_commands_command (struct breakpoint *b, void *data)
1295 {
1296   struct commands_info *info = data;
1297
1298   if (info->cmd == NULL)
1299     {
1300       struct command_line *l;
1301
1302       if (info->control != NULL)
1303         l = copy_command_lines (info->control->body_list[0]);
1304       else
1305         {
1306           struct cleanup *old_chain;
1307           char *str;
1308
1309           str = xstrprintf (_("Type commands for breakpoint(s) "
1310                               "%s, one per line."),
1311                             info->arg);
1312
1313           old_chain = make_cleanup (xfree, str);
1314
1315           l = read_command_lines (str,
1316                                   info->from_tty, 1,
1317                                   (is_tracepoint (b)
1318                                    ? check_tracepoint_command : 0),
1319                                   b);
1320
1321           do_cleanups (old_chain);
1322         }
1323
1324       info->cmd = alloc_counted_command_line (l);
1325     }
1326
1327   /* If a breakpoint was on the list more than once, we don't need to
1328      do anything.  */
1329   if (b->commands != info->cmd)
1330     {
1331       validate_commands_for_breakpoint (b, info->cmd->commands);
1332       incref_counted_command_line (info->cmd);
1333       decref_counted_command_line (&b->commands);
1334       b->commands = info->cmd;
1335       observer_notify_breakpoint_modified (b);
1336     }
1337 }
1338
1339 static void
1340 commands_command_1 (char *arg, int from_tty, 
1341                     struct command_line *control)
1342 {
1343   struct cleanup *cleanups;
1344   struct commands_info info;
1345
1346   info.from_tty = from_tty;
1347   info.control = control;
1348   info.cmd = NULL;
1349   /* If we read command lines from the user, then `info' will hold an
1350      extra reference to the commands that we must clean up.  */
1351   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1352
1353   if (arg == NULL || !*arg)
1354     {
1355       if (breakpoint_count - prev_breakpoint_count > 1)
1356         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1357                           breakpoint_count);
1358       else if (breakpoint_count > 0)
1359         arg = xstrprintf ("%d", breakpoint_count);
1360       else
1361         {
1362           /* So that we don't try to free the incoming non-NULL
1363              argument in the cleanup below.  Mapping breakpoint
1364              numbers will fail in this case.  */
1365           arg = NULL;
1366         }
1367     }
1368   else
1369     /* The command loop has some static state, so we need to preserve
1370        our argument.  */
1371     arg = xstrdup (arg);
1372
1373   if (arg != NULL)
1374     make_cleanup (xfree, arg);
1375
1376   info.arg = arg;
1377
1378   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1379
1380   if (info.cmd == NULL)
1381     error (_("No breakpoints specified."));
1382
1383   do_cleanups (cleanups);
1384 }
1385
1386 static void
1387 commands_command (char *arg, int from_tty)
1388 {
1389   commands_command_1 (arg, from_tty, NULL);
1390 }
1391
1392 /* Like commands_command, but instead of reading the commands from
1393    input stream, takes them from an already parsed command structure.
1394
1395    This is used by cli-script.c to DTRT with breakpoint commands
1396    that are part of if and while bodies.  */
1397 enum command_control_type
1398 commands_from_control_command (char *arg, struct command_line *cmd)
1399 {
1400   commands_command_1 (arg, 0, cmd);
1401   return simple_control;
1402 }
1403
1404 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1405
1406 static int
1407 bp_location_has_shadow (struct bp_location *bl)
1408 {
1409   if (bl->loc_type != bp_loc_software_breakpoint)
1410     return 0;
1411   if (!bl->inserted)
1412     return 0;
1413   if (bl->target_info.shadow_len == 0)
1414     /* BL isn't valid, or doesn't shadow memory.  */
1415     return 0;
1416   return 1;
1417 }
1418
1419 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1420    by replacing any memory breakpoints with their shadowed contents.
1421
1422    If READBUF is not NULL, this buffer must not overlap with any of
1423    the breakpoint location's shadow_contents buffers.  Otherwise,
1424    a failed assertion internal error will be raised.
1425
1426    The range of shadowed area by each bp_location is:
1427      bl->address - bp_location_placed_address_before_address_max
1428      up to bl->address + bp_location_shadow_len_after_address_max
1429    The range we were requested to resolve shadows for is:
1430      memaddr ... memaddr + len
1431    Thus the safe cutoff boundaries for performance optimization are
1432      memaddr + len <= (bl->address
1433                        - bp_location_placed_address_before_address_max)
1434    and:
1435      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1436
1437 void
1438 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1439                         const gdb_byte *writebuf_org,
1440                         ULONGEST memaddr, LONGEST len)
1441 {
1442   /* Left boundary, right boundary and median element of our binary
1443      search.  */
1444   unsigned bc_l, bc_r, bc;
1445
1446   /* Find BC_L which is a leftmost element which may affect BUF
1447      content.  It is safe to report lower value but a failure to
1448      report higher one.  */
1449
1450   bc_l = 0;
1451   bc_r = bp_location_count;
1452   while (bc_l + 1 < bc_r)
1453     {
1454       struct bp_location *bl;
1455
1456       bc = (bc_l + bc_r) / 2;
1457       bl = bp_location[bc];
1458
1459       /* Check first BL->ADDRESS will not overflow due to the added
1460          constant.  Then advance the left boundary only if we are sure
1461          the BC element can in no way affect the BUF content (MEMADDR
1462          to MEMADDR + LEN range).
1463
1464          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1465          offset so that we cannot miss a breakpoint with its shadow
1466          range tail still reaching MEMADDR.  */
1467
1468       if ((bl->address + bp_location_shadow_len_after_address_max
1469            >= bl->address)
1470           && (bl->address + bp_location_shadow_len_after_address_max
1471               <= memaddr))
1472         bc_l = bc;
1473       else
1474         bc_r = bc;
1475     }
1476
1477   /* Due to the binary search above, we need to make sure we pick the
1478      first location that's at BC_L's address.  E.g., if there are
1479      multiple locations at the same address, BC_L may end up pointing
1480      at a duplicate location, and miss the "master"/"inserted"
1481      location.  Say, given locations L1, L2 and L3 at addresses A and
1482      B:
1483
1484       L1@A, L2@A, L3@B, ...
1485
1486      BC_L could end up pointing at location L2, while the "master"
1487      location could be L1.  Since the `loc->inserted' flag is only set
1488      on "master" locations, we'd forget to restore the shadow of L1
1489      and L2.  */
1490   while (bc_l > 0
1491          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1492     bc_l--;
1493
1494   /* Now do full processing of the found relevant range of elements.  */
1495
1496   for (bc = bc_l; bc < bp_location_count; bc++)
1497   {
1498     struct bp_location *bl = bp_location[bc];
1499     CORE_ADDR bp_addr = 0;
1500     int bp_size = 0;
1501     int bptoffset = 0;
1502
1503     /* bp_location array has BL->OWNER always non-NULL.  */
1504     if (bl->owner->type == bp_none)
1505       warning (_("reading through apparently deleted breakpoint #%d?"),
1506                bl->owner->number);
1507
1508     /* Performance optimization: any further element can no longer affect BUF
1509        content.  */
1510
1511     if (bl->address >= bp_location_placed_address_before_address_max
1512         && memaddr + len <= (bl->address
1513                              - bp_location_placed_address_before_address_max))
1514       break;
1515
1516     if (!bp_location_has_shadow (bl))
1517       continue;
1518     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1519                                    current_program_space->aspace, 0))
1520       continue;
1521
1522     /* Addresses and length of the part of the breakpoint that
1523        we need to copy.  */
1524     bp_addr = bl->target_info.placed_address;
1525     bp_size = bl->target_info.shadow_len;
1526
1527     if (bp_addr + bp_size <= memaddr)
1528       /* The breakpoint is entirely before the chunk of memory we
1529          are reading.  */
1530       continue;
1531
1532     if (bp_addr >= memaddr + len)
1533       /* The breakpoint is entirely after the chunk of memory we are
1534          reading.  */
1535       continue;
1536
1537     /* Offset within shadow_contents.  */
1538     if (bp_addr < memaddr)
1539       {
1540         /* Only copy the second part of the breakpoint.  */
1541         bp_size -= memaddr - bp_addr;
1542         bptoffset = memaddr - bp_addr;
1543         bp_addr = memaddr;
1544       }
1545
1546     if (bp_addr + bp_size > memaddr + len)
1547       {
1548         /* Only copy the first part of the breakpoint.  */
1549         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1550       }
1551
1552     if (readbuf != NULL)
1553       {
1554         /* Verify that the readbuf buffer does not overlap with
1555            the shadow_contents buffer.  */
1556         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1557                     || readbuf >= (bl->target_info.shadow_contents
1558                                    + bl->target_info.shadow_len));
1559
1560         /* Update the read buffer with this inserted breakpoint's
1561            shadow.  */
1562         memcpy (readbuf + bp_addr - memaddr,
1563                 bl->target_info.shadow_contents + bptoffset, bp_size);
1564       }
1565     else
1566       {
1567         struct gdbarch *gdbarch = bl->gdbarch;
1568         const unsigned char *bp;
1569         CORE_ADDR placed_address = bl->target_info.placed_address;
1570         unsigned placed_size = bl->target_info.placed_size;
1571
1572         /* Update the shadow with what we want to write to memory.  */
1573         memcpy (bl->target_info.shadow_contents + bptoffset,
1574                 writebuf_org + bp_addr - memaddr, bp_size);
1575
1576         /* Determine appropriate breakpoint contents and size for this
1577            address.  */
1578         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1579
1580         /* Update the final write buffer with this inserted
1581            breakpoint's INSN.  */
1582         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1583       }
1584   }
1585 }
1586 \f
1587
1588 /* Return true if BPT is either a software breakpoint or a hardware
1589    breakpoint.  */
1590
1591 int
1592 is_breakpoint (const struct breakpoint *bpt)
1593 {
1594   return (bpt->type == bp_breakpoint
1595           || bpt->type == bp_hardware_breakpoint
1596           || bpt->type == bp_dprintf);
1597 }
1598
1599 /* Return true if BPT is of any hardware watchpoint kind.  */
1600
1601 static int
1602 is_hardware_watchpoint (const struct breakpoint *bpt)
1603 {
1604   return (bpt->type == bp_hardware_watchpoint
1605           || bpt->type == bp_read_watchpoint
1606           || bpt->type == bp_access_watchpoint);
1607 }
1608
1609 /* Return true if BPT is of any watchpoint kind, hardware or
1610    software.  */
1611
1612 int
1613 is_watchpoint (const struct breakpoint *bpt)
1614 {
1615   return (is_hardware_watchpoint (bpt)
1616           || bpt->type == bp_watchpoint);
1617 }
1618
1619 /* Returns true if the current thread and its running state are safe
1620    to evaluate or update watchpoint B.  Watchpoints on local
1621    expressions need to be evaluated in the context of the thread that
1622    was current when the watchpoint was created, and, that thread needs
1623    to be stopped to be able to select the correct frame context.
1624    Watchpoints on global expressions can be evaluated on any thread,
1625    and in any state.  It is presently left to the target allowing
1626    memory accesses when threads are running.  */
1627
1628 static int
1629 watchpoint_in_thread_scope (struct watchpoint *b)
1630 {
1631   return (b->base.pspace == current_program_space
1632           && (ptid_equal (b->watchpoint_thread, null_ptid)
1633               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1634                   && !is_executing (inferior_ptid))));
1635 }
1636
1637 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1638    associated bp_watchpoint_scope breakpoint.  */
1639
1640 static void
1641 watchpoint_del_at_next_stop (struct watchpoint *w)
1642 {
1643   struct breakpoint *b = &w->base;
1644
1645   if (b->related_breakpoint != b)
1646     {
1647       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1648       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1649       b->related_breakpoint->disposition = disp_del_at_next_stop;
1650       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1651       b->related_breakpoint = b;
1652     }
1653   b->disposition = disp_del_at_next_stop;
1654 }
1655
1656 /* Assuming that B is a watchpoint:
1657    - Reparse watchpoint expression, if REPARSE is non-zero
1658    - Evaluate expression and store the result in B->val
1659    - Evaluate the condition if there is one, and store the result
1660      in b->loc->cond.
1661    - Update the list of values that must be watched in B->loc.
1662
1663    If the watchpoint disposition is disp_del_at_next_stop, then do
1664    nothing.  If this is local watchpoint that is out of scope, delete
1665    it.
1666
1667    Even with `set breakpoint always-inserted on' the watchpoints are
1668    removed + inserted on each stop here.  Normal breakpoints must
1669    never be removed because they might be missed by a running thread
1670    when debugging in non-stop mode.  On the other hand, hardware
1671    watchpoints (is_hardware_watchpoint; processed here) are specific
1672    to each LWP since they are stored in each LWP's hardware debug
1673    registers.  Therefore, such LWP must be stopped first in order to
1674    be able to modify its hardware watchpoints.
1675
1676    Hardware watchpoints must be reset exactly once after being
1677    presented to the user.  It cannot be done sooner, because it would
1678    reset the data used to present the watchpoint hit to the user.  And
1679    it must not be done later because it could display the same single
1680    watchpoint hit during multiple GDB stops.  Note that the latter is
1681    relevant only to the hardware watchpoint types bp_read_watchpoint
1682    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1683    not user-visible - its hit is suppressed if the memory content has
1684    not changed.
1685
1686    The following constraints influence the location where we can reset
1687    hardware watchpoints:
1688
1689    * target_stopped_by_watchpoint and target_stopped_data_address are
1690      called several times when GDB stops.
1691
1692    [linux] 
1693    * Multiple hardware watchpoints can be hit at the same time,
1694      causing GDB to stop.  GDB only presents one hardware watchpoint
1695      hit at a time as the reason for stopping, and all the other hits
1696      are presented later, one after the other, each time the user
1697      requests the execution to be resumed.  Execution is not resumed
1698      for the threads still having pending hit event stored in
1699      LWP_INFO->STATUS.  While the watchpoint is already removed from
1700      the inferior on the first stop the thread hit event is kept being
1701      reported from its cached value by linux_nat_stopped_data_address
1702      until the real thread resume happens after the watchpoint gets
1703      presented and thus its LWP_INFO->STATUS gets reset.
1704
1705    Therefore the hardware watchpoint hit can get safely reset on the
1706    watchpoint removal from inferior.  */
1707
1708 static void
1709 update_watchpoint (struct watchpoint *b, int reparse)
1710 {
1711   int within_current_scope;
1712   struct frame_id saved_frame_id;
1713   int frame_saved;
1714
1715   /* If this is a local watchpoint, we only want to check if the
1716      watchpoint frame is in scope if the current thread is the thread
1717      that was used to create the watchpoint.  */
1718   if (!watchpoint_in_thread_scope (b))
1719     return;
1720
1721   if (b->base.disposition == disp_del_at_next_stop)
1722     return;
1723  
1724   frame_saved = 0;
1725
1726   /* Determine if the watchpoint is within scope.  */
1727   if (b->exp_valid_block == NULL)
1728     within_current_scope = 1;
1729   else
1730     {
1731       struct frame_info *fi = get_current_frame ();
1732       struct gdbarch *frame_arch = get_frame_arch (fi);
1733       CORE_ADDR frame_pc = get_frame_pc (fi);
1734
1735       /* If we're in a function epilogue, unwinding may not work
1736          properly, so do not attempt to recreate locations at this
1737          point.  See similar comments in watchpoint_check.  */
1738       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1739         return;
1740
1741       /* Save the current frame's ID so we can restore it after
1742          evaluating the watchpoint expression on its own frame.  */
1743       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1744          took a frame parameter, so that we didn't have to change the
1745          selected frame.  */
1746       frame_saved = 1;
1747       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1748
1749       fi = frame_find_by_id (b->watchpoint_frame);
1750       within_current_scope = (fi != NULL);
1751       if (within_current_scope)
1752         select_frame (fi);
1753     }
1754
1755   /* We don't free locations.  They are stored in the bp_location array
1756      and update_global_location_list will eventually delete them and
1757      remove breakpoints if needed.  */
1758   b->base.loc = NULL;
1759
1760   if (within_current_scope && reparse)
1761     {
1762       char *s;
1763
1764       if (b->exp)
1765         {
1766           xfree (b->exp);
1767           b->exp = NULL;
1768         }
1769       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1770       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1771       /* If the meaning of expression itself changed, the old value is
1772          no longer relevant.  We don't want to report a watchpoint hit
1773          to the user when the old value and the new value may actually
1774          be completely different objects.  */
1775       value_free (b->val);
1776       b->val = NULL;
1777       b->val_valid = 0;
1778
1779       /* Note that unlike with breakpoints, the watchpoint's condition
1780          expression is stored in the breakpoint object, not in the
1781          locations (re)created below.  */
1782       if (b->base.cond_string != NULL)
1783         {
1784           if (b->cond_exp != NULL)
1785             {
1786               xfree (b->cond_exp);
1787               b->cond_exp = NULL;
1788             }
1789
1790           s = b->base.cond_string;
1791           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1792         }
1793     }
1794
1795   /* If we failed to parse the expression, for example because
1796      it refers to a global variable in a not-yet-loaded shared library,
1797      don't try to insert watchpoint.  We don't automatically delete
1798      such watchpoint, though, since failure to parse expression
1799      is different from out-of-scope watchpoint.  */
1800   if ( !target_has_execution)
1801     {
1802       /* Without execution, memory can't change.  No use to try and
1803          set watchpoint locations.  The watchpoint will be reset when
1804          the target gains execution, through breakpoint_re_set.  */
1805     }
1806   else if (within_current_scope && b->exp)
1807     {
1808       int pc = 0;
1809       struct value *val_chain, *v, *result, *next;
1810       struct program_space *frame_pspace;
1811
1812       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1813
1814       /* Avoid setting b->val if it's already set.  The meaning of
1815          b->val is 'the last value' user saw, and we should update
1816          it only if we reported that last value to user.  As it
1817          happens, the code that reports it updates b->val directly.
1818          We don't keep track of the memory value for masked
1819          watchpoints.  */
1820       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1821         {
1822           b->val = v;
1823           b->val_valid = 1;
1824         }
1825
1826       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1827
1828       /* Look at each value on the value chain.  */
1829       for (v = val_chain; v; v = value_next (v))
1830         {
1831           /* If it's a memory location, and GDB actually needed
1832              its contents to evaluate the expression, then we
1833              must watch it.  If the first value returned is
1834              still lazy, that means an error occurred reading it;
1835              watch it anyway in case it becomes readable.  */
1836           if (VALUE_LVAL (v) == lval_memory
1837               && (v == val_chain || ! value_lazy (v)))
1838             {
1839               struct type *vtype = check_typedef (value_type (v));
1840
1841               /* We only watch structs and arrays if user asked
1842                  for it explicitly, never if they just happen to
1843                  appear in the middle of some value chain.  */
1844               if (v == result
1845                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1846                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1847                 {
1848                   CORE_ADDR addr;
1849                   int type;
1850                   struct bp_location *loc, **tmp;
1851
1852                   addr = value_address (v);
1853                   type = hw_write;
1854                   if (b->base.type == bp_read_watchpoint)
1855                     type = hw_read;
1856                   else if (b->base.type == bp_access_watchpoint)
1857                     type = hw_access;
1858
1859                   loc = allocate_bp_location (&b->base);
1860                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1861                     ;
1862                   *tmp = loc;
1863                   loc->gdbarch = get_type_arch (value_type (v));
1864
1865                   loc->pspace = frame_pspace;
1866                   loc->address = addr;
1867                   loc->length = TYPE_LENGTH (value_type (v));
1868                   loc->watchpoint_type = type;
1869                 }
1870             }
1871         }
1872
1873       /* Change the type of breakpoint between hardware assisted or
1874          an ordinary watchpoint depending on the hardware support
1875          and free hardware slots.  REPARSE is set when the inferior
1876          is started.  */
1877       if (reparse)
1878         {
1879           int reg_cnt;
1880           enum bp_loc_type loc_type;
1881           struct bp_location *bl;
1882
1883           reg_cnt = can_use_hardware_watchpoint (val_chain);
1884
1885           if (reg_cnt)
1886             {
1887               int i, target_resources_ok, other_type_used;
1888               enum bptype type;
1889
1890               /* Use an exact watchpoint when there's only one memory region to be
1891                  watched, and only one debug register is needed to watch it.  */
1892               b->exact = target_exact_watchpoints && reg_cnt == 1;
1893
1894               /* We need to determine how many resources are already
1895                  used for all other hardware watchpoints plus this one
1896                  to see if we still have enough resources to also fit
1897                  this watchpoint in as well.  */
1898
1899               /* If this is a software watchpoint, we try to turn it
1900                  to a hardware one -- count resources as if B was of
1901                  hardware watchpoint type.  */
1902               type = b->base.type;
1903               if (type == bp_watchpoint)
1904                 type = bp_hardware_watchpoint;
1905
1906               /* This watchpoint may or may not have been placed on
1907                  the list yet at this point (it won't be in the list
1908                  if we're trying to create it for the first time,
1909                  through watch_command), so always account for it
1910                  manually.  */
1911
1912               /* Count resources used by all watchpoints except B.  */
1913               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1914
1915               /* Add in the resources needed for B.  */
1916               i += hw_watchpoint_use_count (&b->base);
1917
1918               target_resources_ok
1919                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1920               if (target_resources_ok <= 0)
1921                 {
1922                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1923
1924                   if (target_resources_ok == 0 && !sw_mode)
1925                     error (_("Target does not support this type of "
1926                              "hardware watchpoint."));
1927                   else if (target_resources_ok < 0 && !sw_mode)
1928                     error (_("There are not enough available hardware "
1929                              "resources for this watchpoint."));
1930
1931                   /* Downgrade to software watchpoint.  */
1932                   b->base.type = bp_watchpoint;
1933                 }
1934               else
1935                 {
1936                   /* If this was a software watchpoint, we've just
1937                      found we have enough resources to turn it to a
1938                      hardware watchpoint.  Otherwise, this is a
1939                      nop.  */
1940                   b->base.type = type;
1941                 }
1942             }
1943           else if (!b->base.ops->works_in_software_mode (&b->base))
1944             error (_("Expression cannot be implemented with "
1945                      "read/access watchpoint."));
1946           else
1947             b->base.type = bp_watchpoint;
1948
1949           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1950                       : bp_loc_hardware_watchpoint);
1951           for (bl = b->base.loc; bl; bl = bl->next)
1952             bl->loc_type = loc_type;
1953         }
1954
1955       for (v = val_chain; v; v = next)
1956         {
1957           next = value_next (v);
1958           if (v != b->val)
1959             value_free (v);
1960         }
1961
1962       /* If a software watchpoint is not watching any memory, then the
1963          above left it without any location set up.  But,
1964          bpstat_stop_status requires a location to be able to report
1965          stops, so make sure there's at least a dummy one.  */
1966       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1967         {
1968           struct breakpoint *base = &b->base;
1969           base->loc = allocate_bp_location (base);
1970           base->loc->pspace = frame_pspace;
1971           base->loc->address = -1;
1972           base->loc->length = -1;
1973           base->loc->watchpoint_type = -1;
1974         }
1975     }
1976   else if (!within_current_scope)
1977     {
1978       printf_filtered (_("\
1979 Watchpoint %d deleted because the program has left the block\n\
1980 in which its expression is valid.\n"),
1981                        b->base.number);
1982       watchpoint_del_at_next_stop (b);
1983     }
1984
1985   /* Restore the selected frame.  */
1986   if (frame_saved)
1987     select_frame (frame_find_by_id (saved_frame_id));
1988 }
1989
1990
1991 /* Returns 1 iff breakpoint location should be
1992    inserted in the inferior.  We don't differentiate the type of BL's owner
1993    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1994    breakpoint_ops is not defined, because in insert_bp_location,
1995    tracepoint's insert_location will not be called.  */
1996 static int
1997 should_be_inserted (struct bp_location *bl)
1998 {
1999   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2000     return 0;
2001
2002   if (bl->owner->disposition == disp_del_at_next_stop)
2003     return 0;
2004
2005   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2006     return 0;
2007
2008   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2009     return 0;
2010
2011   /* This is set for example, when we're attached to the parent of a
2012      vfork, and have detached from the child.  The child is running
2013      free, and we expect it to do an exec or exit, at which point the
2014      OS makes the parent schedulable again (and the target reports
2015      that the vfork is done).  Until the child is done with the shared
2016      memory region, do not insert breakpoints in the parent, otherwise
2017      the child could still trip on the parent's breakpoints.  Since
2018      the parent is blocked anyway, it won't miss any breakpoint.  */
2019   if (bl->pspace->breakpoints_not_allowed)
2020     return 0;
2021
2022   return 1;
2023 }
2024
2025 /* Same as should_be_inserted but does the check assuming
2026    that the location is not duplicated.  */
2027
2028 static int
2029 unduplicated_should_be_inserted (struct bp_location *bl)
2030 {
2031   int result;
2032   const int save_duplicate = bl->duplicate;
2033
2034   bl->duplicate = 0;
2035   result = should_be_inserted (bl);
2036   bl->duplicate = save_duplicate;
2037   return result;
2038 }
2039
2040 /* Parses a conditional described by an expression COND into an
2041    agent expression bytecode suitable for evaluation
2042    by the bytecode interpreter.  Return NULL if there was
2043    any error during parsing.  */
2044
2045 static struct agent_expr *
2046 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2047 {
2048   struct agent_expr *aexpr = NULL;
2049   struct cleanup *old_chain = NULL;
2050   volatile struct gdb_exception ex;
2051
2052   if (!cond)
2053     return NULL;
2054
2055   /* We don't want to stop processing, so catch any errors
2056      that may show up.  */
2057   TRY_CATCH (ex, RETURN_MASK_ERROR)
2058     {
2059       aexpr = gen_eval_for_expr (scope, cond);
2060     }
2061
2062   if (ex.reason < 0)
2063     {
2064       /* If we got here, it means the condition could not be parsed to a valid
2065          bytecode expression and thus can't be evaluated on the target's side.
2066          It's no use iterating through the conditions.  */
2067       return NULL;
2068     }
2069
2070   /* We have a valid agent expression.  */
2071   return aexpr;
2072 }
2073
2074 /* Based on location BL, create a list of breakpoint conditions to be
2075    passed on to the target.  If we have duplicated locations with different
2076    conditions, we will add such conditions to the list.  The idea is that the
2077    target will evaluate the list of conditions and will only notify GDB when
2078    one of them is true.  */
2079
2080 static void
2081 build_target_condition_list (struct bp_location *bl)
2082 {
2083   struct bp_location **locp = NULL, **loc2p;
2084   int null_condition_or_parse_error = 0;
2085   int modified = bl->needs_update;
2086   struct bp_location *loc;
2087
2088   /* This is only meaningful if the target is
2089      evaluating conditions and if the user has
2090      opted for condition evaluation on the target's
2091      side.  */
2092   if (gdb_evaluates_breakpoint_condition_p ()
2093       || !target_supports_evaluation_of_breakpoint_conditions ())
2094     return;
2095
2096   /* Do a first pass to check for locations with no assigned
2097      conditions or conditions that fail to parse to a valid agent expression
2098      bytecode.  If any of these happen, then it's no use to send conditions
2099      to the target since this location will always trigger and generate a
2100      response back to GDB.  */
2101   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2102     {
2103       loc = (*loc2p);
2104       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2105         {
2106           if (modified)
2107             {
2108               struct agent_expr *aexpr;
2109
2110               /* Re-parse the conditions since something changed.  In that
2111                  case we already freed the condition bytecodes (see
2112                  force_breakpoint_reinsertion).  We just
2113                  need to parse the condition to bytecodes again.  */
2114               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2115               loc->cond_bytecode = aexpr;
2116
2117               /* Check if we managed to parse the conditional expression
2118                  correctly.  If not, we will not send this condition
2119                  to the target.  */
2120               if (aexpr)
2121                 continue;
2122             }
2123
2124           /* If we have a NULL bytecode expression, it means something
2125              went wrong or we have a null condition expression.  */
2126           if (!loc->cond_bytecode)
2127             {
2128               null_condition_or_parse_error = 1;
2129               break;
2130             }
2131         }
2132     }
2133
2134   /* If any of these happened, it means we will have to evaluate the conditions
2135      for the location's address on gdb's side.  It is no use keeping bytecodes
2136      for all the other duplicate locations, thus we free all of them here.
2137
2138      This is so we have a finer control over which locations' conditions are
2139      being evaluated by GDB or the remote stub.  */
2140   if (null_condition_or_parse_error)
2141     {
2142       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2143         {
2144           loc = (*loc2p);
2145           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2146             {
2147               /* Only go as far as the first NULL bytecode is
2148                  located.  */
2149               if (!loc->cond_bytecode)
2150                 return;
2151
2152               free_agent_expr (loc->cond_bytecode);
2153               loc->cond_bytecode = NULL;
2154             }
2155         }
2156     }
2157
2158   /* No NULL conditions or failed bytecode generation.  Build a condition list
2159      for this location's address.  */
2160   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2161     {
2162       loc = (*loc2p);
2163       if (loc->cond
2164           && is_breakpoint (loc->owner)
2165           && loc->pspace->num == bl->pspace->num
2166           && loc->owner->enable_state == bp_enabled
2167           && loc->enabled)
2168         /* Add the condition to the vector.  This will be used later to send the
2169            conditions to the target.  */
2170         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2171                        loc->cond_bytecode);
2172     }
2173
2174   return;
2175 }
2176
2177 /* Parses a command described by string CMD into an agent expression
2178    bytecode suitable for evaluation by the bytecode interpreter.
2179    Return NULL if there was any error during parsing.  */
2180
2181 static struct agent_expr *
2182 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2183 {
2184   struct cleanup *old_cleanups = 0;
2185   struct expression *expr, **argvec;
2186   struct agent_expr *aexpr = NULL;
2187   struct cleanup *old_chain = NULL;
2188   volatile struct gdb_exception ex;
2189   char *cmdrest;
2190   char *format_start, *format_end;
2191   struct format_piece *fpieces;
2192   int nargs;
2193   struct gdbarch *gdbarch = get_current_arch ();
2194
2195   if (!cmd)
2196     return NULL;
2197
2198   cmdrest = cmd;
2199
2200   if (*cmdrest == ',')
2201     ++cmdrest;
2202   cmdrest = skip_spaces (cmdrest);
2203
2204   if (*cmdrest++ != '"')
2205     error (_("No format string following the location"));
2206
2207   format_start = cmdrest;
2208
2209   fpieces = parse_format_string (&cmdrest);
2210
2211   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2212
2213   format_end = cmdrest;
2214
2215   if (*cmdrest++ != '"')
2216     error (_("Bad format string, non-terminated '\"'."));
2217   
2218   cmdrest = skip_spaces (cmdrest);
2219
2220   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2221     error (_("Invalid argument syntax"));
2222
2223   if (*cmdrest == ',')
2224     cmdrest++;
2225   cmdrest = skip_spaces (cmdrest);
2226
2227   /* For each argument, make an expression.  */
2228
2229   argvec = (struct expression **) alloca (strlen (cmd)
2230                                          * sizeof (struct expression *));
2231
2232   nargs = 0;
2233   while (*cmdrest != '\0')
2234     {
2235       char *cmd1;
2236
2237       cmd1 = cmdrest;
2238       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2239       argvec[nargs++] = expr;
2240       cmdrest = cmd1;
2241       if (*cmdrest == ',')
2242         ++cmdrest;
2243     }
2244
2245   /* We don't want to stop processing, so catch any errors
2246      that may show up.  */
2247   TRY_CATCH (ex, RETURN_MASK_ERROR)
2248     {
2249       aexpr = gen_printf (scope, gdbarch, 0, 0,
2250                           format_start, format_end - format_start,
2251                           fpieces, nargs, argvec);
2252     }
2253
2254   if (ex.reason < 0)
2255     {
2256       /* If we got here, it means the command could not be parsed to a valid
2257          bytecode expression and thus can't be evaluated on the target's side.
2258          It's no use iterating through the other commands.  */
2259       return NULL;
2260     }
2261
2262   do_cleanups (old_cleanups);
2263
2264   /* We have a valid agent expression, return it.  */
2265   return aexpr;
2266 }
2267
2268 /* Based on location BL, create a list of breakpoint commands to be
2269    passed on to the target.  If we have duplicated locations with
2270    different commands, we will add any such to the list.  */
2271
2272 static void
2273 build_target_command_list (struct bp_location *bl)
2274 {
2275   struct bp_location **locp = NULL, **loc2p;
2276   int null_command_or_parse_error = 0;
2277   int modified = bl->needs_update;
2278   struct bp_location *loc;
2279
2280   /* For now, limit to agent-style dprintf breakpoints.  */
2281   if (bl->owner->type != bp_dprintf
2282       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2283     return;
2284
2285   if (!target_can_run_breakpoint_commands ())
2286     return;
2287
2288   /* Do a first pass to check for locations with no assigned
2289      conditions or conditions that fail to parse to a valid agent expression
2290      bytecode.  If any of these happen, then it's no use to send conditions
2291      to the target since this location will always trigger and generate a
2292      response back to GDB.  */
2293   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2294     {
2295       loc = (*loc2p);
2296       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2297         {
2298           if (modified)
2299             {
2300               struct agent_expr *aexpr;
2301
2302               /* Re-parse the commands since something changed.  In that
2303                  case we already freed the command bytecodes (see
2304                  force_breakpoint_reinsertion).  We just
2305                  need to parse the command to bytecodes again.  */
2306               aexpr = parse_cmd_to_aexpr (bl->address,
2307                                           loc->owner->extra_string);
2308               loc->cmd_bytecode = aexpr;
2309
2310               if (!aexpr)
2311                 continue;
2312             }
2313
2314           /* If we have a NULL bytecode expression, it means something
2315              went wrong or we have a null command expression.  */
2316           if (!loc->cmd_bytecode)
2317             {
2318               null_command_or_parse_error = 1;
2319               break;
2320             }
2321         }
2322     }
2323
2324   /* If anything failed, then we're not doing target-side commands,
2325      and so clean up.  */
2326   if (null_command_or_parse_error)
2327     {
2328       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2329         {
2330           loc = (*loc2p);
2331           if (is_breakpoint (loc->owner)
2332               && loc->pspace->num == bl->pspace->num)
2333             {
2334               /* Only go as far as the first NULL bytecode is
2335                  located.  */
2336               if (!loc->cond_bytecode)
2337                 return;
2338
2339               free_agent_expr (loc->cond_bytecode);
2340               loc->cond_bytecode = NULL;
2341             }
2342         }
2343     }
2344
2345   /* No NULL commands or failed bytecode generation.  Build a command list
2346      for this location's address.  */
2347   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2348     {
2349       loc = (*loc2p);
2350       if (loc->owner->extra_string
2351           && is_breakpoint (loc->owner)
2352           && loc->pspace->num == bl->pspace->num
2353           && loc->owner->enable_state == bp_enabled
2354           && loc->enabled)
2355         /* Add the command to the vector.  This will be used later
2356            to send the commands to the target.  */
2357         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2358                        loc->cmd_bytecode);
2359     }
2360
2361   bl->target_info.persist = 0;
2362   /* Maybe flag this location as persistent.  */
2363   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2364     bl->target_info.persist = 1;
2365 }
2366
2367 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2368    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2369    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2370    Returns 0 for success, 1 if the bp_location type is not supported or
2371    -1 for failure.
2372
2373    NOTE drow/2003-09-09: This routine could be broken down to an
2374    object-style method for each breakpoint or catchpoint type.  */
2375 static int
2376 insert_bp_location (struct bp_location *bl,
2377                     struct ui_file *tmp_error_stream,
2378                     int *disabled_breaks,
2379                     int *hw_breakpoint_error,
2380                     int *hw_bp_error_explained_already)
2381 {
2382   int val = 0;
2383   char *hw_bp_err_string = NULL;
2384   struct gdb_exception e;
2385
2386   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2387     return 0;
2388
2389   /* Note we don't initialize bl->target_info, as that wipes out
2390      the breakpoint location's shadow_contents if the breakpoint
2391      is still inserted at that location.  This in turn breaks
2392      target_read_memory which depends on these buffers when
2393      a memory read is requested at the breakpoint location:
2394      Once the target_info has been wiped, we fail to see that
2395      we have a breakpoint inserted at that address and thus
2396      read the breakpoint instead of returning the data saved in
2397      the breakpoint location's shadow contents.  */
2398   bl->target_info.placed_address = bl->address;
2399   bl->target_info.placed_address_space = bl->pspace->aspace;
2400   bl->target_info.length = bl->length;
2401
2402   /* When working with target-side conditions, we must pass all the conditions
2403      for the same breakpoint address down to the target since GDB will not
2404      insert those locations.  With a list of breakpoint conditions, the target
2405      can decide when to stop and notify GDB.  */
2406
2407   if (is_breakpoint (bl->owner))
2408     {
2409       build_target_condition_list (bl);
2410       build_target_command_list (bl);
2411       /* Reset the modification marker.  */
2412       bl->needs_update = 0;
2413     }
2414
2415   if (bl->loc_type == bp_loc_software_breakpoint
2416       || bl->loc_type == bp_loc_hardware_breakpoint)
2417     {
2418       if (bl->owner->type != bp_hardware_breakpoint)
2419         {
2420           /* If the explicitly specified breakpoint type
2421              is not hardware breakpoint, check the memory map to see
2422              if the breakpoint address is in read only memory or not.
2423
2424              Two important cases are:
2425              - location type is not hardware breakpoint, memory
2426              is readonly.  We change the type of the location to
2427              hardware breakpoint.
2428              - location type is hardware breakpoint, memory is
2429              read-write.  This means we've previously made the
2430              location hardware one, but then the memory map changed,
2431              so we undo.
2432              
2433              When breakpoints are removed, remove_breakpoints will use
2434              location types we've just set here, the only possible
2435              problem is that memory map has changed during running
2436              program, but it's not going to work anyway with current
2437              gdb.  */
2438           struct mem_region *mr 
2439             = lookup_mem_region (bl->target_info.placed_address);
2440           
2441           if (mr)
2442             {
2443               if (automatic_hardware_breakpoints)
2444                 {
2445                   enum bp_loc_type new_type;
2446                   
2447                   if (mr->attrib.mode != MEM_RW)
2448                     new_type = bp_loc_hardware_breakpoint;
2449                   else 
2450                     new_type = bp_loc_software_breakpoint;
2451                   
2452                   if (new_type != bl->loc_type)
2453                     {
2454                       static int said = 0;
2455
2456                       bl->loc_type = new_type;
2457                       if (!said)
2458                         {
2459                           fprintf_filtered (gdb_stdout,
2460                                             _("Note: automatically using "
2461                                               "hardware breakpoints for "
2462                                               "read-only addresses.\n"));
2463                           said = 1;
2464                         }
2465                     }
2466                 }
2467               else if (bl->loc_type == bp_loc_software_breakpoint
2468                        && mr->attrib.mode != MEM_RW)        
2469                 warning (_("cannot set software breakpoint "
2470                            "at readonly address %s"),
2471                          paddress (bl->gdbarch, bl->address));
2472             }
2473         }
2474         
2475       /* First check to see if we have to handle an overlay.  */
2476       if (overlay_debugging == ovly_off
2477           || bl->section == NULL
2478           || !(section_is_overlay (bl->section)))
2479         {
2480           /* No overlay handling: just set the breakpoint.  */
2481           TRY_CATCH (e, RETURN_MASK_ALL)
2482             {
2483               val = bl->owner->ops->insert_location (bl);
2484             }
2485           if (e.reason < 0)
2486             {
2487               val = 1;
2488               hw_bp_err_string = (char *) e.message;
2489             }
2490         }
2491       else
2492         {
2493           /* This breakpoint is in an overlay section.
2494              Shall we set a breakpoint at the LMA?  */
2495           if (!overlay_events_enabled)
2496             {
2497               /* Yes -- overlay event support is not active, 
2498                  so we must try to set a breakpoint at the LMA.
2499                  This will not work for a hardware breakpoint.  */
2500               if (bl->loc_type == bp_loc_hardware_breakpoint)
2501                 warning (_("hardware breakpoint %d not supported in overlay!"),
2502                          bl->owner->number);
2503               else
2504                 {
2505                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2506                                                              bl->section);
2507                   /* Set a software (trap) breakpoint at the LMA.  */
2508                   bl->overlay_target_info = bl->target_info;
2509                   bl->overlay_target_info.placed_address = addr;
2510                   val = target_insert_breakpoint (bl->gdbarch,
2511                                                   &bl->overlay_target_info);
2512                   if (val != 0)
2513                     fprintf_unfiltered (tmp_error_stream,
2514                                         "Overlay breakpoint %d "
2515                                         "failed: in ROM?\n",
2516                                         bl->owner->number);
2517                 }
2518             }
2519           /* Shall we set a breakpoint at the VMA? */
2520           if (section_is_mapped (bl->section))
2521             {
2522               /* Yes.  This overlay section is mapped into memory.  */
2523               TRY_CATCH (e, RETURN_MASK_ALL)
2524                 {
2525                   val = bl->owner->ops->insert_location (bl);
2526                 }
2527               if (e.reason < 0)
2528                 {
2529                   val = 1;
2530                   hw_bp_err_string = (char *) e.message;
2531                 }
2532             }
2533           else
2534             {
2535               /* No.  This breakpoint will not be inserted.  
2536                  No error, but do not mark the bp as 'inserted'.  */
2537               return 0;
2538             }
2539         }
2540
2541       if (val)
2542         {
2543           /* Can't set the breakpoint.  */
2544           if (solib_name_from_address (bl->pspace, bl->address))
2545             {
2546               /* See also: disable_breakpoints_in_shlibs.  */
2547               val = 0;
2548               bl->shlib_disabled = 1;
2549               observer_notify_breakpoint_modified (bl->owner);
2550               if (!*disabled_breaks)
2551                 {
2552                   fprintf_unfiltered (tmp_error_stream, 
2553                                       "Cannot insert breakpoint %d.\n", 
2554                                       bl->owner->number);
2555                   fprintf_unfiltered (tmp_error_stream, 
2556                                       "Temporarily disabling shared "
2557                                       "library breakpoints:\n");
2558                 }
2559               *disabled_breaks = 1;
2560               fprintf_unfiltered (tmp_error_stream,
2561                                   "breakpoint #%d\n", bl->owner->number);
2562             }
2563           else
2564             {
2565               if (bl->loc_type == bp_loc_hardware_breakpoint)
2566                 {
2567                   *hw_breakpoint_error = 1;
2568                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2569                   fprintf_unfiltered (tmp_error_stream,
2570                                       "Cannot insert hardware breakpoint %d%s",
2571                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2572                   if (hw_bp_err_string)
2573                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2574                 }
2575               else
2576                 {
2577                   fprintf_unfiltered (tmp_error_stream, 
2578                                       "Cannot insert breakpoint %d.\n", 
2579                                       bl->owner->number);
2580                   fprintf_filtered (tmp_error_stream, 
2581                                     "Error accessing memory address ");
2582                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2583                                   tmp_error_stream);
2584                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2585                                     safe_strerror (val));
2586                 }
2587
2588             }
2589         }
2590       else
2591         bl->inserted = 1;
2592
2593       return val;
2594     }
2595
2596   else if (bl->loc_type == bp_loc_hardware_watchpoint
2597            /* NOTE drow/2003-09-08: This state only exists for removing
2598               watchpoints.  It's not clear that it's necessary...  */
2599            && bl->owner->disposition != disp_del_at_next_stop)
2600     {
2601       gdb_assert (bl->owner->ops != NULL
2602                   && bl->owner->ops->insert_location != NULL);
2603
2604       val = bl->owner->ops->insert_location (bl);
2605
2606       /* If trying to set a read-watchpoint, and it turns out it's not
2607          supported, try emulating one with an access watchpoint.  */
2608       if (val == 1 && bl->watchpoint_type == hw_read)
2609         {
2610           struct bp_location *loc, **loc_temp;
2611
2612           /* But don't try to insert it, if there's already another
2613              hw_access location that would be considered a duplicate
2614              of this one.  */
2615           ALL_BP_LOCATIONS (loc, loc_temp)
2616             if (loc != bl
2617                 && loc->watchpoint_type == hw_access
2618                 && watchpoint_locations_match (bl, loc))
2619               {
2620                 bl->duplicate = 1;
2621                 bl->inserted = 1;
2622                 bl->target_info = loc->target_info;
2623                 bl->watchpoint_type = hw_access;
2624                 val = 0;
2625                 break;
2626               }
2627
2628           if (val == 1)
2629             {
2630               bl->watchpoint_type = hw_access;
2631               val = bl->owner->ops->insert_location (bl);
2632
2633               if (val)
2634                 /* Back to the original value.  */
2635                 bl->watchpoint_type = hw_read;
2636             }
2637         }
2638
2639       bl->inserted = (val == 0);
2640     }
2641
2642   else if (bl->owner->type == bp_catchpoint)
2643     {
2644       gdb_assert (bl->owner->ops != NULL
2645                   && bl->owner->ops->insert_location != NULL);
2646
2647       val = bl->owner->ops->insert_location (bl);
2648       if (val)
2649         {
2650           bl->owner->enable_state = bp_disabled;
2651
2652           if (val == 1)
2653             warning (_("\
2654 Error inserting catchpoint %d: Your system does not support this type\n\
2655 of catchpoint."), bl->owner->number);
2656           else
2657             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2658         }
2659
2660       bl->inserted = (val == 0);
2661
2662       /* We've already printed an error message if there was a problem
2663          inserting this catchpoint, and we've disabled the catchpoint,
2664          so just return success.  */
2665       return 0;
2666     }
2667
2668   return 0;
2669 }
2670
2671 /* This function is called when program space PSPACE is about to be
2672    deleted.  It takes care of updating breakpoints to not reference
2673    PSPACE anymore.  */
2674
2675 void
2676 breakpoint_program_space_exit (struct program_space *pspace)
2677 {
2678   struct breakpoint *b, *b_temp;
2679   struct bp_location *loc, **loc_temp;
2680
2681   /* Remove any breakpoint that was set through this program space.  */
2682   ALL_BREAKPOINTS_SAFE (b, b_temp)
2683     {
2684       if (b->pspace == pspace)
2685         delete_breakpoint (b);
2686     }
2687
2688   /* Breakpoints set through other program spaces could have locations
2689      bound to PSPACE as well.  Remove those.  */
2690   ALL_BP_LOCATIONS (loc, loc_temp)
2691     {
2692       struct bp_location *tmp;
2693
2694       if (loc->pspace == pspace)
2695         {
2696           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2697           if (loc->owner->loc == loc)
2698             loc->owner->loc = loc->next;
2699           else
2700             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2701               if (tmp->next == loc)
2702                 {
2703                   tmp->next = loc->next;
2704                   break;
2705                 }
2706         }
2707     }
2708
2709   /* Now update the global location list to permanently delete the
2710      removed locations above.  */
2711   update_global_location_list (0);
2712 }
2713
2714 /* Make sure all breakpoints are inserted in inferior.
2715    Throws exception on any error.
2716    A breakpoint that is already inserted won't be inserted
2717    again, so calling this function twice is safe.  */
2718 void
2719 insert_breakpoints (void)
2720 {
2721   struct breakpoint *bpt;
2722
2723   ALL_BREAKPOINTS (bpt)
2724     if (is_hardware_watchpoint (bpt))
2725       {
2726         struct watchpoint *w = (struct watchpoint *) bpt;
2727
2728         update_watchpoint (w, 0 /* don't reparse.  */);
2729       }
2730
2731   update_global_location_list (1);
2732
2733   /* update_global_location_list does not insert breakpoints when
2734      always_inserted_mode is not enabled.  Explicitly insert them
2735      now.  */
2736   if (!breakpoints_always_inserted_mode ())
2737     insert_breakpoint_locations ();
2738 }
2739
2740 /* Invoke CALLBACK for each of bp_location.  */
2741
2742 void
2743 iterate_over_bp_locations (walk_bp_location_callback callback)
2744 {
2745   struct bp_location *loc, **loc_tmp;
2746
2747   ALL_BP_LOCATIONS (loc, loc_tmp)
2748     {
2749       callback (loc, NULL);
2750     }
2751 }
2752
2753 /* This is used when we need to synch breakpoint conditions between GDB and the
2754    target.  It is the case with deleting and disabling of breakpoints when using
2755    always-inserted mode.  */
2756
2757 static void
2758 update_inserted_breakpoint_locations (void)
2759 {
2760   struct bp_location *bl, **blp_tmp;
2761   int error_flag = 0;
2762   int val = 0;
2763   int disabled_breaks = 0;
2764   int hw_breakpoint_error = 0;
2765   int hw_bp_details_reported = 0;
2766
2767   struct ui_file *tmp_error_stream = mem_fileopen ();
2768   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2769
2770   /* Explicitly mark the warning -- this will only be printed if
2771      there was an error.  */
2772   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2773
2774   save_current_space_and_thread ();
2775
2776   ALL_BP_LOCATIONS (bl, blp_tmp)
2777     {
2778       /* We only want to update software breakpoints and hardware
2779          breakpoints.  */
2780       if (!is_breakpoint (bl->owner))
2781         continue;
2782
2783       /* We only want to update locations that are already inserted
2784          and need updating.  This is to avoid unwanted insertion during
2785          deletion of breakpoints.  */
2786       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2787         continue;
2788
2789       switch_to_program_space_and_thread (bl->pspace);
2790
2791       /* For targets that support global breakpoints, there's no need
2792          to select an inferior to insert breakpoint to.  In fact, even
2793          if we aren't attached to any process yet, we should still
2794          insert breakpoints.  */
2795       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2796           && ptid_equal (inferior_ptid, null_ptid))
2797         continue;
2798
2799       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2800                                     &hw_breakpoint_error, &hw_bp_details_reported);
2801       if (val)
2802         error_flag = val;
2803     }
2804
2805   if (error_flag)
2806     {
2807       target_terminal_ours_for_output ();
2808       error_stream (tmp_error_stream);
2809     }
2810
2811   do_cleanups (cleanups);
2812 }
2813
2814 /* Used when starting or continuing the program.  */
2815
2816 static void
2817 insert_breakpoint_locations (void)
2818 {
2819   struct breakpoint *bpt;
2820   struct bp_location *bl, **blp_tmp;
2821   int error_flag = 0;
2822   int val = 0;
2823   int disabled_breaks = 0;
2824   int hw_breakpoint_error = 0;
2825   int hw_bp_error_explained_already = 0;
2826
2827   struct ui_file *tmp_error_stream = mem_fileopen ();
2828   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2829   
2830   /* Explicitly mark the warning -- this will only be printed if
2831      there was an error.  */
2832   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2833
2834   save_current_space_and_thread ();
2835
2836   ALL_BP_LOCATIONS (bl, blp_tmp)
2837     {
2838       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2839         continue;
2840
2841       /* There is no point inserting thread-specific breakpoints if
2842          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2843          has BL->OWNER always non-NULL.  */
2844       if (bl->owner->thread != -1
2845           && !valid_thread_id (bl->owner->thread))
2846         continue;
2847
2848       switch_to_program_space_and_thread (bl->pspace);
2849
2850       /* For targets that support global breakpoints, there's no need
2851          to select an inferior to insert breakpoint to.  In fact, even
2852          if we aren't attached to any process yet, we should still
2853          insert breakpoints.  */
2854       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2855           && ptid_equal (inferior_ptid, null_ptid))
2856         continue;
2857
2858       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2859                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2860       if (val)
2861         error_flag = val;
2862     }
2863
2864   /* If we failed to insert all locations of a watchpoint, remove
2865      them, as half-inserted watchpoint is of limited use.  */
2866   ALL_BREAKPOINTS (bpt)  
2867     {
2868       int some_failed = 0;
2869       struct bp_location *loc;
2870
2871       if (!is_hardware_watchpoint (bpt))
2872         continue;
2873
2874       if (!breakpoint_enabled (bpt))
2875         continue;
2876
2877       if (bpt->disposition == disp_del_at_next_stop)
2878         continue;
2879       
2880       for (loc = bpt->loc; loc; loc = loc->next)
2881         if (!loc->inserted && should_be_inserted (loc))
2882           {
2883             some_failed = 1;
2884             break;
2885           }
2886       if (some_failed)
2887         {
2888           for (loc = bpt->loc; loc; loc = loc->next)
2889             if (loc->inserted)
2890               remove_breakpoint (loc, mark_uninserted);
2891
2892           hw_breakpoint_error = 1;
2893           fprintf_unfiltered (tmp_error_stream,
2894                               "Could not insert hardware watchpoint %d.\n", 
2895                               bpt->number);
2896           error_flag = -1;
2897         }
2898     }
2899
2900   if (error_flag)
2901     {
2902       /* If a hardware breakpoint or watchpoint was inserted, add a
2903          message about possibly exhausted resources.  */
2904       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2905         {
2906           fprintf_unfiltered (tmp_error_stream, 
2907                               "Could not insert hardware breakpoints:\n\
2908 You may have requested too many hardware breakpoints/watchpoints.\n");
2909         }
2910       target_terminal_ours_for_output ();
2911       error_stream (tmp_error_stream);
2912     }
2913
2914   do_cleanups (cleanups);
2915 }
2916
2917 /* Used when the program stops.
2918    Returns zero if successful, or non-zero if there was a problem
2919    removing a breakpoint location.  */
2920
2921 int
2922 remove_breakpoints (void)
2923 {
2924   struct bp_location *bl, **blp_tmp;
2925   int val = 0;
2926
2927   ALL_BP_LOCATIONS (bl, blp_tmp)
2928   {
2929     if (bl->inserted && !is_tracepoint (bl->owner))
2930       val |= remove_breakpoint (bl, mark_uninserted);
2931   }
2932   return val;
2933 }
2934
2935 /* Remove breakpoints of process PID.  */
2936
2937 int
2938 remove_breakpoints_pid (int pid)
2939 {
2940   struct bp_location *bl, **blp_tmp;
2941   int val;
2942   struct inferior *inf = find_inferior_pid (pid);
2943
2944   ALL_BP_LOCATIONS (bl, blp_tmp)
2945   {
2946     if (bl->pspace != inf->pspace)
2947       continue;
2948
2949     if (bl->owner->type == bp_dprintf)
2950       continue;
2951
2952     if (bl->inserted)
2953       {
2954         val = remove_breakpoint (bl, mark_uninserted);
2955         if (val != 0)
2956           return val;
2957       }
2958   }
2959   return 0;
2960 }
2961
2962 int
2963 reattach_breakpoints (int pid)
2964 {
2965   struct cleanup *old_chain;
2966   struct bp_location *bl, **blp_tmp;
2967   int val;
2968   struct ui_file *tmp_error_stream;
2969   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2970   struct inferior *inf;
2971   struct thread_info *tp;
2972
2973   tp = any_live_thread_of_process (pid);
2974   if (tp == NULL)
2975     return 1;
2976
2977   inf = find_inferior_pid (pid);
2978   old_chain = save_inferior_ptid ();
2979
2980   inferior_ptid = tp->ptid;
2981
2982   tmp_error_stream = mem_fileopen ();
2983   make_cleanup_ui_file_delete (tmp_error_stream);
2984
2985   ALL_BP_LOCATIONS (bl, blp_tmp)
2986   {
2987     if (bl->pspace != inf->pspace)
2988       continue;
2989
2990     if (bl->inserted)
2991       {
2992         bl->inserted = 0;
2993         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2994         if (val != 0)
2995           {
2996             do_cleanups (old_chain);
2997             return val;
2998           }
2999       }
3000   }
3001   do_cleanups (old_chain);
3002   return 0;
3003 }
3004
3005 static int internal_breakpoint_number = -1;
3006
3007 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3008    If INTERNAL is non-zero, the breakpoint number will be populated
3009    from internal_breakpoint_number and that variable decremented.
3010    Otherwise the breakpoint number will be populated from
3011    breakpoint_count and that value incremented.  Internal breakpoints
3012    do not set the internal var bpnum.  */
3013 static void
3014 set_breakpoint_number (int internal, struct breakpoint *b)
3015 {
3016   if (internal)
3017     b->number = internal_breakpoint_number--;
3018   else
3019     {
3020       set_breakpoint_count (breakpoint_count + 1);
3021       b->number = breakpoint_count;
3022     }
3023 }
3024
3025 static struct breakpoint *
3026 create_internal_breakpoint (struct gdbarch *gdbarch,
3027                             CORE_ADDR address, enum bptype type,
3028                             const struct breakpoint_ops *ops)
3029 {
3030   struct symtab_and_line sal;
3031   struct breakpoint *b;
3032
3033   init_sal (&sal);              /* Initialize to zeroes.  */
3034
3035   sal.pc = address;
3036   sal.section = find_pc_overlay (sal.pc);
3037   sal.pspace = current_program_space;
3038
3039   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3040   b->number = internal_breakpoint_number--;
3041   b->disposition = disp_donttouch;
3042
3043   return b;
3044 }
3045
3046 static const char *const longjmp_names[] =
3047   {
3048     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3049   };
3050 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3051
3052 /* Per-objfile data private to breakpoint.c.  */
3053 struct breakpoint_objfile_data
3054 {
3055   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3056   struct minimal_symbol *overlay_msym;
3057
3058   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3059   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3060
3061   /* True if we have looked for longjmp probes.  */
3062   int longjmp_searched;
3063
3064   /* SystemTap probe points for longjmp (if any).  */
3065   VEC (probe_p) *longjmp_probes;
3066
3067   /* Minimal symbol for "std::terminate()" (if any).  */
3068   struct minimal_symbol *terminate_msym;
3069
3070   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3071   struct minimal_symbol *exception_msym;
3072
3073   /* True if we have looked for exception probes.  */
3074   int exception_searched;
3075
3076   /* SystemTap probe points for unwinding (if any).  */
3077   VEC (probe_p) *exception_probes;
3078 };
3079
3080 static const struct objfile_data *breakpoint_objfile_key;
3081
3082 /* Minimal symbol not found sentinel.  */
3083 static struct minimal_symbol msym_not_found;
3084
3085 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3086
3087 static int
3088 msym_not_found_p (const struct minimal_symbol *msym)
3089 {
3090   return msym == &msym_not_found;
3091 }
3092
3093 /* Return per-objfile data needed by breakpoint.c.
3094    Allocate the data if necessary.  */
3095
3096 static struct breakpoint_objfile_data *
3097 get_breakpoint_objfile_data (struct objfile *objfile)
3098 {
3099   struct breakpoint_objfile_data *bp_objfile_data;
3100
3101   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3102   if (bp_objfile_data == NULL)
3103     {
3104       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3105                                        sizeof (*bp_objfile_data));
3106
3107       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3108       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3109     }
3110   return bp_objfile_data;
3111 }
3112
3113 static void
3114 free_breakpoint_probes (struct objfile *obj, void *data)
3115 {
3116   struct breakpoint_objfile_data *bp_objfile_data = data;
3117
3118   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3119   VEC_free (probe_p, bp_objfile_data->exception_probes);
3120 }
3121
3122 static void
3123 create_overlay_event_breakpoint (void)
3124 {
3125   struct objfile *objfile;
3126   const char *const func_name = "_ovly_debug_event";
3127
3128   ALL_OBJFILES (objfile)
3129     {
3130       struct breakpoint *b;
3131       struct breakpoint_objfile_data *bp_objfile_data;
3132       CORE_ADDR addr;
3133
3134       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3135
3136       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3137         continue;
3138
3139       if (bp_objfile_data->overlay_msym == NULL)
3140         {
3141           struct minimal_symbol *m;
3142
3143           m = lookup_minimal_symbol_text (func_name, objfile);
3144           if (m == NULL)
3145             {
3146               /* Avoid future lookups in this objfile.  */
3147               bp_objfile_data->overlay_msym = &msym_not_found;
3148               continue;
3149             }
3150           bp_objfile_data->overlay_msym = m;
3151         }
3152
3153       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3154       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3155                                       bp_overlay_event,
3156                                       &internal_breakpoint_ops);
3157       b->addr_string = xstrdup (func_name);
3158
3159       if (overlay_debugging == ovly_auto)
3160         {
3161           b->enable_state = bp_enabled;
3162           overlay_events_enabled = 1;
3163         }
3164       else
3165        {
3166          b->enable_state = bp_disabled;
3167          overlay_events_enabled = 0;
3168        }
3169     }
3170   update_global_location_list (1);
3171 }
3172
3173 static void
3174 create_longjmp_master_breakpoint (void)
3175 {
3176   struct program_space *pspace;
3177   struct cleanup *old_chain;
3178
3179   old_chain = save_current_program_space ();
3180
3181   ALL_PSPACES (pspace)
3182   {
3183     struct objfile *objfile;
3184
3185     set_current_program_space (pspace);
3186
3187     ALL_OBJFILES (objfile)
3188     {
3189       int i;
3190       struct gdbarch *gdbarch;
3191       struct breakpoint_objfile_data *bp_objfile_data;
3192
3193       gdbarch = get_objfile_arch (objfile);
3194       if (!gdbarch_get_longjmp_target_p (gdbarch))
3195         continue;
3196
3197       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3198
3199       if (!bp_objfile_data->longjmp_searched)
3200         {
3201           bp_objfile_data->longjmp_probes
3202             = find_probes_in_objfile (objfile, "libc", "longjmp");
3203           bp_objfile_data->longjmp_searched = 1;
3204         }
3205
3206       if (bp_objfile_data->longjmp_probes != NULL)
3207         {
3208           int i;
3209           struct probe *probe;
3210           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3211
3212           for (i = 0;
3213                VEC_iterate (probe_p,
3214                             bp_objfile_data->longjmp_probes,
3215                             i, probe);
3216                ++i)
3217             {
3218               struct breakpoint *b;
3219
3220               b = create_internal_breakpoint (gdbarch, probe->address,
3221                                               bp_longjmp_master,
3222                                               &internal_breakpoint_ops);
3223               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3224               b->enable_state = bp_disabled;
3225             }
3226
3227           continue;
3228         }
3229
3230       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3231         {
3232           struct breakpoint *b;
3233           const char *func_name;
3234           CORE_ADDR addr;
3235
3236           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3237             continue;
3238
3239           func_name = longjmp_names[i];
3240           if (bp_objfile_data->longjmp_msym[i] == NULL)
3241             {
3242               struct minimal_symbol *m;
3243
3244               m = lookup_minimal_symbol_text (func_name, objfile);
3245               if (m == NULL)
3246                 {
3247                   /* Prevent future lookups in this objfile.  */
3248                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3249                   continue;
3250                 }
3251               bp_objfile_data->longjmp_msym[i] = m;
3252             }
3253
3254           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3255           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3256                                           &internal_breakpoint_ops);
3257           b->addr_string = xstrdup (func_name);
3258           b->enable_state = bp_disabled;
3259         }
3260     }
3261   }
3262   update_global_location_list (1);
3263
3264   do_cleanups (old_chain);
3265 }
3266
3267 /* Create a master std::terminate breakpoint.  */
3268 static void
3269 create_std_terminate_master_breakpoint (void)
3270 {
3271   struct program_space *pspace;
3272   struct cleanup *old_chain;
3273   const char *const func_name = "std::terminate()";
3274
3275   old_chain = save_current_program_space ();
3276
3277   ALL_PSPACES (pspace)
3278   {
3279     struct objfile *objfile;
3280     CORE_ADDR addr;
3281
3282     set_current_program_space (pspace);
3283
3284     ALL_OBJFILES (objfile)
3285     {
3286       struct breakpoint *b;
3287       struct breakpoint_objfile_data *bp_objfile_data;
3288
3289       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3290
3291       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3292         continue;
3293
3294       if (bp_objfile_data->terminate_msym == NULL)
3295         {
3296           struct minimal_symbol *m;
3297
3298           m = lookup_minimal_symbol (func_name, NULL, objfile);
3299           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3300                             && MSYMBOL_TYPE (m) != mst_file_text))
3301             {
3302               /* Prevent future lookups in this objfile.  */
3303               bp_objfile_data->terminate_msym = &msym_not_found;
3304               continue;
3305             }
3306           bp_objfile_data->terminate_msym = m;
3307         }
3308
3309       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3310       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3311                                       bp_std_terminate_master,
3312                                       &internal_breakpoint_ops);
3313       b->addr_string = xstrdup (func_name);
3314       b->enable_state = bp_disabled;
3315     }
3316   }
3317
3318   update_global_location_list (1);
3319
3320   do_cleanups (old_chain);
3321 }
3322
3323 /* Install a master breakpoint on the unwinder's debug hook.  */
3324
3325 static void
3326 create_exception_master_breakpoint (void)
3327 {
3328   struct objfile *objfile;
3329   const char *const func_name = "_Unwind_DebugHook";
3330
3331   ALL_OBJFILES (objfile)
3332     {
3333       struct breakpoint *b;
3334       struct gdbarch *gdbarch;
3335       struct breakpoint_objfile_data *bp_objfile_data;
3336       CORE_ADDR addr;
3337
3338       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3339
3340       /* We prefer the SystemTap probe point if it exists.  */
3341       if (!bp_objfile_data->exception_searched)
3342         {
3343           bp_objfile_data->exception_probes
3344             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3345           bp_objfile_data->exception_searched = 1;
3346         }
3347
3348       if (bp_objfile_data->exception_probes != NULL)
3349         {
3350           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3351           int i;
3352           struct probe *probe;
3353
3354           for (i = 0;
3355                VEC_iterate (probe_p,
3356                             bp_objfile_data->exception_probes,
3357                             i, probe);
3358                ++i)
3359             {
3360               struct breakpoint *b;
3361
3362               b = create_internal_breakpoint (gdbarch, probe->address,
3363                                               bp_exception_master,
3364                                               &internal_breakpoint_ops);
3365               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3366               b->enable_state = bp_disabled;
3367             }
3368
3369           continue;
3370         }
3371
3372       /* Otherwise, try the hook function.  */
3373
3374       if (msym_not_found_p (bp_objfile_data->exception_msym))
3375         continue;
3376
3377       gdbarch = get_objfile_arch (objfile);
3378
3379       if (bp_objfile_data->exception_msym == NULL)
3380         {
3381           struct minimal_symbol *debug_hook;
3382
3383           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3384           if (debug_hook == NULL)
3385             {
3386               bp_objfile_data->exception_msym = &msym_not_found;
3387               continue;
3388             }
3389
3390           bp_objfile_data->exception_msym = debug_hook;
3391         }
3392
3393       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3394       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3395                                                  &current_target);
3396       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3397                                       &internal_breakpoint_ops);
3398       b->addr_string = xstrdup (func_name);
3399       b->enable_state = bp_disabled;
3400     }
3401
3402   update_global_location_list (1);
3403 }
3404
3405 void
3406 update_breakpoints_after_exec (void)
3407 {
3408   struct breakpoint *b, *b_tmp;
3409   struct bp_location *bploc, **bplocp_tmp;
3410
3411   /* We're about to delete breakpoints from GDB's lists.  If the
3412      INSERTED flag is true, GDB will try to lift the breakpoints by
3413      writing the breakpoints' "shadow contents" back into memory.  The
3414      "shadow contents" are NOT valid after an exec, so GDB should not
3415      do that.  Instead, the target is responsible from marking
3416      breakpoints out as soon as it detects an exec.  We don't do that
3417      here instead, because there may be other attempts to delete
3418      breakpoints after detecting an exec and before reaching here.  */
3419   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3420     if (bploc->pspace == current_program_space)
3421       gdb_assert (!bploc->inserted);
3422
3423   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3424   {
3425     if (b->pspace != current_program_space)
3426       continue;
3427
3428     /* Solib breakpoints must be explicitly reset after an exec().  */
3429     if (b->type == bp_shlib_event)
3430       {
3431         delete_breakpoint (b);
3432         continue;
3433       }
3434
3435     /* JIT breakpoints must be explicitly reset after an exec().  */
3436     if (b->type == bp_jit_event)
3437       {
3438         delete_breakpoint (b);
3439         continue;
3440       }
3441
3442     /* Thread event breakpoints must be set anew after an exec(),
3443        as must overlay event and longjmp master breakpoints.  */
3444     if (b->type == bp_thread_event || b->type == bp_overlay_event
3445         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3446         || b->type == bp_exception_master)
3447       {
3448         delete_breakpoint (b);
3449         continue;
3450       }
3451
3452     /* Step-resume breakpoints are meaningless after an exec().  */
3453     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3454       {
3455         delete_breakpoint (b);
3456         continue;
3457       }
3458
3459     /* Longjmp and longjmp-resume breakpoints are also meaningless
3460        after an exec.  */
3461     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3462         || b->type == bp_longjmp_call_dummy
3463         || b->type == bp_exception || b->type == bp_exception_resume)
3464       {
3465         delete_breakpoint (b);
3466         continue;
3467       }
3468
3469     if (b->type == bp_catchpoint)
3470       {
3471         /* For now, none of the bp_catchpoint breakpoints need to
3472            do anything at this point.  In the future, if some of
3473            the catchpoints need to something, we will need to add
3474            a new method, and call this method from here.  */
3475         continue;
3476       }
3477
3478     /* bp_finish is a special case.  The only way we ought to be able
3479        to see one of these when an exec() has happened, is if the user
3480        caught a vfork, and then said "finish".  Ordinarily a finish just
3481        carries them to the call-site of the current callee, by setting
3482        a temporary bp there and resuming.  But in this case, the finish
3483        will carry them entirely through the vfork & exec.
3484
3485        We don't want to allow a bp_finish to remain inserted now.  But
3486        we can't safely delete it, 'cause finish_command has a handle to
3487        the bp on a bpstat, and will later want to delete it.  There's a
3488        chance (and I've seen it happen) that if we delete the bp_finish
3489        here, that its storage will get reused by the time finish_command
3490        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3491        We really must allow finish_command to delete a bp_finish.
3492
3493        In the absence of a general solution for the "how do we know
3494        it's safe to delete something others may have handles to?"
3495        problem, what we'll do here is just uninsert the bp_finish, and
3496        let finish_command delete it.
3497
3498        (We know the bp_finish is "doomed" in the sense that it's
3499        momentary, and will be deleted as soon as finish_command sees
3500        the inferior stopped.  So it doesn't matter that the bp's
3501        address is probably bogus in the new a.out, unlike e.g., the
3502        solib breakpoints.)  */
3503
3504     if (b->type == bp_finish)
3505       {
3506         continue;
3507       }
3508
3509     /* Without a symbolic address, we have little hope of the
3510        pre-exec() address meaning the same thing in the post-exec()
3511        a.out.  */
3512     if (b->addr_string == NULL)
3513       {
3514         delete_breakpoint (b);
3515         continue;
3516       }
3517   }
3518   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3519   create_overlay_event_breakpoint ();
3520   create_longjmp_master_breakpoint ();
3521   create_std_terminate_master_breakpoint ();
3522   create_exception_master_breakpoint ();
3523 }
3524
3525 int
3526 detach_breakpoints (ptid_t ptid)
3527 {
3528   struct bp_location *bl, **blp_tmp;
3529   int val = 0;
3530   struct cleanup *old_chain = save_inferior_ptid ();
3531   struct inferior *inf = current_inferior ();
3532
3533   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3534     error (_("Cannot detach breakpoints of inferior_ptid"));
3535
3536   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3537   inferior_ptid = ptid;
3538   ALL_BP_LOCATIONS (bl, blp_tmp)
3539   {
3540     if (bl->pspace != inf->pspace)
3541       continue;
3542
3543     if (bl->inserted)
3544       val |= remove_breakpoint_1 (bl, mark_inserted);
3545   }
3546
3547   /* Detach single-step breakpoints as well.  */
3548   detach_single_step_breakpoints ();
3549
3550   do_cleanups (old_chain);
3551   return val;
3552 }
3553
3554 /* Remove the breakpoint location BL from the current address space.
3555    Note that this is used to detach breakpoints from a child fork.
3556    When we get here, the child isn't in the inferior list, and neither
3557    do we have objects to represent its address space --- we should
3558    *not* look at bl->pspace->aspace here.  */
3559
3560 static int
3561 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3562 {
3563   int val;
3564
3565   /* BL is never in moribund_locations by our callers.  */
3566   gdb_assert (bl->owner != NULL);
3567
3568   if (bl->owner->enable_state == bp_permanent)
3569     /* Permanent breakpoints cannot be inserted or removed.  */
3570     return 0;
3571
3572   /* The type of none suggests that owner is actually deleted.
3573      This should not ever happen.  */
3574   gdb_assert (bl->owner->type != bp_none);
3575
3576   if (bl->loc_type == bp_loc_software_breakpoint
3577       || bl->loc_type == bp_loc_hardware_breakpoint)
3578     {
3579       /* "Normal" instruction breakpoint: either the standard
3580          trap-instruction bp (bp_breakpoint), or a
3581          bp_hardware_breakpoint.  */
3582
3583       /* First check to see if we have to handle an overlay.  */
3584       if (overlay_debugging == ovly_off
3585           || bl->section == NULL
3586           || !(section_is_overlay (bl->section)))
3587         {
3588           /* No overlay handling: just remove the breakpoint.  */
3589           val = bl->owner->ops->remove_location (bl);
3590         }
3591       else
3592         {
3593           /* This breakpoint is in an overlay section.
3594              Did we set a breakpoint at the LMA?  */
3595           if (!overlay_events_enabled)
3596               {
3597                 /* Yes -- overlay event support is not active, so we
3598                    should have set a breakpoint at the LMA.  Remove it.  
3599                 */
3600                 /* Ignore any failures: if the LMA is in ROM, we will
3601                    have already warned when we failed to insert it.  */
3602                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3603                   target_remove_hw_breakpoint (bl->gdbarch,
3604                                                &bl->overlay_target_info);
3605                 else
3606                   target_remove_breakpoint (bl->gdbarch,
3607                                             &bl->overlay_target_info);
3608               }
3609           /* Did we set a breakpoint at the VMA? 
3610              If so, we will have marked the breakpoint 'inserted'.  */
3611           if (bl->inserted)
3612             {
3613               /* Yes -- remove it.  Previously we did not bother to
3614                  remove the breakpoint if the section had been
3615                  unmapped, but let's not rely on that being safe.  We
3616                  don't know what the overlay manager might do.  */
3617
3618               /* However, we should remove *software* breakpoints only
3619                  if the section is still mapped, or else we overwrite
3620                  wrong code with the saved shadow contents.  */
3621               if (bl->loc_type == bp_loc_hardware_breakpoint
3622                   || section_is_mapped (bl->section))
3623                 val = bl->owner->ops->remove_location (bl);
3624               else
3625                 val = 0;
3626             }
3627           else
3628             {
3629               /* No -- not inserted, so no need to remove.  No error.  */
3630               val = 0;
3631             }
3632         }
3633
3634       /* In some cases, we might not be able to remove a breakpoint
3635          in a shared library that has already been removed, but we
3636          have not yet processed the shlib unload event.  */
3637       if (val && solib_name_from_address (bl->pspace, bl->address))
3638         val = 0;
3639
3640       if (val)
3641         return val;
3642       bl->inserted = (is == mark_inserted);
3643     }
3644   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3645     {
3646       gdb_assert (bl->owner->ops != NULL
3647                   && bl->owner->ops->remove_location != NULL);
3648
3649       bl->inserted = (is == mark_inserted);
3650       bl->owner->ops->remove_location (bl);
3651
3652       /* Failure to remove any of the hardware watchpoints comes here.  */
3653       if ((is == mark_uninserted) && (bl->inserted))
3654         warning (_("Could not remove hardware watchpoint %d."),
3655                  bl->owner->number);
3656     }
3657   else if (bl->owner->type == bp_catchpoint
3658            && breakpoint_enabled (bl->owner)
3659            && !bl->duplicate)
3660     {
3661       gdb_assert (bl->owner->ops != NULL
3662                   && bl->owner->ops->remove_location != NULL);
3663
3664       val = bl->owner->ops->remove_location (bl);
3665       if (val)
3666         return val;
3667
3668       bl->inserted = (is == mark_inserted);
3669     }
3670
3671   return 0;
3672 }
3673
3674 static int
3675 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3676 {
3677   int ret;
3678   struct cleanup *old_chain;
3679
3680   /* BL is never in moribund_locations by our callers.  */
3681   gdb_assert (bl->owner != NULL);
3682
3683   if (bl->owner->enable_state == bp_permanent)
3684     /* Permanent breakpoints cannot be inserted or removed.  */
3685     return 0;
3686
3687   /* The type of none suggests that owner is actually deleted.
3688      This should not ever happen.  */
3689   gdb_assert (bl->owner->type != bp_none);
3690
3691   old_chain = save_current_space_and_thread ();
3692
3693   switch_to_program_space_and_thread (bl->pspace);
3694
3695   ret = remove_breakpoint_1 (bl, is);
3696
3697   do_cleanups (old_chain);
3698   return ret;
3699 }
3700
3701 /* Clear the "inserted" flag in all breakpoints.  */
3702
3703 void
3704 mark_breakpoints_out (void)
3705 {
3706   struct bp_location *bl, **blp_tmp;
3707
3708   ALL_BP_LOCATIONS (bl, blp_tmp)
3709     if (bl->pspace == current_program_space)
3710       bl->inserted = 0;
3711 }
3712
3713 /* Clear the "inserted" flag in all breakpoints and delete any
3714    breakpoints which should go away between runs of the program.
3715
3716    Plus other such housekeeping that has to be done for breakpoints
3717    between runs.
3718
3719    Note: this function gets called at the end of a run (by
3720    generic_mourn_inferior) and when a run begins (by
3721    init_wait_for_inferior).  */
3722
3723
3724
3725 void
3726 breakpoint_init_inferior (enum inf_context context)
3727 {
3728   struct breakpoint *b, *b_tmp;
3729   struct bp_location *bl, **blp_tmp;
3730   int ix;
3731   struct program_space *pspace = current_program_space;
3732
3733   /* If breakpoint locations are shared across processes, then there's
3734      nothing to do.  */
3735   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3736     return;
3737
3738   ALL_BP_LOCATIONS (bl, blp_tmp)
3739   {
3740     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3741     if (bl->pspace == pspace
3742         && bl->owner->enable_state != bp_permanent)
3743       bl->inserted = 0;
3744   }
3745
3746   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3747   {
3748     if (b->loc && b->loc->pspace != pspace)
3749       continue;
3750
3751     switch (b->type)
3752       {
3753       case bp_call_dummy:
3754       case bp_longjmp_call_dummy:
3755
3756         /* If the call dummy breakpoint is at the entry point it will
3757            cause problems when the inferior is rerun, so we better get
3758            rid of it.  */
3759
3760       case bp_watchpoint_scope:
3761
3762         /* Also get rid of scope breakpoints.  */
3763
3764       case bp_shlib_event:
3765
3766         /* Also remove solib event breakpoints.  Their addresses may
3767            have changed since the last time we ran the program.
3768            Actually we may now be debugging against different target;
3769            and so the solib backend that installed this breakpoint may
3770            not be used in by the target.  E.g.,
3771
3772            (gdb) file prog-linux
3773            (gdb) run               # native linux target
3774            ...
3775            (gdb) kill
3776            (gdb) file prog-win.exe
3777            (gdb) tar rem :9999     # remote Windows gdbserver.
3778         */
3779
3780       case bp_step_resume:
3781
3782         /* Also remove step-resume breakpoints.  */
3783
3784         delete_breakpoint (b);
3785         break;
3786
3787       case bp_watchpoint:
3788       case bp_hardware_watchpoint:
3789       case bp_read_watchpoint:
3790       case bp_access_watchpoint:
3791         {
3792           struct watchpoint *w = (struct watchpoint *) b;
3793
3794           /* Likewise for watchpoints on local expressions.  */
3795           if (w->exp_valid_block != NULL)
3796             delete_breakpoint (b);
3797           else if (context == inf_starting)
3798             {
3799               /* Reset val field to force reread of starting value in
3800                  insert_breakpoints.  */
3801               if (w->val)
3802                 value_free (w->val);
3803               w->val = NULL;
3804               w->val_valid = 0;
3805           }
3806         }
3807         break;
3808       default:
3809         break;
3810       }
3811   }
3812
3813   /* Get rid of the moribund locations.  */
3814   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3815     decref_bp_location (&bl);
3816   VEC_free (bp_location_p, moribund_locations);
3817 }
3818
3819 /* These functions concern about actual breakpoints inserted in the
3820    target --- to e.g. check if we need to do decr_pc adjustment or if
3821    we need to hop over the bkpt --- so we check for address space
3822    match, not program space.  */
3823
3824 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3825    exists at PC.  It returns ordinary_breakpoint_here if it's an
3826    ordinary breakpoint, or permanent_breakpoint_here if it's a
3827    permanent breakpoint.
3828    - When continuing from a location with an ordinary breakpoint, we
3829      actually single step once before calling insert_breakpoints.
3830    - When continuing from a location with a permanent breakpoint, we
3831      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3832      the target, to advance the PC past the breakpoint.  */
3833
3834 enum breakpoint_here
3835 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3836 {
3837   struct bp_location *bl, **blp_tmp;
3838   int any_breakpoint_here = 0;
3839
3840   ALL_BP_LOCATIONS (bl, blp_tmp)
3841     {
3842       if (bl->loc_type != bp_loc_software_breakpoint
3843           && bl->loc_type != bp_loc_hardware_breakpoint)
3844         continue;
3845
3846       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3847       if ((breakpoint_enabled (bl->owner)
3848            || bl->owner->enable_state == bp_permanent)
3849           && breakpoint_location_address_match (bl, aspace, pc))
3850         {
3851           if (overlay_debugging 
3852               && section_is_overlay (bl->section)
3853               && !section_is_mapped (bl->section))
3854             continue;           /* unmapped overlay -- can't be a match */
3855           else if (bl->owner->enable_state == bp_permanent)
3856             return permanent_breakpoint_here;
3857           else
3858             any_breakpoint_here = 1;
3859         }
3860     }
3861
3862   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3863 }
3864
3865 /* Return true if there's a moribund breakpoint at PC.  */
3866
3867 int
3868 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3869 {
3870   struct bp_location *loc;
3871   int ix;
3872
3873   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3874     if (breakpoint_location_address_match (loc, aspace, pc))
3875       return 1;
3876
3877   return 0;
3878 }
3879
3880 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3881    inserted using regular breakpoint_chain / bp_location array
3882    mechanism.  This does not check for single-step breakpoints, which
3883    are inserted and removed using direct target manipulation.  */
3884
3885 int
3886 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3887                                     CORE_ADDR pc)
3888 {
3889   struct bp_location *bl, **blp_tmp;
3890
3891   ALL_BP_LOCATIONS (bl, blp_tmp)
3892     {
3893       if (bl->loc_type != bp_loc_software_breakpoint
3894           && bl->loc_type != bp_loc_hardware_breakpoint)
3895         continue;
3896
3897       if (bl->inserted
3898           && breakpoint_location_address_match (bl, aspace, pc))
3899         {
3900           if (overlay_debugging 
3901               && section_is_overlay (bl->section)
3902               && !section_is_mapped (bl->section))
3903             continue;           /* unmapped overlay -- can't be a match */
3904           else
3905             return 1;
3906         }
3907     }
3908   return 0;
3909 }
3910
3911 /* Returns non-zero iff there's either regular breakpoint
3912    or a single step breakpoint inserted at PC.  */
3913
3914 int
3915 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3916 {
3917   if (regular_breakpoint_inserted_here_p (aspace, pc))
3918     return 1;
3919
3920   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3921     return 1;
3922
3923   return 0;
3924 }
3925
3926 /* This function returns non-zero iff there is a software breakpoint
3927    inserted at PC.  */
3928
3929 int
3930 software_breakpoint_inserted_here_p (struct address_space *aspace,
3931                                      CORE_ADDR pc)
3932 {
3933   struct bp_location *bl, **blp_tmp;
3934
3935   ALL_BP_LOCATIONS (bl, blp_tmp)
3936     {
3937       if (bl->loc_type != bp_loc_software_breakpoint)
3938         continue;
3939
3940       if (bl->inserted
3941           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3942                                        aspace, pc))
3943         {
3944           if (overlay_debugging 
3945               && section_is_overlay (bl->section)
3946               && !section_is_mapped (bl->section))
3947             continue;           /* unmapped overlay -- can't be a match */
3948           else
3949             return 1;
3950         }
3951     }
3952
3953   /* Also check for software single-step breakpoints.  */
3954   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3955     return 1;
3956
3957   return 0;
3958 }
3959
3960 int
3961 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3962                                        CORE_ADDR addr, ULONGEST len)
3963 {
3964   struct breakpoint *bpt;
3965
3966   ALL_BREAKPOINTS (bpt)
3967     {
3968       struct bp_location *loc;
3969
3970       if (bpt->type != bp_hardware_watchpoint
3971           && bpt->type != bp_access_watchpoint)
3972         continue;
3973
3974       if (!breakpoint_enabled (bpt))
3975         continue;
3976
3977       for (loc = bpt->loc; loc; loc = loc->next)
3978         if (loc->pspace->aspace == aspace && loc->inserted)
3979           {
3980             CORE_ADDR l, h;
3981
3982             /* Check for intersection.  */
3983             l = max (loc->address, addr);
3984             h = min (loc->address + loc->length, addr + len);
3985             if (l < h)
3986               return 1;
3987           }
3988     }
3989   return 0;
3990 }
3991
3992 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3993    PC is valid for process/thread PTID.  */
3994
3995 int
3996 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3997                          ptid_t ptid)
3998 {
3999   struct bp_location *bl, **blp_tmp;
4000   /* The thread and task IDs associated to PTID, computed lazily.  */
4001   int thread = -1;
4002   int task = 0;
4003   
4004   ALL_BP_LOCATIONS (bl, blp_tmp)
4005     {
4006       if (bl->loc_type != bp_loc_software_breakpoint
4007           && bl->loc_type != bp_loc_hardware_breakpoint)
4008         continue;
4009
4010       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4011       if (!breakpoint_enabled (bl->owner)
4012           && bl->owner->enable_state != bp_permanent)
4013         continue;
4014
4015       if (!breakpoint_location_address_match (bl, aspace, pc))
4016         continue;
4017
4018       if (bl->owner->thread != -1)
4019         {
4020           /* This is a thread-specific breakpoint.  Check that ptid
4021              matches that thread.  If thread hasn't been computed yet,
4022              it is now time to do so.  */
4023           if (thread == -1)
4024             thread = pid_to_thread_id (ptid);
4025           if (bl->owner->thread != thread)
4026             continue;
4027         }
4028
4029       if (bl->owner->task != 0)
4030         {
4031           /* This is a task-specific breakpoint.  Check that ptid
4032              matches that task.  If task hasn't been computed yet,
4033              it is now time to do so.  */
4034           if (task == 0)
4035             task = ada_get_task_number (ptid);
4036           if (bl->owner->task != task)
4037             continue;
4038         }
4039
4040       if (overlay_debugging 
4041           && section_is_overlay (bl->section)
4042           && !section_is_mapped (bl->section))
4043         continue;           /* unmapped overlay -- can't be a match */
4044
4045       return 1;
4046     }
4047
4048   return 0;
4049 }
4050 \f
4051
4052 /* bpstat stuff.  External routines' interfaces are documented
4053    in breakpoint.h.  */
4054
4055 int
4056 is_catchpoint (struct breakpoint *ep)
4057 {
4058   return (ep->type == bp_catchpoint);
4059 }
4060
4061 /* Frees any storage that is part of a bpstat.  Does not walk the
4062    'next' chain.  */
4063
4064 static void
4065 bpstat_free (bpstat bs)
4066 {
4067   if (bs->old_val != NULL)
4068     value_free (bs->old_val);
4069   decref_counted_command_line (&bs->commands);
4070   decref_bp_location (&bs->bp_location_at);
4071   xfree (bs);
4072 }
4073
4074 /* Clear a bpstat so that it says we are not at any breakpoint.
4075    Also free any storage that is part of a bpstat.  */
4076
4077 void
4078 bpstat_clear (bpstat *bsp)
4079 {
4080   bpstat p;
4081   bpstat q;
4082
4083   if (bsp == 0)
4084     return;
4085   p = *bsp;
4086   while (p != NULL)
4087     {
4088       q = p->next;
4089       bpstat_free (p);
4090       p = q;
4091     }
4092   *bsp = NULL;
4093 }
4094
4095 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4096    is part of the bpstat is copied as well.  */
4097
4098 bpstat
4099 bpstat_copy (bpstat bs)
4100 {
4101   bpstat p = NULL;
4102   bpstat tmp;
4103   bpstat retval = NULL;
4104
4105   if (bs == NULL)
4106     return bs;
4107
4108   for (; bs != NULL; bs = bs->next)
4109     {
4110       tmp = (bpstat) xmalloc (sizeof (*tmp));
4111       memcpy (tmp, bs, sizeof (*tmp));
4112       incref_counted_command_line (tmp->commands);
4113       incref_bp_location (tmp->bp_location_at);
4114       if (bs->old_val != NULL)
4115         {
4116           tmp->old_val = value_copy (bs->old_val);
4117           release_value (tmp->old_val);
4118         }
4119
4120       if (p == NULL)
4121         /* This is the first thing in the chain.  */
4122         retval = tmp;
4123       else
4124         p->next = tmp;
4125       p = tmp;
4126     }
4127   p->next = NULL;
4128   return retval;
4129 }
4130
4131 /* Find the bpstat associated with this breakpoint.  */
4132
4133 bpstat
4134 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4135 {
4136   if (bsp == NULL)
4137     return NULL;
4138
4139   for (; bsp != NULL; bsp = bsp->next)
4140     {
4141       if (bsp->breakpoint_at == breakpoint)
4142         return bsp;
4143     }
4144   return NULL;
4145 }
4146
4147 /* See breakpoint.h.  */
4148
4149 enum bpstat_signal_value
4150 bpstat_explains_signal (bpstat bsp)
4151 {
4152   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4153
4154   for (; bsp != NULL; bsp = bsp->next)
4155     {
4156       /* Ensure that, if we ever entered this loop, then we at least
4157          return BPSTAT_SIGNAL_HIDE.  */
4158       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4159
4160       if (bsp->breakpoint_at != NULL)
4161         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4162
4163       if (newval > result)
4164         result = newval;
4165     }
4166
4167   return result;
4168 }
4169
4170 /* Put in *NUM the breakpoint number of the first breakpoint we are
4171    stopped at.  *BSP upon return is a bpstat which points to the
4172    remaining breakpoints stopped at (but which is not guaranteed to be
4173    good for anything but further calls to bpstat_num).
4174
4175    Return 0 if passed a bpstat which does not indicate any breakpoints.
4176    Return -1 if stopped at a breakpoint that has been deleted since
4177    we set it.
4178    Return 1 otherwise.  */
4179
4180 int
4181 bpstat_num (bpstat *bsp, int *num)
4182 {
4183   struct breakpoint *b;
4184
4185   if ((*bsp) == NULL)
4186     return 0;                   /* No more breakpoint values */
4187
4188   /* We assume we'll never have several bpstats that correspond to a
4189      single breakpoint -- otherwise, this function might return the
4190      same number more than once and this will look ugly.  */
4191   b = (*bsp)->breakpoint_at;
4192   *bsp = (*bsp)->next;
4193   if (b == NULL)
4194     return -1;                  /* breakpoint that's been deleted since */
4195
4196   *num = b->number;             /* We have its number */
4197   return 1;
4198 }
4199
4200 /* See breakpoint.h.  */
4201
4202 void
4203 bpstat_clear_actions (void)
4204 {
4205   struct thread_info *tp;
4206   bpstat bs;
4207
4208   if (ptid_equal (inferior_ptid, null_ptid))
4209     return;
4210
4211   tp = find_thread_ptid (inferior_ptid);
4212   if (tp == NULL)
4213     return;
4214
4215   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4216     {
4217       decref_counted_command_line (&bs->commands);
4218
4219       if (bs->old_val != NULL)
4220         {
4221           value_free (bs->old_val);
4222           bs->old_val = NULL;
4223         }
4224     }
4225 }
4226
4227 /* Called when a command is about to proceed the inferior.  */
4228
4229 static void
4230 breakpoint_about_to_proceed (void)
4231 {
4232   if (!ptid_equal (inferior_ptid, null_ptid))
4233     {
4234       struct thread_info *tp = inferior_thread ();
4235
4236       /* Allow inferior function calls in breakpoint commands to not
4237          interrupt the command list.  When the call finishes
4238          successfully, the inferior will be standing at the same
4239          breakpoint as if nothing happened.  */
4240       if (tp->control.in_infcall)
4241         return;
4242     }
4243
4244   breakpoint_proceeded = 1;
4245 }
4246
4247 /* Stub for cleaning up our state if we error-out of a breakpoint
4248    command.  */
4249 static void
4250 cleanup_executing_breakpoints (void *ignore)
4251 {
4252   executing_breakpoint_commands = 0;
4253 }
4254
4255 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4256    or its equivalent.  */
4257
4258 static int
4259 command_line_is_silent (struct command_line *cmd)
4260 {
4261   return cmd && (strcmp ("silent", cmd->line) == 0
4262                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4263 }
4264
4265 /* Execute all the commands associated with all the breakpoints at
4266    this location.  Any of these commands could cause the process to
4267    proceed beyond this point, etc.  We look out for such changes by
4268    checking the global "breakpoint_proceeded" after each command.
4269
4270    Returns true if a breakpoint command resumed the inferior.  In that
4271    case, it is the caller's responsibility to recall it again with the
4272    bpstat of the current thread.  */
4273
4274 static int
4275 bpstat_do_actions_1 (bpstat *bsp)
4276 {
4277   bpstat bs;
4278   struct cleanup *old_chain;
4279   int again = 0;
4280
4281   /* Avoid endless recursion if a `source' command is contained
4282      in bs->commands.  */
4283   if (executing_breakpoint_commands)
4284     return 0;
4285
4286   executing_breakpoint_commands = 1;
4287   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4288
4289   prevent_dont_repeat ();
4290
4291   /* This pointer will iterate over the list of bpstat's.  */
4292   bs = *bsp;
4293
4294   breakpoint_proceeded = 0;
4295   for (; bs != NULL; bs = bs->next)
4296     {
4297       struct counted_command_line *ccmd;
4298       struct command_line *cmd;
4299       struct cleanup *this_cmd_tree_chain;
4300
4301       /* Take ownership of the BSP's command tree, if it has one.
4302
4303          The command tree could legitimately contain commands like
4304          'step' and 'next', which call clear_proceed_status, which
4305          frees stop_bpstat's command tree.  To make sure this doesn't
4306          free the tree we're executing out from under us, we need to
4307          take ownership of the tree ourselves.  Since a given bpstat's
4308          commands are only executed once, we don't need to copy it; we
4309          can clear the pointer in the bpstat, and make sure we free
4310          the tree when we're done.  */
4311       ccmd = bs->commands;
4312       bs->commands = NULL;
4313       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4314       cmd = ccmd ? ccmd->commands : NULL;
4315       if (command_line_is_silent (cmd))
4316         {
4317           /* The action has been already done by bpstat_stop_status.  */
4318           cmd = cmd->next;
4319         }
4320
4321       while (cmd != NULL)
4322         {
4323           execute_control_command (cmd);
4324
4325           if (breakpoint_proceeded)
4326             break;
4327           else
4328             cmd = cmd->next;
4329         }
4330
4331       /* We can free this command tree now.  */
4332       do_cleanups (this_cmd_tree_chain);
4333
4334       if (breakpoint_proceeded)
4335         {
4336           if (target_can_async_p ())
4337             /* If we are in async mode, then the target might be still
4338                running, not stopped at any breakpoint, so nothing for
4339                us to do here -- just return to the event loop.  */
4340             ;
4341           else
4342             /* In sync mode, when execute_control_command returns
4343                we're already standing on the next breakpoint.
4344                Breakpoint commands for that stop were not run, since
4345                execute_command does not run breakpoint commands --
4346                only command_line_handler does, but that one is not
4347                involved in execution of breakpoint commands.  So, we
4348                can now execute breakpoint commands.  It should be
4349                noted that making execute_command do bpstat actions is
4350                not an option -- in this case we'll have recursive
4351                invocation of bpstat for each breakpoint with a
4352                command, and can easily blow up GDB stack.  Instead, we
4353                return true, which will trigger the caller to recall us
4354                with the new stop_bpstat.  */
4355             again = 1;
4356           break;
4357         }
4358     }
4359   do_cleanups (old_chain);
4360   return again;
4361 }
4362
4363 void
4364 bpstat_do_actions (void)
4365 {
4366   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4367
4368   /* Do any commands attached to breakpoint we are stopped at.  */
4369   while (!ptid_equal (inferior_ptid, null_ptid)
4370          && target_has_execution
4371          && !is_exited (inferior_ptid)
4372          && !is_executing (inferior_ptid))
4373     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4374        and only return when it is stopped at the next breakpoint, we
4375        keep doing breakpoint actions until it returns false to
4376        indicate the inferior was not resumed.  */
4377     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4378       break;
4379
4380   discard_cleanups (cleanup_if_error);
4381 }
4382
4383 /* Print out the (old or new) value associated with a watchpoint.  */
4384
4385 static void
4386 watchpoint_value_print (struct value *val, struct ui_file *stream)
4387 {
4388   if (val == NULL)
4389     fprintf_unfiltered (stream, _("<unreadable>"));
4390   else
4391     {
4392       struct value_print_options opts;
4393       get_user_print_options (&opts);
4394       value_print (val, stream, &opts);
4395     }
4396 }
4397
4398 /* Generic routine for printing messages indicating why we
4399    stopped.  The behavior of this function depends on the value
4400    'print_it' in the bpstat structure.  Under some circumstances we
4401    may decide not to print anything here and delegate the task to
4402    normal_stop().  */
4403
4404 static enum print_stop_action
4405 print_bp_stop_message (bpstat bs)
4406 {
4407   switch (bs->print_it)
4408     {
4409     case print_it_noop:
4410       /* Nothing should be printed for this bpstat entry.  */
4411       return PRINT_UNKNOWN;
4412       break;
4413
4414     case print_it_done:
4415       /* We still want to print the frame, but we already printed the
4416          relevant messages.  */
4417       return PRINT_SRC_AND_LOC;
4418       break;
4419
4420     case print_it_normal:
4421       {
4422         struct breakpoint *b = bs->breakpoint_at;
4423
4424         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4425            which has since been deleted.  */
4426         if (b == NULL)
4427           return PRINT_UNKNOWN;
4428
4429         /* Normal case.  Call the breakpoint's print_it method.  */
4430         return b->ops->print_it (bs);
4431       }
4432       break;
4433
4434     default:
4435       internal_error (__FILE__, __LINE__,
4436                       _("print_bp_stop_message: unrecognized enum value"));
4437       break;
4438     }
4439 }
4440
4441 /* A helper function that prints a shared library stopped event.  */
4442
4443 static void
4444 print_solib_event (int is_catchpoint)
4445 {
4446   int any_deleted
4447     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4448   int any_added
4449     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4450
4451   if (!is_catchpoint)
4452     {
4453       if (any_added || any_deleted)
4454         ui_out_text (current_uiout,
4455                      _("Stopped due to shared library event:\n"));
4456       else
4457         ui_out_text (current_uiout,
4458                      _("Stopped due to shared library event (no "
4459                        "libraries added or removed)\n"));
4460     }
4461
4462   if (ui_out_is_mi_like_p (current_uiout))
4463     ui_out_field_string (current_uiout, "reason",
4464                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4465
4466   if (any_deleted)
4467     {
4468       struct cleanup *cleanup;
4469       char *name;
4470       int ix;
4471
4472       ui_out_text (current_uiout, _("  Inferior unloaded "));
4473       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4474                                                     "removed");
4475       for (ix = 0;
4476            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4477                         ix, name);
4478            ++ix)
4479         {
4480           if (ix > 0)
4481             ui_out_text (current_uiout, "    ");
4482           ui_out_field_string (current_uiout, "library", name);
4483           ui_out_text (current_uiout, "\n");
4484         }
4485
4486       do_cleanups (cleanup);
4487     }
4488
4489   if (any_added)
4490     {
4491       struct so_list *iter;
4492       int ix;
4493       struct cleanup *cleanup;
4494
4495       ui_out_text (current_uiout, _("  Inferior loaded "));
4496       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4497                                                     "added");
4498       for (ix = 0;
4499            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4500                         ix, iter);
4501            ++ix)
4502         {
4503           if (ix > 0)
4504             ui_out_text (current_uiout, "    ");
4505           ui_out_field_string (current_uiout, "library", iter->so_name);
4506           ui_out_text (current_uiout, "\n");
4507         }
4508
4509       do_cleanups (cleanup);
4510     }
4511 }
4512
4513 /* Print a message indicating what happened.  This is called from
4514    normal_stop().  The input to this routine is the head of the bpstat
4515    list - a list of the eventpoints that caused this stop.  KIND is
4516    the target_waitkind for the stopping event.  This
4517    routine calls the generic print routine for printing a message
4518    about reasons for stopping.  This will print (for example) the
4519    "Breakpoint n," part of the output.  The return value of this
4520    routine is one of:
4521
4522    PRINT_UNKNOWN: Means we printed nothing.
4523    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4524    code to print the location.  An example is 
4525    "Breakpoint 1, " which should be followed by
4526    the location.
4527    PRINT_SRC_ONLY: Means we printed something, but there is no need
4528    to also print the location part of the message.
4529    An example is the catch/throw messages, which
4530    don't require a location appended to the end.
4531    PRINT_NOTHING: We have done some printing and we don't need any 
4532    further info to be printed.  */
4533
4534 enum print_stop_action
4535 bpstat_print (bpstat bs, int kind)
4536 {
4537   int val;
4538
4539   /* Maybe another breakpoint in the chain caused us to stop.
4540      (Currently all watchpoints go on the bpstat whether hit or not.
4541      That probably could (should) be changed, provided care is taken
4542      with respect to bpstat_explains_signal).  */
4543   for (; bs; bs = bs->next)
4544     {
4545       val = print_bp_stop_message (bs);
4546       if (val == PRINT_SRC_ONLY 
4547           || val == PRINT_SRC_AND_LOC 
4548           || val == PRINT_NOTHING)
4549         return val;
4550     }
4551
4552   /* If we had hit a shared library event breakpoint,
4553      print_bp_stop_message would print out this message.  If we hit an
4554      OS-level shared library event, do the same thing.  */
4555   if (kind == TARGET_WAITKIND_LOADED)
4556     {
4557       print_solib_event (0);
4558       return PRINT_NOTHING;
4559     }
4560
4561   /* We reached the end of the chain, or we got a null BS to start
4562      with and nothing was printed.  */
4563   return PRINT_UNKNOWN;
4564 }
4565
4566 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4567    used inside a catch_errors to evaluate the breakpoint condition.
4568    The argument is a "struct expression *" that has been cast to a
4569    "char *" to make it pass through catch_errors.  */
4570
4571 static int
4572 breakpoint_cond_eval (void *exp)
4573 {
4574   struct value *mark = value_mark ();
4575   int i = !value_true (evaluate_expression ((struct expression *) exp));
4576
4577   value_free_to_mark (mark);
4578   return i;
4579 }
4580
4581 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4582
4583 static bpstat
4584 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4585 {
4586   bpstat bs;
4587
4588   bs = (bpstat) xmalloc (sizeof (*bs));
4589   bs->next = NULL;
4590   **bs_link_pointer = bs;
4591   *bs_link_pointer = &bs->next;
4592   bs->breakpoint_at = bl->owner;
4593   bs->bp_location_at = bl;
4594   incref_bp_location (bl);
4595   /* If the condition is false, etc., don't do the commands.  */
4596   bs->commands = NULL;
4597   bs->old_val = NULL;
4598   bs->print_it = print_it_normal;
4599   return bs;
4600 }
4601 \f
4602 /* The target has stopped with waitstatus WS.  Check if any hardware
4603    watchpoints have triggered, according to the target.  */
4604
4605 int
4606 watchpoints_triggered (struct target_waitstatus *ws)
4607 {
4608   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4609   CORE_ADDR addr;
4610   struct breakpoint *b;
4611
4612   if (!stopped_by_watchpoint)
4613     {
4614       /* We were not stopped by a watchpoint.  Mark all watchpoints
4615          as not triggered.  */
4616       ALL_BREAKPOINTS (b)
4617         if (is_hardware_watchpoint (b))
4618           {
4619             struct watchpoint *w = (struct watchpoint *) b;
4620
4621             w->watchpoint_triggered = watch_triggered_no;
4622           }
4623
4624       return 0;
4625     }
4626
4627   if (!target_stopped_data_address (&current_target, &addr))
4628     {
4629       /* We were stopped by a watchpoint, but we don't know where.
4630          Mark all watchpoints as unknown.  */
4631       ALL_BREAKPOINTS (b)
4632         if (is_hardware_watchpoint (b))
4633           {
4634             struct watchpoint *w = (struct watchpoint *) b;
4635
4636             w->watchpoint_triggered = watch_triggered_unknown;
4637           }
4638
4639       return stopped_by_watchpoint;
4640     }
4641
4642   /* The target could report the data address.  Mark watchpoints
4643      affected by this data address as triggered, and all others as not
4644      triggered.  */
4645
4646   ALL_BREAKPOINTS (b)
4647     if (is_hardware_watchpoint (b))
4648       {
4649         struct watchpoint *w = (struct watchpoint *) b;
4650         struct bp_location *loc;
4651
4652         w->watchpoint_triggered = watch_triggered_no;
4653         for (loc = b->loc; loc; loc = loc->next)
4654           {
4655             if (is_masked_watchpoint (b))
4656               {
4657                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4658                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4659
4660                 if (newaddr == start)
4661                   {
4662                     w->watchpoint_triggered = watch_triggered_yes;
4663                     break;
4664                   }
4665               }
4666             /* Exact match not required.  Within range is sufficient.  */
4667             else if (target_watchpoint_addr_within_range (&current_target,
4668                                                          addr, loc->address,
4669                                                          loc->length))
4670               {
4671                 w->watchpoint_triggered = watch_triggered_yes;
4672                 break;
4673               }
4674           }
4675       }
4676
4677   return 1;
4678 }
4679
4680 /* Possible return values for watchpoint_check (this can't be an enum
4681    because of check_errors).  */
4682 /* The watchpoint has been deleted.  */
4683 #define WP_DELETED 1
4684 /* The value has changed.  */
4685 #define WP_VALUE_CHANGED 2
4686 /* The value has not changed.  */
4687 #define WP_VALUE_NOT_CHANGED 3
4688 /* Ignore this watchpoint, no matter if the value changed or not.  */
4689 #define WP_IGNORE 4
4690
4691 #define BP_TEMPFLAG 1
4692 #define BP_HARDWAREFLAG 2
4693
4694 /* Evaluate watchpoint condition expression and check if its value
4695    changed.
4696
4697    P should be a pointer to struct bpstat, but is defined as a void *
4698    in order for this function to be usable with catch_errors.  */
4699
4700 static int
4701 watchpoint_check (void *p)
4702 {
4703   bpstat bs = (bpstat) p;
4704   struct watchpoint *b;
4705   struct frame_info *fr;
4706   int within_current_scope;
4707
4708   /* BS is built from an existing struct breakpoint.  */
4709   gdb_assert (bs->breakpoint_at != NULL);
4710   b = (struct watchpoint *) bs->breakpoint_at;
4711
4712   /* If this is a local watchpoint, we only want to check if the
4713      watchpoint frame is in scope if the current thread is the thread
4714      that was used to create the watchpoint.  */
4715   if (!watchpoint_in_thread_scope (b))
4716     return WP_IGNORE;
4717
4718   if (b->exp_valid_block == NULL)
4719     within_current_scope = 1;
4720   else
4721     {
4722       struct frame_info *frame = get_current_frame ();
4723       struct gdbarch *frame_arch = get_frame_arch (frame);
4724       CORE_ADDR frame_pc = get_frame_pc (frame);
4725
4726       /* in_function_epilogue_p() returns a non-zero value if we're
4727          still in the function but the stack frame has already been
4728          invalidated.  Since we can't rely on the values of local
4729          variables after the stack has been destroyed, we are treating
4730          the watchpoint in that state as `not changed' without further
4731          checking.  Don't mark watchpoints as changed if the current
4732          frame is in an epilogue - even if they are in some other
4733          frame, our view of the stack is likely to be wrong and
4734          frame_find_by_id could error out.  */
4735       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4736         return WP_IGNORE;
4737
4738       fr = frame_find_by_id (b->watchpoint_frame);
4739       within_current_scope = (fr != NULL);
4740
4741       /* If we've gotten confused in the unwinder, we might have
4742          returned a frame that can't describe this variable.  */
4743       if (within_current_scope)
4744         {
4745           struct symbol *function;
4746
4747           function = get_frame_function (fr);
4748           if (function == NULL
4749               || !contained_in (b->exp_valid_block,
4750                                 SYMBOL_BLOCK_VALUE (function)))
4751             within_current_scope = 0;
4752         }
4753
4754       if (within_current_scope)
4755         /* If we end up stopping, the current frame will get selected
4756            in normal_stop.  So this call to select_frame won't affect
4757            the user.  */
4758         select_frame (fr);
4759     }
4760
4761   if (within_current_scope)
4762     {
4763       /* We use value_{,free_to_}mark because it could be a *long*
4764          time before we return to the command level and call
4765          free_all_values.  We can't call free_all_values because we
4766          might be in the middle of evaluating a function call.  */
4767
4768       int pc = 0;
4769       struct value *mark;
4770       struct value *new_val;
4771
4772       if (is_masked_watchpoint (&b->base))
4773         /* Since we don't know the exact trigger address (from
4774            stopped_data_address), just tell the user we've triggered
4775            a mask watchpoint.  */
4776         return WP_VALUE_CHANGED;
4777
4778       mark = value_mark ();
4779       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4780
4781       /* We use value_equal_contents instead of value_equal because
4782          the latter coerces an array to a pointer, thus comparing just
4783          the address of the array instead of its contents.  This is
4784          not what we want.  */
4785       if ((b->val != NULL) != (new_val != NULL)
4786           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4787         {
4788           if (new_val != NULL)
4789             {
4790               release_value (new_val);
4791               value_free_to_mark (mark);
4792             }
4793           bs->old_val = b->val;
4794           b->val = new_val;
4795           b->val_valid = 1;
4796           return WP_VALUE_CHANGED;
4797         }
4798       else
4799         {
4800           /* Nothing changed.  */
4801           value_free_to_mark (mark);
4802           return WP_VALUE_NOT_CHANGED;
4803         }
4804     }
4805   else
4806     {
4807       struct ui_out *uiout = current_uiout;
4808
4809       /* This seems like the only logical thing to do because
4810          if we temporarily ignored the watchpoint, then when
4811          we reenter the block in which it is valid it contains
4812          garbage (in the case of a function, it may have two
4813          garbage values, one before and one after the prologue).
4814          So we can't even detect the first assignment to it and
4815          watch after that (since the garbage may or may not equal
4816          the first value assigned).  */
4817       /* We print all the stop information in
4818          breakpoint_ops->print_it, but in this case, by the time we
4819          call breakpoint_ops->print_it this bp will be deleted
4820          already.  So we have no choice but print the information
4821          here.  */
4822       if (ui_out_is_mi_like_p (uiout))
4823         ui_out_field_string
4824           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4825       ui_out_text (uiout, "\nWatchpoint ");
4826       ui_out_field_int (uiout, "wpnum", b->base.number);
4827       ui_out_text (uiout,
4828                    " deleted because the program has left the block in\n\
4829 which its expression is valid.\n");     
4830
4831       /* Make sure the watchpoint's commands aren't executed.  */
4832       decref_counted_command_line (&b->base.commands);
4833       watchpoint_del_at_next_stop (b);
4834
4835       return WP_DELETED;
4836     }
4837 }
4838
4839 /* Return true if it looks like target has stopped due to hitting
4840    breakpoint location BL.  This function does not check if we should
4841    stop, only if BL explains the stop.  */
4842
4843 static int
4844 bpstat_check_location (const struct bp_location *bl,
4845                        struct address_space *aspace, CORE_ADDR bp_addr,
4846                        const struct target_waitstatus *ws)
4847 {
4848   struct breakpoint *b = bl->owner;
4849
4850   /* BL is from an existing breakpoint.  */
4851   gdb_assert (b != NULL);
4852
4853   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4854 }
4855
4856 /* Determine if the watched values have actually changed, and we
4857    should stop.  If not, set BS->stop to 0.  */
4858
4859 static void
4860 bpstat_check_watchpoint (bpstat bs)
4861 {
4862   const struct bp_location *bl;
4863   struct watchpoint *b;
4864
4865   /* BS is built for existing struct breakpoint.  */
4866   bl = bs->bp_location_at;
4867   gdb_assert (bl != NULL);
4868   b = (struct watchpoint *) bs->breakpoint_at;
4869   gdb_assert (b != NULL);
4870
4871     {
4872       int must_check_value = 0;
4873       
4874       if (b->base.type == bp_watchpoint)
4875         /* For a software watchpoint, we must always check the
4876            watched value.  */
4877         must_check_value = 1;
4878       else if (b->watchpoint_triggered == watch_triggered_yes)
4879         /* We have a hardware watchpoint (read, write, or access)
4880            and the target earlier reported an address watched by
4881            this watchpoint.  */
4882         must_check_value = 1;
4883       else if (b->watchpoint_triggered == watch_triggered_unknown
4884                && b->base.type == bp_hardware_watchpoint)
4885         /* We were stopped by a hardware watchpoint, but the target could
4886            not report the data address.  We must check the watchpoint's
4887            value.  Access and read watchpoints are out of luck; without
4888            a data address, we can't figure it out.  */
4889         must_check_value = 1;
4890
4891       if (must_check_value)
4892         {
4893           char *message
4894             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4895                           b->base.number);
4896           struct cleanup *cleanups = make_cleanup (xfree, message);
4897           int e = catch_errors (watchpoint_check, bs, message,
4898                                 RETURN_MASK_ALL);
4899           do_cleanups (cleanups);
4900           switch (e)
4901             {
4902             case WP_DELETED:
4903               /* We've already printed what needs to be printed.  */
4904               bs->print_it = print_it_done;
4905               /* Stop.  */
4906               break;
4907             case WP_IGNORE:
4908               bs->print_it = print_it_noop;
4909               bs->stop = 0;
4910               break;
4911             case WP_VALUE_CHANGED:
4912               if (b->base.type == bp_read_watchpoint)
4913                 {
4914                   /* There are two cases to consider here:
4915
4916                      1. We're watching the triggered memory for reads.
4917                      In that case, trust the target, and always report
4918                      the watchpoint hit to the user.  Even though
4919                      reads don't cause value changes, the value may
4920                      have changed since the last time it was read, and
4921                      since we're not trapping writes, we will not see
4922                      those, and as such we should ignore our notion of
4923                      old value.
4924
4925                      2. We're watching the triggered memory for both
4926                      reads and writes.  There are two ways this may
4927                      happen:
4928
4929                      2.1. This is a target that can't break on data
4930                      reads only, but can break on accesses (reads or
4931                      writes), such as e.g., x86.  We detect this case
4932                      at the time we try to insert read watchpoints.
4933
4934                      2.2. Otherwise, the target supports read
4935                      watchpoints, but, the user set an access or write
4936                      watchpoint watching the same memory as this read
4937                      watchpoint.
4938
4939                      If we're watching memory writes as well as reads,
4940                      ignore watchpoint hits when we find that the
4941                      value hasn't changed, as reads don't cause
4942                      changes.  This still gives false positives when
4943                      the program writes the same value to memory as
4944                      what there was already in memory (we will confuse
4945                      it for a read), but it's much better than
4946                      nothing.  */
4947
4948                   int other_write_watchpoint = 0;
4949
4950                   if (bl->watchpoint_type == hw_read)
4951                     {
4952                       struct breakpoint *other_b;
4953
4954                       ALL_BREAKPOINTS (other_b)
4955                         if (other_b->type == bp_hardware_watchpoint
4956                             || other_b->type == bp_access_watchpoint)
4957                           {
4958                             struct watchpoint *other_w =
4959                               (struct watchpoint *) other_b;
4960
4961                             if (other_w->watchpoint_triggered
4962                                 == watch_triggered_yes)
4963                               {
4964                                 other_write_watchpoint = 1;
4965                                 break;
4966                               }
4967                           }
4968                     }
4969
4970                   if (other_write_watchpoint
4971                       || bl->watchpoint_type == hw_access)
4972                     {
4973                       /* We're watching the same memory for writes,
4974                          and the value changed since the last time we
4975                          updated it, so this trap must be for a write.
4976                          Ignore it.  */
4977                       bs->print_it = print_it_noop;
4978                       bs->stop = 0;
4979                     }
4980                 }
4981               break;
4982             case WP_VALUE_NOT_CHANGED:
4983               if (b->base.type == bp_hardware_watchpoint
4984                   || b->base.type == bp_watchpoint)
4985                 {
4986                   /* Don't stop: write watchpoints shouldn't fire if
4987                      the value hasn't changed.  */
4988                   bs->print_it = print_it_noop;
4989                   bs->stop = 0;
4990                 }
4991               /* Stop.  */
4992               break;
4993             default:
4994               /* Can't happen.  */
4995             case 0:
4996               /* Error from catch_errors.  */
4997               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4998               watchpoint_del_at_next_stop (b);
4999               /* We've already printed what needs to be printed.  */
5000               bs->print_it = print_it_done;
5001               break;
5002             }
5003         }
5004       else      /* must_check_value == 0 */
5005         {
5006           /* This is a case where some watchpoint(s) triggered, but
5007              not at the address of this watchpoint, or else no
5008              watchpoint triggered after all.  So don't print
5009              anything for this watchpoint.  */
5010           bs->print_it = print_it_noop;
5011           bs->stop = 0;
5012         }
5013     }
5014 }
5015
5016
5017 /* Check conditions (condition proper, frame, thread and ignore count)
5018    of breakpoint referred to by BS.  If we should not stop for this
5019    breakpoint, set BS->stop to 0.  */
5020
5021 static void
5022 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5023 {
5024   int thread_id = pid_to_thread_id (ptid);
5025   const struct bp_location *bl;
5026   struct breakpoint *b;
5027
5028   /* BS is built for existing struct breakpoint.  */
5029   bl = bs->bp_location_at;
5030   gdb_assert (bl != NULL);
5031   b = bs->breakpoint_at;
5032   gdb_assert (b != NULL);
5033
5034   /* Even if the target evaluated the condition on its end and notified GDB, we
5035      need to do so again since GDB does not know if we stopped due to a
5036      breakpoint or a single step breakpoint.  */
5037
5038   if (frame_id_p (b->frame_id)
5039       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5040     bs->stop = 0;
5041   else if (bs->stop)
5042     {
5043       int value_is_zero = 0;
5044       struct expression *cond;
5045
5046       /* Evaluate Python breakpoints that have a "stop"
5047          method implemented.  */
5048       if (b->py_bp_object)
5049         bs->stop = gdbpy_should_stop (b->py_bp_object);
5050
5051       if (is_watchpoint (b))
5052         {
5053           struct watchpoint *w = (struct watchpoint *) b;
5054
5055           cond = w->cond_exp;
5056         }
5057       else
5058         cond = bl->cond;
5059
5060       if (cond && b->disposition != disp_del_at_next_stop)
5061         {
5062           int within_current_scope = 1;
5063           struct watchpoint * w;
5064
5065           /* We use value_mark and value_free_to_mark because it could
5066              be a long time before we return to the command level and
5067              call free_all_values.  We can't call free_all_values
5068              because we might be in the middle of evaluating a
5069              function call.  */
5070           struct value *mark = value_mark ();
5071
5072           if (is_watchpoint (b))
5073             w = (struct watchpoint *) b;
5074           else
5075             w = NULL;
5076
5077           /* Need to select the frame, with all that implies so that
5078              the conditions will have the right context.  Because we
5079              use the frame, we will not see an inlined function's
5080              variables when we arrive at a breakpoint at the start
5081              of the inlined function; the current frame will be the
5082              call site.  */
5083           if (w == NULL || w->cond_exp_valid_block == NULL)
5084             select_frame (get_current_frame ());
5085           else
5086             {
5087               struct frame_info *frame;
5088
5089               /* For local watchpoint expressions, which particular
5090                  instance of a local is being watched matters, so we
5091                  keep track of the frame to evaluate the expression
5092                  in.  To evaluate the condition however, it doesn't
5093                  really matter which instantiation of the function
5094                  where the condition makes sense triggers the
5095                  watchpoint.  This allows an expression like "watch
5096                  global if q > 10" set in `func', catch writes to
5097                  global on all threads that call `func', or catch
5098                  writes on all recursive calls of `func' by a single
5099                  thread.  We simply always evaluate the condition in
5100                  the innermost frame that's executing where it makes
5101                  sense to evaluate the condition.  It seems
5102                  intuitive.  */
5103               frame = block_innermost_frame (w->cond_exp_valid_block);
5104               if (frame != NULL)
5105                 select_frame (frame);
5106               else
5107                 within_current_scope = 0;
5108             }
5109           if (within_current_scope)
5110             value_is_zero
5111               = catch_errors (breakpoint_cond_eval, cond,
5112                               "Error in testing breakpoint condition:\n",
5113                               RETURN_MASK_ALL);
5114           else
5115             {
5116               warning (_("Watchpoint condition cannot be tested "
5117                          "in the current scope"));
5118               /* If we failed to set the right context for this
5119                  watchpoint, unconditionally report it.  */
5120               value_is_zero = 0;
5121             }
5122           /* FIXME-someday, should give breakpoint #.  */
5123           value_free_to_mark (mark);
5124         }
5125
5126       if (cond && value_is_zero)
5127         {
5128           bs->stop = 0;
5129         }
5130       else if (b->thread != -1 && b->thread != thread_id)
5131         {
5132           bs->stop = 0;
5133         }
5134       else if (b->ignore_count > 0)
5135         {
5136           b->ignore_count--;
5137           bs->stop = 0;
5138           /* Increase the hit count even though we don't stop.  */
5139           ++(b->hit_count);
5140           observer_notify_breakpoint_modified (b);
5141         }       
5142     }
5143 }
5144
5145
5146 /* Get a bpstat associated with having just stopped at address
5147    BP_ADDR in thread PTID.
5148
5149    Determine whether we stopped at a breakpoint, etc, or whether we
5150    don't understand this stop.  Result is a chain of bpstat's such
5151    that:
5152
5153    if we don't understand the stop, the result is a null pointer.
5154
5155    if we understand why we stopped, the result is not null.
5156
5157    Each element of the chain refers to a particular breakpoint or
5158    watchpoint at which we have stopped.  (We may have stopped for
5159    several reasons concurrently.)
5160
5161    Each element of the chain has valid next, breakpoint_at,
5162    commands, FIXME??? fields.  */
5163
5164 bpstat
5165 bpstat_stop_status (struct address_space *aspace,
5166                     CORE_ADDR bp_addr, ptid_t ptid,
5167                     const struct target_waitstatus *ws)
5168 {
5169   struct breakpoint *b = NULL;
5170   struct bp_location *bl;
5171   struct bp_location *loc;
5172   /* First item of allocated bpstat's.  */
5173   bpstat bs_head = NULL, *bs_link = &bs_head;
5174   /* Pointer to the last thing in the chain currently.  */
5175   bpstat bs;
5176   int ix;
5177   int need_remove_insert;
5178   int removed_any;
5179
5180   /* First, build the bpstat chain with locations that explain a
5181      target stop, while being careful to not set the target running,
5182      as that may invalidate locations (in particular watchpoint
5183      locations are recreated).  Resuming will happen here with
5184      breakpoint conditions or watchpoint expressions that include
5185      inferior function calls.  */
5186
5187   ALL_BREAKPOINTS (b)
5188     {
5189       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5190         continue;
5191
5192       for (bl = b->loc; bl != NULL; bl = bl->next)
5193         {
5194           /* For hardware watchpoints, we look only at the first
5195              location.  The watchpoint_check function will work on the
5196              entire expression, not the individual locations.  For
5197              read watchpoints, the watchpoints_triggered function has
5198              checked all locations already.  */
5199           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5200             break;
5201
5202           if (!bl->enabled || bl->shlib_disabled)
5203             continue;
5204
5205           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5206             continue;
5207
5208           /* Come here if it's a watchpoint, or if the break address
5209              matches.  */
5210
5211           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5212                                                    explain stop.  */
5213
5214           /* Assume we stop.  Should we find a watchpoint that is not
5215              actually triggered, or if the condition of the breakpoint
5216              evaluates as false, we'll reset 'stop' to 0.  */
5217           bs->stop = 1;
5218           bs->print = 1;
5219
5220           /* If this is a scope breakpoint, mark the associated
5221              watchpoint as triggered so that we will handle the
5222              out-of-scope event.  We'll get to the watchpoint next
5223              iteration.  */
5224           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5225             {
5226               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5227
5228               w->watchpoint_triggered = watch_triggered_yes;
5229             }
5230         }
5231     }
5232
5233   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5234     {
5235       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5236         {
5237           bs = bpstat_alloc (loc, &bs_link);
5238           /* For hits of moribund locations, we should just proceed.  */
5239           bs->stop = 0;
5240           bs->print = 0;
5241           bs->print_it = print_it_noop;
5242         }
5243     }
5244
5245   /* A bit of special processing for shlib breakpoints.  We need to
5246      process solib loading here, so that the lists of loaded and
5247      unloaded libraries are correct before we handle "catch load" and
5248      "catch unload".  */
5249   for (bs = bs_head; bs != NULL; bs = bs->next)
5250     {
5251       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5252         {
5253           handle_solib_event ();
5254           break;
5255         }
5256     }
5257
5258   /* Now go through the locations that caused the target to stop, and
5259      check whether we're interested in reporting this stop to higher
5260      layers, or whether we should resume the target transparently.  */
5261
5262   removed_any = 0;
5263
5264   for (bs = bs_head; bs != NULL; bs = bs->next)
5265     {
5266       if (!bs->stop)
5267         continue;
5268
5269       b = bs->breakpoint_at;
5270       b->ops->check_status (bs);
5271       if (bs->stop)
5272         {
5273           bpstat_check_breakpoint_conditions (bs, ptid);
5274
5275           if (bs->stop)
5276             {
5277               ++(b->hit_count);
5278               observer_notify_breakpoint_modified (b);
5279
5280               /* We will stop here.  */
5281               if (b->disposition == disp_disable)
5282                 {
5283                   --(b->enable_count);
5284                   if (b->enable_count <= 0
5285                       && b->enable_state != bp_permanent)
5286                     b->enable_state = bp_disabled;
5287                   removed_any = 1;
5288                 }
5289               if (b->silent)
5290                 bs->print = 0;
5291               bs->commands = b->commands;
5292               incref_counted_command_line (bs->commands);
5293               if (command_line_is_silent (bs->commands
5294                                           ? bs->commands->commands : NULL))
5295                 bs->print = 0;
5296             }
5297
5298         }
5299
5300       /* Print nothing for this entry if we don't stop or don't
5301          print.  */
5302       if (!bs->stop || !bs->print)
5303         bs->print_it = print_it_noop;
5304     }
5305
5306   /* If we aren't stopping, the value of some hardware watchpoint may
5307      not have changed, but the intermediate memory locations we are
5308      watching may have.  Don't bother if we're stopping; this will get
5309      done later.  */
5310   need_remove_insert = 0;
5311   if (! bpstat_causes_stop (bs_head))
5312     for (bs = bs_head; bs != NULL; bs = bs->next)
5313       if (!bs->stop
5314           && bs->breakpoint_at
5315           && is_hardware_watchpoint (bs->breakpoint_at))
5316         {
5317           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5318
5319           update_watchpoint (w, 0 /* don't reparse.  */);
5320           need_remove_insert = 1;
5321         }
5322
5323   if (need_remove_insert)
5324     update_global_location_list (1);
5325   else if (removed_any)
5326     update_global_location_list (0);
5327
5328   return bs_head;
5329 }
5330
5331 static void
5332 handle_jit_event (void)
5333 {
5334   struct frame_info *frame;
5335   struct gdbarch *gdbarch;
5336
5337   /* Switch terminal for any messages produced by
5338      breakpoint_re_set.  */
5339   target_terminal_ours_for_output ();
5340
5341   frame = get_current_frame ();
5342   gdbarch = get_frame_arch (frame);
5343
5344   jit_event_handler (gdbarch);
5345
5346   target_terminal_inferior ();
5347 }
5348
5349 /* Handle an solib event by calling solib_add.  */
5350
5351 void
5352 handle_solib_event (void)
5353 {
5354   clear_program_space_solib_cache (current_inferior ()->pspace);
5355
5356   /* Check for any newly added shared libraries if we're supposed to
5357      be adding them automatically.  Switch terminal for any messages
5358      produced by breakpoint_re_set.  */
5359   target_terminal_ours_for_output ();
5360 #ifdef SOLIB_ADD
5361   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5362 #else
5363   solib_add (NULL, 0, &current_target, auto_solib_add);
5364 #endif
5365   target_terminal_inferior ();
5366 }
5367
5368 /* Prepare WHAT final decision for infrun.  */
5369
5370 /* Decide what infrun needs to do with this bpstat.  */
5371
5372 struct bpstat_what
5373 bpstat_what (bpstat bs_head)
5374 {
5375   struct bpstat_what retval;
5376   int jit_event = 0;
5377   bpstat bs;
5378
5379   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5380   retval.call_dummy = STOP_NONE;
5381   retval.is_longjmp = 0;
5382
5383   for (bs = bs_head; bs != NULL; bs = bs->next)
5384     {
5385       /* Extract this BS's action.  After processing each BS, we check
5386          if its action overrides all we've seem so far.  */
5387       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5388       enum bptype bptype;
5389
5390       if (bs->breakpoint_at == NULL)
5391         {
5392           /* I suspect this can happen if it was a momentary
5393              breakpoint which has since been deleted.  */
5394           bptype = bp_none;
5395         }
5396       else
5397         bptype = bs->breakpoint_at->type;
5398
5399       switch (bptype)
5400         {
5401         case bp_none:
5402           break;
5403         case bp_breakpoint:
5404         case bp_hardware_breakpoint:
5405         case bp_until:
5406         case bp_finish:
5407         case bp_shlib_event:
5408           if (bs->stop)
5409             {
5410               if (bs->print)
5411                 this_action = BPSTAT_WHAT_STOP_NOISY;
5412               else
5413                 this_action = BPSTAT_WHAT_STOP_SILENT;
5414             }
5415           else
5416             this_action = BPSTAT_WHAT_SINGLE;
5417           break;
5418         case bp_watchpoint:
5419         case bp_hardware_watchpoint:
5420         case bp_read_watchpoint:
5421         case bp_access_watchpoint:
5422           if (bs->stop)
5423             {
5424               if (bs->print)
5425                 this_action = BPSTAT_WHAT_STOP_NOISY;
5426               else
5427                 this_action = BPSTAT_WHAT_STOP_SILENT;
5428             }
5429           else
5430             {
5431               /* There was a watchpoint, but we're not stopping.
5432                  This requires no further action.  */
5433             }
5434           break;
5435         case bp_longjmp:
5436         case bp_longjmp_call_dummy:
5437         case bp_exception:
5438           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5439           retval.is_longjmp = bptype != bp_exception;
5440           break;
5441         case bp_longjmp_resume:
5442         case bp_exception_resume:
5443           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5444           retval.is_longjmp = bptype == bp_longjmp_resume;
5445           break;
5446         case bp_step_resume:
5447           if (bs->stop)
5448             this_action = BPSTAT_WHAT_STEP_RESUME;
5449           else
5450             {
5451               /* It is for the wrong frame.  */
5452               this_action = BPSTAT_WHAT_SINGLE;
5453             }
5454           break;
5455         case bp_hp_step_resume:
5456           if (bs->stop)
5457             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5458           else
5459             {
5460               /* It is for the wrong frame.  */
5461               this_action = BPSTAT_WHAT_SINGLE;
5462             }
5463           break;
5464         case bp_watchpoint_scope:
5465         case bp_thread_event:
5466         case bp_overlay_event:
5467         case bp_longjmp_master:
5468         case bp_std_terminate_master:
5469         case bp_exception_master:
5470           this_action = BPSTAT_WHAT_SINGLE;
5471           break;
5472         case bp_catchpoint:
5473           if (bs->stop)
5474             {
5475               if (bs->print)
5476                 this_action = BPSTAT_WHAT_STOP_NOISY;
5477               else
5478                 this_action = BPSTAT_WHAT_STOP_SILENT;
5479             }
5480           else
5481             {
5482               /* There was a catchpoint, but we're not stopping.
5483                  This requires no further action.  */
5484             }
5485           break;
5486         case bp_jit_event:
5487           jit_event = 1;
5488           this_action = BPSTAT_WHAT_SINGLE;
5489           break;
5490         case bp_call_dummy:
5491           /* Make sure the action is stop (silent or noisy),
5492              so infrun.c pops the dummy frame.  */
5493           retval.call_dummy = STOP_STACK_DUMMY;
5494           this_action = BPSTAT_WHAT_STOP_SILENT;
5495           break;
5496         case bp_std_terminate:
5497           /* Make sure the action is stop (silent or noisy),
5498              so infrun.c pops the dummy frame.  */
5499           retval.call_dummy = STOP_STD_TERMINATE;
5500           this_action = BPSTAT_WHAT_STOP_SILENT;
5501           break;
5502         case bp_tracepoint:
5503         case bp_fast_tracepoint:
5504         case bp_static_tracepoint:
5505           /* Tracepoint hits should not be reported back to GDB, and
5506              if one got through somehow, it should have been filtered
5507              out already.  */
5508           internal_error (__FILE__, __LINE__,
5509                           _("bpstat_what: tracepoint encountered"));
5510           break;
5511         case bp_gnu_ifunc_resolver:
5512           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5513           this_action = BPSTAT_WHAT_SINGLE;
5514           break;
5515         case bp_gnu_ifunc_resolver_return:
5516           /* The breakpoint will be removed, execution will restart from the
5517              PC of the former breakpoint.  */
5518           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5519           break;
5520
5521         case bp_dprintf:
5522           this_action = BPSTAT_WHAT_STOP_SILENT;
5523           break;
5524
5525         default:
5526           internal_error (__FILE__, __LINE__,
5527                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5528         }
5529
5530       retval.main_action = max (retval.main_action, this_action);
5531     }
5532
5533   /* These operations may affect the bs->breakpoint_at state so they are
5534      delayed after MAIN_ACTION is decided above.  */
5535
5536   if (jit_event)
5537     {
5538       if (debug_infrun)
5539         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5540
5541       handle_jit_event ();
5542     }
5543
5544   for (bs = bs_head; bs != NULL; bs = bs->next)
5545     {
5546       struct breakpoint *b = bs->breakpoint_at;
5547
5548       if (b == NULL)
5549         continue;
5550       switch (b->type)
5551         {
5552         case bp_gnu_ifunc_resolver:
5553           gnu_ifunc_resolver_stop (b);
5554           break;
5555         case bp_gnu_ifunc_resolver_return:
5556           gnu_ifunc_resolver_return_stop (b);
5557           break;
5558         }
5559     }
5560
5561   return retval;
5562 }
5563
5564 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5565    without hardware support).  This isn't related to a specific bpstat,
5566    just to things like whether watchpoints are set.  */
5567
5568 int
5569 bpstat_should_step (void)
5570 {
5571   struct breakpoint *b;
5572
5573   ALL_BREAKPOINTS (b)
5574     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5575       return 1;
5576   return 0;
5577 }
5578
5579 int
5580 bpstat_causes_stop (bpstat bs)
5581 {
5582   for (; bs != NULL; bs = bs->next)
5583     if (bs->stop)
5584       return 1;
5585
5586   return 0;
5587 }
5588
5589 \f
5590
5591 /* Compute a string of spaces suitable to indent the next line
5592    so it starts at the position corresponding to the table column
5593    named COL_NAME in the currently active table of UIOUT.  */
5594
5595 static char *
5596 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5597 {
5598   static char wrap_indent[80];
5599   int i, total_width, width, align;
5600   char *text;
5601
5602   total_width = 0;
5603   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5604     {
5605       if (strcmp (text, col_name) == 0)
5606         {
5607           gdb_assert (total_width < sizeof wrap_indent);
5608           memset (wrap_indent, ' ', total_width);
5609           wrap_indent[total_width] = 0;
5610
5611           return wrap_indent;
5612         }
5613
5614       total_width += width + 1;
5615     }
5616
5617   return NULL;
5618 }
5619
5620 /* Determine if the locations of this breakpoint will have their conditions
5621    evaluated by the target, host or a mix of both.  Returns the following:
5622
5623     "host": Host evals condition.
5624     "host or target": Host or Target evals condition.
5625     "target": Target evals condition.
5626 */
5627
5628 static const char *
5629 bp_condition_evaluator (struct breakpoint *b)
5630 {
5631   struct bp_location *bl;
5632   char host_evals = 0;
5633   char target_evals = 0;
5634
5635   if (!b)
5636     return NULL;
5637
5638   if (!is_breakpoint (b))
5639     return NULL;
5640
5641   if (gdb_evaluates_breakpoint_condition_p ()
5642       || !target_supports_evaluation_of_breakpoint_conditions ())
5643     return condition_evaluation_host;
5644
5645   for (bl = b->loc; bl; bl = bl->next)
5646     {
5647       if (bl->cond_bytecode)
5648         target_evals++;
5649       else
5650         host_evals++;
5651     }
5652
5653   if (host_evals && target_evals)
5654     return condition_evaluation_both;
5655   else if (target_evals)
5656     return condition_evaluation_target;
5657   else
5658     return condition_evaluation_host;
5659 }
5660
5661 /* Determine the breakpoint location's condition evaluator.  This is
5662    similar to bp_condition_evaluator, but for locations.  */
5663
5664 static const char *
5665 bp_location_condition_evaluator (struct bp_location *bl)
5666 {
5667   if (bl && !is_breakpoint (bl->owner))
5668     return NULL;
5669
5670   if (gdb_evaluates_breakpoint_condition_p ()
5671       || !target_supports_evaluation_of_breakpoint_conditions ())
5672     return condition_evaluation_host;
5673
5674   if (bl && bl->cond_bytecode)
5675     return condition_evaluation_target;
5676   else
5677     return condition_evaluation_host;
5678 }
5679
5680 /* Print the LOC location out of the list of B->LOC locations.  */
5681
5682 static void
5683 print_breakpoint_location (struct breakpoint *b,
5684                            struct bp_location *loc)
5685 {
5686   struct ui_out *uiout = current_uiout;
5687   struct cleanup *old_chain = save_current_program_space ();
5688
5689   if (loc != NULL && loc->shlib_disabled)
5690     loc = NULL;
5691
5692   if (loc != NULL)
5693     set_current_program_space (loc->pspace);
5694
5695   if (b->display_canonical)
5696     ui_out_field_string (uiout, "what", b->addr_string);
5697   else if (loc && loc->symtab)
5698     {
5699       struct symbol *sym 
5700         = find_pc_sect_function (loc->address, loc->section);
5701       if (sym)
5702         {
5703           ui_out_text (uiout, "in ");
5704           ui_out_field_string (uiout, "func",
5705                                SYMBOL_PRINT_NAME (sym));
5706           ui_out_text (uiout, " ");
5707           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5708           ui_out_text (uiout, "at ");
5709         }
5710       ui_out_field_string (uiout, "file", loc->symtab->filename);
5711       ui_out_text (uiout, ":");
5712       
5713       if (ui_out_is_mi_like_p (uiout))
5714         ui_out_field_string (uiout, "fullname",
5715                              symtab_to_fullname (loc->symtab));
5716       
5717       ui_out_field_int (uiout, "line", loc->line_number);
5718     }
5719   else if (loc)
5720     {
5721       struct ui_file *stb = mem_fileopen ();
5722       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5723
5724       print_address_symbolic (loc->gdbarch, loc->address, stb,
5725                               demangle, "");
5726       ui_out_field_stream (uiout, "at", stb);
5727
5728       do_cleanups (stb_chain);
5729     }
5730   else
5731     ui_out_field_string (uiout, "pending", b->addr_string);
5732
5733   if (loc && is_breakpoint (b)
5734       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5735       && bp_condition_evaluator (b) == condition_evaluation_both)
5736     {
5737       ui_out_text (uiout, " (");
5738       ui_out_field_string (uiout, "evaluated-by",
5739                            bp_location_condition_evaluator (loc));
5740       ui_out_text (uiout, ")");
5741     }
5742
5743   do_cleanups (old_chain);
5744 }
5745
5746 static const char *
5747 bptype_string (enum bptype type)
5748 {
5749   struct ep_type_description
5750     {
5751       enum bptype type;
5752       char *description;
5753     };
5754   static struct ep_type_description bptypes[] =
5755   {
5756     {bp_none, "?deleted?"},
5757     {bp_breakpoint, "breakpoint"},
5758     {bp_hardware_breakpoint, "hw breakpoint"},
5759     {bp_until, "until"},
5760     {bp_finish, "finish"},
5761     {bp_watchpoint, "watchpoint"},
5762     {bp_hardware_watchpoint, "hw watchpoint"},
5763     {bp_read_watchpoint, "read watchpoint"},
5764     {bp_access_watchpoint, "acc watchpoint"},
5765     {bp_longjmp, "longjmp"},
5766     {bp_longjmp_resume, "longjmp resume"},
5767     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5768     {bp_exception, "exception"},
5769     {bp_exception_resume, "exception resume"},
5770     {bp_step_resume, "step resume"},
5771     {bp_hp_step_resume, "high-priority step resume"},
5772     {bp_watchpoint_scope, "watchpoint scope"},
5773     {bp_call_dummy, "call dummy"},
5774     {bp_std_terminate, "std::terminate"},
5775     {bp_shlib_event, "shlib events"},
5776     {bp_thread_event, "thread events"},
5777     {bp_overlay_event, "overlay events"},
5778     {bp_longjmp_master, "longjmp master"},
5779     {bp_std_terminate_master, "std::terminate master"},
5780     {bp_exception_master, "exception master"},
5781     {bp_catchpoint, "catchpoint"},
5782     {bp_tracepoint, "tracepoint"},
5783     {bp_fast_tracepoint, "fast tracepoint"},
5784     {bp_static_tracepoint, "static tracepoint"},
5785     {bp_dprintf, "dprintf"},
5786     {bp_jit_event, "jit events"},
5787     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5788     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5789   };
5790
5791   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5792       || ((int) type != bptypes[(int) type].type))
5793     internal_error (__FILE__, __LINE__,
5794                     _("bptypes table does not describe type #%d."),
5795                     (int) type);
5796
5797   return bptypes[(int) type].description;
5798 }
5799
5800 DEF_VEC_I(int);
5801
5802 /* For MI, output a field named 'thread-groups' with a list as the value.
5803    For CLI, prefix the list with the string 'inf'. */
5804
5805 static void
5806 output_thread_groups (struct ui_out *uiout,
5807                       const char *field_name,
5808                       VEC(int) *inf_num,
5809                       int mi_only)
5810 {
5811   struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
5812                                                                 field_name);
5813   int is_mi = ui_out_is_mi_like_p (uiout);
5814   int inf;
5815   int i;
5816
5817   /* For backward compatibility, don't display inferiors in CLI unless
5818      there are several.  Always display them for MI. */
5819   if (!is_mi && mi_only)
5820     return;
5821
5822   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5823     {
5824       if (is_mi)
5825         {
5826           char mi_group[10];
5827
5828           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5829           ui_out_field_string (uiout, NULL, mi_group);
5830         }
5831       else
5832         {
5833           if (i == 0)
5834             ui_out_text (uiout, " inf ");
5835           else
5836             ui_out_text (uiout, ", ");
5837         
5838           ui_out_text (uiout, plongest (inf));
5839         }
5840     }
5841
5842   do_cleanups (back_to);
5843 }
5844
5845 /* Print B to gdb_stdout.  */
5846
5847 static void
5848 print_one_breakpoint_location (struct breakpoint *b,
5849                                struct bp_location *loc,
5850                                int loc_number,
5851                                struct bp_location **last_loc,
5852                                int allflag)
5853 {
5854   struct command_line *l;
5855   static char bpenables[] = "nynny";
5856
5857   struct ui_out *uiout = current_uiout;
5858   int header_of_multiple = 0;
5859   int part_of_multiple = (loc != NULL);
5860   struct value_print_options opts;
5861
5862   get_user_print_options (&opts);
5863
5864   gdb_assert (!loc || loc_number != 0);
5865   /* See comment in print_one_breakpoint concerning treatment of
5866      breakpoints with single disabled location.  */
5867   if (loc == NULL 
5868       && (b->loc != NULL 
5869           && (b->loc->next != NULL || !b->loc->enabled)))
5870     header_of_multiple = 1;
5871   if (loc == NULL)
5872     loc = b->loc;
5873
5874   annotate_record ();
5875
5876   /* 1 */
5877   annotate_field (0);
5878   if (part_of_multiple)
5879     {
5880       char *formatted;
5881       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5882       ui_out_field_string (uiout, "number", formatted);
5883       xfree (formatted);
5884     }
5885   else
5886     {
5887       ui_out_field_int (uiout, "number", b->number);
5888     }
5889
5890   /* 2 */
5891   annotate_field (1);
5892   if (part_of_multiple)
5893     ui_out_field_skip (uiout, "type");
5894   else
5895     ui_out_field_string (uiout, "type", bptype_string (b->type));
5896
5897   /* 3 */
5898   annotate_field (2);
5899   if (part_of_multiple)
5900     ui_out_field_skip (uiout, "disp");
5901   else
5902     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5903
5904
5905   /* 4 */
5906   annotate_field (3);
5907   if (part_of_multiple)
5908     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5909   else
5910     ui_out_field_fmt (uiout, "enabled", "%c", 
5911                       bpenables[(int) b->enable_state]);
5912   ui_out_spaces (uiout, 2);
5913
5914   
5915   /* 5 and 6 */
5916   if (b->ops != NULL && b->ops->print_one != NULL)
5917     {
5918       /* Although the print_one can possibly print all locations,
5919          calling it here is not likely to get any nice result.  So,
5920          make sure there's just one location.  */
5921       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5922       b->ops->print_one (b, last_loc);
5923     }
5924   else
5925     switch (b->type)
5926       {
5927       case bp_none:
5928         internal_error (__FILE__, __LINE__,
5929                         _("print_one_breakpoint: bp_none encountered\n"));
5930         break;
5931
5932       case bp_watchpoint:
5933       case bp_hardware_watchpoint:
5934       case bp_read_watchpoint:
5935       case bp_access_watchpoint:
5936         {
5937           struct watchpoint *w = (struct watchpoint *) b;
5938
5939           /* Field 4, the address, is omitted (which makes the columns
5940              not line up too nicely with the headers, but the effect
5941              is relatively readable).  */
5942           if (opts.addressprint)
5943             ui_out_field_skip (uiout, "addr");
5944           annotate_field (5);
5945           ui_out_field_string (uiout, "what", w->exp_string);
5946         }
5947         break;
5948
5949       case bp_breakpoint:
5950       case bp_hardware_breakpoint:
5951       case bp_until:
5952       case bp_finish:
5953       case bp_longjmp:
5954       case bp_longjmp_resume:
5955       case bp_longjmp_call_dummy:
5956       case bp_exception:
5957       case bp_exception_resume:
5958       case bp_step_resume:
5959       case bp_hp_step_resume:
5960       case bp_watchpoint_scope:
5961       case bp_call_dummy:
5962       case bp_std_terminate:
5963       case bp_shlib_event:
5964       case bp_thread_event:
5965       case bp_overlay_event:
5966       case bp_longjmp_master:
5967       case bp_std_terminate_master:
5968       case bp_exception_master:
5969       case bp_tracepoint:
5970       case bp_fast_tracepoint:
5971       case bp_static_tracepoint:
5972       case bp_dprintf:
5973       case bp_jit_event:
5974       case bp_gnu_ifunc_resolver:
5975       case bp_gnu_ifunc_resolver_return:
5976         if (opts.addressprint)
5977           {
5978             annotate_field (4);
5979             if (header_of_multiple)
5980               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5981             else if (b->loc == NULL || loc->shlib_disabled)
5982               ui_out_field_string (uiout, "addr", "<PENDING>");
5983             else
5984               ui_out_field_core_addr (uiout, "addr",
5985                                       loc->gdbarch, loc->address);
5986           }
5987         annotate_field (5);
5988         if (!header_of_multiple)
5989           print_breakpoint_location (b, loc);
5990         if (b->loc)
5991           *last_loc = b->loc;
5992         break;
5993       }
5994
5995
5996   if (loc != NULL && !header_of_multiple)
5997     {
5998       struct inferior *inf;
5999       VEC(int) *inf_num = NULL;
6000       int mi_only = 1;
6001
6002       ALL_INFERIORS (inf)
6003         {
6004           if (inf->pspace == loc->pspace)
6005             VEC_safe_push (int, inf_num, inf->num);
6006         }
6007
6008         /* For backward compatibility, don't display inferiors in CLI unless
6009            there are several.  Always display for MI. */
6010         if (allflag
6011             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6012                 && (number_of_program_spaces () > 1
6013                     || number_of_inferiors () > 1)
6014                 /* LOC is for existing B, it cannot be in
6015                    moribund_locations and thus having NULL OWNER.  */
6016                 && loc->owner->type != bp_catchpoint))
6017         mi_only = 0;
6018       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6019       VEC_free (int, inf_num);
6020     }
6021
6022   if (!part_of_multiple)
6023     {
6024       if (b->thread != -1)
6025         {
6026           /* FIXME: This seems to be redundant and lost here; see the
6027              "stop only in" line a little further down.  */
6028           ui_out_text (uiout, " thread ");
6029           ui_out_field_int (uiout, "thread", b->thread);
6030         }
6031       else if (b->task != 0)
6032         {
6033           ui_out_text (uiout, " task ");
6034           ui_out_field_int (uiout, "task", b->task);
6035         }
6036     }
6037
6038   ui_out_text (uiout, "\n");
6039
6040   if (!part_of_multiple)
6041     b->ops->print_one_detail (b, uiout);
6042
6043   if (part_of_multiple && frame_id_p (b->frame_id))
6044     {
6045       annotate_field (6);
6046       ui_out_text (uiout, "\tstop only in stack frame at ");
6047       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6048          the frame ID.  */
6049       ui_out_field_core_addr (uiout, "frame",
6050                               b->gdbarch, b->frame_id.stack_addr);
6051       ui_out_text (uiout, "\n");
6052     }
6053   
6054   if (!part_of_multiple && b->cond_string)
6055     {
6056       annotate_field (7);
6057       if (is_tracepoint (b))
6058         ui_out_text (uiout, "\ttrace only if ");
6059       else
6060         ui_out_text (uiout, "\tstop only if ");
6061       ui_out_field_string (uiout, "cond", b->cond_string);
6062
6063       /* Print whether the target is doing the breakpoint's condition
6064          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6065       if (is_breakpoint (b)
6066           && breakpoint_condition_evaluation_mode ()
6067           == condition_evaluation_target)
6068         {
6069           ui_out_text (uiout, " (");
6070           ui_out_field_string (uiout, "evaluated-by",
6071                                bp_condition_evaluator (b));
6072           ui_out_text (uiout, " evals)");
6073         }
6074       ui_out_text (uiout, "\n");
6075     }
6076
6077   if (!part_of_multiple && b->thread != -1)
6078     {
6079       /* FIXME should make an annotation for this.  */
6080       ui_out_text (uiout, "\tstop only in thread ");
6081       ui_out_field_int (uiout, "thread", b->thread);
6082       ui_out_text (uiout, "\n");
6083     }
6084   
6085   if (!part_of_multiple)
6086     {
6087       if (b->hit_count)
6088         {
6089           /* FIXME should make an annotation for this.  */
6090           if (is_catchpoint (b))
6091             ui_out_text (uiout, "\tcatchpoint");
6092           else if (is_tracepoint (b))
6093             ui_out_text (uiout, "\ttracepoint");
6094           else
6095             ui_out_text (uiout, "\tbreakpoint");
6096           ui_out_text (uiout, " already hit ");
6097           ui_out_field_int (uiout, "times", b->hit_count);
6098           if (b->hit_count == 1)
6099             ui_out_text (uiout, " time\n");
6100           else
6101             ui_out_text (uiout, " times\n");
6102         }
6103       else
6104         {
6105           /* Output the count also if it is zero, but only if this is mi.  */
6106           if (ui_out_is_mi_like_p (uiout))
6107             ui_out_field_int (uiout, "times", b->hit_count);
6108         }
6109     }
6110
6111   if (!part_of_multiple && b->ignore_count)
6112     {
6113       annotate_field (8);
6114       ui_out_text (uiout, "\tignore next ");
6115       ui_out_field_int (uiout, "ignore", b->ignore_count);
6116       ui_out_text (uiout, " hits\n");
6117     }
6118
6119   /* Note that an enable count of 1 corresponds to "enable once"
6120      behavior, which is reported by the combination of enablement and
6121      disposition, so we don't need to mention it here.  */
6122   if (!part_of_multiple && b->enable_count > 1)
6123     {
6124       annotate_field (8);
6125       ui_out_text (uiout, "\tdisable after ");
6126       /* Tweak the wording to clarify that ignore and enable counts
6127          are distinct, and have additive effect.  */
6128       if (b->ignore_count)
6129         ui_out_text (uiout, "additional ");
6130       else
6131         ui_out_text (uiout, "next ");
6132       ui_out_field_int (uiout, "enable", b->enable_count);
6133       ui_out_text (uiout, " hits\n");
6134     }
6135
6136   if (!part_of_multiple && is_tracepoint (b))
6137     {
6138       struct tracepoint *tp = (struct tracepoint *) b;
6139
6140       if (tp->traceframe_usage)
6141         {
6142           ui_out_text (uiout, "\ttrace buffer usage ");
6143           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6144           ui_out_text (uiout, " bytes\n");
6145         }
6146     }
6147
6148   l = b->commands ? b->commands->commands : NULL;
6149   if (!part_of_multiple && l)
6150     {
6151       struct cleanup *script_chain;
6152
6153       annotate_field (9);
6154       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6155       print_command_lines (uiout, l, 4);
6156       do_cleanups (script_chain);
6157     }
6158
6159   if (is_tracepoint (b))
6160     {
6161       struct tracepoint *t = (struct tracepoint *) b;
6162
6163       if (!part_of_multiple && t->pass_count)
6164         {
6165           annotate_field (10);
6166           ui_out_text (uiout, "\tpass count ");
6167           ui_out_field_int (uiout, "pass", t->pass_count);
6168           ui_out_text (uiout, " \n");
6169         }
6170
6171       /* Don't display it when tracepoint or tracepoint location is
6172          pending.   */
6173       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6174         {
6175           annotate_field (11);
6176
6177           if (ui_out_is_mi_like_p (uiout))
6178             ui_out_field_string (uiout, "installed",
6179                                  loc->inserted ? "y" : "n");
6180           else
6181             {
6182               if (loc->inserted)
6183                 ui_out_text (uiout, "\t");
6184               else
6185                 ui_out_text (uiout, "\tnot ");
6186               ui_out_text (uiout, "installed on target\n");
6187             }
6188         }
6189     }
6190
6191   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6192     {
6193       if (is_watchpoint (b))
6194         {
6195           struct watchpoint *w = (struct watchpoint *) b;
6196
6197           ui_out_field_string (uiout, "original-location", w->exp_string);
6198         }
6199       else if (b->addr_string)
6200         ui_out_field_string (uiout, "original-location", b->addr_string);
6201     }
6202 }
6203
6204 static void
6205 print_one_breakpoint (struct breakpoint *b,
6206                       struct bp_location **last_loc, 
6207                       int allflag)
6208 {
6209   struct cleanup *bkpt_chain;
6210   struct ui_out *uiout = current_uiout;
6211
6212   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6213
6214   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6215   do_cleanups (bkpt_chain);
6216
6217   /* If this breakpoint has custom print function,
6218      it's already printed.  Otherwise, print individual
6219      locations, if any.  */
6220   if (b->ops == NULL || b->ops->print_one == NULL)
6221     {
6222       /* If breakpoint has a single location that is disabled, we
6223          print it as if it had several locations, since otherwise it's
6224          hard to represent "breakpoint enabled, location disabled"
6225          situation.
6226
6227          Note that while hardware watchpoints have several locations
6228          internally, that's not a property exposed to user.  */
6229       if (b->loc 
6230           && !is_hardware_watchpoint (b)
6231           && (b->loc->next || !b->loc->enabled))
6232         {
6233           struct bp_location *loc;
6234           int n = 1;
6235
6236           for (loc = b->loc; loc; loc = loc->next, ++n)
6237             {
6238               struct cleanup *inner2 =
6239                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6240               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6241               do_cleanups (inner2);
6242             }
6243         }
6244     }
6245 }
6246
6247 static int
6248 breakpoint_address_bits (struct breakpoint *b)
6249 {
6250   int print_address_bits = 0;
6251   struct bp_location *loc;
6252
6253   for (loc = b->loc; loc; loc = loc->next)
6254     {
6255       int addr_bit;
6256
6257       /* Software watchpoints that aren't watching memory don't have
6258          an address to print.  */
6259       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6260         continue;
6261
6262       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6263       if (addr_bit > print_address_bits)
6264         print_address_bits = addr_bit;
6265     }
6266
6267   return print_address_bits;
6268 }
6269
6270 struct captured_breakpoint_query_args
6271   {
6272     int bnum;
6273   };
6274
6275 static int
6276 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6277 {
6278   struct captured_breakpoint_query_args *args = data;
6279   struct breakpoint *b;
6280   struct bp_location *dummy_loc = NULL;
6281
6282   ALL_BREAKPOINTS (b)
6283     {
6284       if (args->bnum == b->number)
6285         {
6286           print_one_breakpoint (b, &dummy_loc, 0);
6287           return GDB_RC_OK;
6288         }
6289     }
6290   return GDB_RC_NONE;
6291 }
6292
6293 enum gdb_rc
6294 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6295                       char **error_message)
6296 {
6297   struct captured_breakpoint_query_args args;
6298
6299   args.bnum = bnum;
6300   /* For the moment we don't trust print_one_breakpoint() to not throw
6301      an error.  */
6302   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6303                                  error_message, RETURN_MASK_ALL) < 0)
6304     return GDB_RC_FAIL;
6305   else
6306     return GDB_RC_OK;
6307 }
6308
6309 /* Return true if this breakpoint was set by the user, false if it is
6310    internal or momentary.  */
6311
6312 int
6313 user_breakpoint_p (struct breakpoint *b)
6314 {
6315   return b->number > 0;
6316 }
6317
6318 /* Print information on user settable breakpoint (watchpoint, etc)
6319    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6320    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6321    FILTER is non-NULL, call it on each breakpoint and only include the
6322    ones for which it returns non-zero.  Return the total number of
6323    breakpoints listed.  */
6324
6325 static int
6326 breakpoint_1 (char *args, int allflag, 
6327               int (*filter) (const struct breakpoint *))
6328 {
6329   struct breakpoint *b;
6330   struct bp_location *last_loc = NULL;
6331   int nr_printable_breakpoints;
6332   struct cleanup *bkpttbl_chain;
6333   struct value_print_options opts;
6334   int print_address_bits = 0;
6335   int print_type_col_width = 14;
6336   struct ui_out *uiout = current_uiout;
6337
6338   get_user_print_options (&opts);
6339
6340   /* Compute the number of rows in the table, as well as the size
6341      required for address fields.  */
6342   nr_printable_breakpoints = 0;
6343   ALL_BREAKPOINTS (b)
6344     {
6345       /* If we have a filter, only list the breakpoints it accepts.  */
6346       if (filter && !filter (b))
6347         continue;
6348
6349       /* If we have an "args" string, it is a list of breakpoints to 
6350          accept.  Skip the others.  */
6351       if (args != NULL && *args != '\0')
6352         {
6353           if (allflag && parse_and_eval_long (args) != b->number)
6354             continue;
6355           if (!allflag && !number_is_in_list (args, b->number))
6356             continue;
6357         }
6358
6359       if (allflag || user_breakpoint_p (b))
6360         {
6361           int addr_bit, type_len;
6362
6363           addr_bit = breakpoint_address_bits (b);
6364           if (addr_bit > print_address_bits)
6365             print_address_bits = addr_bit;
6366
6367           type_len = strlen (bptype_string (b->type));
6368           if (type_len > print_type_col_width)
6369             print_type_col_width = type_len;
6370
6371           nr_printable_breakpoints++;
6372         }
6373     }
6374
6375   if (opts.addressprint)
6376     bkpttbl_chain 
6377       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6378                                              nr_printable_breakpoints,
6379                                              "BreakpointTable");
6380   else
6381     bkpttbl_chain 
6382       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6383                                              nr_printable_breakpoints,
6384                                              "BreakpointTable");
6385
6386   if (nr_printable_breakpoints > 0)
6387     annotate_breakpoints_headers ();
6388   if (nr_printable_breakpoints > 0)
6389     annotate_field (0);
6390   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6391   if (nr_printable_breakpoints > 0)
6392     annotate_field (1);
6393   ui_out_table_header (uiout, print_type_col_width, ui_left,
6394                        "type", "Type");                         /* 2 */
6395   if (nr_printable_breakpoints > 0)
6396     annotate_field (2);
6397   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6398   if (nr_printable_breakpoints > 0)
6399     annotate_field (3);
6400   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6401   if (opts.addressprint)
6402     {
6403       if (nr_printable_breakpoints > 0)
6404         annotate_field (4);
6405       if (print_address_bits <= 32)
6406         ui_out_table_header (uiout, 10, ui_left, 
6407                              "addr", "Address");                /* 5 */
6408       else
6409         ui_out_table_header (uiout, 18, ui_left, 
6410                              "addr", "Address");                /* 5 */
6411     }
6412   if (nr_printable_breakpoints > 0)
6413     annotate_field (5);
6414   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6415   ui_out_table_body (uiout);
6416   if (nr_printable_breakpoints > 0)
6417     annotate_breakpoints_table ();
6418
6419   ALL_BREAKPOINTS (b)
6420     {
6421       QUIT;
6422       /* If we have a filter, only list the breakpoints it accepts.  */
6423       if (filter && !filter (b))
6424         continue;
6425
6426       /* If we have an "args" string, it is a list of breakpoints to 
6427          accept.  Skip the others.  */
6428
6429       if (args != NULL && *args != '\0')
6430         {
6431           if (allflag)  /* maintenance info breakpoint */
6432             {
6433               if (parse_and_eval_long (args) != b->number)
6434                 continue;
6435             }
6436           else          /* all others */
6437             {
6438               if (!number_is_in_list (args, b->number))
6439                 continue;
6440             }
6441         }
6442       /* We only print out user settable breakpoints unless the
6443          allflag is set.  */
6444       if (allflag || user_breakpoint_p (b))
6445         print_one_breakpoint (b, &last_loc, allflag);
6446     }
6447
6448   do_cleanups (bkpttbl_chain);
6449
6450   if (nr_printable_breakpoints == 0)
6451     {
6452       /* If there's a filter, let the caller decide how to report
6453          empty list.  */
6454       if (!filter)
6455         {
6456           if (args == NULL || *args == '\0')
6457             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6458           else
6459             ui_out_message (uiout, 0, 
6460                             "No breakpoint or watchpoint matching '%s'.\n",
6461                             args);
6462         }
6463     }
6464   else
6465     {
6466       if (last_loc && !server_command)
6467         set_next_address (last_loc->gdbarch, last_loc->address);
6468     }
6469
6470   /* FIXME?  Should this be moved up so that it is only called when
6471      there have been breakpoints? */
6472   annotate_breakpoints_table_end ();
6473
6474   return nr_printable_breakpoints;
6475 }
6476
6477 /* Display the value of default-collect in a way that is generally
6478    compatible with the breakpoint list.  */
6479
6480 static void
6481 default_collect_info (void)
6482 {
6483   struct ui_out *uiout = current_uiout;
6484
6485   /* If it has no value (which is frequently the case), say nothing; a
6486      message like "No default-collect." gets in user's face when it's
6487      not wanted.  */
6488   if (!*default_collect)
6489     return;
6490
6491   /* The following phrase lines up nicely with per-tracepoint collect
6492      actions.  */
6493   ui_out_text (uiout, "default collect ");
6494   ui_out_field_string (uiout, "default-collect", default_collect);
6495   ui_out_text (uiout, " \n");
6496 }
6497   
6498 static void
6499 breakpoints_info (char *args, int from_tty)
6500 {
6501   breakpoint_1 (args, 0, NULL);
6502
6503   default_collect_info ();
6504 }
6505
6506 static void
6507 watchpoints_info (char *args, int from_tty)
6508 {
6509   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6510   struct ui_out *uiout = current_uiout;
6511
6512   if (num_printed == 0)
6513     {
6514       if (args == NULL || *args == '\0')
6515         ui_out_message (uiout, 0, "No watchpoints.\n");
6516       else
6517         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6518     }
6519 }
6520
6521 static void
6522 maintenance_info_breakpoints (char *args, int from_tty)
6523 {
6524   breakpoint_1 (args, 1, NULL);
6525
6526   default_collect_info ();
6527 }
6528
6529 static int
6530 breakpoint_has_pc (struct breakpoint *b,
6531                    struct program_space *pspace,
6532                    CORE_ADDR pc, struct obj_section *section)
6533 {
6534   struct bp_location *bl = b->loc;
6535
6536   for (; bl; bl = bl->next)
6537     {
6538       if (bl->pspace == pspace
6539           && bl->address == pc
6540           && (!overlay_debugging || bl->section == section))
6541         return 1;         
6542     }
6543   return 0;
6544 }
6545
6546 /* Print a message describing any user-breakpoints set at PC.  This
6547    concerns with logical breakpoints, so we match program spaces, not
6548    address spaces.  */
6549
6550 static void
6551 describe_other_breakpoints (struct gdbarch *gdbarch,
6552                             struct program_space *pspace, CORE_ADDR pc,
6553                             struct obj_section *section, int thread)
6554 {
6555   int others = 0;
6556   struct breakpoint *b;
6557
6558   ALL_BREAKPOINTS (b)
6559     others += (user_breakpoint_p (b)
6560                && breakpoint_has_pc (b, pspace, pc, section));
6561   if (others > 0)
6562     {
6563       if (others == 1)
6564         printf_filtered (_("Note: breakpoint "));
6565       else /* if (others == ???) */
6566         printf_filtered (_("Note: breakpoints "));
6567       ALL_BREAKPOINTS (b)
6568         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6569           {
6570             others--;
6571             printf_filtered ("%d", b->number);
6572             if (b->thread == -1 && thread != -1)
6573               printf_filtered (" (all threads)");
6574             else if (b->thread != -1)
6575               printf_filtered (" (thread %d)", b->thread);
6576             printf_filtered ("%s%s ",
6577                              ((b->enable_state == bp_disabled
6578                                || b->enable_state == bp_call_disabled)
6579                               ? " (disabled)"
6580                               : b->enable_state == bp_permanent 
6581                               ? " (permanent)"
6582                               : ""),
6583                              (others > 1) ? "," 
6584                              : ((others == 1) ? " and" : ""));
6585           }
6586       printf_filtered (_("also set at pc "));
6587       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6588       printf_filtered (".\n");
6589     }
6590 }
6591 \f
6592
6593 /* Return true iff it is meaningful to use the address member of
6594    BPT.  For some breakpoint types, the address member is irrelevant
6595    and it makes no sense to attempt to compare it to other addresses
6596    (or use it for any other purpose either).
6597
6598    More specifically, each of the following breakpoint types will
6599    always have a zero valued address and we don't want to mark
6600    breakpoints of any of these types to be a duplicate of an actual
6601    breakpoint at address zero:
6602
6603       bp_watchpoint
6604       bp_catchpoint
6605
6606 */
6607
6608 static int
6609 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6610 {
6611   enum bptype type = bpt->type;
6612
6613   return (type != bp_watchpoint && type != bp_catchpoint);
6614 }
6615
6616 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6617    true if LOC1 and LOC2 represent the same watchpoint location.  */
6618
6619 static int
6620 watchpoint_locations_match (struct bp_location *loc1, 
6621                             struct bp_location *loc2)
6622 {
6623   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6624   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6625
6626   /* Both of them must exist.  */
6627   gdb_assert (w1 != NULL);
6628   gdb_assert (w2 != NULL);
6629
6630   /* If the target can evaluate the condition expression in hardware,
6631      then we we need to insert both watchpoints even if they are at
6632      the same place.  Otherwise the watchpoint will only trigger when
6633      the condition of whichever watchpoint was inserted evaluates to
6634      true, not giving a chance for GDB to check the condition of the
6635      other watchpoint.  */
6636   if ((w1->cond_exp
6637        && target_can_accel_watchpoint_condition (loc1->address, 
6638                                                  loc1->length,
6639                                                  loc1->watchpoint_type,
6640                                                  w1->cond_exp))
6641       || (w2->cond_exp
6642           && target_can_accel_watchpoint_condition (loc2->address, 
6643                                                     loc2->length,
6644                                                     loc2->watchpoint_type,
6645                                                     w2->cond_exp)))
6646     return 0;
6647
6648   /* Note that this checks the owner's type, not the location's.  In
6649      case the target does not support read watchpoints, but does
6650      support access watchpoints, we'll have bp_read_watchpoint
6651      watchpoints with hw_access locations.  Those should be considered
6652      duplicates of hw_read locations.  The hw_read locations will
6653      become hw_access locations later.  */
6654   return (loc1->owner->type == loc2->owner->type
6655           && loc1->pspace->aspace == loc2->pspace->aspace
6656           && loc1->address == loc2->address
6657           && loc1->length == loc2->length);
6658 }
6659
6660 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6661    same breakpoint location.  In most targets, this can only be true
6662    if ASPACE1 matches ASPACE2.  On targets that have global
6663    breakpoints, the address space doesn't really matter.  */
6664
6665 static int
6666 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6667                           struct address_space *aspace2, CORE_ADDR addr2)
6668 {
6669   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6670            || aspace1 == aspace2)
6671           && addr1 == addr2);
6672 }
6673
6674 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6675    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6676    matches ASPACE2.  On targets that have global breakpoints, the address
6677    space doesn't really matter.  */
6678
6679 static int
6680 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6681                                 int len1, struct address_space *aspace2,
6682                                 CORE_ADDR addr2)
6683 {
6684   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6685            || aspace1 == aspace2)
6686           && addr2 >= addr1 && addr2 < addr1 + len1);
6687 }
6688
6689 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6690    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6691    matches the breakpoint's address space.  On targets that have global
6692    breakpoints, the address space doesn't really matter.  */
6693
6694 static int
6695 breakpoint_location_address_match (struct bp_location *bl,
6696                                    struct address_space *aspace,
6697                                    CORE_ADDR addr)
6698 {
6699   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6700                                     aspace, addr)
6701           || (bl->length
6702               && breakpoint_address_match_range (bl->pspace->aspace,
6703                                                  bl->address, bl->length,
6704                                                  aspace, addr)));
6705 }
6706
6707 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6708    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6709    true, otherwise returns false.  */
6710
6711 static int
6712 tracepoint_locations_match (struct bp_location *loc1,
6713                             struct bp_location *loc2)
6714 {
6715   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6716     /* Since tracepoint locations are never duplicated with others', tracepoint
6717        locations at the same address of different tracepoints are regarded as
6718        different locations.  */
6719     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6720   else
6721     return 0;
6722 }
6723
6724 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6725    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6726    represent the same location.  */
6727
6728 static int
6729 breakpoint_locations_match (struct bp_location *loc1, 
6730                             struct bp_location *loc2)
6731 {
6732   int hw_point1, hw_point2;
6733
6734   /* Both of them must not be in moribund_locations.  */
6735   gdb_assert (loc1->owner != NULL);
6736   gdb_assert (loc2->owner != NULL);
6737
6738   hw_point1 = is_hardware_watchpoint (loc1->owner);
6739   hw_point2 = is_hardware_watchpoint (loc2->owner);
6740
6741   if (hw_point1 != hw_point2)
6742     return 0;
6743   else if (hw_point1)
6744     return watchpoint_locations_match (loc1, loc2);
6745   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6746     return tracepoint_locations_match (loc1, loc2);
6747   else
6748     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6749     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6750                                      loc2->pspace->aspace, loc2->address)
6751             && loc1->length == loc2->length);
6752 }
6753
6754 static void
6755 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6756                                int bnum, int have_bnum)
6757 {
6758   /* The longest string possibly returned by hex_string_custom
6759      is 50 chars.  These must be at least that big for safety.  */
6760   char astr1[64];
6761   char astr2[64];
6762
6763   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6764   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6765   if (have_bnum)
6766     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6767              bnum, astr1, astr2);
6768   else
6769     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6770 }
6771
6772 /* Adjust a breakpoint's address to account for architectural
6773    constraints on breakpoint placement.  Return the adjusted address.
6774    Note: Very few targets require this kind of adjustment.  For most
6775    targets, this function is simply the identity function.  */
6776
6777 static CORE_ADDR
6778 adjust_breakpoint_address (struct gdbarch *gdbarch,
6779                            CORE_ADDR bpaddr, enum bptype bptype)
6780 {
6781   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6782     {
6783       /* Very few targets need any kind of breakpoint adjustment.  */
6784       return bpaddr;
6785     }
6786   else if (bptype == bp_watchpoint
6787            || bptype == bp_hardware_watchpoint
6788            || bptype == bp_read_watchpoint
6789            || bptype == bp_access_watchpoint
6790            || bptype == bp_catchpoint)
6791     {
6792       /* Watchpoints and the various bp_catch_* eventpoints should not
6793          have their addresses modified.  */
6794       return bpaddr;
6795     }
6796   else
6797     {
6798       CORE_ADDR adjusted_bpaddr;
6799
6800       /* Some targets have architectural constraints on the placement
6801          of breakpoint instructions.  Obtain the adjusted address.  */
6802       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6803
6804       /* An adjusted breakpoint address can significantly alter
6805          a user's expectations.  Print a warning if an adjustment
6806          is required.  */
6807       if (adjusted_bpaddr != bpaddr)
6808         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6809
6810       return adjusted_bpaddr;
6811     }
6812 }
6813
6814 void
6815 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6816                   struct breakpoint *owner)
6817 {
6818   memset (loc, 0, sizeof (*loc));
6819
6820   gdb_assert (ops != NULL);
6821
6822   loc->ops = ops;
6823   loc->owner = owner;
6824   loc->cond = NULL;
6825   loc->cond_bytecode = NULL;
6826   loc->shlib_disabled = 0;
6827   loc->enabled = 1;
6828
6829   switch (owner->type)
6830     {
6831     case bp_breakpoint:
6832     case bp_until:
6833     case bp_finish:
6834     case bp_longjmp:
6835     case bp_longjmp_resume:
6836     case bp_longjmp_call_dummy:
6837     case bp_exception:
6838     case bp_exception_resume:
6839     case bp_step_resume:
6840     case bp_hp_step_resume:
6841     case bp_watchpoint_scope:
6842     case bp_call_dummy:
6843     case bp_std_terminate:
6844     case bp_shlib_event:
6845     case bp_thread_event:
6846     case bp_overlay_event:
6847     case bp_jit_event:
6848     case bp_longjmp_master:
6849     case bp_std_terminate_master:
6850     case bp_exception_master:
6851     case bp_gnu_ifunc_resolver:
6852     case bp_gnu_ifunc_resolver_return:
6853     case bp_dprintf:
6854       loc->loc_type = bp_loc_software_breakpoint;
6855       mark_breakpoint_location_modified (loc);
6856       break;
6857     case bp_hardware_breakpoint:
6858       loc->loc_type = bp_loc_hardware_breakpoint;
6859       mark_breakpoint_location_modified (loc);
6860       break;
6861     case bp_hardware_watchpoint:
6862     case bp_read_watchpoint:
6863     case bp_access_watchpoint:
6864       loc->loc_type = bp_loc_hardware_watchpoint;
6865       break;
6866     case bp_watchpoint:
6867     case bp_catchpoint:
6868     case bp_tracepoint:
6869     case bp_fast_tracepoint:
6870     case bp_static_tracepoint:
6871       loc->loc_type = bp_loc_other;
6872       break;
6873     default:
6874       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6875     }
6876
6877   loc->refc = 1;
6878 }
6879
6880 /* Allocate a struct bp_location.  */
6881
6882 static struct bp_location *
6883 allocate_bp_location (struct breakpoint *bpt)
6884 {
6885   return bpt->ops->allocate_location (bpt);
6886 }
6887
6888 static void
6889 free_bp_location (struct bp_location *loc)
6890 {
6891   loc->ops->dtor (loc);
6892   xfree (loc);
6893 }
6894
6895 /* Increment reference count.  */
6896
6897 static void
6898 incref_bp_location (struct bp_location *bl)
6899 {
6900   ++bl->refc;
6901 }
6902
6903 /* Decrement reference count.  If the reference count reaches 0,
6904    destroy the bp_location.  Sets *BLP to NULL.  */
6905
6906 static void
6907 decref_bp_location (struct bp_location **blp)
6908 {
6909   gdb_assert ((*blp)->refc > 0);
6910
6911   if (--(*blp)->refc == 0)
6912     free_bp_location (*blp);
6913   *blp = NULL;
6914 }
6915
6916 /* Add breakpoint B at the end of the global breakpoint chain.  */
6917
6918 static void
6919 add_to_breakpoint_chain (struct breakpoint *b)
6920 {
6921   struct breakpoint *b1;
6922
6923   /* Add this breakpoint to the end of the chain so that a list of
6924      breakpoints will come out in order of increasing numbers.  */
6925
6926   b1 = breakpoint_chain;
6927   if (b1 == 0)
6928     breakpoint_chain = b;
6929   else
6930     {
6931       while (b1->next)
6932         b1 = b1->next;
6933       b1->next = b;
6934     }
6935 }
6936
6937 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6938
6939 static void
6940 init_raw_breakpoint_without_location (struct breakpoint *b,
6941                                       struct gdbarch *gdbarch,
6942                                       enum bptype bptype,
6943                                       const struct breakpoint_ops *ops)
6944 {
6945   memset (b, 0, sizeof (*b));
6946
6947   gdb_assert (ops != NULL);
6948
6949   b->ops = ops;
6950   b->type = bptype;
6951   b->gdbarch = gdbarch;
6952   b->language = current_language->la_language;
6953   b->input_radix = input_radix;
6954   b->thread = -1;
6955   b->enable_state = bp_enabled;
6956   b->next = 0;
6957   b->silent = 0;
6958   b->ignore_count = 0;
6959   b->commands = NULL;
6960   b->frame_id = null_frame_id;
6961   b->condition_not_parsed = 0;
6962   b->py_bp_object = NULL;
6963   b->related_breakpoint = b;
6964 }
6965
6966 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6967    that has type BPTYPE and has no locations as yet.  */
6968
6969 static struct breakpoint *
6970 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6971                                      enum bptype bptype,
6972                                      const struct breakpoint_ops *ops)
6973 {
6974   struct breakpoint *b = XNEW (struct breakpoint);
6975
6976   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6977   add_to_breakpoint_chain (b);
6978   return b;
6979 }
6980
6981 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6982    resolutions should be made as the user specified the location explicitly
6983    enough.  */
6984
6985 static void
6986 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6987 {
6988   gdb_assert (loc->owner != NULL);
6989
6990   if (loc->owner->type == bp_breakpoint
6991       || loc->owner->type == bp_hardware_breakpoint
6992       || is_tracepoint (loc->owner))
6993     {
6994       int is_gnu_ifunc;
6995       const char *function_name;
6996       CORE_ADDR func_addr;
6997
6998       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6999                                           &func_addr, NULL, &is_gnu_ifunc);
7000
7001       if (is_gnu_ifunc && !explicit_loc)
7002         {
7003           struct breakpoint *b = loc->owner;
7004
7005           gdb_assert (loc->pspace == current_program_space);
7006           if (gnu_ifunc_resolve_name (function_name,
7007                                       &loc->requested_address))
7008             {
7009               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7010               loc->address = adjust_breakpoint_address (loc->gdbarch,
7011                                                         loc->requested_address,
7012                                                         b->type);
7013             }
7014           else if (b->type == bp_breakpoint && b->loc == loc
7015                    && loc->next == NULL && b->related_breakpoint == b)
7016             {
7017               /* Create only the whole new breakpoint of this type but do not
7018                  mess more complicated breakpoints with multiple locations.  */
7019               b->type = bp_gnu_ifunc_resolver;
7020               /* Remember the resolver's address for use by the return
7021                  breakpoint.  */
7022               loc->related_address = func_addr;
7023             }
7024         }
7025
7026       if (function_name)
7027         loc->function_name = xstrdup (function_name);
7028     }
7029 }
7030
7031 /* Attempt to determine architecture of location identified by SAL.  */
7032 struct gdbarch *
7033 get_sal_arch (struct symtab_and_line sal)
7034 {
7035   if (sal.section)
7036     return get_objfile_arch (sal.section->objfile);
7037   if (sal.symtab)
7038     return get_objfile_arch (sal.symtab->objfile);
7039
7040   return NULL;
7041 }
7042
7043 /* Low level routine for partially initializing a breakpoint of type
7044    BPTYPE.  The newly created breakpoint's address, section, source
7045    file name, and line number are provided by SAL.
7046
7047    It is expected that the caller will complete the initialization of
7048    the newly created breakpoint struct as well as output any status
7049    information regarding the creation of a new breakpoint.  */
7050
7051 static void
7052 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7053                      struct symtab_and_line sal, enum bptype bptype,
7054                      const struct breakpoint_ops *ops)
7055 {
7056   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7057
7058   add_location_to_breakpoint (b, &sal);
7059
7060   if (bptype != bp_catchpoint)
7061     gdb_assert (sal.pspace != NULL);
7062
7063   /* Store the program space that was used to set the breakpoint,
7064      except for ordinary breakpoints, which are independent of the
7065      program space.  */
7066   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7067     b->pspace = sal.pspace;
7068 }
7069
7070 /* set_raw_breakpoint is a low level routine for allocating and
7071    partially initializing a breakpoint of type BPTYPE.  The newly
7072    created breakpoint's address, section, source file name, and line
7073    number are provided by SAL.  The newly created and partially
7074    initialized breakpoint is added to the breakpoint chain and
7075    is also returned as the value of this function.
7076
7077    It is expected that the caller will complete the initialization of
7078    the newly created breakpoint struct as well as output any status
7079    information regarding the creation of a new breakpoint.  In
7080    particular, set_raw_breakpoint does NOT set the breakpoint
7081    number!  Care should be taken to not allow an error to occur
7082    prior to completing the initialization of the breakpoint.  If this
7083    should happen, a bogus breakpoint will be left on the chain.  */
7084
7085 struct breakpoint *
7086 set_raw_breakpoint (struct gdbarch *gdbarch,
7087                     struct symtab_and_line sal, enum bptype bptype,
7088                     const struct breakpoint_ops *ops)
7089 {
7090   struct breakpoint *b = XNEW (struct breakpoint);
7091
7092   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7093   add_to_breakpoint_chain (b);
7094   return b;
7095 }
7096
7097
7098 /* Note that the breakpoint object B describes a permanent breakpoint
7099    instruction, hard-wired into the inferior's code.  */
7100 void
7101 make_breakpoint_permanent (struct breakpoint *b)
7102 {
7103   struct bp_location *bl;
7104
7105   b->enable_state = bp_permanent;
7106
7107   /* By definition, permanent breakpoints are already present in the
7108      code.  Mark all locations as inserted.  For now,
7109      make_breakpoint_permanent is called in just one place, so it's
7110      hard to say if it's reasonable to have permanent breakpoint with
7111      multiple locations or not, but it's easy to implement.  */
7112   for (bl = b->loc; bl; bl = bl->next)
7113     bl->inserted = 1;
7114 }
7115
7116 /* Call this routine when stepping and nexting to enable a breakpoint
7117    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7118    initiated the operation.  */
7119
7120 void
7121 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7122 {
7123   struct breakpoint *b, *b_tmp;
7124   int thread = tp->num;
7125
7126   /* To avoid having to rescan all objfile symbols at every step,
7127      we maintain a list of continually-inserted but always disabled
7128      longjmp "master" breakpoints.  Here, we simply create momentary
7129      clones of those and enable them for the requested thread.  */
7130   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7131     if (b->pspace == current_program_space
7132         && (b->type == bp_longjmp_master
7133             || b->type == bp_exception_master))
7134       {
7135         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7136         struct breakpoint *clone;
7137
7138         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7139            after their removal.  */
7140         clone = momentary_breakpoint_from_master (b, type,
7141                                                   &longjmp_breakpoint_ops);
7142         clone->thread = thread;
7143       }
7144
7145   tp->initiating_frame = frame;
7146 }
7147
7148 /* Delete all longjmp breakpoints from THREAD.  */
7149 void
7150 delete_longjmp_breakpoint (int thread)
7151 {
7152   struct breakpoint *b, *b_tmp;
7153
7154   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7155     if (b->type == bp_longjmp || b->type == bp_exception)
7156       {
7157         if (b->thread == thread)
7158           delete_breakpoint (b);
7159       }
7160 }
7161
7162 void
7163 delete_longjmp_breakpoint_at_next_stop (int thread)
7164 {
7165   struct breakpoint *b, *b_tmp;
7166
7167   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7168     if (b->type == bp_longjmp || b->type == bp_exception)
7169       {
7170         if (b->thread == thread)
7171           b->disposition = disp_del_at_next_stop;
7172       }
7173 }
7174
7175 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7176    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7177    pointer to any of them.  Return NULL if this system cannot place longjmp
7178    breakpoints.  */
7179
7180 struct breakpoint *
7181 set_longjmp_breakpoint_for_call_dummy (void)
7182 {
7183   struct breakpoint *b, *retval = NULL;
7184
7185   ALL_BREAKPOINTS (b)
7186     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7187       {
7188         struct breakpoint *new_b;
7189
7190         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7191                                                   &momentary_breakpoint_ops);
7192         new_b->thread = pid_to_thread_id (inferior_ptid);
7193
7194         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7195
7196         gdb_assert (new_b->related_breakpoint == new_b);
7197         if (retval == NULL)
7198           retval = new_b;
7199         new_b->related_breakpoint = retval;
7200         while (retval->related_breakpoint != new_b->related_breakpoint)
7201           retval = retval->related_breakpoint;
7202         retval->related_breakpoint = new_b;
7203       }
7204
7205   return retval;
7206 }
7207
7208 /* Verify all existing dummy frames and their associated breakpoints for
7209    THREAD.  Remove those which can no longer be found in the current frame
7210    stack.
7211
7212    You should call this function only at places where it is safe to currently
7213    unwind the whole stack.  Failed stack unwind would discard live dummy
7214    frames.  */
7215
7216 void
7217 check_longjmp_breakpoint_for_call_dummy (int thread)
7218 {
7219   struct breakpoint *b, *b_tmp;
7220
7221   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7222     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7223       {
7224         struct breakpoint *dummy_b = b->related_breakpoint;
7225
7226         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7227           dummy_b = dummy_b->related_breakpoint;
7228         if (dummy_b->type != bp_call_dummy
7229             || frame_find_by_id (dummy_b->frame_id) != NULL)
7230           continue;
7231         
7232         dummy_frame_discard (dummy_b->frame_id);
7233
7234         while (b->related_breakpoint != b)
7235           {
7236             if (b_tmp == b->related_breakpoint)
7237               b_tmp = b->related_breakpoint->next;
7238             delete_breakpoint (b->related_breakpoint);
7239           }
7240         delete_breakpoint (b);
7241       }
7242 }
7243
7244 void
7245 enable_overlay_breakpoints (void)
7246 {
7247   struct breakpoint *b;
7248
7249   ALL_BREAKPOINTS (b)
7250     if (b->type == bp_overlay_event)
7251     {
7252       b->enable_state = bp_enabled;
7253       update_global_location_list (1);
7254       overlay_events_enabled = 1;
7255     }
7256 }
7257
7258 void
7259 disable_overlay_breakpoints (void)
7260 {
7261   struct breakpoint *b;
7262
7263   ALL_BREAKPOINTS (b)
7264     if (b->type == bp_overlay_event)
7265     {
7266       b->enable_state = bp_disabled;
7267       update_global_location_list (0);
7268       overlay_events_enabled = 0;
7269     }
7270 }
7271
7272 /* Set an active std::terminate breakpoint for each std::terminate
7273    master breakpoint.  */
7274 void
7275 set_std_terminate_breakpoint (void)
7276 {
7277   struct breakpoint *b, *b_tmp;
7278
7279   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7280     if (b->pspace == current_program_space
7281         && b->type == bp_std_terminate_master)
7282       {
7283         momentary_breakpoint_from_master (b, bp_std_terminate,
7284                                           &momentary_breakpoint_ops);
7285       }
7286 }
7287
7288 /* Delete all the std::terminate breakpoints.  */
7289 void
7290 delete_std_terminate_breakpoint (void)
7291 {
7292   struct breakpoint *b, *b_tmp;
7293
7294   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7295     if (b->type == bp_std_terminate)
7296       delete_breakpoint (b);
7297 }
7298
7299 struct breakpoint *
7300 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7301 {
7302   struct breakpoint *b;
7303
7304   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7305                                   &internal_breakpoint_ops);
7306
7307   b->enable_state = bp_enabled;
7308   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7309   b->addr_string
7310     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7311
7312   update_global_location_list_nothrow (1);
7313
7314   return b;
7315 }
7316
7317 void
7318 remove_thread_event_breakpoints (void)
7319 {
7320   struct breakpoint *b, *b_tmp;
7321
7322   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7323     if (b->type == bp_thread_event
7324         && b->loc->pspace == current_program_space)
7325       delete_breakpoint (b);
7326 }
7327
7328 struct lang_and_radix
7329   {
7330     enum language lang;
7331     int radix;
7332   };
7333
7334 /* Create a breakpoint for JIT code registration and unregistration.  */
7335
7336 struct breakpoint *
7337 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7338 {
7339   struct breakpoint *b;
7340
7341   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7342                                   &internal_breakpoint_ops);
7343   update_global_location_list_nothrow (1);
7344   return b;
7345 }
7346
7347 /* Remove JIT code registration and unregistration breakpoint(s).  */
7348
7349 void
7350 remove_jit_event_breakpoints (void)
7351 {
7352   struct breakpoint *b, *b_tmp;
7353
7354   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7355     if (b->type == bp_jit_event
7356         && b->loc->pspace == current_program_space)
7357       delete_breakpoint (b);
7358 }
7359
7360 void
7361 remove_solib_event_breakpoints (void)
7362 {
7363   struct breakpoint *b, *b_tmp;
7364
7365   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7366     if (b->type == bp_shlib_event
7367         && b->loc->pspace == current_program_space)
7368       delete_breakpoint (b);
7369 }
7370
7371 struct breakpoint *
7372 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7373 {
7374   struct breakpoint *b;
7375
7376   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7377                                   &internal_breakpoint_ops);
7378   update_global_location_list_nothrow (1);
7379   return b;
7380 }
7381
7382 /* Disable any breakpoints that are on code in shared libraries.  Only
7383    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7384
7385 void
7386 disable_breakpoints_in_shlibs (void)
7387 {
7388   struct bp_location *loc, **locp_tmp;
7389
7390   ALL_BP_LOCATIONS (loc, locp_tmp)
7391   {
7392     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7393     struct breakpoint *b = loc->owner;
7394
7395     /* We apply the check to all breakpoints, including disabled for
7396        those with loc->duplicate set.  This is so that when breakpoint
7397        becomes enabled, or the duplicate is removed, gdb will try to
7398        insert all breakpoints.  If we don't set shlib_disabled here,
7399        we'll try to insert those breakpoints and fail.  */
7400     if (((b->type == bp_breakpoint)
7401          || (b->type == bp_jit_event)
7402          || (b->type == bp_hardware_breakpoint)
7403          || (is_tracepoint (b)))
7404         && loc->pspace == current_program_space
7405         && !loc->shlib_disabled
7406 #ifdef PC_SOLIB
7407         && PC_SOLIB (loc->address)
7408 #else
7409         && solib_name_from_address (loc->pspace, loc->address)
7410 #endif
7411         )
7412       {
7413         loc->shlib_disabled = 1;
7414       }
7415   }
7416 }
7417
7418 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7419    library.  Only apply to enabled breakpoints, disabled ones can just stay
7420    disabled.  */
7421
7422 static void
7423 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7424 {
7425   struct bp_location *loc, **locp_tmp;
7426   int disabled_shlib_breaks = 0;
7427
7428   /* SunOS a.out shared libraries are always mapped, so do not
7429      disable breakpoints; they will only be reported as unloaded
7430      through clear_solib when GDB discards its shared library
7431      list.  See clear_solib for more information.  */
7432   if (exec_bfd != NULL
7433       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7434     return;
7435
7436   ALL_BP_LOCATIONS (loc, locp_tmp)
7437   {
7438     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7439     struct breakpoint *b = loc->owner;
7440
7441     if (solib->pspace == loc->pspace
7442         && !loc->shlib_disabled
7443         && (((b->type == bp_breakpoint
7444               || b->type == bp_jit_event
7445               || b->type == bp_hardware_breakpoint)
7446              && (loc->loc_type == bp_loc_hardware_breakpoint
7447                  || loc->loc_type == bp_loc_software_breakpoint))
7448             || is_tracepoint (b))
7449         && solib_contains_address_p (solib, loc->address))
7450       {
7451         loc->shlib_disabled = 1;
7452         /* At this point, we cannot rely on remove_breakpoint
7453            succeeding so we must mark the breakpoint as not inserted
7454            to prevent future errors occurring in remove_breakpoints.  */
7455         loc->inserted = 0;
7456
7457         /* This may cause duplicate notifications for the same breakpoint.  */
7458         observer_notify_breakpoint_modified (b);
7459
7460         if (!disabled_shlib_breaks)
7461           {
7462             target_terminal_ours_for_output ();
7463             warning (_("Temporarily disabling breakpoints "
7464                        "for unloaded shared library \"%s\""),
7465                      solib->so_name);
7466           }
7467         disabled_shlib_breaks = 1;
7468       }
7469   }
7470 }
7471
7472 /* FORK & VFORK catchpoints.  */
7473
7474 /* An instance of this type is used to represent a fork or vfork
7475    catchpoint.  It includes a "struct breakpoint" as a kind of base
7476    class; users downcast to "struct breakpoint *" when needed.  A
7477    breakpoint is really of this type iff its ops pointer points to
7478    CATCH_FORK_BREAKPOINT_OPS.  */
7479
7480 struct fork_catchpoint
7481 {
7482   /* The base class.  */
7483   struct breakpoint base;
7484
7485   /* Process id of a child process whose forking triggered this
7486      catchpoint.  This field is only valid immediately after this
7487      catchpoint has triggered.  */
7488   ptid_t forked_inferior_pid;
7489 };
7490
7491 /* Implement the "insert" breakpoint_ops method for fork
7492    catchpoints.  */
7493
7494 static int
7495 insert_catch_fork (struct bp_location *bl)
7496 {
7497   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7498 }
7499
7500 /* Implement the "remove" breakpoint_ops method for fork
7501    catchpoints.  */
7502
7503 static int
7504 remove_catch_fork (struct bp_location *bl)
7505 {
7506   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7507 }
7508
7509 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7510    catchpoints.  */
7511
7512 static int
7513 breakpoint_hit_catch_fork (const struct bp_location *bl,
7514                            struct address_space *aspace, CORE_ADDR bp_addr,
7515                            const struct target_waitstatus *ws)
7516 {
7517   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7518
7519   if (ws->kind != TARGET_WAITKIND_FORKED)
7520     return 0;
7521
7522   c->forked_inferior_pid = ws->value.related_pid;
7523   return 1;
7524 }
7525
7526 /* Implement the "print_it" breakpoint_ops method for fork
7527    catchpoints.  */
7528
7529 static enum print_stop_action
7530 print_it_catch_fork (bpstat bs)
7531 {
7532   struct ui_out *uiout = current_uiout;
7533   struct breakpoint *b = bs->breakpoint_at;
7534   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7535
7536   annotate_catchpoint (b->number);
7537   if (b->disposition == disp_del)
7538     ui_out_text (uiout, "\nTemporary catchpoint ");
7539   else
7540     ui_out_text (uiout, "\nCatchpoint ");
7541   if (ui_out_is_mi_like_p (uiout))
7542     {
7543       ui_out_field_string (uiout, "reason",
7544                            async_reason_lookup (EXEC_ASYNC_FORK));
7545       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7546     }
7547   ui_out_field_int (uiout, "bkptno", b->number);
7548   ui_out_text (uiout, " (forked process ");
7549   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7550   ui_out_text (uiout, "), ");
7551   return PRINT_SRC_AND_LOC;
7552 }
7553
7554 /* Implement the "print_one" breakpoint_ops method for fork
7555    catchpoints.  */
7556
7557 static void
7558 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7559 {
7560   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7561   struct value_print_options opts;
7562   struct ui_out *uiout = current_uiout;
7563
7564   get_user_print_options (&opts);
7565
7566   /* Field 4, the address, is omitted (which makes the columns not
7567      line up too nicely with the headers, but the effect is relatively
7568      readable).  */
7569   if (opts.addressprint)
7570     ui_out_field_skip (uiout, "addr");
7571   annotate_field (5);
7572   ui_out_text (uiout, "fork");
7573   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7574     {
7575       ui_out_text (uiout, ", process ");
7576       ui_out_field_int (uiout, "what",
7577                         ptid_get_pid (c->forked_inferior_pid));
7578       ui_out_spaces (uiout, 1);
7579     }
7580
7581   if (ui_out_is_mi_like_p (uiout))
7582     ui_out_field_string (uiout, "catch-type", "fork");
7583 }
7584
7585 /* Implement the "print_mention" breakpoint_ops method for fork
7586    catchpoints.  */
7587
7588 static void
7589 print_mention_catch_fork (struct breakpoint *b)
7590 {
7591   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7592 }
7593
7594 /* Implement the "print_recreate" breakpoint_ops method for fork
7595    catchpoints.  */
7596
7597 static void
7598 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7599 {
7600   fprintf_unfiltered (fp, "catch fork");
7601   print_recreate_thread (b, fp);
7602 }
7603
7604 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7605
7606 static struct breakpoint_ops catch_fork_breakpoint_ops;
7607
7608 /* Implement the "insert" breakpoint_ops method for vfork
7609    catchpoints.  */
7610
7611 static int
7612 insert_catch_vfork (struct bp_location *bl)
7613 {
7614   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7615 }
7616
7617 /* Implement the "remove" breakpoint_ops method for vfork
7618    catchpoints.  */
7619
7620 static int
7621 remove_catch_vfork (struct bp_location *bl)
7622 {
7623   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7624 }
7625
7626 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7627    catchpoints.  */
7628
7629 static int
7630 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7631                             struct address_space *aspace, CORE_ADDR bp_addr,
7632                             const struct target_waitstatus *ws)
7633 {
7634   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7635
7636   if (ws->kind != TARGET_WAITKIND_VFORKED)
7637     return 0;
7638
7639   c->forked_inferior_pid = ws->value.related_pid;
7640   return 1;
7641 }
7642
7643 /* Implement the "print_it" breakpoint_ops method for vfork
7644    catchpoints.  */
7645
7646 static enum print_stop_action
7647 print_it_catch_vfork (bpstat bs)
7648 {
7649   struct ui_out *uiout = current_uiout;
7650   struct breakpoint *b = bs->breakpoint_at;
7651   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7652
7653   annotate_catchpoint (b->number);
7654   if (b->disposition == disp_del)
7655     ui_out_text (uiout, "\nTemporary catchpoint ");
7656   else
7657     ui_out_text (uiout, "\nCatchpoint ");
7658   if (ui_out_is_mi_like_p (uiout))
7659     {
7660       ui_out_field_string (uiout, "reason",
7661                            async_reason_lookup (EXEC_ASYNC_VFORK));
7662       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7663     }
7664   ui_out_field_int (uiout, "bkptno", b->number);
7665   ui_out_text (uiout, " (vforked process ");
7666   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7667   ui_out_text (uiout, "), ");
7668   return PRINT_SRC_AND_LOC;
7669 }
7670
7671 /* Implement the "print_one" breakpoint_ops method for vfork
7672    catchpoints.  */
7673
7674 static void
7675 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7676 {
7677   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7678   struct value_print_options opts;
7679   struct ui_out *uiout = current_uiout;
7680
7681   get_user_print_options (&opts);
7682   /* Field 4, the address, is omitted (which makes the columns not
7683      line up too nicely with the headers, but the effect is relatively
7684      readable).  */
7685   if (opts.addressprint)
7686     ui_out_field_skip (uiout, "addr");
7687   annotate_field (5);
7688   ui_out_text (uiout, "vfork");
7689   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7690     {
7691       ui_out_text (uiout, ", process ");
7692       ui_out_field_int (uiout, "what",
7693                         ptid_get_pid (c->forked_inferior_pid));
7694       ui_out_spaces (uiout, 1);
7695     }
7696
7697   if (ui_out_is_mi_like_p (uiout))
7698     ui_out_field_string (uiout, "catch-type", "vfork");
7699 }
7700
7701 /* Implement the "print_mention" breakpoint_ops method for vfork
7702    catchpoints.  */
7703
7704 static void
7705 print_mention_catch_vfork (struct breakpoint *b)
7706 {
7707   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7708 }
7709
7710 /* Implement the "print_recreate" breakpoint_ops method for vfork
7711    catchpoints.  */
7712
7713 static void
7714 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7715 {
7716   fprintf_unfiltered (fp, "catch vfork");
7717   print_recreate_thread (b, fp);
7718 }
7719
7720 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7721
7722 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7723
7724 /* An instance of this type is used to represent an solib catchpoint.
7725    It includes a "struct breakpoint" as a kind of base class; users
7726    downcast to "struct breakpoint *" when needed.  A breakpoint is
7727    really of this type iff its ops pointer points to
7728    CATCH_SOLIB_BREAKPOINT_OPS.  */
7729
7730 struct solib_catchpoint
7731 {
7732   /* The base class.  */
7733   struct breakpoint base;
7734
7735   /* True for "catch load", false for "catch unload".  */
7736   unsigned char is_load;
7737
7738   /* Regular expression to match, if any.  COMPILED is only valid when
7739      REGEX is non-NULL.  */
7740   char *regex;
7741   regex_t compiled;
7742 };
7743
7744 static void
7745 dtor_catch_solib (struct breakpoint *b)
7746 {
7747   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7748
7749   if (self->regex)
7750     regfree (&self->compiled);
7751   xfree (self->regex);
7752
7753   base_breakpoint_ops.dtor (b);
7754 }
7755
7756 static int
7757 insert_catch_solib (struct bp_location *ignore)
7758 {
7759   return 0;
7760 }
7761
7762 static int
7763 remove_catch_solib (struct bp_location *ignore)
7764 {
7765   return 0;
7766 }
7767
7768 static int
7769 breakpoint_hit_catch_solib (const struct bp_location *bl,
7770                             struct address_space *aspace,
7771                             CORE_ADDR bp_addr,
7772                             const struct target_waitstatus *ws)
7773 {
7774   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7775   struct breakpoint *other;
7776
7777   if (ws->kind == TARGET_WAITKIND_LOADED)
7778     return 1;
7779
7780   ALL_BREAKPOINTS (other)
7781   {
7782     struct bp_location *other_bl;
7783
7784     if (other == bl->owner)
7785       continue;
7786
7787     if (other->type != bp_shlib_event)
7788       continue;
7789
7790     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7791       continue;
7792
7793     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7794       {
7795         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7796           return 1;
7797       }
7798   }
7799
7800   return 0;
7801 }
7802
7803 static void
7804 check_status_catch_solib (struct bpstats *bs)
7805 {
7806   struct solib_catchpoint *self
7807     = (struct solib_catchpoint *) bs->breakpoint_at;
7808   int ix;
7809
7810   if (self->is_load)
7811     {
7812       struct so_list *iter;
7813
7814       for (ix = 0;
7815            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7816                         ix, iter);
7817            ++ix)
7818         {
7819           if (!self->regex
7820               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7821             return;
7822         }
7823     }
7824   else
7825     {
7826       char *iter;
7827
7828       for (ix = 0;
7829            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7830                         ix, iter);
7831            ++ix)
7832         {
7833           if (!self->regex
7834               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7835             return;
7836         }
7837     }
7838
7839   bs->stop = 0;
7840   bs->print_it = print_it_noop;
7841 }
7842
7843 static enum print_stop_action
7844 print_it_catch_solib (bpstat bs)
7845 {
7846   struct breakpoint *b = bs->breakpoint_at;
7847   struct ui_out *uiout = current_uiout;
7848
7849   annotate_catchpoint (b->number);
7850   if (b->disposition == disp_del)
7851     ui_out_text (uiout, "\nTemporary catchpoint ");
7852   else
7853     ui_out_text (uiout, "\nCatchpoint ");
7854   ui_out_field_int (uiout, "bkptno", b->number);
7855   ui_out_text (uiout, "\n");
7856   if (ui_out_is_mi_like_p (uiout))
7857     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7858   print_solib_event (1);
7859   return PRINT_SRC_AND_LOC;
7860 }
7861
7862 static void
7863 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7864 {
7865   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7866   struct value_print_options opts;
7867   struct ui_out *uiout = current_uiout;
7868   char *msg;
7869
7870   get_user_print_options (&opts);
7871   /* Field 4, the address, is omitted (which makes the columns not
7872      line up too nicely with the headers, but the effect is relatively
7873      readable).  */
7874   if (opts.addressprint)
7875     {
7876       annotate_field (4);
7877       ui_out_field_skip (uiout, "addr");
7878     }
7879
7880   annotate_field (5);
7881   if (self->is_load)
7882     {
7883       if (self->regex)
7884         msg = xstrprintf (_("load of library matching %s"), self->regex);
7885       else
7886         msg = xstrdup (_("load of library"));
7887     }
7888   else
7889     {
7890       if (self->regex)
7891         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7892       else
7893         msg = xstrdup (_("unload of library"));
7894     }
7895   ui_out_field_string (uiout, "what", msg);
7896   xfree (msg);
7897
7898   if (ui_out_is_mi_like_p (uiout))
7899     ui_out_field_string (uiout, "catch-type",
7900                          self->is_load ? "load" : "unload");
7901 }
7902
7903 static void
7904 print_mention_catch_solib (struct breakpoint *b)
7905 {
7906   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7907
7908   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7909                    self->is_load ? "load" : "unload");
7910 }
7911
7912 static void
7913 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7914 {
7915   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7916
7917   fprintf_unfiltered (fp, "%s %s",
7918                       b->disposition == disp_del ? "tcatch" : "catch",
7919                       self->is_load ? "load" : "unload");
7920   if (self->regex)
7921     fprintf_unfiltered (fp, " %s", self->regex);
7922   fprintf_unfiltered (fp, "\n");
7923 }
7924
7925 static struct breakpoint_ops catch_solib_breakpoint_ops;
7926
7927 /* Shared helper function (MI and CLI) for creating and installing
7928    a shared object event catchpoint.  If IS_LOAD is non-zero then
7929    the events to be caught are load events, otherwise they are
7930    unload events.  If IS_TEMP is non-zero the catchpoint is a
7931    temporary one.  If ENABLED is non-zero the catchpoint is
7932    created in an enabled state.  */
7933
7934 void
7935 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7936 {
7937   struct solib_catchpoint *c;
7938   struct gdbarch *gdbarch = get_current_arch ();
7939   struct cleanup *cleanup;
7940
7941   if (!arg)
7942     arg = "";
7943   arg = skip_spaces (arg);
7944
7945   c = XCNEW (struct solib_catchpoint);
7946   cleanup = make_cleanup (xfree, c);
7947
7948   if (*arg != '\0')
7949     {
7950       int errcode;
7951
7952       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7953       if (errcode != 0)
7954         {
7955           char *err = get_regcomp_error (errcode, &c->compiled);
7956
7957           make_cleanup (xfree, err);
7958           error (_("Invalid regexp (%s): %s"), err, arg);
7959         }
7960       c->regex = xstrdup (arg);
7961     }
7962
7963   c->is_load = is_load;
7964   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7965                    &catch_solib_breakpoint_ops);
7966
7967   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7968
7969   discard_cleanups (cleanup);
7970   install_breakpoint (0, &c->base, 1);
7971 }
7972
7973 /* A helper function that does all the work for "catch load" and
7974    "catch unload".  */
7975
7976 static void
7977 catch_load_or_unload (char *arg, int from_tty, int is_load,
7978                       struct cmd_list_element *command)
7979 {
7980   int tempflag;
7981   const int enabled = 1;
7982
7983   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7984
7985   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7986 }
7987
7988 static void
7989 catch_load_command_1 (char *arg, int from_tty,
7990                       struct cmd_list_element *command)
7991 {
7992   catch_load_or_unload (arg, from_tty, 1, command);
7993 }
7994
7995 static void
7996 catch_unload_command_1 (char *arg, int from_tty,
7997                         struct cmd_list_element *command)
7998 {
7999   catch_load_or_unload (arg, from_tty, 0, command);
8000 }
8001
8002 /* An instance of this type is used to represent a syscall catchpoint.
8003    It includes a "struct breakpoint" as a kind of base class; users
8004    downcast to "struct breakpoint *" when needed.  A breakpoint is
8005    really of this type iff its ops pointer points to
8006    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8007
8008 struct syscall_catchpoint
8009 {
8010   /* The base class.  */
8011   struct breakpoint base;
8012
8013   /* Syscall numbers used for the 'catch syscall' feature.  If no
8014      syscall has been specified for filtering, its value is NULL.
8015      Otherwise, it holds a list of all syscalls to be caught.  The
8016      list elements are allocated with xmalloc.  */
8017   VEC(int) *syscalls_to_be_caught;
8018 };
8019
8020 /* Implement the "dtor" breakpoint_ops method for syscall
8021    catchpoints.  */
8022
8023 static void
8024 dtor_catch_syscall (struct breakpoint *b)
8025 {
8026   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8027
8028   VEC_free (int, c->syscalls_to_be_caught);
8029
8030   base_breakpoint_ops.dtor (b);
8031 }
8032
8033 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8034
8035 struct catch_syscall_inferior_data
8036 {
8037   /* We keep a count of the number of times the user has requested a
8038      particular syscall to be tracked, and pass this information to the
8039      target.  This lets capable targets implement filtering directly.  */
8040
8041   /* Number of times that "any" syscall is requested.  */
8042   int any_syscall_count;
8043
8044   /* Count of each system call.  */
8045   VEC(int) *syscalls_counts;
8046
8047   /* This counts all syscall catch requests, so we can readily determine
8048      if any catching is necessary.  */
8049   int total_syscalls_count;
8050 };
8051
8052 static struct catch_syscall_inferior_data*
8053 get_catch_syscall_inferior_data (struct inferior *inf)
8054 {
8055   struct catch_syscall_inferior_data *inf_data;
8056
8057   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8058   if (inf_data == NULL)
8059     {
8060       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8061       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8062     }
8063
8064   return inf_data;
8065 }
8066
8067 static void
8068 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8069 {
8070   xfree (arg);
8071 }
8072
8073
8074 /* Implement the "insert" breakpoint_ops method for syscall
8075    catchpoints.  */
8076
8077 static int
8078 insert_catch_syscall (struct bp_location *bl)
8079 {
8080   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8081   struct inferior *inf = current_inferior ();
8082   struct catch_syscall_inferior_data *inf_data
8083     = get_catch_syscall_inferior_data (inf);
8084
8085   ++inf_data->total_syscalls_count;
8086   if (!c->syscalls_to_be_caught)
8087     ++inf_data->any_syscall_count;
8088   else
8089     {
8090       int i, iter;
8091
8092       for (i = 0;
8093            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8094            i++)
8095         {
8096           int elem;
8097
8098           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8099             {
8100               int old_size = VEC_length (int, inf_data->syscalls_counts);
8101               uintptr_t vec_addr_offset
8102                 = old_size * ((uintptr_t) sizeof (int));
8103               uintptr_t vec_addr;
8104               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8105               vec_addr = ((uintptr_t) VEC_address (int,
8106                                                   inf_data->syscalls_counts)
8107                           + vec_addr_offset);
8108               memset ((void *) vec_addr, 0,
8109                       (iter + 1 - old_size) * sizeof (int));
8110             }
8111           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8112           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8113         }
8114     }
8115
8116   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8117                                         inf_data->total_syscalls_count != 0,
8118                                         inf_data->any_syscall_count,
8119                                         VEC_length (int,
8120                                                     inf_data->syscalls_counts),
8121                                         VEC_address (int,
8122                                                      inf_data->syscalls_counts));
8123 }
8124
8125 /* Implement the "remove" breakpoint_ops method for syscall
8126    catchpoints.  */
8127
8128 static int
8129 remove_catch_syscall (struct bp_location *bl)
8130 {
8131   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8132   struct inferior *inf = current_inferior ();
8133   struct catch_syscall_inferior_data *inf_data
8134     = get_catch_syscall_inferior_data (inf);
8135
8136   --inf_data->total_syscalls_count;
8137   if (!c->syscalls_to_be_caught)
8138     --inf_data->any_syscall_count;
8139   else
8140     {
8141       int i, iter;
8142
8143       for (i = 0;
8144            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8145            i++)
8146         {
8147           int elem;
8148           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8149             /* Shouldn't happen.  */
8150             continue;
8151           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8152           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8153         }
8154     }
8155
8156   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8157                                         inf_data->total_syscalls_count != 0,
8158                                         inf_data->any_syscall_count,
8159                                         VEC_length (int,
8160                                                     inf_data->syscalls_counts),
8161                                         VEC_address (int,
8162                                                      inf_data->syscalls_counts));
8163 }
8164
8165 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8166    catchpoints.  */
8167
8168 static int
8169 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8170                               struct address_space *aspace, CORE_ADDR bp_addr,
8171                               const struct target_waitstatus *ws)
8172 {
8173   /* We must check if we are catching specific syscalls in this
8174      breakpoint.  If we are, then we must guarantee that the called
8175      syscall is the same syscall we are catching.  */
8176   int syscall_number = 0;
8177   const struct syscall_catchpoint *c
8178     = (const struct syscall_catchpoint *) bl->owner;
8179
8180   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8181       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8182     return 0;
8183
8184   syscall_number = ws->value.syscall_number;
8185
8186   /* Now, checking if the syscall is the same.  */
8187   if (c->syscalls_to_be_caught)
8188     {
8189       int i, iter;
8190
8191       for (i = 0;
8192            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8193            i++)
8194         if (syscall_number == iter)
8195           break;
8196       /* Not the same.  */
8197       if (!iter)
8198         return 0;
8199     }
8200
8201   return 1;
8202 }
8203
8204 /* Implement the "print_it" breakpoint_ops method for syscall
8205    catchpoints.  */
8206
8207 static enum print_stop_action
8208 print_it_catch_syscall (bpstat bs)
8209 {
8210   struct ui_out *uiout = current_uiout;
8211   struct breakpoint *b = bs->breakpoint_at;
8212   /* These are needed because we want to know in which state a
8213      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8214      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8215      must print "called syscall" or "returned from syscall".  */
8216   ptid_t ptid;
8217   struct target_waitstatus last;
8218   struct syscall s;
8219
8220   get_last_target_status (&ptid, &last);
8221
8222   get_syscall_by_number (last.value.syscall_number, &s);
8223
8224   annotate_catchpoint (b->number);
8225
8226   if (b->disposition == disp_del)
8227     ui_out_text (uiout, "\nTemporary catchpoint ");
8228   else
8229     ui_out_text (uiout, "\nCatchpoint ");
8230   if (ui_out_is_mi_like_p (uiout))
8231     {
8232       ui_out_field_string (uiout, "reason",
8233                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8234                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8235                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8236       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8237     }
8238   ui_out_field_int (uiout, "bkptno", b->number);
8239
8240   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8241     ui_out_text (uiout, " (call to syscall ");
8242   else
8243     ui_out_text (uiout, " (returned from syscall ");
8244
8245   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8246     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8247   if (s.name != NULL)
8248     ui_out_field_string (uiout, "syscall-name", s.name);
8249
8250   ui_out_text (uiout, "), ");
8251
8252   return PRINT_SRC_AND_LOC;
8253 }
8254
8255 /* Implement the "print_one" breakpoint_ops method for syscall
8256    catchpoints.  */
8257
8258 static void
8259 print_one_catch_syscall (struct breakpoint *b,
8260                          struct bp_location **last_loc)
8261 {
8262   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8263   struct value_print_options opts;
8264   struct ui_out *uiout = current_uiout;
8265
8266   get_user_print_options (&opts);
8267   /* Field 4, the address, is omitted (which makes the columns not
8268      line up too nicely with the headers, but the effect is relatively
8269      readable).  */
8270   if (opts.addressprint)
8271     ui_out_field_skip (uiout, "addr");
8272   annotate_field (5);
8273
8274   if (c->syscalls_to_be_caught
8275       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8276     ui_out_text (uiout, "syscalls \"");
8277   else
8278     ui_out_text (uiout, "syscall \"");
8279
8280   if (c->syscalls_to_be_caught)
8281     {
8282       int i, iter;
8283       char *text = xstrprintf ("%s", "");
8284
8285       for (i = 0;
8286            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8287            i++)
8288         {
8289           char *x = text;
8290           struct syscall s;
8291           get_syscall_by_number (iter, &s);
8292
8293           if (s.name != NULL)
8294             text = xstrprintf ("%s%s, ", text, s.name);
8295           else
8296             text = xstrprintf ("%s%d, ", text, iter);
8297
8298           /* We have to xfree the last 'text' (now stored at 'x')
8299              because xstrprintf dynamically allocates new space for it
8300              on every call.  */
8301           xfree (x);
8302         }
8303       /* Remove the last comma.  */
8304       text[strlen (text) - 2] = '\0';
8305       ui_out_field_string (uiout, "what", text);
8306     }
8307   else
8308     ui_out_field_string (uiout, "what", "<any syscall>");
8309   ui_out_text (uiout, "\" ");
8310
8311   if (ui_out_is_mi_like_p (uiout))
8312     ui_out_field_string (uiout, "catch-type", "syscall");
8313 }
8314
8315 /* Implement the "print_mention" breakpoint_ops method for syscall
8316    catchpoints.  */
8317
8318 static void
8319 print_mention_catch_syscall (struct breakpoint *b)
8320 {
8321   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8322
8323   if (c->syscalls_to_be_caught)
8324     {
8325       int i, iter;
8326
8327       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8328         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8329       else
8330         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8331
8332       for (i = 0;
8333            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8334            i++)
8335         {
8336           struct syscall s;
8337           get_syscall_by_number (iter, &s);
8338
8339           if (s.name)
8340             printf_filtered (" '%s' [%d]", s.name, s.number);
8341           else
8342             printf_filtered (" %d", s.number);
8343         }
8344       printf_filtered (")");
8345     }
8346   else
8347     printf_filtered (_("Catchpoint %d (any syscall)"),
8348                      b->number);
8349 }
8350
8351 /* Implement the "print_recreate" breakpoint_ops method for syscall
8352    catchpoints.  */
8353
8354 static void
8355 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8356 {
8357   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8358
8359   fprintf_unfiltered (fp, "catch syscall");
8360
8361   if (c->syscalls_to_be_caught)
8362     {
8363       int i, iter;
8364
8365       for (i = 0;
8366            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8367            i++)
8368         {
8369           struct syscall s;
8370
8371           get_syscall_by_number (iter, &s);
8372           if (s.name)
8373             fprintf_unfiltered (fp, " %s", s.name);
8374           else
8375             fprintf_unfiltered (fp, " %d", s.number);
8376         }
8377     }
8378   print_recreate_thread (b, fp);
8379 }
8380
8381 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8382
8383 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8384
8385 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8386
8387 static int
8388 syscall_catchpoint_p (struct breakpoint *b)
8389 {
8390   return (b->ops == &catch_syscall_breakpoint_ops);
8391 }
8392
8393 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8394    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8395    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8396    the breakpoint_ops structure associated to the catchpoint.  */
8397
8398 void
8399 init_catchpoint (struct breakpoint *b,
8400                  struct gdbarch *gdbarch, int tempflag,
8401                  char *cond_string,
8402                  const struct breakpoint_ops *ops)
8403 {
8404   struct symtab_and_line sal;
8405
8406   init_sal (&sal);
8407   sal.pspace = current_program_space;
8408
8409   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8410
8411   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8412   b->disposition = tempflag ? disp_del : disp_donttouch;
8413 }
8414
8415 void
8416 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8417 {
8418   add_to_breakpoint_chain (b);
8419   set_breakpoint_number (internal, b);
8420   if (is_tracepoint (b))
8421     set_tracepoint_count (breakpoint_count);
8422   if (!internal)
8423     mention (b);
8424   observer_notify_breakpoint_created (b);
8425
8426   if (update_gll)
8427     update_global_location_list (1);
8428 }
8429
8430 static void
8431 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8432                                     int tempflag, char *cond_string,
8433                                     const struct breakpoint_ops *ops)
8434 {
8435   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8436
8437   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8438
8439   c->forked_inferior_pid = null_ptid;
8440
8441   install_breakpoint (0, &c->base, 1);
8442 }
8443
8444 /* Exec catchpoints.  */
8445
8446 /* An instance of this type is used to represent an exec catchpoint.
8447    It includes a "struct breakpoint" as a kind of base class; users
8448    downcast to "struct breakpoint *" when needed.  A breakpoint is
8449    really of this type iff its ops pointer points to
8450    CATCH_EXEC_BREAKPOINT_OPS.  */
8451
8452 struct exec_catchpoint
8453 {
8454   /* The base class.  */
8455   struct breakpoint base;
8456
8457   /* Filename of a program whose exec triggered this catchpoint.
8458      This field is only valid immediately after this catchpoint has
8459      triggered.  */
8460   char *exec_pathname;
8461 };
8462
8463 /* Implement the "dtor" breakpoint_ops method for exec
8464    catchpoints.  */
8465
8466 static void
8467 dtor_catch_exec (struct breakpoint *b)
8468 {
8469   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8470
8471   xfree (c->exec_pathname);
8472
8473   base_breakpoint_ops.dtor (b);
8474 }
8475
8476 static int
8477 insert_catch_exec (struct bp_location *bl)
8478 {
8479   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8480 }
8481
8482 static int
8483 remove_catch_exec (struct bp_location *bl)
8484 {
8485   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8486 }
8487
8488 static int
8489 breakpoint_hit_catch_exec (const struct bp_location *bl,
8490                            struct address_space *aspace, CORE_ADDR bp_addr,
8491                            const struct target_waitstatus *ws)
8492 {
8493   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8494
8495   if (ws->kind != TARGET_WAITKIND_EXECD)
8496     return 0;
8497
8498   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8499   return 1;
8500 }
8501
8502 static enum print_stop_action
8503 print_it_catch_exec (bpstat bs)
8504 {
8505   struct ui_out *uiout = current_uiout;
8506   struct breakpoint *b = bs->breakpoint_at;
8507   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8508
8509   annotate_catchpoint (b->number);
8510   if (b->disposition == disp_del)
8511     ui_out_text (uiout, "\nTemporary catchpoint ");
8512   else
8513     ui_out_text (uiout, "\nCatchpoint ");
8514   if (ui_out_is_mi_like_p (uiout))
8515     {
8516       ui_out_field_string (uiout, "reason",
8517                            async_reason_lookup (EXEC_ASYNC_EXEC));
8518       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8519     }
8520   ui_out_field_int (uiout, "bkptno", b->number);
8521   ui_out_text (uiout, " (exec'd ");
8522   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8523   ui_out_text (uiout, "), ");
8524
8525   return PRINT_SRC_AND_LOC;
8526 }
8527
8528 static void
8529 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8530 {
8531   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8532   struct value_print_options opts;
8533   struct ui_out *uiout = current_uiout;
8534
8535   get_user_print_options (&opts);
8536
8537   /* Field 4, the address, is omitted (which makes the columns
8538      not line up too nicely with the headers, but the effect
8539      is relatively readable).  */
8540   if (opts.addressprint)
8541     ui_out_field_skip (uiout, "addr");
8542   annotate_field (5);
8543   ui_out_text (uiout, "exec");
8544   if (c->exec_pathname != NULL)
8545     {
8546       ui_out_text (uiout, ", program \"");
8547       ui_out_field_string (uiout, "what", c->exec_pathname);
8548       ui_out_text (uiout, "\" ");
8549     }
8550
8551   if (ui_out_is_mi_like_p (uiout))
8552     ui_out_field_string (uiout, "catch-type", "exec");
8553 }
8554
8555 static void
8556 print_mention_catch_exec (struct breakpoint *b)
8557 {
8558   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8559 }
8560
8561 /* Implement the "print_recreate" breakpoint_ops method for exec
8562    catchpoints.  */
8563
8564 static void
8565 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8566 {
8567   fprintf_unfiltered (fp, "catch exec");
8568   print_recreate_thread (b, fp);
8569 }
8570
8571 static struct breakpoint_ops catch_exec_breakpoint_ops;
8572
8573 static void
8574 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8575                                  const struct breakpoint_ops *ops)
8576 {
8577   struct syscall_catchpoint *c;
8578   struct gdbarch *gdbarch = get_current_arch ();
8579
8580   c = XNEW (struct syscall_catchpoint);
8581   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8582   c->syscalls_to_be_caught = filter;
8583
8584   install_breakpoint (0, &c->base, 1);
8585 }
8586
8587 static int
8588 hw_breakpoint_used_count (void)
8589 {
8590   int i = 0;
8591   struct breakpoint *b;
8592   struct bp_location *bl;
8593
8594   ALL_BREAKPOINTS (b)
8595   {
8596     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8597       for (bl = b->loc; bl; bl = bl->next)
8598         {
8599           /* Special types of hardware breakpoints may use more than
8600              one register.  */
8601           i += b->ops->resources_needed (bl);
8602         }
8603   }
8604
8605   return i;
8606 }
8607
8608 /* Returns the resources B would use if it were a hardware
8609    watchpoint.  */
8610
8611 static int
8612 hw_watchpoint_use_count (struct breakpoint *b)
8613 {
8614   int i = 0;
8615   struct bp_location *bl;
8616
8617   if (!breakpoint_enabled (b))
8618     return 0;
8619
8620   for (bl = b->loc; bl; bl = bl->next)
8621     {
8622       /* Special types of hardware watchpoints may use more than
8623          one register.  */
8624       i += b->ops->resources_needed (bl);
8625     }
8626
8627   return i;
8628 }
8629
8630 /* Returns the sum the used resources of all hardware watchpoints of
8631    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8632    the sum of the used resources of all hardware watchpoints of other
8633    types _not_ TYPE.  */
8634
8635 static int
8636 hw_watchpoint_used_count_others (struct breakpoint *except,
8637                                  enum bptype type, int *other_type_used)
8638 {
8639   int i = 0;
8640   struct breakpoint *b;
8641
8642   *other_type_used = 0;
8643   ALL_BREAKPOINTS (b)
8644     {
8645       if (b == except)
8646         continue;
8647       if (!breakpoint_enabled (b))
8648         continue;
8649
8650       if (b->type == type)
8651         i += hw_watchpoint_use_count (b);
8652       else if (is_hardware_watchpoint (b))
8653         *other_type_used = 1;
8654     }
8655
8656   return i;
8657 }
8658
8659 void
8660 disable_watchpoints_before_interactive_call_start (void)
8661 {
8662   struct breakpoint *b;
8663
8664   ALL_BREAKPOINTS (b)
8665   {
8666     if (is_watchpoint (b) && breakpoint_enabled (b))
8667       {
8668         b->enable_state = bp_call_disabled;
8669         update_global_location_list (0);
8670       }
8671   }
8672 }
8673
8674 void
8675 enable_watchpoints_after_interactive_call_stop (void)
8676 {
8677   struct breakpoint *b;
8678
8679   ALL_BREAKPOINTS (b)
8680   {
8681     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8682       {
8683         b->enable_state = bp_enabled;
8684         update_global_location_list (1);
8685       }
8686   }
8687 }
8688
8689 void
8690 disable_breakpoints_before_startup (void)
8691 {
8692   current_program_space->executing_startup = 1;
8693   update_global_location_list (0);
8694 }
8695
8696 void
8697 enable_breakpoints_after_startup (void)
8698 {
8699   current_program_space->executing_startup = 0;
8700   breakpoint_re_set ();
8701 }
8702
8703
8704 /* Set a breakpoint that will evaporate an end of command
8705    at address specified by SAL.
8706    Restrict it to frame FRAME if FRAME is nonzero.  */
8707
8708 struct breakpoint *
8709 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8710                           struct frame_id frame_id, enum bptype type)
8711 {
8712   struct breakpoint *b;
8713
8714   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8715      tail-called one.  */
8716   gdb_assert (!frame_id_artificial_p (frame_id));
8717
8718   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8719   b->enable_state = bp_enabled;
8720   b->disposition = disp_donttouch;
8721   b->frame_id = frame_id;
8722
8723   /* If we're debugging a multi-threaded program, then we want
8724      momentary breakpoints to be active in only a single thread of
8725      control.  */
8726   if (in_thread_list (inferior_ptid))
8727     b->thread = pid_to_thread_id (inferior_ptid);
8728
8729   update_global_location_list_nothrow (1);
8730
8731   return b;
8732 }
8733
8734 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8735    The new breakpoint will have type TYPE, and use OPS as it
8736    breakpoint_ops.  */
8737
8738 static struct breakpoint *
8739 momentary_breakpoint_from_master (struct breakpoint *orig,
8740                                   enum bptype type,
8741                                   const struct breakpoint_ops *ops)
8742 {
8743   struct breakpoint *copy;
8744
8745   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8746   copy->loc = allocate_bp_location (copy);
8747   set_breakpoint_location_function (copy->loc, 1);
8748
8749   copy->loc->gdbarch = orig->loc->gdbarch;
8750   copy->loc->requested_address = orig->loc->requested_address;
8751   copy->loc->address = orig->loc->address;
8752   copy->loc->section = orig->loc->section;
8753   copy->loc->pspace = orig->loc->pspace;
8754   copy->loc->probe = orig->loc->probe;
8755   copy->loc->line_number = orig->loc->line_number;
8756   copy->loc->symtab = orig->loc->symtab;
8757   copy->frame_id = orig->frame_id;
8758   copy->thread = orig->thread;
8759   copy->pspace = orig->pspace;
8760
8761   copy->enable_state = bp_enabled;
8762   copy->disposition = disp_donttouch;
8763   copy->number = internal_breakpoint_number--;
8764
8765   update_global_location_list_nothrow (0);
8766   return copy;
8767 }
8768
8769 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8770    ORIG is NULL.  */
8771
8772 struct breakpoint *
8773 clone_momentary_breakpoint (struct breakpoint *orig)
8774 {
8775   /* If there's nothing to clone, then return nothing.  */
8776   if (orig == NULL)
8777     return NULL;
8778
8779   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8780 }
8781
8782 struct breakpoint *
8783 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8784                                 enum bptype type)
8785 {
8786   struct symtab_and_line sal;
8787
8788   sal = find_pc_line (pc, 0);
8789   sal.pc = pc;
8790   sal.section = find_pc_overlay (pc);
8791   sal.explicit_pc = 1;
8792
8793   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8794 }
8795 \f
8796
8797 /* Tell the user we have just set a breakpoint B.  */
8798
8799 static void
8800 mention (struct breakpoint *b)
8801 {
8802   b->ops->print_mention (b);
8803   if (ui_out_is_mi_like_p (current_uiout))
8804     return;
8805   printf_filtered ("\n");
8806 }
8807 \f
8808
8809 static struct bp_location *
8810 add_location_to_breakpoint (struct breakpoint *b,
8811                             const struct symtab_and_line *sal)
8812 {
8813   struct bp_location *loc, **tmp;
8814   CORE_ADDR adjusted_address;
8815   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8816
8817   if (loc_gdbarch == NULL)
8818     loc_gdbarch = b->gdbarch;
8819
8820   /* Adjust the breakpoint's address prior to allocating a location.
8821      Once we call allocate_bp_location(), that mostly uninitialized
8822      location will be placed on the location chain.  Adjustment of the
8823      breakpoint may cause target_read_memory() to be called and we do
8824      not want its scan of the location chain to find a breakpoint and
8825      location that's only been partially initialized.  */
8826   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8827                                                 sal->pc, b->type);
8828
8829   loc = allocate_bp_location (b);
8830   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8831     ;
8832   *tmp = loc;
8833
8834   loc->requested_address = sal->pc;
8835   loc->address = adjusted_address;
8836   loc->pspace = sal->pspace;
8837   loc->probe = sal->probe;
8838   gdb_assert (loc->pspace != NULL);
8839   loc->section = sal->section;
8840   loc->gdbarch = loc_gdbarch;
8841   loc->line_number = sal->line;
8842   loc->symtab = sal->symtab;
8843
8844   set_breakpoint_location_function (loc,
8845                                     sal->explicit_pc || sal->explicit_line);
8846   return loc;
8847 }
8848 \f
8849
8850 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8851    return 0 otherwise.  */
8852
8853 static int
8854 bp_loc_is_permanent (struct bp_location *loc)
8855 {
8856   int len;
8857   CORE_ADDR addr;
8858   const gdb_byte *bpoint;
8859   gdb_byte *target_mem;
8860   struct cleanup *cleanup;
8861   int retval = 0;
8862
8863   gdb_assert (loc != NULL);
8864
8865   addr = loc->address;
8866   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8867
8868   /* Software breakpoints unsupported?  */
8869   if (bpoint == NULL)
8870     return 0;
8871
8872   target_mem = alloca (len);
8873
8874   /* Enable the automatic memory restoration from breakpoints while
8875      we read the memory.  Otherwise we could say about our temporary
8876      breakpoints they are permanent.  */
8877   cleanup = save_current_space_and_thread ();
8878
8879   switch_to_program_space_and_thread (loc->pspace);
8880   make_show_memory_breakpoints_cleanup (0);
8881
8882   if (target_read_memory (loc->address, target_mem, len) == 0
8883       && memcmp (target_mem, bpoint, len) == 0)
8884     retval = 1;
8885
8886   do_cleanups (cleanup);
8887
8888   return retval;
8889 }
8890
8891 /* Build a command list for the dprintf corresponding to the current
8892    settings of the dprintf style options.  */
8893
8894 static void
8895 update_dprintf_command_list (struct breakpoint *b)
8896 {
8897   char *dprintf_args = b->extra_string;
8898   char *printf_line = NULL;
8899
8900   if (!dprintf_args)
8901     return;
8902
8903   dprintf_args = skip_spaces (dprintf_args);
8904
8905   /* Allow a comma, as it may have terminated a location, but don't
8906      insist on it.  */
8907   if (*dprintf_args == ',')
8908     ++dprintf_args;
8909   dprintf_args = skip_spaces (dprintf_args);
8910
8911   if (*dprintf_args != '"')
8912     error (_("Bad format string, missing '\"'."));
8913
8914   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8915     printf_line = xstrprintf ("printf %s", dprintf_args);
8916   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8917     {
8918       if (!dprintf_function)
8919         error (_("No function supplied for dprintf call"));
8920
8921       if (dprintf_channel && strlen (dprintf_channel) > 0)
8922         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8923                                   dprintf_function,
8924                                   dprintf_channel,
8925                                   dprintf_args);
8926       else
8927         printf_line = xstrprintf ("call (void) %s (%s)",
8928                                   dprintf_function,
8929                                   dprintf_args);
8930     }
8931   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8932     {
8933       if (target_can_run_breakpoint_commands ())
8934         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8935       else
8936         {
8937           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8938           printf_line = xstrprintf ("printf %s", dprintf_args);
8939         }
8940     }
8941   else
8942     internal_error (__FILE__, __LINE__,
8943                     _("Invalid dprintf style."));
8944
8945   gdb_assert (printf_line != NULL);
8946   /* Manufacture a printf/continue sequence.  */
8947   {
8948     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8949
8950     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8951       {
8952         cont_cmd_line = xmalloc (sizeof (struct command_line));
8953         cont_cmd_line->control_type = simple_control;
8954         cont_cmd_line->body_count = 0;
8955         cont_cmd_line->body_list = NULL;
8956         cont_cmd_line->next = NULL;
8957         cont_cmd_line->line = xstrdup ("continue");
8958       }
8959
8960     printf_cmd_line = xmalloc (sizeof (struct command_line));
8961     printf_cmd_line->control_type = simple_control;
8962     printf_cmd_line->body_count = 0;
8963     printf_cmd_line->body_list = NULL;
8964     printf_cmd_line->next = cont_cmd_line;
8965     printf_cmd_line->line = printf_line;
8966
8967     breakpoint_set_commands (b, printf_cmd_line);
8968   }
8969 }
8970
8971 /* Update all dprintf commands, making their command lists reflect
8972    current style settings.  */
8973
8974 static void
8975 update_dprintf_commands (char *args, int from_tty,
8976                          struct cmd_list_element *c)
8977 {
8978   struct breakpoint *b;
8979
8980   ALL_BREAKPOINTS (b)
8981     {
8982       if (b->type == bp_dprintf)
8983         update_dprintf_command_list (b);
8984     }
8985 }
8986
8987 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8988    as textual description of the location, and COND_STRING
8989    as condition expression.  */
8990
8991 static void
8992 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8993                      struct symtabs_and_lines sals, char *addr_string,
8994                      char *filter, char *cond_string,
8995                      char *extra_string,
8996                      enum bptype type, enum bpdisp disposition,
8997                      int thread, int task, int ignore_count,
8998                      const struct breakpoint_ops *ops, int from_tty,
8999                      int enabled, int internal, unsigned flags,
9000                      int display_canonical)
9001 {
9002   int i;
9003
9004   if (type == bp_hardware_breakpoint)
9005     {
9006       int target_resources_ok;
9007
9008       i = hw_breakpoint_used_count ();
9009       target_resources_ok =
9010         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9011                                             i + 1, 0);
9012       if (target_resources_ok == 0)
9013         error (_("No hardware breakpoint support in the target."));
9014       else if (target_resources_ok < 0)
9015         error (_("Hardware breakpoints used exceeds limit."));
9016     }
9017
9018   gdb_assert (sals.nelts > 0);
9019
9020   for (i = 0; i < sals.nelts; ++i)
9021     {
9022       struct symtab_and_line sal = sals.sals[i];
9023       struct bp_location *loc;
9024
9025       if (from_tty)
9026         {
9027           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9028           if (!loc_gdbarch)
9029             loc_gdbarch = gdbarch;
9030
9031           describe_other_breakpoints (loc_gdbarch,
9032                                       sal.pspace, sal.pc, sal.section, thread);
9033         }
9034
9035       if (i == 0)
9036         {
9037           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9038           b->thread = thread;
9039           b->task = task;
9040
9041           b->cond_string = cond_string;
9042           b->extra_string = extra_string;
9043           b->ignore_count = ignore_count;
9044           b->enable_state = enabled ? bp_enabled : bp_disabled;
9045           b->disposition = disposition;
9046
9047           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9048             b->loc->inserted = 1;
9049
9050           if (type == bp_static_tracepoint)
9051             {
9052               struct tracepoint *t = (struct tracepoint *) b;
9053               struct static_tracepoint_marker marker;
9054
9055               if (strace_marker_p (b))
9056                 {
9057                   /* We already know the marker exists, otherwise, we
9058                      wouldn't see a sal for it.  */
9059                   char *p = &addr_string[3];
9060                   char *endp;
9061                   char *marker_str;
9062
9063                   p = skip_spaces (p);
9064
9065                   endp = skip_to_space (p);
9066
9067                   marker_str = savestring (p, endp - p);
9068                   t->static_trace_marker_id = marker_str;
9069
9070                   printf_filtered (_("Probed static tracepoint "
9071                                      "marker \"%s\"\n"),
9072                                    t->static_trace_marker_id);
9073                 }
9074               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9075                 {
9076                   t->static_trace_marker_id = xstrdup (marker.str_id);
9077                   release_static_tracepoint_marker (&marker);
9078
9079                   printf_filtered (_("Probed static tracepoint "
9080                                      "marker \"%s\"\n"),
9081                                    t->static_trace_marker_id);
9082                 }
9083               else
9084                 warning (_("Couldn't determine the static "
9085                            "tracepoint marker to probe"));
9086             }
9087
9088           loc = b->loc;
9089         }
9090       else
9091         {
9092           loc = add_location_to_breakpoint (b, &sal);
9093           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9094             loc->inserted = 1;
9095         }
9096
9097       if (bp_loc_is_permanent (loc))
9098         make_breakpoint_permanent (b);
9099
9100       if (b->cond_string)
9101         {
9102           char *arg = b->cond_string;
9103           loc->cond = parse_exp_1 (&arg, loc->address,
9104                                    block_for_pc (loc->address), 0);
9105           if (*arg)
9106               error (_("Garbage '%s' follows condition"), arg);
9107         }
9108
9109       /* Dynamic printf requires and uses additional arguments on the
9110          command line, otherwise it's an error.  */
9111       if (type == bp_dprintf)
9112         {
9113           if (b->extra_string)
9114             update_dprintf_command_list (b);
9115           else
9116             error (_("Format string required"));
9117         }
9118       else if (b->extra_string)
9119         error (_("Garbage '%s' at end of command"), b->extra_string);
9120     }
9121
9122   b->display_canonical = display_canonical;
9123   if (addr_string)
9124     b->addr_string = addr_string;
9125   else
9126     /* addr_string has to be used or breakpoint_re_set will delete
9127        me.  */
9128     b->addr_string
9129       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9130   b->filter = filter;
9131 }
9132
9133 static void
9134 create_breakpoint_sal (struct gdbarch *gdbarch,
9135                        struct symtabs_and_lines sals, char *addr_string,
9136                        char *filter, char *cond_string,
9137                        char *extra_string,
9138                        enum bptype type, enum bpdisp disposition,
9139                        int thread, int task, int ignore_count,
9140                        const struct breakpoint_ops *ops, int from_tty,
9141                        int enabled, int internal, unsigned flags,
9142                        int display_canonical)
9143 {
9144   struct breakpoint *b;
9145   struct cleanup *old_chain;
9146
9147   if (is_tracepoint_type (type))
9148     {
9149       struct tracepoint *t;
9150
9151       t = XCNEW (struct tracepoint);
9152       b = &t->base;
9153     }
9154   else
9155     b = XNEW (struct breakpoint);
9156
9157   old_chain = make_cleanup (xfree, b);
9158
9159   init_breakpoint_sal (b, gdbarch,
9160                        sals, addr_string,
9161                        filter, cond_string, extra_string,
9162                        type, disposition,
9163                        thread, task, ignore_count,
9164                        ops, from_tty,
9165                        enabled, internal, flags,
9166                        display_canonical);
9167   discard_cleanups (old_chain);
9168
9169   install_breakpoint (internal, b, 0);
9170 }
9171
9172 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9173    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9174    value.  COND_STRING, if not NULL, specified the condition to be
9175    used for all breakpoints.  Essentially the only case where
9176    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9177    function.  In that case, it's still not possible to specify
9178    separate conditions for different overloaded functions, so
9179    we take just a single condition string.
9180    
9181    NOTE: If the function succeeds, the caller is expected to cleanup
9182    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9183    array contents).  If the function fails (error() is called), the
9184    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9185    COND and SALS arrays and each of those arrays contents.  */
9186
9187 static void
9188 create_breakpoints_sal (struct gdbarch *gdbarch,
9189                         struct linespec_result *canonical,
9190                         char *cond_string, char *extra_string,
9191                         enum bptype type, enum bpdisp disposition,
9192                         int thread, int task, int ignore_count,
9193                         const struct breakpoint_ops *ops, int from_tty,
9194                         int enabled, int internal, unsigned flags)
9195 {
9196   int i;
9197   struct linespec_sals *lsal;
9198
9199   if (canonical->pre_expanded)
9200     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9201
9202   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9203     {
9204       /* Note that 'addr_string' can be NULL in the case of a plain
9205          'break', without arguments.  */
9206       char *addr_string = (canonical->addr_string
9207                            ? xstrdup (canonical->addr_string)
9208                            : NULL);
9209       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9210       struct cleanup *inner = make_cleanup (xfree, addr_string);
9211
9212       make_cleanup (xfree, filter_string);
9213       create_breakpoint_sal (gdbarch, lsal->sals,
9214                              addr_string,
9215                              filter_string,
9216                              cond_string, extra_string,
9217                              type, disposition,
9218                              thread, task, ignore_count, ops,
9219                              from_tty, enabled, internal, flags,
9220                              canonical->special_display);
9221       discard_cleanups (inner);
9222     }
9223 }
9224
9225 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9226    followed by conditionals.  On return, SALS contains an array of SAL
9227    addresses found.  ADDR_STRING contains a vector of (canonical)
9228    address strings.  ADDRESS points to the end of the SAL.
9229
9230    The array and the line spec strings are allocated on the heap, it is
9231    the caller's responsibility to free them.  */
9232
9233 static void
9234 parse_breakpoint_sals (char **address,
9235                        struct linespec_result *canonical)
9236 {
9237   /* If no arg given, or if first arg is 'if ', use the default
9238      breakpoint.  */
9239   if ((*address) == NULL
9240       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9241     {
9242       /* The last displayed codepoint, if it's valid, is our default breakpoint
9243          address.  */
9244       if (last_displayed_sal_is_valid ())
9245         {
9246           struct linespec_sals lsal;
9247           struct symtab_and_line sal;
9248           CORE_ADDR pc;
9249
9250           init_sal (&sal);              /* Initialize to zeroes.  */
9251           lsal.sals.sals = (struct symtab_and_line *)
9252             xmalloc (sizeof (struct symtab_and_line));
9253
9254           /* Set sal's pspace, pc, symtab, and line to the values
9255              corresponding to the last call to print_frame_info.
9256              Be sure to reinitialize LINE with NOTCURRENT == 0
9257              as the breakpoint line number is inappropriate otherwise.
9258              find_pc_line would adjust PC, re-set it back.  */
9259           get_last_displayed_sal (&sal);
9260           pc = sal.pc;
9261           sal = find_pc_line (pc, 0);
9262
9263           /* "break" without arguments is equivalent to "break *PC"
9264              where PC is the last displayed codepoint's address.  So
9265              make sure to set sal.explicit_pc to prevent GDB from
9266              trying to expand the list of sals to include all other
9267              instances with the same symtab and line.  */
9268           sal.pc = pc;
9269           sal.explicit_pc = 1;
9270
9271           lsal.sals.sals[0] = sal;
9272           lsal.sals.nelts = 1;
9273           lsal.canonical = NULL;
9274
9275           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9276         }
9277       else
9278         error (_("No default breakpoint address now."));
9279     }
9280   else
9281     {
9282       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9283
9284       /* Force almost all breakpoints to be in terms of the
9285          current_source_symtab (which is decode_line_1's default).
9286          This should produce the results we want almost all of the
9287          time while leaving default_breakpoint_* alone.
9288
9289          ObjC: However, don't match an Objective-C method name which
9290          may have a '+' or '-' succeeded by a '['.  */
9291       if (last_displayed_sal_is_valid ()
9292           && (!cursal.symtab
9293               || ((strchr ("+-", (*address)[0]) != NULL)
9294                   && ((*address)[1] != '['))))
9295         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9296                           get_last_displayed_symtab (),
9297                           get_last_displayed_line (),
9298                           canonical, NULL, NULL);
9299       else
9300         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9301                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9302     }
9303 }
9304
9305
9306 /* Convert each SAL into a real PC.  Verify that the PC can be
9307    inserted as a breakpoint.  If it can't throw an error.  */
9308
9309 static void
9310 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9311 {    
9312   int i;
9313
9314   for (i = 0; i < sals->nelts; i++)
9315     resolve_sal_pc (&sals->sals[i]);
9316 }
9317
9318 /* Fast tracepoints may have restrictions on valid locations.  For
9319    instance, a fast tracepoint using a jump instead of a trap will
9320    likely have to overwrite more bytes than a trap would, and so can
9321    only be placed where the instruction is longer than the jump, or a
9322    multi-instruction sequence does not have a jump into the middle of
9323    it, etc.  */
9324
9325 static void
9326 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9327                             struct symtabs_and_lines *sals)
9328 {
9329   int i, rslt;
9330   struct symtab_and_line *sal;
9331   char *msg;
9332   struct cleanup *old_chain;
9333
9334   for (i = 0; i < sals->nelts; i++)
9335     {
9336       struct gdbarch *sarch;
9337
9338       sal = &sals->sals[i];
9339
9340       sarch = get_sal_arch (*sal);
9341       /* We fall back to GDBARCH if there is no architecture
9342          associated with SAL.  */
9343       if (sarch == NULL)
9344         sarch = gdbarch;
9345       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9346                                                NULL, &msg);
9347       old_chain = make_cleanup (xfree, msg);
9348
9349       if (!rslt)
9350         error (_("May not have a fast tracepoint at 0x%s%s"),
9351                paddress (sarch, sal->pc), (msg ? msg : ""));
9352
9353       do_cleanups (old_chain);
9354     }
9355 }
9356
9357 /* Issue an invalid thread ID error.  */
9358
9359 static void ATTRIBUTE_NORETURN
9360 invalid_thread_id_error (int id)
9361 {
9362   error (_("Unknown thread %d."), id);
9363 }
9364
9365 /* Given TOK, a string specification of condition and thread, as
9366    accepted by the 'break' command, extract the condition
9367    string and thread number and set *COND_STRING and *THREAD.
9368    PC identifies the context at which the condition should be parsed.
9369    If no condition is found, *COND_STRING is set to NULL.
9370    If no thread is found, *THREAD is set to -1.  */
9371
9372 static void
9373 find_condition_and_thread (char *tok, CORE_ADDR pc,
9374                            char **cond_string, int *thread, int *task,
9375                            char **rest)
9376 {
9377   *cond_string = NULL;
9378   *thread = -1;
9379   *task = 0;
9380   *rest = NULL;
9381
9382   while (tok && *tok)
9383     {
9384       char *end_tok;
9385       int toklen;
9386       char *cond_start = NULL;
9387       char *cond_end = NULL;
9388
9389       tok = skip_spaces (tok);
9390
9391       if ((*tok == '"' || *tok == ',') && rest)
9392         {
9393           *rest = savestring (tok, strlen (tok));
9394           return;
9395         }
9396
9397       end_tok = skip_to_space (tok);
9398
9399       toklen = end_tok - tok;
9400
9401       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9402         {
9403           struct expression *expr;
9404
9405           tok = cond_start = end_tok + 1;
9406           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9407           xfree (expr);
9408           cond_end = tok;
9409           *cond_string = savestring (cond_start, cond_end - cond_start);
9410         }
9411       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9412         {
9413           char *tmptok;
9414
9415           tok = end_tok + 1;
9416           tmptok = tok;
9417           *thread = strtol (tok, &tok, 0);
9418           if (tok == tmptok)
9419             error (_("Junk after thread keyword."));
9420           if (!valid_thread_id (*thread))
9421             invalid_thread_id_error (*thread);
9422         }
9423       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9424         {
9425           char *tmptok;
9426
9427           tok = end_tok + 1;
9428           tmptok = tok;
9429           *task = strtol (tok, &tok, 0);
9430           if (tok == tmptok)
9431             error (_("Junk after task keyword."));
9432           if (!valid_task_id (*task))
9433             error (_("Unknown task %d."), *task);
9434         }
9435       else if (rest)
9436         {
9437           *rest = savestring (tok, strlen (tok));
9438           return;
9439         }
9440       else
9441         error (_("Junk at end of arguments."));
9442     }
9443 }
9444
9445 /* Decode a static tracepoint marker spec.  */
9446
9447 static struct symtabs_and_lines
9448 decode_static_tracepoint_spec (char **arg_p)
9449 {
9450   VEC(static_tracepoint_marker_p) *markers = NULL;
9451   struct symtabs_and_lines sals;
9452   struct cleanup *old_chain;
9453   char *p = &(*arg_p)[3];
9454   char *endp;
9455   char *marker_str;
9456   int i;
9457
9458   p = skip_spaces (p);
9459
9460   endp = skip_to_space (p);
9461
9462   marker_str = savestring (p, endp - p);
9463   old_chain = make_cleanup (xfree, marker_str);
9464
9465   markers = target_static_tracepoint_markers_by_strid (marker_str);
9466   if (VEC_empty(static_tracepoint_marker_p, markers))
9467     error (_("No known static tracepoint marker named %s"), marker_str);
9468
9469   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9470   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9471
9472   for (i = 0; i < sals.nelts; i++)
9473     {
9474       struct static_tracepoint_marker *marker;
9475
9476       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9477
9478       init_sal (&sals.sals[i]);
9479
9480       sals.sals[i] = find_pc_line (marker->address, 0);
9481       sals.sals[i].pc = marker->address;
9482
9483       release_static_tracepoint_marker (marker);
9484     }
9485
9486   do_cleanups (old_chain);
9487
9488   *arg_p = endp;
9489   return sals;
9490 }
9491
9492 /* Set a breakpoint.  This function is shared between CLI and MI
9493    functions for setting a breakpoint.  This function has two major
9494    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9495    parameter.  If non-zero, the function will parse arg, extracting
9496    breakpoint location, address and thread.  Otherwise, ARG is just
9497    the location of breakpoint, with condition and thread specified by
9498    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9499    the breakpoint number will be allocated from the internal
9500    breakpoint count.  Returns true if any breakpoint was created;
9501    false otherwise.  */
9502
9503 int
9504 create_breakpoint (struct gdbarch *gdbarch,
9505                    char *arg, char *cond_string,
9506                    int thread, char *extra_string,
9507                    int parse_condition_and_thread,
9508                    int tempflag, enum bptype type_wanted,
9509                    int ignore_count,
9510                    enum auto_boolean pending_break_support,
9511                    const struct breakpoint_ops *ops,
9512                    int from_tty, int enabled, int internal,
9513                    unsigned flags)
9514 {
9515   volatile struct gdb_exception e;
9516   char *copy_arg = NULL;
9517   char *addr_start = arg;
9518   struct linespec_result canonical;
9519   struct cleanup *old_chain;
9520   struct cleanup *bkpt_chain = NULL;
9521   int pending = 0;
9522   int task = 0;
9523   int prev_bkpt_count = breakpoint_count;
9524
9525   gdb_assert (ops != NULL);
9526
9527   init_linespec_result (&canonical);
9528
9529   TRY_CATCH (e, RETURN_MASK_ALL)
9530     {
9531       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9532                                      addr_start, &copy_arg);
9533     }
9534
9535   /* If caller is interested in rc value from parse, set value.  */
9536   switch (e.reason)
9537     {
9538     case GDB_NO_ERROR:
9539       if (VEC_empty (linespec_sals, canonical.sals))
9540         return 0;
9541       break;
9542     case RETURN_ERROR:
9543       switch (e.error)
9544         {
9545         case NOT_FOUND_ERROR:
9546
9547           /* If pending breakpoint support is turned off, throw
9548              error.  */
9549
9550           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9551             throw_exception (e);
9552
9553           exception_print (gdb_stderr, e);
9554
9555           /* If pending breakpoint support is auto query and the user
9556              selects no, then simply return the error code.  */
9557           if (pending_break_support == AUTO_BOOLEAN_AUTO
9558               && !nquery (_("Make %s pending on future shared library load? "),
9559                           bptype_string (type_wanted)))
9560             return 0;
9561
9562           /* At this point, either the user was queried about setting
9563              a pending breakpoint and selected yes, or pending
9564              breakpoint behavior is on and thus a pending breakpoint
9565              is defaulted on behalf of the user.  */
9566           {
9567             struct linespec_sals lsal;
9568
9569             copy_arg = xstrdup (addr_start);
9570             lsal.canonical = xstrdup (copy_arg);
9571             lsal.sals.nelts = 1;
9572             lsal.sals.sals = XNEW (struct symtab_and_line);
9573             init_sal (&lsal.sals.sals[0]);
9574             pending = 1;
9575             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9576           }
9577           break;
9578         default:
9579           throw_exception (e);
9580         }
9581       break;
9582     default:
9583       throw_exception (e);
9584     }
9585
9586   /* Create a chain of things that always need to be cleaned up.  */
9587   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9588
9589   /* ----------------------------- SNIP -----------------------------
9590      Anything added to the cleanup chain beyond this point is assumed
9591      to be part of a breakpoint.  If the breakpoint create succeeds
9592      then the memory is not reclaimed.  */
9593   bkpt_chain = make_cleanup (null_cleanup, 0);
9594
9595   /* Resolve all line numbers to PC's and verify that the addresses
9596      are ok for the target.  */
9597   if (!pending)
9598     {
9599       int ix;
9600       struct linespec_sals *iter;
9601
9602       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9603         breakpoint_sals_to_pc (&iter->sals);
9604     }
9605
9606   /* Fast tracepoints may have additional restrictions on location.  */
9607   if (!pending && type_wanted == bp_fast_tracepoint)
9608     {
9609       int ix;
9610       struct linespec_sals *iter;
9611
9612       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9613         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9614     }
9615
9616   /* Verify that condition can be parsed, before setting any
9617      breakpoints.  Allocate a separate condition expression for each
9618      breakpoint.  */
9619   if (!pending)
9620     {
9621       struct linespec_sals *lsal;
9622
9623       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9624
9625       if (parse_condition_and_thread)
9626         {
9627             char *rest;
9628             /* Here we only parse 'arg' to separate condition
9629                from thread number, so parsing in context of first
9630                sal is OK.  When setting the breakpoint we'll 
9631                re-parse it in context of each sal.  */
9632
9633             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9634                                        &thread, &task, &rest);
9635             if (cond_string)
9636                 make_cleanup (xfree, cond_string);
9637             if (rest)
9638               make_cleanup (xfree, rest);
9639             if (rest)
9640               extra_string = rest;
9641         }
9642       else
9643         {
9644             /* Create a private copy of condition string.  */
9645             if (cond_string)
9646             {
9647                 cond_string = xstrdup (cond_string);
9648                 make_cleanup (xfree, cond_string);
9649             }
9650             /* Create a private copy of any extra string.  */
9651             if (extra_string)
9652               {
9653                 extra_string = xstrdup (extra_string);
9654                 make_cleanup (xfree, extra_string);
9655               }
9656         }
9657
9658       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9659                                    cond_string, extra_string, type_wanted,
9660                                    tempflag ? disp_del : disp_donttouch,
9661                                    thread, task, ignore_count, ops,
9662                                    from_tty, enabled, internal, flags);
9663     }
9664   else
9665     {
9666       struct breakpoint *b;
9667
9668       make_cleanup (xfree, copy_arg);
9669
9670       if (is_tracepoint_type (type_wanted))
9671         {
9672           struct tracepoint *t;
9673
9674           t = XCNEW (struct tracepoint);
9675           b = &t->base;
9676         }
9677       else
9678         b = XNEW (struct breakpoint);
9679
9680       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9681
9682       b->addr_string = copy_arg;
9683       if (parse_condition_and_thread)
9684         b->cond_string = NULL;
9685       else
9686         {
9687           /* Create a private copy of condition string.  */
9688           if (cond_string)
9689             {
9690               cond_string = xstrdup (cond_string);
9691               make_cleanup (xfree, cond_string);
9692             }
9693           b->cond_string = cond_string;
9694         }
9695       b->extra_string = NULL;
9696       b->ignore_count = ignore_count;
9697       b->disposition = tempflag ? disp_del : disp_donttouch;
9698       b->condition_not_parsed = 1;
9699       b->enable_state = enabled ? bp_enabled : bp_disabled;
9700       if ((type_wanted != bp_breakpoint
9701            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9702         b->pspace = current_program_space;
9703
9704       install_breakpoint (internal, b, 0);
9705     }
9706   
9707   if (VEC_length (linespec_sals, canonical.sals) > 1)
9708     {
9709       warning (_("Multiple breakpoints were set.\nUse the "
9710                  "\"delete\" command to delete unwanted breakpoints."));
9711       prev_breakpoint_count = prev_bkpt_count;
9712     }
9713
9714   /* That's it.  Discard the cleanups for data inserted into the
9715      breakpoint.  */
9716   discard_cleanups (bkpt_chain);
9717   /* But cleanup everything else.  */
9718   do_cleanups (old_chain);
9719
9720   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9721   update_global_location_list (1);
9722
9723   return 1;
9724 }
9725
9726 /* Set a breakpoint.
9727    ARG is a string describing breakpoint address,
9728    condition, and thread.
9729    FLAG specifies if a breakpoint is hardware on,
9730    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9731    and BP_TEMPFLAG.  */
9732
9733 static void
9734 break_command_1 (char *arg, int flag, int from_tty)
9735 {
9736   int tempflag = flag & BP_TEMPFLAG;
9737   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9738                              ? bp_hardware_breakpoint
9739                              : bp_breakpoint);
9740   struct breakpoint_ops *ops;
9741   const char *arg_cp = arg;
9742
9743   /* Matching breakpoints on probes.  */
9744   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9745     ops = &bkpt_probe_breakpoint_ops;
9746   else
9747     ops = &bkpt_breakpoint_ops;
9748
9749   create_breakpoint (get_current_arch (),
9750                      arg,
9751                      NULL, 0, NULL, 1 /* parse arg */,
9752                      tempflag, type_wanted,
9753                      0 /* Ignore count */,
9754                      pending_break_support,
9755                      ops,
9756                      from_tty,
9757                      1 /* enabled */,
9758                      0 /* internal */,
9759                      0);
9760 }
9761
9762 /* Helper function for break_command_1 and disassemble_command.  */
9763
9764 void
9765 resolve_sal_pc (struct symtab_and_line *sal)
9766 {
9767   CORE_ADDR pc;
9768
9769   if (sal->pc == 0 && sal->symtab != NULL)
9770     {
9771       if (!find_line_pc (sal->symtab, sal->line, &pc))
9772         error (_("No line %d in file \"%s\"."),
9773                sal->line, sal->symtab->filename);
9774       sal->pc = pc;
9775
9776       /* If this SAL corresponds to a breakpoint inserted using a line
9777          number, then skip the function prologue if necessary.  */
9778       if (sal->explicit_line)
9779         skip_prologue_sal (sal);
9780     }
9781
9782   if (sal->section == 0 && sal->symtab != NULL)
9783     {
9784       struct blockvector *bv;
9785       struct block *b;
9786       struct symbol *sym;
9787
9788       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9789       if (bv != NULL)
9790         {
9791           sym = block_linkage_function (b);
9792           if (sym != NULL)
9793             {
9794               fixup_symbol_section (sym, sal->symtab->objfile);
9795               sal->section = SYMBOL_OBJ_SECTION (sym);
9796             }
9797           else
9798             {
9799               /* It really is worthwhile to have the section, so we'll
9800                  just have to look harder. This case can be executed
9801                  if we have line numbers but no functions (as can
9802                  happen in assembly source).  */
9803
9804               struct minimal_symbol *msym;
9805               struct cleanup *old_chain = save_current_space_and_thread ();
9806
9807               switch_to_program_space_and_thread (sal->pspace);
9808
9809               msym = lookup_minimal_symbol_by_pc (sal->pc);
9810               if (msym)
9811                 sal->section = SYMBOL_OBJ_SECTION (msym);
9812
9813               do_cleanups (old_chain);
9814             }
9815         }
9816     }
9817 }
9818
9819 void
9820 break_command (char *arg, int from_tty)
9821 {
9822   break_command_1 (arg, 0, from_tty);
9823 }
9824
9825 void
9826 tbreak_command (char *arg, int from_tty)
9827 {
9828   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9829 }
9830
9831 static void
9832 hbreak_command (char *arg, int from_tty)
9833 {
9834   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9835 }
9836
9837 static void
9838 thbreak_command (char *arg, int from_tty)
9839 {
9840   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9841 }
9842
9843 static void
9844 stop_command (char *arg, int from_tty)
9845 {
9846   printf_filtered (_("Specify the type of breakpoint to set.\n\
9847 Usage: stop in <function | address>\n\
9848        stop at <line>\n"));
9849 }
9850
9851 static void
9852 stopin_command (char *arg, int from_tty)
9853 {
9854   int badInput = 0;
9855
9856   if (arg == (char *) NULL)
9857     badInput = 1;
9858   else if (*arg != '*')
9859     {
9860       char *argptr = arg;
9861       int hasColon = 0;
9862
9863       /* Look for a ':'.  If this is a line number specification, then
9864          say it is bad, otherwise, it should be an address or
9865          function/method name.  */
9866       while (*argptr && !hasColon)
9867         {
9868           hasColon = (*argptr == ':');
9869           argptr++;
9870         }
9871
9872       if (hasColon)
9873         badInput = (*argptr != ':');    /* Not a class::method */
9874       else
9875         badInput = isdigit (*arg);      /* a simple line number */
9876     }
9877
9878   if (badInput)
9879     printf_filtered (_("Usage: stop in <function | address>\n"));
9880   else
9881     break_command_1 (arg, 0, from_tty);
9882 }
9883
9884 static void
9885 stopat_command (char *arg, int from_tty)
9886 {
9887   int badInput = 0;
9888
9889   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9890     badInput = 1;
9891   else
9892     {
9893       char *argptr = arg;
9894       int hasColon = 0;
9895
9896       /* Look for a ':'.  If there is a '::' then get out, otherwise
9897          it is probably a line number.  */
9898       while (*argptr && !hasColon)
9899         {
9900           hasColon = (*argptr == ':');
9901           argptr++;
9902         }
9903
9904       if (hasColon)
9905         badInput = (*argptr == ':');    /* we have class::method */
9906       else
9907         badInput = !isdigit (*arg);     /* not a line number */
9908     }
9909
9910   if (badInput)
9911     printf_filtered (_("Usage: stop at <line>\n"));
9912   else
9913     break_command_1 (arg, 0, from_tty);
9914 }
9915
9916 /* The dynamic printf command is mostly like a regular breakpoint, but
9917    with a prewired command list consisting of a single output command,
9918    built from extra arguments supplied on the dprintf command
9919    line.  */
9920
9921 static void
9922 dprintf_command (char *arg, int from_tty)
9923 {
9924   create_breakpoint (get_current_arch (),
9925                      arg,
9926                      NULL, 0, NULL, 1 /* parse arg */,
9927                      0, bp_dprintf,
9928                      0 /* Ignore count */,
9929                      pending_break_support,
9930                      &dprintf_breakpoint_ops,
9931                      from_tty,
9932                      1 /* enabled */,
9933                      0 /* internal */,
9934                      0);
9935 }
9936
9937 static void
9938 agent_printf_command (char *arg, int from_tty)
9939 {
9940   error (_("May only run agent-printf on the target"));
9941 }
9942
9943 /* Implement the "breakpoint_hit" breakpoint_ops method for
9944    ranged breakpoints.  */
9945
9946 static int
9947 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9948                                   struct address_space *aspace,
9949                                   CORE_ADDR bp_addr,
9950                                   const struct target_waitstatus *ws)
9951 {
9952   if (ws->kind != TARGET_WAITKIND_STOPPED
9953       || ws->value.sig != GDB_SIGNAL_TRAP)
9954     return 0;
9955
9956   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9957                                          bl->length, aspace, bp_addr);
9958 }
9959
9960 /* Implement the "resources_needed" breakpoint_ops method for
9961    ranged breakpoints.  */
9962
9963 static int
9964 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9965 {
9966   return target_ranged_break_num_registers ();
9967 }
9968
9969 /* Implement the "print_it" breakpoint_ops method for
9970    ranged breakpoints.  */
9971
9972 static enum print_stop_action
9973 print_it_ranged_breakpoint (bpstat bs)
9974 {
9975   struct breakpoint *b = bs->breakpoint_at;
9976   struct bp_location *bl = b->loc;
9977   struct ui_out *uiout = current_uiout;
9978
9979   gdb_assert (b->type == bp_hardware_breakpoint);
9980
9981   /* Ranged breakpoints have only one location.  */
9982   gdb_assert (bl && bl->next == NULL);
9983
9984   annotate_breakpoint (b->number);
9985   if (b->disposition == disp_del)
9986     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9987   else
9988     ui_out_text (uiout, "\nRanged breakpoint ");
9989   if (ui_out_is_mi_like_p (uiout))
9990     {
9991       ui_out_field_string (uiout, "reason",
9992                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9993       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9994     }
9995   ui_out_field_int (uiout, "bkptno", b->number);
9996   ui_out_text (uiout, ", ");
9997
9998   return PRINT_SRC_AND_LOC;
9999 }
10000
10001 /* Implement the "print_one" breakpoint_ops method for
10002    ranged breakpoints.  */
10003
10004 static void
10005 print_one_ranged_breakpoint (struct breakpoint *b,
10006                              struct bp_location **last_loc)
10007 {
10008   struct bp_location *bl = b->loc;
10009   struct value_print_options opts;
10010   struct ui_out *uiout = current_uiout;
10011
10012   /* Ranged breakpoints have only one location.  */
10013   gdb_assert (bl && bl->next == NULL);
10014
10015   get_user_print_options (&opts);
10016
10017   if (opts.addressprint)
10018     /* We don't print the address range here, it will be printed later
10019        by print_one_detail_ranged_breakpoint.  */
10020     ui_out_field_skip (uiout, "addr");
10021   annotate_field (5);
10022   print_breakpoint_location (b, bl);
10023   *last_loc = bl;
10024 }
10025
10026 /* Implement the "print_one_detail" breakpoint_ops method for
10027    ranged breakpoints.  */
10028
10029 static void
10030 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10031                                     struct ui_out *uiout)
10032 {
10033   CORE_ADDR address_start, address_end;
10034   struct bp_location *bl = b->loc;
10035   struct ui_file *stb = mem_fileopen ();
10036   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10037
10038   gdb_assert (bl);
10039
10040   address_start = bl->address;
10041   address_end = address_start + bl->length - 1;
10042
10043   ui_out_text (uiout, "\taddress range: ");
10044   fprintf_unfiltered (stb, "[%s, %s]",
10045                       print_core_address (bl->gdbarch, address_start),
10046                       print_core_address (bl->gdbarch, address_end));
10047   ui_out_field_stream (uiout, "addr", stb);
10048   ui_out_text (uiout, "\n");
10049
10050   do_cleanups (cleanup);
10051 }
10052
10053 /* Implement the "print_mention" breakpoint_ops method for
10054    ranged breakpoints.  */
10055
10056 static void
10057 print_mention_ranged_breakpoint (struct breakpoint *b)
10058 {
10059   struct bp_location *bl = b->loc;
10060   struct ui_out *uiout = current_uiout;
10061
10062   gdb_assert (bl);
10063   gdb_assert (b->type == bp_hardware_breakpoint);
10064
10065   if (ui_out_is_mi_like_p (uiout))
10066     return;
10067
10068   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10069                    b->number, paddress (bl->gdbarch, bl->address),
10070                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10071 }
10072
10073 /* Implement the "print_recreate" breakpoint_ops method for
10074    ranged breakpoints.  */
10075
10076 static void
10077 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10078 {
10079   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10080                       b->addr_string_range_end);
10081   print_recreate_thread (b, fp);
10082 }
10083
10084 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10085
10086 static struct breakpoint_ops ranged_breakpoint_ops;
10087
10088 /* Find the address where the end of the breakpoint range should be
10089    placed, given the SAL of the end of the range.  This is so that if
10090    the user provides a line number, the end of the range is set to the
10091    last instruction of the given line.  */
10092
10093 static CORE_ADDR
10094 find_breakpoint_range_end (struct symtab_and_line sal)
10095 {
10096   CORE_ADDR end;
10097
10098   /* If the user provided a PC value, use it.  Otherwise,
10099      find the address of the end of the given location.  */
10100   if (sal.explicit_pc)
10101     end = sal.pc;
10102   else
10103     {
10104       int ret;
10105       CORE_ADDR start;
10106
10107       ret = find_line_pc_range (sal, &start, &end);
10108       if (!ret)
10109         error (_("Could not find location of the end of the range."));
10110
10111       /* find_line_pc_range returns the start of the next line.  */
10112       end--;
10113     }
10114
10115   return end;
10116 }
10117
10118 /* Implement the "break-range" CLI command.  */
10119
10120 static void
10121 break_range_command (char *arg, int from_tty)
10122 {
10123   char *arg_start, *addr_string_start, *addr_string_end;
10124   struct linespec_result canonical_start, canonical_end;
10125   int bp_count, can_use_bp, length;
10126   CORE_ADDR end;
10127   struct breakpoint *b;
10128   struct symtab_and_line sal_start, sal_end;
10129   struct cleanup *cleanup_bkpt;
10130   struct linespec_sals *lsal_start, *lsal_end;
10131
10132   /* We don't support software ranged breakpoints.  */
10133   if (target_ranged_break_num_registers () < 0)
10134     error (_("This target does not support hardware ranged breakpoints."));
10135
10136   bp_count = hw_breakpoint_used_count ();
10137   bp_count += target_ranged_break_num_registers ();
10138   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10139                                                    bp_count, 0);
10140   if (can_use_bp < 0)
10141     error (_("Hardware breakpoints used exceeds limit."));
10142
10143   arg = skip_spaces (arg);
10144   if (arg == NULL || arg[0] == '\0')
10145     error(_("No address range specified."));
10146
10147   init_linespec_result (&canonical_start);
10148
10149   arg_start = arg;
10150   parse_breakpoint_sals (&arg, &canonical_start);
10151
10152   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10153
10154   if (arg[0] != ',')
10155     error (_("Too few arguments."));
10156   else if (VEC_empty (linespec_sals, canonical_start.sals))
10157     error (_("Could not find location of the beginning of the range."));
10158
10159   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10160
10161   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10162       || lsal_start->sals.nelts != 1)
10163     error (_("Cannot create a ranged breakpoint with multiple locations."));
10164
10165   sal_start = lsal_start->sals.sals[0];
10166   addr_string_start = savestring (arg_start, arg - arg_start);
10167   make_cleanup (xfree, addr_string_start);
10168
10169   arg++;        /* Skip the comma.  */
10170   arg = skip_spaces (arg);
10171
10172   /* Parse the end location.  */
10173
10174   init_linespec_result (&canonical_end);
10175   arg_start = arg;
10176
10177   /* We call decode_line_full directly here instead of using
10178      parse_breakpoint_sals because we need to specify the start location's
10179      symtab and line as the default symtab and line for the end of the
10180      range.  This makes it possible to have ranges like "foo.c:27, +14",
10181      where +14 means 14 lines from the start location.  */
10182   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10183                     sal_start.symtab, sal_start.line,
10184                     &canonical_end, NULL, NULL);
10185
10186   make_cleanup_destroy_linespec_result (&canonical_end);
10187
10188   if (VEC_empty (linespec_sals, canonical_end.sals))
10189     error (_("Could not find location of the end of the range."));
10190
10191   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10192   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10193       || lsal_end->sals.nelts != 1)
10194     error (_("Cannot create a ranged breakpoint with multiple locations."));
10195
10196   sal_end = lsal_end->sals.sals[0];
10197   addr_string_end = savestring (arg_start, arg - arg_start);
10198   make_cleanup (xfree, addr_string_end);
10199
10200   end = find_breakpoint_range_end (sal_end);
10201   if (sal_start.pc > end)
10202     error (_("Invalid address range, end precedes start."));
10203
10204   length = end - sal_start.pc + 1;
10205   if (length < 0)
10206     /* Length overflowed.  */
10207     error (_("Address range too large."));
10208   else if (length == 1)
10209     {
10210       /* This range is simple enough to be handled by
10211          the `hbreak' command.  */
10212       hbreak_command (addr_string_start, 1);
10213
10214       do_cleanups (cleanup_bkpt);
10215
10216       return;
10217     }
10218
10219   /* Now set up the breakpoint.  */
10220   b = set_raw_breakpoint (get_current_arch (), sal_start,
10221                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10222   set_breakpoint_count (breakpoint_count + 1);
10223   b->number = breakpoint_count;
10224   b->disposition = disp_donttouch;
10225   b->addr_string = xstrdup (addr_string_start);
10226   b->addr_string_range_end = xstrdup (addr_string_end);
10227   b->loc->length = length;
10228
10229   do_cleanups (cleanup_bkpt);
10230
10231   mention (b);
10232   observer_notify_breakpoint_created (b);
10233   update_global_location_list (1);
10234 }
10235
10236 /*  Return non-zero if EXP is verified as constant.  Returned zero
10237     means EXP is variable.  Also the constant detection may fail for
10238     some constant expressions and in such case still falsely return
10239     zero.  */
10240
10241 static int
10242 watchpoint_exp_is_const (const struct expression *exp)
10243 {
10244   int i = exp->nelts;
10245
10246   while (i > 0)
10247     {
10248       int oplenp, argsp;
10249
10250       /* We are only interested in the descriptor of each element.  */
10251       operator_length (exp, i, &oplenp, &argsp);
10252       i -= oplenp;
10253
10254       switch (exp->elts[i].opcode)
10255         {
10256         case BINOP_ADD:
10257         case BINOP_SUB:
10258         case BINOP_MUL:
10259         case BINOP_DIV:
10260         case BINOP_REM:
10261         case BINOP_MOD:
10262         case BINOP_LSH:
10263         case BINOP_RSH:
10264         case BINOP_LOGICAL_AND:
10265         case BINOP_LOGICAL_OR:
10266         case BINOP_BITWISE_AND:
10267         case BINOP_BITWISE_IOR:
10268         case BINOP_BITWISE_XOR:
10269         case BINOP_EQUAL:
10270         case BINOP_NOTEQUAL:
10271         case BINOP_LESS:
10272         case BINOP_GTR:
10273         case BINOP_LEQ:
10274         case BINOP_GEQ:
10275         case BINOP_REPEAT:
10276         case BINOP_COMMA:
10277         case BINOP_EXP:
10278         case BINOP_MIN:
10279         case BINOP_MAX:
10280         case BINOP_INTDIV:
10281         case BINOP_CONCAT:
10282         case BINOP_IN:
10283         case BINOP_RANGE:
10284         case TERNOP_COND:
10285         case TERNOP_SLICE:
10286
10287         case OP_LONG:
10288         case OP_DOUBLE:
10289         case OP_DECFLOAT:
10290         case OP_LAST:
10291         case OP_COMPLEX:
10292         case OP_STRING:
10293         case OP_ARRAY:
10294         case OP_TYPE:
10295         case OP_TYPEOF:
10296         case OP_DECLTYPE:
10297         case OP_NAME:
10298         case OP_OBJC_NSSTRING:
10299
10300         case UNOP_NEG:
10301         case UNOP_LOGICAL_NOT:
10302         case UNOP_COMPLEMENT:
10303         case UNOP_ADDR:
10304         case UNOP_HIGH:
10305         case UNOP_CAST:
10306
10307         case UNOP_CAST_TYPE:
10308         case UNOP_REINTERPRET_CAST:
10309         case UNOP_DYNAMIC_CAST:
10310           /* Unary, binary and ternary operators: We have to check
10311              their operands.  If they are constant, then so is the
10312              result of that operation.  For instance, if A and B are
10313              determined to be constants, then so is "A + B".
10314
10315              UNOP_IND is one exception to the rule above, because the
10316              value of *ADDR is not necessarily a constant, even when
10317              ADDR is.  */
10318           break;
10319
10320         case OP_VAR_VALUE:
10321           /* Check whether the associated symbol is a constant.
10322
10323              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10324              possible that a buggy compiler could mark a variable as
10325              constant even when it is not, and TYPE_CONST would return
10326              true in this case, while SYMBOL_CLASS wouldn't.
10327
10328              We also have to check for function symbols because they
10329              are always constant.  */
10330           {
10331             struct symbol *s = exp->elts[i + 2].symbol;
10332
10333             if (SYMBOL_CLASS (s) != LOC_BLOCK
10334                 && SYMBOL_CLASS (s) != LOC_CONST
10335                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10336               return 0;
10337             break;
10338           }
10339
10340         /* The default action is to return 0 because we are using
10341            the optimistic approach here: If we don't know something,
10342            then it is not a constant.  */
10343         default:
10344           return 0;
10345         }
10346     }
10347
10348   return 1;
10349 }
10350
10351 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10352
10353 static void
10354 dtor_watchpoint (struct breakpoint *self)
10355 {
10356   struct watchpoint *w = (struct watchpoint *) self;
10357
10358   xfree (w->cond_exp);
10359   xfree (w->exp);
10360   xfree (w->exp_string);
10361   xfree (w->exp_string_reparse);
10362   value_free (w->val);
10363
10364   base_breakpoint_ops.dtor (self);
10365 }
10366
10367 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10368
10369 static void
10370 re_set_watchpoint (struct breakpoint *b)
10371 {
10372   struct watchpoint *w = (struct watchpoint *) b;
10373
10374   /* Watchpoint can be either on expression using entirely global
10375      variables, or it can be on local variables.
10376
10377      Watchpoints of the first kind are never auto-deleted, and even
10378      persist across program restarts.  Since they can use variables
10379      from shared libraries, we need to reparse expression as libraries
10380      are loaded and unloaded.
10381
10382      Watchpoints on local variables can also change meaning as result
10383      of solib event.  For example, if a watchpoint uses both a local
10384      and a global variables in expression, it's a local watchpoint,
10385      but unloading of a shared library will make the expression
10386      invalid.  This is not a very common use case, but we still
10387      re-evaluate expression, to avoid surprises to the user.
10388
10389      Note that for local watchpoints, we re-evaluate it only if
10390      watchpoints frame id is still valid.  If it's not, it means the
10391      watchpoint is out of scope and will be deleted soon.  In fact,
10392      I'm not sure we'll ever be called in this case.
10393
10394      If a local watchpoint's frame id is still valid, then
10395      w->exp_valid_block is likewise valid, and we can safely use it.
10396
10397      Don't do anything about disabled watchpoints, since they will be
10398      reevaluated again when enabled.  */
10399   update_watchpoint (w, 1 /* reparse */);
10400 }
10401
10402 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10403
10404 static int
10405 insert_watchpoint (struct bp_location *bl)
10406 {
10407   struct watchpoint *w = (struct watchpoint *) bl->owner;
10408   int length = w->exact ? 1 : bl->length;
10409
10410   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10411                                    w->cond_exp);
10412 }
10413
10414 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10415
10416 static int
10417 remove_watchpoint (struct bp_location *bl)
10418 {
10419   struct watchpoint *w = (struct watchpoint *) bl->owner;
10420   int length = w->exact ? 1 : bl->length;
10421
10422   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10423                                    w->cond_exp);
10424 }
10425
10426 static int
10427 breakpoint_hit_watchpoint (const struct bp_location *bl,
10428                            struct address_space *aspace, CORE_ADDR bp_addr,
10429                            const struct target_waitstatus *ws)
10430 {
10431   struct breakpoint *b = bl->owner;
10432   struct watchpoint *w = (struct watchpoint *) b;
10433
10434   /* Continuable hardware watchpoints are treated as non-existent if the
10435      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10436      some data address).  Otherwise gdb won't stop on a break instruction
10437      in the code (not from a breakpoint) when a hardware watchpoint has
10438      been defined.  Also skip watchpoints which we know did not trigger
10439      (did not match the data address).  */
10440   if (is_hardware_watchpoint (b)
10441       && w->watchpoint_triggered == watch_triggered_no)
10442     return 0;
10443
10444   return 1;
10445 }
10446
10447 static void
10448 check_status_watchpoint (bpstat bs)
10449 {
10450   gdb_assert (is_watchpoint (bs->breakpoint_at));
10451
10452   bpstat_check_watchpoint (bs);
10453 }
10454
10455 /* Implement the "resources_needed" breakpoint_ops method for
10456    hardware watchpoints.  */
10457
10458 static int
10459 resources_needed_watchpoint (const struct bp_location *bl)
10460 {
10461   struct watchpoint *w = (struct watchpoint *) bl->owner;
10462   int length = w->exact? 1 : bl->length;
10463
10464   return target_region_ok_for_hw_watchpoint (bl->address, length);
10465 }
10466
10467 /* Implement the "works_in_software_mode" breakpoint_ops method for
10468    hardware watchpoints.  */
10469
10470 static int
10471 works_in_software_mode_watchpoint (const struct breakpoint *b)
10472 {
10473   /* Read and access watchpoints only work with hardware support.  */
10474   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10475 }
10476
10477 static enum print_stop_action
10478 print_it_watchpoint (bpstat bs)
10479 {
10480   struct cleanup *old_chain;
10481   struct breakpoint *b;
10482   const struct bp_location *bl;
10483   struct ui_file *stb;
10484   enum print_stop_action result;
10485   struct watchpoint *w;
10486   struct ui_out *uiout = current_uiout;
10487
10488   gdb_assert (bs->bp_location_at != NULL);
10489
10490   bl = bs->bp_location_at;
10491   b = bs->breakpoint_at;
10492   w = (struct watchpoint *) b;
10493
10494   stb = mem_fileopen ();
10495   old_chain = make_cleanup_ui_file_delete (stb);
10496
10497   switch (b->type)
10498     {
10499     case bp_watchpoint:
10500     case bp_hardware_watchpoint:
10501       annotate_watchpoint (b->number);
10502       if (ui_out_is_mi_like_p (uiout))
10503         ui_out_field_string
10504           (uiout, "reason",
10505            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10506       mention (b);
10507       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10508       ui_out_text (uiout, "\nOld value = ");
10509       watchpoint_value_print (bs->old_val, stb);
10510       ui_out_field_stream (uiout, "old", stb);
10511       ui_out_text (uiout, "\nNew value = ");
10512       watchpoint_value_print (w->val, stb);
10513       ui_out_field_stream (uiout, "new", stb);
10514       ui_out_text (uiout, "\n");
10515       /* More than one watchpoint may have been triggered.  */
10516       result = PRINT_UNKNOWN;
10517       break;
10518
10519     case bp_read_watchpoint:
10520       if (ui_out_is_mi_like_p (uiout))
10521         ui_out_field_string
10522           (uiout, "reason",
10523            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10524       mention (b);
10525       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10526       ui_out_text (uiout, "\nValue = ");
10527       watchpoint_value_print (w->val, stb);
10528       ui_out_field_stream (uiout, "value", stb);
10529       ui_out_text (uiout, "\n");
10530       result = PRINT_UNKNOWN;
10531       break;
10532
10533     case bp_access_watchpoint:
10534       if (bs->old_val != NULL)
10535         {
10536           annotate_watchpoint (b->number);
10537           if (ui_out_is_mi_like_p (uiout))
10538             ui_out_field_string
10539               (uiout, "reason",
10540                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10541           mention (b);
10542           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10543           ui_out_text (uiout, "\nOld value = ");
10544           watchpoint_value_print (bs->old_val, stb);
10545           ui_out_field_stream (uiout, "old", stb);
10546           ui_out_text (uiout, "\nNew value = ");
10547         }
10548       else
10549         {
10550           mention (b);
10551           if (ui_out_is_mi_like_p (uiout))
10552             ui_out_field_string
10553               (uiout, "reason",
10554                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10555           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10556           ui_out_text (uiout, "\nValue = ");
10557         }
10558       watchpoint_value_print (w->val, stb);
10559       ui_out_field_stream (uiout, "new", stb);
10560       ui_out_text (uiout, "\n");
10561       result = PRINT_UNKNOWN;
10562       break;
10563     default:
10564       result = PRINT_UNKNOWN;
10565     }
10566
10567   do_cleanups (old_chain);
10568   return result;
10569 }
10570
10571 /* Implement the "print_mention" breakpoint_ops method for hardware
10572    watchpoints.  */
10573
10574 static void
10575 print_mention_watchpoint (struct breakpoint *b)
10576 {
10577   struct cleanup *ui_out_chain;
10578   struct watchpoint *w = (struct watchpoint *) b;
10579   struct ui_out *uiout = current_uiout;
10580
10581   switch (b->type)
10582     {
10583     case bp_watchpoint:
10584       ui_out_text (uiout, "Watchpoint ");
10585       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10586       break;
10587     case bp_hardware_watchpoint:
10588       ui_out_text (uiout, "Hardware watchpoint ");
10589       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10590       break;
10591     case bp_read_watchpoint:
10592       ui_out_text (uiout, "Hardware read watchpoint ");
10593       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10594       break;
10595     case bp_access_watchpoint:
10596       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10597       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10598       break;
10599     default:
10600       internal_error (__FILE__, __LINE__,
10601                       _("Invalid hardware watchpoint type."));
10602     }
10603
10604   ui_out_field_int (uiout, "number", b->number);
10605   ui_out_text (uiout, ": ");
10606   ui_out_field_string (uiout, "exp", w->exp_string);
10607   do_cleanups (ui_out_chain);
10608 }
10609
10610 /* Implement the "print_recreate" breakpoint_ops method for
10611    watchpoints.  */
10612
10613 static void
10614 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10615 {
10616   struct watchpoint *w = (struct watchpoint *) b;
10617
10618   switch (b->type)
10619     {
10620     case bp_watchpoint:
10621     case bp_hardware_watchpoint:
10622       fprintf_unfiltered (fp, "watch");
10623       break;
10624     case bp_read_watchpoint:
10625       fprintf_unfiltered (fp, "rwatch");
10626       break;
10627     case bp_access_watchpoint:
10628       fprintf_unfiltered (fp, "awatch");
10629       break;
10630     default:
10631       internal_error (__FILE__, __LINE__,
10632                       _("Invalid watchpoint type."));
10633     }
10634
10635   fprintf_unfiltered (fp, " %s", w->exp_string);
10636   print_recreate_thread (b, fp);
10637 }
10638
10639 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10640
10641 static struct breakpoint_ops watchpoint_breakpoint_ops;
10642
10643 /* Implement the "insert" breakpoint_ops method for
10644    masked hardware watchpoints.  */
10645
10646 static int
10647 insert_masked_watchpoint (struct bp_location *bl)
10648 {
10649   struct watchpoint *w = (struct watchpoint *) bl->owner;
10650
10651   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10652                                         bl->watchpoint_type);
10653 }
10654
10655 /* Implement the "remove" breakpoint_ops method for
10656    masked hardware watchpoints.  */
10657
10658 static int
10659 remove_masked_watchpoint (struct bp_location *bl)
10660 {
10661   struct watchpoint *w = (struct watchpoint *) bl->owner;
10662
10663   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10664                                         bl->watchpoint_type);
10665 }
10666
10667 /* Implement the "resources_needed" breakpoint_ops method for
10668    masked hardware watchpoints.  */
10669
10670 static int
10671 resources_needed_masked_watchpoint (const struct bp_location *bl)
10672 {
10673   struct watchpoint *w = (struct watchpoint *) bl->owner;
10674
10675   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10676 }
10677
10678 /* Implement the "works_in_software_mode" breakpoint_ops method for
10679    masked hardware watchpoints.  */
10680
10681 static int
10682 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10683 {
10684   return 0;
10685 }
10686
10687 /* Implement the "print_it" breakpoint_ops method for
10688    masked hardware watchpoints.  */
10689
10690 static enum print_stop_action
10691 print_it_masked_watchpoint (bpstat bs)
10692 {
10693   struct breakpoint *b = bs->breakpoint_at;
10694   struct ui_out *uiout = current_uiout;
10695
10696   /* Masked watchpoints have only one location.  */
10697   gdb_assert (b->loc && b->loc->next == NULL);
10698
10699   switch (b->type)
10700     {
10701     case bp_hardware_watchpoint:
10702       annotate_watchpoint (b->number);
10703       if (ui_out_is_mi_like_p (uiout))
10704         ui_out_field_string
10705           (uiout, "reason",
10706            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10707       break;
10708
10709     case bp_read_watchpoint:
10710       if (ui_out_is_mi_like_p (uiout))
10711         ui_out_field_string
10712           (uiout, "reason",
10713            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10714       break;
10715
10716     case bp_access_watchpoint:
10717       if (ui_out_is_mi_like_p (uiout))
10718         ui_out_field_string
10719           (uiout, "reason",
10720            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10721       break;
10722     default:
10723       internal_error (__FILE__, __LINE__,
10724                       _("Invalid hardware watchpoint type."));
10725     }
10726
10727   mention (b);
10728   ui_out_text (uiout, _("\n\
10729 Check the underlying instruction at PC for the memory\n\
10730 address and value which triggered this watchpoint.\n"));
10731   ui_out_text (uiout, "\n");
10732
10733   /* More than one watchpoint may have been triggered.  */
10734   return PRINT_UNKNOWN;
10735 }
10736
10737 /* Implement the "print_one_detail" breakpoint_ops method for
10738    masked hardware watchpoints.  */
10739
10740 static void
10741 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10742                                     struct ui_out *uiout)
10743 {
10744   struct watchpoint *w = (struct watchpoint *) b;
10745
10746   /* Masked watchpoints have only one location.  */
10747   gdb_assert (b->loc && b->loc->next == NULL);
10748
10749   ui_out_text (uiout, "\tmask ");
10750   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10751   ui_out_text (uiout, "\n");
10752 }
10753
10754 /* Implement the "print_mention" breakpoint_ops method for
10755    masked hardware watchpoints.  */
10756
10757 static void
10758 print_mention_masked_watchpoint (struct breakpoint *b)
10759 {
10760   struct watchpoint *w = (struct watchpoint *) b;
10761   struct ui_out *uiout = current_uiout;
10762   struct cleanup *ui_out_chain;
10763
10764   switch (b->type)
10765     {
10766     case bp_hardware_watchpoint:
10767       ui_out_text (uiout, "Masked hardware watchpoint ");
10768       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10769       break;
10770     case bp_read_watchpoint:
10771       ui_out_text (uiout, "Masked hardware read watchpoint ");
10772       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10773       break;
10774     case bp_access_watchpoint:
10775       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10776       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10777       break;
10778     default:
10779       internal_error (__FILE__, __LINE__,
10780                       _("Invalid hardware watchpoint type."));
10781     }
10782
10783   ui_out_field_int (uiout, "number", b->number);
10784   ui_out_text (uiout, ": ");
10785   ui_out_field_string (uiout, "exp", w->exp_string);
10786   do_cleanups (ui_out_chain);
10787 }
10788
10789 /* Implement the "print_recreate" breakpoint_ops method for
10790    masked hardware watchpoints.  */
10791
10792 static void
10793 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10794 {
10795   struct watchpoint *w = (struct watchpoint *) b;
10796   char tmp[40];
10797
10798   switch (b->type)
10799     {
10800     case bp_hardware_watchpoint:
10801       fprintf_unfiltered (fp, "watch");
10802       break;
10803     case bp_read_watchpoint:
10804       fprintf_unfiltered (fp, "rwatch");
10805       break;
10806     case bp_access_watchpoint:
10807       fprintf_unfiltered (fp, "awatch");
10808       break;
10809     default:
10810       internal_error (__FILE__, __LINE__,
10811                       _("Invalid hardware watchpoint type."));
10812     }
10813
10814   sprintf_vma (tmp, w->hw_wp_mask);
10815   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10816   print_recreate_thread (b, fp);
10817 }
10818
10819 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10820
10821 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10822
10823 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10824
10825 static int
10826 is_masked_watchpoint (const struct breakpoint *b)
10827 {
10828   return b->ops == &masked_watchpoint_breakpoint_ops;
10829 }
10830
10831 /* accessflag:  hw_write:  watch write, 
10832                 hw_read:   watch read, 
10833                 hw_access: watch access (read or write) */
10834 static void
10835 watch_command_1 (char *arg, int accessflag, int from_tty,
10836                  int just_location, int internal)
10837 {
10838   volatile struct gdb_exception e;
10839   struct breakpoint *b, *scope_breakpoint = NULL;
10840   struct expression *exp;
10841   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10842   struct value *val, *mark, *result;
10843   struct frame_info *frame;
10844   char *exp_start = NULL;
10845   char *exp_end = NULL;
10846   char *tok, *end_tok;
10847   int toklen = -1;
10848   char *cond_start = NULL;
10849   char *cond_end = NULL;
10850   enum bptype bp_type;
10851   int thread = -1;
10852   int pc = 0;
10853   /* Flag to indicate whether we are going to use masks for
10854      the hardware watchpoint.  */
10855   int use_mask = 0;
10856   CORE_ADDR mask = 0;
10857   struct watchpoint *w;
10858
10859   /* Make sure that we actually have parameters to parse.  */
10860   if (arg != NULL && arg[0] != '\0')
10861     {
10862       char *value_start;
10863
10864       /* Look for "parameter value" pairs at the end
10865          of the arguments string.  */
10866       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10867         {
10868           /* Skip whitespace at the end of the argument list.  */
10869           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10870             tok--;
10871
10872           /* Find the beginning of the last token.
10873              This is the value of the parameter.  */
10874           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10875             tok--;
10876           value_start = tok + 1;
10877
10878           /* Skip whitespace.  */
10879           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10880             tok--;
10881
10882           end_tok = tok;
10883
10884           /* Find the beginning of the second to last token.
10885              This is the parameter itself.  */
10886           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10887             tok--;
10888           tok++;
10889           toklen = end_tok - tok + 1;
10890
10891           if (toklen == 6 && !strncmp (tok, "thread", 6))
10892             {
10893               /* At this point we've found a "thread" token, which means
10894                  the user is trying to set a watchpoint that triggers
10895                  only in a specific thread.  */
10896               char *endp;
10897
10898               if (thread != -1)
10899                 error(_("You can specify only one thread."));
10900
10901               /* Extract the thread ID from the next token.  */
10902               thread = strtol (value_start, &endp, 0);
10903
10904               /* Check if the user provided a valid numeric value for the
10905                  thread ID.  */
10906               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10907                 error (_("Invalid thread ID specification %s."), value_start);
10908
10909               /* Check if the thread actually exists.  */
10910               if (!valid_thread_id (thread))
10911                 invalid_thread_id_error (thread);
10912             }
10913           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10914             {
10915               /* We've found a "mask" token, which means the user wants to
10916                  create a hardware watchpoint that is going to have the mask
10917                  facility.  */
10918               struct value *mask_value, *mark;
10919
10920               if (use_mask)
10921                 error(_("You can specify only one mask."));
10922
10923               use_mask = just_location = 1;
10924
10925               mark = value_mark ();
10926               mask_value = parse_to_comma_and_eval (&value_start);
10927               mask = value_as_address (mask_value);
10928               value_free_to_mark (mark);
10929             }
10930           else
10931             /* We didn't recognize what we found.  We should stop here.  */
10932             break;
10933
10934           /* Truncate the string and get rid of the "parameter value" pair before
10935              the arguments string is parsed by the parse_exp_1 function.  */
10936           *tok = '\0';
10937         }
10938     }
10939
10940   /* Parse the rest of the arguments.  */
10941   innermost_block = NULL;
10942   exp_start = arg;
10943   exp = parse_exp_1 (&arg, 0, 0, 0);
10944   exp_end = arg;
10945   /* Remove trailing whitespace from the expression before saving it.
10946      This makes the eventual display of the expression string a bit
10947      prettier.  */
10948   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10949     --exp_end;
10950
10951   /* Checking if the expression is not constant.  */
10952   if (watchpoint_exp_is_const (exp))
10953     {
10954       int len;
10955
10956       len = exp_end - exp_start;
10957       while (len > 0 && isspace (exp_start[len - 1]))
10958         len--;
10959       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10960     }
10961
10962   exp_valid_block = innermost_block;
10963   mark = value_mark ();
10964   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10965
10966   if (just_location)
10967     {
10968       int ret;
10969
10970       exp_valid_block = NULL;
10971       val = value_addr (result);
10972       release_value (val);
10973       value_free_to_mark (mark);
10974
10975       if (use_mask)
10976         {
10977           ret = target_masked_watch_num_registers (value_as_address (val),
10978                                                    mask);
10979           if (ret == -1)
10980             error (_("This target does not support masked watchpoints."));
10981           else if (ret == -2)
10982             error (_("Invalid mask or memory region."));
10983         }
10984     }
10985   else if (val != NULL)
10986     release_value (val);
10987
10988   tok = skip_spaces (arg);
10989   end_tok = skip_to_space (tok);
10990
10991   toklen = end_tok - tok;
10992   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10993     {
10994       struct expression *cond;
10995
10996       innermost_block = NULL;
10997       tok = cond_start = end_tok + 1;
10998       cond = parse_exp_1 (&tok, 0, 0, 0);
10999
11000       /* The watchpoint expression may not be local, but the condition
11001          may still be.  E.g.: `watch global if local > 0'.  */
11002       cond_exp_valid_block = innermost_block;
11003
11004       xfree (cond);
11005       cond_end = tok;
11006     }
11007   if (*tok)
11008     error (_("Junk at end of command."));
11009
11010   if (accessflag == hw_read)
11011     bp_type = bp_read_watchpoint;
11012   else if (accessflag == hw_access)
11013     bp_type = bp_access_watchpoint;
11014   else
11015     bp_type = bp_hardware_watchpoint;
11016
11017   frame = block_innermost_frame (exp_valid_block);
11018
11019   /* If the expression is "local", then set up a "watchpoint scope"
11020      breakpoint at the point where we've left the scope of the watchpoint
11021      expression.  Create the scope breakpoint before the watchpoint, so
11022      that we will encounter it first in bpstat_stop_status.  */
11023   if (exp_valid_block && frame)
11024     {
11025       if (frame_id_p (frame_unwind_caller_id (frame)))
11026         {
11027           scope_breakpoint
11028             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11029                                           frame_unwind_caller_pc (frame),
11030                                           bp_watchpoint_scope,
11031                                           &momentary_breakpoint_ops);
11032
11033           scope_breakpoint->enable_state = bp_enabled;
11034
11035           /* Automatically delete the breakpoint when it hits.  */
11036           scope_breakpoint->disposition = disp_del;
11037
11038           /* Only break in the proper frame (help with recursion).  */
11039           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11040
11041           /* Set the address at which we will stop.  */
11042           scope_breakpoint->loc->gdbarch
11043             = frame_unwind_caller_arch (frame);
11044           scope_breakpoint->loc->requested_address
11045             = frame_unwind_caller_pc (frame);
11046           scope_breakpoint->loc->address
11047             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11048                                          scope_breakpoint->loc->requested_address,
11049                                          scope_breakpoint->type);
11050         }
11051     }
11052
11053   /* Now set up the breakpoint.  */
11054
11055   w = XCNEW (struct watchpoint);
11056   b = &w->base;
11057   if (use_mask)
11058     init_raw_breakpoint_without_location (b, NULL, bp_type,
11059                                           &masked_watchpoint_breakpoint_ops);
11060   else
11061     init_raw_breakpoint_without_location (b, NULL, bp_type,
11062                                           &watchpoint_breakpoint_ops);
11063   b->thread = thread;
11064   b->disposition = disp_donttouch;
11065   b->pspace = current_program_space;
11066   w->exp = exp;
11067   w->exp_valid_block = exp_valid_block;
11068   w->cond_exp_valid_block = cond_exp_valid_block;
11069   if (just_location)
11070     {
11071       struct type *t = value_type (val);
11072       CORE_ADDR addr = value_as_address (val);
11073       char *name;
11074
11075       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11076       name = type_to_string (t);
11077
11078       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11079                                           core_addr_to_string (addr));
11080       xfree (name);
11081
11082       w->exp_string = xstrprintf ("-location %.*s",
11083                                   (int) (exp_end - exp_start), exp_start);
11084
11085       /* The above expression is in C.  */
11086       b->language = language_c;
11087     }
11088   else
11089     w->exp_string = savestring (exp_start, exp_end - exp_start);
11090
11091   if (use_mask)
11092     {
11093       w->hw_wp_mask = mask;
11094     }
11095   else
11096     {
11097       w->val = val;
11098       w->val_valid = 1;
11099     }
11100
11101   if (cond_start)
11102     b->cond_string = savestring (cond_start, cond_end - cond_start);
11103   else
11104     b->cond_string = 0;
11105
11106   if (frame)
11107     {
11108       w->watchpoint_frame = get_frame_id (frame);
11109       w->watchpoint_thread = inferior_ptid;
11110     }
11111   else
11112     {
11113       w->watchpoint_frame = null_frame_id;
11114       w->watchpoint_thread = null_ptid;
11115     }
11116
11117   if (scope_breakpoint != NULL)
11118     {
11119       /* The scope breakpoint is related to the watchpoint.  We will
11120          need to act on them together.  */
11121       b->related_breakpoint = scope_breakpoint;
11122       scope_breakpoint->related_breakpoint = b;
11123     }
11124
11125   if (!just_location)
11126     value_free_to_mark (mark);
11127
11128   TRY_CATCH (e, RETURN_MASK_ALL)
11129     {
11130       /* Finally update the new watchpoint.  This creates the locations
11131          that should be inserted.  */
11132       update_watchpoint (w, 1);
11133     }
11134   if (e.reason < 0)
11135     {
11136       delete_breakpoint (b);
11137       throw_exception (e);
11138     }
11139
11140   install_breakpoint (internal, b, 1);
11141 }
11142
11143 /* Return count of debug registers needed to watch the given expression.
11144    If the watchpoint cannot be handled in hardware return zero.  */
11145
11146 static int
11147 can_use_hardware_watchpoint (struct value *v)
11148 {
11149   int found_memory_cnt = 0;
11150   struct value *head = v;
11151
11152   /* Did the user specifically forbid us to use hardware watchpoints? */
11153   if (!can_use_hw_watchpoints)
11154     return 0;
11155
11156   /* Make sure that the value of the expression depends only upon
11157      memory contents, and values computed from them within GDB.  If we
11158      find any register references or function calls, we can't use a
11159      hardware watchpoint.
11160
11161      The idea here is that evaluating an expression generates a series
11162      of values, one holding the value of every subexpression.  (The
11163      expression a*b+c has five subexpressions: a, b, a*b, c, and
11164      a*b+c.)  GDB's values hold almost enough information to establish
11165      the criteria given above --- they identify memory lvalues,
11166      register lvalues, computed values, etcetera.  So we can evaluate
11167      the expression, and then scan the chain of values that leaves
11168      behind to decide whether we can detect any possible change to the
11169      expression's final value using only hardware watchpoints.
11170
11171      However, I don't think that the values returned by inferior
11172      function calls are special in any way.  So this function may not
11173      notice that an expression involving an inferior function call
11174      can't be watched with hardware watchpoints.  FIXME.  */
11175   for (; v; v = value_next (v))
11176     {
11177       if (VALUE_LVAL (v) == lval_memory)
11178         {
11179           if (v != head && value_lazy (v))
11180             /* A lazy memory lvalue in the chain is one that GDB never
11181                needed to fetch; we either just used its address (e.g.,
11182                `a' in `a.b') or we never needed it at all (e.g., `a'
11183                in `a,b').  This doesn't apply to HEAD; if that is
11184                lazy then it was not readable, but watch it anyway.  */
11185             ;
11186           else
11187             {
11188               /* Ahh, memory we actually used!  Check if we can cover
11189                  it with hardware watchpoints.  */
11190               struct type *vtype = check_typedef (value_type (v));
11191
11192               /* We only watch structs and arrays if user asked for it
11193                  explicitly, never if they just happen to appear in a
11194                  middle of some value chain.  */
11195               if (v == head
11196                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11197                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11198                 {
11199                   CORE_ADDR vaddr = value_address (v);
11200                   int len;
11201                   int num_regs;
11202
11203                   len = (target_exact_watchpoints
11204                          && is_scalar_type_recursive (vtype))?
11205                     1 : TYPE_LENGTH (value_type (v));
11206
11207                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11208                   if (!num_regs)
11209                     return 0;
11210                   else
11211                     found_memory_cnt += num_regs;
11212                 }
11213             }
11214         }
11215       else if (VALUE_LVAL (v) != not_lval
11216                && deprecated_value_modifiable (v) == 0)
11217         return 0;       /* These are values from the history (e.g., $1).  */
11218       else if (VALUE_LVAL (v) == lval_register)
11219         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11220     }
11221
11222   /* The expression itself looks suitable for using a hardware
11223      watchpoint, but give the target machine a chance to reject it.  */
11224   return found_memory_cnt;
11225 }
11226
11227 void
11228 watch_command_wrapper (char *arg, int from_tty, int internal)
11229 {
11230   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11231 }
11232
11233 /* A helper function that looks for the "-location" argument and then
11234    calls watch_command_1.  */
11235
11236 static void
11237 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11238 {
11239   int just_location = 0;
11240
11241   if (arg
11242       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11243           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11244     {
11245       arg = skip_spaces (arg);
11246       just_location = 1;
11247     }
11248
11249   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11250 }
11251
11252 static void
11253 watch_command (char *arg, int from_tty)
11254 {
11255   watch_maybe_just_location (arg, hw_write, from_tty);
11256 }
11257
11258 void
11259 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11260 {
11261   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11262 }
11263
11264 static void
11265 rwatch_command (char *arg, int from_tty)
11266 {
11267   watch_maybe_just_location (arg, hw_read, from_tty);
11268 }
11269
11270 void
11271 awatch_command_wrapper (char *arg, int from_tty, int internal)
11272 {
11273   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11274 }
11275
11276 static void
11277 awatch_command (char *arg, int from_tty)
11278 {
11279   watch_maybe_just_location (arg, hw_access, from_tty);
11280 }
11281 \f
11282
11283 /* Helper routines for the until_command routine in infcmd.c.  Here
11284    because it uses the mechanisms of breakpoints.  */
11285
11286 struct until_break_command_continuation_args
11287 {
11288   struct breakpoint *breakpoint;
11289   struct breakpoint *breakpoint2;
11290   int thread_num;
11291 };
11292
11293 /* This function is called by fetch_inferior_event via the
11294    cmd_continuation pointer, to complete the until command.  It takes
11295    care of cleaning up the temporary breakpoints set up by the until
11296    command.  */
11297 static void
11298 until_break_command_continuation (void *arg, int err)
11299 {
11300   struct until_break_command_continuation_args *a = arg;
11301
11302   delete_breakpoint (a->breakpoint);
11303   if (a->breakpoint2)
11304     delete_breakpoint (a->breakpoint2);
11305   delete_longjmp_breakpoint (a->thread_num);
11306 }
11307
11308 void
11309 until_break_command (char *arg, int from_tty, int anywhere)
11310 {
11311   struct symtabs_and_lines sals;
11312   struct symtab_and_line sal;
11313   struct frame_info *frame;
11314   struct gdbarch *frame_gdbarch;
11315   struct frame_id stack_frame_id;
11316   struct frame_id caller_frame_id;
11317   struct breakpoint *breakpoint;
11318   struct breakpoint *breakpoint2 = NULL;
11319   struct cleanup *old_chain;
11320   int thread;
11321   struct thread_info *tp;
11322
11323   clear_proceed_status ();
11324
11325   /* Set a breakpoint where the user wants it and at return from
11326      this function.  */
11327
11328   if (last_displayed_sal_is_valid ())
11329     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11330                           get_last_displayed_symtab (),
11331                           get_last_displayed_line ());
11332   else
11333     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11334                           (struct symtab *) NULL, 0);
11335
11336   if (sals.nelts != 1)
11337     error (_("Couldn't get information on specified line."));
11338
11339   sal = sals.sals[0];
11340   xfree (sals.sals);    /* malloc'd, so freed.  */
11341
11342   if (*arg)
11343     error (_("Junk at end of arguments."));
11344
11345   resolve_sal_pc (&sal);
11346
11347   tp = inferior_thread ();
11348   thread = tp->num;
11349
11350   old_chain = make_cleanup (null_cleanup, NULL);
11351
11352   /* Note linespec handling above invalidates the frame chain.
11353      Installing a breakpoint also invalidates the frame chain (as it
11354      may need to switch threads), so do any frame handling before
11355      that.  */
11356
11357   frame = get_selected_frame (NULL);
11358   frame_gdbarch = get_frame_arch (frame);
11359   stack_frame_id = get_stack_frame_id (frame);
11360   caller_frame_id = frame_unwind_caller_id (frame);
11361
11362   /* Keep within the current frame, or in frames called by the current
11363      one.  */
11364
11365   if (frame_id_p (caller_frame_id))
11366     {
11367       struct symtab_and_line sal2;
11368
11369       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11370       sal2.pc = frame_unwind_caller_pc (frame);
11371       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11372                                               sal2,
11373                                               caller_frame_id,
11374                                               bp_until);
11375       make_cleanup_delete_breakpoint (breakpoint2);
11376
11377       set_longjmp_breakpoint (tp, caller_frame_id);
11378       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11379     }
11380
11381   /* set_momentary_breakpoint could invalidate FRAME.  */
11382   frame = NULL;
11383
11384   if (anywhere)
11385     /* If the user told us to continue until a specified location,
11386        we don't specify a frame at which we need to stop.  */
11387     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11388                                            null_frame_id, bp_until);
11389   else
11390     /* Otherwise, specify the selected frame, because we want to stop
11391        only at the very same frame.  */
11392     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11393                                            stack_frame_id, bp_until);
11394   make_cleanup_delete_breakpoint (breakpoint);
11395
11396   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11397
11398   /* If we are running asynchronously, and proceed call above has
11399      actually managed to start the target, arrange for breakpoints to
11400      be deleted when the target stops.  Otherwise, we're already
11401      stopped and delete breakpoints via cleanup chain.  */
11402
11403   if (target_can_async_p () && is_running (inferior_ptid))
11404     {
11405       struct until_break_command_continuation_args *args;
11406       args = xmalloc (sizeof (*args));
11407
11408       args->breakpoint = breakpoint;
11409       args->breakpoint2 = breakpoint2;
11410       args->thread_num = thread;
11411
11412       discard_cleanups (old_chain);
11413       add_continuation (inferior_thread (),
11414                         until_break_command_continuation, args,
11415                         xfree);
11416     }
11417   else
11418     do_cleanups (old_chain);
11419 }
11420
11421 /* This function attempts to parse an optional "if <cond>" clause
11422    from the arg string.  If one is not found, it returns NULL.
11423
11424    Else, it returns a pointer to the condition string.  (It does not
11425    attempt to evaluate the string against a particular block.)  And,
11426    it updates arg to point to the first character following the parsed
11427    if clause in the arg string.  */
11428
11429 static char *
11430 ep_parse_optional_if_clause (char **arg)
11431 {
11432   char *cond_string;
11433
11434   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11435     return NULL;
11436
11437   /* Skip the "if" keyword.  */
11438   (*arg) += 2;
11439
11440   /* Skip any extra leading whitespace, and record the start of the
11441      condition string.  */
11442   *arg = skip_spaces (*arg);
11443   cond_string = *arg;
11444
11445   /* Assume that the condition occupies the remainder of the arg
11446      string.  */
11447   (*arg) += strlen (cond_string);
11448
11449   return cond_string;
11450 }
11451
11452 /* Commands to deal with catching events, such as signals, exceptions,
11453    process start/exit, etc.  */
11454
11455 typedef enum
11456 {
11457   catch_fork_temporary, catch_vfork_temporary,
11458   catch_fork_permanent, catch_vfork_permanent
11459 }
11460 catch_fork_kind;
11461
11462 static void
11463 catch_fork_command_1 (char *arg, int from_tty, 
11464                       struct cmd_list_element *command)
11465 {
11466   struct gdbarch *gdbarch = get_current_arch ();
11467   char *cond_string = NULL;
11468   catch_fork_kind fork_kind;
11469   int tempflag;
11470
11471   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11472   tempflag = (fork_kind == catch_fork_temporary
11473               || fork_kind == catch_vfork_temporary);
11474
11475   if (!arg)
11476     arg = "";
11477   arg = skip_spaces (arg);
11478
11479   /* The allowed syntax is:
11480      catch [v]fork
11481      catch [v]fork if <cond>
11482
11483      First, check if there's an if clause.  */
11484   cond_string = ep_parse_optional_if_clause (&arg);
11485
11486   if ((*arg != '\0') && !isspace (*arg))
11487     error (_("Junk at end of arguments."));
11488
11489   /* If this target supports it, create a fork or vfork catchpoint
11490      and enable reporting of such events.  */
11491   switch (fork_kind)
11492     {
11493     case catch_fork_temporary:
11494     case catch_fork_permanent:
11495       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11496                                           &catch_fork_breakpoint_ops);
11497       break;
11498     case catch_vfork_temporary:
11499     case catch_vfork_permanent:
11500       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11501                                           &catch_vfork_breakpoint_ops);
11502       break;
11503     default:
11504       error (_("unsupported or unknown fork kind; cannot catch it"));
11505       break;
11506     }
11507 }
11508
11509 static void
11510 catch_exec_command_1 (char *arg, int from_tty, 
11511                       struct cmd_list_element *command)
11512 {
11513   struct exec_catchpoint *c;
11514   struct gdbarch *gdbarch = get_current_arch ();
11515   int tempflag;
11516   char *cond_string = NULL;
11517
11518   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11519
11520   if (!arg)
11521     arg = "";
11522   arg = skip_spaces (arg);
11523
11524   /* The allowed syntax is:
11525      catch exec
11526      catch exec if <cond>
11527
11528      First, check if there's an if clause.  */
11529   cond_string = ep_parse_optional_if_clause (&arg);
11530
11531   if ((*arg != '\0') && !isspace (*arg))
11532     error (_("Junk at end of arguments."));
11533
11534   c = XNEW (struct exec_catchpoint);
11535   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11536                    &catch_exec_breakpoint_ops);
11537   c->exec_pathname = NULL;
11538
11539   install_breakpoint (0, &c->base, 1);
11540 }
11541
11542 static enum print_stop_action
11543 print_it_exception_catchpoint (bpstat bs)
11544 {
11545   struct ui_out *uiout = current_uiout;
11546   struct breakpoint *b = bs->breakpoint_at;
11547   int bp_temp, bp_throw;
11548
11549   annotate_catchpoint (b->number);
11550
11551   bp_throw = strstr (b->addr_string, "throw") != NULL;
11552   if (b->loc->address != b->loc->requested_address)
11553     breakpoint_adjustment_warning (b->loc->requested_address,
11554                                    b->loc->address,
11555                                    b->number, 1);
11556   bp_temp = b->disposition == disp_del;
11557   ui_out_text (uiout, 
11558                bp_temp ? "Temporary catchpoint "
11559                        : "Catchpoint ");
11560   if (!ui_out_is_mi_like_p (uiout))
11561     ui_out_field_int (uiout, "bkptno", b->number);
11562   ui_out_text (uiout,
11563                bp_throw ? " (exception thrown), "
11564                         : " (exception caught), ");
11565   if (ui_out_is_mi_like_p (uiout))
11566     {
11567       ui_out_field_string (uiout, "reason", 
11568                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11569       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11570       ui_out_field_int (uiout, "bkptno", b->number);
11571     }
11572   return PRINT_SRC_AND_LOC;
11573 }
11574
11575 static void
11576 print_one_exception_catchpoint (struct breakpoint *b, 
11577                                 struct bp_location **last_loc)
11578 {
11579   struct value_print_options opts;
11580   struct ui_out *uiout = current_uiout;
11581
11582   get_user_print_options (&opts);
11583   if (opts.addressprint)
11584     {
11585       annotate_field (4);
11586       if (b->loc == NULL || b->loc->shlib_disabled)
11587         ui_out_field_string (uiout, "addr", "<PENDING>");
11588       else
11589         ui_out_field_core_addr (uiout, "addr",
11590                                 b->loc->gdbarch, b->loc->address);
11591     }
11592   annotate_field (5);
11593   if (b->loc)
11594     *last_loc = b->loc;
11595   if (strstr (b->addr_string, "throw") != NULL)
11596     {
11597       ui_out_field_string (uiout, "what", "exception throw");
11598       if (ui_out_is_mi_like_p (uiout))
11599         ui_out_field_string (uiout, "catch-type", "throw");
11600     }
11601   else
11602     {
11603       ui_out_field_string (uiout, "what", "exception catch");
11604       if (ui_out_is_mi_like_p (uiout))
11605         ui_out_field_string (uiout, "catch-type", "catch");
11606     }
11607 }
11608
11609 static void
11610 print_mention_exception_catchpoint (struct breakpoint *b)
11611 {
11612   struct ui_out *uiout = current_uiout;
11613   int bp_temp;
11614   int bp_throw;
11615
11616   bp_temp = b->disposition == disp_del;
11617   bp_throw = strstr (b->addr_string, "throw") != NULL;
11618   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11619                               : _("Catchpoint "));
11620   ui_out_field_int (uiout, "bkptno", b->number);
11621   ui_out_text (uiout, bp_throw ? _(" (throw)")
11622                                : _(" (catch)"));
11623 }
11624
11625 /* Implement the "print_recreate" breakpoint_ops method for throw and
11626    catch catchpoints.  */
11627
11628 static void
11629 print_recreate_exception_catchpoint (struct breakpoint *b, 
11630                                      struct ui_file *fp)
11631 {
11632   int bp_temp;
11633   int bp_throw;
11634
11635   bp_temp = b->disposition == disp_del;
11636   bp_throw = strstr (b->addr_string, "throw") != NULL;
11637   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11638   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11639   print_recreate_thread (b, fp);
11640 }
11641
11642 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11643
11644 static int
11645 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11646                           enum exception_event_kind ex_event, int from_tty)
11647 {
11648   char *trigger_func_name;
11649  
11650   if (ex_event == EX_EVENT_CATCH)
11651     trigger_func_name = "__cxa_begin_catch";
11652   else
11653     trigger_func_name = "__cxa_throw";
11654
11655   create_breakpoint (get_current_arch (),
11656                      trigger_func_name, cond_string, -1, NULL,
11657                      0 /* condition and thread are valid.  */,
11658                      tempflag, bp_breakpoint,
11659                      0,
11660                      AUTO_BOOLEAN_TRUE /* pending */,
11661                      &gnu_v3_exception_catchpoint_ops, from_tty,
11662                      1 /* enabled */,
11663                      0 /* internal */,
11664                      0);
11665
11666   return 1;
11667 }
11668
11669 /* Deal with "catch catch" and "catch throw" commands.  */
11670
11671 static void
11672 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11673                            int tempflag, int from_tty)
11674 {
11675   char *cond_string = NULL;
11676
11677   if (!arg)
11678     arg = "";
11679   arg = skip_spaces (arg);
11680
11681   cond_string = ep_parse_optional_if_clause (&arg);
11682
11683   if ((*arg != '\0') && !isspace (*arg))
11684     error (_("Junk at end of arguments."));
11685
11686   if (ex_event != EX_EVENT_THROW
11687       && ex_event != EX_EVENT_CATCH)
11688     error (_("Unsupported or unknown exception event; cannot catch it"));
11689
11690   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11691     return;
11692
11693   warning (_("Unsupported with this platform/compiler combination."));
11694 }
11695
11696 /* Implementation of "catch catch" command.  */
11697
11698 static void
11699 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11700 {
11701   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11702
11703   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11704 }
11705
11706 /* Implementation of "catch throw" command.  */
11707
11708 static void
11709 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11710 {
11711   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11712
11713   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11714 }
11715
11716 void
11717 init_ada_exception_breakpoint (struct breakpoint *b,
11718                                struct gdbarch *gdbarch,
11719                                struct symtab_and_line sal,
11720                                char *addr_string,
11721                                const struct breakpoint_ops *ops,
11722                                int tempflag,
11723                                int from_tty)
11724 {
11725   if (from_tty)
11726     {
11727       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11728       if (!loc_gdbarch)
11729         loc_gdbarch = gdbarch;
11730
11731       describe_other_breakpoints (loc_gdbarch,
11732                                   sal.pspace, sal.pc, sal.section, -1);
11733       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11734          version for exception catchpoints, because two catchpoints
11735          used for different exception names will use the same address.
11736          In this case, a "breakpoint ... also set at..." warning is
11737          unproductive.  Besides, the warning phrasing is also a bit
11738          inappropriate, we should use the word catchpoint, and tell
11739          the user what type of catchpoint it is.  The above is good
11740          enough for now, though.  */
11741     }
11742
11743   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11744
11745   b->enable_state = bp_enabled;
11746   b->disposition = tempflag ? disp_del : disp_donttouch;
11747   b->addr_string = addr_string;
11748   b->language = language_ada;
11749 }
11750
11751 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11752    filter list, or NULL if no filtering is required.  */
11753 static VEC(int) *
11754 catch_syscall_split_args (char *arg)
11755 {
11756   VEC(int) *result = NULL;
11757   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11758
11759   while (*arg != '\0')
11760     {
11761       int i, syscall_number;
11762       char *endptr;
11763       char cur_name[128];
11764       struct syscall s;
11765
11766       /* Skip whitespace.  */
11767       while (isspace (*arg))
11768         arg++;
11769
11770       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11771         cur_name[i] = arg[i];
11772       cur_name[i] = '\0';
11773       arg += i;
11774
11775       /* Check if the user provided a syscall name or a number.  */
11776       syscall_number = (int) strtol (cur_name, &endptr, 0);
11777       if (*endptr == '\0')
11778         get_syscall_by_number (syscall_number, &s);
11779       else
11780         {
11781           /* We have a name.  Let's check if it's valid and convert it
11782              to a number.  */
11783           get_syscall_by_name (cur_name, &s);
11784
11785           if (s.number == UNKNOWN_SYSCALL)
11786             /* Here we have to issue an error instead of a warning,
11787                because GDB cannot do anything useful if there's no
11788                syscall number to be caught.  */
11789             error (_("Unknown syscall name '%s'."), cur_name);
11790         }
11791
11792       /* Ok, it's valid.  */
11793       VEC_safe_push (int, result, s.number);
11794     }
11795
11796   discard_cleanups (cleanup);
11797   return result;
11798 }
11799
11800 /* Implement the "catch syscall" command.  */
11801
11802 static void
11803 catch_syscall_command_1 (char *arg, int from_tty, 
11804                          struct cmd_list_element *command)
11805 {
11806   int tempflag;
11807   VEC(int) *filter;
11808   struct syscall s;
11809   struct gdbarch *gdbarch = get_current_arch ();
11810
11811   /* Checking if the feature if supported.  */
11812   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11813     error (_("The feature 'catch syscall' is not supported on \
11814 this architecture yet."));
11815
11816   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11817
11818   arg = skip_spaces (arg);
11819
11820   /* We need to do this first "dummy" translation in order
11821      to get the syscall XML file loaded or, most important,
11822      to display a warning to the user if there's no XML file
11823      for his/her architecture.  */
11824   get_syscall_by_number (0, &s);
11825
11826   /* The allowed syntax is:
11827      catch syscall
11828      catch syscall <name | number> [<name | number> ... <name | number>]
11829
11830      Let's check if there's a syscall name.  */
11831
11832   if (arg != NULL)
11833     filter = catch_syscall_split_args (arg);
11834   else
11835     filter = NULL;
11836
11837   create_syscall_event_catchpoint (tempflag, filter,
11838                                    &catch_syscall_breakpoint_ops);
11839 }
11840
11841 static void
11842 catch_command (char *arg, int from_tty)
11843 {
11844   error (_("Catch requires an event name."));
11845 }
11846 \f
11847
11848 static void
11849 tcatch_command (char *arg, int from_tty)
11850 {
11851   error (_("Catch requires an event name."));
11852 }
11853
11854 /* A qsort comparison function that sorts breakpoints in order.  */
11855
11856 static int
11857 compare_breakpoints (const void *a, const void *b)
11858 {
11859   const breakpoint_p *ba = a;
11860   uintptr_t ua = (uintptr_t) *ba;
11861   const breakpoint_p *bb = b;
11862   uintptr_t ub = (uintptr_t) *bb;
11863
11864   if ((*ba)->number < (*bb)->number)
11865     return -1;
11866   else if ((*ba)->number > (*bb)->number)
11867     return 1;
11868
11869   /* Now sort by address, in case we see, e..g, two breakpoints with
11870      the number 0.  */
11871   if (ua < ub)
11872     return -1;
11873   return ua > ub ? 1 : 0;
11874 }
11875
11876 /* Delete breakpoints by address or line.  */
11877
11878 static void
11879 clear_command (char *arg, int from_tty)
11880 {
11881   struct breakpoint *b, *prev;
11882   VEC(breakpoint_p) *found = 0;
11883   int ix;
11884   int default_match;
11885   struct symtabs_and_lines sals;
11886   struct symtab_and_line sal;
11887   int i;
11888   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11889
11890   if (arg)
11891     {
11892       sals = decode_line_with_current_source (arg,
11893                                               (DECODE_LINE_FUNFIRSTLINE
11894                                                | DECODE_LINE_LIST_MODE));
11895       make_cleanup (xfree, sals.sals);
11896       default_match = 0;
11897     }
11898   else
11899     {
11900       sals.sals = (struct symtab_and_line *)
11901         xmalloc (sizeof (struct symtab_and_line));
11902       make_cleanup (xfree, sals.sals);
11903       init_sal (&sal);          /* Initialize to zeroes.  */
11904
11905       /* Set sal's line, symtab, pc, and pspace to the values
11906          corresponding to the last call to print_frame_info.  If the
11907          codepoint is not valid, this will set all the fields to 0.  */
11908       get_last_displayed_sal (&sal);
11909       if (sal.symtab == 0)
11910         error (_("No source file specified."));
11911
11912       sals.sals[0] = sal;
11913       sals.nelts = 1;
11914
11915       default_match = 1;
11916     }
11917
11918   /* We don't call resolve_sal_pc here.  That's not as bad as it
11919      seems, because all existing breakpoints typically have both
11920      file/line and pc set.  So, if clear is given file/line, we can
11921      match this to existing breakpoint without obtaining pc at all.
11922
11923      We only support clearing given the address explicitly 
11924      present in breakpoint table.  Say, we've set breakpoint 
11925      at file:line.  There were several PC values for that file:line,
11926      due to optimization, all in one block.
11927
11928      We've picked one PC value.  If "clear" is issued with another
11929      PC corresponding to the same file:line, the breakpoint won't
11930      be cleared.  We probably can still clear the breakpoint, but 
11931      since the other PC value is never presented to user, user
11932      can only find it by guessing, and it does not seem important
11933      to support that.  */
11934
11935   /* For each line spec given, delete bps which correspond to it.  Do
11936      it in two passes, solely to preserve the current behavior that
11937      from_tty is forced true if we delete more than one
11938      breakpoint.  */
11939
11940   found = NULL;
11941   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11942   for (i = 0; i < sals.nelts; i++)
11943     {
11944       int is_abs;
11945
11946       /* If exact pc given, clear bpts at that pc.
11947          If line given (pc == 0), clear all bpts on specified line.
11948          If defaulting, clear all bpts on default line
11949          or at default pc.
11950
11951          defaulting    sal.pc != 0    tests to do
11952
11953          0              1             pc
11954          1              1             pc _and_ line
11955          0              0             line
11956          1              0             <can't happen> */
11957
11958       sal = sals.sals[i];
11959       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11960
11961       /* Find all matching breakpoints and add them to 'found'.  */
11962       ALL_BREAKPOINTS (b)
11963         {
11964           int match = 0;
11965           /* Are we going to delete b?  */
11966           if (b->type != bp_none && !is_watchpoint (b))
11967             {
11968               struct bp_location *loc = b->loc;
11969               for (; loc; loc = loc->next)
11970                 {
11971                   /* If the user specified file:line, don't allow a PC
11972                      match.  This matches historical gdb behavior.  */
11973                   int pc_match = (!sal.explicit_line
11974                                   && sal.pc
11975                                   && (loc->pspace == sal.pspace)
11976                                   && (loc->address == sal.pc)
11977                                   && (!section_is_overlay (loc->section)
11978                                       || loc->section == sal.section));
11979                   int line_match = 0;
11980
11981                   if ((default_match || sal.explicit_line)
11982                       && loc->symtab != NULL
11983                       && sal.symtab != NULL
11984                       && sal.pspace == loc->pspace
11985                       && loc->line_number == sal.line)
11986                     {
11987                       if (filename_cmp (loc->symtab->filename,
11988                                         sal.symtab->filename) == 0)
11989                         line_match = 1;
11990                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11991                                && compare_filenames_for_search (loc->symtab->filename,
11992                                                                 sal.symtab->filename))
11993                         line_match = 1;
11994                     }
11995
11996                   if (pc_match || line_match)
11997                     {
11998                       match = 1;
11999                       break;
12000                     }
12001                 }
12002             }
12003
12004           if (match)
12005             VEC_safe_push(breakpoint_p, found, b);
12006         }
12007     }
12008
12009   /* Now go thru the 'found' chain and delete them.  */
12010   if (VEC_empty(breakpoint_p, found))
12011     {
12012       if (arg)
12013         error (_("No breakpoint at %s."), arg);
12014       else
12015         error (_("No breakpoint at this line."));
12016     }
12017
12018   /* Remove duplicates from the vec.  */
12019   qsort (VEC_address (breakpoint_p, found),
12020          VEC_length (breakpoint_p, found),
12021          sizeof (breakpoint_p),
12022          compare_breakpoints);
12023   prev = VEC_index (breakpoint_p, found, 0);
12024   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12025     {
12026       if (b == prev)
12027         {
12028           VEC_ordered_remove (breakpoint_p, found, ix);
12029           --ix;
12030         }
12031     }
12032
12033   if (VEC_length(breakpoint_p, found) > 1)
12034     from_tty = 1;       /* Always report if deleted more than one.  */
12035   if (from_tty)
12036     {
12037       if (VEC_length(breakpoint_p, found) == 1)
12038         printf_unfiltered (_("Deleted breakpoint "));
12039       else
12040         printf_unfiltered (_("Deleted breakpoints "));
12041     }
12042
12043   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12044     {
12045       if (from_tty)
12046         printf_unfiltered ("%d ", b->number);
12047       delete_breakpoint (b);
12048     }
12049   if (from_tty)
12050     putchar_unfiltered ('\n');
12051
12052   do_cleanups (cleanups);
12053 }
12054 \f
12055 /* Delete breakpoint in BS if they are `delete' breakpoints and
12056    all breakpoints that are marked for deletion, whether hit or not.
12057    This is called after any breakpoint is hit, or after errors.  */
12058
12059 void
12060 breakpoint_auto_delete (bpstat bs)
12061 {
12062   struct breakpoint *b, *b_tmp;
12063
12064   for (; bs; bs = bs->next)
12065     if (bs->breakpoint_at
12066         && bs->breakpoint_at->disposition == disp_del
12067         && bs->stop)
12068       delete_breakpoint (bs->breakpoint_at);
12069
12070   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12071   {
12072     if (b->disposition == disp_del_at_next_stop)
12073       delete_breakpoint (b);
12074   }
12075 }
12076
12077 /* A comparison function for bp_location AP and BP being interfaced to
12078    qsort.  Sort elements primarily by their ADDRESS (no matter what
12079    does breakpoint_address_is_meaningful say for its OWNER),
12080    secondarily by ordering first bp_permanent OWNERed elements and
12081    terciarily just ensuring the array is sorted stable way despite
12082    qsort being an unstable algorithm.  */
12083
12084 static int
12085 bp_location_compare (const void *ap, const void *bp)
12086 {
12087   struct bp_location *a = *(void **) ap;
12088   struct bp_location *b = *(void **) bp;
12089   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12090   int a_perm = a->owner->enable_state == bp_permanent;
12091   int b_perm = b->owner->enable_state == bp_permanent;
12092
12093   if (a->address != b->address)
12094     return (a->address > b->address) - (a->address < b->address);
12095
12096   /* Sort locations at the same address by their pspace number, keeping
12097      locations of the same inferior (in a multi-inferior environment)
12098      grouped.  */
12099
12100   if (a->pspace->num != b->pspace->num)
12101     return ((a->pspace->num > b->pspace->num)
12102             - (a->pspace->num < b->pspace->num));
12103
12104   /* Sort permanent breakpoints first.  */
12105   if (a_perm != b_perm)
12106     return (a_perm < b_perm) - (a_perm > b_perm);
12107
12108   /* Make the internal GDB representation stable across GDB runs
12109      where A and B memory inside GDB can differ.  Breakpoint locations of
12110      the same type at the same address can be sorted in arbitrary order.  */
12111
12112   if (a->owner->number != b->owner->number)
12113     return ((a->owner->number > b->owner->number)
12114             - (a->owner->number < b->owner->number));
12115
12116   return (a > b) - (a < b);
12117 }
12118
12119 /* Set bp_location_placed_address_before_address_max and
12120    bp_location_shadow_len_after_address_max according to the current
12121    content of the bp_location array.  */
12122
12123 static void
12124 bp_location_target_extensions_update (void)
12125 {
12126   struct bp_location *bl, **blp_tmp;
12127
12128   bp_location_placed_address_before_address_max = 0;
12129   bp_location_shadow_len_after_address_max = 0;
12130
12131   ALL_BP_LOCATIONS (bl, blp_tmp)
12132     {
12133       CORE_ADDR start, end, addr;
12134
12135       if (!bp_location_has_shadow (bl))
12136         continue;
12137
12138       start = bl->target_info.placed_address;
12139       end = start + bl->target_info.shadow_len;
12140
12141       gdb_assert (bl->address >= start);
12142       addr = bl->address - start;
12143       if (addr > bp_location_placed_address_before_address_max)
12144         bp_location_placed_address_before_address_max = addr;
12145
12146       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12147
12148       gdb_assert (bl->address < end);
12149       addr = end - bl->address;
12150       if (addr > bp_location_shadow_len_after_address_max)
12151         bp_location_shadow_len_after_address_max = addr;
12152     }
12153 }
12154
12155 /* Download tracepoint locations if they haven't been.  */
12156
12157 static void
12158 download_tracepoint_locations (void)
12159 {
12160   struct breakpoint *b;
12161   struct cleanup *old_chain;
12162
12163   if (!target_can_download_tracepoint ())
12164     return;
12165
12166   old_chain = save_current_space_and_thread ();
12167
12168   ALL_TRACEPOINTS (b)
12169     {
12170       struct bp_location *bl;
12171       struct tracepoint *t;
12172       int bp_location_downloaded = 0;
12173
12174       if ((b->type == bp_fast_tracepoint
12175            ? !may_insert_fast_tracepoints
12176            : !may_insert_tracepoints))
12177         continue;
12178
12179       for (bl = b->loc; bl; bl = bl->next)
12180         {
12181           /* In tracepoint, locations are _never_ duplicated, so
12182              should_be_inserted is equivalent to
12183              unduplicated_should_be_inserted.  */
12184           if (!should_be_inserted (bl) || bl->inserted)
12185             continue;
12186
12187           switch_to_program_space_and_thread (bl->pspace);
12188
12189           target_download_tracepoint (bl);
12190
12191           bl->inserted = 1;
12192           bp_location_downloaded = 1;
12193         }
12194       t = (struct tracepoint *) b;
12195       t->number_on_target = b->number;
12196       if (bp_location_downloaded)
12197         observer_notify_breakpoint_modified (b);
12198     }
12199
12200   do_cleanups (old_chain);
12201 }
12202
12203 /* Swap the insertion/duplication state between two locations.  */
12204
12205 static void
12206 swap_insertion (struct bp_location *left, struct bp_location *right)
12207 {
12208   const int left_inserted = left->inserted;
12209   const int left_duplicate = left->duplicate;
12210   const int left_needs_update = left->needs_update;
12211   const struct bp_target_info left_target_info = left->target_info;
12212
12213   /* Locations of tracepoints can never be duplicated.  */
12214   if (is_tracepoint (left->owner))
12215     gdb_assert (!left->duplicate);
12216   if (is_tracepoint (right->owner))
12217     gdb_assert (!right->duplicate);
12218
12219   left->inserted = right->inserted;
12220   left->duplicate = right->duplicate;
12221   left->needs_update = right->needs_update;
12222   left->target_info = right->target_info;
12223   right->inserted = left_inserted;
12224   right->duplicate = left_duplicate;
12225   right->needs_update = left_needs_update;
12226   right->target_info = left_target_info;
12227 }
12228
12229 /* Force the re-insertion of the locations at ADDRESS.  This is called
12230    once a new/deleted/modified duplicate location is found and we are evaluating
12231    conditions on the target's side.  Such conditions need to be updated on
12232    the target.  */
12233
12234 static void
12235 force_breakpoint_reinsertion (struct bp_location *bl)
12236 {
12237   struct bp_location **locp = NULL, **loc2p;
12238   struct bp_location *loc;
12239   CORE_ADDR address = 0;
12240   int pspace_num;
12241
12242   address = bl->address;
12243   pspace_num = bl->pspace->num;
12244
12245   /* This is only meaningful if the target is
12246      evaluating conditions and if the user has
12247      opted for condition evaluation on the target's
12248      side.  */
12249   if (gdb_evaluates_breakpoint_condition_p ()
12250       || !target_supports_evaluation_of_breakpoint_conditions ())
12251     return;
12252
12253   /* Flag all breakpoint locations with this address and
12254      the same program space as the location
12255      as "its condition has changed".  We need to
12256      update the conditions on the target's side.  */
12257   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12258     {
12259       loc = *loc2p;
12260
12261       if (!is_breakpoint (loc->owner)
12262           || pspace_num != loc->pspace->num)
12263         continue;
12264
12265       /* Flag the location appropriately.  We use a different state to
12266          let everyone know that we already updated the set of locations
12267          with addr bl->address and program space bl->pspace.  This is so
12268          we don't have to keep calling these functions just to mark locations
12269          that have already been marked.  */
12270       loc->condition_changed = condition_updated;
12271
12272       /* Free the agent expression bytecode as well.  We will compute
12273          it later on.  */
12274       if (loc->cond_bytecode)
12275         {
12276           free_agent_expr (loc->cond_bytecode);
12277           loc->cond_bytecode = NULL;
12278         }
12279     }
12280 }
12281
12282 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12283    into the inferior, only remove already-inserted locations that no
12284    longer should be inserted.  Functions that delete a breakpoint or
12285    breakpoints should pass false, so that deleting a breakpoint
12286    doesn't have the side effect of inserting the locations of other
12287    breakpoints that are marked not-inserted, but should_be_inserted
12288    returns true on them.
12289
12290    This behaviour is useful is situations close to tear-down -- e.g.,
12291    after an exec, while the target still has execution, but breakpoint
12292    shadows of the previous executable image should *NOT* be restored
12293    to the new image; or before detaching, where the target still has
12294    execution and wants to delete breakpoints from GDB's lists, and all
12295    breakpoints had already been removed from the inferior.  */
12296
12297 static void
12298 update_global_location_list (int should_insert)
12299 {
12300   struct breakpoint *b;
12301   struct bp_location **locp, *loc;
12302   struct cleanup *cleanups;
12303   /* Last breakpoint location address that was marked for update.  */
12304   CORE_ADDR last_addr = 0;
12305   /* Last breakpoint location program space that was marked for update.  */
12306   int last_pspace_num = -1;
12307
12308   /* Used in the duplicates detection below.  When iterating over all
12309      bp_locations, points to the first bp_location of a given address.
12310      Breakpoints and watchpoints of different types are never
12311      duplicates of each other.  Keep one pointer for each type of
12312      breakpoint/watchpoint, so we only need to loop over all locations
12313      once.  */
12314   struct bp_location *bp_loc_first;  /* breakpoint */
12315   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12316   struct bp_location *awp_loc_first; /* access watchpoint */
12317   struct bp_location *rwp_loc_first; /* read watchpoint */
12318
12319   /* Saved former bp_location array which we compare against the newly
12320      built bp_location from the current state of ALL_BREAKPOINTS.  */
12321   struct bp_location **old_location, **old_locp;
12322   unsigned old_location_count;
12323
12324   old_location = bp_location;
12325   old_location_count = bp_location_count;
12326   bp_location = NULL;
12327   bp_location_count = 0;
12328   cleanups = make_cleanup (xfree, old_location);
12329
12330   ALL_BREAKPOINTS (b)
12331     for (loc = b->loc; loc; loc = loc->next)
12332       bp_location_count++;
12333
12334   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12335   locp = bp_location;
12336   ALL_BREAKPOINTS (b)
12337     for (loc = b->loc; loc; loc = loc->next)
12338       *locp++ = loc;
12339   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12340          bp_location_compare);
12341
12342   bp_location_target_extensions_update ();
12343
12344   /* Identify bp_location instances that are no longer present in the
12345      new list, and therefore should be freed.  Note that it's not
12346      necessary that those locations should be removed from inferior --
12347      if there's another location at the same address (previously
12348      marked as duplicate), we don't need to remove/insert the
12349      location.
12350      
12351      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12352      and former bp_location array state respectively.  */
12353
12354   locp = bp_location;
12355   for (old_locp = old_location; old_locp < old_location + old_location_count;
12356        old_locp++)
12357     {
12358       struct bp_location *old_loc = *old_locp;
12359       struct bp_location **loc2p;
12360
12361       /* Tells if 'old_loc' is found among the new locations.  If
12362          not, we have to free it.  */
12363       int found_object = 0;
12364       /* Tells if the location should remain inserted in the target.  */
12365       int keep_in_target = 0;
12366       int removed = 0;
12367
12368       /* Skip LOCP entries which will definitely never be needed.
12369          Stop either at or being the one matching OLD_LOC.  */
12370       while (locp < bp_location + bp_location_count
12371              && (*locp)->address < old_loc->address)
12372         locp++;
12373
12374       for (loc2p = locp;
12375            (loc2p < bp_location + bp_location_count
12376             && (*loc2p)->address == old_loc->address);
12377            loc2p++)
12378         {
12379           /* Check if this is a new/duplicated location or a duplicated
12380              location that had its condition modified.  If so, we want to send
12381              its condition to the target if evaluation of conditions is taking
12382              place there.  */
12383           if ((*loc2p)->condition_changed == condition_modified
12384               && (last_addr != old_loc->address
12385                   || last_pspace_num != old_loc->pspace->num))
12386             {
12387               force_breakpoint_reinsertion (*loc2p);
12388               last_pspace_num = old_loc->pspace->num;
12389             }
12390
12391           if (*loc2p == old_loc)
12392             found_object = 1;
12393         }
12394
12395       /* We have already handled this address, update it so that we don't
12396          have to go through updates again.  */
12397       last_addr = old_loc->address;
12398
12399       /* Target-side condition evaluation: Handle deleted locations.  */
12400       if (!found_object)
12401         force_breakpoint_reinsertion (old_loc);
12402
12403       /* If this location is no longer present, and inserted, look if
12404          there's maybe a new location at the same address.  If so,
12405          mark that one inserted, and don't remove this one.  This is
12406          needed so that we don't have a time window where a breakpoint
12407          at certain location is not inserted.  */
12408
12409       if (old_loc->inserted)
12410         {
12411           /* If the location is inserted now, we might have to remove
12412              it.  */
12413
12414           if (found_object && should_be_inserted (old_loc))
12415             {
12416               /* The location is still present in the location list,
12417                  and still should be inserted.  Don't do anything.  */
12418               keep_in_target = 1;
12419             }
12420           else
12421             {
12422               /* This location still exists, but it won't be kept in the
12423                  target since it may have been disabled.  We proceed to
12424                  remove its target-side condition.  */
12425
12426               /* The location is either no longer present, or got
12427                  disabled.  See if there's another location at the
12428                  same address, in which case we don't need to remove
12429                  this one from the target.  */
12430
12431               /* OLD_LOC comes from existing struct breakpoint.  */
12432               if (breakpoint_address_is_meaningful (old_loc->owner))
12433                 {
12434                   for (loc2p = locp;
12435                        (loc2p < bp_location + bp_location_count
12436                         && (*loc2p)->address == old_loc->address);
12437                        loc2p++)
12438                     {
12439                       struct bp_location *loc2 = *loc2p;
12440
12441                       if (breakpoint_locations_match (loc2, old_loc))
12442                         {
12443                           /* Read watchpoint locations are switched to
12444                              access watchpoints, if the former are not
12445                              supported, but the latter are.  */
12446                           if (is_hardware_watchpoint (old_loc->owner))
12447                             {
12448                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12449                               loc2->watchpoint_type = old_loc->watchpoint_type;
12450                             }
12451
12452                           /* loc2 is a duplicated location. We need to check
12453                              if it should be inserted in case it will be
12454                              unduplicated.  */
12455                           if (loc2 != old_loc
12456                               && unduplicated_should_be_inserted (loc2))
12457                             {
12458                               swap_insertion (old_loc, loc2);
12459                               keep_in_target = 1;
12460                               break;
12461                             }
12462                         }
12463                     }
12464                 }
12465             }
12466
12467           if (!keep_in_target)
12468             {
12469               if (remove_breakpoint (old_loc, mark_uninserted))
12470                 {
12471                   /* This is just about all we can do.  We could keep
12472                      this location on the global list, and try to
12473                      remove it next time, but there's no particular
12474                      reason why we will succeed next time.
12475                      
12476                      Note that at this point, old_loc->owner is still
12477                      valid, as delete_breakpoint frees the breakpoint
12478                      only after calling us.  */
12479                   printf_filtered (_("warning: Error removing "
12480                                      "breakpoint %d\n"), 
12481                                    old_loc->owner->number);
12482                 }
12483               removed = 1;
12484             }
12485         }
12486
12487       if (!found_object)
12488         {
12489           if (removed && non_stop
12490               && breakpoint_address_is_meaningful (old_loc->owner)
12491               && !is_hardware_watchpoint (old_loc->owner))
12492             {
12493               /* This location was removed from the target.  In
12494                  non-stop mode, a race condition is possible where
12495                  we've removed a breakpoint, but stop events for that
12496                  breakpoint are already queued and will arrive later.
12497                  We apply an heuristic to be able to distinguish such
12498                  SIGTRAPs from other random SIGTRAPs: we keep this
12499                  breakpoint location for a bit, and will retire it
12500                  after we see some number of events.  The theory here
12501                  is that reporting of events should, "on the average",
12502                  be fair, so after a while we'll see events from all
12503                  threads that have anything of interest, and no longer
12504                  need to keep this breakpoint location around.  We
12505                  don't hold locations forever so to reduce chances of
12506                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12507                  SIGTRAP.
12508
12509                  The heuristic failing can be disastrous on
12510                  decr_pc_after_break targets.
12511
12512                  On decr_pc_after_break targets, like e.g., x86-linux,
12513                  if we fail to recognize a late breakpoint SIGTRAP,
12514                  because events_till_retirement has reached 0 too
12515                  soon, we'll fail to do the PC adjustment, and report
12516                  a random SIGTRAP to the user.  When the user resumes
12517                  the inferior, it will most likely immediately crash
12518                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12519                  corrupted, because of being resumed e.g., in the
12520                  middle of a multi-byte instruction, or skipped a
12521                  one-byte instruction.  This was actually seen happen
12522                  on native x86-linux, and should be less rare on
12523                  targets that do not support new thread events, like
12524                  remote, due to the heuristic depending on
12525                  thread_count.
12526
12527                  Mistaking a random SIGTRAP for a breakpoint trap
12528                  causes similar symptoms (PC adjustment applied when
12529                  it shouldn't), but then again, playing with SIGTRAPs
12530                  behind the debugger's back is asking for trouble.
12531
12532                  Since hardware watchpoint traps are always
12533                  distinguishable from other traps, so we don't need to
12534                  apply keep hardware watchpoint moribund locations
12535                  around.  We simply always ignore hardware watchpoint
12536                  traps we can no longer explain.  */
12537
12538               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12539               old_loc->owner = NULL;
12540
12541               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12542             }
12543           else
12544             {
12545               old_loc->owner = NULL;
12546               decref_bp_location (&old_loc);
12547             }
12548         }
12549     }
12550
12551   /* Rescan breakpoints at the same address and section, marking the
12552      first one as "first" and any others as "duplicates".  This is so
12553      that the bpt instruction is only inserted once.  If we have a
12554      permanent breakpoint at the same place as BPT, make that one the
12555      official one, and the rest as duplicates.  Permanent breakpoints
12556      are sorted first for the same address.
12557
12558      Do the same for hardware watchpoints, but also considering the
12559      watchpoint's type (regular/access/read) and length.  */
12560
12561   bp_loc_first = NULL;
12562   wp_loc_first = NULL;
12563   awp_loc_first = NULL;
12564   rwp_loc_first = NULL;
12565   ALL_BP_LOCATIONS (loc, locp)
12566     {
12567       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12568          non-NULL.  */
12569       struct bp_location **loc_first_p;
12570       b = loc->owner;
12571
12572       if (!unduplicated_should_be_inserted (loc)
12573           || !breakpoint_address_is_meaningful (b)
12574           /* Don't detect duplicate for tracepoint locations because they are
12575            never duplicated.  See the comments in field `duplicate' of
12576            `struct bp_location'.  */
12577           || is_tracepoint (b))
12578         {
12579           /* Clear the condition modification flag.  */
12580           loc->condition_changed = condition_unchanged;
12581           continue;
12582         }
12583
12584       /* Permanent breakpoint should always be inserted.  */
12585       if (b->enable_state == bp_permanent && ! loc->inserted)
12586         internal_error (__FILE__, __LINE__,
12587                         _("allegedly permanent breakpoint is not "
12588                         "actually inserted"));
12589
12590       if (b->type == bp_hardware_watchpoint)
12591         loc_first_p = &wp_loc_first;
12592       else if (b->type == bp_read_watchpoint)
12593         loc_first_p = &rwp_loc_first;
12594       else if (b->type == bp_access_watchpoint)
12595         loc_first_p = &awp_loc_first;
12596       else
12597         loc_first_p = &bp_loc_first;
12598
12599       if (*loc_first_p == NULL
12600           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12601           || !breakpoint_locations_match (loc, *loc_first_p))
12602         {
12603           *loc_first_p = loc;
12604           loc->duplicate = 0;
12605
12606           if (is_breakpoint (loc->owner) && loc->condition_changed)
12607             {
12608               loc->needs_update = 1;
12609               /* Clear the condition modification flag.  */
12610               loc->condition_changed = condition_unchanged;
12611             }
12612           continue;
12613         }
12614
12615
12616       /* This and the above ensure the invariant that the first location
12617          is not duplicated, and is the inserted one.
12618          All following are marked as duplicated, and are not inserted.  */
12619       if (loc->inserted)
12620         swap_insertion (loc, *loc_first_p);
12621       loc->duplicate = 1;
12622
12623       /* Clear the condition modification flag.  */
12624       loc->condition_changed = condition_unchanged;
12625
12626       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12627           && b->enable_state != bp_permanent)
12628         internal_error (__FILE__, __LINE__,
12629                         _("another breakpoint was inserted on top of "
12630                         "a permanent breakpoint"));
12631     }
12632
12633   if (breakpoints_always_inserted_mode ()
12634       && (have_live_inferiors ()
12635           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12636     {
12637       if (should_insert)
12638         insert_breakpoint_locations ();
12639       else
12640         {
12641           /* Though should_insert is false, we may need to update conditions
12642              on the target's side if it is evaluating such conditions.  We
12643              only update conditions for locations that are marked
12644              "needs_update".  */
12645           update_inserted_breakpoint_locations ();
12646         }
12647     }
12648
12649   if (should_insert)
12650     download_tracepoint_locations ();
12651
12652   do_cleanups (cleanups);
12653 }
12654
12655 void
12656 breakpoint_retire_moribund (void)
12657 {
12658   struct bp_location *loc;
12659   int ix;
12660
12661   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12662     if (--(loc->events_till_retirement) == 0)
12663       {
12664         decref_bp_location (&loc);
12665         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12666         --ix;
12667       }
12668 }
12669
12670 static void
12671 update_global_location_list_nothrow (int inserting)
12672 {
12673   volatile struct gdb_exception e;
12674
12675   TRY_CATCH (e, RETURN_MASK_ERROR)
12676     update_global_location_list (inserting);
12677 }
12678
12679 /* Clear BKP from a BPS.  */
12680
12681 static void
12682 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12683 {
12684   bpstat bs;
12685
12686   for (bs = bps; bs; bs = bs->next)
12687     if (bs->breakpoint_at == bpt)
12688       {
12689         bs->breakpoint_at = NULL;
12690         bs->old_val = NULL;
12691         /* bs->commands will be freed later.  */
12692       }
12693 }
12694
12695 /* Callback for iterate_over_threads.  */
12696 static int
12697 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12698 {
12699   struct breakpoint *bpt = data;
12700
12701   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12702   return 0;
12703 }
12704
12705 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12706    callbacks.  */
12707
12708 static void
12709 say_where (struct breakpoint *b)
12710 {
12711   struct ui_out *uiout = current_uiout;
12712   struct value_print_options opts;
12713
12714   get_user_print_options (&opts);
12715
12716   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12717      single string.  */
12718   if (b->loc == NULL)
12719     {
12720       printf_filtered (_(" (%s) pending."), b->addr_string);
12721     }
12722   else
12723     {
12724       if (opts.addressprint || b->loc->symtab == NULL)
12725         {
12726           printf_filtered (" at ");
12727           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12728                           gdb_stdout);
12729         }
12730       if (b->loc->symtab != NULL)
12731         {
12732           /* If there is a single location, we can print the location
12733              more nicely.  */
12734           if (b->loc->next == NULL)
12735             printf_filtered (": file %s, line %d.",
12736                              b->loc->symtab->filename, b->loc->line_number);
12737           else
12738             /* This is not ideal, but each location may have a
12739                different file name, and this at least reflects the
12740                real situation somewhat.  */
12741             printf_filtered (": %s.", b->addr_string);
12742         }
12743
12744       if (b->loc->next)
12745         {
12746           struct bp_location *loc = b->loc;
12747           int n = 0;
12748           for (; loc; loc = loc->next)
12749             ++n;
12750           printf_filtered (" (%d locations)", n);
12751         }
12752     }
12753 }
12754
12755 /* Default bp_location_ops methods.  */
12756
12757 static void
12758 bp_location_dtor (struct bp_location *self)
12759 {
12760   xfree (self->cond);
12761   if (self->cond_bytecode)
12762     free_agent_expr (self->cond_bytecode);
12763   xfree (self->function_name);
12764 }
12765
12766 static const struct bp_location_ops bp_location_ops =
12767 {
12768   bp_location_dtor
12769 };
12770
12771 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12772    inherit from.  */
12773
12774 static void
12775 base_breakpoint_dtor (struct breakpoint *self)
12776 {
12777   decref_counted_command_line (&self->commands);
12778   xfree (self->cond_string);
12779   xfree (self->addr_string);
12780   xfree (self->filter);
12781   xfree (self->addr_string_range_end);
12782 }
12783
12784 static struct bp_location *
12785 base_breakpoint_allocate_location (struct breakpoint *self)
12786 {
12787   struct bp_location *loc;
12788
12789   loc = XNEW (struct bp_location);
12790   init_bp_location (loc, &bp_location_ops, self);
12791   return loc;
12792 }
12793
12794 static void
12795 base_breakpoint_re_set (struct breakpoint *b)
12796 {
12797   /* Nothing to re-set. */
12798 }
12799
12800 #define internal_error_pure_virtual_called() \
12801   gdb_assert_not_reached ("pure virtual function called")
12802
12803 static int
12804 base_breakpoint_insert_location (struct bp_location *bl)
12805 {
12806   internal_error_pure_virtual_called ();
12807 }
12808
12809 static int
12810 base_breakpoint_remove_location (struct bp_location *bl)
12811 {
12812   internal_error_pure_virtual_called ();
12813 }
12814
12815 static int
12816 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12817                                 struct address_space *aspace,
12818                                 CORE_ADDR bp_addr,
12819                                 const struct target_waitstatus *ws)
12820 {
12821   internal_error_pure_virtual_called ();
12822 }
12823
12824 static void
12825 base_breakpoint_check_status (bpstat bs)
12826 {
12827   /* Always stop.   */
12828 }
12829
12830 /* A "works_in_software_mode" breakpoint_ops method that just internal
12831    errors.  */
12832
12833 static int
12834 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12835 {
12836   internal_error_pure_virtual_called ();
12837 }
12838
12839 /* A "resources_needed" breakpoint_ops method that just internal
12840    errors.  */
12841
12842 static int
12843 base_breakpoint_resources_needed (const struct bp_location *bl)
12844 {
12845   internal_error_pure_virtual_called ();
12846 }
12847
12848 static enum print_stop_action
12849 base_breakpoint_print_it (bpstat bs)
12850 {
12851   internal_error_pure_virtual_called ();
12852 }
12853
12854 static void
12855 base_breakpoint_print_one_detail (const struct breakpoint *self,
12856                                   struct ui_out *uiout)
12857 {
12858   /* nothing */
12859 }
12860
12861 static void
12862 base_breakpoint_print_mention (struct breakpoint *b)
12863 {
12864   internal_error_pure_virtual_called ();
12865 }
12866
12867 static void
12868 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12869 {
12870   internal_error_pure_virtual_called ();
12871 }
12872
12873 static void
12874 base_breakpoint_create_sals_from_address (char **arg,
12875                                           struct linespec_result *canonical,
12876                                           enum bptype type_wanted,
12877                                           char *addr_start,
12878                                           char **copy_arg)
12879 {
12880   internal_error_pure_virtual_called ();
12881 }
12882
12883 static void
12884 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12885                                         struct linespec_result *c,
12886                                         struct linespec_sals *lsal,
12887                                         char *cond_string,
12888                                         char *extra_string,
12889                                         enum bptype type_wanted,
12890                                         enum bpdisp disposition,
12891                                         int thread,
12892                                         int task, int ignore_count,
12893                                         const struct breakpoint_ops *o,
12894                                         int from_tty, int enabled,
12895                                         int internal, unsigned flags)
12896 {
12897   internal_error_pure_virtual_called ();
12898 }
12899
12900 static void
12901 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12902                                  struct symtabs_and_lines *sals)
12903 {
12904   internal_error_pure_virtual_called ();
12905 }
12906
12907 /* The default 'explains_signal' method.  */
12908
12909 static enum bpstat_signal_value
12910 base_breakpoint_explains_signal (struct breakpoint *b)
12911 {
12912   return BPSTAT_SIGNAL_HIDE;
12913 }
12914
12915 struct breakpoint_ops base_breakpoint_ops =
12916 {
12917   base_breakpoint_dtor,
12918   base_breakpoint_allocate_location,
12919   base_breakpoint_re_set,
12920   base_breakpoint_insert_location,
12921   base_breakpoint_remove_location,
12922   base_breakpoint_breakpoint_hit,
12923   base_breakpoint_check_status,
12924   base_breakpoint_resources_needed,
12925   base_breakpoint_works_in_software_mode,
12926   base_breakpoint_print_it,
12927   NULL,
12928   base_breakpoint_print_one_detail,
12929   base_breakpoint_print_mention,
12930   base_breakpoint_print_recreate,
12931   base_breakpoint_create_sals_from_address,
12932   base_breakpoint_create_breakpoints_sal,
12933   base_breakpoint_decode_linespec,
12934   base_breakpoint_explains_signal
12935 };
12936
12937 /* Default breakpoint_ops methods.  */
12938
12939 static void
12940 bkpt_re_set (struct breakpoint *b)
12941 {
12942   /* FIXME: is this still reachable?  */
12943   if (b->addr_string == NULL)
12944     {
12945       /* Anything without a string can't be re-set.  */
12946       delete_breakpoint (b);
12947       return;
12948     }
12949
12950   breakpoint_re_set_default (b);
12951 }
12952
12953 static int
12954 bkpt_insert_location (struct bp_location *bl)
12955 {
12956   if (bl->loc_type == bp_loc_hardware_breakpoint)
12957     return target_insert_hw_breakpoint (bl->gdbarch,
12958                                         &bl->target_info);
12959   else
12960     return target_insert_breakpoint (bl->gdbarch,
12961                                      &bl->target_info);
12962 }
12963
12964 static int
12965 bkpt_remove_location (struct bp_location *bl)
12966 {
12967   if (bl->loc_type == bp_loc_hardware_breakpoint)
12968     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12969   else
12970     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12971 }
12972
12973 static int
12974 bkpt_breakpoint_hit (const struct bp_location *bl,
12975                      struct address_space *aspace, CORE_ADDR bp_addr,
12976                      const struct target_waitstatus *ws)
12977 {
12978   struct breakpoint *b = bl->owner;
12979
12980   if (ws->kind != TARGET_WAITKIND_STOPPED
12981       || ws->value.sig != GDB_SIGNAL_TRAP)
12982     return 0;
12983
12984   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12985                                  aspace, bp_addr))
12986     return 0;
12987
12988   if (overlay_debugging         /* unmapped overlay section */
12989       && section_is_overlay (bl->section)
12990       && !section_is_mapped (bl->section))
12991     return 0;
12992
12993   return 1;
12994 }
12995
12996 static int
12997 bkpt_resources_needed (const struct bp_location *bl)
12998 {
12999   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13000
13001   return 1;
13002 }
13003
13004 static enum print_stop_action
13005 bkpt_print_it (bpstat bs)
13006 {
13007   struct breakpoint *b;
13008   const struct bp_location *bl;
13009   int bp_temp;
13010   struct ui_out *uiout = current_uiout;
13011
13012   gdb_assert (bs->bp_location_at != NULL);
13013
13014   bl = bs->bp_location_at;
13015   b = bs->breakpoint_at;
13016
13017   bp_temp = b->disposition == disp_del;
13018   if (bl->address != bl->requested_address)
13019     breakpoint_adjustment_warning (bl->requested_address,
13020                                    bl->address,
13021                                    b->number, 1);
13022   annotate_breakpoint (b->number);
13023   if (bp_temp)
13024     ui_out_text (uiout, "\nTemporary breakpoint ");
13025   else
13026     ui_out_text (uiout, "\nBreakpoint ");
13027   if (ui_out_is_mi_like_p (uiout))
13028     {
13029       ui_out_field_string (uiout, "reason",
13030                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13031       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13032     }
13033   ui_out_field_int (uiout, "bkptno", b->number);
13034   ui_out_text (uiout, ", ");
13035
13036   return PRINT_SRC_AND_LOC;
13037 }
13038
13039 static void
13040 bkpt_print_mention (struct breakpoint *b)
13041 {
13042   if (ui_out_is_mi_like_p (current_uiout))
13043     return;
13044
13045   switch (b->type)
13046     {
13047     case bp_breakpoint:
13048     case bp_gnu_ifunc_resolver:
13049       if (b->disposition == disp_del)
13050         printf_filtered (_("Temporary breakpoint"));
13051       else
13052         printf_filtered (_("Breakpoint"));
13053       printf_filtered (_(" %d"), b->number);
13054       if (b->type == bp_gnu_ifunc_resolver)
13055         printf_filtered (_(" at gnu-indirect-function resolver"));
13056       break;
13057     case bp_hardware_breakpoint:
13058       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13059       break;
13060     case bp_dprintf:
13061       printf_filtered (_("Dprintf %d"), b->number);
13062       break;
13063     }
13064
13065   say_where (b);
13066 }
13067
13068 static void
13069 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13070 {
13071   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13072     fprintf_unfiltered (fp, "tbreak");
13073   else if (tp->type == bp_breakpoint)
13074     fprintf_unfiltered (fp, "break");
13075   else if (tp->type == bp_hardware_breakpoint
13076            && tp->disposition == disp_del)
13077     fprintf_unfiltered (fp, "thbreak");
13078   else if (tp->type == bp_hardware_breakpoint)
13079     fprintf_unfiltered (fp, "hbreak");
13080   else
13081     internal_error (__FILE__, __LINE__,
13082                     _("unhandled breakpoint type %d"), (int) tp->type);
13083
13084   fprintf_unfiltered (fp, " %s", tp->addr_string);
13085   print_recreate_thread (tp, fp);
13086 }
13087
13088 static void
13089 bkpt_create_sals_from_address (char **arg,
13090                                struct linespec_result *canonical,
13091                                enum bptype type_wanted,
13092                                char *addr_start, char **copy_arg)
13093 {
13094   create_sals_from_address_default (arg, canonical, type_wanted,
13095                                     addr_start, copy_arg);
13096 }
13097
13098 static void
13099 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13100                              struct linespec_result *canonical,
13101                              struct linespec_sals *lsal,
13102                              char *cond_string,
13103                              char *extra_string,
13104                              enum bptype type_wanted,
13105                              enum bpdisp disposition,
13106                              int thread,
13107                              int task, int ignore_count,
13108                              const struct breakpoint_ops *ops,
13109                              int from_tty, int enabled,
13110                              int internal, unsigned flags)
13111 {
13112   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13113                                   cond_string, extra_string,
13114                                   type_wanted,
13115                                   disposition, thread, task,
13116                                   ignore_count, ops, from_tty,
13117                                   enabled, internal, flags);
13118 }
13119
13120 static void
13121 bkpt_decode_linespec (struct breakpoint *b, char **s,
13122                       struct symtabs_and_lines *sals)
13123 {
13124   decode_linespec_default (b, s, sals);
13125 }
13126
13127 /* Virtual table for internal breakpoints.  */
13128
13129 static void
13130 internal_bkpt_re_set (struct breakpoint *b)
13131 {
13132   switch (b->type)
13133     {
13134       /* Delete overlay event and longjmp master breakpoints; they
13135          will be reset later by breakpoint_re_set.  */
13136     case bp_overlay_event:
13137     case bp_longjmp_master:
13138     case bp_std_terminate_master:
13139     case bp_exception_master:
13140       delete_breakpoint (b);
13141       break;
13142
13143       /* This breakpoint is special, it's set up when the inferior
13144          starts and we really don't want to touch it.  */
13145     case bp_shlib_event:
13146
13147       /* Like bp_shlib_event, this breakpoint type is special.  Once
13148          it is set up, we do not want to touch it.  */
13149     case bp_thread_event:
13150       break;
13151     }
13152 }
13153
13154 static void
13155 internal_bkpt_check_status (bpstat bs)
13156 {
13157   if (bs->breakpoint_at->type == bp_shlib_event)
13158     {
13159       /* If requested, stop when the dynamic linker notifies GDB of
13160          events.  This allows the user to get control and place
13161          breakpoints in initializer routines for dynamically loaded
13162          objects (among other things).  */
13163       bs->stop = stop_on_solib_events;
13164       bs->print = stop_on_solib_events;
13165     }
13166   else
13167     bs->stop = 0;
13168 }
13169
13170 static enum print_stop_action
13171 internal_bkpt_print_it (bpstat bs)
13172 {
13173   struct ui_out *uiout = current_uiout;
13174   struct breakpoint *b;
13175
13176   b = bs->breakpoint_at;
13177
13178   switch (b->type)
13179     {
13180     case bp_shlib_event:
13181       /* Did we stop because the user set the stop_on_solib_events
13182          variable?  (If so, we report this as a generic, "Stopped due
13183          to shlib event" message.) */
13184       print_solib_event (0);
13185       break;
13186
13187     case bp_thread_event:
13188       /* Not sure how we will get here.
13189          GDB should not stop for these breakpoints.  */
13190       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13191       break;
13192
13193     case bp_overlay_event:
13194       /* By analogy with the thread event, GDB should not stop for these.  */
13195       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13196       break;
13197
13198     case bp_longjmp_master:
13199       /* These should never be enabled.  */
13200       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13201       break;
13202
13203     case bp_std_terminate_master:
13204       /* These should never be enabled.  */
13205       printf_filtered (_("std::terminate Master Breakpoint: "
13206                          "gdb should not stop!\n"));
13207       break;
13208
13209     case bp_exception_master:
13210       /* These should never be enabled.  */
13211       printf_filtered (_("Exception Master Breakpoint: "
13212                          "gdb should not stop!\n"));
13213       break;
13214     }
13215
13216   return PRINT_NOTHING;
13217 }
13218
13219 static void
13220 internal_bkpt_print_mention (struct breakpoint *b)
13221 {
13222   /* Nothing to mention.  These breakpoints are internal.  */
13223 }
13224
13225 /* Virtual table for momentary breakpoints  */
13226
13227 static void
13228 momentary_bkpt_re_set (struct breakpoint *b)
13229 {
13230   /* Keep temporary breakpoints, which can be encountered when we step
13231      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13232      Otherwise these should have been blown away via the cleanup chain
13233      or by breakpoint_init_inferior when we rerun the executable.  */
13234 }
13235
13236 static void
13237 momentary_bkpt_check_status (bpstat bs)
13238 {
13239   /* Nothing.  The point of these breakpoints is causing a stop.  */
13240 }
13241
13242 static enum print_stop_action
13243 momentary_bkpt_print_it (bpstat bs)
13244 {
13245   struct ui_out *uiout = current_uiout;
13246
13247   if (ui_out_is_mi_like_p (uiout))
13248     {
13249       struct breakpoint *b = bs->breakpoint_at;
13250
13251       switch (b->type)
13252         {
13253         case bp_finish:
13254           ui_out_field_string
13255             (uiout, "reason",
13256              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13257           break;
13258
13259         case bp_until:
13260           ui_out_field_string
13261             (uiout, "reason",
13262              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13263           break;
13264         }
13265     }
13266
13267   return PRINT_UNKNOWN;
13268 }
13269
13270 static void
13271 momentary_bkpt_print_mention (struct breakpoint *b)
13272 {
13273   /* Nothing to mention.  These breakpoints are internal.  */
13274 }
13275
13276 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13277
13278    It gets cleared already on the removal of the first one of such placed
13279    breakpoints.  This is OK as they get all removed altogether.  */
13280
13281 static void
13282 longjmp_bkpt_dtor (struct breakpoint *self)
13283 {
13284   struct thread_info *tp = find_thread_id (self->thread);
13285
13286   if (tp)
13287     tp->initiating_frame = null_frame_id;
13288
13289   momentary_breakpoint_ops.dtor (self);
13290 }
13291
13292 /* Specific methods for probe breakpoints.  */
13293
13294 static int
13295 bkpt_probe_insert_location (struct bp_location *bl)
13296 {
13297   int v = bkpt_insert_location (bl);
13298
13299   if (v == 0)
13300     {
13301       /* The insertion was successful, now let's set the probe's semaphore
13302          if needed.  */
13303       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13304     }
13305
13306   return v;
13307 }
13308
13309 static int
13310 bkpt_probe_remove_location (struct bp_location *bl)
13311 {
13312   /* Let's clear the semaphore before removing the location.  */
13313   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13314
13315   return bkpt_remove_location (bl);
13316 }
13317
13318 static void
13319 bkpt_probe_create_sals_from_address (char **arg,
13320                                      struct linespec_result *canonical,
13321                                      enum bptype type_wanted,
13322                                      char *addr_start, char **copy_arg)
13323 {
13324   struct linespec_sals lsal;
13325
13326   lsal.sals = parse_probes (arg, canonical);
13327
13328   *copy_arg = xstrdup (canonical->addr_string);
13329   lsal.canonical = xstrdup (*copy_arg);
13330
13331   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13332 }
13333
13334 static void
13335 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13336                             struct symtabs_and_lines *sals)
13337 {
13338   *sals = parse_probes (s, NULL);
13339   if (!sals->sals)
13340     error (_("probe not found"));
13341 }
13342
13343 /* The breakpoint_ops structure to be used in tracepoints.  */
13344
13345 static void
13346 tracepoint_re_set (struct breakpoint *b)
13347 {
13348   breakpoint_re_set_default (b);
13349 }
13350
13351 static int
13352 tracepoint_breakpoint_hit (const struct bp_location *bl,
13353                            struct address_space *aspace, CORE_ADDR bp_addr,
13354                            const struct target_waitstatus *ws)
13355 {
13356   /* By definition, the inferior does not report stops at
13357      tracepoints.  */
13358   return 0;
13359 }
13360
13361 static void
13362 tracepoint_print_one_detail (const struct breakpoint *self,
13363                              struct ui_out *uiout)
13364 {
13365   struct tracepoint *tp = (struct tracepoint *) self;
13366   if (tp->static_trace_marker_id)
13367     {
13368       gdb_assert (self->type == bp_static_tracepoint);
13369
13370       ui_out_text (uiout, "\tmarker id is ");
13371       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13372                            tp->static_trace_marker_id);
13373       ui_out_text (uiout, "\n");
13374     }
13375 }
13376
13377 static void
13378 tracepoint_print_mention (struct breakpoint *b)
13379 {
13380   if (ui_out_is_mi_like_p (current_uiout))
13381     return;
13382
13383   switch (b->type)
13384     {
13385     case bp_tracepoint:
13386       printf_filtered (_("Tracepoint"));
13387       printf_filtered (_(" %d"), b->number);
13388       break;
13389     case bp_fast_tracepoint:
13390       printf_filtered (_("Fast tracepoint"));
13391       printf_filtered (_(" %d"), b->number);
13392       break;
13393     case bp_static_tracepoint:
13394       printf_filtered (_("Static tracepoint"));
13395       printf_filtered (_(" %d"), b->number);
13396       break;
13397     default:
13398       internal_error (__FILE__, __LINE__,
13399                       _("unhandled tracepoint type %d"), (int) b->type);
13400     }
13401
13402   say_where (b);
13403 }
13404
13405 static void
13406 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13407 {
13408   struct tracepoint *tp = (struct tracepoint *) self;
13409
13410   if (self->type == bp_fast_tracepoint)
13411     fprintf_unfiltered (fp, "ftrace");
13412   if (self->type == bp_static_tracepoint)
13413     fprintf_unfiltered (fp, "strace");
13414   else if (self->type == bp_tracepoint)
13415     fprintf_unfiltered (fp, "trace");
13416   else
13417     internal_error (__FILE__, __LINE__,
13418                     _("unhandled tracepoint type %d"), (int) self->type);
13419
13420   fprintf_unfiltered (fp, " %s", self->addr_string);
13421   print_recreate_thread (self, fp);
13422
13423   if (tp->pass_count)
13424     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13425 }
13426
13427 static void
13428 tracepoint_create_sals_from_address (char **arg,
13429                                      struct linespec_result *canonical,
13430                                      enum bptype type_wanted,
13431                                      char *addr_start, char **copy_arg)
13432 {
13433   create_sals_from_address_default (arg, canonical, type_wanted,
13434                                     addr_start, copy_arg);
13435 }
13436
13437 static void
13438 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13439                                    struct linespec_result *canonical,
13440                                    struct linespec_sals *lsal,
13441                                    char *cond_string,
13442                                    char *extra_string,
13443                                    enum bptype type_wanted,
13444                                    enum bpdisp disposition,
13445                                    int thread,
13446                                    int task, int ignore_count,
13447                                    const struct breakpoint_ops *ops,
13448                                    int from_tty, int enabled,
13449                                    int internal, unsigned flags)
13450 {
13451   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13452                                   cond_string, extra_string,
13453                                   type_wanted,
13454                                   disposition, thread, task,
13455                                   ignore_count, ops, from_tty,
13456                                   enabled, internal, flags);
13457 }
13458
13459 static void
13460 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13461                             struct symtabs_and_lines *sals)
13462 {
13463   decode_linespec_default (b, s, sals);
13464 }
13465
13466 struct breakpoint_ops tracepoint_breakpoint_ops;
13467
13468 /* The breakpoint_ops structure to be use on tracepoints placed in a
13469    static probe.  */
13470
13471 static void
13472 tracepoint_probe_create_sals_from_address (char **arg,
13473                                            struct linespec_result *canonical,
13474                                            enum bptype type_wanted,
13475                                            char *addr_start, char **copy_arg)
13476 {
13477   /* We use the same method for breakpoint on probes.  */
13478   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13479                                        addr_start, copy_arg);
13480 }
13481
13482 static void
13483 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13484                                   struct symtabs_and_lines *sals)
13485 {
13486   /* We use the same method for breakpoint on probes.  */
13487   bkpt_probe_decode_linespec (b, s, sals);
13488 }
13489
13490 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13491
13492 /* The breakpoint_ops structure to be used on static tracepoints with
13493    markers (`-m').  */
13494
13495 static void
13496 strace_marker_create_sals_from_address (char **arg,
13497                                         struct linespec_result *canonical,
13498                                         enum bptype type_wanted,
13499                                         char *addr_start, char **copy_arg)
13500 {
13501   struct linespec_sals lsal;
13502
13503   lsal.sals = decode_static_tracepoint_spec (arg);
13504
13505   *copy_arg = savestring (addr_start, *arg - addr_start);
13506
13507   canonical->addr_string = xstrdup (*copy_arg);
13508   lsal.canonical = xstrdup (*copy_arg);
13509   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13510 }
13511
13512 static void
13513 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13514                                       struct linespec_result *canonical,
13515                                       struct linespec_sals *lsal,
13516                                       char *cond_string,
13517                                       char *extra_string,
13518                                       enum bptype type_wanted,
13519                                       enum bpdisp disposition,
13520                                       int thread,
13521                                       int task, int ignore_count,
13522                                       const struct breakpoint_ops *ops,
13523                                       int from_tty, int enabled,
13524                                       int internal, unsigned flags)
13525 {
13526   int i;
13527
13528   /* If the user is creating a static tracepoint by marker id
13529      (strace -m MARKER_ID), then store the sals index, so that
13530      breakpoint_re_set can try to match up which of the newly
13531      found markers corresponds to this one, and, don't try to
13532      expand multiple locations for each sal, given than SALS
13533      already should contain all sals for MARKER_ID.  */
13534
13535   for (i = 0; i < lsal->sals.nelts; ++i)
13536     {
13537       struct symtabs_and_lines expanded;
13538       struct tracepoint *tp;
13539       struct cleanup *old_chain;
13540       char *addr_string;
13541
13542       expanded.nelts = 1;
13543       expanded.sals = &lsal->sals.sals[i];
13544
13545       addr_string = xstrdup (canonical->addr_string);
13546       old_chain = make_cleanup (xfree, addr_string);
13547
13548       tp = XCNEW (struct tracepoint);
13549       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13550                            addr_string, NULL,
13551                            cond_string, extra_string,
13552                            type_wanted, disposition,
13553                            thread, task, ignore_count, ops,
13554                            from_tty, enabled, internal, flags,
13555                            canonical->special_display);
13556       /* Given that its possible to have multiple markers with
13557          the same string id, if the user is creating a static
13558          tracepoint by marker id ("strace -m MARKER_ID"), then
13559          store the sals index, so that breakpoint_re_set can
13560          try to match up which of the newly found markers
13561          corresponds to this one  */
13562       tp->static_trace_marker_id_idx = i;
13563
13564       install_breakpoint (internal, &tp->base, 0);
13565
13566       discard_cleanups (old_chain);
13567     }
13568 }
13569
13570 static void
13571 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13572                                struct symtabs_and_lines *sals)
13573 {
13574   struct tracepoint *tp = (struct tracepoint *) b;
13575
13576   *sals = decode_static_tracepoint_spec (s);
13577   if (sals->nelts > tp->static_trace_marker_id_idx)
13578     {
13579       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13580       sals->nelts = 1;
13581     }
13582   else
13583     error (_("marker %s not found"), tp->static_trace_marker_id);
13584 }
13585
13586 static struct breakpoint_ops strace_marker_breakpoint_ops;
13587
13588 static int
13589 strace_marker_p (struct breakpoint *b)
13590 {
13591   return b->ops == &strace_marker_breakpoint_ops;
13592 }
13593
13594 /* Delete a breakpoint and clean up all traces of it in the data
13595    structures.  */
13596
13597 void
13598 delete_breakpoint (struct breakpoint *bpt)
13599 {
13600   struct breakpoint *b;
13601
13602   gdb_assert (bpt != NULL);
13603
13604   /* Has this bp already been deleted?  This can happen because
13605      multiple lists can hold pointers to bp's.  bpstat lists are
13606      especial culprits.
13607
13608      One example of this happening is a watchpoint's scope bp.  When
13609      the scope bp triggers, we notice that the watchpoint is out of
13610      scope, and delete it.  We also delete its scope bp.  But the
13611      scope bp is marked "auto-deleting", and is already on a bpstat.
13612      That bpstat is then checked for auto-deleting bp's, which are
13613      deleted.
13614
13615      A real solution to this problem might involve reference counts in
13616      bp's, and/or giving them pointers back to their referencing
13617      bpstat's, and teaching delete_breakpoint to only free a bp's
13618      storage when no more references were extent.  A cheaper bandaid
13619      was chosen.  */
13620   if (bpt->type == bp_none)
13621     return;
13622
13623   /* At least avoid this stale reference until the reference counting
13624      of breakpoints gets resolved.  */
13625   if (bpt->related_breakpoint != bpt)
13626     {
13627       struct breakpoint *related;
13628       struct watchpoint *w;
13629
13630       if (bpt->type == bp_watchpoint_scope)
13631         w = (struct watchpoint *) bpt->related_breakpoint;
13632       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13633         w = (struct watchpoint *) bpt;
13634       else
13635         w = NULL;
13636       if (w != NULL)
13637         watchpoint_del_at_next_stop (w);
13638
13639       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13640       for (related = bpt; related->related_breakpoint != bpt;
13641            related = related->related_breakpoint);
13642       related->related_breakpoint = bpt->related_breakpoint;
13643       bpt->related_breakpoint = bpt;
13644     }
13645
13646   /* watch_command_1 creates a watchpoint but only sets its number if
13647      update_watchpoint succeeds in creating its bp_locations.  If there's
13648      a problem in that process, we'll be asked to delete the half-created
13649      watchpoint.  In that case, don't announce the deletion.  */
13650   if (bpt->number)
13651     observer_notify_breakpoint_deleted (bpt);
13652
13653   if (breakpoint_chain == bpt)
13654     breakpoint_chain = bpt->next;
13655
13656   ALL_BREAKPOINTS (b)
13657     if (b->next == bpt)
13658     {
13659       b->next = bpt->next;
13660       break;
13661     }
13662
13663   /* Be sure no bpstat's are pointing at the breakpoint after it's
13664      been freed.  */
13665   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13666      in all threads for now.  Note that we cannot just remove bpstats
13667      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13668      commands are associated with the bpstat; if we remove it here,
13669      then the later call to bpstat_do_actions (&stop_bpstat); in
13670      event-top.c won't do anything, and temporary breakpoints with
13671      commands won't work.  */
13672
13673   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13674
13675   /* Now that breakpoint is removed from breakpoint list, update the
13676      global location list.  This will remove locations that used to
13677      belong to this breakpoint.  Do this before freeing the breakpoint
13678      itself, since remove_breakpoint looks at location's owner.  It
13679      might be better design to have location completely
13680      self-contained, but it's not the case now.  */
13681   update_global_location_list (0);
13682
13683   bpt->ops->dtor (bpt);
13684   /* On the chance that someone will soon try again to delete this
13685      same bp, we mark it as deleted before freeing its storage.  */
13686   bpt->type = bp_none;
13687   xfree (bpt);
13688 }
13689
13690 static void
13691 do_delete_breakpoint_cleanup (void *b)
13692 {
13693   delete_breakpoint (b);
13694 }
13695
13696 struct cleanup *
13697 make_cleanup_delete_breakpoint (struct breakpoint *b)
13698 {
13699   return make_cleanup (do_delete_breakpoint_cleanup, b);
13700 }
13701
13702 /* Iterator function to call a user-provided callback function once
13703    for each of B and its related breakpoints.  */
13704
13705 static void
13706 iterate_over_related_breakpoints (struct breakpoint *b,
13707                                   void (*function) (struct breakpoint *,
13708                                                     void *),
13709                                   void *data)
13710 {
13711   struct breakpoint *related;
13712
13713   related = b;
13714   do
13715     {
13716       struct breakpoint *next;
13717
13718       /* FUNCTION may delete RELATED.  */
13719       next = related->related_breakpoint;
13720
13721       if (next == related)
13722         {
13723           /* RELATED is the last ring entry.  */
13724           function (related, data);
13725
13726           /* FUNCTION may have deleted it, so we'd never reach back to
13727              B.  There's nothing left to do anyway, so just break
13728              out.  */
13729           break;
13730         }
13731       else
13732         function (related, data);
13733
13734       related = next;
13735     }
13736   while (related != b);
13737 }
13738
13739 static void
13740 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13741 {
13742   delete_breakpoint (b);
13743 }
13744
13745 /* A callback for map_breakpoint_numbers that calls
13746    delete_breakpoint.  */
13747
13748 static void
13749 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13750 {
13751   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13752 }
13753
13754 void
13755 delete_command (char *arg, int from_tty)
13756 {
13757   struct breakpoint *b, *b_tmp;
13758
13759   dont_repeat ();
13760
13761   if (arg == 0)
13762     {
13763       int breaks_to_delete = 0;
13764
13765       /* Delete all breakpoints if no argument.  Do not delete
13766          internal breakpoints, these have to be deleted with an
13767          explicit breakpoint number argument.  */
13768       ALL_BREAKPOINTS (b)
13769         if (user_breakpoint_p (b))
13770           {
13771             breaks_to_delete = 1;
13772             break;
13773           }
13774
13775       /* Ask user only if there are some breakpoints to delete.  */
13776       if (!from_tty
13777           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13778         {
13779           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13780             if (user_breakpoint_p (b))
13781               delete_breakpoint (b);
13782         }
13783     }
13784   else
13785     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13786 }
13787
13788 static int
13789 all_locations_are_pending (struct bp_location *loc)
13790 {
13791   for (; loc; loc = loc->next)
13792     if (!loc->shlib_disabled
13793         && !loc->pspace->executing_startup)
13794       return 0;
13795   return 1;
13796 }
13797
13798 /* Subroutine of update_breakpoint_locations to simplify it.
13799    Return non-zero if multiple fns in list LOC have the same name.
13800    Null names are ignored.  */
13801
13802 static int
13803 ambiguous_names_p (struct bp_location *loc)
13804 {
13805   struct bp_location *l;
13806   htab_t htab = htab_create_alloc (13, htab_hash_string,
13807                                    (int (*) (const void *, 
13808                                              const void *)) streq,
13809                                    NULL, xcalloc, xfree);
13810
13811   for (l = loc; l != NULL; l = l->next)
13812     {
13813       const char **slot;
13814       const char *name = l->function_name;
13815
13816       /* Allow for some names to be NULL, ignore them.  */
13817       if (name == NULL)
13818         continue;
13819
13820       slot = (const char **) htab_find_slot (htab, (const void *) name,
13821                                              INSERT);
13822       /* NOTE: We can assume slot != NULL here because xcalloc never
13823          returns NULL.  */
13824       if (*slot != NULL)
13825         {
13826           htab_delete (htab);
13827           return 1;
13828         }
13829       *slot = name;
13830     }
13831
13832   htab_delete (htab);
13833   return 0;
13834 }
13835
13836 /* When symbols change, it probably means the sources changed as well,
13837    and it might mean the static tracepoint markers are no longer at
13838    the same address or line numbers they used to be at last we
13839    checked.  Losing your static tracepoints whenever you rebuild is
13840    undesirable.  This function tries to resync/rematch gdb static
13841    tracepoints with the markers on the target, for static tracepoints
13842    that have not been set by marker id.  Static tracepoint that have
13843    been set by marker id are reset by marker id in breakpoint_re_set.
13844    The heuristic is:
13845
13846    1) For a tracepoint set at a specific address, look for a marker at
13847    the old PC.  If one is found there, assume to be the same marker.
13848    If the name / string id of the marker found is different from the
13849    previous known name, assume that means the user renamed the marker
13850    in the sources, and output a warning.
13851
13852    2) For a tracepoint set at a given line number, look for a marker
13853    at the new address of the old line number.  If one is found there,
13854    assume to be the same marker.  If the name / string id of the
13855    marker found is different from the previous known name, assume that
13856    means the user renamed the marker in the sources, and output a
13857    warning.
13858
13859    3) If a marker is no longer found at the same address or line, it
13860    may mean the marker no longer exists.  But it may also just mean
13861    the code changed a bit.  Maybe the user added a few lines of code
13862    that made the marker move up or down (in line number terms).  Ask
13863    the target for info about the marker with the string id as we knew
13864    it.  If found, update line number and address in the matching
13865    static tracepoint.  This will get confused if there's more than one
13866    marker with the same ID (possible in UST, although unadvised
13867    precisely because it confuses tools).  */
13868
13869 static struct symtab_and_line
13870 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13871 {
13872   struct tracepoint *tp = (struct tracepoint *) b;
13873   struct static_tracepoint_marker marker;
13874   CORE_ADDR pc;
13875
13876   pc = sal.pc;
13877   if (sal.line)
13878     find_line_pc (sal.symtab, sal.line, &pc);
13879
13880   if (target_static_tracepoint_marker_at (pc, &marker))
13881     {
13882       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13883         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13884                  b->number,
13885                  tp->static_trace_marker_id, marker.str_id);
13886
13887       xfree (tp->static_trace_marker_id);
13888       tp->static_trace_marker_id = xstrdup (marker.str_id);
13889       release_static_tracepoint_marker (&marker);
13890
13891       return sal;
13892     }
13893
13894   /* Old marker wasn't found on target at lineno.  Try looking it up
13895      by string ID.  */
13896   if (!sal.explicit_pc
13897       && sal.line != 0
13898       && sal.symtab != NULL
13899       && tp->static_trace_marker_id != NULL)
13900     {
13901       VEC(static_tracepoint_marker_p) *markers;
13902
13903       markers
13904         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13905
13906       if (!VEC_empty(static_tracepoint_marker_p, markers))
13907         {
13908           struct symtab_and_line sal2;
13909           struct symbol *sym;
13910           struct static_tracepoint_marker *tpmarker;
13911           struct ui_out *uiout = current_uiout;
13912
13913           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13914
13915           xfree (tp->static_trace_marker_id);
13916           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13917
13918           warning (_("marker for static tracepoint %d (%s) not "
13919                      "found at previous line number"),
13920                    b->number, tp->static_trace_marker_id);
13921
13922           init_sal (&sal2);
13923
13924           sal2.pc = tpmarker->address;
13925
13926           sal2 = find_pc_line (tpmarker->address, 0);
13927           sym = find_pc_sect_function (tpmarker->address, NULL);
13928           ui_out_text (uiout, "Now in ");
13929           if (sym)
13930             {
13931               ui_out_field_string (uiout, "func",
13932                                    SYMBOL_PRINT_NAME (sym));
13933               ui_out_text (uiout, " at ");
13934             }
13935           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13936           ui_out_text (uiout, ":");
13937
13938           if (ui_out_is_mi_like_p (uiout))
13939             {
13940               const char *fullname = symtab_to_fullname (sal2.symtab);
13941
13942               ui_out_field_string (uiout, "fullname", fullname);
13943             }
13944
13945           ui_out_field_int (uiout, "line", sal2.line);
13946           ui_out_text (uiout, "\n");
13947
13948           b->loc->line_number = sal2.line;
13949           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13950
13951           xfree (b->addr_string);
13952           b->addr_string = xstrprintf ("%s:%d",
13953                                        sal2.symtab->filename,
13954                                        b->loc->line_number);
13955
13956           /* Might be nice to check if function changed, and warn if
13957              so.  */
13958
13959           release_static_tracepoint_marker (tpmarker);
13960         }
13961     }
13962   return sal;
13963 }
13964
13965 /* Returns 1 iff locations A and B are sufficiently same that
13966    we don't need to report breakpoint as changed.  */
13967
13968 static int
13969 locations_are_equal (struct bp_location *a, struct bp_location *b)
13970 {
13971   while (a && b)
13972     {
13973       if (a->address != b->address)
13974         return 0;
13975
13976       if (a->shlib_disabled != b->shlib_disabled)
13977         return 0;
13978
13979       if (a->enabled != b->enabled)
13980         return 0;
13981
13982       a = a->next;
13983       b = b->next;
13984     }
13985
13986   if ((a == NULL) != (b == NULL))
13987     return 0;
13988
13989   return 1;
13990 }
13991
13992 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13993    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13994    a ranged breakpoint.  */
13995
13996 void
13997 update_breakpoint_locations (struct breakpoint *b,
13998                              struct symtabs_and_lines sals,
13999                              struct symtabs_and_lines sals_end)
14000 {
14001   int i;
14002   struct bp_location *existing_locations = b->loc;
14003
14004   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14005     {
14006       /* Ranged breakpoints have only one start location and one end
14007          location.  */
14008       b->enable_state = bp_disabled;
14009       update_global_location_list (1);
14010       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14011                            "multiple locations found\n"),
14012                          b->number);
14013       return;
14014     }
14015
14016   /* If there's no new locations, and all existing locations are
14017      pending, don't do anything.  This optimizes the common case where
14018      all locations are in the same shared library, that was unloaded.
14019      We'd like to retain the location, so that when the library is
14020      loaded again, we don't loose the enabled/disabled status of the
14021      individual locations.  */
14022   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14023     return;
14024
14025   b->loc = NULL;
14026
14027   for (i = 0; i < sals.nelts; ++i)
14028     {
14029       struct bp_location *new_loc;
14030
14031       switch_to_program_space_and_thread (sals.sals[i].pspace);
14032
14033       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14034
14035       /* Reparse conditions, they might contain references to the
14036          old symtab.  */
14037       if (b->cond_string != NULL)
14038         {
14039           char *s;
14040           volatile struct gdb_exception e;
14041
14042           s = b->cond_string;
14043           TRY_CATCH (e, RETURN_MASK_ERROR)
14044             {
14045               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14046                                            block_for_pc (sals.sals[i].pc), 
14047                                            0);
14048             }
14049           if (e.reason < 0)
14050             {
14051               warning (_("failed to reevaluate condition "
14052                          "for breakpoint %d: %s"), 
14053                        b->number, e.message);
14054               new_loc->enabled = 0;
14055             }
14056         }
14057
14058       if (sals_end.nelts)
14059         {
14060           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14061
14062           new_loc->length = end - sals.sals[0].pc + 1;
14063         }
14064     }
14065
14066   /* Update locations of permanent breakpoints.  */
14067   if (b->enable_state == bp_permanent)
14068     make_breakpoint_permanent (b);
14069
14070   /* If possible, carry over 'disable' status from existing
14071      breakpoints.  */
14072   {
14073     struct bp_location *e = existing_locations;
14074     /* If there are multiple breakpoints with the same function name,
14075        e.g. for inline functions, comparing function names won't work.
14076        Instead compare pc addresses; this is just a heuristic as things
14077        may have moved, but in practice it gives the correct answer
14078        often enough until a better solution is found.  */
14079     int have_ambiguous_names = ambiguous_names_p (b->loc);
14080
14081     for (; e; e = e->next)
14082       {
14083         if (!e->enabled && e->function_name)
14084           {
14085             struct bp_location *l = b->loc;
14086             if (have_ambiguous_names)
14087               {
14088                 for (; l; l = l->next)
14089                   if (breakpoint_locations_match (e, l))
14090                     {
14091                       l->enabled = 0;
14092                       break;
14093                     }
14094               }
14095             else
14096               {
14097                 for (; l; l = l->next)
14098                   if (l->function_name
14099                       && strcmp (e->function_name, l->function_name) == 0)
14100                     {
14101                       l->enabled = 0;
14102                       break;
14103                     }
14104               }
14105           }
14106       }
14107   }
14108
14109   if (!locations_are_equal (existing_locations, b->loc))
14110     observer_notify_breakpoint_modified (b);
14111
14112   update_global_location_list (1);
14113 }
14114
14115 /* Find the SaL locations corresponding to the given ADDR_STRING.
14116    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14117
14118 static struct symtabs_and_lines
14119 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14120 {
14121   char *s;
14122   struct symtabs_and_lines sals = {0};
14123   volatile struct gdb_exception e;
14124
14125   gdb_assert (b->ops != NULL);
14126   s = addr_string;
14127
14128   TRY_CATCH (e, RETURN_MASK_ERROR)
14129     {
14130       b->ops->decode_linespec (b, &s, &sals);
14131     }
14132   if (e.reason < 0)
14133     {
14134       int not_found_and_ok = 0;
14135       /* For pending breakpoints, it's expected that parsing will
14136          fail until the right shared library is loaded.  User has
14137          already told to create pending breakpoints and don't need
14138          extra messages.  If breakpoint is in bp_shlib_disabled
14139          state, then user already saw the message about that
14140          breakpoint being disabled, and don't want to see more
14141          errors.  */
14142       if (e.error == NOT_FOUND_ERROR
14143           && (b->condition_not_parsed 
14144               || (b->loc && b->loc->shlib_disabled)
14145               || (b->loc && b->loc->pspace->executing_startup)
14146               || b->enable_state == bp_disabled))
14147         not_found_and_ok = 1;
14148
14149       if (!not_found_and_ok)
14150         {
14151           /* We surely don't want to warn about the same breakpoint
14152              10 times.  One solution, implemented here, is disable
14153              the breakpoint on error.  Another solution would be to
14154              have separate 'warning emitted' flag.  Since this
14155              happens only when a binary has changed, I don't know
14156              which approach is better.  */
14157           b->enable_state = bp_disabled;
14158           throw_exception (e);
14159         }
14160     }
14161
14162   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14163     {
14164       int i;
14165
14166       for (i = 0; i < sals.nelts; ++i)
14167         resolve_sal_pc (&sals.sals[i]);
14168       if (b->condition_not_parsed && s && s[0])
14169         {
14170           char *cond_string, *extra_string;
14171           int thread, task;
14172
14173           find_condition_and_thread (s, sals.sals[0].pc,
14174                                      &cond_string, &thread, &task,
14175                                      &extra_string);
14176           if (cond_string)
14177             b->cond_string = cond_string;
14178           b->thread = thread;
14179           b->task = task;
14180           if (extra_string)
14181             b->extra_string = extra_string;
14182           b->condition_not_parsed = 0;
14183         }
14184
14185       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14186         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14187
14188       *found = 1;
14189     }
14190   else
14191     *found = 0;
14192
14193   return sals;
14194 }
14195
14196 /* The default re_set method, for typical hardware or software
14197    breakpoints.  Reevaluate the breakpoint and recreate its
14198    locations.  */
14199
14200 static void
14201 breakpoint_re_set_default (struct breakpoint *b)
14202 {
14203   int found;
14204   struct symtabs_and_lines sals, sals_end;
14205   struct symtabs_and_lines expanded = {0};
14206   struct symtabs_and_lines expanded_end = {0};
14207
14208   sals = addr_string_to_sals (b, b->addr_string, &found);
14209   if (found)
14210     {
14211       make_cleanup (xfree, sals.sals);
14212       expanded = sals;
14213     }
14214
14215   if (b->addr_string_range_end)
14216     {
14217       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14218       if (found)
14219         {
14220           make_cleanup (xfree, sals_end.sals);
14221           expanded_end = sals_end;
14222         }
14223     }
14224
14225   update_breakpoint_locations (b, expanded, expanded_end);
14226 }
14227
14228 /* Default method for creating SALs from an address string.  It basically
14229    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14230
14231 static void
14232 create_sals_from_address_default (char **arg,
14233                                   struct linespec_result *canonical,
14234                                   enum bptype type_wanted,
14235                                   char *addr_start, char **copy_arg)
14236 {
14237   parse_breakpoint_sals (arg, canonical);
14238 }
14239
14240 /* Call create_breakpoints_sal for the given arguments.  This is the default
14241    function for the `create_breakpoints_sal' method of
14242    breakpoint_ops.  */
14243
14244 static void
14245 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14246                                 struct linespec_result *canonical,
14247                                 struct linespec_sals *lsal,
14248                                 char *cond_string,
14249                                 char *extra_string,
14250                                 enum bptype type_wanted,
14251                                 enum bpdisp disposition,
14252                                 int thread,
14253                                 int task, int ignore_count,
14254                                 const struct breakpoint_ops *ops,
14255                                 int from_tty, int enabled,
14256                                 int internal, unsigned flags)
14257 {
14258   create_breakpoints_sal (gdbarch, canonical, cond_string,
14259                           extra_string,
14260                           type_wanted, disposition,
14261                           thread, task, ignore_count, ops, from_tty,
14262                           enabled, internal, flags);
14263 }
14264
14265 /* Decode the line represented by S by calling decode_line_full.  This is the
14266    default function for the `decode_linespec' method of breakpoint_ops.  */
14267
14268 static void
14269 decode_linespec_default (struct breakpoint *b, char **s,
14270                          struct symtabs_and_lines *sals)
14271 {
14272   struct linespec_result canonical;
14273
14274   init_linespec_result (&canonical);
14275   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14276                     (struct symtab *) NULL, 0,
14277                     &canonical, multiple_symbols_all,
14278                     b->filter);
14279
14280   /* We should get 0 or 1 resulting SALs.  */
14281   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14282
14283   if (VEC_length (linespec_sals, canonical.sals) > 0)
14284     {
14285       struct linespec_sals *lsal;
14286
14287       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14288       *sals = lsal->sals;
14289       /* Arrange it so the destructor does not free the
14290          contents.  */
14291       lsal->sals.sals = NULL;
14292     }
14293
14294   destroy_linespec_result (&canonical);
14295 }
14296
14297 /* Prepare the global context for a re-set of breakpoint B.  */
14298
14299 static struct cleanup *
14300 prepare_re_set_context (struct breakpoint *b)
14301 {
14302   struct cleanup *cleanups;
14303
14304   input_radix = b->input_radix;
14305   cleanups = save_current_space_and_thread ();
14306   if (b->pspace != NULL)
14307     switch_to_program_space_and_thread (b->pspace);
14308   set_language (b->language);
14309
14310   return cleanups;
14311 }
14312
14313 /* Reset a breakpoint given it's struct breakpoint * BINT.
14314    The value we return ends up being the return value from catch_errors.
14315    Unused in this case.  */
14316
14317 static int
14318 breakpoint_re_set_one (void *bint)
14319 {
14320   /* Get past catch_errs.  */
14321   struct breakpoint *b = (struct breakpoint *) bint;
14322   struct cleanup *cleanups;
14323
14324   cleanups = prepare_re_set_context (b);
14325   b->ops->re_set (b);
14326   do_cleanups (cleanups);
14327   return 0;
14328 }
14329
14330 /* Re-set all breakpoints after symbols have been re-loaded.  */
14331 void
14332 breakpoint_re_set (void)
14333 {
14334   struct breakpoint *b, *b_tmp;
14335   enum language save_language;
14336   int save_input_radix;
14337   struct cleanup *old_chain;
14338
14339   save_language = current_language->la_language;
14340   save_input_radix = input_radix;
14341   old_chain = save_current_program_space ();
14342
14343   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14344   {
14345     /* Format possible error msg.  */
14346     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14347                                 b->number);
14348     struct cleanup *cleanups = make_cleanup (xfree, message);
14349     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14350     do_cleanups (cleanups);
14351   }
14352   set_language (save_language);
14353   input_radix = save_input_radix;
14354
14355   jit_breakpoint_re_set ();
14356
14357   do_cleanups (old_chain);
14358
14359   create_overlay_event_breakpoint ();
14360   create_longjmp_master_breakpoint ();
14361   create_std_terminate_master_breakpoint ();
14362   create_exception_master_breakpoint ();
14363 }
14364 \f
14365 /* Reset the thread number of this breakpoint:
14366
14367    - If the breakpoint is for all threads, leave it as-is.
14368    - Else, reset it to the current thread for inferior_ptid.  */
14369 void
14370 breakpoint_re_set_thread (struct breakpoint *b)
14371 {
14372   if (b->thread != -1)
14373     {
14374       if (in_thread_list (inferior_ptid))
14375         b->thread = pid_to_thread_id (inferior_ptid);
14376
14377       /* We're being called after following a fork.  The new fork is
14378          selected as current, and unless this was a vfork will have a
14379          different program space from the original thread.  Reset that
14380          as well.  */
14381       b->loc->pspace = current_program_space;
14382     }
14383 }
14384
14385 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14386    If from_tty is nonzero, it prints a message to that effect,
14387    which ends with a period (no newline).  */
14388
14389 void
14390 set_ignore_count (int bptnum, int count, int from_tty)
14391 {
14392   struct breakpoint *b;
14393
14394   if (count < 0)
14395     count = 0;
14396
14397   ALL_BREAKPOINTS (b)
14398     if (b->number == bptnum)
14399     {
14400       if (is_tracepoint (b))
14401         {
14402           if (from_tty && count != 0)
14403             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14404                              bptnum);
14405           return;
14406         }
14407       
14408       b->ignore_count = count;
14409       if (from_tty)
14410         {
14411           if (count == 0)
14412             printf_filtered (_("Will stop next time "
14413                                "breakpoint %d is reached."),
14414                              bptnum);
14415           else if (count == 1)
14416             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14417                              bptnum);
14418           else
14419             printf_filtered (_("Will ignore next %d "
14420                                "crossings of breakpoint %d."),
14421                              count, bptnum);
14422         }
14423       observer_notify_breakpoint_modified (b);
14424       return;
14425     }
14426
14427   error (_("No breakpoint number %d."), bptnum);
14428 }
14429
14430 /* Command to set ignore-count of breakpoint N to COUNT.  */
14431
14432 static void
14433 ignore_command (char *args, int from_tty)
14434 {
14435   char *p = args;
14436   int num;
14437
14438   if (p == 0)
14439     error_no_arg (_("a breakpoint number"));
14440
14441   num = get_number (&p);
14442   if (num == 0)
14443     error (_("bad breakpoint number: '%s'"), args);
14444   if (*p == 0)
14445     error (_("Second argument (specified ignore-count) is missing."));
14446
14447   set_ignore_count (num,
14448                     longest_to_int (value_as_long (parse_and_eval (p))),
14449                     from_tty);
14450   if (from_tty)
14451     printf_filtered ("\n");
14452 }
14453 \f
14454 /* Call FUNCTION on each of the breakpoints
14455    whose numbers are given in ARGS.  */
14456
14457 static void
14458 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14459                                                       void *),
14460                         void *data)
14461 {
14462   int num;
14463   struct breakpoint *b, *tmp;
14464   int match;
14465   struct get_number_or_range_state state;
14466
14467   if (args == 0)
14468     error_no_arg (_("one or more breakpoint numbers"));
14469
14470   init_number_or_range (&state, args);
14471
14472   while (!state.finished)
14473     {
14474       char *p = state.string;
14475
14476       match = 0;
14477
14478       num = get_number_or_range (&state);
14479       if (num == 0)
14480         {
14481           warning (_("bad breakpoint number at or near '%s'"), p);
14482         }
14483       else
14484         {
14485           ALL_BREAKPOINTS_SAFE (b, tmp)
14486             if (b->number == num)
14487               {
14488                 match = 1;
14489                 function (b, data);
14490                 break;
14491               }
14492           if (match == 0)
14493             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14494         }
14495     }
14496 }
14497
14498 static struct bp_location *
14499 find_location_by_number (char *number)
14500 {
14501   char *dot = strchr (number, '.');
14502   char *p1;
14503   int bp_num;
14504   int loc_num;
14505   struct breakpoint *b;
14506   struct bp_location *loc;  
14507
14508   *dot = '\0';
14509
14510   p1 = number;
14511   bp_num = get_number (&p1);
14512   if (bp_num == 0)
14513     error (_("Bad breakpoint number '%s'"), number);
14514
14515   ALL_BREAKPOINTS (b)
14516     if (b->number == bp_num)
14517       {
14518         break;
14519       }
14520
14521   if (!b || b->number != bp_num)
14522     error (_("Bad breakpoint number '%s'"), number);
14523   
14524   p1 = dot+1;
14525   loc_num = get_number (&p1);
14526   if (loc_num == 0)
14527     error (_("Bad breakpoint location number '%s'"), number);
14528
14529   --loc_num;
14530   loc = b->loc;
14531   for (;loc_num && loc; --loc_num, loc = loc->next)
14532     ;
14533   if (!loc)
14534     error (_("Bad breakpoint location number '%s'"), dot+1);
14535     
14536   return loc;  
14537 }
14538
14539
14540 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14541    If from_tty is nonzero, it prints a message to that effect,
14542    which ends with a period (no newline).  */
14543
14544 void
14545 disable_breakpoint (struct breakpoint *bpt)
14546 {
14547   /* Never disable a watchpoint scope breakpoint; we want to
14548      hit them when we leave scope so we can delete both the
14549      watchpoint and its scope breakpoint at that time.  */
14550   if (bpt->type == bp_watchpoint_scope)
14551     return;
14552
14553   /* You can't disable permanent breakpoints.  */
14554   if (bpt->enable_state == bp_permanent)
14555     return;
14556
14557   bpt->enable_state = bp_disabled;
14558
14559   /* Mark breakpoint locations modified.  */
14560   mark_breakpoint_modified (bpt);
14561
14562   if (target_supports_enable_disable_tracepoint ()
14563       && current_trace_status ()->running && is_tracepoint (bpt))
14564     {
14565       struct bp_location *location;
14566      
14567       for (location = bpt->loc; location; location = location->next)
14568         target_disable_tracepoint (location);
14569     }
14570
14571   update_global_location_list (0);
14572
14573   observer_notify_breakpoint_modified (bpt);
14574 }
14575
14576 /* A callback for iterate_over_related_breakpoints.  */
14577
14578 static void
14579 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14580 {
14581   disable_breakpoint (b);
14582 }
14583
14584 /* A callback for map_breakpoint_numbers that calls
14585    disable_breakpoint.  */
14586
14587 static void
14588 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14589 {
14590   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14591 }
14592
14593 static void
14594 disable_command (char *args, int from_tty)
14595 {
14596   if (args == 0)
14597     {
14598       struct breakpoint *bpt;
14599
14600       ALL_BREAKPOINTS (bpt)
14601         if (user_breakpoint_p (bpt))
14602           disable_breakpoint (bpt);
14603     }
14604   else if (strchr (args, '.'))
14605     {
14606       struct bp_location *loc = find_location_by_number (args);
14607       if (loc)
14608         {
14609           if (loc->enabled)
14610             {
14611               loc->enabled = 0;
14612               mark_breakpoint_location_modified (loc);
14613             }
14614           if (target_supports_enable_disable_tracepoint ()
14615               && current_trace_status ()->running && loc->owner
14616               && is_tracepoint (loc->owner))
14617             target_disable_tracepoint (loc);
14618         }
14619       update_global_location_list (0);
14620     }
14621   else
14622     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14623 }
14624
14625 static void
14626 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14627                         int count)
14628 {
14629   int target_resources_ok;
14630
14631   if (bpt->type == bp_hardware_breakpoint)
14632     {
14633       int i;
14634       i = hw_breakpoint_used_count ();
14635       target_resources_ok = 
14636         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14637                                             i + 1, 0);
14638       if (target_resources_ok == 0)
14639         error (_("No hardware breakpoint support in the target."));
14640       else if (target_resources_ok < 0)
14641         error (_("Hardware breakpoints used exceeds limit."));
14642     }
14643
14644   if (is_watchpoint (bpt))
14645     {
14646       /* Initialize it just to avoid a GCC false warning.  */
14647       enum enable_state orig_enable_state = 0;
14648       volatile struct gdb_exception e;
14649
14650       TRY_CATCH (e, RETURN_MASK_ALL)
14651         {
14652           struct watchpoint *w = (struct watchpoint *) bpt;
14653
14654           orig_enable_state = bpt->enable_state;
14655           bpt->enable_state = bp_enabled;
14656           update_watchpoint (w, 1 /* reparse */);
14657         }
14658       if (e.reason < 0)
14659         {
14660           bpt->enable_state = orig_enable_state;
14661           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14662                              bpt->number);
14663           return;
14664         }
14665     }
14666
14667   if (bpt->enable_state != bp_permanent)
14668     bpt->enable_state = bp_enabled;
14669
14670   bpt->enable_state = bp_enabled;
14671
14672   /* Mark breakpoint locations modified.  */
14673   mark_breakpoint_modified (bpt);
14674
14675   if (target_supports_enable_disable_tracepoint ()
14676       && current_trace_status ()->running && is_tracepoint (bpt))
14677     {
14678       struct bp_location *location;
14679
14680       for (location = bpt->loc; location; location = location->next)
14681         target_enable_tracepoint (location);
14682     }
14683
14684   bpt->disposition = disposition;
14685   bpt->enable_count = count;
14686   update_global_location_list (1);
14687
14688   observer_notify_breakpoint_modified (bpt);
14689 }
14690
14691
14692 void
14693 enable_breakpoint (struct breakpoint *bpt)
14694 {
14695   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14696 }
14697
14698 static void
14699 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14700 {
14701   enable_breakpoint (bpt);
14702 }
14703
14704 /* A callback for map_breakpoint_numbers that calls
14705    enable_breakpoint.  */
14706
14707 static void
14708 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14709 {
14710   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14711 }
14712
14713 /* The enable command enables the specified breakpoints (or all defined
14714    breakpoints) so they once again become (or continue to be) effective
14715    in stopping the inferior.  */
14716
14717 static void
14718 enable_command (char *args, int from_tty)
14719 {
14720   if (args == 0)
14721     {
14722       struct breakpoint *bpt;
14723
14724       ALL_BREAKPOINTS (bpt)
14725         if (user_breakpoint_p (bpt))
14726           enable_breakpoint (bpt);
14727     }
14728   else if (strchr (args, '.'))
14729     {
14730       struct bp_location *loc = find_location_by_number (args);
14731       if (loc)
14732         {
14733           if (!loc->enabled)
14734             {
14735               loc->enabled = 1;
14736               mark_breakpoint_location_modified (loc);
14737             }
14738           if (target_supports_enable_disable_tracepoint ()
14739               && current_trace_status ()->running && loc->owner
14740               && is_tracepoint (loc->owner))
14741             target_enable_tracepoint (loc);
14742         }
14743       update_global_location_list (1);
14744     }
14745   else
14746     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14747 }
14748
14749 /* This struct packages up disposition data for application to multiple
14750    breakpoints.  */
14751
14752 struct disp_data
14753 {
14754   enum bpdisp disp;
14755   int count;
14756 };
14757
14758 static void
14759 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14760 {
14761   struct disp_data disp_data = *(struct disp_data *) arg;
14762
14763   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14764 }
14765
14766 static void
14767 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14768 {
14769   struct disp_data disp = { disp_disable, 1 };
14770
14771   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14772 }
14773
14774 static void
14775 enable_once_command (char *args, int from_tty)
14776 {
14777   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14778 }
14779
14780 static void
14781 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14782 {
14783   struct disp_data disp = { disp_disable, *(int *) countptr };
14784
14785   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14786 }
14787
14788 static void
14789 enable_count_command (char *args, int from_tty)
14790 {
14791   int count = get_number (&args);
14792
14793   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14794 }
14795
14796 static void
14797 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14798 {
14799   struct disp_data disp = { disp_del, 1 };
14800
14801   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14802 }
14803
14804 static void
14805 enable_delete_command (char *args, int from_tty)
14806 {
14807   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14808 }
14809 \f
14810 static void
14811 set_breakpoint_cmd (char *args, int from_tty)
14812 {
14813 }
14814
14815 static void
14816 show_breakpoint_cmd (char *args, int from_tty)
14817 {
14818 }
14819
14820 /* Invalidate last known value of any hardware watchpoint if
14821    the memory which that value represents has been written to by
14822    GDB itself.  */
14823
14824 static void
14825 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14826                                       CORE_ADDR addr, ssize_t len,
14827                                       const bfd_byte *data)
14828 {
14829   struct breakpoint *bp;
14830
14831   ALL_BREAKPOINTS (bp)
14832     if (bp->enable_state == bp_enabled
14833         && bp->type == bp_hardware_watchpoint)
14834       {
14835         struct watchpoint *wp = (struct watchpoint *) bp;
14836
14837         if (wp->val_valid && wp->val)
14838           {
14839             struct bp_location *loc;
14840
14841             for (loc = bp->loc; loc != NULL; loc = loc->next)
14842               if (loc->loc_type == bp_loc_hardware_watchpoint
14843                   && loc->address + loc->length > addr
14844                   && addr + len > loc->address)
14845                 {
14846                   value_free (wp->val);
14847                   wp->val = NULL;
14848                   wp->val_valid = 0;
14849                 }
14850           }
14851       }
14852 }
14853
14854 /* Create and insert a raw software breakpoint at PC.  Return an
14855    identifier, which should be used to remove the breakpoint later.
14856    In general, places which call this should be using something on the
14857    breakpoint chain instead; this function should be eliminated
14858    someday.  */
14859
14860 void *
14861 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14862                                   struct address_space *aspace, CORE_ADDR pc)
14863 {
14864   struct bp_target_info *bp_tgt;
14865
14866   bp_tgt = XZALLOC (struct bp_target_info);
14867
14868   bp_tgt->placed_address_space = aspace;
14869   bp_tgt->placed_address = pc;
14870
14871   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14872     {
14873       /* Could not insert the breakpoint.  */
14874       xfree (bp_tgt);
14875       return NULL;
14876     }
14877
14878   return bp_tgt;
14879 }
14880
14881 /* Remove a breakpoint BP inserted by
14882    deprecated_insert_raw_breakpoint.  */
14883
14884 int
14885 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14886 {
14887   struct bp_target_info *bp_tgt = bp;
14888   int ret;
14889
14890   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14891   xfree (bp_tgt);
14892
14893   return ret;
14894 }
14895
14896 /* One (or perhaps two) breakpoints used for software single
14897    stepping.  */
14898
14899 static void *single_step_breakpoints[2];
14900 static struct gdbarch *single_step_gdbarch[2];
14901
14902 /* Create and insert a breakpoint for software single step.  */
14903
14904 void
14905 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14906                                struct address_space *aspace, 
14907                                CORE_ADDR next_pc)
14908 {
14909   void **bpt_p;
14910
14911   if (single_step_breakpoints[0] == NULL)
14912     {
14913       bpt_p = &single_step_breakpoints[0];
14914       single_step_gdbarch[0] = gdbarch;
14915     }
14916   else
14917     {
14918       gdb_assert (single_step_breakpoints[1] == NULL);
14919       bpt_p = &single_step_breakpoints[1];
14920       single_step_gdbarch[1] = gdbarch;
14921     }
14922
14923   /* NOTE drow/2006-04-11: A future improvement to this function would
14924      be to only create the breakpoints once, and actually put them on
14925      the breakpoint chain.  That would let us use set_raw_breakpoint.
14926      We could adjust the addresses each time they were needed.  Doing
14927      this requires corresponding changes elsewhere where single step
14928      breakpoints are handled, however.  So, for now, we use this.  */
14929
14930   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14931   if (*bpt_p == NULL)
14932     error (_("Could not insert single-step breakpoint at %s"),
14933              paddress (gdbarch, next_pc));
14934 }
14935
14936 /* Check if the breakpoints used for software single stepping
14937    were inserted or not.  */
14938
14939 int
14940 single_step_breakpoints_inserted (void)
14941 {
14942   return (single_step_breakpoints[0] != NULL
14943           || single_step_breakpoints[1] != NULL);
14944 }
14945
14946 /* Remove and delete any breakpoints used for software single step.  */
14947
14948 void
14949 remove_single_step_breakpoints (void)
14950 {
14951   gdb_assert (single_step_breakpoints[0] != NULL);
14952
14953   /* See insert_single_step_breakpoint for more about this deprecated
14954      call.  */
14955   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14956                                     single_step_breakpoints[0]);
14957   single_step_gdbarch[0] = NULL;
14958   single_step_breakpoints[0] = NULL;
14959
14960   if (single_step_breakpoints[1] != NULL)
14961     {
14962       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14963                                         single_step_breakpoints[1]);
14964       single_step_gdbarch[1] = NULL;
14965       single_step_breakpoints[1] = NULL;
14966     }
14967 }
14968
14969 /* Delete software single step breakpoints without removing them from
14970    the inferior.  This is intended to be used if the inferior's address
14971    space where they were inserted is already gone, e.g. after exit or
14972    exec.  */
14973
14974 void
14975 cancel_single_step_breakpoints (void)
14976 {
14977   int i;
14978
14979   for (i = 0; i < 2; i++)
14980     if (single_step_breakpoints[i])
14981       {
14982         xfree (single_step_breakpoints[i]);
14983         single_step_breakpoints[i] = NULL;
14984         single_step_gdbarch[i] = NULL;
14985       }
14986 }
14987
14988 /* Detach software single-step breakpoints from INFERIOR_PTID without
14989    removing them.  */
14990
14991 static void
14992 detach_single_step_breakpoints (void)
14993 {
14994   int i;
14995
14996   for (i = 0; i < 2; i++)
14997     if (single_step_breakpoints[i])
14998       target_remove_breakpoint (single_step_gdbarch[i],
14999                                 single_step_breakpoints[i]);
15000 }
15001
15002 /* Check whether a software single-step breakpoint is inserted at
15003    PC.  */
15004
15005 static int
15006 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
15007                                         CORE_ADDR pc)
15008 {
15009   int i;
15010
15011   for (i = 0; i < 2; i++)
15012     {
15013       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15014       if (bp_tgt
15015           && breakpoint_address_match (bp_tgt->placed_address_space,
15016                                        bp_tgt->placed_address,
15017                                        aspace, pc))
15018         return 1;
15019     }
15020
15021   return 0;
15022 }
15023
15024 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15025    non-zero otherwise.  */
15026 static int
15027 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15028 {
15029   if (syscall_catchpoint_p (bp)
15030       && bp->enable_state != bp_disabled
15031       && bp->enable_state != bp_call_disabled)
15032     return 1;
15033   else
15034     return 0;
15035 }
15036
15037 int
15038 catch_syscall_enabled (void)
15039 {
15040   struct catch_syscall_inferior_data *inf_data
15041     = get_catch_syscall_inferior_data (current_inferior ());
15042
15043   return inf_data->total_syscalls_count != 0;
15044 }
15045
15046 int
15047 catching_syscall_number (int syscall_number)
15048 {
15049   struct breakpoint *bp;
15050
15051   ALL_BREAKPOINTS (bp)
15052     if (is_syscall_catchpoint_enabled (bp))
15053       {
15054         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15055
15056         if (c->syscalls_to_be_caught)
15057           {
15058             int i, iter;
15059             for (i = 0;
15060                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15061                  i++)
15062               if (syscall_number == iter)
15063                 return 1;
15064           }
15065         else
15066           return 1;
15067       }
15068
15069   return 0;
15070 }
15071
15072 /* Complete syscall names.  Used by "catch syscall".  */
15073 static VEC (char_ptr) *
15074 catch_syscall_completer (struct cmd_list_element *cmd,
15075                          char *text, char *word)
15076 {
15077   const char **list = get_syscall_names ();
15078   VEC (char_ptr) *retlist
15079     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15080
15081   xfree (list);
15082   return retlist;
15083 }
15084
15085 /* Tracepoint-specific operations.  */
15086
15087 /* Set tracepoint count to NUM.  */
15088 static void
15089 set_tracepoint_count (int num)
15090 {
15091   tracepoint_count = num;
15092   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15093 }
15094
15095 static void
15096 trace_command (char *arg, int from_tty)
15097 {
15098   struct breakpoint_ops *ops;
15099   const char *arg_cp = arg;
15100
15101   if (arg && probe_linespec_to_ops (&arg_cp))
15102     ops = &tracepoint_probe_breakpoint_ops;
15103   else
15104     ops = &tracepoint_breakpoint_ops;
15105
15106   create_breakpoint (get_current_arch (),
15107                      arg,
15108                      NULL, 0, NULL, 1 /* parse arg */,
15109                      0 /* tempflag */,
15110                      bp_tracepoint /* type_wanted */,
15111                      0 /* Ignore count */,
15112                      pending_break_support,
15113                      ops,
15114                      from_tty,
15115                      1 /* enabled */,
15116                      0 /* internal */, 0);
15117 }
15118
15119 static void
15120 ftrace_command (char *arg, int from_tty)
15121 {
15122   create_breakpoint (get_current_arch (),
15123                      arg,
15124                      NULL, 0, NULL, 1 /* parse arg */,
15125                      0 /* tempflag */,
15126                      bp_fast_tracepoint /* type_wanted */,
15127                      0 /* Ignore count */,
15128                      pending_break_support,
15129                      &tracepoint_breakpoint_ops,
15130                      from_tty,
15131                      1 /* enabled */,
15132                      0 /* internal */, 0);
15133 }
15134
15135 /* strace command implementation.  Creates a static tracepoint.  */
15136
15137 static void
15138 strace_command (char *arg, int from_tty)
15139 {
15140   struct breakpoint_ops *ops;
15141
15142   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15143      or with a normal static tracepoint.  */
15144   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15145     ops = &strace_marker_breakpoint_ops;
15146   else
15147     ops = &tracepoint_breakpoint_ops;
15148
15149   create_breakpoint (get_current_arch (),
15150                      arg,
15151                      NULL, 0, NULL, 1 /* parse arg */,
15152                      0 /* tempflag */,
15153                      bp_static_tracepoint /* type_wanted */,
15154                      0 /* Ignore count */,
15155                      pending_break_support,
15156                      ops,
15157                      from_tty,
15158                      1 /* enabled */,
15159                      0 /* internal */, 0);
15160 }
15161
15162 /* Set up a fake reader function that gets command lines from a linked
15163    list that was acquired during tracepoint uploading.  */
15164
15165 static struct uploaded_tp *this_utp;
15166 static int next_cmd;
15167
15168 static char *
15169 read_uploaded_action (void)
15170 {
15171   char *rslt;
15172
15173   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15174
15175   next_cmd++;
15176
15177   return rslt;
15178 }
15179
15180 /* Given information about a tracepoint as recorded on a target (which
15181    can be either a live system or a trace file), attempt to create an
15182    equivalent GDB tracepoint.  This is not a reliable process, since
15183    the target does not necessarily have all the information used when
15184    the tracepoint was originally defined.  */
15185   
15186 struct tracepoint *
15187 create_tracepoint_from_upload (struct uploaded_tp *utp)
15188 {
15189   char *addr_str, small_buf[100];
15190   struct tracepoint *tp;
15191
15192   if (utp->at_string)
15193     addr_str = utp->at_string;
15194   else
15195     {
15196       /* In the absence of a source location, fall back to raw
15197          address.  Since there is no way to confirm that the address
15198          means the same thing as when the trace was started, warn the
15199          user.  */
15200       warning (_("Uploaded tracepoint %d has no "
15201                  "source location, using raw address"),
15202                utp->number);
15203       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15204       addr_str = small_buf;
15205     }
15206
15207   /* There's not much we can do with a sequence of bytecodes.  */
15208   if (utp->cond && !utp->cond_string)
15209     warning (_("Uploaded tracepoint %d condition "
15210                "has no source form, ignoring it"),
15211              utp->number);
15212
15213   if (!create_breakpoint (get_current_arch (),
15214                           addr_str,
15215                           utp->cond_string, -1, NULL,
15216                           0 /* parse cond/thread */,
15217                           0 /* tempflag */,
15218                           utp->type /* type_wanted */,
15219                           0 /* Ignore count */,
15220                           pending_break_support,
15221                           &tracepoint_breakpoint_ops,
15222                           0 /* from_tty */,
15223                           utp->enabled /* enabled */,
15224                           0 /* internal */,
15225                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15226     return NULL;
15227
15228   /* Get the tracepoint we just created.  */
15229   tp = get_tracepoint (tracepoint_count);
15230   gdb_assert (tp != NULL);
15231
15232   if (utp->pass > 0)
15233     {
15234       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15235                  tp->base.number);
15236
15237       trace_pass_command (small_buf, 0);
15238     }
15239
15240   /* If we have uploaded versions of the original commands, set up a
15241      special-purpose "reader" function and call the usual command line
15242      reader, then pass the result to the breakpoint command-setting
15243      function.  */
15244   if (!VEC_empty (char_ptr, utp->cmd_strings))
15245     {
15246       struct command_line *cmd_list;
15247
15248       this_utp = utp;
15249       next_cmd = 0;
15250
15251       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15252
15253       breakpoint_set_commands (&tp->base, cmd_list);
15254     }
15255   else if (!VEC_empty (char_ptr, utp->actions)
15256            || !VEC_empty (char_ptr, utp->step_actions))
15257     warning (_("Uploaded tracepoint %d actions "
15258                "have no source form, ignoring them"),
15259              utp->number);
15260
15261   /* Copy any status information that might be available.  */
15262   tp->base.hit_count = utp->hit_count;
15263   tp->traceframe_usage = utp->traceframe_usage;
15264
15265   return tp;
15266 }
15267   
15268 /* Print information on tracepoint number TPNUM_EXP, or all if
15269    omitted.  */
15270
15271 static void
15272 tracepoints_info (char *args, int from_tty)
15273 {
15274   struct ui_out *uiout = current_uiout;
15275   int num_printed;
15276
15277   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15278
15279   if (num_printed == 0)
15280     {
15281       if (args == NULL || *args == '\0')
15282         ui_out_message (uiout, 0, "No tracepoints.\n");
15283       else
15284         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15285     }
15286
15287   default_collect_info ();
15288 }
15289
15290 /* The 'enable trace' command enables tracepoints.
15291    Not supported by all targets.  */
15292 static void
15293 enable_trace_command (char *args, int from_tty)
15294 {
15295   enable_command (args, from_tty);
15296 }
15297
15298 /* The 'disable trace' command disables tracepoints.
15299    Not supported by all targets.  */
15300 static void
15301 disable_trace_command (char *args, int from_tty)
15302 {
15303   disable_command (args, from_tty);
15304 }
15305
15306 /* Remove a tracepoint (or all if no argument).  */
15307 static void
15308 delete_trace_command (char *arg, int from_tty)
15309 {
15310   struct breakpoint *b, *b_tmp;
15311
15312   dont_repeat ();
15313
15314   if (arg == 0)
15315     {
15316       int breaks_to_delete = 0;
15317
15318       /* Delete all breakpoints if no argument.
15319          Do not delete internal or call-dummy breakpoints, these
15320          have to be deleted with an explicit breakpoint number 
15321          argument.  */
15322       ALL_TRACEPOINTS (b)
15323         if (is_tracepoint (b) && user_breakpoint_p (b))
15324           {
15325             breaks_to_delete = 1;
15326             break;
15327           }
15328
15329       /* Ask user only if there are some breakpoints to delete.  */
15330       if (!from_tty
15331           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15332         {
15333           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15334             if (is_tracepoint (b) && user_breakpoint_p (b))
15335               delete_breakpoint (b);
15336         }
15337     }
15338   else
15339     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15340 }
15341
15342 /* Helper function for trace_pass_command.  */
15343
15344 static void
15345 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15346 {
15347   tp->pass_count = count;
15348   observer_notify_breakpoint_modified (&tp->base);
15349   if (from_tty)
15350     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15351                      tp->base.number, count);
15352 }
15353
15354 /* Set passcount for tracepoint.
15355
15356    First command argument is passcount, second is tracepoint number.
15357    If tracepoint number omitted, apply to most recently defined.
15358    Also accepts special argument "all".  */
15359
15360 static void
15361 trace_pass_command (char *args, int from_tty)
15362 {
15363   struct tracepoint *t1;
15364   unsigned int count;
15365
15366   if (args == 0 || *args == 0)
15367     error (_("passcount command requires an "
15368              "argument (count + optional TP num)"));
15369
15370   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15371
15372   while (*args && isspace ((int) *args))
15373     args++;
15374
15375   if (*args && strncasecmp (args, "all", 3) == 0)
15376     {
15377       struct breakpoint *b;
15378
15379       args += 3;                        /* Skip special argument "all".  */
15380       if (*args)
15381         error (_("Junk at end of arguments."));
15382
15383       ALL_TRACEPOINTS (b)
15384       {
15385         t1 = (struct tracepoint *) b;
15386         trace_pass_set_count (t1, count, from_tty);
15387       }
15388     }
15389   else if (*args == '\0')
15390     {
15391       t1 = get_tracepoint_by_number (&args, NULL, 1);
15392       if (t1)
15393         trace_pass_set_count (t1, count, from_tty);
15394     }
15395   else
15396     {
15397       struct get_number_or_range_state state;
15398
15399       init_number_or_range (&state, args);
15400       while (!state.finished)
15401         {
15402           t1 = get_tracepoint_by_number (&args, &state, 1);
15403           if (t1)
15404             trace_pass_set_count (t1, count, from_tty);
15405         }
15406     }
15407 }
15408
15409 struct tracepoint *
15410 get_tracepoint (int num)
15411 {
15412   struct breakpoint *t;
15413
15414   ALL_TRACEPOINTS (t)
15415     if (t->number == num)
15416       return (struct tracepoint *) t;
15417
15418   return NULL;
15419 }
15420
15421 /* Find the tracepoint with the given target-side number (which may be
15422    different from the tracepoint number after disconnecting and
15423    reconnecting).  */
15424
15425 struct tracepoint *
15426 get_tracepoint_by_number_on_target (int num)
15427 {
15428   struct breakpoint *b;
15429
15430   ALL_TRACEPOINTS (b)
15431     {
15432       struct tracepoint *t = (struct tracepoint *) b;
15433
15434       if (t->number_on_target == num)
15435         return t;
15436     }
15437
15438   return NULL;
15439 }
15440
15441 /* Utility: parse a tracepoint number and look it up in the list.
15442    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15443    If OPTIONAL_P is true, then if the argument is missing, the most
15444    recent tracepoint (tracepoint_count) is returned.  */
15445 struct tracepoint *
15446 get_tracepoint_by_number (char **arg,
15447                           struct get_number_or_range_state *state,
15448                           int optional_p)
15449 {
15450   struct breakpoint *t;
15451   int tpnum;
15452   char *instring = arg == NULL ? NULL : *arg;
15453
15454   if (state)
15455     {
15456       gdb_assert (!state->finished);
15457       tpnum = get_number_or_range (state);
15458     }
15459   else if (arg == NULL || *arg == NULL || ! **arg)
15460     {
15461       if (optional_p)
15462         tpnum = tracepoint_count;
15463       else
15464         error_no_arg (_("tracepoint number"));
15465     }
15466   else
15467     tpnum = get_number (arg);
15468
15469   if (tpnum <= 0)
15470     {
15471       if (instring && *instring)
15472         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15473                          instring);
15474       else
15475         printf_filtered (_("Tracepoint argument missing "
15476                            "and no previous tracepoint\n"));
15477       return NULL;
15478     }
15479
15480   ALL_TRACEPOINTS (t)
15481     if (t->number == tpnum)
15482     {
15483       return (struct tracepoint *) t;
15484     }
15485
15486   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15487   return NULL;
15488 }
15489
15490 void
15491 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15492 {
15493   if (b->thread != -1)
15494     fprintf_unfiltered (fp, " thread %d", b->thread);
15495
15496   if (b->task != 0)
15497     fprintf_unfiltered (fp, " task %d", b->task);
15498
15499   fprintf_unfiltered (fp, "\n");
15500 }
15501
15502 /* Save information on user settable breakpoints (watchpoints, etc) to
15503    a new script file named FILENAME.  If FILTER is non-NULL, call it
15504    on each breakpoint and only include the ones for which it returns
15505    non-zero.  */
15506
15507 static void
15508 save_breakpoints (char *filename, int from_tty,
15509                   int (*filter) (const struct breakpoint *))
15510 {
15511   struct breakpoint *tp;
15512   int any = 0;
15513   char *pathname;
15514   struct cleanup *cleanup;
15515   struct ui_file *fp;
15516   int extra_trace_bits = 0;
15517
15518   if (filename == 0 || *filename == 0)
15519     error (_("Argument required (file name in which to save)"));
15520
15521   /* See if we have anything to save.  */
15522   ALL_BREAKPOINTS (tp)
15523   {
15524     /* Skip internal and momentary breakpoints.  */
15525     if (!user_breakpoint_p (tp))
15526       continue;
15527
15528     /* If we have a filter, only save the breakpoints it accepts.  */
15529     if (filter && !filter (tp))
15530       continue;
15531
15532     any = 1;
15533
15534     if (is_tracepoint (tp))
15535       {
15536         extra_trace_bits = 1;
15537
15538         /* We can stop searching.  */
15539         break;
15540       }
15541   }
15542
15543   if (!any)
15544     {
15545       warning (_("Nothing to save."));
15546       return;
15547     }
15548
15549   pathname = tilde_expand (filename);
15550   cleanup = make_cleanup (xfree, pathname);
15551   fp = gdb_fopen (pathname, "w");
15552   if (!fp)
15553     error (_("Unable to open file '%s' for saving (%s)"),
15554            filename, safe_strerror (errno));
15555   make_cleanup_ui_file_delete (fp);
15556
15557   if (extra_trace_bits)
15558     save_trace_state_variables (fp);
15559
15560   ALL_BREAKPOINTS (tp)
15561   {
15562     /* Skip internal and momentary breakpoints.  */
15563     if (!user_breakpoint_p (tp))
15564       continue;
15565
15566     /* If we have a filter, only save the breakpoints it accepts.  */
15567     if (filter && !filter (tp))
15568       continue;
15569
15570     tp->ops->print_recreate (tp, fp);
15571
15572     /* Note, we can't rely on tp->number for anything, as we can't
15573        assume the recreated breakpoint numbers will match.  Use $bpnum
15574        instead.  */
15575
15576     if (tp->cond_string)
15577       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15578
15579     if (tp->ignore_count)
15580       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15581
15582     if (tp->commands)
15583       {
15584         volatile struct gdb_exception ex;       
15585
15586         fprintf_unfiltered (fp, "  commands\n");
15587         
15588         ui_out_redirect (current_uiout, fp);
15589         TRY_CATCH (ex, RETURN_MASK_ALL)
15590           {
15591             print_command_lines (current_uiout, tp->commands->commands, 2);
15592           }
15593         ui_out_redirect (current_uiout, NULL);
15594
15595         if (ex.reason < 0)
15596           throw_exception (ex);
15597
15598         fprintf_unfiltered (fp, "  end\n");
15599       }
15600
15601     if (tp->enable_state == bp_disabled)
15602       fprintf_unfiltered (fp, "disable\n");
15603
15604     /* If this is a multi-location breakpoint, check if the locations
15605        should be individually disabled.  Watchpoint locations are
15606        special, and not user visible.  */
15607     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15608       {
15609         struct bp_location *loc;
15610         int n = 1;
15611
15612         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15613           if (!loc->enabled)
15614             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15615       }
15616   }
15617
15618   if (extra_trace_bits && *default_collect)
15619     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15620
15621   do_cleanups (cleanup);
15622   if (from_tty)
15623     printf_filtered (_("Saved to file '%s'.\n"), filename);
15624 }
15625
15626 /* The `save breakpoints' command.  */
15627
15628 static void
15629 save_breakpoints_command (char *args, int from_tty)
15630 {
15631   save_breakpoints (args, from_tty, NULL);
15632 }
15633
15634 /* The `save tracepoints' command.  */
15635
15636 static void
15637 save_tracepoints_command (char *args, int from_tty)
15638 {
15639   save_breakpoints (args, from_tty, is_tracepoint);
15640 }
15641
15642 /* Create a vector of all tracepoints.  */
15643
15644 VEC(breakpoint_p) *
15645 all_tracepoints (void)
15646 {
15647   VEC(breakpoint_p) *tp_vec = 0;
15648   struct breakpoint *tp;
15649
15650   ALL_TRACEPOINTS (tp)
15651   {
15652     VEC_safe_push (breakpoint_p, tp_vec, tp);
15653   }
15654
15655   return tp_vec;
15656 }
15657
15658 \f
15659 /* This help string is used for the break, hbreak, tbreak and thbreak
15660    commands.  It is defined as a macro to prevent duplication.
15661    COMMAND should be a string constant containing the name of the
15662    command.  */
15663 #define BREAK_ARGS_HELP(command) \
15664 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15665 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15666 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15667 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15668 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15669 If a line number is specified, break at start of code for that line.\n\
15670 If a function is specified, break at start of code for that function.\n\
15671 If an address is specified, break at that exact address.\n\
15672 With no LOCATION, uses current execution address of the selected\n\
15673 stack frame.  This is useful for breaking on return to a stack frame.\n\
15674 \n\
15675 THREADNUM is the number from \"info threads\".\n\
15676 CONDITION is a boolean expression.\n\
15677 \n\
15678 Multiple breakpoints at one place are permitted, and useful if their\n\
15679 conditions are different.\n\
15680 \n\
15681 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15682
15683 /* List of subcommands for "catch".  */
15684 static struct cmd_list_element *catch_cmdlist;
15685
15686 /* List of subcommands for "tcatch".  */
15687 static struct cmd_list_element *tcatch_cmdlist;
15688
15689 void
15690 add_catch_command (char *name, char *docstring,
15691                    void (*sfunc) (char *args, int from_tty,
15692                                   struct cmd_list_element *command),
15693                    completer_ftype *completer,
15694                    void *user_data_catch,
15695                    void *user_data_tcatch)
15696 {
15697   struct cmd_list_element *command;
15698
15699   command = add_cmd (name, class_breakpoint, NULL, docstring,
15700                      &catch_cmdlist);
15701   set_cmd_sfunc (command, sfunc);
15702   set_cmd_context (command, user_data_catch);
15703   set_cmd_completer (command, completer);
15704
15705   command = add_cmd (name, class_breakpoint, NULL, docstring,
15706                      &tcatch_cmdlist);
15707   set_cmd_sfunc (command, sfunc);
15708   set_cmd_context (command, user_data_tcatch);
15709   set_cmd_completer (command, completer);
15710 }
15711
15712 static void
15713 clear_syscall_counts (struct inferior *inf)
15714 {
15715   struct catch_syscall_inferior_data *inf_data
15716     = get_catch_syscall_inferior_data (inf);
15717
15718   inf_data->total_syscalls_count = 0;
15719   inf_data->any_syscall_count = 0;
15720   VEC_free (int, inf_data->syscalls_counts);
15721 }
15722
15723 static void
15724 save_command (char *arg, int from_tty)
15725 {
15726   printf_unfiltered (_("\"save\" must be followed by "
15727                        "the name of a save subcommand.\n"));
15728   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15729 }
15730
15731 struct breakpoint *
15732 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15733                           void *data)
15734 {
15735   struct breakpoint *b, *b_tmp;
15736
15737   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15738     {
15739       if ((*callback) (b, data))
15740         return b;
15741     }
15742
15743   return NULL;
15744 }
15745
15746 /* Zero if any of the breakpoint's locations could be a location where
15747    functions have been inlined, nonzero otherwise.  */
15748
15749 static int
15750 is_non_inline_function (struct breakpoint *b)
15751 {
15752   /* The shared library event breakpoint is set on the address of a
15753      non-inline function.  */
15754   if (b->type == bp_shlib_event)
15755     return 1;
15756
15757   return 0;
15758 }
15759
15760 /* Nonzero if the specified PC cannot be a location where functions
15761    have been inlined.  */
15762
15763 int
15764 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15765                            const struct target_waitstatus *ws)
15766 {
15767   struct breakpoint *b;
15768   struct bp_location *bl;
15769
15770   ALL_BREAKPOINTS (b)
15771     {
15772       if (!is_non_inline_function (b))
15773         continue;
15774
15775       for (bl = b->loc; bl != NULL; bl = bl->next)
15776         {
15777           if (!bl->shlib_disabled
15778               && bpstat_check_location (bl, aspace, pc, ws))
15779             return 1;
15780         }
15781     }
15782
15783   return 0;
15784 }
15785
15786 /* Remove any references to OBJFILE which is going to be freed.  */
15787
15788 void
15789 breakpoint_free_objfile (struct objfile *objfile)
15790 {
15791   struct bp_location **locp, *loc;
15792
15793   ALL_BP_LOCATIONS (loc, locp)
15794     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15795       loc->symtab = NULL;
15796 }
15797
15798 void
15799 initialize_breakpoint_ops (void)
15800 {
15801   static int initialized = 0;
15802
15803   struct breakpoint_ops *ops;
15804
15805   if (initialized)
15806     return;
15807   initialized = 1;
15808
15809   /* The breakpoint_ops structure to be inherit by all kinds of
15810      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15811      internal and momentary breakpoints, etc.).  */
15812   ops = &bkpt_base_breakpoint_ops;
15813   *ops = base_breakpoint_ops;
15814   ops->re_set = bkpt_re_set;
15815   ops->insert_location = bkpt_insert_location;
15816   ops->remove_location = bkpt_remove_location;
15817   ops->breakpoint_hit = bkpt_breakpoint_hit;
15818   ops->create_sals_from_address = bkpt_create_sals_from_address;
15819   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15820   ops->decode_linespec = bkpt_decode_linespec;
15821
15822   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15823   ops = &bkpt_breakpoint_ops;
15824   *ops = bkpt_base_breakpoint_ops;
15825   ops->re_set = bkpt_re_set;
15826   ops->resources_needed = bkpt_resources_needed;
15827   ops->print_it = bkpt_print_it;
15828   ops->print_mention = bkpt_print_mention;
15829   ops->print_recreate = bkpt_print_recreate;
15830
15831   /* Ranged breakpoints.  */
15832   ops = &ranged_breakpoint_ops;
15833   *ops = bkpt_breakpoint_ops;
15834   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15835   ops->resources_needed = resources_needed_ranged_breakpoint;
15836   ops->print_it = print_it_ranged_breakpoint;
15837   ops->print_one = print_one_ranged_breakpoint;
15838   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15839   ops->print_mention = print_mention_ranged_breakpoint;
15840   ops->print_recreate = print_recreate_ranged_breakpoint;
15841
15842   /* Internal breakpoints.  */
15843   ops = &internal_breakpoint_ops;
15844   *ops = bkpt_base_breakpoint_ops;
15845   ops->re_set = internal_bkpt_re_set;
15846   ops->check_status = internal_bkpt_check_status;
15847   ops->print_it = internal_bkpt_print_it;
15848   ops->print_mention = internal_bkpt_print_mention;
15849
15850   /* Momentary breakpoints.  */
15851   ops = &momentary_breakpoint_ops;
15852   *ops = bkpt_base_breakpoint_ops;
15853   ops->re_set = momentary_bkpt_re_set;
15854   ops->check_status = momentary_bkpt_check_status;
15855   ops->print_it = momentary_bkpt_print_it;
15856   ops->print_mention = momentary_bkpt_print_mention;
15857
15858   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15859   ops = &longjmp_breakpoint_ops;
15860   *ops = momentary_breakpoint_ops;
15861   ops->dtor = longjmp_bkpt_dtor;
15862
15863   /* Probe breakpoints.  */
15864   ops = &bkpt_probe_breakpoint_ops;
15865   *ops = bkpt_breakpoint_ops;
15866   ops->insert_location = bkpt_probe_insert_location;
15867   ops->remove_location = bkpt_probe_remove_location;
15868   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15869   ops->decode_linespec = bkpt_probe_decode_linespec;
15870
15871   /* GNU v3 exception catchpoints.  */
15872   ops = &gnu_v3_exception_catchpoint_ops;
15873   *ops = bkpt_breakpoint_ops;
15874   ops->print_it = print_it_exception_catchpoint;
15875   ops->print_one = print_one_exception_catchpoint;
15876   ops->print_mention = print_mention_exception_catchpoint;
15877   ops->print_recreate = print_recreate_exception_catchpoint;
15878
15879   /* Watchpoints.  */
15880   ops = &watchpoint_breakpoint_ops;
15881   *ops = base_breakpoint_ops;
15882   ops->dtor = dtor_watchpoint;
15883   ops->re_set = re_set_watchpoint;
15884   ops->insert_location = insert_watchpoint;
15885   ops->remove_location = remove_watchpoint;
15886   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15887   ops->check_status = check_status_watchpoint;
15888   ops->resources_needed = resources_needed_watchpoint;
15889   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15890   ops->print_it = print_it_watchpoint;
15891   ops->print_mention = print_mention_watchpoint;
15892   ops->print_recreate = print_recreate_watchpoint;
15893
15894   /* Masked watchpoints.  */
15895   ops = &masked_watchpoint_breakpoint_ops;
15896   *ops = watchpoint_breakpoint_ops;
15897   ops->insert_location = insert_masked_watchpoint;
15898   ops->remove_location = remove_masked_watchpoint;
15899   ops->resources_needed = resources_needed_masked_watchpoint;
15900   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15901   ops->print_it = print_it_masked_watchpoint;
15902   ops->print_one_detail = print_one_detail_masked_watchpoint;
15903   ops->print_mention = print_mention_masked_watchpoint;
15904   ops->print_recreate = print_recreate_masked_watchpoint;
15905
15906   /* Tracepoints.  */
15907   ops = &tracepoint_breakpoint_ops;
15908   *ops = base_breakpoint_ops;
15909   ops->re_set = tracepoint_re_set;
15910   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15911   ops->print_one_detail = tracepoint_print_one_detail;
15912   ops->print_mention = tracepoint_print_mention;
15913   ops->print_recreate = tracepoint_print_recreate;
15914   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15915   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15916   ops->decode_linespec = tracepoint_decode_linespec;
15917
15918   /* Probe tracepoints.  */
15919   ops = &tracepoint_probe_breakpoint_ops;
15920   *ops = tracepoint_breakpoint_ops;
15921   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15922   ops->decode_linespec = tracepoint_probe_decode_linespec;
15923
15924   /* Static tracepoints with marker (`-m').  */
15925   ops = &strace_marker_breakpoint_ops;
15926   *ops = tracepoint_breakpoint_ops;
15927   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15928   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15929   ops->decode_linespec = strace_marker_decode_linespec;
15930
15931   /* Fork catchpoints.  */
15932   ops = &catch_fork_breakpoint_ops;
15933   *ops = base_breakpoint_ops;
15934   ops->insert_location = insert_catch_fork;
15935   ops->remove_location = remove_catch_fork;
15936   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15937   ops->print_it = print_it_catch_fork;
15938   ops->print_one = print_one_catch_fork;
15939   ops->print_mention = print_mention_catch_fork;
15940   ops->print_recreate = print_recreate_catch_fork;
15941
15942   /* Vfork catchpoints.  */
15943   ops = &catch_vfork_breakpoint_ops;
15944   *ops = base_breakpoint_ops;
15945   ops->insert_location = insert_catch_vfork;
15946   ops->remove_location = remove_catch_vfork;
15947   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15948   ops->print_it = print_it_catch_vfork;
15949   ops->print_one = print_one_catch_vfork;
15950   ops->print_mention = print_mention_catch_vfork;
15951   ops->print_recreate = print_recreate_catch_vfork;
15952
15953   /* Exec catchpoints.  */
15954   ops = &catch_exec_breakpoint_ops;
15955   *ops = base_breakpoint_ops;
15956   ops->dtor = dtor_catch_exec;
15957   ops->insert_location = insert_catch_exec;
15958   ops->remove_location = remove_catch_exec;
15959   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15960   ops->print_it = print_it_catch_exec;
15961   ops->print_one = print_one_catch_exec;
15962   ops->print_mention = print_mention_catch_exec;
15963   ops->print_recreate = print_recreate_catch_exec;
15964
15965   /* Syscall catchpoints.  */
15966   ops = &catch_syscall_breakpoint_ops;
15967   *ops = base_breakpoint_ops;
15968   ops->dtor = dtor_catch_syscall;
15969   ops->insert_location = insert_catch_syscall;
15970   ops->remove_location = remove_catch_syscall;
15971   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15972   ops->print_it = print_it_catch_syscall;
15973   ops->print_one = print_one_catch_syscall;
15974   ops->print_mention = print_mention_catch_syscall;
15975   ops->print_recreate = print_recreate_catch_syscall;
15976
15977   /* Solib-related catchpoints.  */
15978   ops = &catch_solib_breakpoint_ops;
15979   *ops = base_breakpoint_ops;
15980   ops->dtor = dtor_catch_solib;
15981   ops->insert_location = insert_catch_solib;
15982   ops->remove_location = remove_catch_solib;
15983   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15984   ops->check_status = check_status_catch_solib;
15985   ops->print_it = print_it_catch_solib;
15986   ops->print_one = print_one_catch_solib;
15987   ops->print_mention = print_mention_catch_solib;
15988   ops->print_recreate = print_recreate_catch_solib;
15989
15990   ops = &dprintf_breakpoint_ops;
15991   *ops = bkpt_base_breakpoint_ops;
15992   ops->re_set = bkpt_re_set;
15993   ops->resources_needed = bkpt_resources_needed;
15994   ops->print_it = bkpt_print_it;
15995   ops->print_mention = bkpt_print_mention;
15996   ops->print_recreate = bkpt_print_recreate;
15997 }
15998
15999 /* Chain containing all defined "enable breakpoint" subcommands.  */
16000
16001 static struct cmd_list_element *enablebreaklist = NULL;
16002
16003 void
16004 _initialize_breakpoint (void)
16005 {
16006   struct cmd_list_element *c;
16007
16008   initialize_breakpoint_ops ();
16009
16010   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16011   observer_attach_inferior_exit (clear_syscall_counts);
16012   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16013
16014   breakpoint_objfile_key
16015     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16016
16017   catch_syscall_inferior_data
16018     = register_inferior_data_with_cleanup (NULL,
16019                                            catch_syscall_inferior_data_cleanup);
16020
16021   breakpoint_chain = 0;
16022   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16023      before a breakpoint is set.  */
16024   breakpoint_count = 0;
16025
16026   tracepoint_count = 0;
16027
16028   add_com ("ignore", class_breakpoint, ignore_command, _("\
16029 Set ignore-count of breakpoint number N to COUNT.\n\
16030 Usage is `ignore N COUNT'."));
16031   if (xdb_commands)
16032     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16033
16034   add_com ("commands", class_breakpoint, commands_command, _("\
16035 Set commands to be executed when a breakpoint is hit.\n\
16036 Give breakpoint number as argument after \"commands\".\n\
16037 With no argument, the targeted breakpoint is the last one set.\n\
16038 The commands themselves follow starting on the next line.\n\
16039 Type a line containing \"end\" to indicate the end of them.\n\
16040 Give \"silent\" as the first line to make the breakpoint silent;\n\
16041 then no output is printed when it is hit, except what the commands print."));
16042
16043   c = add_com ("condition", class_breakpoint, condition_command, _("\
16044 Specify breakpoint number N to break only if COND is true.\n\
16045 Usage is `condition N COND', where N is an integer and COND is an\n\
16046 expression to be evaluated whenever breakpoint N is reached."));
16047   set_cmd_completer (c, condition_completer);
16048
16049   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16050 Set a temporary breakpoint.\n\
16051 Like \"break\" except the breakpoint is only temporary,\n\
16052 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16053 by using \"enable delete\" on the breakpoint number.\n\
16054 \n"
16055 BREAK_ARGS_HELP ("tbreak")));
16056   set_cmd_completer (c, location_completer);
16057
16058   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16059 Set a hardware assisted breakpoint.\n\
16060 Like \"break\" except the breakpoint requires hardware support,\n\
16061 some target hardware may not have this support.\n\
16062 \n"
16063 BREAK_ARGS_HELP ("hbreak")));
16064   set_cmd_completer (c, location_completer);
16065
16066   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16067 Set a temporary hardware assisted breakpoint.\n\
16068 Like \"hbreak\" except the breakpoint is only temporary,\n\
16069 so it will be deleted when hit.\n\
16070 \n"
16071 BREAK_ARGS_HELP ("thbreak")));
16072   set_cmd_completer (c, location_completer);
16073
16074   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16075 Enable some breakpoints.\n\
16076 Give breakpoint numbers (separated by spaces) as arguments.\n\
16077 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16078 This is used to cancel the effect of the \"disable\" command.\n\
16079 With a subcommand you can enable temporarily."),
16080                   &enablelist, "enable ", 1, &cmdlist);
16081   if (xdb_commands)
16082     add_com ("ab", class_breakpoint, enable_command, _("\
16083 Enable some breakpoints.\n\
16084 Give breakpoint numbers (separated by spaces) as arguments.\n\
16085 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16086 This is used to cancel the effect of the \"disable\" command.\n\
16087 With a subcommand you can enable temporarily."));
16088
16089   add_com_alias ("en", "enable", class_breakpoint, 1);
16090
16091   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16092 Enable some breakpoints.\n\
16093 Give breakpoint numbers (separated by spaces) as arguments.\n\
16094 This is used to cancel the effect of the \"disable\" command.\n\
16095 May be abbreviated to simply \"enable\".\n"),
16096                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16097
16098   add_cmd ("once", no_class, enable_once_command, _("\
16099 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16100 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16101            &enablebreaklist);
16102
16103   add_cmd ("delete", no_class, enable_delete_command, _("\
16104 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16105 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16106            &enablebreaklist);
16107
16108   add_cmd ("count", no_class, enable_count_command, _("\
16109 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16110 If a breakpoint is hit while enabled in this fashion,\n\
16111 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16112            &enablebreaklist);
16113
16114   add_cmd ("delete", no_class, enable_delete_command, _("\
16115 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16116 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16117            &enablelist);
16118
16119   add_cmd ("once", no_class, enable_once_command, _("\
16120 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16121 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16122            &enablelist);
16123
16124   add_cmd ("count", no_class, enable_count_command, _("\
16125 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16126 If a breakpoint is hit while enabled in this fashion,\n\
16127 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16128            &enablelist);
16129
16130   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16131 Disable some breakpoints.\n\
16132 Arguments are breakpoint numbers with spaces in between.\n\
16133 To disable all breakpoints, give no argument.\n\
16134 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16135                   &disablelist, "disable ", 1, &cmdlist);
16136   add_com_alias ("dis", "disable", class_breakpoint, 1);
16137   add_com_alias ("disa", "disable", class_breakpoint, 1);
16138   if (xdb_commands)
16139     add_com ("sb", class_breakpoint, disable_command, _("\
16140 Disable some breakpoints.\n\
16141 Arguments are breakpoint numbers with spaces in between.\n\
16142 To disable all breakpoints, give no argument.\n\
16143 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16144
16145   add_cmd ("breakpoints", class_alias, disable_command, _("\
16146 Disable some breakpoints.\n\
16147 Arguments are breakpoint numbers with spaces in between.\n\
16148 To disable all breakpoints, give no argument.\n\
16149 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16150 This command may be abbreviated \"disable\"."),
16151            &disablelist);
16152
16153   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16154 Delete some breakpoints or auto-display expressions.\n\
16155 Arguments are breakpoint numbers with spaces in between.\n\
16156 To delete all breakpoints, give no argument.\n\
16157 \n\
16158 Also a prefix command for deletion of other GDB objects.\n\
16159 The \"unset\" command is also an alias for \"delete\"."),
16160                   &deletelist, "delete ", 1, &cmdlist);
16161   add_com_alias ("d", "delete", class_breakpoint, 1);
16162   add_com_alias ("del", "delete", class_breakpoint, 1);
16163   if (xdb_commands)
16164     add_com ("db", class_breakpoint, delete_command, _("\
16165 Delete some breakpoints.\n\
16166 Arguments are breakpoint numbers with spaces in between.\n\
16167 To delete all breakpoints, give no argument.\n"));
16168
16169   add_cmd ("breakpoints", class_alias, delete_command, _("\
16170 Delete some breakpoints or auto-display expressions.\n\
16171 Arguments are breakpoint numbers with spaces in between.\n\
16172 To delete all breakpoints, give no argument.\n\
16173 This command may be abbreviated \"delete\"."),
16174            &deletelist);
16175
16176   add_com ("clear", class_breakpoint, clear_command, _("\
16177 Clear breakpoint at specified line or function.\n\
16178 Argument may be line number, function name, or \"*\" and an address.\n\
16179 If line number is specified, all breakpoints in that line are cleared.\n\
16180 If function is specified, breakpoints at beginning of function are cleared.\n\
16181 If an address is specified, breakpoints at that address are cleared.\n\
16182 \n\
16183 With no argument, clears all breakpoints in the line that the selected frame\n\
16184 is executing in.\n\
16185 \n\
16186 See also the \"delete\" command which clears breakpoints by number."));
16187   add_com_alias ("cl", "clear", class_breakpoint, 1);
16188
16189   c = add_com ("break", class_breakpoint, break_command, _("\
16190 Set breakpoint at specified line or function.\n"
16191 BREAK_ARGS_HELP ("break")));
16192   set_cmd_completer (c, location_completer);
16193
16194   add_com_alias ("b", "break", class_run, 1);
16195   add_com_alias ("br", "break", class_run, 1);
16196   add_com_alias ("bre", "break", class_run, 1);
16197   add_com_alias ("brea", "break", class_run, 1);
16198
16199   if (xdb_commands)
16200    add_com_alias ("ba", "break", class_breakpoint, 1);
16201
16202   if (dbx_commands)
16203     {
16204       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16205 Break in function/address or break at a line in the current file."),
16206                              &stoplist, "stop ", 1, &cmdlist);
16207       add_cmd ("in", class_breakpoint, stopin_command,
16208                _("Break in function or address."), &stoplist);
16209       add_cmd ("at", class_breakpoint, stopat_command,
16210                _("Break at a line in the current file."), &stoplist);
16211       add_com ("status", class_info, breakpoints_info, _("\
16212 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16213 The \"Type\" column indicates one of:\n\
16214 \tbreakpoint     - normal breakpoint\n\
16215 \twatchpoint     - watchpoint\n\
16216 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16217 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16218 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16219 address and file/line number respectively.\n\
16220 \n\
16221 Convenience variable \"$_\" and default examine address for \"x\"\n\
16222 are set to the address of the last breakpoint listed unless the command\n\
16223 is prefixed with \"server \".\n\n\
16224 Convenience variable \"$bpnum\" contains the number of the last\n\
16225 breakpoint set."));
16226     }
16227
16228   add_info ("breakpoints", breakpoints_info, _("\
16229 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16230 The \"Type\" column indicates one of:\n\
16231 \tbreakpoint     - normal breakpoint\n\
16232 \twatchpoint     - watchpoint\n\
16233 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16234 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16235 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16236 address and file/line number respectively.\n\
16237 \n\
16238 Convenience variable \"$_\" and default examine address for \"x\"\n\
16239 are set to the address of the last breakpoint listed unless the command\n\
16240 is prefixed with \"server \".\n\n\
16241 Convenience variable \"$bpnum\" contains the number of the last\n\
16242 breakpoint set."));
16243
16244   add_info_alias ("b", "breakpoints", 1);
16245
16246   if (xdb_commands)
16247     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16248 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16249 The \"Type\" column indicates one of:\n\
16250 \tbreakpoint     - normal breakpoint\n\
16251 \twatchpoint     - watchpoint\n\
16252 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16253 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16254 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16255 address and file/line number respectively.\n\
16256 \n\
16257 Convenience variable \"$_\" and default examine address for \"x\"\n\
16258 are set to the address of the last breakpoint listed unless the command\n\
16259 is prefixed with \"server \".\n\n\
16260 Convenience variable \"$bpnum\" contains the number of the last\n\
16261 breakpoint set."));
16262
16263   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16264 Status of all breakpoints, or breakpoint number NUMBER.\n\
16265 The \"Type\" column indicates one of:\n\
16266 \tbreakpoint     - normal breakpoint\n\
16267 \twatchpoint     - watchpoint\n\
16268 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16269 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16270 \tuntil          - internal breakpoint used by the \"until\" command\n\
16271 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16272 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16273 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16274 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16275 address and file/line number respectively.\n\
16276 \n\
16277 Convenience variable \"$_\" and default examine address for \"x\"\n\
16278 are set to the address of the last breakpoint listed unless the command\n\
16279 is prefixed with \"server \".\n\n\
16280 Convenience variable \"$bpnum\" contains the number of the last\n\
16281 breakpoint set."),
16282            &maintenanceinfolist);
16283
16284   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16285 Set catchpoints to catch events."),
16286                   &catch_cmdlist, "catch ",
16287                   0/*allow-unknown*/, &cmdlist);
16288
16289   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16290 Set temporary catchpoints to catch events."),
16291                   &tcatch_cmdlist, "tcatch ",
16292                   0/*allow-unknown*/, &cmdlist);
16293
16294   /* Add catch and tcatch sub-commands.  */
16295   add_catch_command ("catch", _("\
16296 Catch an exception, when caught."),
16297                      catch_catch_command,
16298                      NULL,
16299                      CATCH_PERMANENT,
16300                      CATCH_TEMPORARY);
16301   add_catch_command ("throw", _("\
16302 Catch an exception, when thrown."),
16303                      catch_throw_command,
16304                      NULL,
16305                      CATCH_PERMANENT,
16306                      CATCH_TEMPORARY);
16307   add_catch_command ("fork", _("Catch calls to fork."),
16308                      catch_fork_command_1,
16309                      NULL,
16310                      (void *) (uintptr_t) catch_fork_permanent,
16311                      (void *) (uintptr_t) catch_fork_temporary);
16312   add_catch_command ("vfork", _("Catch calls to vfork."),
16313                      catch_fork_command_1,
16314                      NULL,
16315                      (void *) (uintptr_t) catch_vfork_permanent,
16316                      (void *) (uintptr_t) catch_vfork_temporary);
16317   add_catch_command ("exec", _("Catch calls to exec."),
16318                      catch_exec_command_1,
16319                      NULL,
16320                      CATCH_PERMANENT,
16321                      CATCH_TEMPORARY);
16322   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16323 Usage: catch load [REGEX]\n\
16324 If REGEX is given, only stop for libraries matching the regular expression."),
16325                      catch_load_command_1,
16326                      NULL,
16327                      CATCH_PERMANENT,
16328                      CATCH_TEMPORARY);
16329   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16330 Usage: catch unload [REGEX]\n\
16331 If REGEX is given, only stop for libraries matching the regular expression."),
16332                      catch_unload_command_1,
16333                      NULL,
16334                      CATCH_PERMANENT,
16335                      CATCH_TEMPORARY);
16336   add_catch_command ("syscall", _("\
16337 Catch system calls by their names and/or numbers.\n\
16338 Arguments say which system calls to catch.  If no arguments\n\
16339 are given, every system call will be caught.\n\
16340 Arguments, if given, should be one or more system call names\n\
16341 (if your system supports that), or system call numbers."),
16342                      catch_syscall_command_1,
16343                      catch_syscall_completer,
16344                      CATCH_PERMANENT,
16345                      CATCH_TEMPORARY);
16346
16347   c = add_com ("watch", class_breakpoint, watch_command, _("\
16348 Set a watchpoint for an expression.\n\
16349 Usage: watch [-l|-location] EXPRESSION\n\
16350 A watchpoint stops execution of your program whenever the value of\n\
16351 an expression changes.\n\
16352 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16353 the memory to which it refers."));
16354   set_cmd_completer (c, expression_completer);
16355
16356   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16357 Set a read watchpoint for an expression.\n\
16358 Usage: rwatch [-l|-location] EXPRESSION\n\
16359 A watchpoint stops execution of your program whenever the value of\n\
16360 an expression is read.\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 ("awatch", class_breakpoint, awatch_command, _("\
16366 Set a watchpoint for an expression.\n\
16367 Usage: awatch [-l|-location] EXPRESSION\n\
16368 A watchpoint stops execution of your program whenever the value of\n\
16369 an expression is either read or written.\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   add_info ("watchpoints", watchpoints_info, _("\
16375 Status of specified watchpoints (all watchpoints if no argument)."));
16376
16377   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16378      respond to changes - contrary to the description.  */
16379   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16380                             &can_use_hw_watchpoints, _("\
16381 Set debugger's willingness to use watchpoint hardware."), _("\
16382 Show debugger's willingness to use watchpoint hardware."), _("\
16383 If zero, gdb will not use hardware for new watchpoints, even if\n\
16384 such is available.  (However, any hardware watchpoints that were\n\
16385 created before setting this to nonzero, will continue to use watchpoint\n\
16386 hardware.)"),
16387                             NULL,
16388                             show_can_use_hw_watchpoints,
16389                             &setlist, &showlist);
16390
16391   can_use_hw_watchpoints = 1;
16392
16393   /* Tracepoint manipulation commands.  */
16394
16395   c = add_com ("trace", class_breakpoint, trace_command, _("\
16396 Set a tracepoint at specified line or function.\n\
16397 \n"
16398 BREAK_ARGS_HELP ("trace") "\n\
16399 Do \"help tracepoints\" for info on other tracepoint commands."));
16400   set_cmd_completer (c, location_completer);
16401
16402   add_com_alias ("tp", "trace", class_alias, 0);
16403   add_com_alias ("tr", "trace", class_alias, 1);
16404   add_com_alias ("tra", "trace", class_alias, 1);
16405   add_com_alias ("trac", "trace", class_alias, 1);
16406
16407   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16408 Set a fast tracepoint at specified line or function.\n\
16409 \n"
16410 BREAK_ARGS_HELP ("ftrace") "\n\
16411 Do \"help tracepoints\" for info on other tracepoint commands."));
16412   set_cmd_completer (c, location_completer);
16413
16414   c = add_com ("strace", class_breakpoint, strace_command, _("\
16415 Set a static tracepoint at specified line, function or marker.\n\
16416 \n\
16417 strace [LOCATION] [if CONDITION]\n\
16418 LOCATION may be a line number, function name, \"*\" and an address,\n\
16419 or -m MARKER_ID.\n\
16420 If a line number is specified, probe the marker at start of code\n\
16421 for that line.  If a function is specified, probe the marker at start\n\
16422 of code for that function.  If an address is specified, probe the marker\n\
16423 at that exact address.  If a marker id is specified, probe the marker\n\
16424 with that name.  With no LOCATION, uses current execution address of\n\
16425 the selected stack frame.\n\
16426 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16427 This collects arbitrary user data passed in the probe point call to the\n\
16428 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16429 by printing the $_sdata variable like any other convenience variable.\n\
16430 \n\
16431 CONDITION is a boolean expression.\n\
16432 \n\
16433 Multiple tracepoints at one place are permitted, and useful if their\n\
16434 conditions are different.\n\
16435 \n\
16436 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16437 Do \"help tracepoints\" for info on other tracepoint commands."));
16438   set_cmd_completer (c, location_completer);
16439
16440   add_info ("tracepoints", tracepoints_info, _("\
16441 Status of specified tracepoints (all tracepoints if no argument).\n\
16442 Convenience variable \"$tpnum\" contains the number of the\n\
16443 last tracepoint set."));
16444
16445   add_info_alias ("tp", "tracepoints", 1);
16446
16447   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16448 Delete specified tracepoints.\n\
16449 Arguments are tracepoint numbers, separated by spaces.\n\
16450 No argument means delete all tracepoints."),
16451            &deletelist);
16452   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16453
16454   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16455 Disable specified tracepoints.\n\
16456 Arguments are tracepoint numbers, separated by spaces.\n\
16457 No argument means disable all tracepoints."),
16458            &disablelist);
16459   deprecate_cmd (c, "disable");
16460
16461   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16462 Enable specified tracepoints.\n\
16463 Arguments are tracepoint numbers, separated by spaces.\n\
16464 No argument means enable all tracepoints."),
16465            &enablelist);
16466   deprecate_cmd (c, "enable");
16467
16468   add_com ("passcount", class_trace, trace_pass_command, _("\
16469 Set the passcount for a tracepoint.\n\
16470 The trace will end when the tracepoint has been passed 'count' times.\n\
16471 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16472 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16473
16474   add_prefix_cmd ("save", class_breakpoint, save_command,
16475                   _("Save breakpoint definitions as a script."),
16476                   &save_cmdlist, "save ",
16477                   0/*allow-unknown*/, &cmdlist);
16478
16479   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16480 Save current breakpoint definitions as a script.\n\
16481 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16482 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16483 session to restore them."),
16484                &save_cmdlist);
16485   set_cmd_completer (c, filename_completer);
16486
16487   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16488 Save current tracepoint definitions as a script.\n\
16489 Use the 'source' command in another debug session to restore them."),
16490                &save_cmdlist);
16491   set_cmd_completer (c, filename_completer);
16492
16493   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16494   deprecate_cmd (c, "save tracepoints");
16495
16496   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16497 Breakpoint specific settings\n\
16498 Configure various breakpoint-specific variables such as\n\
16499 pending breakpoint behavior"),
16500                   &breakpoint_set_cmdlist, "set breakpoint ",
16501                   0/*allow-unknown*/, &setlist);
16502   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16503 Breakpoint specific settings\n\
16504 Configure various breakpoint-specific variables such as\n\
16505 pending breakpoint behavior"),
16506                   &breakpoint_show_cmdlist, "show breakpoint ",
16507                   0/*allow-unknown*/, &showlist);
16508
16509   add_setshow_auto_boolean_cmd ("pending", no_class,
16510                                 &pending_break_support, _("\
16511 Set debugger's behavior regarding pending breakpoints."), _("\
16512 Show debugger's behavior regarding pending breakpoints."), _("\
16513 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16514 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16515 an error.  If auto, an unrecognized breakpoint location results in a\n\
16516 user-query to see if a pending breakpoint should be created."),
16517                                 NULL,
16518                                 show_pending_break_support,
16519                                 &breakpoint_set_cmdlist,
16520                                 &breakpoint_show_cmdlist);
16521
16522   pending_break_support = AUTO_BOOLEAN_AUTO;
16523
16524   add_setshow_boolean_cmd ("auto-hw", no_class,
16525                            &automatic_hardware_breakpoints, _("\
16526 Set automatic usage of hardware breakpoints."), _("\
16527 Show automatic usage of hardware breakpoints."), _("\
16528 If set, the debugger will automatically use hardware breakpoints for\n\
16529 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16530 a warning will be emitted for such breakpoints."),
16531                            NULL,
16532                            show_automatic_hardware_breakpoints,
16533                            &breakpoint_set_cmdlist,
16534                            &breakpoint_show_cmdlist);
16535
16536   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16537                                 &always_inserted_mode, _("\
16538 Set mode for inserting breakpoints."), _("\
16539 Show mode for inserting breakpoints."), _("\
16540 When this mode is off, breakpoints are inserted in inferior when it is\n\
16541 resumed, and removed when execution stops.  When this mode is on,\n\
16542 breakpoints are inserted immediately and removed only when the user\n\
16543 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16544 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16545 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16546 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16547 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16548                                 NULL,
16549                                 &show_always_inserted_mode,
16550                                 &breakpoint_set_cmdlist,
16551                                 &breakpoint_show_cmdlist);
16552
16553   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16554                         condition_evaluation_enums,
16555                         &condition_evaluation_mode_1, _("\
16556 Set mode of breakpoint condition evaluation."), _("\
16557 Show mode of breakpoint condition evaluation."), _("\
16558 When this is set to \"host\", breakpoint conditions will be\n\
16559 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16560 breakpoint conditions will be downloaded to the target (if the target\n\
16561 supports such feature) and conditions will be evaluated on the target's side.\n\
16562 If this is set to \"auto\" (default), this will be automatically set to\n\
16563 \"target\" if it supports condition evaluation, otherwise it will\n\
16564 be set to \"gdb\""),
16565                            &set_condition_evaluation_mode,
16566                            &show_condition_evaluation_mode,
16567                            &breakpoint_set_cmdlist,
16568                            &breakpoint_show_cmdlist);
16569
16570   add_com ("break-range", class_breakpoint, break_range_command, _("\
16571 Set a breakpoint for an address range.\n\
16572 break-range START-LOCATION, END-LOCATION\n\
16573 where START-LOCATION and END-LOCATION can be one of the following:\n\
16574   LINENUM, for that line in the current file,\n\
16575   FILE:LINENUM, for that line in that file,\n\
16576   +OFFSET, for that number of lines after the current line\n\
16577            or the start of the range\n\
16578   FUNCTION, for the first line in that function,\n\
16579   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16580   *ADDRESS, for the instruction at that address.\n\
16581 \n\
16582 The breakpoint will stop execution of the inferior whenever it executes\n\
16583 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16584 range (including START-LOCATION and END-LOCATION)."));
16585
16586   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16587 Set a dynamic printf at specified line or function.\n\
16588 dprintf location,format string,arg1,arg2,...\n\
16589 location may be a line number, function name, or \"*\" and an address.\n\
16590 If a line number is specified, break at start of code for that line.\n\
16591 If a function is specified, break at start of code for that function.\n\
16592 "));
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 }