* breakpoint.h (struct breakpoint): Add comment to
[platform/upstream/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       const 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,
995                      const char *text, const char *word)
996 {
997   const char *space;
998
999   text = skip_spaces_const (text);
1000   space = skip_to_space_const (text);
1001   if (*space == '\0')
1002     {
1003       int len;
1004       struct breakpoint *b;
1005       VEC (char_ptr) *result = NULL;
1006
1007       if (text[0] == '$')
1008         {
1009           /* We don't support completion of history indices.  */
1010           if (isdigit (text[1]))
1011             return NULL;
1012           return complete_internalvar (&text[1]);
1013         }
1014
1015       /* We're completing the breakpoint number.  */
1016       len = strlen (text);
1017
1018       ALL_BREAKPOINTS (b)
1019       {
1020         int single = b->loc->next == NULL;
1021         struct bp_location *loc;
1022         int count = 1;
1023
1024         for (loc = b->loc; loc; loc = loc->next)
1025           {
1026             char location[50];
1027
1028             if (single)
1029               xsnprintf (location, sizeof (location), "%d", b->number);
1030             else
1031               xsnprintf (location, sizeof (location),  "%d.%d", b->number,
1032                          count);
1033
1034             if (strncmp (location, text, len) == 0)
1035               VEC_safe_push (char_ptr, result, xstrdup (location));
1036
1037             ++count;
1038           }
1039       }
1040
1041       return result;
1042     }
1043
1044   /* We're completing the expression part.  */
1045   text = skip_spaces_const (space);
1046   return expression_completer (cmd, text, word);
1047 }
1048
1049 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1050
1051 static void
1052 condition_command (char *arg, int from_tty)
1053 {
1054   struct breakpoint *b;
1055   char *p;
1056   int bnum;
1057
1058   if (arg == 0)
1059     error_no_arg (_("breakpoint number"));
1060
1061   p = arg;
1062   bnum = get_number (&p);
1063   if (bnum == 0)
1064     error (_("Bad breakpoint argument: '%s'"), arg);
1065
1066   ALL_BREAKPOINTS (b)
1067     if (b->number == bnum)
1068       {
1069         /* Check if this breakpoint has a Python object assigned to
1070            it, and if it has a definition of the "stop"
1071            method.  This method and conditions entered into GDB from
1072            the CLI are mutually exclusive.  */
1073         if (b->py_bp_object
1074             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1075           error (_("Cannot set a condition where a Python 'stop' "
1076                    "method has been defined in the breakpoint."));
1077         set_breakpoint_condition (b, p, from_tty);
1078
1079         if (is_breakpoint (b))
1080           update_global_location_list (1);
1081
1082         return;
1083       }
1084
1085   error (_("No breakpoint number %d."), bnum);
1086 }
1087
1088 /* Check that COMMAND do not contain commands that are suitable
1089    only for tracepoints and not suitable for ordinary breakpoints.
1090    Throw if any such commands is found.  */
1091
1092 static void
1093 check_no_tracepoint_commands (struct command_line *commands)
1094 {
1095   struct command_line *c;
1096
1097   for (c = commands; c; c = c->next)
1098     {
1099       int i;
1100
1101       if (c->control_type == while_stepping_control)
1102         error (_("The 'while-stepping' command can "
1103                  "only be used for tracepoints"));
1104
1105       for (i = 0; i < c->body_count; ++i)
1106         check_no_tracepoint_commands ((c->body_list)[i]);
1107
1108       /* Not that command parsing removes leading whitespace and comment
1109          lines and also empty lines.  So, we only need to check for
1110          command directly.  */
1111       if (strstr (c->line, "collect ") == c->line)
1112         error (_("The 'collect' command can only be used for tracepoints"));
1113
1114       if (strstr (c->line, "teval ") == c->line)
1115         error (_("The 'teval' command can only be used for tracepoints"));
1116     }
1117 }
1118
1119 /* Encapsulate tests for different types of tracepoints.  */
1120
1121 static int
1122 is_tracepoint_type (enum bptype type)
1123 {
1124   return (type == bp_tracepoint
1125           || type == bp_fast_tracepoint
1126           || type == bp_static_tracepoint);
1127 }
1128
1129 int
1130 is_tracepoint (const struct breakpoint *b)
1131 {
1132   return is_tracepoint_type (b->type);
1133 }
1134
1135 /* A helper function that validates that COMMANDS are valid for a
1136    breakpoint.  This function will throw an exception if a problem is
1137    found.  */
1138
1139 static void
1140 validate_commands_for_breakpoint (struct breakpoint *b,
1141                                   struct command_line *commands)
1142 {
1143   if (is_tracepoint (b))
1144     {
1145       /* We need to verify that each top-level element of commands is
1146          valid for tracepoints, that there's at most one
1147          while-stepping element, and that while-stepping's body has
1148          valid tracing commands excluding nested while-stepping.  */
1149       struct command_line *c;
1150       struct command_line *while_stepping = 0;
1151       for (c = commands; c; c = c->next)
1152         {
1153           if (c->control_type == while_stepping_control)
1154             {
1155               if (b->type == bp_fast_tracepoint)
1156                 error (_("The 'while-stepping' command "
1157                          "cannot be used for fast tracepoint"));
1158               else if (b->type == bp_static_tracepoint)
1159                 error (_("The 'while-stepping' command "
1160                          "cannot be used for static tracepoint"));
1161
1162               if (while_stepping)
1163                 error (_("The 'while-stepping' command "
1164                          "can be used only once"));
1165               else
1166                 while_stepping = c;
1167             }
1168         }
1169       if (while_stepping)
1170         {
1171           struct command_line *c2;
1172
1173           gdb_assert (while_stepping->body_count == 1);
1174           c2 = while_stepping->body_list[0];
1175           for (; c2; c2 = c2->next)
1176             {
1177               if (c2->control_type == while_stepping_control)
1178                 error (_("The 'while-stepping' command cannot be nested"));
1179             }
1180         }
1181     }
1182   else
1183     {
1184       check_no_tracepoint_commands (commands);
1185     }
1186 }
1187
1188 /* Return a vector of all the static tracepoints set at ADDR.  The
1189    caller is responsible for releasing the vector.  */
1190
1191 VEC(breakpoint_p) *
1192 static_tracepoints_here (CORE_ADDR addr)
1193 {
1194   struct breakpoint *b;
1195   VEC(breakpoint_p) *found = 0;
1196   struct bp_location *loc;
1197
1198   ALL_BREAKPOINTS (b)
1199     if (b->type == bp_static_tracepoint)
1200       {
1201         for (loc = b->loc; loc; loc = loc->next)
1202           if (loc->address == addr)
1203             VEC_safe_push(breakpoint_p, found, b);
1204       }
1205
1206   return found;
1207 }
1208
1209 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1210    validate that only allowed commands are included.  */
1211
1212 void
1213 breakpoint_set_commands (struct breakpoint *b, 
1214                          struct command_line *commands)
1215 {
1216   validate_commands_for_breakpoint (b, commands);
1217
1218   decref_counted_command_line (&b->commands);
1219   b->commands = alloc_counted_command_line (commands);
1220   observer_notify_breakpoint_modified (b);
1221 }
1222
1223 /* Set the internal `silent' flag on the breakpoint.  Note that this
1224    is not the same as the "silent" that may appear in the breakpoint's
1225    commands.  */
1226
1227 void
1228 breakpoint_set_silent (struct breakpoint *b, int silent)
1229 {
1230   int old_silent = b->silent;
1231
1232   b->silent = silent;
1233   if (old_silent != silent)
1234     observer_notify_breakpoint_modified (b);
1235 }
1236
1237 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1238    breakpoint work for any thread.  */
1239
1240 void
1241 breakpoint_set_thread (struct breakpoint *b, int thread)
1242 {
1243   int old_thread = b->thread;
1244
1245   b->thread = thread;
1246   if (old_thread != thread)
1247     observer_notify_breakpoint_modified (b);
1248 }
1249
1250 /* Set the task for this breakpoint.  If TASK is 0, make the
1251    breakpoint work for any task.  */
1252
1253 void
1254 breakpoint_set_task (struct breakpoint *b, int task)
1255 {
1256   int old_task = b->task;
1257
1258   b->task = task;
1259   if (old_task != task)
1260     observer_notify_breakpoint_modified (b);
1261 }
1262
1263 void
1264 check_tracepoint_command (char *line, void *closure)
1265 {
1266   struct breakpoint *b = closure;
1267
1268   validate_actionline (line, b);
1269 }
1270
1271 /* A structure used to pass information through
1272    map_breakpoint_numbers.  */
1273
1274 struct commands_info
1275 {
1276   /* True if the command was typed at a tty.  */
1277   int from_tty;
1278
1279   /* The breakpoint range spec.  */
1280   char *arg;
1281
1282   /* Non-NULL if the body of the commands are being read from this
1283      already-parsed command.  */
1284   struct command_line *control;
1285
1286   /* The command lines read from the user, or NULL if they have not
1287      yet been read.  */
1288   struct counted_command_line *cmd;
1289 };
1290
1291 /* A callback for map_breakpoint_numbers that sets the commands for
1292    commands_command.  */
1293
1294 static void
1295 do_map_commands_command (struct breakpoint *b, void *data)
1296 {
1297   struct commands_info *info = data;
1298
1299   if (info->cmd == NULL)
1300     {
1301       struct command_line *l;
1302
1303       if (info->control != NULL)
1304         l = copy_command_lines (info->control->body_list[0]);
1305       else
1306         {
1307           struct cleanup *old_chain;
1308           char *str;
1309
1310           str = xstrprintf (_("Type commands for breakpoint(s) "
1311                               "%s, one per line."),
1312                             info->arg);
1313
1314           old_chain = make_cleanup (xfree, str);
1315
1316           l = read_command_lines (str,
1317                                   info->from_tty, 1,
1318                                   (is_tracepoint (b)
1319                                    ? check_tracepoint_command : 0),
1320                                   b);
1321
1322           do_cleanups (old_chain);
1323         }
1324
1325       info->cmd = alloc_counted_command_line (l);
1326     }
1327
1328   /* If a breakpoint was on the list more than once, we don't need to
1329      do anything.  */
1330   if (b->commands != info->cmd)
1331     {
1332       validate_commands_for_breakpoint (b, info->cmd->commands);
1333       incref_counted_command_line (info->cmd);
1334       decref_counted_command_line (&b->commands);
1335       b->commands = info->cmd;
1336       observer_notify_breakpoint_modified (b);
1337     }
1338 }
1339
1340 static void
1341 commands_command_1 (char *arg, int from_tty, 
1342                     struct command_line *control)
1343 {
1344   struct cleanup *cleanups;
1345   struct commands_info info;
1346
1347   info.from_tty = from_tty;
1348   info.control = control;
1349   info.cmd = NULL;
1350   /* If we read command lines from the user, then `info' will hold an
1351      extra reference to the commands that we must clean up.  */
1352   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1353
1354   if (arg == NULL || !*arg)
1355     {
1356       if (breakpoint_count - prev_breakpoint_count > 1)
1357         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1358                           breakpoint_count);
1359       else if (breakpoint_count > 0)
1360         arg = xstrprintf ("%d", breakpoint_count);
1361       else
1362         {
1363           /* So that we don't try to free the incoming non-NULL
1364              argument in the cleanup below.  Mapping breakpoint
1365              numbers will fail in this case.  */
1366           arg = NULL;
1367         }
1368     }
1369   else
1370     /* The command loop has some static state, so we need to preserve
1371        our argument.  */
1372     arg = xstrdup (arg);
1373
1374   if (arg != NULL)
1375     make_cleanup (xfree, arg);
1376
1377   info.arg = arg;
1378
1379   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1380
1381   if (info.cmd == NULL)
1382     error (_("No breakpoints specified."));
1383
1384   do_cleanups (cleanups);
1385 }
1386
1387 static void
1388 commands_command (char *arg, int from_tty)
1389 {
1390   commands_command_1 (arg, from_tty, NULL);
1391 }
1392
1393 /* Like commands_command, but instead of reading the commands from
1394    input stream, takes them from an already parsed command structure.
1395
1396    This is used by cli-script.c to DTRT with breakpoint commands
1397    that are part of if and while bodies.  */
1398 enum command_control_type
1399 commands_from_control_command (char *arg, struct command_line *cmd)
1400 {
1401   commands_command_1 (arg, 0, cmd);
1402   return simple_control;
1403 }
1404
1405 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1406
1407 static int
1408 bp_location_has_shadow (struct bp_location *bl)
1409 {
1410   if (bl->loc_type != bp_loc_software_breakpoint)
1411     return 0;
1412   if (!bl->inserted)
1413     return 0;
1414   if (bl->target_info.shadow_len == 0)
1415     /* BL isn't valid, or doesn't shadow memory.  */
1416     return 0;
1417   return 1;
1418 }
1419
1420 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1421    by replacing any memory breakpoints with their shadowed contents.
1422
1423    If READBUF is not NULL, this buffer must not overlap with any of
1424    the breakpoint location's shadow_contents buffers.  Otherwise,
1425    a failed assertion internal error will be raised.
1426
1427    The range of shadowed area by each bp_location is:
1428      bl->address - bp_location_placed_address_before_address_max
1429      up to bl->address + bp_location_shadow_len_after_address_max
1430    The range we were requested to resolve shadows for is:
1431      memaddr ... memaddr + len
1432    Thus the safe cutoff boundaries for performance optimization are
1433      memaddr + len <= (bl->address
1434                        - bp_location_placed_address_before_address_max)
1435    and:
1436      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1437
1438 void
1439 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1440                         const gdb_byte *writebuf_org,
1441                         ULONGEST memaddr, LONGEST len)
1442 {
1443   /* Left boundary, right boundary and median element of our binary
1444      search.  */
1445   unsigned bc_l, bc_r, bc;
1446
1447   /* Find BC_L which is a leftmost element which may affect BUF
1448      content.  It is safe to report lower value but a failure to
1449      report higher one.  */
1450
1451   bc_l = 0;
1452   bc_r = bp_location_count;
1453   while (bc_l + 1 < bc_r)
1454     {
1455       struct bp_location *bl;
1456
1457       bc = (bc_l + bc_r) / 2;
1458       bl = bp_location[bc];
1459
1460       /* Check first BL->ADDRESS will not overflow due to the added
1461          constant.  Then advance the left boundary only if we are sure
1462          the BC element can in no way affect the BUF content (MEMADDR
1463          to MEMADDR + LEN range).
1464
1465          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1466          offset so that we cannot miss a breakpoint with its shadow
1467          range tail still reaching MEMADDR.  */
1468
1469       if ((bl->address + bp_location_shadow_len_after_address_max
1470            >= bl->address)
1471           && (bl->address + bp_location_shadow_len_after_address_max
1472               <= memaddr))
1473         bc_l = bc;
1474       else
1475         bc_r = bc;
1476     }
1477
1478   /* Due to the binary search above, we need to make sure we pick the
1479      first location that's at BC_L's address.  E.g., if there are
1480      multiple locations at the same address, BC_L may end up pointing
1481      at a duplicate location, and miss the "master"/"inserted"
1482      location.  Say, given locations L1, L2 and L3 at addresses A and
1483      B:
1484
1485       L1@A, L2@A, L3@B, ...
1486
1487      BC_L could end up pointing at location L2, while the "master"
1488      location could be L1.  Since the `loc->inserted' flag is only set
1489      on "master" locations, we'd forget to restore the shadow of L1
1490      and L2.  */
1491   while (bc_l > 0
1492          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1493     bc_l--;
1494
1495   /* Now do full processing of the found relevant range of elements.  */
1496
1497   for (bc = bc_l; bc < bp_location_count; bc++)
1498   {
1499     struct bp_location *bl = bp_location[bc];
1500     CORE_ADDR bp_addr = 0;
1501     int bp_size = 0;
1502     int bptoffset = 0;
1503
1504     /* bp_location array has BL->OWNER always non-NULL.  */
1505     if (bl->owner->type == bp_none)
1506       warning (_("reading through apparently deleted breakpoint #%d?"),
1507                bl->owner->number);
1508
1509     /* Performance optimization: any further element can no longer affect BUF
1510        content.  */
1511
1512     if (bl->address >= bp_location_placed_address_before_address_max
1513         && memaddr + len <= (bl->address
1514                              - bp_location_placed_address_before_address_max))
1515       break;
1516
1517     if (!bp_location_has_shadow (bl))
1518       continue;
1519     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1520                                    current_program_space->aspace, 0))
1521       continue;
1522
1523     /* Addresses and length of the part of the breakpoint that
1524        we need to copy.  */
1525     bp_addr = bl->target_info.placed_address;
1526     bp_size = bl->target_info.shadow_len;
1527
1528     if (bp_addr + bp_size <= memaddr)
1529       /* The breakpoint is entirely before the chunk of memory we
1530          are reading.  */
1531       continue;
1532
1533     if (bp_addr >= memaddr + len)
1534       /* The breakpoint is entirely after the chunk of memory we are
1535          reading.  */
1536       continue;
1537
1538     /* Offset within shadow_contents.  */
1539     if (bp_addr < memaddr)
1540       {
1541         /* Only copy the second part of the breakpoint.  */
1542         bp_size -= memaddr - bp_addr;
1543         bptoffset = memaddr - bp_addr;
1544         bp_addr = memaddr;
1545       }
1546
1547     if (bp_addr + bp_size > memaddr + len)
1548       {
1549         /* Only copy the first part of the breakpoint.  */
1550         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1551       }
1552
1553     if (readbuf != NULL)
1554       {
1555         /* Verify that the readbuf buffer does not overlap with
1556            the shadow_contents buffer.  */
1557         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1558                     || readbuf >= (bl->target_info.shadow_contents
1559                                    + bl->target_info.shadow_len));
1560
1561         /* Update the read buffer with this inserted breakpoint's
1562            shadow.  */
1563         memcpy (readbuf + bp_addr - memaddr,
1564                 bl->target_info.shadow_contents + bptoffset, bp_size);
1565       }
1566     else
1567       {
1568         struct gdbarch *gdbarch = bl->gdbarch;
1569         const unsigned char *bp;
1570         CORE_ADDR placed_address = bl->target_info.placed_address;
1571         int placed_size = bl->target_info.placed_size;
1572
1573         /* Update the shadow with what we want to write to memory.  */
1574         memcpy (bl->target_info.shadow_contents + bptoffset,
1575                 writebuf_org + bp_addr - memaddr, bp_size);
1576
1577         /* Determine appropriate breakpoint contents and size for this
1578            address.  */
1579         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1580
1581         /* Update the final write buffer with this inserted
1582            breakpoint's INSN.  */
1583         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1584       }
1585   }
1586 }
1587 \f
1588
1589 /* Return true if BPT is either a software breakpoint or a hardware
1590    breakpoint.  */
1591
1592 int
1593 is_breakpoint (const struct breakpoint *bpt)
1594 {
1595   return (bpt->type == bp_breakpoint
1596           || bpt->type == bp_hardware_breakpoint
1597           || bpt->type == bp_dprintf);
1598 }
1599
1600 /* Return true if BPT is of any hardware watchpoint kind.  */
1601
1602 static int
1603 is_hardware_watchpoint (const struct breakpoint *bpt)
1604 {
1605   return (bpt->type == bp_hardware_watchpoint
1606           || bpt->type == bp_read_watchpoint
1607           || bpt->type == bp_access_watchpoint);
1608 }
1609
1610 /* Return true if BPT is of any watchpoint kind, hardware or
1611    software.  */
1612
1613 int
1614 is_watchpoint (const struct breakpoint *bpt)
1615 {
1616   return (is_hardware_watchpoint (bpt)
1617           || bpt->type == bp_watchpoint);
1618 }
1619
1620 /* Returns true if the current thread and its running state are safe
1621    to evaluate or update watchpoint B.  Watchpoints on local
1622    expressions need to be evaluated in the context of the thread that
1623    was current when the watchpoint was created, and, that thread needs
1624    to be stopped to be able to select the correct frame context.
1625    Watchpoints on global expressions can be evaluated on any thread,
1626    and in any state.  It is presently left to the target allowing
1627    memory accesses when threads are running.  */
1628
1629 static int
1630 watchpoint_in_thread_scope (struct watchpoint *b)
1631 {
1632   return (b->base.pspace == current_program_space
1633           && (ptid_equal (b->watchpoint_thread, null_ptid)
1634               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1635                   && !is_executing (inferior_ptid))));
1636 }
1637
1638 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1639    associated bp_watchpoint_scope breakpoint.  */
1640
1641 static void
1642 watchpoint_del_at_next_stop (struct watchpoint *w)
1643 {
1644   struct breakpoint *b = &w->base;
1645
1646   if (b->related_breakpoint != b)
1647     {
1648       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1649       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1650       b->related_breakpoint->disposition = disp_del_at_next_stop;
1651       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1652       b->related_breakpoint = b;
1653     }
1654   b->disposition = disp_del_at_next_stop;
1655 }
1656
1657 /* Assuming that B is a watchpoint:
1658    - Reparse watchpoint expression, if REPARSE is non-zero
1659    - Evaluate expression and store the result in B->val
1660    - Evaluate the condition if there is one, and store the result
1661      in b->loc->cond.
1662    - Update the list of values that must be watched in B->loc.
1663
1664    If the watchpoint disposition is disp_del_at_next_stop, then do
1665    nothing.  If this is local watchpoint that is out of scope, delete
1666    it.
1667
1668    Even with `set breakpoint always-inserted on' the watchpoints are
1669    removed + inserted on each stop here.  Normal breakpoints must
1670    never be removed because they might be missed by a running thread
1671    when debugging in non-stop mode.  On the other hand, hardware
1672    watchpoints (is_hardware_watchpoint; processed here) are specific
1673    to each LWP since they are stored in each LWP's hardware debug
1674    registers.  Therefore, such LWP must be stopped first in order to
1675    be able to modify its hardware watchpoints.
1676
1677    Hardware watchpoints must be reset exactly once after being
1678    presented to the user.  It cannot be done sooner, because it would
1679    reset the data used to present the watchpoint hit to the user.  And
1680    it must not be done later because it could display the same single
1681    watchpoint hit during multiple GDB stops.  Note that the latter is
1682    relevant only to the hardware watchpoint types bp_read_watchpoint
1683    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1684    not user-visible - its hit is suppressed if the memory content has
1685    not changed.
1686
1687    The following constraints influence the location where we can reset
1688    hardware watchpoints:
1689
1690    * target_stopped_by_watchpoint and target_stopped_data_address are
1691      called several times when GDB stops.
1692
1693    [linux] 
1694    * Multiple hardware watchpoints can be hit at the same time,
1695      causing GDB to stop.  GDB only presents one hardware watchpoint
1696      hit at a time as the reason for stopping, and all the other hits
1697      are presented later, one after the other, each time the user
1698      requests the execution to be resumed.  Execution is not resumed
1699      for the threads still having pending hit event stored in
1700      LWP_INFO->STATUS.  While the watchpoint is already removed from
1701      the inferior on the first stop the thread hit event is kept being
1702      reported from its cached value by linux_nat_stopped_data_address
1703      until the real thread resume happens after the watchpoint gets
1704      presented and thus its LWP_INFO->STATUS gets reset.
1705
1706    Therefore the hardware watchpoint hit can get safely reset on the
1707    watchpoint removal from inferior.  */
1708
1709 static void
1710 update_watchpoint (struct watchpoint *b, int reparse)
1711 {
1712   int within_current_scope;
1713   struct frame_id saved_frame_id;
1714   int frame_saved;
1715
1716   /* If this is a local watchpoint, we only want to check if the
1717      watchpoint frame is in scope if the current thread is the thread
1718      that was used to create the watchpoint.  */
1719   if (!watchpoint_in_thread_scope (b))
1720     return;
1721
1722   if (b->base.disposition == disp_del_at_next_stop)
1723     return;
1724  
1725   frame_saved = 0;
1726
1727   /* Determine if the watchpoint is within scope.  */
1728   if (b->exp_valid_block == NULL)
1729     within_current_scope = 1;
1730   else
1731     {
1732       struct frame_info *fi = get_current_frame ();
1733       struct gdbarch *frame_arch = get_frame_arch (fi);
1734       CORE_ADDR frame_pc = get_frame_pc (fi);
1735
1736       /* If we're in a function epilogue, unwinding may not work
1737          properly, so do not attempt to recreate locations at this
1738          point.  See similar comments in watchpoint_check.  */
1739       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1740         return;
1741
1742       /* Save the current frame's ID so we can restore it after
1743          evaluating the watchpoint expression on its own frame.  */
1744       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1745          took a frame parameter, so that we didn't have to change the
1746          selected frame.  */
1747       frame_saved = 1;
1748       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1749
1750       fi = frame_find_by_id (b->watchpoint_frame);
1751       within_current_scope = (fi != NULL);
1752       if (within_current_scope)
1753         select_frame (fi);
1754     }
1755
1756   /* We don't free locations.  They are stored in the bp_location array
1757      and update_global_location_list will eventually delete them and
1758      remove breakpoints if needed.  */
1759   b->base.loc = NULL;
1760
1761   if (within_current_scope && reparse)
1762     {
1763       const char *s;
1764
1765       if (b->exp)
1766         {
1767           xfree (b->exp);
1768           b->exp = NULL;
1769         }
1770       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1771       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1772       /* If the meaning of expression itself changed, the old value is
1773          no longer relevant.  We don't want to report a watchpoint hit
1774          to the user when the old value and the new value may actually
1775          be completely different objects.  */
1776       value_free (b->val);
1777       b->val = NULL;
1778       b->val_valid = 0;
1779
1780       /* Note that unlike with breakpoints, the watchpoint's condition
1781          expression is stored in the breakpoint object, not in the
1782          locations (re)created below.  */
1783       if (b->base.cond_string != NULL)
1784         {
1785           if (b->cond_exp != NULL)
1786             {
1787               xfree (b->cond_exp);
1788               b->cond_exp = NULL;
1789             }
1790
1791           s = b->base.cond_string;
1792           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1793         }
1794     }
1795
1796   /* If we failed to parse the expression, for example because
1797      it refers to a global variable in a not-yet-loaded shared library,
1798      don't try to insert watchpoint.  We don't automatically delete
1799      such watchpoint, though, since failure to parse expression
1800      is different from out-of-scope watchpoint.  */
1801   if ( !target_has_execution)
1802     {
1803       /* Without execution, memory can't change.  No use to try and
1804          set watchpoint locations.  The watchpoint will be reset when
1805          the target gains execution, through breakpoint_re_set.  */
1806     }
1807   else if (within_current_scope && b->exp)
1808     {
1809       int pc = 0;
1810       struct value *val_chain, *v, *result, *next;
1811       struct program_space *frame_pspace;
1812
1813       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1814
1815       /* Avoid setting b->val if it's already set.  The meaning of
1816          b->val is 'the last value' user saw, and we should update
1817          it only if we reported that last value to user.  As it
1818          happens, the code that reports it updates b->val directly.
1819          We don't keep track of the memory value for masked
1820          watchpoints.  */
1821       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1822         {
1823           b->val = v;
1824           b->val_valid = 1;
1825         }
1826
1827       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1828
1829       /* Look at each value on the value chain.  */
1830       for (v = val_chain; v; v = value_next (v))
1831         {
1832           /* If it's a memory location, and GDB actually needed
1833              its contents to evaluate the expression, then we
1834              must watch it.  If the first value returned is
1835              still lazy, that means an error occurred reading it;
1836              watch it anyway in case it becomes readable.  */
1837           if (VALUE_LVAL (v) == lval_memory
1838               && (v == val_chain || ! value_lazy (v)))
1839             {
1840               struct type *vtype = check_typedef (value_type (v));
1841
1842               /* We only watch structs and arrays if user asked
1843                  for it explicitly, never if they just happen to
1844                  appear in the middle of some value chain.  */
1845               if (v == result
1846                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1847                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1848                 {
1849                   CORE_ADDR addr;
1850                   int type;
1851                   struct bp_location *loc, **tmp;
1852
1853                   addr = value_address (v);
1854                   type = hw_write;
1855                   if (b->base.type == bp_read_watchpoint)
1856                     type = hw_read;
1857                   else if (b->base.type == bp_access_watchpoint)
1858                     type = hw_access;
1859
1860                   loc = allocate_bp_location (&b->base);
1861                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1862                     ;
1863                   *tmp = loc;
1864                   loc->gdbarch = get_type_arch (value_type (v));
1865
1866                   loc->pspace = frame_pspace;
1867                   loc->address = addr;
1868                   loc->length = TYPE_LENGTH (value_type (v));
1869                   loc->watchpoint_type = type;
1870                 }
1871             }
1872         }
1873
1874       /* Change the type of breakpoint between hardware assisted or
1875          an ordinary watchpoint depending on the hardware support
1876          and free hardware slots.  REPARSE is set when the inferior
1877          is started.  */
1878       if (reparse)
1879         {
1880           int reg_cnt;
1881           enum bp_loc_type loc_type;
1882           struct bp_location *bl;
1883
1884           reg_cnt = can_use_hardware_watchpoint (val_chain);
1885
1886           if (reg_cnt)
1887             {
1888               int i, target_resources_ok, other_type_used;
1889               enum bptype type;
1890
1891               /* Use an exact watchpoint when there's only one memory region to be
1892                  watched, and only one debug register is needed to watch it.  */
1893               b->exact = target_exact_watchpoints && reg_cnt == 1;
1894
1895               /* We need to determine how many resources are already
1896                  used for all other hardware watchpoints plus this one
1897                  to see if we still have enough resources to also fit
1898                  this watchpoint in as well.  */
1899
1900               /* If this is a software watchpoint, we try to turn it
1901                  to a hardware one -- count resources as if B was of
1902                  hardware watchpoint type.  */
1903               type = b->base.type;
1904               if (type == bp_watchpoint)
1905                 type = bp_hardware_watchpoint;
1906
1907               /* This watchpoint may or may not have been placed on
1908                  the list yet at this point (it won't be in the list
1909                  if we're trying to create it for the first time,
1910                  through watch_command), so always account for it
1911                  manually.  */
1912
1913               /* Count resources used by all watchpoints except B.  */
1914               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1915
1916               /* Add in the resources needed for B.  */
1917               i += hw_watchpoint_use_count (&b->base);
1918
1919               target_resources_ok
1920                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1921               if (target_resources_ok <= 0)
1922                 {
1923                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1924
1925                   if (target_resources_ok == 0 && !sw_mode)
1926                     error (_("Target does not support this type of "
1927                              "hardware watchpoint."));
1928                   else if (target_resources_ok < 0 && !sw_mode)
1929                     error (_("There are not enough available hardware "
1930                              "resources for this watchpoint."));
1931
1932                   /* Downgrade to software watchpoint.  */
1933                   b->base.type = bp_watchpoint;
1934                 }
1935               else
1936                 {
1937                   /* If this was a software watchpoint, we've just
1938                      found we have enough resources to turn it to a
1939                      hardware watchpoint.  Otherwise, this is a
1940                      nop.  */
1941                   b->base.type = type;
1942                 }
1943             }
1944           else if (!b->base.ops->works_in_software_mode (&b->base))
1945             error (_("Expression cannot be implemented with "
1946                      "read/access watchpoint."));
1947           else
1948             b->base.type = bp_watchpoint;
1949
1950           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1951                       : bp_loc_hardware_watchpoint);
1952           for (bl = b->base.loc; bl; bl = bl->next)
1953             bl->loc_type = loc_type;
1954         }
1955
1956       for (v = val_chain; v; v = next)
1957         {
1958           next = value_next (v);
1959           if (v != b->val)
1960             value_free (v);
1961         }
1962
1963       /* If a software watchpoint is not watching any memory, then the
1964          above left it without any location set up.  But,
1965          bpstat_stop_status requires a location to be able to report
1966          stops, so make sure there's at least a dummy one.  */
1967       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1968         {
1969           struct breakpoint *base = &b->base;
1970           base->loc = allocate_bp_location (base);
1971           base->loc->pspace = frame_pspace;
1972           base->loc->address = -1;
1973           base->loc->length = -1;
1974           base->loc->watchpoint_type = -1;
1975         }
1976     }
1977   else if (!within_current_scope)
1978     {
1979       printf_filtered (_("\
1980 Watchpoint %d deleted because the program has left the block\n\
1981 in which its expression is valid.\n"),
1982                        b->base.number);
1983       watchpoint_del_at_next_stop (b);
1984     }
1985
1986   /* Restore the selected frame.  */
1987   if (frame_saved)
1988     select_frame (frame_find_by_id (saved_frame_id));
1989 }
1990
1991
1992 /* Returns 1 iff breakpoint location should be
1993    inserted in the inferior.  We don't differentiate the type of BL's owner
1994    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1995    breakpoint_ops is not defined, because in insert_bp_location,
1996    tracepoint's insert_location will not be called.  */
1997 static int
1998 should_be_inserted (struct bp_location *bl)
1999 {
2000   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2001     return 0;
2002
2003   if (bl->owner->disposition == disp_del_at_next_stop)
2004     return 0;
2005
2006   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2007     return 0;
2008
2009   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2010     return 0;
2011
2012   /* This is set for example, when we're attached to the parent of a
2013      vfork, and have detached from the child.  The child is running
2014      free, and we expect it to do an exec or exit, at which point the
2015      OS makes the parent schedulable again (and the target reports
2016      that the vfork is done).  Until the child is done with the shared
2017      memory region, do not insert breakpoints in the parent, otherwise
2018      the child could still trip on the parent's breakpoints.  Since
2019      the parent is blocked anyway, it won't miss any breakpoint.  */
2020   if (bl->pspace->breakpoints_not_allowed)
2021     return 0;
2022
2023   return 1;
2024 }
2025
2026 /* Same as should_be_inserted but does the check assuming
2027    that the location is not duplicated.  */
2028
2029 static int
2030 unduplicated_should_be_inserted (struct bp_location *bl)
2031 {
2032   int result;
2033   const int save_duplicate = bl->duplicate;
2034
2035   bl->duplicate = 0;
2036   result = should_be_inserted (bl);
2037   bl->duplicate = save_duplicate;
2038   return result;
2039 }
2040
2041 /* Parses a conditional described by an expression COND into an
2042    agent expression bytecode suitable for evaluation
2043    by the bytecode interpreter.  Return NULL if there was
2044    any error during parsing.  */
2045
2046 static struct agent_expr *
2047 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2048 {
2049   struct agent_expr *aexpr = NULL;
2050   struct cleanup *old_chain = NULL;
2051   volatile struct gdb_exception ex;
2052
2053   if (!cond)
2054     return NULL;
2055
2056   /* We don't want to stop processing, so catch any errors
2057      that may show up.  */
2058   TRY_CATCH (ex, RETURN_MASK_ERROR)
2059     {
2060       aexpr = gen_eval_for_expr (scope, cond);
2061     }
2062
2063   if (ex.reason < 0)
2064     {
2065       /* If we got here, it means the condition could not be parsed to a valid
2066          bytecode expression and thus can't be evaluated on the target's side.
2067          It's no use iterating through the conditions.  */
2068       return NULL;
2069     }
2070
2071   /* We have a valid agent expression.  */
2072   return aexpr;
2073 }
2074
2075 /* Based on location BL, create a list of breakpoint conditions to be
2076    passed on to the target.  If we have duplicated locations with different
2077    conditions, we will add such conditions to the list.  The idea is that the
2078    target will evaluate the list of conditions and will only notify GDB when
2079    one of them is true.  */
2080
2081 static void
2082 build_target_condition_list (struct bp_location *bl)
2083 {
2084   struct bp_location **locp = NULL, **loc2p;
2085   int null_condition_or_parse_error = 0;
2086   int modified = bl->needs_update;
2087   struct bp_location *loc;
2088
2089   /* This is only meaningful if the target is
2090      evaluating conditions and if the user has
2091      opted for condition evaluation on the target's
2092      side.  */
2093   if (gdb_evaluates_breakpoint_condition_p ()
2094       || !target_supports_evaluation_of_breakpoint_conditions ())
2095     return;
2096
2097   /* Do a first pass to check for locations with no assigned
2098      conditions or conditions that fail to parse to a valid agent expression
2099      bytecode.  If any of these happen, then it's no use to send conditions
2100      to the target since this location will always trigger and generate a
2101      response back to GDB.  */
2102   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2103     {
2104       loc = (*loc2p);
2105       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2106         {
2107           if (modified)
2108             {
2109               struct agent_expr *aexpr;
2110
2111               /* Re-parse the conditions since something changed.  In that
2112                  case we already freed the condition bytecodes (see
2113                  force_breakpoint_reinsertion).  We just
2114                  need to parse the condition to bytecodes again.  */
2115               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2116               loc->cond_bytecode = aexpr;
2117
2118               /* Check if we managed to parse the conditional expression
2119                  correctly.  If not, we will not send this condition
2120                  to the target.  */
2121               if (aexpr)
2122                 continue;
2123             }
2124
2125           /* If we have a NULL bytecode expression, it means something
2126              went wrong or we have a null condition expression.  */
2127           if (!loc->cond_bytecode)
2128             {
2129               null_condition_or_parse_error = 1;
2130               break;
2131             }
2132         }
2133     }
2134
2135   /* If any of these happened, it means we will have to evaluate the conditions
2136      for the location's address on gdb's side.  It is no use keeping bytecodes
2137      for all the other duplicate locations, thus we free all of them here.
2138
2139      This is so we have a finer control over which locations' conditions are
2140      being evaluated by GDB or the remote stub.  */
2141   if (null_condition_or_parse_error)
2142     {
2143       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2144         {
2145           loc = (*loc2p);
2146           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2147             {
2148               /* Only go as far as the first NULL bytecode is
2149                  located.  */
2150               if (!loc->cond_bytecode)
2151                 return;
2152
2153               free_agent_expr (loc->cond_bytecode);
2154               loc->cond_bytecode = NULL;
2155             }
2156         }
2157     }
2158
2159   /* No NULL conditions or failed bytecode generation.  Build a condition list
2160      for this location's address.  */
2161   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2162     {
2163       loc = (*loc2p);
2164       if (loc->cond
2165           && is_breakpoint (loc->owner)
2166           && loc->pspace->num == bl->pspace->num
2167           && loc->owner->enable_state == bp_enabled
2168           && loc->enabled)
2169         /* Add the condition to the vector.  This will be used later to send the
2170            conditions to the target.  */
2171         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2172                        loc->cond_bytecode);
2173     }
2174
2175   return;
2176 }
2177
2178 /* Parses a command described by string CMD into an agent expression
2179    bytecode suitable for evaluation by the bytecode interpreter.
2180    Return NULL if there was any error during parsing.  */
2181
2182 static struct agent_expr *
2183 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2184 {
2185   struct cleanup *old_cleanups = 0;
2186   struct expression *expr, **argvec;
2187   struct agent_expr *aexpr = NULL;
2188   struct cleanup *old_chain = NULL;
2189   volatile struct gdb_exception ex;
2190   const char *cmdrest;
2191   const char *format_start, *format_end;
2192   struct format_piece *fpieces;
2193   int nargs;
2194   struct gdbarch *gdbarch = get_current_arch ();
2195
2196   if (!cmd)
2197     return NULL;
2198
2199   cmdrest = cmd;
2200
2201   if (*cmdrest == ',')
2202     ++cmdrest;
2203   cmdrest = skip_spaces_const (cmdrest);
2204
2205   if (*cmdrest++ != '"')
2206     error (_("No format string following the location"));
2207
2208   format_start = cmdrest;
2209
2210   fpieces = parse_format_string (&cmdrest);
2211
2212   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2213
2214   format_end = cmdrest;
2215
2216   if (*cmdrest++ != '"')
2217     error (_("Bad format string, non-terminated '\"'."));
2218   
2219   cmdrest = skip_spaces_const (cmdrest);
2220
2221   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2222     error (_("Invalid argument syntax"));
2223
2224   if (*cmdrest == ',')
2225     cmdrest++;
2226   cmdrest = skip_spaces_const (cmdrest);
2227
2228   /* For each argument, make an expression.  */
2229
2230   argvec = (struct expression **) alloca (strlen (cmd)
2231                                          * sizeof (struct expression *));
2232
2233   nargs = 0;
2234   while (*cmdrest != '\0')
2235     {
2236       const char *cmd1;
2237
2238       cmd1 = cmdrest;
2239       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2240       argvec[nargs++] = expr;
2241       cmdrest = cmd1;
2242       if (*cmdrest == ',')
2243         ++cmdrest;
2244     }
2245
2246   /* We don't want to stop processing, so catch any errors
2247      that may show up.  */
2248   TRY_CATCH (ex, RETURN_MASK_ERROR)
2249     {
2250       aexpr = gen_printf (scope, gdbarch, 0, 0,
2251                           format_start, format_end - format_start,
2252                           fpieces, nargs, argvec);
2253     }
2254
2255   if (ex.reason < 0)
2256     {
2257       /* If we got here, it means the command could not be parsed to a valid
2258          bytecode expression and thus can't be evaluated on the target's side.
2259          It's no use iterating through the other commands.  */
2260       return NULL;
2261     }
2262
2263   do_cleanups (old_cleanups);
2264
2265   /* We have a valid agent expression, return it.  */
2266   return aexpr;
2267 }
2268
2269 /* Based on location BL, create a list of breakpoint commands to be
2270    passed on to the target.  If we have duplicated locations with
2271    different commands, we will add any such to the list.  */
2272
2273 static void
2274 build_target_command_list (struct bp_location *bl)
2275 {
2276   struct bp_location **locp = NULL, **loc2p;
2277   int null_command_or_parse_error = 0;
2278   int modified = bl->needs_update;
2279   struct bp_location *loc;
2280
2281   /* For now, limit to agent-style dprintf breakpoints.  */
2282   if (bl->owner->type != bp_dprintf
2283       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2284     return;
2285
2286   if (!target_can_run_breakpoint_commands ())
2287     return;
2288
2289   /* Do a first pass to check for locations with no assigned
2290      conditions or conditions that fail to parse to a valid agent expression
2291      bytecode.  If any of these happen, then it's no use to send conditions
2292      to the target since this location will always trigger and generate a
2293      response back to GDB.  */
2294   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2295     {
2296       loc = (*loc2p);
2297       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2298         {
2299           if (modified)
2300             {
2301               struct agent_expr *aexpr;
2302
2303               /* Re-parse the commands since something changed.  In that
2304                  case we already freed the command bytecodes (see
2305                  force_breakpoint_reinsertion).  We just
2306                  need to parse the command to bytecodes again.  */
2307               aexpr = parse_cmd_to_aexpr (bl->address,
2308                                           loc->owner->extra_string);
2309               loc->cmd_bytecode = aexpr;
2310
2311               if (!aexpr)
2312                 continue;
2313             }
2314
2315           /* If we have a NULL bytecode expression, it means something
2316              went wrong or we have a null command expression.  */
2317           if (!loc->cmd_bytecode)
2318             {
2319               null_command_or_parse_error = 1;
2320               break;
2321             }
2322         }
2323     }
2324
2325   /* If anything failed, then we're not doing target-side commands,
2326      and so clean up.  */
2327   if (null_command_or_parse_error)
2328     {
2329       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2330         {
2331           loc = (*loc2p);
2332           if (is_breakpoint (loc->owner)
2333               && loc->pspace->num == bl->pspace->num)
2334             {
2335               /* Only go as far as the first NULL bytecode is
2336                  located.  */
2337               if (!loc->cond_bytecode)
2338                 return;
2339
2340               free_agent_expr (loc->cond_bytecode);
2341               loc->cond_bytecode = NULL;
2342             }
2343         }
2344     }
2345
2346   /* No NULL commands or failed bytecode generation.  Build a command list
2347      for this location's address.  */
2348   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2349     {
2350       loc = (*loc2p);
2351       if (loc->owner->extra_string
2352           && is_breakpoint (loc->owner)
2353           && loc->pspace->num == bl->pspace->num
2354           && loc->owner->enable_state == bp_enabled
2355           && loc->enabled)
2356         /* Add the command to the vector.  This will be used later
2357            to send the commands to the target.  */
2358         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2359                        loc->cmd_bytecode);
2360     }
2361
2362   bl->target_info.persist = 0;
2363   /* Maybe flag this location as persistent.  */
2364   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2365     bl->target_info.persist = 1;
2366 }
2367
2368 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2369    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2370    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2371    Returns 0 for success, 1 if the bp_location type is not supported or
2372    -1 for failure.
2373
2374    NOTE drow/2003-09-09: This routine could be broken down to an
2375    object-style method for each breakpoint or catchpoint type.  */
2376 static int
2377 insert_bp_location (struct bp_location *bl,
2378                     struct ui_file *tmp_error_stream,
2379                     int *disabled_breaks,
2380                     int *hw_breakpoint_error,
2381                     int *hw_bp_error_explained_already)
2382 {
2383   int val = 0;
2384   char *hw_bp_err_string = NULL;
2385   struct gdb_exception e;
2386
2387   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2388     return 0;
2389
2390   /* Note we don't initialize bl->target_info, as that wipes out
2391      the breakpoint location's shadow_contents if the breakpoint
2392      is still inserted at that location.  This in turn breaks
2393      target_read_memory which depends on these buffers when
2394      a memory read is requested at the breakpoint location:
2395      Once the target_info has been wiped, we fail to see that
2396      we have a breakpoint inserted at that address and thus
2397      read the breakpoint instead of returning the data saved in
2398      the breakpoint location's shadow contents.  */
2399   bl->target_info.placed_address = bl->address;
2400   bl->target_info.placed_address_space = bl->pspace->aspace;
2401   bl->target_info.length = bl->length;
2402
2403   /* When working with target-side conditions, we must pass all the conditions
2404      for the same breakpoint address down to the target since GDB will not
2405      insert those locations.  With a list of breakpoint conditions, the target
2406      can decide when to stop and notify GDB.  */
2407
2408   if (is_breakpoint (bl->owner))
2409     {
2410       build_target_condition_list (bl);
2411       build_target_command_list (bl);
2412       /* Reset the modification marker.  */
2413       bl->needs_update = 0;
2414     }
2415
2416   if (bl->loc_type == bp_loc_software_breakpoint
2417       || bl->loc_type == bp_loc_hardware_breakpoint)
2418     {
2419       if (bl->owner->type != bp_hardware_breakpoint)
2420         {
2421           /* If the explicitly specified breakpoint type
2422              is not hardware breakpoint, check the memory map to see
2423              if the breakpoint address is in read only memory or not.
2424
2425              Two important cases are:
2426              - location type is not hardware breakpoint, memory
2427              is readonly.  We change the type of the location to
2428              hardware breakpoint.
2429              - location type is hardware breakpoint, memory is
2430              read-write.  This means we've previously made the
2431              location hardware one, but then the memory map changed,
2432              so we undo.
2433              
2434              When breakpoints are removed, remove_breakpoints will use
2435              location types we've just set here, the only possible
2436              problem is that memory map has changed during running
2437              program, but it's not going to work anyway with current
2438              gdb.  */
2439           struct mem_region *mr 
2440             = lookup_mem_region (bl->target_info.placed_address);
2441           
2442           if (mr)
2443             {
2444               if (automatic_hardware_breakpoints)
2445                 {
2446                   enum bp_loc_type new_type;
2447                   
2448                   if (mr->attrib.mode != MEM_RW)
2449                     new_type = bp_loc_hardware_breakpoint;
2450                   else 
2451                     new_type = bp_loc_software_breakpoint;
2452                   
2453                   if (new_type != bl->loc_type)
2454                     {
2455                       static int said = 0;
2456
2457                       bl->loc_type = new_type;
2458                       if (!said)
2459                         {
2460                           fprintf_filtered (gdb_stdout,
2461                                             _("Note: automatically using "
2462                                               "hardware breakpoints for "
2463                                               "read-only addresses.\n"));
2464                           said = 1;
2465                         }
2466                     }
2467                 }
2468               else if (bl->loc_type == bp_loc_software_breakpoint
2469                        && mr->attrib.mode != MEM_RW)        
2470                 warning (_("cannot set software breakpoint "
2471                            "at readonly address %s"),
2472                          paddress (bl->gdbarch, bl->address));
2473             }
2474         }
2475         
2476       /* First check to see if we have to handle an overlay.  */
2477       if (overlay_debugging == ovly_off
2478           || bl->section == NULL
2479           || !(section_is_overlay (bl->section)))
2480         {
2481           /* No overlay handling: just set the breakpoint.  */
2482           TRY_CATCH (e, RETURN_MASK_ALL)
2483             {
2484               val = bl->owner->ops->insert_location (bl);
2485             }
2486           if (e.reason < 0)
2487             {
2488               val = 1;
2489               hw_bp_err_string = (char *) e.message;
2490             }
2491         }
2492       else
2493         {
2494           /* This breakpoint is in an overlay section.
2495              Shall we set a breakpoint at the LMA?  */
2496           if (!overlay_events_enabled)
2497             {
2498               /* Yes -- overlay event support is not active, 
2499                  so we must try to set a breakpoint at the LMA.
2500                  This will not work for a hardware breakpoint.  */
2501               if (bl->loc_type == bp_loc_hardware_breakpoint)
2502                 warning (_("hardware breakpoint %d not supported in overlay!"),
2503                          bl->owner->number);
2504               else
2505                 {
2506                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2507                                                              bl->section);
2508                   /* Set a software (trap) breakpoint at the LMA.  */
2509                   bl->overlay_target_info = bl->target_info;
2510                   bl->overlay_target_info.placed_address = addr;
2511                   val = target_insert_breakpoint (bl->gdbarch,
2512                                                   &bl->overlay_target_info);
2513                   if (val != 0)
2514                     fprintf_unfiltered (tmp_error_stream,
2515                                         "Overlay breakpoint %d "
2516                                         "failed: in ROM?\n",
2517                                         bl->owner->number);
2518                 }
2519             }
2520           /* Shall we set a breakpoint at the VMA? */
2521           if (section_is_mapped (bl->section))
2522             {
2523               /* Yes.  This overlay section is mapped into memory.  */
2524               TRY_CATCH (e, RETURN_MASK_ALL)
2525                 {
2526                   val = bl->owner->ops->insert_location (bl);
2527                 }
2528               if (e.reason < 0)
2529                 {
2530                   val = 1;
2531                   hw_bp_err_string = (char *) e.message;
2532                 }
2533             }
2534           else
2535             {
2536               /* No.  This breakpoint will not be inserted.  
2537                  No error, but do not mark the bp as 'inserted'.  */
2538               return 0;
2539             }
2540         }
2541
2542       if (val)
2543         {
2544           /* Can't set the breakpoint.  */
2545           if (solib_name_from_address (bl->pspace, bl->address))
2546             {
2547               /* See also: disable_breakpoints_in_shlibs.  */
2548               val = 0;
2549               bl->shlib_disabled = 1;
2550               observer_notify_breakpoint_modified (bl->owner);
2551               if (!*disabled_breaks)
2552                 {
2553                   fprintf_unfiltered (tmp_error_stream, 
2554                                       "Cannot insert breakpoint %d.\n", 
2555                                       bl->owner->number);
2556                   fprintf_unfiltered (tmp_error_stream, 
2557                                       "Temporarily disabling shared "
2558                                       "library breakpoints:\n");
2559                 }
2560               *disabled_breaks = 1;
2561               fprintf_unfiltered (tmp_error_stream,
2562                                   "breakpoint #%d\n", bl->owner->number);
2563             }
2564           else
2565             {
2566               if (bl->loc_type == bp_loc_hardware_breakpoint)
2567                 {
2568                   *hw_breakpoint_error = 1;
2569                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2570                   fprintf_unfiltered (tmp_error_stream,
2571                                       "Cannot insert hardware breakpoint %d%s",
2572                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2573                   if (hw_bp_err_string)
2574                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2575                 }
2576               else
2577                 {
2578                   fprintf_unfiltered (tmp_error_stream, 
2579                                       "Cannot insert breakpoint %d.\n", 
2580                                       bl->owner->number);
2581                   fprintf_filtered (tmp_error_stream, 
2582                                     "Error accessing memory address ");
2583                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2584                                   tmp_error_stream);
2585                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2586                                     safe_strerror (val));
2587                 }
2588
2589             }
2590         }
2591       else
2592         bl->inserted = 1;
2593
2594       return val;
2595     }
2596
2597   else if (bl->loc_type == bp_loc_hardware_watchpoint
2598            /* NOTE drow/2003-09-08: This state only exists for removing
2599               watchpoints.  It's not clear that it's necessary...  */
2600            && bl->owner->disposition != disp_del_at_next_stop)
2601     {
2602       gdb_assert (bl->owner->ops != NULL
2603                   && bl->owner->ops->insert_location != NULL);
2604
2605       val = bl->owner->ops->insert_location (bl);
2606
2607       /* If trying to set a read-watchpoint, and it turns out it's not
2608          supported, try emulating one with an access watchpoint.  */
2609       if (val == 1 && bl->watchpoint_type == hw_read)
2610         {
2611           struct bp_location *loc, **loc_temp;
2612
2613           /* But don't try to insert it, if there's already another
2614              hw_access location that would be considered a duplicate
2615              of this one.  */
2616           ALL_BP_LOCATIONS (loc, loc_temp)
2617             if (loc != bl
2618                 && loc->watchpoint_type == hw_access
2619                 && watchpoint_locations_match (bl, loc))
2620               {
2621                 bl->duplicate = 1;
2622                 bl->inserted = 1;
2623                 bl->target_info = loc->target_info;
2624                 bl->watchpoint_type = hw_access;
2625                 val = 0;
2626                 break;
2627               }
2628
2629           if (val == 1)
2630             {
2631               bl->watchpoint_type = hw_access;
2632               val = bl->owner->ops->insert_location (bl);
2633
2634               if (val)
2635                 /* Back to the original value.  */
2636                 bl->watchpoint_type = hw_read;
2637             }
2638         }
2639
2640       bl->inserted = (val == 0);
2641     }
2642
2643   else if (bl->owner->type == bp_catchpoint)
2644     {
2645       gdb_assert (bl->owner->ops != NULL
2646                   && bl->owner->ops->insert_location != NULL);
2647
2648       val = bl->owner->ops->insert_location (bl);
2649       if (val)
2650         {
2651           bl->owner->enable_state = bp_disabled;
2652
2653           if (val == 1)
2654             warning (_("\
2655 Error inserting catchpoint %d: Your system does not support this type\n\
2656 of catchpoint."), bl->owner->number);
2657           else
2658             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2659         }
2660
2661       bl->inserted = (val == 0);
2662
2663       /* We've already printed an error message if there was a problem
2664          inserting this catchpoint, and we've disabled the catchpoint,
2665          so just return success.  */
2666       return 0;
2667     }
2668
2669   return 0;
2670 }
2671
2672 /* This function is called when program space PSPACE is about to be
2673    deleted.  It takes care of updating breakpoints to not reference
2674    PSPACE anymore.  */
2675
2676 void
2677 breakpoint_program_space_exit (struct program_space *pspace)
2678 {
2679   struct breakpoint *b, *b_temp;
2680   struct bp_location *loc, **loc_temp;
2681
2682   /* Remove any breakpoint that was set through this program space.  */
2683   ALL_BREAKPOINTS_SAFE (b, b_temp)
2684     {
2685       if (b->pspace == pspace)
2686         delete_breakpoint (b);
2687     }
2688
2689   /* Breakpoints set through other program spaces could have locations
2690      bound to PSPACE as well.  Remove those.  */
2691   ALL_BP_LOCATIONS (loc, loc_temp)
2692     {
2693       struct bp_location *tmp;
2694
2695       if (loc->pspace == pspace)
2696         {
2697           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2698           if (loc->owner->loc == loc)
2699             loc->owner->loc = loc->next;
2700           else
2701             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2702               if (tmp->next == loc)
2703                 {
2704                   tmp->next = loc->next;
2705                   break;
2706                 }
2707         }
2708     }
2709
2710   /* Now update the global location list to permanently delete the
2711      removed locations above.  */
2712   update_global_location_list (0);
2713 }
2714
2715 /* Make sure all breakpoints are inserted in inferior.
2716    Throws exception on any error.
2717    A breakpoint that is already inserted won't be inserted
2718    again, so calling this function twice is safe.  */
2719 void
2720 insert_breakpoints (void)
2721 {
2722   struct breakpoint *bpt;
2723
2724   ALL_BREAKPOINTS (bpt)
2725     if (is_hardware_watchpoint (bpt))
2726       {
2727         struct watchpoint *w = (struct watchpoint *) bpt;
2728
2729         update_watchpoint (w, 0 /* don't reparse.  */);
2730       }
2731
2732   update_global_location_list (1);
2733
2734   /* update_global_location_list does not insert breakpoints when
2735      always_inserted_mode is not enabled.  Explicitly insert them
2736      now.  */
2737   if (!breakpoints_always_inserted_mode ())
2738     insert_breakpoint_locations ();
2739 }
2740
2741 /* Invoke CALLBACK for each of bp_location.  */
2742
2743 void
2744 iterate_over_bp_locations (walk_bp_location_callback callback)
2745 {
2746   struct bp_location *loc, **loc_tmp;
2747
2748   ALL_BP_LOCATIONS (loc, loc_tmp)
2749     {
2750       callback (loc, NULL);
2751     }
2752 }
2753
2754 /* This is used when we need to synch breakpoint conditions between GDB and the
2755    target.  It is the case with deleting and disabling of breakpoints when using
2756    always-inserted mode.  */
2757
2758 static void
2759 update_inserted_breakpoint_locations (void)
2760 {
2761   struct bp_location *bl, **blp_tmp;
2762   int error_flag = 0;
2763   int val = 0;
2764   int disabled_breaks = 0;
2765   int hw_breakpoint_error = 0;
2766   int hw_bp_details_reported = 0;
2767
2768   struct ui_file *tmp_error_stream = mem_fileopen ();
2769   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2770
2771   /* Explicitly mark the warning -- this will only be printed if
2772      there was an error.  */
2773   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2774
2775   save_current_space_and_thread ();
2776
2777   ALL_BP_LOCATIONS (bl, blp_tmp)
2778     {
2779       /* We only want to update software breakpoints and hardware
2780          breakpoints.  */
2781       if (!is_breakpoint (bl->owner))
2782         continue;
2783
2784       /* We only want to update locations that are already inserted
2785          and need updating.  This is to avoid unwanted insertion during
2786          deletion of breakpoints.  */
2787       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2788         continue;
2789
2790       switch_to_program_space_and_thread (bl->pspace);
2791
2792       /* For targets that support global breakpoints, there's no need
2793          to select an inferior to insert breakpoint to.  In fact, even
2794          if we aren't attached to any process yet, we should still
2795          insert breakpoints.  */
2796       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2797           && ptid_equal (inferior_ptid, null_ptid))
2798         continue;
2799
2800       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2801                                     &hw_breakpoint_error, &hw_bp_details_reported);
2802       if (val)
2803         error_flag = val;
2804     }
2805
2806   if (error_flag)
2807     {
2808       target_terminal_ours_for_output ();
2809       error_stream (tmp_error_stream);
2810     }
2811
2812   do_cleanups (cleanups);
2813 }
2814
2815 /* Used when starting or continuing the program.  */
2816
2817 static void
2818 insert_breakpoint_locations (void)
2819 {
2820   struct breakpoint *bpt;
2821   struct bp_location *bl, **blp_tmp;
2822   int error_flag = 0;
2823   int val = 0;
2824   int disabled_breaks = 0;
2825   int hw_breakpoint_error = 0;
2826   int hw_bp_error_explained_already = 0;
2827
2828   struct ui_file *tmp_error_stream = mem_fileopen ();
2829   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2830   
2831   /* Explicitly mark the warning -- this will only be printed if
2832      there was an error.  */
2833   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2834
2835   save_current_space_and_thread ();
2836
2837   ALL_BP_LOCATIONS (bl, blp_tmp)
2838     {
2839       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2840         continue;
2841
2842       /* There is no point inserting thread-specific breakpoints if
2843          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2844          has BL->OWNER always non-NULL.  */
2845       if (bl->owner->thread != -1
2846           && !valid_thread_id (bl->owner->thread))
2847         continue;
2848
2849       switch_to_program_space_and_thread (bl->pspace);
2850
2851       /* For targets that support global breakpoints, there's no need
2852          to select an inferior to insert breakpoint to.  In fact, even
2853          if we aren't attached to any process yet, we should still
2854          insert breakpoints.  */
2855       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2856           && ptid_equal (inferior_ptid, null_ptid))
2857         continue;
2858
2859       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2860                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2861       if (val)
2862         error_flag = val;
2863     }
2864
2865   /* If we failed to insert all locations of a watchpoint, remove
2866      them, as half-inserted watchpoint is of limited use.  */
2867   ALL_BREAKPOINTS (bpt)  
2868     {
2869       int some_failed = 0;
2870       struct bp_location *loc;
2871
2872       if (!is_hardware_watchpoint (bpt))
2873         continue;
2874
2875       if (!breakpoint_enabled (bpt))
2876         continue;
2877
2878       if (bpt->disposition == disp_del_at_next_stop)
2879         continue;
2880       
2881       for (loc = bpt->loc; loc; loc = loc->next)
2882         if (!loc->inserted && should_be_inserted (loc))
2883           {
2884             some_failed = 1;
2885             break;
2886           }
2887       if (some_failed)
2888         {
2889           for (loc = bpt->loc; loc; loc = loc->next)
2890             if (loc->inserted)
2891               remove_breakpoint (loc, mark_uninserted);
2892
2893           hw_breakpoint_error = 1;
2894           fprintf_unfiltered (tmp_error_stream,
2895                               "Could not insert hardware watchpoint %d.\n", 
2896                               bpt->number);
2897           error_flag = -1;
2898         }
2899     }
2900
2901   if (error_flag)
2902     {
2903       /* If a hardware breakpoint or watchpoint was inserted, add a
2904          message about possibly exhausted resources.  */
2905       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2906         {
2907           fprintf_unfiltered (tmp_error_stream, 
2908                               "Could not insert hardware breakpoints:\n\
2909 You may have requested too many hardware breakpoints/watchpoints.\n");
2910         }
2911       target_terminal_ours_for_output ();
2912       error_stream (tmp_error_stream);
2913     }
2914
2915   do_cleanups (cleanups);
2916 }
2917
2918 /* Used when the program stops.
2919    Returns zero if successful, or non-zero if there was a problem
2920    removing a breakpoint location.  */
2921
2922 int
2923 remove_breakpoints (void)
2924 {
2925   struct bp_location *bl, **blp_tmp;
2926   int val = 0;
2927
2928   ALL_BP_LOCATIONS (bl, blp_tmp)
2929   {
2930     if (bl->inserted && !is_tracepoint (bl->owner))
2931       val |= remove_breakpoint (bl, mark_uninserted);
2932   }
2933   return val;
2934 }
2935
2936 /* Remove breakpoints of process PID.  */
2937
2938 int
2939 remove_breakpoints_pid (int pid)
2940 {
2941   struct bp_location *bl, **blp_tmp;
2942   int val;
2943   struct inferior *inf = find_inferior_pid (pid);
2944
2945   ALL_BP_LOCATIONS (bl, blp_tmp)
2946   {
2947     if (bl->pspace != inf->pspace)
2948       continue;
2949
2950     if (bl->owner->type == bp_dprintf)
2951       continue;
2952
2953     if (bl->inserted)
2954       {
2955         val = remove_breakpoint (bl, mark_uninserted);
2956         if (val != 0)
2957           return val;
2958       }
2959   }
2960   return 0;
2961 }
2962
2963 int
2964 reattach_breakpoints (int pid)
2965 {
2966   struct cleanup *old_chain;
2967   struct bp_location *bl, **blp_tmp;
2968   int val;
2969   struct ui_file *tmp_error_stream;
2970   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2971   struct inferior *inf;
2972   struct thread_info *tp;
2973
2974   tp = any_live_thread_of_process (pid);
2975   if (tp == NULL)
2976     return 1;
2977
2978   inf = find_inferior_pid (pid);
2979   old_chain = save_inferior_ptid ();
2980
2981   inferior_ptid = tp->ptid;
2982
2983   tmp_error_stream = mem_fileopen ();
2984   make_cleanup_ui_file_delete (tmp_error_stream);
2985
2986   ALL_BP_LOCATIONS (bl, blp_tmp)
2987   {
2988     if (bl->pspace != inf->pspace)
2989       continue;
2990
2991     if (bl->inserted)
2992       {
2993         bl->inserted = 0;
2994         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2995         if (val != 0)
2996           {
2997             do_cleanups (old_chain);
2998             return val;
2999           }
3000       }
3001   }
3002   do_cleanups (old_chain);
3003   return 0;
3004 }
3005
3006 static int internal_breakpoint_number = -1;
3007
3008 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3009    If INTERNAL is non-zero, the breakpoint number will be populated
3010    from internal_breakpoint_number and that variable decremented.
3011    Otherwise the breakpoint number will be populated from
3012    breakpoint_count and that value incremented.  Internal breakpoints
3013    do not set the internal var bpnum.  */
3014 static void
3015 set_breakpoint_number (int internal, struct breakpoint *b)
3016 {
3017   if (internal)
3018     b->number = internal_breakpoint_number--;
3019   else
3020     {
3021       set_breakpoint_count (breakpoint_count + 1);
3022       b->number = breakpoint_count;
3023     }
3024 }
3025
3026 static struct breakpoint *
3027 create_internal_breakpoint (struct gdbarch *gdbarch,
3028                             CORE_ADDR address, enum bptype type,
3029                             const struct breakpoint_ops *ops)
3030 {
3031   struct symtab_and_line sal;
3032   struct breakpoint *b;
3033
3034   init_sal (&sal);              /* Initialize to zeroes.  */
3035
3036   sal.pc = address;
3037   sal.section = find_pc_overlay (sal.pc);
3038   sal.pspace = current_program_space;
3039
3040   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3041   b->number = internal_breakpoint_number--;
3042   b->disposition = disp_donttouch;
3043
3044   return b;
3045 }
3046
3047 static const char *const longjmp_names[] =
3048   {
3049     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3050   };
3051 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3052
3053 /* Per-objfile data private to breakpoint.c.  */
3054 struct breakpoint_objfile_data
3055 {
3056   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3057   struct minimal_symbol *overlay_msym;
3058
3059   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3060   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3061
3062   /* True if we have looked for longjmp probes.  */
3063   int longjmp_searched;
3064
3065   /* SystemTap probe points for longjmp (if any).  */
3066   VEC (probe_p) *longjmp_probes;
3067
3068   /* Minimal symbol for "std::terminate()" (if any).  */
3069   struct minimal_symbol *terminate_msym;
3070
3071   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3072   struct minimal_symbol *exception_msym;
3073
3074   /* True if we have looked for exception probes.  */
3075   int exception_searched;
3076
3077   /* SystemTap probe points for unwinding (if any).  */
3078   VEC (probe_p) *exception_probes;
3079 };
3080
3081 static const struct objfile_data *breakpoint_objfile_key;
3082
3083 /* Minimal symbol not found sentinel.  */
3084 static struct minimal_symbol msym_not_found;
3085
3086 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3087
3088 static int
3089 msym_not_found_p (const struct minimal_symbol *msym)
3090 {
3091   return msym == &msym_not_found;
3092 }
3093
3094 /* Return per-objfile data needed by breakpoint.c.
3095    Allocate the data if necessary.  */
3096
3097 static struct breakpoint_objfile_data *
3098 get_breakpoint_objfile_data (struct objfile *objfile)
3099 {
3100   struct breakpoint_objfile_data *bp_objfile_data;
3101
3102   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3103   if (bp_objfile_data == NULL)
3104     {
3105       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3106                                        sizeof (*bp_objfile_data));
3107
3108       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3109       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3110     }
3111   return bp_objfile_data;
3112 }
3113
3114 static void
3115 free_breakpoint_probes (struct objfile *obj, void *data)
3116 {
3117   struct breakpoint_objfile_data *bp_objfile_data = data;
3118
3119   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3120   VEC_free (probe_p, bp_objfile_data->exception_probes);
3121 }
3122
3123 static void
3124 create_overlay_event_breakpoint (void)
3125 {
3126   struct objfile *objfile;
3127   const char *const func_name = "_ovly_debug_event";
3128
3129   ALL_OBJFILES (objfile)
3130     {
3131       struct breakpoint *b;
3132       struct breakpoint_objfile_data *bp_objfile_data;
3133       CORE_ADDR addr;
3134
3135       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3136
3137       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3138         continue;
3139
3140       if (bp_objfile_data->overlay_msym == NULL)
3141         {
3142           struct minimal_symbol *m;
3143
3144           m = lookup_minimal_symbol_text (func_name, objfile);
3145           if (m == NULL)
3146             {
3147               /* Avoid future lookups in this objfile.  */
3148               bp_objfile_data->overlay_msym = &msym_not_found;
3149               continue;
3150             }
3151           bp_objfile_data->overlay_msym = m;
3152         }
3153
3154       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3155       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3156                                       bp_overlay_event,
3157                                       &internal_breakpoint_ops);
3158       b->addr_string = xstrdup (func_name);
3159
3160       if (overlay_debugging == ovly_auto)
3161         {
3162           b->enable_state = bp_enabled;
3163           overlay_events_enabled = 1;
3164         }
3165       else
3166        {
3167          b->enable_state = bp_disabled;
3168          overlay_events_enabled = 0;
3169        }
3170     }
3171   update_global_location_list (1);
3172 }
3173
3174 static void
3175 create_longjmp_master_breakpoint (void)
3176 {
3177   struct program_space *pspace;
3178   struct cleanup *old_chain;
3179
3180   old_chain = save_current_program_space ();
3181
3182   ALL_PSPACES (pspace)
3183   {
3184     struct objfile *objfile;
3185
3186     set_current_program_space (pspace);
3187
3188     ALL_OBJFILES (objfile)
3189     {
3190       int i;
3191       struct gdbarch *gdbarch;
3192       struct breakpoint_objfile_data *bp_objfile_data;
3193
3194       gdbarch = get_objfile_arch (objfile);
3195       if (!gdbarch_get_longjmp_target_p (gdbarch))
3196         continue;
3197
3198       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3199
3200       if (!bp_objfile_data->longjmp_searched)
3201         {
3202           bp_objfile_data->longjmp_probes
3203             = find_probes_in_objfile (objfile, "libc", "longjmp");
3204           bp_objfile_data->longjmp_searched = 1;
3205         }
3206
3207       if (bp_objfile_data->longjmp_probes != NULL)
3208         {
3209           int i;
3210           struct probe *probe;
3211           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3212
3213           for (i = 0;
3214                VEC_iterate (probe_p,
3215                             bp_objfile_data->longjmp_probes,
3216                             i, probe);
3217                ++i)
3218             {
3219               struct breakpoint *b;
3220
3221               b = create_internal_breakpoint (gdbarch, probe->address,
3222                                               bp_longjmp_master,
3223                                               &internal_breakpoint_ops);
3224               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3225               b->enable_state = bp_disabled;
3226             }
3227
3228           continue;
3229         }
3230
3231       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3232         {
3233           struct breakpoint *b;
3234           const char *func_name;
3235           CORE_ADDR addr;
3236
3237           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3238             continue;
3239
3240           func_name = longjmp_names[i];
3241           if (bp_objfile_data->longjmp_msym[i] == NULL)
3242             {
3243               struct minimal_symbol *m;
3244
3245               m = lookup_minimal_symbol_text (func_name, objfile);
3246               if (m == NULL)
3247                 {
3248                   /* Prevent future lookups in this objfile.  */
3249                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3250                   continue;
3251                 }
3252               bp_objfile_data->longjmp_msym[i] = m;
3253             }
3254
3255           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3256           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3257                                           &internal_breakpoint_ops);
3258           b->addr_string = xstrdup (func_name);
3259           b->enable_state = bp_disabled;
3260         }
3261     }
3262   }
3263   update_global_location_list (1);
3264
3265   do_cleanups (old_chain);
3266 }
3267
3268 /* Create a master std::terminate breakpoint.  */
3269 static void
3270 create_std_terminate_master_breakpoint (void)
3271 {
3272   struct program_space *pspace;
3273   struct cleanup *old_chain;
3274   const char *const func_name = "std::terminate()";
3275
3276   old_chain = save_current_program_space ();
3277
3278   ALL_PSPACES (pspace)
3279   {
3280     struct objfile *objfile;
3281     CORE_ADDR addr;
3282
3283     set_current_program_space (pspace);
3284
3285     ALL_OBJFILES (objfile)
3286     {
3287       struct breakpoint *b;
3288       struct breakpoint_objfile_data *bp_objfile_data;
3289
3290       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3291
3292       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3293         continue;
3294
3295       if (bp_objfile_data->terminate_msym == NULL)
3296         {
3297           struct minimal_symbol *m;
3298
3299           m = lookup_minimal_symbol (func_name, NULL, objfile);
3300           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3301                             && MSYMBOL_TYPE (m) != mst_file_text))
3302             {
3303               /* Prevent future lookups in this objfile.  */
3304               bp_objfile_data->terminate_msym = &msym_not_found;
3305               continue;
3306             }
3307           bp_objfile_data->terminate_msym = m;
3308         }
3309
3310       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3311       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3312                                       bp_std_terminate_master,
3313                                       &internal_breakpoint_ops);
3314       b->addr_string = xstrdup (func_name);
3315       b->enable_state = bp_disabled;
3316     }
3317   }
3318
3319   update_global_location_list (1);
3320
3321   do_cleanups (old_chain);
3322 }
3323
3324 /* Install a master breakpoint on the unwinder's debug hook.  */
3325
3326 static void
3327 create_exception_master_breakpoint (void)
3328 {
3329   struct objfile *objfile;
3330   const char *const func_name = "_Unwind_DebugHook";
3331
3332   ALL_OBJFILES (objfile)
3333     {
3334       struct breakpoint *b;
3335       struct gdbarch *gdbarch;
3336       struct breakpoint_objfile_data *bp_objfile_data;
3337       CORE_ADDR addr;
3338
3339       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3340
3341       /* We prefer the SystemTap probe point if it exists.  */
3342       if (!bp_objfile_data->exception_searched)
3343         {
3344           bp_objfile_data->exception_probes
3345             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3346           bp_objfile_data->exception_searched = 1;
3347         }
3348
3349       if (bp_objfile_data->exception_probes != NULL)
3350         {
3351           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3352           int i;
3353           struct probe *probe;
3354
3355           for (i = 0;
3356                VEC_iterate (probe_p,
3357                             bp_objfile_data->exception_probes,
3358                             i, probe);
3359                ++i)
3360             {
3361               struct breakpoint *b;
3362
3363               b = create_internal_breakpoint (gdbarch, probe->address,
3364                                               bp_exception_master,
3365                                               &internal_breakpoint_ops);
3366               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3367               b->enable_state = bp_disabled;
3368             }
3369
3370           continue;
3371         }
3372
3373       /* Otherwise, try the hook function.  */
3374
3375       if (msym_not_found_p (bp_objfile_data->exception_msym))
3376         continue;
3377
3378       gdbarch = get_objfile_arch (objfile);
3379
3380       if (bp_objfile_data->exception_msym == NULL)
3381         {
3382           struct minimal_symbol *debug_hook;
3383
3384           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3385           if (debug_hook == NULL)
3386             {
3387               bp_objfile_data->exception_msym = &msym_not_found;
3388               continue;
3389             }
3390
3391           bp_objfile_data->exception_msym = debug_hook;
3392         }
3393
3394       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3395       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3396                                                  &current_target);
3397       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3398                                       &internal_breakpoint_ops);
3399       b->addr_string = xstrdup (func_name);
3400       b->enable_state = bp_disabled;
3401     }
3402
3403   update_global_location_list (1);
3404 }
3405
3406 void
3407 update_breakpoints_after_exec (void)
3408 {
3409   struct breakpoint *b, *b_tmp;
3410   struct bp_location *bploc, **bplocp_tmp;
3411
3412   /* We're about to delete breakpoints from GDB's lists.  If the
3413      INSERTED flag is true, GDB will try to lift the breakpoints by
3414      writing the breakpoints' "shadow contents" back into memory.  The
3415      "shadow contents" are NOT valid after an exec, so GDB should not
3416      do that.  Instead, the target is responsible from marking
3417      breakpoints out as soon as it detects an exec.  We don't do that
3418      here instead, because there may be other attempts to delete
3419      breakpoints after detecting an exec and before reaching here.  */
3420   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3421     if (bploc->pspace == current_program_space)
3422       gdb_assert (!bploc->inserted);
3423
3424   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3425   {
3426     if (b->pspace != current_program_space)
3427       continue;
3428
3429     /* Solib breakpoints must be explicitly reset after an exec().  */
3430     if (b->type == bp_shlib_event)
3431       {
3432         delete_breakpoint (b);
3433         continue;
3434       }
3435
3436     /* JIT breakpoints must be explicitly reset after an exec().  */
3437     if (b->type == bp_jit_event)
3438       {
3439         delete_breakpoint (b);
3440         continue;
3441       }
3442
3443     /* Thread event breakpoints must be set anew after an exec(),
3444        as must overlay event and longjmp master breakpoints.  */
3445     if (b->type == bp_thread_event || b->type == bp_overlay_event
3446         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3447         || b->type == bp_exception_master)
3448       {
3449         delete_breakpoint (b);
3450         continue;
3451       }
3452
3453     /* Step-resume breakpoints are meaningless after an exec().  */
3454     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3455       {
3456         delete_breakpoint (b);
3457         continue;
3458       }
3459
3460     /* Longjmp and longjmp-resume breakpoints are also meaningless
3461        after an exec.  */
3462     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3463         || b->type == bp_longjmp_call_dummy
3464         || b->type == bp_exception || b->type == bp_exception_resume)
3465       {
3466         delete_breakpoint (b);
3467         continue;
3468       }
3469
3470     if (b->type == bp_catchpoint)
3471       {
3472         /* For now, none of the bp_catchpoint breakpoints need to
3473            do anything at this point.  In the future, if some of
3474            the catchpoints need to something, we will need to add
3475            a new method, and call this method from here.  */
3476         continue;
3477       }
3478
3479     /* bp_finish is a special case.  The only way we ought to be able
3480        to see one of these when an exec() has happened, is if the user
3481        caught a vfork, and then said "finish".  Ordinarily a finish just
3482        carries them to the call-site of the current callee, by setting
3483        a temporary bp there and resuming.  But in this case, the finish
3484        will carry them entirely through the vfork & exec.
3485
3486        We don't want to allow a bp_finish to remain inserted now.  But
3487        we can't safely delete it, 'cause finish_command has a handle to
3488        the bp on a bpstat, and will later want to delete it.  There's a
3489        chance (and I've seen it happen) that if we delete the bp_finish
3490        here, that its storage will get reused by the time finish_command
3491        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3492        We really must allow finish_command to delete a bp_finish.
3493
3494        In the absence of a general solution for the "how do we know
3495        it's safe to delete something others may have handles to?"
3496        problem, what we'll do here is just uninsert the bp_finish, and
3497        let finish_command delete it.
3498
3499        (We know the bp_finish is "doomed" in the sense that it's
3500        momentary, and will be deleted as soon as finish_command sees
3501        the inferior stopped.  So it doesn't matter that the bp's
3502        address is probably bogus in the new a.out, unlike e.g., the
3503        solib breakpoints.)  */
3504
3505     if (b->type == bp_finish)
3506       {
3507         continue;
3508       }
3509
3510     /* Without a symbolic address, we have little hope of the
3511        pre-exec() address meaning the same thing in the post-exec()
3512        a.out.  */
3513     if (b->addr_string == NULL)
3514       {
3515         delete_breakpoint (b);
3516         continue;
3517       }
3518   }
3519   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3520   create_overlay_event_breakpoint ();
3521   create_longjmp_master_breakpoint ();
3522   create_std_terminate_master_breakpoint ();
3523   create_exception_master_breakpoint ();
3524 }
3525
3526 int
3527 detach_breakpoints (ptid_t ptid)
3528 {
3529   struct bp_location *bl, **blp_tmp;
3530   int val = 0;
3531   struct cleanup *old_chain = save_inferior_ptid ();
3532   struct inferior *inf = current_inferior ();
3533
3534   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3535     error (_("Cannot detach breakpoints of inferior_ptid"));
3536
3537   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3538   inferior_ptid = ptid;
3539   ALL_BP_LOCATIONS (bl, blp_tmp)
3540   {
3541     if (bl->pspace != inf->pspace)
3542       continue;
3543
3544     if (bl->inserted)
3545       val |= remove_breakpoint_1 (bl, mark_inserted);
3546   }
3547
3548   /* Detach single-step breakpoints as well.  */
3549   detach_single_step_breakpoints ();
3550
3551   do_cleanups (old_chain);
3552   return val;
3553 }
3554
3555 /* Remove the breakpoint location BL from the current address space.
3556    Note that this is used to detach breakpoints from a child fork.
3557    When we get here, the child isn't in the inferior list, and neither
3558    do we have objects to represent its address space --- we should
3559    *not* look at bl->pspace->aspace here.  */
3560
3561 static int
3562 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3563 {
3564   int val;
3565
3566   /* BL is never in moribund_locations by our callers.  */
3567   gdb_assert (bl->owner != NULL);
3568
3569   if (bl->owner->enable_state == bp_permanent)
3570     /* Permanent breakpoints cannot be inserted or removed.  */
3571     return 0;
3572
3573   /* The type of none suggests that owner is actually deleted.
3574      This should not ever happen.  */
3575   gdb_assert (bl->owner->type != bp_none);
3576
3577   if (bl->loc_type == bp_loc_software_breakpoint
3578       || bl->loc_type == bp_loc_hardware_breakpoint)
3579     {
3580       /* "Normal" instruction breakpoint: either the standard
3581          trap-instruction bp (bp_breakpoint), or a
3582          bp_hardware_breakpoint.  */
3583
3584       /* First check to see if we have to handle an overlay.  */
3585       if (overlay_debugging == ovly_off
3586           || bl->section == NULL
3587           || !(section_is_overlay (bl->section)))
3588         {
3589           /* No overlay handling: just remove the breakpoint.  */
3590           val = bl->owner->ops->remove_location (bl);
3591         }
3592       else
3593         {
3594           /* This breakpoint is in an overlay section.
3595              Did we set a breakpoint at the LMA?  */
3596           if (!overlay_events_enabled)
3597               {
3598                 /* Yes -- overlay event support is not active, so we
3599                    should have set a breakpoint at the LMA.  Remove it.  
3600                 */
3601                 /* Ignore any failures: if the LMA is in ROM, we will
3602                    have already warned when we failed to insert it.  */
3603                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3604                   target_remove_hw_breakpoint (bl->gdbarch,
3605                                                &bl->overlay_target_info);
3606                 else
3607                   target_remove_breakpoint (bl->gdbarch,
3608                                             &bl->overlay_target_info);
3609               }
3610           /* Did we set a breakpoint at the VMA? 
3611              If so, we will have marked the breakpoint 'inserted'.  */
3612           if (bl->inserted)
3613             {
3614               /* Yes -- remove it.  Previously we did not bother to
3615                  remove the breakpoint if the section had been
3616                  unmapped, but let's not rely on that being safe.  We
3617                  don't know what the overlay manager might do.  */
3618
3619               /* However, we should remove *software* breakpoints only
3620                  if the section is still mapped, or else we overwrite
3621                  wrong code with the saved shadow contents.  */
3622               if (bl->loc_type == bp_loc_hardware_breakpoint
3623                   || section_is_mapped (bl->section))
3624                 val = bl->owner->ops->remove_location (bl);
3625               else
3626                 val = 0;
3627             }
3628           else
3629             {
3630               /* No -- not inserted, so no need to remove.  No error.  */
3631               val = 0;
3632             }
3633         }
3634
3635       /* In some cases, we might not be able to remove a breakpoint
3636          in a shared library that has already been removed, but we
3637          have not yet processed the shlib unload event.  */
3638       if (val && solib_name_from_address (bl->pspace, bl->address))
3639         val = 0;
3640
3641       if (val)
3642         return val;
3643       bl->inserted = (is == mark_inserted);
3644     }
3645   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3646     {
3647       gdb_assert (bl->owner->ops != NULL
3648                   && bl->owner->ops->remove_location != NULL);
3649
3650       bl->inserted = (is == mark_inserted);
3651       bl->owner->ops->remove_location (bl);
3652
3653       /* Failure to remove any of the hardware watchpoints comes here.  */
3654       if ((is == mark_uninserted) && (bl->inserted))
3655         warning (_("Could not remove hardware watchpoint %d."),
3656                  bl->owner->number);
3657     }
3658   else if (bl->owner->type == bp_catchpoint
3659            && breakpoint_enabled (bl->owner)
3660            && !bl->duplicate)
3661     {
3662       gdb_assert (bl->owner->ops != NULL
3663                   && bl->owner->ops->remove_location != NULL);
3664
3665       val = bl->owner->ops->remove_location (bl);
3666       if (val)
3667         return val;
3668
3669       bl->inserted = (is == mark_inserted);
3670     }
3671
3672   return 0;
3673 }
3674
3675 static int
3676 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3677 {
3678   int ret;
3679   struct cleanup *old_chain;
3680
3681   /* BL is never in moribund_locations by our callers.  */
3682   gdb_assert (bl->owner != NULL);
3683
3684   if (bl->owner->enable_state == bp_permanent)
3685     /* Permanent breakpoints cannot be inserted or removed.  */
3686     return 0;
3687
3688   /* The type of none suggests that owner is actually deleted.
3689      This should not ever happen.  */
3690   gdb_assert (bl->owner->type != bp_none);
3691
3692   old_chain = save_current_space_and_thread ();
3693
3694   switch_to_program_space_and_thread (bl->pspace);
3695
3696   ret = remove_breakpoint_1 (bl, is);
3697
3698   do_cleanups (old_chain);
3699   return ret;
3700 }
3701
3702 /* Clear the "inserted" flag in all breakpoints.  */
3703
3704 void
3705 mark_breakpoints_out (void)
3706 {
3707   struct bp_location *bl, **blp_tmp;
3708
3709   ALL_BP_LOCATIONS (bl, blp_tmp)
3710     if (bl->pspace == current_program_space)
3711       bl->inserted = 0;
3712 }
3713
3714 /* Clear the "inserted" flag in all breakpoints and delete any
3715    breakpoints which should go away between runs of the program.
3716
3717    Plus other such housekeeping that has to be done for breakpoints
3718    between runs.
3719
3720    Note: this function gets called at the end of a run (by
3721    generic_mourn_inferior) and when a run begins (by
3722    init_wait_for_inferior).  */
3723
3724
3725
3726 void
3727 breakpoint_init_inferior (enum inf_context context)
3728 {
3729   struct breakpoint *b, *b_tmp;
3730   struct bp_location *bl, **blp_tmp;
3731   int ix;
3732   struct program_space *pspace = current_program_space;
3733
3734   /* If breakpoint locations are shared across processes, then there's
3735      nothing to do.  */
3736   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3737     return;
3738
3739   ALL_BP_LOCATIONS (bl, blp_tmp)
3740   {
3741     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3742     if (bl->pspace == pspace
3743         && bl->owner->enable_state != bp_permanent)
3744       bl->inserted = 0;
3745   }
3746
3747   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3748   {
3749     if (b->loc && b->loc->pspace != pspace)
3750       continue;
3751
3752     switch (b->type)
3753       {
3754       case bp_call_dummy:
3755       case bp_longjmp_call_dummy:
3756
3757         /* If the call dummy breakpoint is at the entry point it will
3758            cause problems when the inferior is rerun, so we better get
3759            rid of it.  */
3760
3761       case bp_watchpoint_scope:
3762
3763         /* Also get rid of scope breakpoints.  */
3764
3765       case bp_shlib_event:
3766
3767         /* Also remove solib event breakpoints.  Their addresses may
3768            have changed since the last time we ran the program.
3769            Actually we may now be debugging against different target;
3770            and so the solib backend that installed this breakpoint may
3771            not be used in by the target.  E.g.,
3772
3773            (gdb) file prog-linux
3774            (gdb) run               # native linux target
3775            ...
3776            (gdb) kill
3777            (gdb) file prog-win.exe
3778            (gdb) tar rem :9999     # remote Windows gdbserver.
3779         */
3780
3781       case bp_step_resume:
3782
3783         /* Also remove step-resume breakpoints.  */
3784
3785         delete_breakpoint (b);
3786         break;
3787
3788       case bp_watchpoint:
3789       case bp_hardware_watchpoint:
3790       case bp_read_watchpoint:
3791       case bp_access_watchpoint:
3792         {
3793           struct watchpoint *w = (struct watchpoint *) b;
3794
3795           /* Likewise for watchpoints on local expressions.  */
3796           if (w->exp_valid_block != NULL)
3797             delete_breakpoint (b);
3798           else if (context == inf_starting)
3799             {
3800               /* Reset val field to force reread of starting value in
3801                  insert_breakpoints.  */
3802               if (w->val)
3803                 value_free (w->val);
3804               w->val = NULL;
3805               w->val_valid = 0;
3806           }
3807         }
3808         break;
3809       default:
3810         break;
3811       }
3812   }
3813
3814   /* Get rid of the moribund locations.  */
3815   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3816     decref_bp_location (&bl);
3817   VEC_free (bp_location_p, moribund_locations);
3818 }
3819
3820 /* These functions concern about actual breakpoints inserted in the
3821    target --- to e.g. check if we need to do decr_pc adjustment or if
3822    we need to hop over the bkpt --- so we check for address space
3823    match, not program space.  */
3824
3825 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3826    exists at PC.  It returns ordinary_breakpoint_here if it's an
3827    ordinary breakpoint, or permanent_breakpoint_here if it's a
3828    permanent breakpoint.
3829    - When continuing from a location with an ordinary breakpoint, we
3830      actually single step once before calling insert_breakpoints.
3831    - When continuing from a location with a permanent breakpoint, we
3832      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3833      the target, to advance the PC past the breakpoint.  */
3834
3835 enum breakpoint_here
3836 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3837 {
3838   struct bp_location *bl, **blp_tmp;
3839   int any_breakpoint_here = 0;
3840
3841   ALL_BP_LOCATIONS (bl, blp_tmp)
3842     {
3843       if (bl->loc_type != bp_loc_software_breakpoint
3844           && bl->loc_type != bp_loc_hardware_breakpoint)
3845         continue;
3846
3847       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3848       if ((breakpoint_enabled (bl->owner)
3849            || bl->owner->enable_state == bp_permanent)
3850           && breakpoint_location_address_match (bl, aspace, pc))
3851         {
3852           if (overlay_debugging 
3853               && section_is_overlay (bl->section)
3854               && !section_is_mapped (bl->section))
3855             continue;           /* unmapped overlay -- can't be a match */
3856           else if (bl->owner->enable_state == bp_permanent)
3857             return permanent_breakpoint_here;
3858           else
3859             any_breakpoint_here = 1;
3860         }
3861     }
3862
3863   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3864 }
3865
3866 /* Return true if there's a moribund breakpoint at PC.  */
3867
3868 int
3869 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3870 {
3871   struct bp_location *loc;
3872   int ix;
3873
3874   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3875     if (breakpoint_location_address_match (loc, aspace, pc))
3876       return 1;
3877
3878   return 0;
3879 }
3880
3881 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3882    inserted using regular breakpoint_chain / bp_location array
3883    mechanism.  This does not check for single-step breakpoints, which
3884    are inserted and removed using direct target manipulation.  */
3885
3886 int
3887 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3888                                     CORE_ADDR pc)
3889 {
3890   struct bp_location *bl, **blp_tmp;
3891
3892   ALL_BP_LOCATIONS (bl, blp_tmp)
3893     {
3894       if (bl->loc_type != bp_loc_software_breakpoint
3895           && bl->loc_type != bp_loc_hardware_breakpoint)
3896         continue;
3897
3898       if (bl->inserted
3899           && breakpoint_location_address_match (bl, aspace, pc))
3900         {
3901           if (overlay_debugging 
3902               && section_is_overlay (bl->section)
3903               && !section_is_mapped (bl->section))
3904             continue;           /* unmapped overlay -- can't be a match */
3905           else
3906             return 1;
3907         }
3908     }
3909   return 0;
3910 }
3911
3912 /* Returns non-zero iff there's either regular breakpoint
3913    or a single step breakpoint inserted at PC.  */
3914
3915 int
3916 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3917 {
3918   if (regular_breakpoint_inserted_here_p (aspace, pc))
3919     return 1;
3920
3921   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3922     return 1;
3923
3924   return 0;
3925 }
3926
3927 /* This function returns non-zero iff there is a software breakpoint
3928    inserted at PC.  */
3929
3930 int
3931 software_breakpoint_inserted_here_p (struct address_space *aspace,
3932                                      CORE_ADDR pc)
3933 {
3934   struct bp_location *bl, **blp_tmp;
3935
3936   ALL_BP_LOCATIONS (bl, blp_tmp)
3937     {
3938       if (bl->loc_type != bp_loc_software_breakpoint)
3939         continue;
3940
3941       if (bl->inserted
3942           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3943                                        aspace, pc))
3944         {
3945           if (overlay_debugging 
3946               && section_is_overlay (bl->section)
3947               && !section_is_mapped (bl->section))
3948             continue;           /* unmapped overlay -- can't be a match */
3949           else
3950             return 1;
3951         }
3952     }
3953
3954   /* Also check for software single-step breakpoints.  */
3955   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3956     return 1;
3957
3958   return 0;
3959 }
3960
3961 int
3962 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3963                                        CORE_ADDR addr, ULONGEST len)
3964 {
3965   struct breakpoint *bpt;
3966
3967   ALL_BREAKPOINTS (bpt)
3968     {
3969       struct bp_location *loc;
3970
3971       if (bpt->type != bp_hardware_watchpoint
3972           && bpt->type != bp_access_watchpoint)
3973         continue;
3974
3975       if (!breakpoint_enabled (bpt))
3976         continue;
3977
3978       for (loc = bpt->loc; loc; loc = loc->next)
3979         if (loc->pspace->aspace == aspace && loc->inserted)
3980           {
3981             CORE_ADDR l, h;
3982
3983             /* Check for intersection.  */
3984             l = max (loc->address, addr);
3985             h = min (loc->address + loc->length, addr + len);
3986             if (l < h)
3987               return 1;
3988           }
3989     }
3990   return 0;
3991 }
3992
3993 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3994    PC is valid for process/thread PTID.  */
3995
3996 int
3997 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3998                          ptid_t ptid)
3999 {
4000   struct bp_location *bl, **blp_tmp;
4001   /* The thread and task IDs associated to PTID, computed lazily.  */
4002   int thread = -1;
4003   int task = 0;
4004   
4005   ALL_BP_LOCATIONS (bl, blp_tmp)
4006     {
4007       if (bl->loc_type != bp_loc_software_breakpoint
4008           && bl->loc_type != bp_loc_hardware_breakpoint)
4009         continue;
4010
4011       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4012       if (!breakpoint_enabled (bl->owner)
4013           && bl->owner->enable_state != bp_permanent)
4014         continue;
4015
4016       if (!breakpoint_location_address_match (bl, aspace, pc))
4017         continue;
4018
4019       if (bl->owner->thread != -1)
4020         {
4021           /* This is a thread-specific breakpoint.  Check that ptid
4022              matches that thread.  If thread hasn't been computed yet,
4023              it is now time to do so.  */
4024           if (thread == -1)
4025             thread = pid_to_thread_id (ptid);
4026           if (bl->owner->thread != thread)
4027             continue;
4028         }
4029
4030       if (bl->owner->task != 0)
4031         {
4032           /* This is a task-specific breakpoint.  Check that ptid
4033              matches that task.  If task hasn't been computed yet,
4034              it is now time to do so.  */
4035           if (task == 0)
4036             task = ada_get_task_number (ptid);
4037           if (bl->owner->task != task)
4038             continue;
4039         }
4040
4041       if (overlay_debugging 
4042           && section_is_overlay (bl->section)
4043           && !section_is_mapped (bl->section))
4044         continue;           /* unmapped overlay -- can't be a match */
4045
4046       return 1;
4047     }
4048
4049   return 0;
4050 }
4051 \f
4052
4053 /* bpstat stuff.  External routines' interfaces are documented
4054    in breakpoint.h.  */
4055
4056 int
4057 is_catchpoint (struct breakpoint *ep)
4058 {
4059   return (ep->type == bp_catchpoint);
4060 }
4061
4062 /* Frees any storage that is part of a bpstat.  Does not walk the
4063    'next' chain.  */
4064
4065 static void
4066 bpstat_free (bpstat bs)
4067 {
4068   if (bs->old_val != NULL)
4069     value_free (bs->old_val);
4070   decref_counted_command_line (&bs->commands);
4071   decref_bp_location (&bs->bp_location_at);
4072   xfree (bs);
4073 }
4074
4075 /* Clear a bpstat so that it says we are not at any breakpoint.
4076    Also free any storage that is part of a bpstat.  */
4077
4078 void
4079 bpstat_clear (bpstat *bsp)
4080 {
4081   bpstat p;
4082   bpstat q;
4083
4084   if (bsp == 0)
4085     return;
4086   p = *bsp;
4087   while (p != NULL)
4088     {
4089       q = p->next;
4090       bpstat_free (p);
4091       p = q;
4092     }
4093   *bsp = NULL;
4094 }
4095
4096 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4097    is part of the bpstat is copied as well.  */
4098
4099 bpstat
4100 bpstat_copy (bpstat bs)
4101 {
4102   bpstat p = NULL;
4103   bpstat tmp;
4104   bpstat retval = NULL;
4105
4106   if (bs == NULL)
4107     return bs;
4108
4109   for (; bs != NULL; bs = bs->next)
4110     {
4111       tmp = (bpstat) xmalloc (sizeof (*tmp));
4112       memcpy (tmp, bs, sizeof (*tmp));
4113       incref_counted_command_line (tmp->commands);
4114       incref_bp_location (tmp->bp_location_at);
4115       if (bs->old_val != NULL)
4116         {
4117           tmp->old_val = value_copy (bs->old_val);
4118           release_value (tmp->old_val);
4119         }
4120
4121       if (p == NULL)
4122         /* This is the first thing in the chain.  */
4123         retval = tmp;
4124       else
4125         p->next = tmp;
4126       p = tmp;
4127     }
4128   p->next = NULL;
4129   return retval;
4130 }
4131
4132 /* Find the bpstat associated with this breakpoint.  */
4133
4134 bpstat
4135 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4136 {
4137   if (bsp == NULL)
4138     return NULL;
4139
4140   for (; bsp != NULL; bsp = bsp->next)
4141     {
4142       if (bsp->breakpoint_at == breakpoint)
4143         return bsp;
4144     }
4145   return NULL;
4146 }
4147
4148 /* See breakpoint.h.  */
4149
4150 enum bpstat_signal_value
4151 bpstat_explains_signal (bpstat bsp)
4152 {
4153   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4154
4155   for (; bsp != NULL; bsp = bsp->next)
4156     {
4157       /* Ensure that, if we ever entered this loop, then we at least
4158          return BPSTAT_SIGNAL_HIDE.  */
4159       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4160
4161       if (bsp->breakpoint_at != NULL)
4162         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4163
4164       if (newval > result)
4165         result = newval;
4166     }
4167
4168   return result;
4169 }
4170
4171 /* Put in *NUM the breakpoint number of the first breakpoint we are
4172    stopped at.  *BSP upon return is a bpstat which points to the
4173    remaining breakpoints stopped at (but which is not guaranteed to be
4174    good for anything but further calls to bpstat_num).
4175
4176    Return 0 if passed a bpstat which does not indicate any breakpoints.
4177    Return -1 if stopped at a breakpoint that has been deleted since
4178    we set it.
4179    Return 1 otherwise.  */
4180
4181 int
4182 bpstat_num (bpstat *bsp, int *num)
4183 {
4184   struct breakpoint *b;
4185
4186   if ((*bsp) == NULL)
4187     return 0;                   /* No more breakpoint values */
4188
4189   /* We assume we'll never have several bpstats that correspond to a
4190      single breakpoint -- otherwise, this function might return the
4191      same number more than once and this will look ugly.  */
4192   b = (*bsp)->breakpoint_at;
4193   *bsp = (*bsp)->next;
4194   if (b == NULL)
4195     return -1;                  /* breakpoint that's been deleted since */
4196
4197   *num = b->number;             /* We have its number */
4198   return 1;
4199 }
4200
4201 /* See breakpoint.h.  */
4202
4203 void
4204 bpstat_clear_actions (void)
4205 {
4206   struct thread_info *tp;
4207   bpstat bs;
4208
4209   if (ptid_equal (inferior_ptid, null_ptid))
4210     return;
4211
4212   tp = find_thread_ptid (inferior_ptid);
4213   if (tp == NULL)
4214     return;
4215
4216   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4217     {
4218       decref_counted_command_line (&bs->commands);
4219
4220       if (bs->old_val != NULL)
4221         {
4222           value_free (bs->old_val);
4223           bs->old_val = NULL;
4224         }
4225     }
4226 }
4227
4228 /* Called when a command is about to proceed the inferior.  */
4229
4230 static void
4231 breakpoint_about_to_proceed (void)
4232 {
4233   if (!ptid_equal (inferior_ptid, null_ptid))
4234     {
4235       struct thread_info *tp = inferior_thread ();
4236
4237       /* Allow inferior function calls in breakpoint commands to not
4238          interrupt the command list.  When the call finishes
4239          successfully, the inferior will be standing at the same
4240          breakpoint as if nothing happened.  */
4241       if (tp->control.in_infcall)
4242         return;
4243     }
4244
4245   breakpoint_proceeded = 1;
4246 }
4247
4248 /* Stub for cleaning up our state if we error-out of a breakpoint
4249    command.  */
4250 static void
4251 cleanup_executing_breakpoints (void *ignore)
4252 {
4253   executing_breakpoint_commands = 0;
4254 }
4255
4256 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4257    or its equivalent.  */
4258
4259 static int
4260 command_line_is_silent (struct command_line *cmd)
4261 {
4262   return cmd && (strcmp ("silent", cmd->line) == 0
4263                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4264 }
4265
4266 /* Execute all the commands associated with all the breakpoints at
4267    this location.  Any of these commands could cause the process to
4268    proceed beyond this point, etc.  We look out for such changes by
4269    checking the global "breakpoint_proceeded" after each command.
4270
4271    Returns true if a breakpoint command resumed the inferior.  In that
4272    case, it is the caller's responsibility to recall it again with the
4273    bpstat of the current thread.  */
4274
4275 static int
4276 bpstat_do_actions_1 (bpstat *bsp)
4277 {
4278   bpstat bs;
4279   struct cleanup *old_chain;
4280   int again = 0;
4281
4282   /* Avoid endless recursion if a `source' command is contained
4283      in bs->commands.  */
4284   if (executing_breakpoint_commands)
4285     return 0;
4286
4287   executing_breakpoint_commands = 1;
4288   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4289
4290   prevent_dont_repeat ();
4291
4292   /* This pointer will iterate over the list of bpstat's.  */
4293   bs = *bsp;
4294
4295   breakpoint_proceeded = 0;
4296   for (; bs != NULL; bs = bs->next)
4297     {
4298       struct counted_command_line *ccmd;
4299       struct command_line *cmd;
4300       struct cleanup *this_cmd_tree_chain;
4301
4302       /* Take ownership of the BSP's command tree, if it has one.
4303
4304          The command tree could legitimately contain commands like
4305          'step' and 'next', which call clear_proceed_status, which
4306          frees stop_bpstat's command tree.  To make sure this doesn't
4307          free the tree we're executing out from under us, we need to
4308          take ownership of the tree ourselves.  Since a given bpstat's
4309          commands are only executed once, we don't need to copy it; we
4310          can clear the pointer in the bpstat, and make sure we free
4311          the tree when we're done.  */
4312       ccmd = bs->commands;
4313       bs->commands = NULL;
4314       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4315       cmd = ccmd ? ccmd->commands : NULL;
4316       if (command_line_is_silent (cmd))
4317         {
4318           /* The action has been already done by bpstat_stop_status.  */
4319           cmd = cmd->next;
4320         }
4321
4322       while (cmd != NULL)
4323         {
4324           execute_control_command (cmd);
4325
4326           if (breakpoint_proceeded)
4327             break;
4328           else
4329             cmd = cmd->next;
4330         }
4331
4332       /* We can free this command tree now.  */
4333       do_cleanups (this_cmd_tree_chain);
4334
4335       if (breakpoint_proceeded)
4336         {
4337           if (target_can_async_p ())
4338             /* If we are in async mode, then the target might be still
4339                running, not stopped at any breakpoint, so nothing for
4340                us to do here -- just return to the event loop.  */
4341             ;
4342           else
4343             /* In sync mode, when execute_control_command returns
4344                we're already standing on the next breakpoint.
4345                Breakpoint commands for that stop were not run, since
4346                execute_command does not run breakpoint commands --
4347                only command_line_handler does, but that one is not
4348                involved in execution of breakpoint commands.  So, we
4349                can now execute breakpoint commands.  It should be
4350                noted that making execute_command do bpstat actions is
4351                not an option -- in this case we'll have recursive
4352                invocation of bpstat for each breakpoint with a
4353                command, and can easily blow up GDB stack.  Instead, we
4354                return true, which will trigger the caller to recall us
4355                with the new stop_bpstat.  */
4356             again = 1;
4357           break;
4358         }
4359     }
4360   do_cleanups (old_chain);
4361   return again;
4362 }
4363
4364 void
4365 bpstat_do_actions (void)
4366 {
4367   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4368
4369   /* Do any commands attached to breakpoint we are stopped at.  */
4370   while (!ptid_equal (inferior_ptid, null_ptid)
4371          && target_has_execution
4372          && !is_exited (inferior_ptid)
4373          && !is_executing (inferior_ptid))
4374     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4375        and only return when it is stopped at the next breakpoint, we
4376        keep doing breakpoint actions until it returns false to
4377        indicate the inferior was not resumed.  */
4378     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4379       break;
4380
4381   discard_cleanups (cleanup_if_error);
4382 }
4383
4384 /* Print out the (old or new) value associated with a watchpoint.  */
4385
4386 static void
4387 watchpoint_value_print (struct value *val, struct ui_file *stream)
4388 {
4389   if (val == NULL)
4390     fprintf_unfiltered (stream, _("<unreadable>"));
4391   else
4392     {
4393       struct value_print_options opts;
4394       get_user_print_options (&opts);
4395       value_print (val, stream, &opts);
4396     }
4397 }
4398
4399 /* Generic routine for printing messages indicating why we
4400    stopped.  The behavior of this function depends on the value
4401    'print_it' in the bpstat structure.  Under some circumstances we
4402    may decide not to print anything here and delegate the task to
4403    normal_stop().  */
4404
4405 static enum print_stop_action
4406 print_bp_stop_message (bpstat bs)
4407 {
4408   switch (bs->print_it)
4409     {
4410     case print_it_noop:
4411       /* Nothing should be printed for this bpstat entry.  */
4412       return PRINT_UNKNOWN;
4413       break;
4414
4415     case print_it_done:
4416       /* We still want to print the frame, but we already printed the
4417          relevant messages.  */
4418       return PRINT_SRC_AND_LOC;
4419       break;
4420
4421     case print_it_normal:
4422       {
4423         struct breakpoint *b = bs->breakpoint_at;
4424
4425         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4426            which has since been deleted.  */
4427         if (b == NULL)
4428           return PRINT_UNKNOWN;
4429
4430         /* Normal case.  Call the breakpoint's print_it method.  */
4431         return b->ops->print_it (bs);
4432       }
4433       break;
4434
4435     default:
4436       internal_error (__FILE__, __LINE__,
4437                       _("print_bp_stop_message: unrecognized enum value"));
4438       break;
4439     }
4440 }
4441
4442 /* A helper function that prints a shared library stopped event.  */
4443
4444 static void
4445 print_solib_event (int is_catchpoint)
4446 {
4447   int any_deleted
4448     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4449   int any_added
4450     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4451
4452   if (!is_catchpoint)
4453     {
4454       if (any_added || any_deleted)
4455         ui_out_text (current_uiout,
4456                      _("Stopped due to shared library event:\n"));
4457       else
4458         ui_out_text (current_uiout,
4459                      _("Stopped due to shared library event (no "
4460                        "libraries added or removed)\n"));
4461     }
4462
4463   if (ui_out_is_mi_like_p (current_uiout))
4464     ui_out_field_string (current_uiout, "reason",
4465                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4466
4467   if (any_deleted)
4468     {
4469       struct cleanup *cleanup;
4470       char *name;
4471       int ix;
4472
4473       ui_out_text (current_uiout, _("  Inferior unloaded "));
4474       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4475                                                     "removed");
4476       for (ix = 0;
4477            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4478                         ix, name);
4479            ++ix)
4480         {
4481           if (ix > 0)
4482             ui_out_text (current_uiout, "    ");
4483           ui_out_field_string (current_uiout, "library", name);
4484           ui_out_text (current_uiout, "\n");
4485         }
4486
4487       do_cleanups (cleanup);
4488     }
4489
4490   if (any_added)
4491     {
4492       struct so_list *iter;
4493       int ix;
4494       struct cleanup *cleanup;
4495
4496       ui_out_text (current_uiout, _("  Inferior loaded "));
4497       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4498                                                     "added");
4499       for (ix = 0;
4500            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4501                         ix, iter);
4502            ++ix)
4503         {
4504           if (ix > 0)
4505             ui_out_text (current_uiout, "    ");
4506           ui_out_field_string (current_uiout, "library", iter->so_name);
4507           ui_out_text (current_uiout, "\n");
4508         }
4509
4510       do_cleanups (cleanup);
4511     }
4512 }
4513
4514 /* Print a message indicating what happened.  This is called from
4515    normal_stop().  The input to this routine is the head of the bpstat
4516    list - a list of the eventpoints that caused this stop.  KIND is
4517    the target_waitkind for the stopping event.  This
4518    routine calls the generic print routine for printing a message
4519    about reasons for stopping.  This will print (for example) the
4520    "Breakpoint n," part of the output.  The return value of this
4521    routine is one of:
4522
4523    PRINT_UNKNOWN: Means we printed nothing.
4524    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4525    code to print the location.  An example is 
4526    "Breakpoint 1, " which should be followed by
4527    the location.
4528    PRINT_SRC_ONLY: Means we printed something, but there is no need
4529    to also print the location part of the message.
4530    An example is the catch/throw messages, which
4531    don't require a location appended to the end.
4532    PRINT_NOTHING: We have done some printing and we don't need any 
4533    further info to be printed.  */
4534
4535 enum print_stop_action
4536 bpstat_print (bpstat bs, int kind)
4537 {
4538   int val;
4539
4540   /* Maybe another breakpoint in the chain caused us to stop.
4541      (Currently all watchpoints go on the bpstat whether hit or not.
4542      That probably could (should) be changed, provided care is taken
4543      with respect to bpstat_explains_signal).  */
4544   for (; bs; bs = bs->next)
4545     {
4546       val = print_bp_stop_message (bs);
4547       if (val == PRINT_SRC_ONLY 
4548           || val == PRINT_SRC_AND_LOC 
4549           || val == PRINT_NOTHING)
4550         return val;
4551     }
4552
4553   /* If we had hit a shared library event breakpoint,
4554      print_bp_stop_message would print out this message.  If we hit an
4555      OS-level shared library event, do the same thing.  */
4556   if (kind == TARGET_WAITKIND_LOADED)
4557     {
4558       print_solib_event (0);
4559       return PRINT_NOTHING;
4560     }
4561
4562   /* We reached the end of the chain, or we got a null BS to start
4563      with and nothing was printed.  */
4564   return PRINT_UNKNOWN;
4565 }
4566
4567 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4568    used inside a catch_errors to evaluate the breakpoint condition.
4569    The argument is a "struct expression *" that has been cast to a
4570    "char *" to make it pass through catch_errors.  */
4571
4572 static int
4573 breakpoint_cond_eval (void *exp)
4574 {
4575   struct value *mark = value_mark ();
4576   int i = !value_true (evaluate_expression ((struct expression *) exp));
4577
4578   value_free_to_mark (mark);
4579   return i;
4580 }
4581
4582 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4583
4584 static bpstat
4585 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4586 {
4587   bpstat bs;
4588
4589   bs = (bpstat) xmalloc (sizeof (*bs));
4590   bs->next = NULL;
4591   **bs_link_pointer = bs;
4592   *bs_link_pointer = &bs->next;
4593   bs->breakpoint_at = bl->owner;
4594   bs->bp_location_at = bl;
4595   incref_bp_location (bl);
4596   /* If the condition is false, etc., don't do the commands.  */
4597   bs->commands = NULL;
4598   bs->old_val = NULL;
4599   bs->print_it = print_it_normal;
4600   return bs;
4601 }
4602 \f
4603 /* The target has stopped with waitstatus WS.  Check if any hardware
4604    watchpoints have triggered, according to the target.  */
4605
4606 int
4607 watchpoints_triggered (struct target_waitstatus *ws)
4608 {
4609   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4610   CORE_ADDR addr;
4611   struct breakpoint *b;
4612
4613   if (!stopped_by_watchpoint)
4614     {
4615       /* We were not stopped by a watchpoint.  Mark all watchpoints
4616          as not triggered.  */
4617       ALL_BREAKPOINTS (b)
4618         if (is_hardware_watchpoint (b))
4619           {
4620             struct watchpoint *w = (struct watchpoint *) b;
4621
4622             w->watchpoint_triggered = watch_triggered_no;
4623           }
4624
4625       return 0;
4626     }
4627
4628   if (!target_stopped_data_address (&current_target, &addr))
4629     {
4630       /* We were stopped by a watchpoint, but we don't know where.
4631          Mark all watchpoints as unknown.  */
4632       ALL_BREAKPOINTS (b)
4633         if (is_hardware_watchpoint (b))
4634           {
4635             struct watchpoint *w = (struct watchpoint *) b;
4636
4637             w->watchpoint_triggered = watch_triggered_unknown;
4638           }
4639
4640       return stopped_by_watchpoint;
4641     }
4642
4643   /* The target could report the data address.  Mark watchpoints
4644      affected by this data address as triggered, and all others as not
4645      triggered.  */
4646
4647   ALL_BREAKPOINTS (b)
4648     if (is_hardware_watchpoint (b))
4649       {
4650         struct watchpoint *w = (struct watchpoint *) b;
4651         struct bp_location *loc;
4652
4653         w->watchpoint_triggered = watch_triggered_no;
4654         for (loc = b->loc; loc; loc = loc->next)
4655           {
4656             if (is_masked_watchpoint (b))
4657               {
4658                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4659                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4660
4661                 if (newaddr == start)
4662                   {
4663                     w->watchpoint_triggered = watch_triggered_yes;
4664                     break;
4665                   }
4666               }
4667             /* Exact match not required.  Within range is sufficient.  */
4668             else if (target_watchpoint_addr_within_range (&current_target,
4669                                                          addr, loc->address,
4670                                                          loc->length))
4671               {
4672                 w->watchpoint_triggered = watch_triggered_yes;
4673                 break;
4674               }
4675           }
4676       }
4677
4678   return 1;
4679 }
4680
4681 /* Possible return values for watchpoint_check (this can't be an enum
4682    because of check_errors).  */
4683 /* The watchpoint has been deleted.  */
4684 #define WP_DELETED 1
4685 /* The value has changed.  */
4686 #define WP_VALUE_CHANGED 2
4687 /* The value has not changed.  */
4688 #define WP_VALUE_NOT_CHANGED 3
4689 /* Ignore this watchpoint, no matter if the value changed or not.  */
4690 #define WP_IGNORE 4
4691
4692 #define BP_TEMPFLAG 1
4693 #define BP_HARDWAREFLAG 2
4694
4695 /* Evaluate watchpoint condition expression and check if its value
4696    changed.
4697
4698    P should be a pointer to struct bpstat, but is defined as a void *
4699    in order for this function to be usable with catch_errors.  */
4700
4701 static int
4702 watchpoint_check (void *p)
4703 {
4704   bpstat bs = (bpstat) p;
4705   struct watchpoint *b;
4706   struct frame_info *fr;
4707   int within_current_scope;
4708
4709   /* BS is built from an existing struct breakpoint.  */
4710   gdb_assert (bs->breakpoint_at != NULL);
4711   b = (struct watchpoint *) bs->breakpoint_at;
4712
4713   /* If this is a local watchpoint, we only want to check if the
4714      watchpoint frame is in scope if the current thread is the thread
4715      that was used to create the watchpoint.  */
4716   if (!watchpoint_in_thread_scope (b))
4717     return WP_IGNORE;
4718
4719   if (b->exp_valid_block == NULL)
4720     within_current_scope = 1;
4721   else
4722     {
4723       struct frame_info *frame = get_current_frame ();
4724       struct gdbarch *frame_arch = get_frame_arch (frame);
4725       CORE_ADDR frame_pc = get_frame_pc (frame);
4726
4727       /* in_function_epilogue_p() returns a non-zero value if we're
4728          still in the function but the stack frame has already been
4729          invalidated.  Since we can't rely on the values of local
4730          variables after the stack has been destroyed, we are treating
4731          the watchpoint in that state as `not changed' without further
4732          checking.  Don't mark watchpoints as changed if the current
4733          frame is in an epilogue - even if they are in some other
4734          frame, our view of the stack is likely to be wrong and
4735          frame_find_by_id could error out.  */
4736       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4737         return WP_IGNORE;
4738
4739       fr = frame_find_by_id (b->watchpoint_frame);
4740       within_current_scope = (fr != NULL);
4741
4742       /* If we've gotten confused in the unwinder, we might have
4743          returned a frame that can't describe this variable.  */
4744       if (within_current_scope)
4745         {
4746           struct symbol *function;
4747
4748           function = get_frame_function (fr);
4749           if (function == NULL
4750               || !contained_in (b->exp_valid_block,
4751                                 SYMBOL_BLOCK_VALUE (function)))
4752             within_current_scope = 0;
4753         }
4754
4755       if (within_current_scope)
4756         /* If we end up stopping, the current frame will get selected
4757            in normal_stop.  So this call to select_frame won't affect
4758            the user.  */
4759         select_frame (fr);
4760     }
4761
4762   if (within_current_scope)
4763     {
4764       /* We use value_{,free_to_}mark because it could be a *long*
4765          time before we return to the command level and call
4766          free_all_values.  We can't call free_all_values because we
4767          might be in the middle of evaluating a function call.  */
4768
4769       int pc = 0;
4770       struct value *mark;
4771       struct value *new_val;
4772
4773       if (is_masked_watchpoint (&b->base))
4774         /* Since we don't know the exact trigger address (from
4775            stopped_data_address), just tell the user we've triggered
4776            a mask watchpoint.  */
4777         return WP_VALUE_CHANGED;
4778
4779       mark = value_mark ();
4780       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4781
4782       /* We use value_equal_contents instead of value_equal because
4783          the latter coerces an array to a pointer, thus comparing just
4784          the address of the array instead of its contents.  This is
4785          not what we want.  */
4786       if ((b->val != NULL) != (new_val != NULL)
4787           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4788         {
4789           if (new_val != NULL)
4790             {
4791               release_value (new_val);
4792               value_free_to_mark (mark);
4793             }
4794           bs->old_val = b->val;
4795           b->val = new_val;
4796           b->val_valid = 1;
4797           return WP_VALUE_CHANGED;
4798         }
4799       else
4800         {
4801           /* Nothing changed.  */
4802           value_free_to_mark (mark);
4803           return WP_VALUE_NOT_CHANGED;
4804         }
4805     }
4806   else
4807     {
4808       struct ui_out *uiout = current_uiout;
4809
4810       /* This seems like the only logical thing to do because
4811          if we temporarily ignored the watchpoint, then when
4812          we reenter the block in which it is valid it contains
4813          garbage (in the case of a function, it may have two
4814          garbage values, one before and one after the prologue).
4815          So we can't even detect the first assignment to it and
4816          watch after that (since the garbage may or may not equal
4817          the first value assigned).  */
4818       /* We print all the stop information in
4819          breakpoint_ops->print_it, but in this case, by the time we
4820          call breakpoint_ops->print_it this bp will be deleted
4821          already.  So we have no choice but print the information
4822          here.  */
4823       if (ui_out_is_mi_like_p (uiout))
4824         ui_out_field_string
4825           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4826       ui_out_text (uiout, "\nWatchpoint ");
4827       ui_out_field_int (uiout, "wpnum", b->base.number);
4828       ui_out_text (uiout,
4829                    " deleted because the program has left the block in\n\
4830 which its expression is valid.\n");     
4831
4832       /* Make sure the watchpoint's commands aren't executed.  */
4833       decref_counted_command_line (&b->base.commands);
4834       watchpoint_del_at_next_stop (b);
4835
4836       return WP_DELETED;
4837     }
4838 }
4839
4840 /* Return true if it looks like target has stopped due to hitting
4841    breakpoint location BL.  This function does not check if we should
4842    stop, only if BL explains the stop.  */
4843
4844 static int
4845 bpstat_check_location (const struct bp_location *bl,
4846                        struct address_space *aspace, CORE_ADDR bp_addr,
4847                        const struct target_waitstatus *ws)
4848 {
4849   struct breakpoint *b = bl->owner;
4850
4851   /* BL is from an existing breakpoint.  */
4852   gdb_assert (b != NULL);
4853
4854   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4855 }
4856
4857 /* Determine if the watched values have actually changed, and we
4858    should stop.  If not, set BS->stop to 0.  */
4859
4860 static void
4861 bpstat_check_watchpoint (bpstat bs)
4862 {
4863   const struct bp_location *bl;
4864   struct watchpoint *b;
4865
4866   /* BS is built for existing struct breakpoint.  */
4867   bl = bs->bp_location_at;
4868   gdb_assert (bl != NULL);
4869   b = (struct watchpoint *) bs->breakpoint_at;
4870   gdb_assert (b != NULL);
4871
4872     {
4873       int must_check_value = 0;
4874       
4875       if (b->base.type == bp_watchpoint)
4876         /* For a software watchpoint, we must always check the
4877            watched value.  */
4878         must_check_value = 1;
4879       else if (b->watchpoint_triggered == watch_triggered_yes)
4880         /* We have a hardware watchpoint (read, write, or access)
4881            and the target earlier reported an address watched by
4882            this watchpoint.  */
4883         must_check_value = 1;
4884       else if (b->watchpoint_triggered == watch_triggered_unknown
4885                && b->base.type == bp_hardware_watchpoint)
4886         /* We were stopped by a hardware watchpoint, but the target could
4887            not report the data address.  We must check the watchpoint's
4888            value.  Access and read watchpoints are out of luck; without
4889            a data address, we can't figure it out.  */
4890         must_check_value = 1;
4891
4892       if (must_check_value)
4893         {
4894           char *message
4895             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4896                           b->base.number);
4897           struct cleanup *cleanups = make_cleanup (xfree, message);
4898           int e = catch_errors (watchpoint_check, bs, message,
4899                                 RETURN_MASK_ALL);
4900           do_cleanups (cleanups);
4901           switch (e)
4902             {
4903             case WP_DELETED:
4904               /* We've already printed what needs to be printed.  */
4905               bs->print_it = print_it_done;
4906               /* Stop.  */
4907               break;
4908             case WP_IGNORE:
4909               bs->print_it = print_it_noop;
4910               bs->stop = 0;
4911               break;
4912             case WP_VALUE_CHANGED:
4913               if (b->base.type == bp_read_watchpoint)
4914                 {
4915                   /* There are two cases to consider here:
4916
4917                      1. We're watching the triggered memory for reads.
4918                      In that case, trust the target, and always report
4919                      the watchpoint hit to the user.  Even though
4920                      reads don't cause value changes, the value may
4921                      have changed since the last time it was read, and
4922                      since we're not trapping writes, we will not see
4923                      those, and as such we should ignore our notion of
4924                      old value.
4925
4926                      2. We're watching the triggered memory for both
4927                      reads and writes.  There are two ways this may
4928                      happen:
4929
4930                      2.1. This is a target that can't break on data
4931                      reads only, but can break on accesses (reads or
4932                      writes), such as e.g., x86.  We detect this case
4933                      at the time we try to insert read watchpoints.
4934
4935                      2.2. Otherwise, the target supports read
4936                      watchpoints, but, the user set an access or write
4937                      watchpoint watching the same memory as this read
4938                      watchpoint.
4939
4940                      If we're watching memory writes as well as reads,
4941                      ignore watchpoint hits when we find that the
4942                      value hasn't changed, as reads don't cause
4943                      changes.  This still gives false positives when
4944                      the program writes the same value to memory as
4945                      what there was already in memory (we will confuse
4946                      it for a read), but it's much better than
4947                      nothing.  */
4948
4949                   int other_write_watchpoint = 0;
4950
4951                   if (bl->watchpoint_type == hw_read)
4952                     {
4953                       struct breakpoint *other_b;
4954
4955                       ALL_BREAKPOINTS (other_b)
4956                         if (other_b->type == bp_hardware_watchpoint
4957                             || other_b->type == bp_access_watchpoint)
4958                           {
4959                             struct watchpoint *other_w =
4960                               (struct watchpoint *) other_b;
4961
4962                             if (other_w->watchpoint_triggered
4963                                 == watch_triggered_yes)
4964                               {
4965                                 other_write_watchpoint = 1;
4966                                 break;
4967                               }
4968                           }
4969                     }
4970
4971                   if (other_write_watchpoint
4972                       || bl->watchpoint_type == hw_access)
4973                     {
4974                       /* We're watching the same memory for writes,
4975                          and the value changed since the last time we
4976                          updated it, so this trap must be for a write.
4977                          Ignore it.  */
4978                       bs->print_it = print_it_noop;
4979                       bs->stop = 0;
4980                     }
4981                 }
4982               break;
4983             case WP_VALUE_NOT_CHANGED:
4984               if (b->base.type == bp_hardware_watchpoint
4985                   || b->base.type == bp_watchpoint)
4986                 {
4987                   /* Don't stop: write watchpoints shouldn't fire if
4988                      the value hasn't changed.  */
4989                   bs->print_it = print_it_noop;
4990                   bs->stop = 0;
4991                 }
4992               /* Stop.  */
4993               break;
4994             default:
4995               /* Can't happen.  */
4996             case 0:
4997               /* Error from catch_errors.  */
4998               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4999               watchpoint_del_at_next_stop (b);
5000               /* We've already printed what needs to be printed.  */
5001               bs->print_it = print_it_done;
5002               break;
5003             }
5004         }
5005       else      /* must_check_value == 0 */
5006         {
5007           /* This is a case where some watchpoint(s) triggered, but
5008              not at the address of this watchpoint, or else no
5009              watchpoint triggered after all.  So don't print
5010              anything for this watchpoint.  */
5011           bs->print_it = print_it_noop;
5012           bs->stop = 0;
5013         }
5014     }
5015 }
5016
5017
5018 /* Check conditions (condition proper, frame, thread and ignore count)
5019    of breakpoint referred to by BS.  If we should not stop for this
5020    breakpoint, set BS->stop to 0.  */
5021
5022 static void
5023 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5024 {
5025   int thread_id = pid_to_thread_id (ptid);
5026   const struct bp_location *bl;
5027   struct breakpoint *b;
5028
5029   /* BS is built for existing struct breakpoint.  */
5030   bl = bs->bp_location_at;
5031   gdb_assert (bl != NULL);
5032   b = bs->breakpoint_at;
5033   gdb_assert (b != NULL);
5034
5035   /* Even if the target evaluated the condition on its end and notified GDB, we
5036      need to do so again since GDB does not know if we stopped due to a
5037      breakpoint or a single step breakpoint.  */
5038
5039   if (frame_id_p (b->frame_id)
5040       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5041     bs->stop = 0;
5042   else if (bs->stop)
5043     {
5044       int value_is_zero = 0;
5045       struct expression *cond;
5046
5047       /* Evaluate Python breakpoints that have a "stop"
5048          method implemented.  */
5049       if (b->py_bp_object)
5050         bs->stop = gdbpy_should_stop (b->py_bp_object);
5051
5052       if (is_watchpoint (b))
5053         {
5054           struct watchpoint *w = (struct watchpoint *) b;
5055
5056           cond = w->cond_exp;
5057         }
5058       else
5059         cond = bl->cond;
5060
5061       if (cond && b->disposition != disp_del_at_next_stop)
5062         {
5063           int within_current_scope = 1;
5064           struct watchpoint * w;
5065
5066           /* We use value_mark and value_free_to_mark because it could
5067              be a long time before we return to the command level and
5068              call free_all_values.  We can't call free_all_values
5069              because we might be in the middle of evaluating a
5070              function call.  */
5071           struct value *mark = value_mark ();
5072
5073           if (is_watchpoint (b))
5074             w = (struct watchpoint *) b;
5075           else
5076             w = NULL;
5077
5078           /* Need to select the frame, with all that implies so that
5079              the conditions will have the right context.  Because we
5080              use the frame, we will not see an inlined function's
5081              variables when we arrive at a breakpoint at the start
5082              of the inlined function; the current frame will be the
5083              call site.  */
5084           if (w == NULL || w->cond_exp_valid_block == NULL)
5085             select_frame (get_current_frame ());
5086           else
5087             {
5088               struct frame_info *frame;
5089
5090               /* For local watchpoint expressions, which particular
5091                  instance of a local is being watched matters, so we
5092                  keep track of the frame to evaluate the expression
5093                  in.  To evaluate the condition however, it doesn't
5094                  really matter which instantiation of the function
5095                  where the condition makes sense triggers the
5096                  watchpoint.  This allows an expression like "watch
5097                  global if q > 10" set in `func', catch writes to
5098                  global on all threads that call `func', or catch
5099                  writes on all recursive calls of `func' by a single
5100                  thread.  We simply always evaluate the condition in
5101                  the innermost frame that's executing where it makes
5102                  sense to evaluate the condition.  It seems
5103                  intuitive.  */
5104               frame = block_innermost_frame (w->cond_exp_valid_block);
5105               if (frame != NULL)
5106                 select_frame (frame);
5107               else
5108                 within_current_scope = 0;
5109             }
5110           if (within_current_scope)
5111             value_is_zero
5112               = catch_errors (breakpoint_cond_eval, cond,
5113                               "Error in testing breakpoint condition:\n",
5114                               RETURN_MASK_ALL);
5115           else
5116             {
5117               warning (_("Watchpoint condition cannot be tested "
5118                          "in the current scope"));
5119               /* If we failed to set the right context for this
5120                  watchpoint, unconditionally report it.  */
5121               value_is_zero = 0;
5122             }
5123           /* FIXME-someday, should give breakpoint #.  */
5124           value_free_to_mark (mark);
5125         }
5126
5127       if (cond && value_is_zero)
5128         {
5129           bs->stop = 0;
5130         }
5131       else if (b->thread != -1 && b->thread != thread_id)
5132         {
5133           bs->stop = 0;
5134         }
5135       else if (b->ignore_count > 0)
5136         {
5137           b->ignore_count--;
5138           bs->stop = 0;
5139           /* Increase the hit count even though we don't stop.  */
5140           ++(b->hit_count);
5141           observer_notify_breakpoint_modified (b);
5142         }       
5143     }
5144 }
5145
5146
5147 /* Get a bpstat associated with having just stopped at address
5148    BP_ADDR in thread PTID.
5149
5150    Determine whether we stopped at a breakpoint, etc, or whether we
5151    don't understand this stop.  Result is a chain of bpstat's such
5152    that:
5153
5154    if we don't understand the stop, the result is a null pointer.
5155
5156    if we understand why we stopped, the result is not null.
5157
5158    Each element of the chain refers to a particular breakpoint or
5159    watchpoint at which we have stopped.  (We may have stopped for
5160    several reasons concurrently.)
5161
5162    Each element of the chain has valid next, breakpoint_at,
5163    commands, FIXME??? fields.  */
5164
5165 bpstat
5166 bpstat_stop_status (struct address_space *aspace,
5167                     CORE_ADDR bp_addr, ptid_t ptid,
5168                     const struct target_waitstatus *ws)
5169 {
5170   struct breakpoint *b = NULL;
5171   struct bp_location *bl;
5172   struct bp_location *loc;
5173   /* First item of allocated bpstat's.  */
5174   bpstat bs_head = NULL, *bs_link = &bs_head;
5175   /* Pointer to the last thing in the chain currently.  */
5176   bpstat bs;
5177   int ix;
5178   int need_remove_insert;
5179   int removed_any;
5180
5181   /* First, build the bpstat chain with locations that explain a
5182      target stop, while being careful to not set the target running,
5183      as that may invalidate locations (in particular watchpoint
5184      locations are recreated).  Resuming will happen here with
5185      breakpoint conditions or watchpoint expressions that include
5186      inferior function calls.  */
5187
5188   ALL_BREAKPOINTS (b)
5189     {
5190       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5191         continue;
5192
5193       for (bl = b->loc; bl != NULL; bl = bl->next)
5194         {
5195           /* For hardware watchpoints, we look only at the first
5196              location.  The watchpoint_check function will work on the
5197              entire expression, not the individual locations.  For
5198              read watchpoints, the watchpoints_triggered function has
5199              checked all locations already.  */
5200           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5201             break;
5202
5203           if (!bl->enabled || bl->shlib_disabled)
5204             continue;
5205
5206           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5207             continue;
5208
5209           /* Come here if it's a watchpoint, or if the break address
5210              matches.  */
5211
5212           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5213                                                    explain stop.  */
5214
5215           /* Assume we stop.  Should we find a watchpoint that is not
5216              actually triggered, or if the condition of the breakpoint
5217              evaluates as false, we'll reset 'stop' to 0.  */
5218           bs->stop = 1;
5219           bs->print = 1;
5220
5221           /* If this is a scope breakpoint, mark the associated
5222              watchpoint as triggered so that we will handle the
5223              out-of-scope event.  We'll get to the watchpoint next
5224              iteration.  */
5225           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5226             {
5227               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5228
5229               w->watchpoint_triggered = watch_triggered_yes;
5230             }
5231         }
5232     }
5233
5234   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5235     {
5236       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5237         {
5238           bs = bpstat_alloc (loc, &bs_link);
5239           /* For hits of moribund locations, we should just proceed.  */
5240           bs->stop = 0;
5241           bs->print = 0;
5242           bs->print_it = print_it_noop;
5243         }
5244     }
5245
5246   /* A bit of special processing for shlib breakpoints.  We need to
5247      process solib loading here, so that the lists of loaded and
5248      unloaded libraries are correct before we handle "catch load" and
5249      "catch unload".  */
5250   for (bs = bs_head; bs != NULL; bs = bs->next)
5251     {
5252       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5253         {
5254           handle_solib_event ();
5255           break;
5256         }
5257     }
5258
5259   /* Now go through the locations that caused the target to stop, and
5260      check whether we're interested in reporting this stop to higher
5261      layers, or whether we should resume the target transparently.  */
5262
5263   removed_any = 0;
5264
5265   for (bs = bs_head; bs != NULL; bs = bs->next)
5266     {
5267       if (!bs->stop)
5268         continue;
5269
5270       b = bs->breakpoint_at;
5271       b->ops->check_status (bs);
5272       if (bs->stop)
5273         {
5274           bpstat_check_breakpoint_conditions (bs, ptid);
5275
5276           if (bs->stop)
5277             {
5278               ++(b->hit_count);
5279               observer_notify_breakpoint_modified (b);
5280
5281               /* We will stop here.  */
5282               if (b->disposition == disp_disable)
5283                 {
5284                   --(b->enable_count);
5285                   if (b->enable_count <= 0
5286                       && b->enable_state != bp_permanent)
5287                     b->enable_state = bp_disabled;
5288                   removed_any = 1;
5289                 }
5290               if (b->silent)
5291                 bs->print = 0;
5292               bs->commands = b->commands;
5293               incref_counted_command_line (bs->commands);
5294               if (command_line_is_silent (bs->commands
5295                                           ? bs->commands->commands : NULL))
5296                 bs->print = 0;
5297             }
5298
5299         }
5300
5301       /* Print nothing for this entry if we don't stop or don't
5302          print.  */
5303       if (!bs->stop || !bs->print)
5304         bs->print_it = print_it_noop;
5305     }
5306
5307   /* If we aren't stopping, the value of some hardware watchpoint may
5308      not have changed, but the intermediate memory locations we are
5309      watching may have.  Don't bother if we're stopping; this will get
5310      done later.  */
5311   need_remove_insert = 0;
5312   if (! bpstat_causes_stop (bs_head))
5313     for (bs = bs_head; bs != NULL; bs = bs->next)
5314       if (!bs->stop
5315           && bs->breakpoint_at
5316           && is_hardware_watchpoint (bs->breakpoint_at))
5317         {
5318           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5319
5320           update_watchpoint (w, 0 /* don't reparse.  */);
5321           need_remove_insert = 1;
5322         }
5323
5324   if (need_remove_insert)
5325     update_global_location_list (1);
5326   else if (removed_any)
5327     update_global_location_list (0);
5328
5329   return bs_head;
5330 }
5331
5332 static void
5333 handle_jit_event (void)
5334 {
5335   struct frame_info *frame;
5336   struct gdbarch *gdbarch;
5337
5338   /* Switch terminal for any messages produced by
5339      breakpoint_re_set.  */
5340   target_terminal_ours_for_output ();
5341
5342   frame = get_current_frame ();
5343   gdbarch = get_frame_arch (frame);
5344
5345   jit_event_handler (gdbarch);
5346
5347   target_terminal_inferior ();
5348 }
5349
5350 /* Handle an solib event by calling solib_add.  */
5351
5352 void
5353 handle_solib_event (void)
5354 {
5355   clear_program_space_solib_cache (current_inferior ()->pspace);
5356
5357   /* Check for any newly added shared libraries if we're supposed to
5358      be adding them automatically.  Switch terminal for any messages
5359      produced by breakpoint_re_set.  */
5360   target_terminal_ours_for_output ();
5361 #ifdef SOLIB_ADD
5362   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5363 #else
5364   solib_add (NULL, 0, &current_target, auto_solib_add);
5365 #endif
5366   target_terminal_inferior ();
5367 }
5368
5369 /* Prepare WHAT final decision for infrun.  */
5370
5371 /* Decide what infrun needs to do with this bpstat.  */
5372
5373 struct bpstat_what
5374 bpstat_what (bpstat bs_head)
5375 {
5376   struct bpstat_what retval;
5377   int jit_event = 0;
5378   bpstat bs;
5379
5380   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5381   retval.call_dummy = STOP_NONE;
5382   retval.is_longjmp = 0;
5383
5384   for (bs = bs_head; bs != NULL; bs = bs->next)
5385     {
5386       /* Extract this BS's action.  After processing each BS, we check
5387          if its action overrides all we've seem so far.  */
5388       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5389       enum bptype bptype;
5390
5391       if (bs->breakpoint_at == NULL)
5392         {
5393           /* I suspect this can happen if it was a momentary
5394              breakpoint which has since been deleted.  */
5395           bptype = bp_none;
5396         }
5397       else
5398         bptype = bs->breakpoint_at->type;
5399
5400       switch (bptype)
5401         {
5402         case bp_none:
5403           break;
5404         case bp_breakpoint:
5405         case bp_hardware_breakpoint:
5406         case bp_until:
5407         case bp_finish:
5408         case bp_shlib_event:
5409           if (bs->stop)
5410             {
5411               if (bs->print)
5412                 this_action = BPSTAT_WHAT_STOP_NOISY;
5413               else
5414                 this_action = BPSTAT_WHAT_STOP_SILENT;
5415             }
5416           else
5417             this_action = BPSTAT_WHAT_SINGLE;
5418           break;
5419         case bp_watchpoint:
5420         case bp_hardware_watchpoint:
5421         case bp_read_watchpoint:
5422         case bp_access_watchpoint:
5423           if (bs->stop)
5424             {
5425               if (bs->print)
5426                 this_action = BPSTAT_WHAT_STOP_NOISY;
5427               else
5428                 this_action = BPSTAT_WHAT_STOP_SILENT;
5429             }
5430           else
5431             {
5432               /* There was a watchpoint, but we're not stopping.
5433                  This requires no further action.  */
5434             }
5435           break;
5436         case bp_longjmp:
5437         case bp_longjmp_call_dummy:
5438         case bp_exception:
5439           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5440           retval.is_longjmp = bptype != bp_exception;
5441           break;
5442         case bp_longjmp_resume:
5443         case bp_exception_resume:
5444           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5445           retval.is_longjmp = bptype == bp_longjmp_resume;
5446           break;
5447         case bp_step_resume:
5448           if (bs->stop)
5449             this_action = BPSTAT_WHAT_STEP_RESUME;
5450           else
5451             {
5452               /* It is for the wrong frame.  */
5453               this_action = BPSTAT_WHAT_SINGLE;
5454             }
5455           break;
5456         case bp_hp_step_resume:
5457           if (bs->stop)
5458             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5459           else
5460             {
5461               /* It is for the wrong frame.  */
5462               this_action = BPSTAT_WHAT_SINGLE;
5463             }
5464           break;
5465         case bp_watchpoint_scope:
5466         case bp_thread_event:
5467         case bp_overlay_event:
5468         case bp_longjmp_master:
5469         case bp_std_terminate_master:
5470         case bp_exception_master:
5471           this_action = BPSTAT_WHAT_SINGLE;
5472           break;
5473         case bp_catchpoint:
5474           if (bs->stop)
5475             {
5476               if (bs->print)
5477                 this_action = BPSTAT_WHAT_STOP_NOISY;
5478               else
5479                 this_action = BPSTAT_WHAT_STOP_SILENT;
5480             }
5481           else
5482             {
5483               /* There was a catchpoint, but we're not stopping.
5484                  This requires no further action.  */
5485             }
5486           break;
5487         case bp_jit_event:
5488           jit_event = 1;
5489           this_action = BPSTAT_WHAT_SINGLE;
5490           break;
5491         case bp_call_dummy:
5492           /* Make sure the action is stop (silent or noisy),
5493              so infrun.c pops the dummy frame.  */
5494           retval.call_dummy = STOP_STACK_DUMMY;
5495           this_action = BPSTAT_WHAT_STOP_SILENT;
5496           break;
5497         case bp_std_terminate:
5498           /* Make sure the action is stop (silent or noisy),
5499              so infrun.c pops the dummy frame.  */
5500           retval.call_dummy = STOP_STD_TERMINATE;
5501           this_action = BPSTAT_WHAT_STOP_SILENT;
5502           break;
5503         case bp_tracepoint:
5504         case bp_fast_tracepoint:
5505         case bp_static_tracepoint:
5506           /* Tracepoint hits should not be reported back to GDB, and
5507              if one got through somehow, it should have been filtered
5508              out already.  */
5509           internal_error (__FILE__, __LINE__,
5510                           _("bpstat_what: tracepoint encountered"));
5511           break;
5512         case bp_gnu_ifunc_resolver:
5513           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5514           this_action = BPSTAT_WHAT_SINGLE;
5515           break;
5516         case bp_gnu_ifunc_resolver_return:
5517           /* The breakpoint will be removed, execution will restart from the
5518              PC of the former breakpoint.  */
5519           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5520           break;
5521
5522         case bp_dprintf:
5523           this_action = BPSTAT_WHAT_STOP_SILENT;
5524           break;
5525
5526         default:
5527           internal_error (__FILE__, __LINE__,
5528                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5529         }
5530
5531       retval.main_action = max (retval.main_action, this_action);
5532     }
5533
5534   /* These operations may affect the bs->breakpoint_at state so they are
5535      delayed after MAIN_ACTION is decided above.  */
5536
5537   if (jit_event)
5538     {
5539       if (debug_infrun)
5540         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5541
5542       handle_jit_event ();
5543     }
5544
5545   for (bs = bs_head; bs != NULL; bs = bs->next)
5546     {
5547       struct breakpoint *b = bs->breakpoint_at;
5548
5549       if (b == NULL)
5550         continue;
5551       switch (b->type)
5552         {
5553         case bp_gnu_ifunc_resolver:
5554           gnu_ifunc_resolver_stop (b);
5555           break;
5556         case bp_gnu_ifunc_resolver_return:
5557           gnu_ifunc_resolver_return_stop (b);
5558           break;
5559         }
5560     }
5561
5562   return retval;
5563 }
5564
5565 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5566    without hardware support).  This isn't related to a specific bpstat,
5567    just to things like whether watchpoints are set.  */
5568
5569 int
5570 bpstat_should_step (void)
5571 {
5572   struct breakpoint *b;
5573
5574   ALL_BREAKPOINTS (b)
5575     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5576       return 1;
5577   return 0;
5578 }
5579
5580 int
5581 bpstat_causes_stop (bpstat bs)
5582 {
5583   for (; bs != NULL; bs = bs->next)
5584     if (bs->stop)
5585       return 1;
5586
5587   return 0;
5588 }
5589
5590 \f
5591
5592 /* Compute a string of spaces suitable to indent the next line
5593    so it starts at the position corresponding to the table column
5594    named COL_NAME in the currently active table of UIOUT.  */
5595
5596 static char *
5597 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5598 {
5599   static char wrap_indent[80];
5600   int i, total_width, width, align;
5601   char *text;
5602
5603   total_width = 0;
5604   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5605     {
5606       if (strcmp (text, col_name) == 0)
5607         {
5608           gdb_assert (total_width < sizeof wrap_indent);
5609           memset (wrap_indent, ' ', total_width);
5610           wrap_indent[total_width] = 0;
5611
5612           return wrap_indent;
5613         }
5614
5615       total_width += width + 1;
5616     }
5617
5618   return NULL;
5619 }
5620
5621 /* Determine if the locations of this breakpoint will have their conditions
5622    evaluated by the target, host or a mix of both.  Returns the following:
5623
5624     "host": Host evals condition.
5625     "host or target": Host or Target evals condition.
5626     "target": Target evals condition.
5627 */
5628
5629 static const char *
5630 bp_condition_evaluator (struct breakpoint *b)
5631 {
5632   struct bp_location *bl;
5633   char host_evals = 0;
5634   char target_evals = 0;
5635
5636   if (!b)
5637     return NULL;
5638
5639   if (!is_breakpoint (b))
5640     return NULL;
5641
5642   if (gdb_evaluates_breakpoint_condition_p ()
5643       || !target_supports_evaluation_of_breakpoint_conditions ())
5644     return condition_evaluation_host;
5645
5646   for (bl = b->loc; bl; bl = bl->next)
5647     {
5648       if (bl->cond_bytecode)
5649         target_evals++;
5650       else
5651         host_evals++;
5652     }
5653
5654   if (host_evals && target_evals)
5655     return condition_evaluation_both;
5656   else if (target_evals)
5657     return condition_evaluation_target;
5658   else
5659     return condition_evaluation_host;
5660 }
5661
5662 /* Determine the breakpoint location's condition evaluator.  This is
5663    similar to bp_condition_evaluator, but for locations.  */
5664
5665 static const char *
5666 bp_location_condition_evaluator (struct bp_location *bl)
5667 {
5668   if (bl && !is_breakpoint (bl->owner))
5669     return NULL;
5670
5671   if (gdb_evaluates_breakpoint_condition_p ()
5672       || !target_supports_evaluation_of_breakpoint_conditions ())
5673     return condition_evaluation_host;
5674
5675   if (bl && bl->cond_bytecode)
5676     return condition_evaluation_target;
5677   else
5678     return condition_evaluation_host;
5679 }
5680
5681 /* Print the LOC location out of the list of B->LOC locations.  */
5682
5683 static void
5684 print_breakpoint_location (struct breakpoint *b,
5685                            struct bp_location *loc)
5686 {
5687   struct ui_out *uiout = current_uiout;
5688   struct cleanup *old_chain = save_current_program_space ();
5689
5690   if (loc != NULL && loc->shlib_disabled)
5691     loc = NULL;
5692
5693   if (loc != NULL)
5694     set_current_program_space (loc->pspace);
5695
5696   if (b->display_canonical)
5697     ui_out_field_string (uiout, "what", b->addr_string);
5698   else if (loc && loc->symtab)
5699     {
5700       struct symbol *sym 
5701         = find_pc_sect_function (loc->address, loc->section);
5702       if (sym)
5703         {
5704           ui_out_text (uiout, "in ");
5705           ui_out_field_string (uiout, "func",
5706                                SYMBOL_PRINT_NAME (sym));
5707           ui_out_text (uiout, " ");
5708           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5709           ui_out_text (uiout, "at ");
5710         }
5711       ui_out_field_string (uiout, "file",
5712                            symtab_to_filename_for_display (loc->symtab));
5713       ui_out_text (uiout, ":");
5714
5715       if (ui_out_is_mi_like_p (uiout))
5716         ui_out_field_string (uiout, "fullname",
5717                              symtab_to_fullname (loc->symtab));
5718       
5719       ui_out_field_int (uiout, "line", loc->line_number);
5720     }
5721   else if (loc)
5722     {
5723       struct ui_file *stb = mem_fileopen ();
5724       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5725
5726       print_address_symbolic (loc->gdbarch, loc->address, stb,
5727                               demangle, "");
5728       ui_out_field_stream (uiout, "at", stb);
5729
5730       do_cleanups (stb_chain);
5731     }
5732   else
5733     ui_out_field_string (uiout, "pending", b->addr_string);
5734
5735   if (loc && is_breakpoint (b)
5736       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5737       && bp_condition_evaluator (b) == condition_evaluation_both)
5738     {
5739       ui_out_text (uiout, " (");
5740       ui_out_field_string (uiout, "evaluated-by",
5741                            bp_location_condition_evaluator (loc));
5742       ui_out_text (uiout, ")");
5743     }
5744
5745   do_cleanups (old_chain);
5746 }
5747
5748 static const char *
5749 bptype_string (enum bptype type)
5750 {
5751   struct ep_type_description
5752     {
5753       enum bptype type;
5754       char *description;
5755     };
5756   static struct ep_type_description bptypes[] =
5757   {
5758     {bp_none, "?deleted?"},
5759     {bp_breakpoint, "breakpoint"},
5760     {bp_hardware_breakpoint, "hw breakpoint"},
5761     {bp_until, "until"},
5762     {bp_finish, "finish"},
5763     {bp_watchpoint, "watchpoint"},
5764     {bp_hardware_watchpoint, "hw watchpoint"},
5765     {bp_read_watchpoint, "read watchpoint"},
5766     {bp_access_watchpoint, "acc watchpoint"},
5767     {bp_longjmp, "longjmp"},
5768     {bp_longjmp_resume, "longjmp resume"},
5769     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5770     {bp_exception, "exception"},
5771     {bp_exception_resume, "exception resume"},
5772     {bp_step_resume, "step resume"},
5773     {bp_hp_step_resume, "high-priority step resume"},
5774     {bp_watchpoint_scope, "watchpoint scope"},
5775     {bp_call_dummy, "call dummy"},
5776     {bp_std_terminate, "std::terminate"},
5777     {bp_shlib_event, "shlib events"},
5778     {bp_thread_event, "thread events"},
5779     {bp_overlay_event, "overlay events"},
5780     {bp_longjmp_master, "longjmp master"},
5781     {bp_std_terminate_master, "std::terminate master"},
5782     {bp_exception_master, "exception master"},
5783     {bp_catchpoint, "catchpoint"},
5784     {bp_tracepoint, "tracepoint"},
5785     {bp_fast_tracepoint, "fast tracepoint"},
5786     {bp_static_tracepoint, "static tracepoint"},
5787     {bp_dprintf, "dprintf"},
5788     {bp_jit_event, "jit events"},
5789     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5790     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5791   };
5792
5793   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5794       || ((int) type != bptypes[(int) type].type))
5795     internal_error (__FILE__, __LINE__,
5796                     _("bptypes table does not describe type #%d."),
5797                     (int) type);
5798
5799   return bptypes[(int) type].description;
5800 }
5801
5802 DEF_VEC_I(int);
5803
5804 /* For MI, output a field named 'thread-groups' with a list as the value.
5805    For CLI, prefix the list with the string 'inf'. */
5806
5807 static void
5808 output_thread_groups (struct ui_out *uiout,
5809                       const char *field_name,
5810                       VEC(int) *inf_num,
5811                       int mi_only)
5812 {
5813   struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
5814                                                                 field_name);
5815   int is_mi = ui_out_is_mi_like_p (uiout);
5816   int inf;
5817   int i;
5818
5819   /* For backward compatibility, don't display inferiors in CLI unless
5820      there are several.  Always display them for MI. */
5821   if (!is_mi && mi_only)
5822     return;
5823
5824   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5825     {
5826       if (is_mi)
5827         {
5828           char mi_group[10];
5829
5830           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5831           ui_out_field_string (uiout, NULL, mi_group);
5832         }
5833       else
5834         {
5835           if (i == 0)
5836             ui_out_text (uiout, " inf ");
5837           else
5838             ui_out_text (uiout, ", ");
5839         
5840           ui_out_text (uiout, plongest (inf));
5841         }
5842     }
5843
5844   do_cleanups (back_to);
5845 }
5846
5847 /* Print B to gdb_stdout.  */
5848
5849 static void
5850 print_one_breakpoint_location (struct breakpoint *b,
5851                                struct bp_location *loc,
5852                                int loc_number,
5853                                struct bp_location **last_loc,
5854                                int allflag)
5855 {
5856   struct command_line *l;
5857   static char bpenables[] = "nynny";
5858
5859   struct ui_out *uiout = current_uiout;
5860   int header_of_multiple = 0;
5861   int part_of_multiple = (loc != NULL);
5862   struct value_print_options opts;
5863
5864   get_user_print_options (&opts);
5865
5866   gdb_assert (!loc || loc_number != 0);
5867   /* See comment in print_one_breakpoint concerning treatment of
5868      breakpoints with single disabled location.  */
5869   if (loc == NULL 
5870       && (b->loc != NULL 
5871           && (b->loc->next != NULL || !b->loc->enabled)))
5872     header_of_multiple = 1;
5873   if (loc == NULL)
5874     loc = b->loc;
5875
5876   annotate_record ();
5877
5878   /* 1 */
5879   annotate_field (0);
5880   if (part_of_multiple)
5881     {
5882       char *formatted;
5883       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5884       ui_out_field_string (uiout, "number", formatted);
5885       xfree (formatted);
5886     }
5887   else
5888     {
5889       ui_out_field_int (uiout, "number", b->number);
5890     }
5891
5892   /* 2 */
5893   annotate_field (1);
5894   if (part_of_multiple)
5895     ui_out_field_skip (uiout, "type");
5896   else
5897     ui_out_field_string (uiout, "type", bptype_string (b->type));
5898
5899   /* 3 */
5900   annotate_field (2);
5901   if (part_of_multiple)
5902     ui_out_field_skip (uiout, "disp");
5903   else
5904     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5905
5906
5907   /* 4 */
5908   annotate_field (3);
5909   if (part_of_multiple)
5910     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5911   else
5912     ui_out_field_fmt (uiout, "enabled", "%c", 
5913                       bpenables[(int) b->enable_state]);
5914   ui_out_spaces (uiout, 2);
5915
5916   
5917   /* 5 and 6 */
5918   if (b->ops != NULL && b->ops->print_one != NULL)
5919     {
5920       /* Although the print_one can possibly print all locations,
5921          calling it here is not likely to get any nice result.  So,
5922          make sure there's just one location.  */
5923       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5924       b->ops->print_one (b, last_loc);
5925     }
5926   else
5927     switch (b->type)
5928       {
5929       case bp_none:
5930         internal_error (__FILE__, __LINE__,
5931                         _("print_one_breakpoint: bp_none encountered\n"));
5932         break;
5933
5934       case bp_watchpoint:
5935       case bp_hardware_watchpoint:
5936       case bp_read_watchpoint:
5937       case bp_access_watchpoint:
5938         {
5939           struct watchpoint *w = (struct watchpoint *) b;
5940
5941           /* Field 4, the address, is omitted (which makes the columns
5942              not line up too nicely with the headers, but the effect
5943              is relatively readable).  */
5944           if (opts.addressprint)
5945             ui_out_field_skip (uiout, "addr");
5946           annotate_field (5);
5947           ui_out_field_string (uiout, "what", w->exp_string);
5948         }
5949         break;
5950
5951       case bp_breakpoint:
5952       case bp_hardware_breakpoint:
5953       case bp_until:
5954       case bp_finish:
5955       case bp_longjmp:
5956       case bp_longjmp_resume:
5957       case bp_longjmp_call_dummy:
5958       case bp_exception:
5959       case bp_exception_resume:
5960       case bp_step_resume:
5961       case bp_hp_step_resume:
5962       case bp_watchpoint_scope:
5963       case bp_call_dummy:
5964       case bp_std_terminate:
5965       case bp_shlib_event:
5966       case bp_thread_event:
5967       case bp_overlay_event:
5968       case bp_longjmp_master:
5969       case bp_std_terminate_master:
5970       case bp_exception_master:
5971       case bp_tracepoint:
5972       case bp_fast_tracepoint:
5973       case bp_static_tracepoint:
5974       case bp_dprintf:
5975       case bp_jit_event:
5976       case bp_gnu_ifunc_resolver:
5977       case bp_gnu_ifunc_resolver_return:
5978         if (opts.addressprint)
5979           {
5980             annotate_field (4);
5981             if (header_of_multiple)
5982               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5983             else if (b->loc == NULL || loc->shlib_disabled)
5984               ui_out_field_string (uiout, "addr", "<PENDING>");
5985             else
5986               ui_out_field_core_addr (uiout, "addr",
5987                                       loc->gdbarch, loc->address);
5988           }
5989         annotate_field (5);
5990         if (!header_of_multiple)
5991           print_breakpoint_location (b, loc);
5992         if (b->loc)
5993           *last_loc = b->loc;
5994         break;
5995       }
5996
5997
5998   if (loc != NULL && !header_of_multiple)
5999     {
6000       struct inferior *inf;
6001       VEC(int) *inf_num = NULL;
6002       int mi_only = 1;
6003
6004       ALL_INFERIORS (inf)
6005         {
6006           if (inf->pspace == loc->pspace)
6007             VEC_safe_push (int, inf_num, inf->num);
6008         }
6009
6010         /* For backward compatibility, don't display inferiors in CLI unless
6011            there are several.  Always display for MI. */
6012         if (allflag
6013             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6014                 && (number_of_program_spaces () > 1
6015                     || number_of_inferiors () > 1)
6016                 /* LOC is for existing B, it cannot be in
6017                    moribund_locations and thus having NULL OWNER.  */
6018                 && loc->owner->type != bp_catchpoint))
6019         mi_only = 0;
6020       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6021       VEC_free (int, inf_num);
6022     }
6023
6024   if (!part_of_multiple)
6025     {
6026       if (b->thread != -1)
6027         {
6028           /* FIXME: This seems to be redundant and lost here; see the
6029              "stop only in" line a little further down.  */
6030           ui_out_text (uiout, " thread ");
6031           ui_out_field_int (uiout, "thread", b->thread);
6032         }
6033       else if (b->task != 0)
6034         {
6035           ui_out_text (uiout, " task ");
6036           ui_out_field_int (uiout, "task", b->task);
6037         }
6038     }
6039
6040   ui_out_text (uiout, "\n");
6041
6042   if (!part_of_multiple)
6043     b->ops->print_one_detail (b, uiout);
6044
6045   if (part_of_multiple && frame_id_p (b->frame_id))
6046     {
6047       annotate_field (6);
6048       ui_out_text (uiout, "\tstop only in stack frame at ");
6049       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6050          the frame ID.  */
6051       ui_out_field_core_addr (uiout, "frame",
6052                               b->gdbarch, b->frame_id.stack_addr);
6053       ui_out_text (uiout, "\n");
6054     }
6055   
6056   if (!part_of_multiple && b->cond_string)
6057     {
6058       annotate_field (7);
6059       if (is_tracepoint (b))
6060         ui_out_text (uiout, "\ttrace only if ");
6061       else
6062         ui_out_text (uiout, "\tstop only if ");
6063       ui_out_field_string (uiout, "cond", b->cond_string);
6064
6065       /* Print whether the target is doing the breakpoint's condition
6066          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6067       if (is_breakpoint (b)
6068           && breakpoint_condition_evaluation_mode ()
6069           == condition_evaluation_target)
6070         {
6071           ui_out_text (uiout, " (");
6072           ui_out_field_string (uiout, "evaluated-by",
6073                                bp_condition_evaluator (b));
6074           ui_out_text (uiout, " evals)");
6075         }
6076       ui_out_text (uiout, "\n");
6077     }
6078
6079   if (!part_of_multiple && b->thread != -1)
6080     {
6081       /* FIXME should make an annotation for this.  */
6082       ui_out_text (uiout, "\tstop only in thread ");
6083       ui_out_field_int (uiout, "thread", b->thread);
6084       ui_out_text (uiout, "\n");
6085     }
6086   
6087   if (!part_of_multiple)
6088     {
6089       if (b->hit_count)
6090         {
6091           /* FIXME should make an annotation for this.  */
6092           if (is_catchpoint (b))
6093             ui_out_text (uiout, "\tcatchpoint");
6094           else if (is_tracepoint (b))
6095             ui_out_text (uiout, "\ttracepoint");
6096           else
6097             ui_out_text (uiout, "\tbreakpoint");
6098           ui_out_text (uiout, " already hit ");
6099           ui_out_field_int (uiout, "times", b->hit_count);
6100           if (b->hit_count == 1)
6101             ui_out_text (uiout, " time\n");
6102           else
6103             ui_out_text (uiout, " times\n");
6104         }
6105       else
6106         {
6107           /* Output the count also if it is zero, but only if this is mi.  */
6108           if (ui_out_is_mi_like_p (uiout))
6109             ui_out_field_int (uiout, "times", b->hit_count);
6110         }
6111     }
6112
6113   if (!part_of_multiple && b->ignore_count)
6114     {
6115       annotate_field (8);
6116       ui_out_text (uiout, "\tignore next ");
6117       ui_out_field_int (uiout, "ignore", b->ignore_count);
6118       ui_out_text (uiout, " hits\n");
6119     }
6120
6121   /* Note that an enable count of 1 corresponds to "enable once"
6122      behavior, which is reported by the combination of enablement and
6123      disposition, so we don't need to mention it here.  */
6124   if (!part_of_multiple && b->enable_count > 1)
6125     {
6126       annotate_field (8);
6127       ui_out_text (uiout, "\tdisable after ");
6128       /* Tweak the wording to clarify that ignore and enable counts
6129          are distinct, and have additive effect.  */
6130       if (b->ignore_count)
6131         ui_out_text (uiout, "additional ");
6132       else
6133         ui_out_text (uiout, "next ");
6134       ui_out_field_int (uiout, "enable", b->enable_count);
6135       ui_out_text (uiout, " hits\n");
6136     }
6137
6138   if (!part_of_multiple && is_tracepoint (b))
6139     {
6140       struct tracepoint *tp = (struct tracepoint *) b;
6141
6142       if (tp->traceframe_usage)
6143         {
6144           ui_out_text (uiout, "\ttrace buffer usage ");
6145           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6146           ui_out_text (uiout, " bytes\n");
6147         }
6148     }
6149
6150   l = b->commands ? b->commands->commands : NULL;
6151   if (!part_of_multiple && l)
6152     {
6153       struct cleanup *script_chain;
6154
6155       annotate_field (9);
6156       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6157       print_command_lines (uiout, l, 4);
6158       do_cleanups (script_chain);
6159     }
6160
6161   if (is_tracepoint (b))
6162     {
6163       struct tracepoint *t = (struct tracepoint *) b;
6164
6165       if (!part_of_multiple && t->pass_count)
6166         {
6167           annotate_field (10);
6168           ui_out_text (uiout, "\tpass count ");
6169           ui_out_field_int (uiout, "pass", t->pass_count);
6170           ui_out_text (uiout, " \n");
6171         }
6172
6173       /* Don't display it when tracepoint or tracepoint location is
6174          pending.   */
6175       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6176         {
6177           annotate_field (11);
6178
6179           if (ui_out_is_mi_like_p (uiout))
6180             ui_out_field_string (uiout, "installed",
6181                                  loc->inserted ? "y" : "n");
6182           else
6183             {
6184               if (loc->inserted)
6185                 ui_out_text (uiout, "\t");
6186               else
6187                 ui_out_text (uiout, "\tnot ");
6188               ui_out_text (uiout, "installed on target\n");
6189             }
6190         }
6191     }
6192
6193   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6194     {
6195       if (is_watchpoint (b))
6196         {
6197           struct watchpoint *w = (struct watchpoint *) b;
6198
6199           ui_out_field_string (uiout, "original-location", w->exp_string);
6200         }
6201       else if (b->addr_string)
6202         ui_out_field_string (uiout, "original-location", b->addr_string);
6203     }
6204 }
6205
6206 static void
6207 print_one_breakpoint (struct breakpoint *b,
6208                       struct bp_location **last_loc, 
6209                       int allflag)
6210 {
6211   struct cleanup *bkpt_chain;
6212   struct ui_out *uiout = current_uiout;
6213
6214   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6215
6216   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6217   do_cleanups (bkpt_chain);
6218
6219   /* If this breakpoint has custom print function,
6220      it's already printed.  Otherwise, print individual
6221      locations, if any.  */
6222   if (b->ops == NULL || b->ops->print_one == NULL)
6223     {
6224       /* If breakpoint has a single location that is disabled, we
6225          print it as if it had several locations, since otherwise it's
6226          hard to represent "breakpoint enabled, location disabled"
6227          situation.
6228
6229          Note that while hardware watchpoints have several locations
6230          internally, that's not a property exposed to user.  */
6231       if (b->loc 
6232           && !is_hardware_watchpoint (b)
6233           && (b->loc->next || !b->loc->enabled))
6234         {
6235           struct bp_location *loc;
6236           int n = 1;
6237
6238           for (loc = b->loc; loc; loc = loc->next, ++n)
6239             {
6240               struct cleanup *inner2 =
6241                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6242               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6243               do_cleanups (inner2);
6244             }
6245         }
6246     }
6247 }
6248
6249 static int
6250 breakpoint_address_bits (struct breakpoint *b)
6251 {
6252   int print_address_bits = 0;
6253   struct bp_location *loc;
6254
6255   for (loc = b->loc; loc; loc = loc->next)
6256     {
6257       int addr_bit;
6258
6259       /* Software watchpoints that aren't watching memory don't have
6260          an address to print.  */
6261       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6262         continue;
6263
6264       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6265       if (addr_bit > print_address_bits)
6266         print_address_bits = addr_bit;
6267     }
6268
6269   return print_address_bits;
6270 }
6271
6272 struct captured_breakpoint_query_args
6273   {
6274     int bnum;
6275   };
6276
6277 static int
6278 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6279 {
6280   struct captured_breakpoint_query_args *args = data;
6281   struct breakpoint *b;
6282   struct bp_location *dummy_loc = NULL;
6283
6284   ALL_BREAKPOINTS (b)
6285     {
6286       if (args->bnum == b->number)
6287         {
6288           print_one_breakpoint (b, &dummy_loc, 0);
6289           return GDB_RC_OK;
6290         }
6291     }
6292   return GDB_RC_NONE;
6293 }
6294
6295 enum gdb_rc
6296 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6297                       char **error_message)
6298 {
6299   struct captured_breakpoint_query_args args;
6300
6301   args.bnum = bnum;
6302   /* For the moment we don't trust print_one_breakpoint() to not throw
6303      an error.  */
6304   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6305                                  error_message, RETURN_MASK_ALL) < 0)
6306     return GDB_RC_FAIL;
6307   else
6308     return GDB_RC_OK;
6309 }
6310
6311 /* Return true if this breakpoint was set by the user, false if it is
6312    internal or momentary.  */
6313
6314 int
6315 user_breakpoint_p (struct breakpoint *b)
6316 {
6317   return b->number > 0;
6318 }
6319
6320 /* Print information on user settable breakpoint (watchpoint, etc)
6321    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6322    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6323    FILTER is non-NULL, call it on each breakpoint and only include the
6324    ones for which it returns non-zero.  Return the total number of
6325    breakpoints listed.  */
6326
6327 static int
6328 breakpoint_1 (char *args, int allflag, 
6329               int (*filter) (const struct breakpoint *))
6330 {
6331   struct breakpoint *b;
6332   struct bp_location *last_loc = NULL;
6333   int nr_printable_breakpoints;
6334   struct cleanup *bkpttbl_chain;
6335   struct value_print_options opts;
6336   int print_address_bits = 0;
6337   int print_type_col_width = 14;
6338   struct ui_out *uiout = current_uiout;
6339
6340   get_user_print_options (&opts);
6341
6342   /* Compute the number of rows in the table, as well as the size
6343      required for address fields.  */
6344   nr_printable_breakpoints = 0;
6345   ALL_BREAKPOINTS (b)
6346     {
6347       /* If we have a filter, only list the breakpoints it accepts.  */
6348       if (filter && !filter (b))
6349         continue;
6350
6351       /* If we have an "args" string, it is a list of breakpoints to 
6352          accept.  Skip the others.  */
6353       if (args != NULL && *args != '\0')
6354         {
6355           if (allflag && parse_and_eval_long (args) != b->number)
6356             continue;
6357           if (!allflag && !number_is_in_list (args, b->number))
6358             continue;
6359         }
6360
6361       if (allflag || user_breakpoint_p (b))
6362         {
6363           int addr_bit, type_len;
6364
6365           addr_bit = breakpoint_address_bits (b);
6366           if (addr_bit > print_address_bits)
6367             print_address_bits = addr_bit;
6368
6369           type_len = strlen (bptype_string (b->type));
6370           if (type_len > print_type_col_width)
6371             print_type_col_width = type_len;
6372
6373           nr_printable_breakpoints++;
6374         }
6375     }
6376
6377   if (opts.addressprint)
6378     bkpttbl_chain 
6379       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6380                                              nr_printable_breakpoints,
6381                                              "BreakpointTable");
6382   else
6383     bkpttbl_chain 
6384       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6385                                              nr_printable_breakpoints,
6386                                              "BreakpointTable");
6387
6388   if (nr_printable_breakpoints > 0)
6389     annotate_breakpoints_headers ();
6390   if (nr_printable_breakpoints > 0)
6391     annotate_field (0);
6392   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6393   if (nr_printable_breakpoints > 0)
6394     annotate_field (1);
6395   ui_out_table_header (uiout, print_type_col_width, ui_left,
6396                        "type", "Type");                         /* 2 */
6397   if (nr_printable_breakpoints > 0)
6398     annotate_field (2);
6399   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6400   if (nr_printable_breakpoints > 0)
6401     annotate_field (3);
6402   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6403   if (opts.addressprint)
6404     {
6405       if (nr_printable_breakpoints > 0)
6406         annotate_field (4);
6407       if (print_address_bits <= 32)
6408         ui_out_table_header (uiout, 10, ui_left, 
6409                              "addr", "Address");                /* 5 */
6410       else
6411         ui_out_table_header (uiout, 18, ui_left, 
6412                              "addr", "Address");                /* 5 */
6413     }
6414   if (nr_printable_breakpoints > 0)
6415     annotate_field (5);
6416   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6417   ui_out_table_body (uiout);
6418   if (nr_printable_breakpoints > 0)
6419     annotate_breakpoints_table ();
6420
6421   ALL_BREAKPOINTS (b)
6422     {
6423       QUIT;
6424       /* If we have a filter, only list the breakpoints it accepts.  */
6425       if (filter && !filter (b))
6426         continue;
6427
6428       /* If we have an "args" string, it is a list of breakpoints to 
6429          accept.  Skip the others.  */
6430
6431       if (args != NULL && *args != '\0')
6432         {
6433           if (allflag)  /* maintenance info breakpoint */
6434             {
6435               if (parse_and_eval_long (args) != b->number)
6436                 continue;
6437             }
6438           else          /* all others */
6439             {
6440               if (!number_is_in_list (args, b->number))
6441                 continue;
6442             }
6443         }
6444       /* We only print out user settable breakpoints unless the
6445          allflag is set.  */
6446       if (allflag || user_breakpoint_p (b))
6447         print_one_breakpoint (b, &last_loc, allflag);
6448     }
6449
6450   do_cleanups (bkpttbl_chain);
6451
6452   if (nr_printable_breakpoints == 0)
6453     {
6454       /* If there's a filter, let the caller decide how to report
6455          empty list.  */
6456       if (!filter)
6457         {
6458           if (args == NULL || *args == '\0')
6459             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6460           else
6461             ui_out_message (uiout, 0, 
6462                             "No breakpoint or watchpoint matching '%s'.\n",
6463                             args);
6464         }
6465     }
6466   else
6467     {
6468       if (last_loc && !server_command)
6469         set_next_address (last_loc->gdbarch, last_loc->address);
6470     }
6471
6472   /* FIXME?  Should this be moved up so that it is only called when
6473      there have been breakpoints? */
6474   annotate_breakpoints_table_end ();
6475
6476   return nr_printable_breakpoints;
6477 }
6478
6479 /* Display the value of default-collect in a way that is generally
6480    compatible with the breakpoint list.  */
6481
6482 static void
6483 default_collect_info (void)
6484 {
6485   struct ui_out *uiout = current_uiout;
6486
6487   /* If it has no value (which is frequently the case), say nothing; a
6488      message like "No default-collect." gets in user's face when it's
6489      not wanted.  */
6490   if (!*default_collect)
6491     return;
6492
6493   /* The following phrase lines up nicely with per-tracepoint collect
6494      actions.  */
6495   ui_out_text (uiout, "default collect ");
6496   ui_out_field_string (uiout, "default-collect", default_collect);
6497   ui_out_text (uiout, " \n");
6498 }
6499   
6500 static void
6501 breakpoints_info (char *args, int from_tty)
6502 {
6503   breakpoint_1 (args, 0, NULL);
6504
6505   default_collect_info ();
6506 }
6507
6508 static void
6509 watchpoints_info (char *args, int from_tty)
6510 {
6511   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6512   struct ui_out *uiout = current_uiout;
6513
6514   if (num_printed == 0)
6515     {
6516       if (args == NULL || *args == '\0')
6517         ui_out_message (uiout, 0, "No watchpoints.\n");
6518       else
6519         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6520     }
6521 }
6522
6523 static void
6524 maintenance_info_breakpoints (char *args, int from_tty)
6525 {
6526   breakpoint_1 (args, 1, NULL);
6527
6528   default_collect_info ();
6529 }
6530
6531 static int
6532 breakpoint_has_pc (struct breakpoint *b,
6533                    struct program_space *pspace,
6534                    CORE_ADDR pc, struct obj_section *section)
6535 {
6536   struct bp_location *bl = b->loc;
6537
6538   for (; bl; bl = bl->next)
6539     {
6540       if (bl->pspace == pspace
6541           && bl->address == pc
6542           && (!overlay_debugging || bl->section == section))
6543         return 1;         
6544     }
6545   return 0;
6546 }
6547
6548 /* Print a message describing any user-breakpoints set at PC.  This
6549    concerns with logical breakpoints, so we match program spaces, not
6550    address spaces.  */
6551
6552 static void
6553 describe_other_breakpoints (struct gdbarch *gdbarch,
6554                             struct program_space *pspace, CORE_ADDR pc,
6555                             struct obj_section *section, int thread)
6556 {
6557   int others = 0;
6558   struct breakpoint *b;
6559
6560   ALL_BREAKPOINTS (b)
6561     others += (user_breakpoint_p (b)
6562                && breakpoint_has_pc (b, pspace, pc, section));
6563   if (others > 0)
6564     {
6565       if (others == 1)
6566         printf_filtered (_("Note: breakpoint "));
6567       else /* if (others == ???) */
6568         printf_filtered (_("Note: breakpoints "));
6569       ALL_BREAKPOINTS (b)
6570         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6571           {
6572             others--;
6573             printf_filtered ("%d", b->number);
6574             if (b->thread == -1 && thread != -1)
6575               printf_filtered (" (all threads)");
6576             else if (b->thread != -1)
6577               printf_filtered (" (thread %d)", b->thread);
6578             printf_filtered ("%s%s ",
6579                              ((b->enable_state == bp_disabled
6580                                || b->enable_state == bp_call_disabled)
6581                               ? " (disabled)"
6582                               : b->enable_state == bp_permanent 
6583                               ? " (permanent)"
6584                               : ""),
6585                              (others > 1) ? "," 
6586                              : ((others == 1) ? " and" : ""));
6587           }
6588       printf_filtered (_("also set at pc "));
6589       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6590       printf_filtered (".\n");
6591     }
6592 }
6593 \f
6594
6595 /* Return true iff it is meaningful to use the address member of
6596    BPT.  For some breakpoint types, the address member is irrelevant
6597    and it makes no sense to attempt to compare it to other addresses
6598    (or use it for any other purpose either).
6599
6600    More specifically, each of the following breakpoint types will
6601    always have a zero valued address and we don't want to mark
6602    breakpoints of any of these types to be a duplicate of an actual
6603    breakpoint at address zero:
6604
6605       bp_watchpoint
6606       bp_catchpoint
6607
6608 */
6609
6610 static int
6611 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6612 {
6613   enum bptype type = bpt->type;
6614
6615   return (type != bp_watchpoint && type != bp_catchpoint);
6616 }
6617
6618 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6619    true if LOC1 and LOC2 represent the same watchpoint location.  */
6620
6621 static int
6622 watchpoint_locations_match (struct bp_location *loc1, 
6623                             struct bp_location *loc2)
6624 {
6625   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6626   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6627
6628   /* Both of them must exist.  */
6629   gdb_assert (w1 != NULL);
6630   gdb_assert (w2 != NULL);
6631
6632   /* If the target can evaluate the condition expression in hardware,
6633      then we we need to insert both watchpoints even if they are at
6634      the same place.  Otherwise the watchpoint will only trigger when
6635      the condition of whichever watchpoint was inserted evaluates to
6636      true, not giving a chance for GDB to check the condition of the
6637      other watchpoint.  */
6638   if ((w1->cond_exp
6639        && target_can_accel_watchpoint_condition (loc1->address, 
6640                                                  loc1->length,
6641                                                  loc1->watchpoint_type,
6642                                                  w1->cond_exp))
6643       || (w2->cond_exp
6644           && target_can_accel_watchpoint_condition (loc2->address, 
6645                                                     loc2->length,
6646                                                     loc2->watchpoint_type,
6647                                                     w2->cond_exp)))
6648     return 0;
6649
6650   /* Note that this checks the owner's type, not the location's.  In
6651      case the target does not support read watchpoints, but does
6652      support access watchpoints, we'll have bp_read_watchpoint
6653      watchpoints with hw_access locations.  Those should be considered
6654      duplicates of hw_read locations.  The hw_read locations will
6655      become hw_access locations later.  */
6656   return (loc1->owner->type == loc2->owner->type
6657           && loc1->pspace->aspace == loc2->pspace->aspace
6658           && loc1->address == loc2->address
6659           && loc1->length == loc2->length);
6660 }
6661
6662 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6663    same breakpoint location.  In most targets, this can only be true
6664    if ASPACE1 matches ASPACE2.  On targets that have global
6665    breakpoints, the address space doesn't really matter.  */
6666
6667 static int
6668 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6669                           struct address_space *aspace2, CORE_ADDR addr2)
6670 {
6671   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6672            || aspace1 == aspace2)
6673           && addr1 == addr2);
6674 }
6675
6676 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6677    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6678    matches ASPACE2.  On targets that have global breakpoints, the address
6679    space doesn't really matter.  */
6680
6681 static int
6682 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6683                                 int len1, struct address_space *aspace2,
6684                                 CORE_ADDR addr2)
6685 {
6686   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6687            || aspace1 == aspace2)
6688           && addr2 >= addr1 && addr2 < addr1 + len1);
6689 }
6690
6691 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6692    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6693    matches the breakpoint's address space.  On targets that have global
6694    breakpoints, the address space doesn't really matter.  */
6695
6696 static int
6697 breakpoint_location_address_match (struct bp_location *bl,
6698                                    struct address_space *aspace,
6699                                    CORE_ADDR addr)
6700 {
6701   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6702                                     aspace, addr)
6703           || (bl->length
6704               && breakpoint_address_match_range (bl->pspace->aspace,
6705                                                  bl->address, bl->length,
6706                                                  aspace, addr)));
6707 }
6708
6709 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6710    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6711    true, otherwise returns false.  */
6712
6713 static int
6714 tracepoint_locations_match (struct bp_location *loc1,
6715                             struct bp_location *loc2)
6716 {
6717   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6718     /* Since tracepoint locations are never duplicated with others', tracepoint
6719        locations at the same address of different tracepoints are regarded as
6720        different locations.  */
6721     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6722   else
6723     return 0;
6724 }
6725
6726 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6727    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6728    represent the same location.  */
6729
6730 static int
6731 breakpoint_locations_match (struct bp_location *loc1, 
6732                             struct bp_location *loc2)
6733 {
6734   int hw_point1, hw_point2;
6735
6736   /* Both of them must not be in moribund_locations.  */
6737   gdb_assert (loc1->owner != NULL);
6738   gdb_assert (loc2->owner != NULL);
6739
6740   hw_point1 = is_hardware_watchpoint (loc1->owner);
6741   hw_point2 = is_hardware_watchpoint (loc2->owner);
6742
6743   if (hw_point1 != hw_point2)
6744     return 0;
6745   else if (hw_point1)
6746     return watchpoint_locations_match (loc1, loc2);
6747   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6748     return tracepoint_locations_match (loc1, loc2);
6749   else
6750     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6751     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6752                                      loc2->pspace->aspace, loc2->address)
6753             && loc1->length == loc2->length);
6754 }
6755
6756 static void
6757 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6758                                int bnum, int have_bnum)
6759 {
6760   /* The longest string possibly returned by hex_string_custom
6761      is 50 chars.  These must be at least that big for safety.  */
6762   char astr1[64];
6763   char astr2[64];
6764
6765   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6766   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6767   if (have_bnum)
6768     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6769              bnum, astr1, astr2);
6770   else
6771     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6772 }
6773
6774 /* Adjust a breakpoint's address to account for architectural
6775    constraints on breakpoint placement.  Return the adjusted address.
6776    Note: Very few targets require this kind of adjustment.  For most
6777    targets, this function is simply the identity function.  */
6778
6779 static CORE_ADDR
6780 adjust_breakpoint_address (struct gdbarch *gdbarch,
6781                            CORE_ADDR bpaddr, enum bptype bptype)
6782 {
6783   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6784     {
6785       /* Very few targets need any kind of breakpoint adjustment.  */
6786       return bpaddr;
6787     }
6788   else if (bptype == bp_watchpoint
6789            || bptype == bp_hardware_watchpoint
6790            || bptype == bp_read_watchpoint
6791            || bptype == bp_access_watchpoint
6792            || bptype == bp_catchpoint)
6793     {
6794       /* Watchpoints and the various bp_catch_* eventpoints should not
6795          have their addresses modified.  */
6796       return bpaddr;
6797     }
6798   else
6799     {
6800       CORE_ADDR adjusted_bpaddr;
6801
6802       /* Some targets have architectural constraints on the placement
6803          of breakpoint instructions.  Obtain the adjusted address.  */
6804       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6805
6806       /* An adjusted breakpoint address can significantly alter
6807          a user's expectations.  Print a warning if an adjustment
6808          is required.  */
6809       if (adjusted_bpaddr != bpaddr)
6810         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6811
6812       return adjusted_bpaddr;
6813     }
6814 }
6815
6816 void
6817 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6818                   struct breakpoint *owner)
6819 {
6820   memset (loc, 0, sizeof (*loc));
6821
6822   gdb_assert (ops != NULL);
6823
6824   loc->ops = ops;
6825   loc->owner = owner;
6826   loc->cond = NULL;
6827   loc->cond_bytecode = NULL;
6828   loc->shlib_disabled = 0;
6829   loc->enabled = 1;
6830
6831   switch (owner->type)
6832     {
6833     case bp_breakpoint:
6834     case bp_until:
6835     case bp_finish:
6836     case bp_longjmp:
6837     case bp_longjmp_resume:
6838     case bp_longjmp_call_dummy:
6839     case bp_exception:
6840     case bp_exception_resume:
6841     case bp_step_resume:
6842     case bp_hp_step_resume:
6843     case bp_watchpoint_scope:
6844     case bp_call_dummy:
6845     case bp_std_terminate:
6846     case bp_shlib_event:
6847     case bp_thread_event:
6848     case bp_overlay_event:
6849     case bp_jit_event:
6850     case bp_longjmp_master:
6851     case bp_std_terminate_master:
6852     case bp_exception_master:
6853     case bp_gnu_ifunc_resolver:
6854     case bp_gnu_ifunc_resolver_return:
6855     case bp_dprintf:
6856       loc->loc_type = bp_loc_software_breakpoint;
6857       mark_breakpoint_location_modified (loc);
6858       break;
6859     case bp_hardware_breakpoint:
6860       loc->loc_type = bp_loc_hardware_breakpoint;
6861       mark_breakpoint_location_modified (loc);
6862       break;
6863     case bp_hardware_watchpoint:
6864     case bp_read_watchpoint:
6865     case bp_access_watchpoint:
6866       loc->loc_type = bp_loc_hardware_watchpoint;
6867       break;
6868     case bp_watchpoint:
6869     case bp_catchpoint:
6870     case bp_tracepoint:
6871     case bp_fast_tracepoint:
6872     case bp_static_tracepoint:
6873       loc->loc_type = bp_loc_other;
6874       break;
6875     default:
6876       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6877     }
6878
6879   loc->refc = 1;
6880 }
6881
6882 /* Allocate a struct bp_location.  */
6883
6884 static struct bp_location *
6885 allocate_bp_location (struct breakpoint *bpt)
6886 {
6887   return bpt->ops->allocate_location (bpt);
6888 }
6889
6890 static void
6891 free_bp_location (struct bp_location *loc)
6892 {
6893   loc->ops->dtor (loc);
6894   xfree (loc);
6895 }
6896
6897 /* Increment reference count.  */
6898
6899 static void
6900 incref_bp_location (struct bp_location *bl)
6901 {
6902   ++bl->refc;
6903 }
6904
6905 /* Decrement reference count.  If the reference count reaches 0,
6906    destroy the bp_location.  Sets *BLP to NULL.  */
6907
6908 static void
6909 decref_bp_location (struct bp_location **blp)
6910 {
6911   gdb_assert ((*blp)->refc > 0);
6912
6913   if (--(*blp)->refc == 0)
6914     free_bp_location (*blp);
6915   *blp = NULL;
6916 }
6917
6918 /* Add breakpoint B at the end of the global breakpoint chain.  */
6919
6920 static void
6921 add_to_breakpoint_chain (struct breakpoint *b)
6922 {
6923   struct breakpoint *b1;
6924
6925   /* Add this breakpoint to the end of the chain so that a list of
6926      breakpoints will come out in order of increasing numbers.  */
6927
6928   b1 = breakpoint_chain;
6929   if (b1 == 0)
6930     breakpoint_chain = b;
6931   else
6932     {
6933       while (b1->next)
6934         b1 = b1->next;
6935       b1->next = b;
6936     }
6937 }
6938
6939 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6940
6941 static void
6942 init_raw_breakpoint_without_location (struct breakpoint *b,
6943                                       struct gdbarch *gdbarch,
6944                                       enum bptype bptype,
6945                                       const struct breakpoint_ops *ops)
6946 {
6947   memset (b, 0, sizeof (*b));
6948
6949   gdb_assert (ops != NULL);
6950
6951   b->ops = ops;
6952   b->type = bptype;
6953   b->gdbarch = gdbarch;
6954   b->language = current_language->la_language;
6955   b->input_radix = input_radix;
6956   b->thread = -1;
6957   b->enable_state = bp_enabled;
6958   b->next = 0;
6959   b->silent = 0;
6960   b->ignore_count = 0;
6961   b->commands = NULL;
6962   b->frame_id = null_frame_id;
6963   b->condition_not_parsed = 0;
6964   b->py_bp_object = NULL;
6965   b->related_breakpoint = b;
6966 }
6967
6968 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6969    that has type BPTYPE and has no locations as yet.  */
6970
6971 static struct breakpoint *
6972 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6973                                      enum bptype bptype,
6974                                      const struct breakpoint_ops *ops)
6975 {
6976   struct breakpoint *b = XNEW (struct breakpoint);
6977
6978   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6979   add_to_breakpoint_chain (b);
6980   return b;
6981 }
6982
6983 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6984    resolutions should be made as the user specified the location explicitly
6985    enough.  */
6986
6987 static void
6988 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6989 {
6990   gdb_assert (loc->owner != NULL);
6991
6992   if (loc->owner->type == bp_breakpoint
6993       || loc->owner->type == bp_hardware_breakpoint
6994       || is_tracepoint (loc->owner))
6995     {
6996       int is_gnu_ifunc;
6997       const char *function_name;
6998       CORE_ADDR func_addr;
6999
7000       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7001                                           &func_addr, NULL, &is_gnu_ifunc);
7002
7003       if (is_gnu_ifunc && !explicit_loc)
7004         {
7005           struct breakpoint *b = loc->owner;
7006
7007           gdb_assert (loc->pspace == current_program_space);
7008           if (gnu_ifunc_resolve_name (function_name,
7009                                       &loc->requested_address))
7010             {
7011               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7012               loc->address = adjust_breakpoint_address (loc->gdbarch,
7013                                                         loc->requested_address,
7014                                                         b->type);
7015             }
7016           else if (b->type == bp_breakpoint && b->loc == loc
7017                    && loc->next == NULL && b->related_breakpoint == b)
7018             {
7019               /* Create only the whole new breakpoint of this type but do not
7020                  mess more complicated breakpoints with multiple locations.  */
7021               b->type = bp_gnu_ifunc_resolver;
7022               /* Remember the resolver's address for use by the return
7023                  breakpoint.  */
7024               loc->related_address = func_addr;
7025             }
7026         }
7027
7028       if (function_name)
7029         loc->function_name = xstrdup (function_name);
7030     }
7031 }
7032
7033 /* Attempt to determine architecture of location identified by SAL.  */
7034 struct gdbarch *
7035 get_sal_arch (struct symtab_and_line sal)
7036 {
7037   if (sal.section)
7038     return get_objfile_arch (sal.section->objfile);
7039   if (sal.symtab)
7040     return get_objfile_arch (sal.symtab->objfile);
7041
7042   return NULL;
7043 }
7044
7045 /* Low level routine for partially initializing a breakpoint of type
7046    BPTYPE.  The newly created breakpoint's address, section, source
7047    file name, and line number are provided by SAL.
7048
7049    It is expected that the caller will complete the initialization of
7050    the newly created breakpoint struct as well as output any status
7051    information regarding the creation of a new breakpoint.  */
7052
7053 static void
7054 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7055                      struct symtab_and_line sal, enum bptype bptype,
7056                      const struct breakpoint_ops *ops)
7057 {
7058   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7059
7060   add_location_to_breakpoint (b, &sal);
7061
7062   if (bptype != bp_catchpoint)
7063     gdb_assert (sal.pspace != NULL);
7064
7065   /* Store the program space that was used to set the breakpoint,
7066      except for ordinary breakpoints, which are independent of the
7067      program space.  */
7068   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7069     b->pspace = sal.pspace;
7070 }
7071
7072 /* set_raw_breakpoint is a low level routine for allocating and
7073    partially initializing a breakpoint of type BPTYPE.  The newly
7074    created breakpoint's address, section, source file name, and line
7075    number are provided by SAL.  The newly created and partially
7076    initialized breakpoint is added to the breakpoint chain and
7077    is also returned as the value of this function.
7078
7079    It is expected that the caller will complete the initialization of
7080    the newly created breakpoint struct as well as output any status
7081    information regarding the creation of a new breakpoint.  In
7082    particular, set_raw_breakpoint does NOT set the breakpoint
7083    number!  Care should be taken to not allow an error to occur
7084    prior to completing the initialization of the breakpoint.  If this
7085    should happen, a bogus breakpoint will be left on the chain.  */
7086
7087 struct breakpoint *
7088 set_raw_breakpoint (struct gdbarch *gdbarch,
7089                     struct symtab_and_line sal, enum bptype bptype,
7090                     const struct breakpoint_ops *ops)
7091 {
7092   struct breakpoint *b = XNEW (struct breakpoint);
7093
7094   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7095   add_to_breakpoint_chain (b);
7096   return b;
7097 }
7098
7099
7100 /* Note that the breakpoint object B describes a permanent breakpoint
7101    instruction, hard-wired into the inferior's code.  */
7102 void
7103 make_breakpoint_permanent (struct breakpoint *b)
7104 {
7105   struct bp_location *bl;
7106
7107   b->enable_state = bp_permanent;
7108
7109   /* By definition, permanent breakpoints are already present in the
7110      code.  Mark all locations as inserted.  For now,
7111      make_breakpoint_permanent is called in just one place, so it's
7112      hard to say if it's reasonable to have permanent breakpoint with
7113      multiple locations or not, but it's easy to implement.  */
7114   for (bl = b->loc; bl; bl = bl->next)
7115     bl->inserted = 1;
7116 }
7117
7118 /* Call this routine when stepping and nexting to enable a breakpoint
7119    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7120    initiated the operation.  */
7121
7122 void
7123 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7124 {
7125   struct breakpoint *b, *b_tmp;
7126   int thread = tp->num;
7127
7128   /* To avoid having to rescan all objfile symbols at every step,
7129      we maintain a list of continually-inserted but always disabled
7130      longjmp "master" breakpoints.  Here, we simply create momentary
7131      clones of those and enable them for the requested thread.  */
7132   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7133     if (b->pspace == current_program_space
7134         && (b->type == bp_longjmp_master
7135             || b->type == bp_exception_master))
7136       {
7137         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7138         struct breakpoint *clone;
7139
7140         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7141            after their removal.  */
7142         clone = momentary_breakpoint_from_master (b, type,
7143                                                   &longjmp_breakpoint_ops);
7144         clone->thread = thread;
7145       }
7146
7147   tp->initiating_frame = frame;
7148 }
7149
7150 /* Delete all longjmp breakpoints from THREAD.  */
7151 void
7152 delete_longjmp_breakpoint (int thread)
7153 {
7154   struct breakpoint *b, *b_tmp;
7155
7156   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7157     if (b->type == bp_longjmp || b->type == bp_exception)
7158       {
7159         if (b->thread == thread)
7160           delete_breakpoint (b);
7161       }
7162 }
7163
7164 void
7165 delete_longjmp_breakpoint_at_next_stop (int thread)
7166 {
7167   struct breakpoint *b, *b_tmp;
7168
7169   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7170     if (b->type == bp_longjmp || b->type == bp_exception)
7171       {
7172         if (b->thread == thread)
7173           b->disposition = disp_del_at_next_stop;
7174       }
7175 }
7176
7177 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7178    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7179    pointer to any of them.  Return NULL if this system cannot place longjmp
7180    breakpoints.  */
7181
7182 struct breakpoint *
7183 set_longjmp_breakpoint_for_call_dummy (void)
7184 {
7185   struct breakpoint *b, *retval = NULL;
7186
7187   ALL_BREAKPOINTS (b)
7188     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7189       {
7190         struct breakpoint *new_b;
7191
7192         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7193                                                   &momentary_breakpoint_ops);
7194         new_b->thread = pid_to_thread_id (inferior_ptid);
7195
7196         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7197
7198         gdb_assert (new_b->related_breakpoint == new_b);
7199         if (retval == NULL)
7200           retval = new_b;
7201         new_b->related_breakpoint = retval;
7202         while (retval->related_breakpoint != new_b->related_breakpoint)
7203           retval = retval->related_breakpoint;
7204         retval->related_breakpoint = new_b;
7205       }
7206
7207   return retval;
7208 }
7209
7210 /* Verify all existing dummy frames and their associated breakpoints for
7211    THREAD.  Remove those which can no longer be found in the current frame
7212    stack.
7213
7214    You should call this function only at places where it is safe to currently
7215    unwind the whole stack.  Failed stack unwind would discard live dummy
7216    frames.  */
7217
7218 void
7219 check_longjmp_breakpoint_for_call_dummy (int thread)
7220 {
7221   struct breakpoint *b, *b_tmp;
7222
7223   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7224     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7225       {
7226         struct breakpoint *dummy_b = b->related_breakpoint;
7227
7228         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7229           dummy_b = dummy_b->related_breakpoint;
7230         if (dummy_b->type != bp_call_dummy
7231             || frame_find_by_id (dummy_b->frame_id) != NULL)
7232           continue;
7233         
7234         dummy_frame_discard (dummy_b->frame_id);
7235
7236         while (b->related_breakpoint != b)
7237           {
7238             if (b_tmp == b->related_breakpoint)
7239               b_tmp = b->related_breakpoint->next;
7240             delete_breakpoint (b->related_breakpoint);
7241           }
7242         delete_breakpoint (b);
7243       }
7244 }
7245
7246 void
7247 enable_overlay_breakpoints (void)
7248 {
7249   struct breakpoint *b;
7250
7251   ALL_BREAKPOINTS (b)
7252     if (b->type == bp_overlay_event)
7253     {
7254       b->enable_state = bp_enabled;
7255       update_global_location_list (1);
7256       overlay_events_enabled = 1;
7257     }
7258 }
7259
7260 void
7261 disable_overlay_breakpoints (void)
7262 {
7263   struct breakpoint *b;
7264
7265   ALL_BREAKPOINTS (b)
7266     if (b->type == bp_overlay_event)
7267     {
7268       b->enable_state = bp_disabled;
7269       update_global_location_list (0);
7270       overlay_events_enabled = 0;
7271     }
7272 }
7273
7274 /* Set an active std::terminate breakpoint for each std::terminate
7275    master breakpoint.  */
7276 void
7277 set_std_terminate_breakpoint (void)
7278 {
7279   struct breakpoint *b, *b_tmp;
7280
7281   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7282     if (b->pspace == current_program_space
7283         && b->type == bp_std_terminate_master)
7284       {
7285         momentary_breakpoint_from_master (b, bp_std_terminate,
7286                                           &momentary_breakpoint_ops);
7287       }
7288 }
7289
7290 /* Delete all the std::terminate breakpoints.  */
7291 void
7292 delete_std_terminate_breakpoint (void)
7293 {
7294   struct breakpoint *b, *b_tmp;
7295
7296   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7297     if (b->type == bp_std_terminate)
7298       delete_breakpoint (b);
7299 }
7300
7301 struct breakpoint *
7302 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7303 {
7304   struct breakpoint *b;
7305
7306   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7307                                   &internal_breakpoint_ops);
7308
7309   b->enable_state = bp_enabled;
7310   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7311   b->addr_string
7312     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7313
7314   update_global_location_list_nothrow (1);
7315
7316   return b;
7317 }
7318
7319 void
7320 remove_thread_event_breakpoints (void)
7321 {
7322   struct breakpoint *b, *b_tmp;
7323
7324   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7325     if (b->type == bp_thread_event
7326         && b->loc->pspace == current_program_space)
7327       delete_breakpoint (b);
7328 }
7329
7330 struct lang_and_radix
7331   {
7332     enum language lang;
7333     int radix;
7334   };
7335
7336 /* Create a breakpoint for JIT code registration and unregistration.  */
7337
7338 struct breakpoint *
7339 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7340 {
7341   struct breakpoint *b;
7342
7343   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7344                                   &internal_breakpoint_ops);
7345   update_global_location_list_nothrow (1);
7346   return b;
7347 }
7348
7349 /* Remove JIT code registration and unregistration breakpoint(s).  */
7350
7351 void
7352 remove_jit_event_breakpoints (void)
7353 {
7354   struct breakpoint *b, *b_tmp;
7355
7356   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7357     if (b->type == bp_jit_event
7358         && b->loc->pspace == current_program_space)
7359       delete_breakpoint (b);
7360 }
7361
7362 void
7363 remove_solib_event_breakpoints (void)
7364 {
7365   struct breakpoint *b, *b_tmp;
7366
7367   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7368     if (b->type == bp_shlib_event
7369         && b->loc->pspace == current_program_space)
7370       delete_breakpoint (b);
7371 }
7372
7373 struct breakpoint *
7374 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7375 {
7376   struct breakpoint *b;
7377
7378   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7379                                   &internal_breakpoint_ops);
7380   update_global_location_list_nothrow (1);
7381   return b;
7382 }
7383
7384 /* Disable any breakpoints that are on code in shared libraries.  Only
7385    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7386
7387 void
7388 disable_breakpoints_in_shlibs (void)
7389 {
7390   struct bp_location *loc, **locp_tmp;
7391
7392   ALL_BP_LOCATIONS (loc, locp_tmp)
7393   {
7394     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7395     struct breakpoint *b = loc->owner;
7396
7397     /* We apply the check to all breakpoints, including disabled for
7398        those with loc->duplicate set.  This is so that when breakpoint
7399        becomes enabled, or the duplicate is removed, gdb will try to
7400        insert all breakpoints.  If we don't set shlib_disabled here,
7401        we'll try to insert those breakpoints and fail.  */
7402     if (((b->type == bp_breakpoint)
7403          || (b->type == bp_jit_event)
7404          || (b->type == bp_hardware_breakpoint)
7405          || (is_tracepoint (b)))
7406         && loc->pspace == current_program_space
7407         && !loc->shlib_disabled
7408 #ifdef PC_SOLIB
7409         && PC_SOLIB (loc->address)
7410 #else
7411         && solib_name_from_address (loc->pspace, loc->address)
7412 #endif
7413         )
7414       {
7415         loc->shlib_disabled = 1;
7416       }
7417   }
7418 }
7419
7420 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7421    library.  Only apply to enabled breakpoints, disabled ones can just stay
7422    disabled.  */
7423
7424 static void
7425 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7426 {
7427   struct bp_location *loc, **locp_tmp;
7428   int disabled_shlib_breaks = 0;
7429
7430   /* SunOS a.out shared libraries are always mapped, so do not
7431      disable breakpoints; they will only be reported as unloaded
7432      through clear_solib when GDB discards its shared library
7433      list.  See clear_solib for more information.  */
7434   if (exec_bfd != NULL
7435       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7436     return;
7437
7438   ALL_BP_LOCATIONS (loc, locp_tmp)
7439   {
7440     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7441     struct breakpoint *b = loc->owner;
7442
7443     if (solib->pspace == loc->pspace
7444         && !loc->shlib_disabled
7445         && (((b->type == bp_breakpoint
7446               || b->type == bp_jit_event
7447               || b->type == bp_hardware_breakpoint)
7448              && (loc->loc_type == bp_loc_hardware_breakpoint
7449                  || loc->loc_type == bp_loc_software_breakpoint))
7450             || is_tracepoint (b))
7451         && solib_contains_address_p (solib, loc->address))
7452       {
7453         loc->shlib_disabled = 1;
7454         /* At this point, we cannot rely on remove_breakpoint
7455            succeeding so we must mark the breakpoint as not inserted
7456            to prevent future errors occurring in remove_breakpoints.  */
7457         loc->inserted = 0;
7458
7459         /* This may cause duplicate notifications for the same breakpoint.  */
7460         observer_notify_breakpoint_modified (b);
7461
7462         if (!disabled_shlib_breaks)
7463           {
7464             target_terminal_ours_for_output ();
7465             warning (_("Temporarily disabling breakpoints "
7466                        "for unloaded shared library \"%s\""),
7467                      solib->so_name);
7468           }
7469         disabled_shlib_breaks = 1;
7470       }
7471   }
7472 }
7473
7474 /* FORK & VFORK catchpoints.  */
7475
7476 /* An instance of this type is used to represent a fork or vfork
7477    catchpoint.  It includes a "struct breakpoint" as a kind of base
7478    class; users downcast to "struct breakpoint *" when needed.  A
7479    breakpoint is really of this type iff its ops pointer points to
7480    CATCH_FORK_BREAKPOINT_OPS.  */
7481
7482 struct fork_catchpoint
7483 {
7484   /* The base class.  */
7485   struct breakpoint base;
7486
7487   /* Process id of a child process whose forking triggered this
7488      catchpoint.  This field is only valid immediately after this
7489      catchpoint has triggered.  */
7490   ptid_t forked_inferior_pid;
7491 };
7492
7493 /* Implement the "insert" breakpoint_ops method for fork
7494    catchpoints.  */
7495
7496 static int
7497 insert_catch_fork (struct bp_location *bl)
7498 {
7499   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7500 }
7501
7502 /* Implement the "remove" breakpoint_ops method for fork
7503    catchpoints.  */
7504
7505 static int
7506 remove_catch_fork (struct bp_location *bl)
7507 {
7508   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7509 }
7510
7511 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7512    catchpoints.  */
7513
7514 static int
7515 breakpoint_hit_catch_fork (const struct bp_location *bl,
7516                            struct address_space *aspace, CORE_ADDR bp_addr,
7517                            const struct target_waitstatus *ws)
7518 {
7519   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7520
7521   if (ws->kind != TARGET_WAITKIND_FORKED)
7522     return 0;
7523
7524   c->forked_inferior_pid = ws->value.related_pid;
7525   return 1;
7526 }
7527
7528 /* Implement the "print_it" breakpoint_ops method for fork
7529    catchpoints.  */
7530
7531 static enum print_stop_action
7532 print_it_catch_fork (bpstat bs)
7533 {
7534   struct ui_out *uiout = current_uiout;
7535   struct breakpoint *b = bs->breakpoint_at;
7536   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7537
7538   annotate_catchpoint (b->number);
7539   if (b->disposition == disp_del)
7540     ui_out_text (uiout, "\nTemporary catchpoint ");
7541   else
7542     ui_out_text (uiout, "\nCatchpoint ");
7543   if (ui_out_is_mi_like_p (uiout))
7544     {
7545       ui_out_field_string (uiout, "reason",
7546                            async_reason_lookup (EXEC_ASYNC_FORK));
7547       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7548     }
7549   ui_out_field_int (uiout, "bkptno", b->number);
7550   ui_out_text (uiout, " (forked process ");
7551   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7552   ui_out_text (uiout, "), ");
7553   return PRINT_SRC_AND_LOC;
7554 }
7555
7556 /* Implement the "print_one" breakpoint_ops method for fork
7557    catchpoints.  */
7558
7559 static void
7560 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7561 {
7562   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7563   struct value_print_options opts;
7564   struct ui_out *uiout = current_uiout;
7565
7566   get_user_print_options (&opts);
7567
7568   /* Field 4, the address, is omitted (which makes the columns not
7569      line up too nicely with the headers, but the effect is relatively
7570      readable).  */
7571   if (opts.addressprint)
7572     ui_out_field_skip (uiout, "addr");
7573   annotate_field (5);
7574   ui_out_text (uiout, "fork");
7575   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7576     {
7577       ui_out_text (uiout, ", process ");
7578       ui_out_field_int (uiout, "what",
7579                         ptid_get_pid (c->forked_inferior_pid));
7580       ui_out_spaces (uiout, 1);
7581     }
7582
7583   if (ui_out_is_mi_like_p (uiout))
7584     ui_out_field_string (uiout, "catch-type", "fork");
7585 }
7586
7587 /* Implement the "print_mention" breakpoint_ops method for fork
7588    catchpoints.  */
7589
7590 static void
7591 print_mention_catch_fork (struct breakpoint *b)
7592 {
7593   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7594 }
7595
7596 /* Implement the "print_recreate" breakpoint_ops method for fork
7597    catchpoints.  */
7598
7599 static void
7600 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7601 {
7602   fprintf_unfiltered (fp, "catch fork");
7603   print_recreate_thread (b, fp);
7604 }
7605
7606 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7607
7608 static struct breakpoint_ops catch_fork_breakpoint_ops;
7609
7610 /* Implement the "insert" breakpoint_ops method for vfork
7611    catchpoints.  */
7612
7613 static int
7614 insert_catch_vfork (struct bp_location *bl)
7615 {
7616   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7617 }
7618
7619 /* Implement the "remove" breakpoint_ops method for vfork
7620    catchpoints.  */
7621
7622 static int
7623 remove_catch_vfork (struct bp_location *bl)
7624 {
7625   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7626 }
7627
7628 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7629    catchpoints.  */
7630
7631 static int
7632 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7633                             struct address_space *aspace, CORE_ADDR bp_addr,
7634                             const struct target_waitstatus *ws)
7635 {
7636   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7637
7638   if (ws->kind != TARGET_WAITKIND_VFORKED)
7639     return 0;
7640
7641   c->forked_inferior_pid = ws->value.related_pid;
7642   return 1;
7643 }
7644
7645 /* Implement the "print_it" breakpoint_ops method for vfork
7646    catchpoints.  */
7647
7648 static enum print_stop_action
7649 print_it_catch_vfork (bpstat bs)
7650 {
7651   struct ui_out *uiout = current_uiout;
7652   struct breakpoint *b = bs->breakpoint_at;
7653   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7654
7655   annotate_catchpoint (b->number);
7656   if (b->disposition == disp_del)
7657     ui_out_text (uiout, "\nTemporary catchpoint ");
7658   else
7659     ui_out_text (uiout, "\nCatchpoint ");
7660   if (ui_out_is_mi_like_p (uiout))
7661     {
7662       ui_out_field_string (uiout, "reason",
7663                            async_reason_lookup (EXEC_ASYNC_VFORK));
7664       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7665     }
7666   ui_out_field_int (uiout, "bkptno", b->number);
7667   ui_out_text (uiout, " (vforked process ");
7668   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7669   ui_out_text (uiout, "), ");
7670   return PRINT_SRC_AND_LOC;
7671 }
7672
7673 /* Implement the "print_one" breakpoint_ops method for vfork
7674    catchpoints.  */
7675
7676 static void
7677 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7678 {
7679   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7680   struct value_print_options opts;
7681   struct ui_out *uiout = current_uiout;
7682
7683   get_user_print_options (&opts);
7684   /* Field 4, the address, is omitted (which makes the columns not
7685      line up too nicely with the headers, but the effect is relatively
7686      readable).  */
7687   if (opts.addressprint)
7688     ui_out_field_skip (uiout, "addr");
7689   annotate_field (5);
7690   ui_out_text (uiout, "vfork");
7691   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7692     {
7693       ui_out_text (uiout, ", process ");
7694       ui_out_field_int (uiout, "what",
7695                         ptid_get_pid (c->forked_inferior_pid));
7696       ui_out_spaces (uiout, 1);
7697     }
7698
7699   if (ui_out_is_mi_like_p (uiout))
7700     ui_out_field_string (uiout, "catch-type", "vfork");
7701 }
7702
7703 /* Implement the "print_mention" breakpoint_ops method for vfork
7704    catchpoints.  */
7705
7706 static void
7707 print_mention_catch_vfork (struct breakpoint *b)
7708 {
7709   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7710 }
7711
7712 /* Implement the "print_recreate" breakpoint_ops method for vfork
7713    catchpoints.  */
7714
7715 static void
7716 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7717 {
7718   fprintf_unfiltered (fp, "catch vfork");
7719   print_recreate_thread (b, fp);
7720 }
7721
7722 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7723
7724 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7725
7726 /* An instance of this type is used to represent an solib catchpoint.
7727    It includes a "struct breakpoint" as a kind of base class; users
7728    downcast to "struct breakpoint *" when needed.  A breakpoint is
7729    really of this type iff its ops pointer points to
7730    CATCH_SOLIB_BREAKPOINT_OPS.  */
7731
7732 struct solib_catchpoint
7733 {
7734   /* The base class.  */
7735   struct breakpoint base;
7736
7737   /* True for "catch load", false for "catch unload".  */
7738   unsigned char is_load;
7739
7740   /* Regular expression to match, if any.  COMPILED is only valid when
7741      REGEX is non-NULL.  */
7742   char *regex;
7743   regex_t compiled;
7744 };
7745
7746 static void
7747 dtor_catch_solib (struct breakpoint *b)
7748 {
7749   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7750
7751   if (self->regex)
7752     regfree (&self->compiled);
7753   xfree (self->regex);
7754
7755   base_breakpoint_ops.dtor (b);
7756 }
7757
7758 static int
7759 insert_catch_solib (struct bp_location *ignore)
7760 {
7761   return 0;
7762 }
7763
7764 static int
7765 remove_catch_solib (struct bp_location *ignore)
7766 {
7767   return 0;
7768 }
7769
7770 static int
7771 breakpoint_hit_catch_solib (const struct bp_location *bl,
7772                             struct address_space *aspace,
7773                             CORE_ADDR bp_addr,
7774                             const struct target_waitstatus *ws)
7775 {
7776   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7777   struct breakpoint *other;
7778
7779   if (ws->kind == TARGET_WAITKIND_LOADED)
7780     return 1;
7781
7782   ALL_BREAKPOINTS (other)
7783   {
7784     struct bp_location *other_bl;
7785
7786     if (other == bl->owner)
7787       continue;
7788
7789     if (other->type != bp_shlib_event)
7790       continue;
7791
7792     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7793       continue;
7794
7795     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7796       {
7797         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7798           return 1;
7799       }
7800   }
7801
7802   return 0;
7803 }
7804
7805 static void
7806 check_status_catch_solib (struct bpstats *bs)
7807 {
7808   struct solib_catchpoint *self
7809     = (struct solib_catchpoint *) bs->breakpoint_at;
7810   int ix;
7811
7812   if (self->is_load)
7813     {
7814       struct so_list *iter;
7815
7816       for (ix = 0;
7817            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7818                         ix, iter);
7819            ++ix)
7820         {
7821           if (!self->regex
7822               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7823             return;
7824         }
7825     }
7826   else
7827     {
7828       char *iter;
7829
7830       for (ix = 0;
7831            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7832                         ix, iter);
7833            ++ix)
7834         {
7835           if (!self->regex
7836               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7837             return;
7838         }
7839     }
7840
7841   bs->stop = 0;
7842   bs->print_it = print_it_noop;
7843 }
7844
7845 static enum print_stop_action
7846 print_it_catch_solib (bpstat bs)
7847 {
7848   struct breakpoint *b = bs->breakpoint_at;
7849   struct ui_out *uiout = current_uiout;
7850
7851   annotate_catchpoint (b->number);
7852   if (b->disposition == disp_del)
7853     ui_out_text (uiout, "\nTemporary catchpoint ");
7854   else
7855     ui_out_text (uiout, "\nCatchpoint ");
7856   ui_out_field_int (uiout, "bkptno", b->number);
7857   ui_out_text (uiout, "\n");
7858   if (ui_out_is_mi_like_p (uiout))
7859     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7860   print_solib_event (1);
7861   return PRINT_SRC_AND_LOC;
7862 }
7863
7864 static void
7865 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7866 {
7867   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7868   struct value_print_options opts;
7869   struct ui_out *uiout = current_uiout;
7870   char *msg;
7871
7872   get_user_print_options (&opts);
7873   /* Field 4, the address, is omitted (which makes the columns not
7874      line up too nicely with the headers, but the effect is relatively
7875      readable).  */
7876   if (opts.addressprint)
7877     {
7878       annotate_field (4);
7879       ui_out_field_skip (uiout, "addr");
7880     }
7881
7882   annotate_field (5);
7883   if (self->is_load)
7884     {
7885       if (self->regex)
7886         msg = xstrprintf (_("load of library matching %s"), self->regex);
7887       else
7888         msg = xstrdup (_("load of library"));
7889     }
7890   else
7891     {
7892       if (self->regex)
7893         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7894       else
7895         msg = xstrdup (_("unload of library"));
7896     }
7897   ui_out_field_string (uiout, "what", msg);
7898   xfree (msg);
7899
7900   if (ui_out_is_mi_like_p (uiout))
7901     ui_out_field_string (uiout, "catch-type",
7902                          self->is_load ? "load" : "unload");
7903 }
7904
7905 static void
7906 print_mention_catch_solib (struct breakpoint *b)
7907 {
7908   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7909
7910   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7911                    self->is_load ? "load" : "unload");
7912 }
7913
7914 static void
7915 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7916 {
7917   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7918
7919   fprintf_unfiltered (fp, "%s %s",
7920                       b->disposition == disp_del ? "tcatch" : "catch",
7921                       self->is_load ? "load" : "unload");
7922   if (self->regex)
7923     fprintf_unfiltered (fp, " %s", self->regex);
7924   fprintf_unfiltered (fp, "\n");
7925 }
7926
7927 static struct breakpoint_ops catch_solib_breakpoint_ops;
7928
7929 /* Shared helper function (MI and CLI) for creating and installing
7930    a shared object event catchpoint.  If IS_LOAD is non-zero then
7931    the events to be caught are load events, otherwise they are
7932    unload events.  If IS_TEMP is non-zero the catchpoint is a
7933    temporary one.  If ENABLED is non-zero the catchpoint is
7934    created in an enabled state.  */
7935
7936 void
7937 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7938 {
7939   struct solib_catchpoint *c;
7940   struct gdbarch *gdbarch = get_current_arch ();
7941   struct cleanup *cleanup;
7942
7943   if (!arg)
7944     arg = "";
7945   arg = skip_spaces (arg);
7946
7947   c = XCNEW (struct solib_catchpoint);
7948   cleanup = make_cleanup (xfree, c);
7949
7950   if (*arg != '\0')
7951     {
7952       int errcode;
7953
7954       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7955       if (errcode != 0)
7956         {
7957           char *err = get_regcomp_error (errcode, &c->compiled);
7958
7959           make_cleanup (xfree, err);
7960           error (_("Invalid regexp (%s): %s"), err, arg);
7961         }
7962       c->regex = xstrdup (arg);
7963     }
7964
7965   c->is_load = is_load;
7966   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7967                    &catch_solib_breakpoint_ops);
7968
7969   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7970
7971   discard_cleanups (cleanup);
7972   install_breakpoint (0, &c->base, 1);
7973 }
7974
7975 /* A helper function that does all the work for "catch load" and
7976    "catch unload".  */
7977
7978 static void
7979 catch_load_or_unload (char *arg, int from_tty, int is_load,
7980                       struct cmd_list_element *command)
7981 {
7982   int tempflag;
7983   const int enabled = 1;
7984
7985   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7986
7987   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7988 }
7989
7990 static void
7991 catch_load_command_1 (char *arg, int from_tty,
7992                       struct cmd_list_element *command)
7993 {
7994   catch_load_or_unload (arg, from_tty, 1, command);
7995 }
7996
7997 static void
7998 catch_unload_command_1 (char *arg, int from_tty,
7999                         struct cmd_list_element *command)
8000 {
8001   catch_load_or_unload (arg, from_tty, 0, command);
8002 }
8003
8004 /* An instance of this type is used to represent a syscall catchpoint.
8005    It includes a "struct breakpoint" as a kind of base class; users
8006    downcast to "struct breakpoint *" when needed.  A breakpoint is
8007    really of this type iff its ops pointer points to
8008    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8009
8010 struct syscall_catchpoint
8011 {
8012   /* The base class.  */
8013   struct breakpoint base;
8014
8015   /* Syscall numbers used for the 'catch syscall' feature.  If no
8016      syscall has been specified for filtering, its value is NULL.
8017      Otherwise, it holds a list of all syscalls to be caught.  The
8018      list elements are allocated with xmalloc.  */
8019   VEC(int) *syscalls_to_be_caught;
8020 };
8021
8022 /* Implement the "dtor" breakpoint_ops method for syscall
8023    catchpoints.  */
8024
8025 static void
8026 dtor_catch_syscall (struct breakpoint *b)
8027 {
8028   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8029
8030   VEC_free (int, c->syscalls_to_be_caught);
8031
8032   base_breakpoint_ops.dtor (b);
8033 }
8034
8035 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8036
8037 struct catch_syscall_inferior_data
8038 {
8039   /* We keep a count of the number of times the user has requested a
8040      particular syscall to be tracked, and pass this information to the
8041      target.  This lets capable targets implement filtering directly.  */
8042
8043   /* Number of times that "any" syscall is requested.  */
8044   int any_syscall_count;
8045
8046   /* Count of each system call.  */
8047   VEC(int) *syscalls_counts;
8048
8049   /* This counts all syscall catch requests, so we can readily determine
8050      if any catching is necessary.  */
8051   int total_syscalls_count;
8052 };
8053
8054 static struct catch_syscall_inferior_data*
8055 get_catch_syscall_inferior_data (struct inferior *inf)
8056 {
8057   struct catch_syscall_inferior_data *inf_data;
8058
8059   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8060   if (inf_data == NULL)
8061     {
8062       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8063       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8064     }
8065
8066   return inf_data;
8067 }
8068
8069 static void
8070 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8071 {
8072   xfree (arg);
8073 }
8074
8075
8076 /* Implement the "insert" breakpoint_ops method for syscall
8077    catchpoints.  */
8078
8079 static int
8080 insert_catch_syscall (struct bp_location *bl)
8081 {
8082   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8083   struct inferior *inf = current_inferior ();
8084   struct catch_syscall_inferior_data *inf_data
8085     = get_catch_syscall_inferior_data (inf);
8086
8087   ++inf_data->total_syscalls_count;
8088   if (!c->syscalls_to_be_caught)
8089     ++inf_data->any_syscall_count;
8090   else
8091     {
8092       int i, iter;
8093
8094       for (i = 0;
8095            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8096            i++)
8097         {
8098           int elem;
8099
8100           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8101             {
8102               int old_size = VEC_length (int, inf_data->syscalls_counts);
8103               uintptr_t vec_addr_offset
8104                 = old_size * ((uintptr_t) sizeof (int));
8105               uintptr_t vec_addr;
8106               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8107               vec_addr = ((uintptr_t) VEC_address (int,
8108                                                   inf_data->syscalls_counts)
8109                           + vec_addr_offset);
8110               memset ((void *) vec_addr, 0,
8111                       (iter + 1 - old_size) * sizeof (int));
8112             }
8113           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8114           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8115         }
8116     }
8117
8118   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8119                                         inf_data->total_syscalls_count != 0,
8120                                         inf_data->any_syscall_count,
8121                                         VEC_length (int,
8122                                                     inf_data->syscalls_counts),
8123                                         VEC_address (int,
8124                                                      inf_data->syscalls_counts));
8125 }
8126
8127 /* Implement the "remove" breakpoint_ops method for syscall
8128    catchpoints.  */
8129
8130 static int
8131 remove_catch_syscall (struct bp_location *bl)
8132 {
8133   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8134   struct inferior *inf = current_inferior ();
8135   struct catch_syscall_inferior_data *inf_data
8136     = get_catch_syscall_inferior_data (inf);
8137
8138   --inf_data->total_syscalls_count;
8139   if (!c->syscalls_to_be_caught)
8140     --inf_data->any_syscall_count;
8141   else
8142     {
8143       int i, iter;
8144
8145       for (i = 0;
8146            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8147            i++)
8148         {
8149           int elem;
8150           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8151             /* Shouldn't happen.  */
8152             continue;
8153           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8154           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8155         }
8156     }
8157
8158   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8159                                         inf_data->total_syscalls_count != 0,
8160                                         inf_data->any_syscall_count,
8161                                         VEC_length (int,
8162                                                     inf_data->syscalls_counts),
8163                                         VEC_address (int,
8164                                                      inf_data->syscalls_counts));
8165 }
8166
8167 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8168    catchpoints.  */
8169
8170 static int
8171 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8172                               struct address_space *aspace, CORE_ADDR bp_addr,
8173                               const struct target_waitstatus *ws)
8174 {
8175   /* We must check if we are catching specific syscalls in this
8176      breakpoint.  If we are, then we must guarantee that the called
8177      syscall is the same syscall we are catching.  */
8178   int syscall_number = 0;
8179   const struct syscall_catchpoint *c
8180     = (const struct syscall_catchpoint *) bl->owner;
8181
8182   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8183       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8184     return 0;
8185
8186   syscall_number = ws->value.syscall_number;
8187
8188   /* Now, checking if the syscall is the same.  */
8189   if (c->syscalls_to_be_caught)
8190     {
8191       int i, iter;
8192
8193       for (i = 0;
8194            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8195            i++)
8196         if (syscall_number == iter)
8197           break;
8198       /* Not the same.  */
8199       if (!iter)
8200         return 0;
8201     }
8202
8203   return 1;
8204 }
8205
8206 /* Implement the "print_it" breakpoint_ops method for syscall
8207    catchpoints.  */
8208
8209 static enum print_stop_action
8210 print_it_catch_syscall (bpstat bs)
8211 {
8212   struct ui_out *uiout = current_uiout;
8213   struct breakpoint *b = bs->breakpoint_at;
8214   /* These are needed because we want to know in which state a
8215      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8216      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8217      must print "called syscall" or "returned from syscall".  */
8218   ptid_t ptid;
8219   struct target_waitstatus last;
8220   struct syscall s;
8221
8222   get_last_target_status (&ptid, &last);
8223
8224   get_syscall_by_number (last.value.syscall_number, &s);
8225
8226   annotate_catchpoint (b->number);
8227
8228   if (b->disposition == disp_del)
8229     ui_out_text (uiout, "\nTemporary catchpoint ");
8230   else
8231     ui_out_text (uiout, "\nCatchpoint ");
8232   if (ui_out_is_mi_like_p (uiout))
8233     {
8234       ui_out_field_string (uiout, "reason",
8235                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8236                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8237                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8238       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8239     }
8240   ui_out_field_int (uiout, "bkptno", b->number);
8241
8242   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8243     ui_out_text (uiout, " (call to syscall ");
8244   else
8245     ui_out_text (uiout, " (returned from syscall ");
8246
8247   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8248     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8249   if (s.name != NULL)
8250     ui_out_field_string (uiout, "syscall-name", s.name);
8251
8252   ui_out_text (uiout, "), ");
8253
8254   return PRINT_SRC_AND_LOC;
8255 }
8256
8257 /* Implement the "print_one" breakpoint_ops method for syscall
8258    catchpoints.  */
8259
8260 static void
8261 print_one_catch_syscall (struct breakpoint *b,
8262                          struct bp_location **last_loc)
8263 {
8264   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8265   struct value_print_options opts;
8266   struct ui_out *uiout = current_uiout;
8267
8268   get_user_print_options (&opts);
8269   /* Field 4, the address, is omitted (which makes the columns not
8270      line up too nicely with the headers, but the effect is relatively
8271      readable).  */
8272   if (opts.addressprint)
8273     ui_out_field_skip (uiout, "addr");
8274   annotate_field (5);
8275
8276   if (c->syscalls_to_be_caught
8277       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8278     ui_out_text (uiout, "syscalls \"");
8279   else
8280     ui_out_text (uiout, "syscall \"");
8281
8282   if (c->syscalls_to_be_caught)
8283     {
8284       int i, iter;
8285       char *text = xstrprintf ("%s", "");
8286
8287       for (i = 0;
8288            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8289            i++)
8290         {
8291           char *x = text;
8292           struct syscall s;
8293           get_syscall_by_number (iter, &s);
8294
8295           if (s.name != NULL)
8296             text = xstrprintf ("%s%s, ", text, s.name);
8297           else
8298             text = xstrprintf ("%s%d, ", text, iter);
8299
8300           /* We have to xfree the last 'text' (now stored at 'x')
8301              because xstrprintf dynamically allocates new space for it
8302              on every call.  */
8303           xfree (x);
8304         }
8305       /* Remove the last comma.  */
8306       text[strlen (text) - 2] = '\0';
8307       ui_out_field_string (uiout, "what", text);
8308     }
8309   else
8310     ui_out_field_string (uiout, "what", "<any syscall>");
8311   ui_out_text (uiout, "\" ");
8312
8313   if (ui_out_is_mi_like_p (uiout))
8314     ui_out_field_string (uiout, "catch-type", "syscall");
8315 }
8316
8317 /* Implement the "print_mention" breakpoint_ops method for syscall
8318    catchpoints.  */
8319
8320 static void
8321 print_mention_catch_syscall (struct breakpoint *b)
8322 {
8323   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8324
8325   if (c->syscalls_to_be_caught)
8326     {
8327       int i, iter;
8328
8329       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8330         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8331       else
8332         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8333
8334       for (i = 0;
8335            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8336            i++)
8337         {
8338           struct syscall s;
8339           get_syscall_by_number (iter, &s);
8340
8341           if (s.name)
8342             printf_filtered (" '%s' [%d]", s.name, s.number);
8343           else
8344             printf_filtered (" %d", s.number);
8345         }
8346       printf_filtered (")");
8347     }
8348   else
8349     printf_filtered (_("Catchpoint %d (any syscall)"),
8350                      b->number);
8351 }
8352
8353 /* Implement the "print_recreate" breakpoint_ops method for syscall
8354    catchpoints.  */
8355
8356 static void
8357 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8358 {
8359   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8360
8361   fprintf_unfiltered (fp, "catch syscall");
8362
8363   if (c->syscalls_to_be_caught)
8364     {
8365       int i, iter;
8366
8367       for (i = 0;
8368            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8369            i++)
8370         {
8371           struct syscall s;
8372
8373           get_syscall_by_number (iter, &s);
8374           if (s.name)
8375             fprintf_unfiltered (fp, " %s", s.name);
8376           else
8377             fprintf_unfiltered (fp, " %d", s.number);
8378         }
8379     }
8380   print_recreate_thread (b, fp);
8381 }
8382
8383 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8384
8385 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8386
8387 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8388
8389 static int
8390 syscall_catchpoint_p (struct breakpoint *b)
8391 {
8392   return (b->ops == &catch_syscall_breakpoint_ops);
8393 }
8394
8395 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8396    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8397    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8398    the breakpoint_ops structure associated to the catchpoint.  */
8399
8400 void
8401 init_catchpoint (struct breakpoint *b,
8402                  struct gdbarch *gdbarch, int tempflag,
8403                  char *cond_string,
8404                  const struct breakpoint_ops *ops)
8405 {
8406   struct symtab_and_line sal;
8407
8408   init_sal (&sal);
8409   sal.pspace = current_program_space;
8410
8411   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8412
8413   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8414   b->disposition = tempflag ? disp_del : disp_donttouch;
8415 }
8416
8417 void
8418 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8419 {
8420   add_to_breakpoint_chain (b);
8421   set_breakpoint_number (internal, b);
8422   if (is_tracepoint (b))
8423     set_tracepoint_count (breakpoint_count);
8424   if (!internal)
8425     mention (b);
8426   observer_notify_breakpoint_created (b);
8427
8428   if (update_gll)
8429     update_global_location_list (1);
8430 }
8431
8432 static void
8433 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8434                                     int tempflag, char *cond_string,
8435                                     const struct breakpoint_ops *ops)
8436 {
8437   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8438
8439   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8440
8441   c->forked_inferior_pid = null_ptid;
8442
8443   install_breakpoint (0, &c->base, 1);
8444 }
8445
8446 /* Exec catchpoints.  */
8447
8448 /* An instance of this type is used to represent an exec catchpoint.
8449    It includes a "struct breakpoint" as a kind of base class; users
8450    downcast to "struct breakpoint *" when needed.  A breakpoint is
8451    really of this type iff its ops pointer points to
8452    CATCH_EXEC_BREAKPOINT_OPS.  */
8453
8454 struct exec_catchpoint
8455 {
8456   /* The base class.  */
8457   struct breakpoint base;
8458
8459   /* Filename of a program whose exec triggered this catchpoint.
8460      This field is only valid immediately after this catchpoint has
8461      triggered.  */
8462   char *exec_pathname;
8463 };
8464
8465 /* Implement the "dtor" breakpoint_ops method for exec
8466    catchpoints.  */
8467
8468 static void
8469 dtor_catch_exec (struct breakpoint *b)
8470 {
8471   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8472
8473   xfree (c->exec_pathname);
8474
8475   base_breakpoint_ops.dtor (b);
8476 }
8477
8478 static int
8479 insert_catch_exec (struct bp_location *bl)
8480 {
8481   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8482 }
8483
8484 static int
8485 remove_catch_exec (struct bp_location *bl)
8486 {
8487   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8488 }
8489
8490 static int
8491 breakpoint_hit_catch_exec (const struct bp_location *bl,
8492                            struct address_space *aspace, CORE_ADDR bp_addr,
8493                            const struct target_waitstatus *ws)
8494 {
8495   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8496
8497   if (ws->kind != TARGET_WAITKIND_EXECD)
8498     return 0;
8499
8500   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8501   return 1;
8502 }
8503
8504 static enum print_stop_action
8505 print_it_catch_exec (bpstat bs)
8506 {
8507   struct ui_out *uiout = current_uiout;
8508   struct breakpoint *b = bs->breakpoint_at;
8509   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8510
8511   annotate_catchpoint (b->number);
8512   if (b->disposition == disp_del)
8513     ui_out_text (uiout, "\nTemporary catchpoint ");
8514   else
8515     ui_out_text (uiout, "\nCatchpoint ");
8516   if (ui_out_is_mi_like_p (uiout))
8517     {
8518       ui_out_field_string (uiout, "reason",
8519                            async_reason_lookup (EXEC_ASYNC_EXEC));
8520       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8521     }
8522   ui_out_field_int (uiout, "bkptno", b->number);
8523   ui_out_text (uiout, " (exec'd ");
8524   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8525   ui_out_text (uiout, "), ");
8526
8527   return PRINT_SRC_AND_LOC;
8528 }
8529
8530 static void
8531 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8532 {
8533   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8534   struct value_print_options opts;
8535   struct ui_out *uiout = current_uiout;
8536
8537   get_user_print_options (&opts);
8538
8539   /* Field 4, the address, is omitted (which makes the columns
8540      not line up too nicely with the headers, but the effect
8541      is relatively readable).  */
8542   if (opts.addressprint)
8543     ui_out_field_skip (uiout, "addr");
8544   annotate_field (5);
8545   ui_out_text (uiout, "exec");
8546   if (c->exec_pathname != NULL)
8547     {
8548       ui_out_text (uiout, ", program \"");
8549       ui_out_field_string (uiout, "what", c->exec_pathname);
8550       ui_out_text (uiout, "\" ");
8551     }
8552
8553   if (ui_out_is_mi_like_p (uiout))
8554     ui_out_field_string (uiout, "catch-type", "exec");
8555 }
8556
8557 static void
8558 print_mention_catch_exec (struct breakpoint *b)
8559 {
8560   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8561 }
8562
8563 /* Implement the "print_recreate" breakpoint_ops method for exec
8564    catchpoints.  */
8565
8566 static void
8567 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8568 {
8569   fprintf_unfiltered (fp, "catch exec");
8570   print_recreate_thread (b, fp);
8571 }
8572
8573 static struct breakpoint_ops catch_exec_breakpoint_ops;
8574
8575 static void
8576 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8577                                  const struct breakpoint_ops *ops)
8578 {
8579   struct syscall_catchpoint *c;
8580   struct gdbarch *gdbarch = get_current_arch ();
8581
8582   c = XNEW (struct syscall_catchpoint);
8583   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8584   c->syscalls_to_be_caught = filter;
8585
8586   install_breakpoint (0, &c->base, 1);
8587 }
8588
8589 static int
8590 hw_breakpoint_used_count (void)
8591 {
8592   int i = 0;
8593   struct breakpoint *b;
8594   struct bp_location *bl;
8595
8596   ALL_BREAKPOINTS (b)
8597   {
8598     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8599       for (bl = b->loc; bl; bl = bl->next)
8600         {
8601           /* Special types of hardware breakpoints may use more than
8602              one register.  */
8603           i += b->ops->resources_needed (bl);
8604         }
8605   }
8606
8607   return i;
8608 }
8609
8610 /* Returns the resources B would use if it were a hardware
8611    watchpoint.  */
8612
8613 static int
8614 hw_watchpoint_use_count (struct breakpoint *b)
8615 {
8616   int i = 0;
8617   struct bp_location *bl;
8618
8619   if (!breakpoint_enabled (b))
8620     return 0;
8621
8622   for (bl = b->loc; bl; bl = bl->next)
8623     {
8624       /* Special types of hardware watchpoints may use more than
8625          one register.  */
8626       i += b->ops->resources_needed (bl);
8627     }
8628
8629   return i;
8630 }
8631
8632 /* Returns the sum the used resources of all hardware watchpoints of
8633    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8634    the sum of the used resources of all hardware watchpoints of other
8635    types _not_ TYPE.  */
8636
8637 static int
8638 hw_watchpoint_used_count_others (struct breakpoint *except,
8639                                  enum bptype type, int *other_type_used)
8640 {
8641   int i = 0;
8642   struct breakpoint *b;
8643
8644   *other_type_used = 0;
8645   ALL_BREAKPOINTS (b)
8646     {
8647       if (b == except)
8648         continue;
8649       if (!breakpoint_enabled (b))
8650         continue;
8651
8652       if (b->type == type)
8653         i += hw_watchpoint_use_count (b);
8654       else if (is_hardware_watchpoint (b))
8655         *other_type_used = 1;
8656     }
8657
8658   return i;
8659 }
8660
8661 void
8662 disable_watchpoints_before_interactive_call_start (void)
8663 {
8664   struct breakpoint *b;
8665
8666   ALL_BREAKPOINTS (b)
8667   {
8668     if (is_watchpoint (b) && breakpoint_enabled (b))
8669       {
8670         b->enable_state = bp_call_disabled;
8671         update_global_location_list (0);
8672       }
8673   }
8674 }
8675
8676 void
8677 enable_watchpoints_after_interactive_call_stop (void)
8678 {
8679   struct breakpoint *b;
8680
8681   ALL_BREAKPOINTS (b)
8682   {
8683     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8684       {
8685         b->enable_state = bp_enabled;
8686         update_global_location_list (1);
8687       }
8688   }
8689 }
8690
8691 void
8692 disable_breakpoints_before_startup (void)
8693 {
8694   current_program_space->executing_startup = 1;
8695   update_global_location_list (0);
8696 }
8697
8698 void
8699 enable_breakpoints_after_startup (void)
8700 {
8701   current_program_space->executing_startup = 0;
8702   breakpoint_re_set ();
8703 }
8704
8705
8706 /* Set a breakpoint that will evaporate an end of command
8707    at address specified by SAL.
8708    Restrict it to frame FRAME if FRAME is nonzero.  */
8709
8710 struct breakpoint *
8711 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8712                           struct frame_id frame_id, enum bptype type)
8713 {
8714   struct breakpoint *b;
8715
8716   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8717      tail-called one.  */
8718   gdb_assert (!frame_id_artificial_p (frame_id));
8719
8720   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8721   b->enable_state = bp_enabled;
8722   b->disposition = disp_donttouch;
8723   b->frame_id = frame_id;
8724
8725   /* If we're debugging a multi-threaded program, then we want
8726      momentary breakpoints to be active in only a single thread of
8727      control.  */
8728   if (in_thread_list (inferior_ptid))
8729     b->thread = pid_to_thread_id (inferior_ptid);
8730
8731   update_global_location_list_nothrow (1);
8732
8733   return b;
8734 }
8735
8736 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8737    The new breakpoint will have type TYPE, and use OPS as it
8738    breakpoint_ops.  */
8739
8740 static struct breakpoint *
8741 momentary_breakpoint_from_master (struct breakpoint *orig,
8742                                   enum bptype type,
8743                                   const struct breakpoint_ops *ops)
8744 {
8745   struct breakpoint *copy;
8746
8747   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8748   copy->loc = allocate_bp_location (copy);
8749   set_breakpoint_location_function (copy->loc, 1);
8750
8751   copy->loc->gdbarch = orig->loc->gdbarch;
8752   copy->loc->requested_address = orig->loc->requested_address;
8753   copy->loc->address = orig->loc->address;
8754   copy->loc->section = orig->loc->section;
8755   copy->loc->pspace = orig->loc->pspace;
8756   copy->loc->probe = orig->loc->probe;
8757   copy->loc->line_number = orig->loc->line_number;
8758   copy->loc->symtab = orig->loc->symtab;
8759   copy->frame_id = orig->frame_id;
8760   copy->thread = orig->thread;
8761   copy->pspace = orig->pspace;
8762
8763   copy->enable_state = bp_enabled;
8764   copy->disposition = disp_donttouch;
8765   copy->number = internal_breakpoint_number--;
8766
8767   update_global_location_list_nothrow (0);
8768   return copy;
8769 }
8770
8771 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8772    ORIG is NULL.  */
8773
8774 struct breakpoint *
8775 clone_momentary_breakpoint (struct breakpoint *orig)
8776 {
8777   /* If there's nothing to clone, then return nothing.  */
8778   if (orig == NULL)
8779     return NULL;
8780
8781   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8782 }
8783
8784 struct breakpoint *
8785 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8786                                 enum bptype type)
8787 {
8788   struct symtab_and_line sal;
8789
8790   sal = find_pc_line (pc, 0);
8791   sal.pc = pc;
8792   sal.section = find_pc_overlay (pc);
8793   sal.explicit_pc = 1;
8794
8795   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8796 }
8797 \f
8798
8799 /* Tell the user we have just set a breakpoint B.  */
8800
8801 static void
8802 mention (struct breakpoint *b)
8803 {
8804   b->ops->print_mention (b);
8805   if (ui_out_is_mi_like_p (current_uiout))
8806     return;
8807   printf_filtered ("\n");
8808 }
8809 \f
8810
8811 static struct bp_location *
8812 add_location_to_breakpoint (struct breakpoint *b,
8813                             const struct symtab_and_line *sal)
8814 {
8815   struct bp_location *loc, **tmp;
8816   CORE_ADDR adjusted_address;
8817   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8818
8819   if (loc_gdbarch == NULL)
8820     loc_gdbarch = b->gdbarch;
8821
8822   /* Adjust the breakpoint's address prior to allocating a location.
8823      Once we call allocate_bp_location(), that mostly uninitialized
8824      location will be placed on the location chain.  Adjustment of the
8825      breakpoint may cause target_read_memory() to be called and we do
8826      not want its scan of the location chain to find a breakpoint and
8827      location that's only been partially initialized.  */
8828   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8829                                                 sal->pc, b->type);
8830
8831   /* Sort the locations by their ADDRESS.  */
8832   loc = allocate_bp_location (b);
8833   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8834        tmp = &((*tmp)->next))
8835     ;
8836   loc->next = *tmp;
8837   *tmp = loc;
8838
8839   loc->requested_address = sal->pc;
8840   loc->address = adjusted_address;
8841   loc->pspace = sal->pspace;
8842   loc->probe = sal->probe;
8843   gdb_assert (loc->pspace != NULL);
8844   loc->section = sal->section;
8845   loc->gdbarch = loc_gdbarch;
8846   loc->line_number = sal->line;
8847   loc->symtab = sal->symtab;
8848
8849   set_breakpoint_location_function (loc,
8850                                     sal->explicit_pc || sal->explicit_line);
8851   return loc;
8852 }
8853 \f
8854
8855 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8856    return 0 otherwise.  */
8857
8858 static int
8859 bp_loc_is_permanent (struct bp_location *loc)
8860 {
8861   int len;
8862   CORE_ADDR addr;
8863   const gdb_byte *bpoint;
8864   gdb_byte *target_mem;
8865   struct cleanup *cleanup;
8866   int retval = 0;
8867
8868   gdb_assert (loc != NULL);
8869
8870   addr = loc->address;
8871   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8872
8873   /* Software breakpoints unsupported?  */
8874   if (bpoint == NULL)
8875     return 0;
8876
8877   target_mem = alloca (len);
8878
8879   /* Enable the automatic memory restoration from breakpoints while
8880      we read the memory.  Otherwise we could say about our temporary
8881      breakpoints they are permanent.  */
8882   cleanup = save_current_space_and_thread ();
8883
8884   switch_to_program_space_and_thread (loc->pspace);
8885   make_show_memory_breakpoints_cleanup (0);
8886
8887   if (target_read_memory (loc->address, target_mem, len) == 0
8888       && memcmp (target_mem, bpoint, len) == 0)
8889     retval = 1;
8890
8891   do_cleanups (cleanup);
8892
8893   return retval;
8894 }
8895
8896 /* Build a command list for the dprintf corresponding to the current
8897    settings of the dprintf style options.  */
8898
8899 static void
8900 update_dprintf_command_list (struct breakpoint *b)
8901 {
8902   char *dprintf_args = b->extra_string;
8903   char *printf_line = NULL;
8904
8905   if (!dprintf_args)
8906     return;
8907
8908   dprintf_args = skip_spaces (dprintf_args);
8909
8910   /* Allow a comma, as it may have terminated a location, but don't
8911      insist on it.  */
8912   if (*dprintf_args == ',')
8913     ++dprintf_args;
8914   dprintf_args = skip_spaces (dprintf_args);
8915
8916   if (*dprintf_args != '"')
8917     error (_("Bad format string, missing '\"'."));
8918
8919   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8920     printf_line = xstrprintf ("printf %s", dprintf_args);
8921   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8922     {
8923       if (!dprintf_function)
8924         error (_("No function supplied for dprintf call"));
8925
8926       if (dprintf_channel && strlen (dprintf_channel) > 0)
8927         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8928                                   dprintf_function,
8929                                   dprintf_channel,
8930                                   dprintf_args);
8931       else
8932         printf_line = xstrprintf ("call (void) %s (%s)",
8933                                   dprintf_function,
8934                                   dprintf_args);
8935     }
8936   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8937     {
8938       if (target_can_run_breakpoint_commands ())
8939         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8940       else
8941         {
8942           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8943           printf_line = xstrprintf ("printf %s", dprintf_args);
8944         }
8945     }
8946   else
8947     internal_error (__FILE__, __LINE__,
8948                     _("Invalid dprintf style."));
8949
8950   gdb_assert (printf_line != NULL);
8951   /* Manufacture a printf/continue sequence.  */
8952   {
8953     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8954
8955     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8956       {
8957         cont_cmd_line = xmalloc (sizeof (struct command_line));
8958         cont_cmd_line->control_type = simple_control;
8959         cont_cmd_line->body_count = 0;
8960         cont_cmd_line->body_list = NULL;
8961         cont_cmd_line->next = NULL;
8962         cont_cmd_line->line = xstrdup ("continue");
8963       }
8964
8965     printf_cmd_line = xmalloc (sizeof (struct command_line));
8966     printf_cmd_line->control_type = simple_control;
8967     printf_cmd_line->body_count = 0;
8968     printf_cmd_line->body_list = NULL;
8969     printf_cmd_line->next = cont_cmd_line;
8970     printf_cmd_line->line = printf_line;
8971
8972     breakpoint_set_commands (b, printf_cmd_line);
8973   }
8974 }
8975
8976 /* Update all dprintf commands, making their command lists reflect
8977    current style settings.  */
8978
8979 static void
8980 update_dprintf_commands (char *args, int from_tty,
8981                          struct cmd_list_element *c)
8982 {
8983   struct breakpoint *b;
8984
8985   ALL_BREAKPOINTS (b)
8986     {
8987       if (b->type == bp_dprintf)
8988         update_dprintf_command_list (b);
8989     }
8990 }
8991
8992 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8993    as textual description of the location, and COND_STRING
8994    as condition expression.  */
8995
8996 static void
8997 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8998                      struct symtabs_and_lines sals, char *addr_string,
8999                      char *filter, char *cond_string,
9000                      char *extra_string,
9001                      enum bptype type, enum bpdisp disposition,
9002                      int thread, int task, int ignore_count,
9003                      const struct breakpoint_ops *ops, int from_tty,
9004                      int enabled, int internal, unsigned flags,
9005                      int display_canonical)
9006 {
9007   int i;
9008
9009   if (type == bp_hardware_breakpoint)
9010     {
9011       int target_resources_ok;
9012
9013       i = hw_breakpoint_used_count ();
9014       target_resources_ok =
9015         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9016                                             i + 1, 0);
9017       if (target_resources_ok == 0)
9018         error (_("No hardware breakpoint support in the target."));
9019       else if (target_resources_ok < 0)
9020         error (_("Hardware breakpoints used exceeds limit."));
9021     }
9022
9023   gdb_assert (sals.nelts > 0);
9024
9025   for (i = 0; i < sals.nelts; ++i)
9026     {
9027       struct symtab_and_line sal = sals.sals[i];
9028       struct bp_location *loc;
9029
9030       if (from_tty)
9031         {
9032           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9033           if (!loc_gdbarch)
9034             loc_gdbarch = gdbarch;
9035
9036           describe_other_breakpoints (loc_gdbarch,
9037                                       sal.pspace, sal.pc, sal.section, thread);
9038         }
9039
9040       if (i == 0)
9041         {
9042           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9043           b->thread = thread;
9044           b->task = task;
9045
9046           b->cond_string = cond_string;
9047           b->extra_string = extra_string;
9048           b->ignore_count = ignore_count;
9049           b->enable_state = enabled ? bp_enabled : bp_disabled;
9050           b->disposition = disposition;
9051
9052           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9053             b->loc->inserted = 1;
9054
9055           if (type == bp_static_tracepoint)
9056             {
9057               struct tracepoint *t = (struct tracepoint *) b;
9058               struct static_tracepoint_marker marker;
9059
9060               if (strace_marker_p (b))
9061                 {
9062                   /* We already know the marker exists, otherwise, we
9063                      wouldn't see a sal for it.  */
9064                   char *p = &addr_string[3];
9065                   char *endp;
9066                   char *marker_str;
9067
9068                   p = skip_spaces (p);
9069
9070                   endp = skip_to_space (p);
9071
9072                   marker_str = savestring (p, endp - p);
9073                   t->static_trace_marker_id = marker_str;
9074
9075                   printf_filtered (_("Probed static tracepoint "
9076                                      "marker \"%s\"\n"),
9077                                    t->static_trace_marker_id);
9078                 }
9079               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9080                 {
9081                   t->static_trace_marker_id = xstrdup (marker.str_id);
9082                   release_static_tracepoint_marker (&marker);
9083
9084                   printf_filtered (_("Probed static tracepoint "
9085                                      "marker \"%s\"\n"),
9086                                    t->static_trace_marker_id);
9087                 }
9088               else
9089                 warning (_("Couldn't determine the static "
9090                            "tracepoint marker to probe"));
9091             }
9092
9093           loc = b->loc;
9094         }
9095       else
9096         {
9097           loc = add_location_to_breakpoint (b, &sal);
9098           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9099             loc->inserted = 1;
9100         }
9101
9102       if (bp_loc_is_permanent (loc))
9103         make_breakpoint_permanent (b);
9104
9105       if (b->cond_string)
9106         {
9107           const char *arg = b->cond_string;
9108
9109           loc->cond = parse_exp_1 (&arg, loc->address,
9110                                    block_for_pc (loc->address), 0);
9111           if (*arg)
9112               error (_("Garbage '%s' follows condition"), arg);
9113         }
9114
9115       /* Dynamic printf requires and uses additional arguments on the
9116          command line, otherwise it's an error.  */
9117       if (type == bp_dprintf)
9118         {
9119           if (b->extra_string)
9120             update_dprintf_command_list (b);
9121           else
9122             error (_("Format string required"));
9123         }
9124       else if (b->extra_string)
9125         error (_("Garbage '%s' at end of command"), b->extra_string);
9126     }
9127
9128   b->display_canonical = display_canonical;
9129   if (addr_string)
9130     b->addr_string = addr_string;
9131   else
9132     /* addr_string has to be used or breakpoint_re_set will delete
9133        me.  */
9134     b->addr_string
9135       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9136   b->filter = filter;
9137 }
9138
9139 static void
9140 create_breakpoint_sal (struct gdbarch *gdbarch,
9141                        struct symtabs_and_lines sals, char *addr_string,
9142                        char *filter, char *cond_string,
9143                        char *extra_string,
9144                        enum bptype type, enum bpdisp disposition,
9145                        int thread, int task, int ignore_count,
9146                        const struct breakpoint_ops *ops, int from_tty,
9147                        int enabled, int internal, unsigned flags,
9148                        int display_canonical)
9149 {
9150   struct breakpoint *b;
9151   struct cleanup *old_chain;
9152
9153   if (is_tracepoint_type (type))
9154     {
9155       struct tracepoint *t;
9156
9157       t = XCNEW (struct tracepoint);
9158       b = &t->base;
9159     }
9160   else
9161     b = XNEW (struct breakpoint);
9162
9163   old_chain = make_cleanup (xfree, b);
9164
9165   init_breakpoint_sal (b, gdbarch,
9166                        sals, addr_string,
9167                        filter, cond_string, extra_string,
9168                        type, disposition,
9169                        thread, task, ignore_count,
9170                        ops, from_tty,
9171                        enabled, internal, flags,
9172                        display_canonical);
9173   discard_cleanups (old_chain);
9174
9175   install_breakpoint (internal, b, 0);
9176 }
9177
9178 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9179    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9180    value.  COND_STRING, if not NULL, specified the condition to be
9181    used for all breakpoints.  Essentially the only case where
9182    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9183    function.  In that case, it's still not possible to specify
9184    separate conditions for different overloaded functions, so
9185    we take just a single condition string.
9186    
9187    NOTE: If the function succeeds, the caller is expected to cleanup
9188    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9189    array contents).  If the function fails (error() is called), the
9190    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9191    COND and SALS arrays and each of those arrays contents.  */
9192
9193 static void
9194 create_breakpoints_sal (struct gdbarch *gdbarch,
9195                         struct linespec_result *canonical,
9196                         char *cond_string, char *extra_string,
9197                         enum bptype type, enum bpdisp disposition,
9198                         int thread, int task, int ignore_count,
9199                         const struct breakpoint_ops *ops, int from_tty,
9200                         int enabled, int internal, unsigned flags)
9201 {
9202   int i;
9203   struct linespec_sals *lsal;
9204
9205   if (canonical->pre_expanded)
9206     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9207
9208   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9209     {
9210       /* Note that 'addr_string' can be NULL in the case of a plain
9211          'break', without arguments.  */
9212       char *addr_string = (canonical->addr_string
9213                            ? xstrdup (canonical->addr_string)
9214                            : NULL);
9215       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9216       struct cleanup *inner = make_cleanup (xfree, addr_string);
9217
9218       make_cleanup (xfree, filter_string);
9219       create_breakpoint_sal (gdbarch, lsal->sals,
9220                              addr_string,
9221                              filter_string,
9222                              cond_string, extra_string,
9223                              type, disposition,
9224                              thread, task, ignore_count, ops,
9225                              from_tty, enabled, internal, flags,
9226                              canonical->special_display);
9227       discard_cleanups (inner);
9228     }
9229 }
9230
9231 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9232    followed by conditionals.  On return, SALS contains an array of SAL
9233    addresses found.  ADDR_STRING contains a vector of (canonical)
9234    address strings.  ADDRESS points to the end of the SAL.
9235
9236    The array and the line spec strings are allocated on the heap, it is
9237    the caller's responsibility to free them.  */
9238
9239 static void
9240 parse_breakpoint_sals (char **address,
9241                        struct linespec_result *canonical)
9242 {
9243   /* If no arg given, or if first arg is 'if ', use the default
9244      breakpoint.  */
9245   if ((*address) == NULL
9246       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9247     {
9248       /* The last displayed codepoint, if it's valid, is our default breakpoint
9249          address.  */
9250       if (last_displayed_sal_is_valid ())
9251         {
9252           struct linespec_sals lsal;
9253           struct symtab_and_line sal;
9254           CORE_ADDR pc;
9255
9256           init_sal (&sal);              /* Initialize to zeroes.  */
9257           lsal.sals.sals = (struct symtab_and_line *)
9258             xmalloc (sizeof (struct symtab_and_line));
9259
9260           /* Set sal's pspace, pc, symtab, and line to the values
9261              corresponding to the last call to print_frame_info.
9262              Be sure to reinitialize LINE with NOTCURRENT == 0
9263              as the breakpoint line number is inappropriate otherwise.
9264              find_pc_line would adjust PC, re-set it back.  */
9265           get_last_displayed_sal (&sal);
9266           pc = sal.pc;
9267           sal = find_pc_line (pc, 0);
9268
9269           /* "break" without arguments is equivalent to "break *PC"
9270              where PC is the last displayed codepoint's address.  So
9271              make sure to set sal.explicit_pc to prevent GDB from
9272              trying to expand the list of sals to include all other
9273              instances with the same symtab and line.  */
9274           sal.pc = pc;
9275           sal.explicit_pc = 1;
9276
9277           lsal.sals.sals[0] = sal;
9278           lsal.sals.nelts = 1;
9279           lsal.canonical = NULL;
9280
9281           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9282         }
9283       else
9284         error (_("No default breakpoint address now."));
9285     }
9286   else
9287     {
9288       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9289
9290       /* Force almost all breakpoints to be in terms of the
9291          current_source_symtab (which is decode_line_1's default).
9292          This should produce the results we want almost all of the
9293          time while leaving default_breakpoint_* alone.
9294
9295          ObjC: However, don't match an Objective-C method name which
9296          may have a '+' or '-' succeeded by a '['.  */
9297       if (last_displayed_sal_is_valid ()
9298           && (!cursal.symtab
9299               || ((strchr ("+-", (*address)[0]) != NULL)
9300                   && ((*address)[1] != '['))))
9301         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9302                           get_last_displayed_symtab (),
9303                           get_last_displayed_line (),
9304                           canonical, NULL, NULL);
9305       else
9306         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9307                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9308     }
9309 }
9310
9311
9312 /* Convert each SAL into a real PC.  Verify that the PC can be
9313    inserted as a breakpoint.  If it can't throw an error.  */
9314
9315 static void
9316 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9317 {    
9318   int i;
9319
9320   for (i = 0; i < sals->nelts; i++)
9321     resolve_sal_pc (&sals->sals[i]);
9322 }
9323
9324 /* Fast tracepoints may have restrictions on valid locations.  For
9325    instance, a fast tracepoint using a jump instead of a trap will
9326    likely have to overwrite more bytes than a trap would, and so can
9327    only be placed where the instruction is longer than the jump, or a
9328    multi-instruction sequence does not have a jump into the middle of
9329    it, etc.  */
9330
9331 static void
9332 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9333                             struct symtabs_and_lines *sals)
9334 {
9335   int i, rslt;
9336   struct symtab_and_line *sal;
9337   char *msg;
9338   struct cleanup *old_chain;
9339
9340   for (i = 0; i < sals->nelts; i++)
9341     {
9342       struct gdbarch *sarch;
9343
9344       sal = &sals->sals[i];
9345
9346       sarch = get_sal_arch (*sal);
9347       /* We fall back to GDBARCH if there is no architecture
9348          associated with SAL.  */
9349       if (sarch == NULL)
9350         sarch = gdbarch;
9351       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9352                                                NULL, &msg);
9353       old_chain = make_cleanup (xfree, msg);
9354
9355       if (!rslt)
9356         error (_("May not have a fast tracepoint at 0x%s%s"),
9357                paddress (sarch, sal->pc), (msg ? msg : ""));
9358
9359       do_cleanups (old_chain);
9360     }
9361 }
9362
9363 /* Issue an invalid thread ID error.  */
9364
9365 static void ATTRIBUTE_NORETURN
9366 invalid_thread_id_error (int id)
9367 {
9368   error (_("Unknown thread %d."), id);
9369 }
9370
9371 /* Given TOK, a string specification of condition and thread, as
9372    accepted by the 'break' command, extract the condition
9373    string and thread number and set *COND_STRING and *THREAD.
9374    PC identifies the context at which the condition should be parsed.
9375    If no condition is found, *COND_STRING is set to NULL.
9376    If no thread is found, *THREAD is set to -1.  */
9377
9378 static void
9379 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9380                            char **cond_string, int *thread, int *task,
9381                            char **rest)
9382 {
9383   *cond_string = NULL;
9384   *thread = -1;
9385   *task = 0;
9386   *rest = NULL;
9387
9388   while (tok && *tok)
9389     {
9390       const char *end_tok;
9391       int toklen;
9392       const char *cond_start = NULL;
9393       const char *cond_end = NULL;
9394
9395       tok = skip_spaces_const (tok);
9396
9397       if ((*tok == '"' || *tok == ',') && rest)
9398         {
9399           *rest = savestring (tok, strlen (tok));
9400           return;
9401         }
9402
9403       end_tok = skip_to_space_const (tok);
9404
9405       toklen = end_tok - tok;
9406
9407       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9408         {
9409           struct expression *expr;
9410
9411           tok = cond_start = end_tok + 1;
9412           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9413           xfree (expr);
9414           cond_end = tok;
9415           *cond_string = savestring (cond_start, cond_end - cond_start);
9416         }
9417       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9418         {
9419           char *tmptok;
9420
9421           tok = end_tok + 1;
9422           *thread = strtol (tok, &tmptok, 0);
9423           if (tok == tmptok)
9424             error (_("Junk after thread keyword."));
9425           if (!valid_thread_id (*thread))
9426             invalid_thread_id_error (*thread);
9427           tok = tmptok;
9428         }
9429       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9430         {
9431           char *tmptok;
9432
9433           tok = end_tok + 1;
9434           *task = strtol (tok, &tmptok, 0);
9435           if (tok == tmptok)
9436             error (_("Junk after task keyword."));
9437           if (!valid_task_id (*task))
9438             error (_("Unknown task %d."), *task);
9439           tok = tmptok;
9440         }
9441       else if (rest)
9442         {
9443           *rest = savestring (tok, strlen (tok));
9444           return;
9445         }
9446       else
9447         error (_("Junk at end of arguments."));
9448     }
9449 }
9450
9451 /* Decode a static tracepoint marker spec.  */
9452
9453 static struct symtabs_and_lines
9454 decode_static_tracepoint_spec (char **arg_p)
9455 {
9456   VEC(static_tracepoint_marker_p) *markers = NULL;
9457   struct symtabs_and_lines sals;
9458   struct cleanup *old_chain;
9459   char *p = &(*arg_p)[3];
9460   char *endp;
9461   char *marker_str;
9462   int i;
9463
9464   p = skip_spaces (p);
9465
9466   endp = skip_to_space (p);
9467
9468   marker_str = savestring (p, endp - p);
9469   old_chain = make_cleanup (xfree, marker_str);
9470
9471   markers = target_static_tracepoint_markers_by_strid (marker_str);
9472   if (VEC_empty(static_tracepoint_marker_p, markers))
9473     error (_("No known static tracepoint marker named %s"), marker_str);
9474
9475   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9476   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9477
9478   for (i = 0; i < sals.nelts; i++)
9479     {
9480       struct static_tracepoint_marker *marker;
9481
9482       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9483
9484       init_sal (&sals.sals[i]);
9485
9486       sals.sals[i] = find_pc_line (marker->address, 0);
9487       sals.sals[i].pc = marker->address;
9488
9489       release_static_tracepoint_marker (marker);
9490     }
9491
9492   do_cleanups (old_chain);
9493
9494   *arg_p = endp;
9495   return sals;
9496 }
9497
9498 /* Set a breakpoint.  This function is shared between CLI and MI
9499    functions for setting a breakpoint.  This function has two major
9500    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9501    parameter.  If non-zero, the function will parse arg, extracting
9502    breakpoint location, address and thread.  Otherwise, ARG is just
9503    the location of breakpoint, with condition and thread specified by
9504    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9505    the breakpoint number will be allocated from the internal
9506    breakpoint count.  Returns true if any breakpoint was created;
9507    false otherwise.  */
9508
9509 int
9510 create_breakpoint (struct gdbarch *gdbarch,
9511                    char *arg, char *cond_string,
9512                    int thread, char *extra_string,
9513                    int parse_condition_and_thread,
9514                    int tempflag, enum bptype type_wanted,
9515                    int ignore_count,
9516                    enum auto_boolean pending_break_support,
9517                    const struct breakpoint_ops *ops,
9518                    int from_tty, int enabled, int internal,
9519                    unsigned flags)
9520 {
9521   volatile struct gdb_exception e;
9522   char *copy_arg = NULL;
9523   char *addr_start = arg;
9524   struct linespec_result canonical;
9525   struct cleanup *old_chain;
9526   struct cleanup *bkpt_chain = NULL;
9527   int pending = 0;
9528   int task = 0;
9529   int prev_bkpt_count = breakpoint_count;
9530
9531   gdb_assert (ops != NULL);
9532
9533   init_linespec_result (&canonical);
9534
9535   TRY_CATCH (e, RETURN_MASK_ALL)
9536     {
9537       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9538                                      addr_start, &copy_arg);
9539     }
9540
9541   /* If caller is interested in rc value from parse, set value.  */
9542   switch (e.reason)
9543     {
9544     case GDB_NO_ERROR:
9545       if (VEC_empty (linespec_sals, canonical.sals))
9546         return 0;
9547       break;
9548     case RETURN_ERROR:
9549       switch (e.error)
9550         {
9551         case NOT_FOUND_ERROR:
9552
9553           /* If pending breakpoint support is turned off, throw
9554              error.  */
9555
9556           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9557             throw_exception (e);
9558
9559           exception_print (gdb_stderr, e);
9560
9561           /* If pending breakpoint support is auto query and the user
9562              selects no, then simply return the error code.  */
9563           if (pending_break_support == AUTO_BOOLEAN_AUTO
9564               && !nquery (_("Make %s pending on future shared library load? "),
9565                           bptype_string (type_wanted)))
9566             return 0;
9567
9568           /* At this point, either the user was queried about setting
9569              a pending breakpoint and selected yes, or pending
9570              breakpoint behavior is on and thus a pending breakpoint
9571              is defaulted on behalf of the user.  */
9572           {
9573             struct linespec_sals lsal;
9574
9575             copy_arg = xstrdup (addr_start);
9576             lsal.canonical = xstrdup (copy_arg);
9577             lsal.sals.nelts = 1;
9578             lsal.sals.sals = XNEW (struct symtab_and_line);
9579             init_sal (&lsal.sals.sals[0]);
9580             pending = 1;
9581             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9582           }
9583           break;
9584         default:
9585           throw_exception (e);
9586         }
9587       break;
9588     default:
9589       throw_exception (e);
9590     }
9591
9592   /* Create a chain of things that always need to be cleaned up.  */
9593   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9594
9595   /* ----------------------------- SNIP -----------------------------
9596      Anything added to the cleanup chain beyond this point is assumed
9597      to be part of a breakpoint.  If the breakpoint create succeeds
9598      then the memory is not reclaimed.  */
9599   bkpt_chain = make_cleanup (null_cleanup, 0);
9600
9601   /* Resolve all line numbers to PC's and verify that the addresses
9602      are ok for the target.  */
9603   if (!pending)
9604     {
9605       int ix;
9606       struct linespec_sals *iter;
9607
9608       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9609         breakpoint_sals_to_pc (&iter->sals);
9610     }
9611
9612   /* Fast tracepoints may have additional restrictions on location.  */
9613   if (!pending && type_wanted == bp_fast_tracepoint)
9614     {
9615       int ix;
9616       struct linespec_sals *iter;
9617
9618       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9619         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9620     }
9621
9622   /* Verify that condition can be parsed, before setting any
9623      breakpoints.  Allocate a separate condition expression for each
9624      breakpoint.  */
9625   if (!pending)
9626     {
9627       struct linespec_sals *lsal;
9628
9629       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9630
9631       if (parse_condition_and_thread)
9632         {
9633             char *rest;
9634             /* Here we only parse 'arg' to separate condition
9635                from thread number, so parsing in context of first
9636                sal is OK.  When setting the breakpoint we'll 
9637                re-parse it in context of each sal.  */
9638
9639             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9640                                        &thread, &task, &rest);
9641             if (cond_string)
9642                 make_cleanup (xfree, cond_string);
9643             if (rest)
9644               make_cleanup (xfree, rest);
9645             if (rest)
9646               extra_string = rest;
9647         }
9648       else
9649         {
9650             /* Create a private copy of condition string.  */
9651             if (cond_string)
9652             {
9653                 cond_string = xstrdup (cond_string);
9654                 make_cleanup (xfree, cond_string);
9655             }
9656             /* Create a private copy of any extra string.  */
9657             if (extra_string)
9658               {
9659                 extra_string = xstrdup (extra_string);
9660                 make_cleanup (xfree, extra_string);
9661               }
9662         }
9663
9664       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9665                                    cond_string, extra_string, type_wanted,
9666                                    tempflag ? disp_del : disp_donttouch,
9667                                    thread, task, ignore_count, ops,
9668                                    from_tty, enabled, internal, flags);
9669     }
9670   else
9671     {
9672       struct breakpoint *b;
9673
9674       make_cleanup (xfree, copy_arg);
9675
9676       if (is_tracepoint_type (type_wanted))
9677         {
9678           struct tracepoint *t;
9679
9680           t = XCNEW (struct tracepoint);
9681           b = &t->base;
9682         }
9683       else
9684         b = XNEW (struct breakpoint);
9685
9686       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9687
9688       b->addr_string = copy_arg;
9689       if (parse_condition_and_thread)
9690         b->cond_string = NULL;
9691       else
9692         {
9693           /* Create a private copy of condition string.  */
9694           if (cond_string)
9695             {
9696               cond_string = xstrdup (cond_string);
9697               make_cleanup (xfree, cond_string);
9698             }
9699           b->cond_string = cond_string;
9700         }
9701       b->extra_string = NULL;
9702       b->ignore_count = ignore_count;
9703       b->disposition = tempflag ? disp_del : disp_donttouch;
9704       b->condition_not_parsed = 1;
9705       b->enable_state = enabled ? bp_enabled : bp_disabled;
9706       if ((type_wanted != bp_breakpoint
9707            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9708         b->pspace = current_program_space;
9709
9710       install_breakpoint (internal, b, 0);
9711     }
9712   
9713   if (VEC_length (linespec_sals, canonical.sals) > 1)
9714     {
9715       warning (_("Multiple breakpoints were set.\nUse the "
9716                  "\"delete\" command to delete unwanted breakpoints."));
9717       prev_breakpoint_count = prev_bkpt_count;
9718     }
9719
9720   /* That's it.  Discard the cleanups for data inserted into the
9721      breakpoint.  */
9722   discard_cleanups (bkpt_chain);
9723   /* But cleanup everything else.  */
9724   do_cleanups (old_chain);
9725
9726   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9727   update_global_location_list (1);
9728
9729   return 1;
9730 }
9731
9732 /* Set a breakpoint.
9733    ARG is a string describing breakpoint address,
9734    condition, and thread.
9735    FLAG specifies if a breakpoint is hardware on,
9736    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9737    and BP_TEMPFLAG.  */
9738
9739 static void
9740 break_command_1 (char *arg, int flag, int from_tty)
9741 {
9742   int tempflag = flag & BP_TEMPFLAG;
9743   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9744                              ? bp_hardware_breakpoint
9745                              : bp_breakpoint);
9746   struct breakpoint_ops *ops;
9747   const char *arg_cp = arg;
9748
9749   /* Matching breakpoints on probes.  */
9750   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9751     ops = &bkpt_probe_breakpoint_ops;
9752   else
9753     ops = &bkpt_breakpoint_ops;
9754
9755   create_breakpoint (get_current_arch (),
9756                      arg,
9757                      NULL, 0, NULL, 1 /* parse arg */,
9758                      tempflag, type_wanted,
9759                      0 /* Ignore count */,
9760                      pending_break_support,
9761                      ops,
9762                      from_tty,
9763                      1 /* enabled */,
9764                      0 /* internal */,
9765                      0);
9766 }
9767
9768 /* Helper function for break_command_1 and disassemble_command.  */
9769
9770 void
9771 resolve_sal_pc (struct symtab_and_line *sal)
9772 {
9773   CORE_ADDR pc;
9774
9775   if (sal->pc == 0 && sal->symtab != NULL)
9776     {
9777       if (!find_line_pc (sal->symtab, sal->line, &pc))
9778         error (_("No line %d in file \"%s\"."),
9779                sal->line, symtab_to_filename_for_display (sal->symtab));
9780       sal->pc = pc;
9781
9782       /* If this SAL corresponds to a breakpoint inserted using a line
9783          number, then skip the function prologue if necessary.  */
9784       if (sal->explicit_line)
9785         skip_prologue_sal (sal);
9786     }
9787
9788   if (sal->section == 0 && sal->symtab != NULL)
9789     {
9790       struct blockvector *bv;
9791       struct block *b;
9792       struct symbol *sym;
9793
9794       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9795       if (bv != NULL)
9796         {
9797           sym = block_linkage_function (b);
9798           if (sym != NULL)
9799             {
9800               fixup_symbol_section (sym, sal->symtab->objfile);
9801               sal->section = SYMBOL_OBJ_SECTION (sym);
9802             }
9803           else
9804             {
9805               /* It really is worthwhile to have the section, so we'll
9806                  just have to look harder. This case can be executed
9807                  if we have line numbers but no functions (as can
9808                  happen in assembly source).  */
9809
9810               struct minimal_symbol *msym;
9811               struct cleanup *old_chain = save_current_space_and_thread ();
9812
9813               switch_to_program_space_and_thread (sal->pspace);
9814
9815               msym = lookup_minimal_symbol_by_pc (sal->pc);
9816               if (msym)
9817                 sal->section = SYMBOL_OBJ_SECTION (msym);
9818
9819               do_cleanups (old_chain);
9820             }
9821         }
9822     }
9823 }
9824
9825 void
9826 break_command (char *arg, int from_tty)
9827 {
9828   break_command_1 (arg, 0, from_tty);
9829 }
9830
9831 void
9832 tbreak_command (char *arg, int from_tty)
9833 {
9834   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9835 }
9836
9837 static void
9838 hbreak_command (char *arg, int from_tty)
9839 {
9840   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9841 }
9842
9843 static void
9844 thbreak_command (char *arg, int from_tty)
9845 {
9846   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9847 }
9848
9849 static void
9850 stop_command (char *arg, int from_tty)
9851 {
9852   printf_filtered (_("Specify the type of breakpoint to set.\n\
9853 Usage: stop in <function | address>\n\
9854        stop at <line>\n"));
9855 }
9856
9857 static void
9858 stopin_command (char *arg, int from_tty)
9859 {
9860   int badInput = 0;
9861
9862   if (arg == (char *) NULL)
9863     badInput = 1;
9864   else if (*arg != '*')
9865     {
9866       char *argptr = arg;
9867       int hasColon = 0;
9868
9869       /* Look for a ':'.  If this is a line number specification, then
9870          say it is bad, otherwise, it should be an address or
9871          function/method name.  */
9872       while (*argptr && !hasColon)
9873         {
9874           hasColon = (*argptr == ':');
9875           argptr++;
9876         }
9877
9878       if (hasColon)
9879         badInput = (*argptr != ':');    /* Not a class::method */
9880       else
9881         badInput = isdigit (*arg);      /* a simple line number */
9882     }
9883
9884   if (badInput)
9885     printf_filtered (_("Usage: stop in <function | address>\n"));
9886   else
9887     break_command_1 (arg, 0, from_tty);
9888 }
9889
9890 static void
9891 stopat_command (char *arg, int from_tty)
9892 {
9893   int badInput = 0;
9894
9895   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9896     badInput = 1;
9897   else
9898     {
9899       char *argptr = arg;
9900       int hasColon = 0;
9901
9902       /* Look for a ':'.  If there is a '::' then get out, otherwise
9903          it is probably a line number.  */
9904       while (*argptr && !hasColon)
9905         {
9906           hasColon = (*argptr == ':');
9907           argptr++;
9908         }
9909
9910       if (hasColon)
9911         badInput = (*argptr == ':');    /* we have class::method */
9912       else
9913         badInput = !isdigit (*arg);     /* not a line number */
9914     }
9915
9916   if (badInput)
9917     printf_filtered (_("Usage: stop at <line>\n"));
9918   else
9919     break_command_1 (arg, 0, from_tty);
9920 }
9921
9922 /* The dynamic printf command is mostly like a regular breakpoint, but
9923    with a prewired command list consisting of a single output command,
9924    built from extra arguments supplied on the dprintf command
9925    line.  */
9926
9927 static void
9928 dprintf_command (char *arg, int from_tty)
9929 {
9930   create_breakpoint (get_current_arch (),
9931                      arg,
9932                      NULL, 0, NULL, 1 /* parse arg */,
9933                      0, bp_dprintf,
9934                      0 /* Ignore count */,
9935                      pending_break_support,
9936                      &dprintf_breakpoint_ops,
9937                      from_tty,
9938                      1 /* enabled */,
9939                      0 /* internal */,
9940                      0);
9941 }
9942
9943 static void
9944 agent_printf_command (char *arg, int from_tty)
9945 {
9946   error (_("May only run agent-printf on the target"));
9947 }
9948
9949 /* Implement the "breakpoint_hit" breakpoint_ops method for
9950    ranged breakpoints.  */
9951
9952 static int
9953 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9954                                   struct address_space *aspace,
9955                                   CORE_ADDR bp_addr,
9956                                   const struct target_waitstatus *ws)
9957 {
9958   if (ws->kind != TARGET_WAITKIND_STOPPED
9959       || ws->value.sig != GDB_SIGNAL_TRAP)
9960     return 0;
9961
9962   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9963                                          bl->length, aspace, bp_addr);
9964 }
9965
9966 /* Implement the "resources_needed" breakpoint_ops method for
9967    ranged breakpoints.  */
9968
9969 static int
9970 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9971 {
9972   return target_ranged_break_num_registers ();
9973 }
9974
9975 /* Implement the "print_it" breakpoint_ops method for
9976    ranged breakpoints.  */
9977
9978 static enum print_stop_action
9979 print_it_ranged_breakpoint (bpstat bs)
9980 {
9981   struct breakpoint *b = bs->breakpoint_at;
9982   struct bp_location *bl = b->loc;
9983   struct ui_out *uiout = current_uiout;
9984
9985   gdb_assert (b->type == bp_hardware_breakpoint);
9986
9987   /* Ranged breakpoints have only one location.  */
9988   gdb_assert (bl && bl->next == NULL);
9989
9990   annotate_breakpoint (b->number);
9991   if (b->disposition == disp_del)
9992     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9993   else
9994     ui_out_text (uiout, "\nRanged breakpoint ");
9995   if (ui_out_is_mi_like_p (uiout))
9996     {
9997       ui_out_field_string (uiout, "reason",
9998                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9999       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10000     }
10001   ui_out_field_int (uiout, "bkptno", b->number);
10002   ui_out_text (uiout, ", ");
10003
10004   return PRINT_SRC_AND_LOC;
10005 }
10006
10007 /* Implement the "print_one" breakpoint_ops method for
10008    ranged breakpoints.  */
10009
10010 static void
10011 print_one_ranged_breakpoint (struct breakpoint *b,
10012                              struct bp_location **last_loc)
10013 {
10014   struct bp_location *bl = b->loc;
10015   struct value_print_options opts;
10016   struct ui_out *uiout = current_uiout;
10017
10018   /* Ranged breakpoints have only one location.  */
10019   gdb_assert (bl && bl->next == NULL);
10020
10021   get_user_print_options (&opts);
10022
10023   if (opts.addressprint)
10024     /* We don't print the address range here, it will be printed later
10025        by print_one_detail_ranged_breakpoint.  */
10026     ui_out_field_skip (uiout, "addr");
10027   annotate_field (5);
10028   print_breakpoint_location (b, bl);
10029   *last_loc = bl;
10030 }
10031
10032 /* Implement the "print_one_detail" breakpoint_ops method for
10033    ranged breakpoints.  */
10034
10035 static void
10036 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10037                                     struct ui_out *uiout)
10038 {
10039   CORE_ADDR address_start, address_end;
10040   struct bp_location *bl = b->loc;
10041   struct ui_file *stb = mem_fileopen ();
10042   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10043
10044   gdb_assert (bl);
10045
10046   address_start = bl->address;
10047   address_end = address_start + bl->length - 1;
10048
10049   ui_out_text (uiout, "\taddress range: ");
10050   fprintf_unfiltered (stb, "[%s, %s]",
10051                       print_core_address (bl->gdbarch, address_start),
10052                       print_core_address (bl->gdbarch, address_end));
10053   ui_out_field_stream (uiout, "addr", stb);
10054   ui_out_text (uiout, "\n");
10055
10056   do_cleanups (cleanup);
10057 }
10058
10059 /* Implement the "print_mention" breakpoint_ops method for
10060    ranged breakpoints.  */
10061
10062 static void
10063 print_mention_ranged_breakpoint (struct breakpoint *b)
10064 {
10065   struct bp_location *bl = b->loc;
10066   struct ui_out *uiout = current_uiout;
10067
10068   gdb_assert (bl);
10069   gdb_assert (b->type == bp_hardware_breakpoint);
10070
10071   if (ui_out_is_mi_like_p (uiout))
10072     return;
10073
10074   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10075                    b->number, paddress (bl->gdbarch, bl->address),
10076                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10077 }
10078
10079 /* Implement the "print_recreate" breakpoint_ops method for
10080    ranged breakpoints.  */
10081
10082 static void
10083 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10084 {
10085   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10086                       b->addr_string_range_end);
10087   print_recreate_thread (b, fp);
10088 }
10089
10090 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10091
10092 static struct breakpoint_ops ranged_breakpoint_ops;
10093
10094 /* Find the address where the end of the breakpoint range should be
10095    placed, given the SAL of the end of the range.  This is so that if
10096    the user provides a line number, the end of the range is set to the
10097    last instruction of the given line.  */
10098
10099 static CORE_ADDR
10100 find_breakpoint_range_end (struct symtab_and_line sal)
10101 {
10102   CORE_ADDR end;
10103
10104   /* If the user provided a PC value, use it.  Otherwise,
10105      find the address of the end of the given location.  */
10106   if (sal.explicit_pc)
10107     end = sal.pc;
10108   else
10109     {
10110       int ret;
10111       CORE_ADDR start;
10112
10113       ret = find_line_pc_range (sal, &start, &end);
10114       if (!ret)
10115         error (_("Could not find location of the end of the range."));
10116
10117       /* find_line_pc_range returns the start of the next line.  */
10118       end--;
10119     }
10120
10121   return end;
10122 }
10123
10124 /* Implement the "break-range" CLI command.  */
10125
10126 static void
10127 break_range_command (char *arg, int from_tty)
10128 {
10129   char *arg_start, *addr_string_start, *addr_string_end;
10130   struct linespec_result canonical_start, canonical_end;
10131   int bp_count, can_use_bp, length;
10132   CORE_ADDR end;
10133   struct breakpoint *b;
10134   struct symtab_and_line sal_start, sal_end;
10135   struct cleanup *cleanup_bkpt;
10136   struct linespec_sals *lsal_start, *lsal_end;
10137
10138   /* We don't support software ranged breakpoints.  */
10139   if (target_ranged_break_num_registers () < 0)
10140     error (_("This target does not support hardware ranged breakpoints."));
10141
10142   bp_count = hw_breakpoint_used_count ();
10143   bp_count += target_ranged_break_num_registers ();
10144   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10145                                                    bp_count, 0);
10146   if (can_use_bp < 0)
10147     error (_("Hardware breakpoints used exceeds limit."));
10148
10149   arg = skip_spaces (arg);
10150   if (arg == NULL || arg[0] == '\0')
10151     error(_("No address range specified."));
10152
10153   init_linespec_result (&canonical_start);
10154
10155   arg_start = arg;
10156   parse_breakpoint_sals (&arg, &canonical_start);
10157
10158   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10159
10160   if (arg[0] != ',')
10161     error (_("Too few arguments."));
10162   else if (VEC_empty (linespec_sals, canonical_start.sals))
10163     error (_("Could not find location of the beginning of the range."));
10164
10165   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10166
10167   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10168       || lsal_start->sals.nelts != 1)
10169     error (_("Cannot create a ranged breakpoint with multiple locations."));
10170
10171   sal_start = lsal_start->sals.sals[0];
10172   addr_string_start = savestring (arg_start, arg - arg_start);
10173   make_cleanup (xfree, addr_string_start);
10174
10175   arg++;        /* Skip the comma.  */
10176   arg = skip_spaces (arg);
10177
10178   /* Parse the end location.  */
10179
10180   init_linespec_result (&canonical_end);
10181   arg_start = arg;
10182
10183   /* We call decode_line_full directly here instead of using
10184      parse_breakpoint_sals because we need to specify the start location's
10185      symtab and line as the default symtab and line for the end of the
10186      range.  This makes it possible to have ranges like "foo.c:27, +14",
10187      where +14 means 14 lines from the start location.  */
10188   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10189                     sal_start.symtab, sal_start.line,
10190                     &canonical_end, NULL, NULL);
10191
10192   make_cleanup_destroy_linespec_result (&canonical_end);
10193
10194   if (VEC_empty (linespec_sals, canonical_end.sals))
10195     error (_("Could not find location of the end of the range."));
10196
10197   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10198   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10199       || lsal_end->sals.nelts != 1)
10200     error (_("Cannot create a ranged breakpoint with multiple locations."));
10201
10202   sal_end = lsal_end->sals.sals[0];
10203   addr_string_end = savestring (arg_start, arg - arg_start);
10204   make_cleanup (xfree, addr_string_end);
10205
10206   end = find_breakpoint_range_end (sal_end);
10207   if (sal_start.pc > end)
10208     error (_("Invalid address range, end precedes start."));
10209
10210   length = end - sal_start.pc + 1;
10211   if (length < 0)
10212     /* Length overflowed.  */
10213     error (_("Address range too large."));
10214   else if (length == 1)
10215     {
10216       /* This range is simple enough to be handled by
10217          the `hbreak' command.  */
10218       hbreak_command (addr_string_start, 1);
10219
10220       do_cleanups (cleanup_bkpt);
10221
10222       return;
10223     }
10224
10225   /* Now set up the breakpoint.  */
10226   b = set_raw_breakpoint (get_current_arch (), sal_start,
10227                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10228   set_breakpoint_count (breakpoint_count + 1);
10229   b->number = breakpoint_count;
10230   b->disposition = disp_donttouch;
10231   b->addr_string = xstrdup (addr_string_start);
10232   b->addr_string_range_end = xstrdup (addr_string_end);
10233   b->loc->length = length;
10234
10235   do_cleanups (cleanup_bkpt);
10236
10237   mention (b);
10238   observer_notify_breakpoint_created (b);
10239   update_global_location_list (1);
10240 }
10241
10242 /*  Return non-zero if EXP is verified as constant.  Returned zero
10243     means EXP is variable.  Also the constant detection may fail for
10244     some constant expressions and in such case still falsely return
10245     zero.  */
10246
10247 static int
10248 watchpoint_exp_is_const (const struct expression *exp)
10249 {
10250   int i = exp->nelts;
10251
10252   while (i > 0)
10253     {
10254       int oplenp, argsp;
10255
10256       /* We are only interested in the descriptor of each element.  */
10257       operator_length (exp, i, &oplenp, &argsp);
10258       i -= oplenp;
10259
10260       switch (exp->elts[i].opcode)
10261         {
10262         case BINOP_ADD:
10263         case BINOP_SUB:
10264         case BINOP_MUL:
10265         case BINOP_DIV:
10266         case BINOP_REM:
10267         case BINOP_MOD:
10268         case BINOP_LSH:
10269         case BINOP_RSH:
10270         case BINOP_LOGICAL_AND:
10271         case BINOP_LOGICAL_OR:
10272         case BINOP_BITWISE_AND:
10273         case BINOP_BITWISE_IOR:
10274         case BINOP_BITWISE_XOR:
10275         case BINOP_EQUAL:
10276         case BINOP_NOTEQUAL:
10277         case BINOP_LESS:
10278         case BINOP_GTR:
10279         case BINOP_LEQ:
10280         case BINOP_GEQ:
10281         case BINOP_REPEAT:
10282         case BINOP_COMMA:
10283         case BINOP_EXP:
10284         case BINOP_MIN:
10285         case BINOP_MAX:
10286         case BINOP_INTDIV:
10287         case BINOP_CONCAT:
10288         case BINOP_IN:
10289         case BINOP_RANGE:
10290         case TERNOP_COND:
10291         case TERNOP_SLICE:
10292
10293         case OP_LONG:
10294         case OP_DOUBLE:
10295         case OP_DECFLOAT:
10296         case OP_LAST:
10297         case OP_COMPLEX:
10298         case OP_STRING:
10299         case OP_ARRAY:
10300         case OP_TYPE:
10301         case OP_TYPEOF:
10302         case OP_DECLTYPE:
10303         case OP_NAME:
10304         case OP_OBJC_NSSTRING:
10305
10306         case UNOP_NEG:
10307         case UNOP_LOGICAL_NOT:
10308         case UNOP_COMPLEMENT:
10309         case UNOP_ADDR:
10310         case UNOP_HIGH:
10311         case UNOP_CAST:
10312
10313         case UNOP_CAST_TYPE:
10314         case UNOP_REINTERPRET_CAST:
10315         case UNOP_DYNAMIC_CAST:
10316           /* Unary, binary and ternary operators: We have to check
10317              their operands.  If they are constant, then so is the
10318              result of that operation.  For instance, if A and B are
10319              determined to be constants, then so is "A + B".
10320
10321              UNOP_IND is one exception to the rule above, because the
10322              value of *ADDR is not necessarily a constant, even when
10323              ADDR is.  */
10324           break;
10325
10326         case OP_VAR_VALUE:
10327           /* Check whether the associated symbol is a constant.
10328
10329              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10330              possible that a buggy compiler could mark a variable as
10331              constant even when it is not, and TYPE_CONST would return
10332              true in this case, while SYMBOL_CLASS wouldn't.
10333
10334              We also have to check for function symbols because they
10335              are always constant.  */
10336           {
10337             struct symbol *s = exp->elts[i + 2].symbol;
10338
10339             if (SYMBOL_CLASS (s) != LOC_BLOCK
10340                 && SYMBOL_CLASS (s) != LOC_CONST
10341                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10342               return 0;
10343             break;
10344           }
10345
10346         /* The default action is to return 0 because we are using
10347            the optimistic approach here: If we don't know something,
10348            then it is not a constant.  */
10349         default:
10350           return 0;
10351         }
10352     }
10353
10354   return 1;
10355 }
10356
10357 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10358
10359 static void
10360 dtor_watchpoint (struct breakpoint *self)
10361 {
10362   struct watchpoint *w = (struct watchpoint *) self;
10363
10364   xfree (w->cond_exp);
10365   xfree (w->exp);
10366   xfree (w->exp_string);
10367   xfree (w->exp_string_reparse);
10368   value_free (w->val);
10369
10370   base_breakpoint_ops.dtor (self);
10371 }
10372
10373 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10374
10375 static void
10376 re_set_watchpoint (struct breakpoint *b)
10377 {
10378   struct watchpoint *w = (struct watchpoint *) b;
10379
10380   /* Watchpoint can be either on expression using entirely global
10381      variables, or it can be on local variables.
10382
10383      Watchpoints of the first kind are never auto-deleted, and even
10384      persist across program restarts.  Since they can use variables
10385      from shared libraries, we need to reparse expression as libraries
10386      are loaded and unloaded.
10387
10388      Watchpoints on local variables can also change meaning as result
10389      of solib event.  For example, if a watchpoint uses both a local
10390      and a global variables in expression, it's a local watchpoint,
10391      but unloading of a shared library will make the expression
10392      invalid.  This is not a very common use case, but we still
10393      re-evaluate expression, to avoid surprises to the user.
10394
10395      Note that for local watchpoints, we re-evaluate it only if
10396      watchpoints frame id is still valid.  If it's not, it means the
10397      watchpoint is out of scope and will be deleted soon.  In fact,
10398      I'm not sure we'll ever be called in this case.
10399
10400      If a local watchpoint's frame id is still valid, then
10401      w->exp_valid_block is likewise valid, and we can safely use it.
10402
10403      Don't do anything about disabled watchpoints, since they will be
10404      reevaluated again when enabled.  */
10405   update_watchpoint (w, 1 /* reparse */);
10406 }
10407
10408 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10409
10410 static int
10411 insert_watchpoint (struct bp_location *bl)
10412 {
10413   struct watchpoint *w = (struct watchpoint *) bl->owner;
10414   int length = w->exact ? 1 : bl->length;
10415
10416   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10417                                    w->cond_exp);
10418 }
10419
10420 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10421
10422 static int
10423 remove_watchpoint (struct bp_location *bl)
10424 {
10425   struct watchpoint *w = (struct watchpoint *) bl->owner;
10426   int length = w->exact ? 1 : bl->length;
10427
10428   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10429                                    w->cond_exp);
10430 }
10431
10432 static int
10433 breakpoint_hit_watchpoint (const struct bp_location *bl,
10434                            struct address_space *aspace, CORE_ADDR bp_addr,
10435                            const struct target_waitstatus *ws)
10436 {
10437   struct breakpoint *b = bl->owner;
10438   struct watchpoint *w = (struct watchpoint *) b;
10439
10440   /* Continuable hardware watchpoints are treated as non-existent if the
10441      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10442      some data address).  Otherwise gdb won't stop on a break instruction
10443      in the code (not from a breakpoint) when a hardware watchpoint has
10444      been defined.  Also skip watchpoints which we know did not trigger
10445      (did not match the data address).  */
10446   if (is_hardware_watchpoint (b)
10447       && w->watchpoint_triggered == watch_triggered_no)
10448     return 0;
10449
10450   return 1;
10451 }
10452
10453 static void
10454 check_status_watchpoint (bpstat bs)
10455 {
10456   gdb_assert (is_watchpoint (bs->breakpoint_at));
10457
10458   bpstat_check_watchpoint (bs);
10459 }
10460
10461 /* Implement the "resources_needed" breakpoint_ops method for
10462    hardware watchpoints.  */
10463
10464 static int
10465 resources_needed_watchpoint (const struct bp_location *bl)
10466 {
10467   struct watchpoint *w = (struct watchpoint *) bl->owner;
10468   int length = w->exact? 1 : bl->length;
10469
10470   return target_region_ok_for_hw_watchpoint (bl->address, length);
10471 }
10472
10473 /* Implement the "works_in_software_mode" breakpoint_ops method for
10474    hardware watchpoints.  */
10475
10476 static int
10477 works_in_software_mode_watchpoint (const struct breakpoint *b)
10478 {
10479   /* Read and access watchpoints only work with hardware support.  */
10480   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10481 }
10482
10483 static enum print_stop_action
10484 print_it_watchpoint (bpstat bs)
10485 {
10486   struct cleanup *old_chain;
10487   struct breakpoint *b;
10488   const struct bp_location *bl;
10489   struct ui_file *stb;
10490   enum print_stop_action result;
10491   struct watchpoint *w;
10492   struct ui_out *uiout = current_uiout;
10493
10494   gdb_assert (bs->bp_location_at != NULL);
10495
10496   bl = bs->bp_location_at;
10497   b = bs->breakpoint_at;
10498   w = (struct watchpoint *) b;
10499
10500   stb = mem_fileopen ();
10501   old_chain = make_cleanup_ui_file_delete (stb);
10502
10503   switch (b->type)
10504     {
10505     case bp_watchpoint:
10506     case bp_hardware_watchpoint:
10507       annotate_watchpoint (b->number);
10508       if (ui_out_is_mi_like_p (uiout))
10509         ui_out_field_string
10510           (uiout, "reason",
10511            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10512       mention (b);
10513       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10514       ui_out_text (uiout, "\nOld value = ");
10515       watchpoint_value_print (bs->old_val, stb);
10516       ui_out_field_stream (uiout, "old", stb);
10517       ui_out_text (uiout, "\nNew value = ");
10518       watchpoint_value_print (w->val, stb);
10519       ui_out_field_stream (uiout, "new", stb);
10520       ui_out_text (uiout, "\n");
10521       /* More than one watchpoint may have been triggered.  */
10522       result = PRINT_UNKNOWN;
10523       break;
10524
10525     case bp_read_watchpoint:
10526       if (ui_out_is_mi_like_p (uiout))
10527         ui_out_field_string
10528           (uiout, "reason",
10529            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10530       mention (b);
10531       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10532       ui_out_text (uiout, "\nValue = ");
10533       watchpoint_value_print (w->val, stb);
10534       ui_out_field_stream (uiout, "value", stb);
10535       ui_out_text (uiout, "\n");
10536       result = PRINT_UNKNOWN;
10537       break;
10538
10539     case bp_access_watchpoint:
10540       if (bs->old_val != NULL)
10541         {
10542           annotate_watchpoint (b->number);
10543           if (ui_out_is_mi_like_p (uiout))
10544             ui_out_field_string
10545               (uiout, "reason",
10546                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10547           mention (b);
10548           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10549           ui_out_text (uiout, "\nOld value = ");
10550           watchpoint_value_print (bs->old_val, stb);
10551           ui_out_field_stream (uiout, "old", stb);
10552           ui_out_text (uiout, "\nNew value = ");
10553         }
10554       else
10555         {
10556           mention (b);
10557           if (ui_out_is_mi_like_p (uiout))
10558             ui_out_field_string
10559               (uiout, "reason",
10560                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10561           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10562           ui_out_text (uiout, "\nValue = ");
10563         }
10564       watchpoint_value_print (w->val, stb);
10565       ui_out_field_stream (uiout, "new", stb);
10566       ui_out_text (uiout, "\n");
10567       result = PRINT_UNKNOWN;
10568       break;
10569     default:
10570       result = PRINT_UNKNOWN;
10571     }
10572
10573   do_cleanups (old_chain);
10574   return result;
10575 }
10576
10577 /* Implement the "print_mention" breakpoint_ops method for hardware
10578    watchpoints.  */
10579
10580 static void
10581 print_mention_watchpoint (struct breakpoint *b)
10582 {
10583   struct cleanup *ui_out_chain;
10584   struct watchpoint *w = (struct watchpoint *) b;
10585   struct ui_out *uiout = current_uiout;
10586
10587   switch (b->type)
10588     {
10589     case bp_watchpoint:
10590       ui_out_text (uiout, "Watchpoint ");
10591       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10592       break;
10593     case bp_hardware_watchpoint:
10594       ui_out_text (uiout, "Hardware watchpoint ");
10595       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10596       break;
10597     case bp_read_watchpoint:
10598       ui_out_text (uiout, "Hardware read watchpoint ");
10599       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10600       break;
10601     case bp_access_watchpoint:
10602       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10603       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10604       break;
10605     default:
10606       internal_error (__FILE__, __LINE__,
10607                       _("Invalid hardware watchpoint type."));
10608     }
10609
10610   ui_out_field_int (uiout, "number", b->number);
10611   ui_out_text (uiout, ": ");
10612   ui_out_field_string (uiout, "exp", w->exp_string);
10613   do_cleanups (ui_out_chain);
10614 }
10615
10616 /* Implement the "print_recreate" breakpoint_ops method for
10617    watchpoints.  */
10618
10619 static void
10620 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10621 {
10622   struct watchpoint *w = (struct watchpoint *) b;
10623
10624   switch (b->type)
10625     {
10626     case bp_watchpoint:
10627     case bp_hardware_watchpoint:
10628       fprintf_unfiltered (fp, "watch");
10629       break;
10630     case bp_read_watchpoint:
10631       fprintf_unfiltered (fp, "rwatch");
10632       break;
10633     case bp_access_watchpoint:
10634       fprintf_unfiltered (fp, "awatch");
10635       break;
10636     default:
10637       internal_error (__FILE__, __LINE__,
10638                       _("Invalid watchpoint type."));
10639     }
10640
10641   fprintf_unfiltered (fp, " %s", w->exp_string);
10642   print_recreate_thread (b, fp);
10643 }
10644
10645 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10646
10647 static struct breakpoint_ops watchpoint_breakpoint_ops;
10648
10649 /* Implement the "insert" breakpoint_ops method for
10650    masked hardware watchpoints.  */
10651
10652 static int
10653 insert_masked_watchpoint (struct bp_location *bl)
10654 {
10655   struct watchpoint *w = (struct watchpoint *) bl->owner;
10656
10657   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10658                                         bl->watchpoint_type);
10659 }
10660
10661 /* Implement the "remove" breakpoint_ops method for
10662    masked hardware watchpoints.  */
10663
10664 static int
10665 remove_masked_watchpoint (struct bp_location *bl)
10666 {
10667   struct watchpoint *w = (struct watchpoint *) bl->owner;
10668
10669   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10670                                         bl->watchpoint_type);
10671 }
10672
10673 /* Implement the "resources_needed" breakpoint_ops method for
10674    masked hardware watchpoints.  */
10675
10676 static int
10677 resources_needed_masked_watchpoint (const struct bp_location *bl)
10678 {
10679   struct watchpoint *w = (struct watchpoint *) bl->owner;
10680
10681   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10682 }
10683
10684 /* Implement the "works_in_software_mode" breakpoint_ops method for
10685    masked hardware watchpoints.  */
10686
10687 static int
10688 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10689 {
10690   return 0;
10691 }
10692
10693 /* Implement the "print_it" breakpoint_ops method for
10694    masked hardware watchpoints.  */
10695
10696 static enum print_stop_action
10697 print_it_masked_watchpoint (bpstat bs)
10698 {
10699   struct breakpoint *b = bs->breakpoint_at;
10700   struct ui_out *uiout = current_uiout;
10701
10702   /* Masked watchpoints have only one location.  */
10703   gdb_assert (b->loc && b->loc->next == NULL);
10704
10705   switch (b->type)
10706     {
10707     case bp_hardware_watchpoint:
10708       annotate_watchpoint (b->number);
10709       if (ui_out_is_mi_like_p (uiout))
10710         ui_out_field_string
10711           (uiout, "reason",
10712            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10713       break;
10714
10715     case bp_read_watchpoint:
10716       if (ui_out_is_mi_like_p (uiout))
10717         ui_out_field_string
10718           (uiout, "reason",
10719            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10720       break;
10721
10722     case bp_access_watchpoint:
10723       if (ui_out_is_mi_like_p (uiout))
10724         ui_out_field_string
10725           (uiout, "reason",
10726            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10727       break;
10728     default:
10729       internal_error (__FILE__, __LINE__,
10730                       _("Invalid hardware watchpoint type."));
10731     }
10732
10733   mention (b);
10734   ui_out_text (uiout, _("\n\
10735 Check the underlying instruction at PC for the memory\n\
10736 address and value which triggered this watchpoint.\n"));
10737   ui_out_text (uiout, "\n");
10738
10739   /* More than one watchpoint may have been triggered.  */
10740   return PRINT_UNKNOWN;
10741 }
10742
10743 /* Implement the "print_one_detail" breakpoint_ops method for
10744    masked hardware watchpoints.  */
10745
10746 static void
10747 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10748                                     struct ui_out *uiout)
10749 {
10750   struct watchpoint *w = (struct watchpoint *) b;
10751
10752   /* Masked watchpoints have only one location.  */
10753   gdb_assert (b->loc && b->loc->next == NULL);
10754
10755   ui_out_text (uiout, "\tmask ");
10756   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10757   ui_out_text (uiout, "\n");
10758 }
10759
10760 /* Implement the "print_mention" breakpoint_ops method for
10761    masked hardware watchpoints.  */
10762
10763 static void
10764 print_mention_masked_watchpoint (struct breakpoint *b)
10765 {
10766   struct watchpoint *w = (struct watchpoint *) b;
10767   struct ui_out *uiout = current_uiout;
10768   struct cleanup *ui_out_chain;
10769
10770   switch (b->type)
10771     {
10772     case bp_hardware_watchpoint:
10773       ui_out_text (uiout, "Masked hardware watchpoint ");
10774       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10775       break;
10776     case bp_read_watchpoint:
10777       ui_out_text (uiout, "Masked hardware read watchpoint ");
10778       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10779       break;
10780     case bp_access_watchpoint:
10781       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10782       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10783       break;
10784     default:
10785       internal_error (__FILE__, __LINE__,
10786                       _("Invalid hardware watchpoint type."));
10787     }
10788
10789   ui_out_field_int (uiout, "number", b->number);
10790   ui_out_text (uiout, ": ");
10791   ui_out_field_string (uiout, "exp", w->exp_string);
10792   do_cleanups (ui_out_chain);
10793 }
10794
10795 /* Implement the "print_recreate" breakpoint_ops method for
10796    masked hardware watchpoints.  */
10797
10798 static void
10799 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10800 {
10801   struct watchpoint *w = (struct watchpoint *) b;
10802   char tmp[40];
10803
10804   switch (b->type)
10805     {
10806     case bp_hardware_watchpoint:
10807       fprintf_unfiltered (fp, "watch");
10808       break;
10809     case bp_read_watchpoint:
10810       fprintf_unfiltered (fp, "rwatch");
10811       break;
10812     case bp_access_watchpoint:
10813       fprintf_unfiltered (fp, "awatch");
10814       break;
10815     default:
10816       internal_error (__FILE__, __LINE__,
10817                       _("Invalid hardware watchpoint type."));
10818     }
10819
10820   sprintf_vma (tmp, w->hw_wp_mask);
10821   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10822   print_recreate_thread (b, fp);
10823 }
10824
10825 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10826
10827 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10828
10829 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10830
10831 static int
10832 is_masked_watchpoint (const struct breakpoint *b)
10833 {
10834   return b->ops == &masked_watchpoint_breakpoint_ops;
10835 }
10836
10837 /* accessflag:  hw_write:  watch write, 
10838                 hw_read:   watch read, 
10839                 hw_access: watch access (read or write) */
10840 static void
10841 watch_command_1 (const char *arg, int accessflag, int from_tty,
10842                  int just_location, int internal)
10843 {
10844   volatile struct gdb_exception e;
10845   struct breakpoint *b, *scope_breakpoint = NULL;
10846   struct expression *exp;
10847   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10848   struct value *val, *mark, *result;
10849   struct frame_info *frame;
10850   const char *exp_start = NULL;
10851   const char *exp_end = NULL;
10852   const char *tok, *end_tok;
10853   int toklen = -1;
10854   const char *cond_start = NULL;
10855   const char *cond_end = NULL;
10856   enum bptype bp_type;
10857   int thread = -1;
10858   int pc = 0;
10859   /* Flag to indicate whether we are going to use masks for
10860      the hardware watchpoint.  */
10861   int use_mask = 0;
10862   CORE_ADDR mask = 0;
10863   struct watchpoint *w;
10864   char *expression;
10865   struct cleanup *back_to;
10866
10867   /* Make sure that we actually have parameters to parse.  */
10868   if (arg != NULL && arg[0] != '\0')
10869     {
10870       const char *value_start;
10871
10872       exp_end = arg + strlen (arg);
10873
10874       /* Look for "parameter value" pairs at the end
10875          of the arguments string.  */
10876       for (tok = exp_end - 1; tok > arg; tok--)
10877         {
10878           /* Skip whitespace at the end of the argument list.  */
10879           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10880             tok--;
10881
10882           /* Find the beginning of the last token.
10883              This is the value of the parameter.  */
10884           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10885             tok--;
10886           value_start = tok + 1;
10887
10888           /* Skip whitespace.  */
10889           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10890             tok--;
10891
10892           end_tok = tok;
10893
10894           /* Find the beginning of the second to last token.
10895              This is the parameter itself.  */
10896           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10897             tok--;
10898           tok++;
10899           toklen = end_tok - tok + 1;
10900
10901           if (toklen == 6 && !strncmp (tok, "thread", 6))
10902             {
10903               /* At this point we've found a "thread" token, which means
10904                  the user is trying to set a watchpoint that triggers
10905                  only in a specific thread.  */
10906               char *endp;
10907
10908               if (thread != -1)
10909                 error(_("You can specify only one thread."));
10910
10911               /* Extract the thread ID from the next token.  */
10912               thread = strtol (value_start, &endp, 0);
10913
10914               /* Check if the user provided a valid numeric value for the
10915                  thread ID.  */
10916               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10917                 error (_("Invalid thread ID specification %s."), value_start);
10918
10919               /* Check if the thread actually exists.  */
10920               if (!valid_thread_id (thread))
10921                 invalid_thread_id_error (thread);
10922             }
10923           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10924             {
10925               /* We've found a "mask" token, which means the user wants to
10926                  create a hardware watchpoint that is going to have the mask
10927                  facility.  */
10928               struct value *mask_value, *mark;
10929
10930               if (use_mask)
10931                 error(_("You can specify only one mask."));
10932
10933               use_mask = just_location = 1;
10934
10935               mark = value_mark ();
10936               mask_value = parse_to_comma_and_eval (&value_start);
10937               mask = value_as_address (mask_value);
10938               value_free_to_mark (mark);
10939             }
10940           else
10941             /* We didn't recognize what we found.  We should stop here.  */
10942             break;
10943
10944           /* Truncate the string and get rid of the "parameter value" pair before
10945              the arguments string is parsed by the parse_exp_1 function.  */
10946           exp_end = tok;
10947         }
10948     }
10949   else
10950     exp_end = arg;
10951
10952   /* Parse the rest of the arguments.  From here on out, everything
10953      is in terms of a newly allocated string instead of the original
10954      ARG.  */
10955   innermost_block = NULL;
10956   expression = savestring (arg, exp_end - arg);
10957   back_to = make_cleanup (xfree, expression);
10958   exp_start = arg = expression;
10959   exp = parse_exp_1 (&arg, 0, 0, 0);
10960   exp_end = arg;
10961   /* Remove trailing whitespace from the expression before saving it.
10962      This makes the eventual display of the expression string a bit
10963      prettier.  */
10964   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10965     --exp_end;
10966
10967   /* Checking if the expression is not constant.  */
10968   if (watchpoint_exp_is_const (exp))
10969     {
10970       int len;
10971
10972       len = exp_end - exp_start;
10973       while (len > 0 && isspace (exp_start[len - 1]))
10974         len--;
10975       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10976     }
10977
10978   exp_valid_block = innermost_block;
10979   mark = value_mark ();
10980   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10981
10982   if (just_location)
10983     {
10984       int ret;
10985
10986       exp_valid_block = NULL;
10987       val = value_addr (result);
10988       release_value (val);
10989       value_free_to_mark (mark);
10990
10991       if (use_mask)
10992         {
10993           ret = target_masked_watch_num_registers (value_as_address (val),
10994                                                    mask);
10995           if (ret == -1)
10996             error (_("This target does not support masked watchpoints."));
10997           else if (ret == -2)
10998             error (_("Invalid mask or memory region."));
10999         }
11000     }
11001   else if (val != NULL)
11002     release_value (val);
11003
11004   tok = skip_spaces_const (arg);
11005   end_tok = skip_to_space_const (tok);
11006
11007   toklen = end_tok - tok;
11008   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11009     {
11010       struct expression *cond;
11011
11012       innermost_block = NULL;
11013       tok = cond_start = end_tok + 1;
11014       cond = parse_exp_1 (&tok, 0, 0, 0);
11015
11016       /* The watchpoint expression may not be local, but the condition
11017          may still be.  E.g.: `watch global if local > 0'.  */
11018       cond_exp_valid_block = innermost_block;
11019
11020       xfree (cond);
11021       cond_end = tok;
11022     }
11023   if (*tok)
11024     error (_("Junk at end of command."));
11025
11026   if (accessflag == hw_read)
11027     bp_type = bp_read_watchpoint;
11028   else if (accessflag == hw_access)
11029     bp_type = bp_access_watchpoint;
11030   else
11031     bp_type = bp_hardware_watchpoint;
11032
11033   frame = block_innermost_frame (exp_valid_block);
11034
11035   /* If the expression is "local", then set up a "watchpoint scope"
11036      breakpoint at the point where we've left the scope of the watchpoint
11037      expression.  Create the scope breakpoint before the watchpoint, so
11038      that we will encounter it first in bpstat_stop_status.  */
11039   if (exp_valid_block && frame)
11040     {
11041       if (frame_id_p (frame_unwind_caller_id (frame)))
11042         {
11043           scope_breakpoint
11044             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11045                                           frame_unwind_caller_pc (frame),
11046                                           bp_watchpoint_scope,
11047                                           &momentary_breakpoint_ops);
11048
11049           scope_breakpoint->enable_state = bp_enabled;
11050
11051           /* Automatically delete the breakpoint when it hits.  */
11052           scope_breakpoint->disposition = disp_del;
11053
11054           /* Only break in the proper frame (help with recursion).  */
11055           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11056
11057           /* Set the address at which we will stop.  */
11058           scope_breakpoint->loc->gdbarch
11059             = frame_unwind_caller_arch (frame);
11060           scope_breakpoint->loc->requested_address
11061             = frame_unwind_caller_pc (frame);
11062           scope_breakpoint->loc->address
11063             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11064                                          scope_breakpoint->loc->requested_address,
11065                                          scope_breakpoint->type);
11066         }
11067     }
11068
11069   /* Now set up the breakpoint.  */
11070
11071   w = XCNEW (struct watchpoint);
11072   b = &w->base;
11073   if (use_mask)
11074     init_raw_breakpoint_without_location (b, NULL, bp_type,
11075                                           &masked_watchpoint_breakpoint_ops);
11076   else
11077     init_raw_breakpoint_without_location (b, NULL, bp_type,
11078                                           &watchpoint_breakpoint_ops);
11079   b->thread = thread;
11080   b->disposition = disp_donttouch;
11081   b->pspace = current_program_space;
11082   w->exp = exp;
11083   w->exp_valid_block = exp_valid_block;
11084   w->cond_exp_valid_block = cond_exp_valid_block;
11085   if (just_location)
11086     {
11087       struct type *t = value_type (val);
11088       CORE_ADDR addr = value_as_address (val);
11089       char *name;
11090
11091       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11092       name = type_to_string (t);
11093
11094       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11095                                           core_addr_to_string (addr));
11096       xfree (name);
11097
11098       w->exp_string = xstrprintf ("-location %.*s",
11099                                   (int) (exp_end - exp_start), exp_start);
11100
11101       /* The above expression is in C.  */
11102       b->language = language_c;
11103     }
11104   else
11105     w->exp_string = savestring (exp_start, exp_end - exp_start);
11106
11107   if (use_mask)
11108     {
11109       w->hw_wp_mask = mask;
11110     }
11111   else
11112     {
11113       w->val = val;
11114       w->val_valid = 1;
11115     }
11116
11117   if (cond_start)
11118     b->cond_string = savestring (cond_start, cond_end - cond_start);
11119   else
11120     b->cond_string = 0;
11121
11122   if (frame)
11123     {
11124       w->watchpoint_frame = get_frame_id (frame);
11125       w->watchpoint_thread = inferior_ptid;
11126     }
11127   else
11128     {
11129       w->watchpoint_frame = null_frame_id;
11130       w->watchpoint_thread = null_ptid;
11131     }
11132
11133   if (scope_breakpoint != NULL)
11134     {
11135       /* The scope breakpoint is related to the watchpoint.  We will
11136          need to act on them together.  */
11137       b->related_breakpoint = scope_breakpoint;
11138       scope_breakpoint->related_breakpoint = b;
11139     }
11140
11141   if (!just_location)
11142     value_free_to_mark (mark);
11143
11144   TRY_CATCH (e, RETURN_MASK_ALL)
11145     {
11146       /* Finally update the new watchpoint.  This creates the locations
11147          that should be inserted.  */
11148       update_watchpoint (w, 1);
11149     }
11150   if (e.reason < 0)
11151     {
11152       delete_breakpoint (b);
11153       throw_exception (e);
11154     }
11155
11156   install_breakpoint (internal, b, 1);
11157   do_cleanups (back_to);
11158 }
11159
11160 /* Return count of debug registers needed to watch the given expression.
11161    If the watchpoint cannot be handled in hardware return zero.  */
11162
11163 static int
11164 can_use_hardware_watchpoint (struct value *v)
11165 {
11166   int found_memory_cnt = 0;
11167   struct value *head = v;
11168
11169   /* Did the user specifically forbid us to use hardware watchpoints? */
11170   if (!can_use_hw_watchpoints)
11171     return 0;
11172
11173   /* Make sure that the value of the expression depends only upon
11174      memory contents, and values computed from them within GDB.  If we
11175      find any register references or function calls, we can't use a
11176      hardware watchpoint.
11177
11178      The idea here is that evaluating an expression generates a series
11179      of values, one holding the value of every subexpression.  (The
11180      expression a*b+c has five subexpressions: a, b, a*b, c, and
11181      a*b+c.)  GDB's values hold almost enough information to establish
11182      the criteria given above --- they identify memory lvalues,
11183      register lvalues, computed values, etcetera.  So we can evaluate
11184      the expression, and then scan the chain of values that leaves
11185      behind to decide whether we can detect any possible change to the
11186      expression's final value using only hardware watchpoints.
11187
11188      However, I don't think that the values returned by inferior
11189      function calls are special in any way.  So this function may not
11190      notice that an expression involving an inferior function call
11191      can't be watched with hardware watchpoints.  FIXME.  */
11192   for (; v; v = value_next (v))
11193     {
11194       if (VALUE_LVAL (v) == lval_memory)
11195         {
11196           if (v != head && value_lazy (v))
11197             /* A lazy memory lvalue in the chain is one that GDB never
11198                needed to fetch; we either just used its address (e.g.,
11199                `a' in `a.b') or we never needed it at all (e.g., `a'
11200                in `a,b').  This doesn't apply to HEAD; if that is
11201                lazy then it was not readable, but watch it anyway.  */
11202             ;
11203           else
11204             {
11205               /* Ahh, memory we actually used!  Check if we can cover
11206                  it with hardware watchpoints.  */
11207               struct type *vtype = check_typedef (value_type (v));
11208
11209               /* We only watch structs and arrays if user asked for it
11210                  explicitly, never if they just happen to appear in a
11211                  middle of some value chain.  */
11212               if (v == head
11213                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11214                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11215                 {
11216                   CORE_ADDR vaddr = value_address (v);
11217                   int len;
11218                   int num_regs;
11219
11220                   len = (target_exact_watchpoints
11221                          && is_scalar_type_recursive (vtype))?
11222                     1 : TYPE_LENGTH (value_type (v));
11223
11224                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11225                   if (!num_regs)
11226                     return 0;
11227                   else
11228                     found_memory_cnt += num_regs;
11229                 }
11230             }
11231         }
11232       else if (VALUE_LVAL (v) != not_lval
11233                && deprecated_value_modifiable (v) == 0)
11234         return 0;       /* These are values from the history (e.g., $1).  */
11235       else if (VALUE_LVAL (v) == lval_register)
11236         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11237     }
11238
11239   /* The expression itself looks suitable for using a hardware
11240      watchpoint, but give the target machine a chance to reject it.  */
11241   return found_memory_cnt;
11242 }
11243
11244 void
11245 watch_command_wrapper (char *arg, int from_tty, int internal)
11246 {
11247   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11248 }
11249
11250 /* A helper function that looks for the "-location" argument and then
11251    calls watch_command_1.  */
11252
11253 static void
11254 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11255 {
11256   int just_location = 0;
11257
11258   if (arg
11259       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11260           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11261     {
11262       arg = skip_spaces (arg);
11263       just_location = 1;
11264     }
11265
11266   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11267 }
11268
11269 static void
11270 watch_command (char *arg, int from_tty)
11271 {
11272   watch_maybe_just_location (arg, hw_write, from_tty);
11273 }
11274
11275 void
11276 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11277 {
11278   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11279 }
11280
11281 static void
11282 rwatch_command (char *arg, int from_tty)
11283 {
11284   watch_maybe_just_location (arg, hw_read, from_tty);
11285 }
11286
11287 void
11288 awatch_command_wrapper (char *arg, int from_tty, int internal)
11289 {
11290   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11291 }
11292
11293 static void
11294 awatch_command (char *arg, int from_tty)
11295 {
11296   watch_maybe_just_location (arg, hw_access, from_tty);
11297 }
11298 \f
11299
11300 /* Helper routines for the until_command routine in infcmd.c.  Here
11301    because it uses the mechanisms of breakpoints.  */
11302
11303 struct until_break_command_continuation_args
11304 {
11305   struct breakpoint *breakpoint;
11306   struct breakpoint *breakpoint2;
11307   int thread_num;
11308 };
11309
11310 /* This function is called by fetch_inferior_event via the
11311    cmd_continuation pointer, to complete the until command.  It takes
11312    care of cleaning up the temporary breakpoints set up by the until
11313    command.  */
11314 static void
11315 until_break_command_continuation (void *arg, int err)
11316 {
11317   struct until_break_command_continuation_args *a = arg;
11318
11319   delete_breakpoint (a->breakpoint);
11320   if (a->breakpoint2)
11321     delete_breakpoint (a->breakpoint2);
11322   delete_longjmp_breakpoint (a->thread_num);
11323 }
11324
11325 void
11326 until_break_command (char *arg, int from_tty, int anywhere)
11327 {
11328   struct symtabs_and_lines sals;
11329   struct symtab_and_line sal;
11330   struct frame_info *frame;
11331   struct gdbarch *frame_gdbarch;
11332   struct frame_id stack_frame_id;
11333   struct frame_id caller_frame_id;
11334   struct breakpoint *breakpoint;
11335   struct breakpoint *breakpoint2 = NULL;
11336   struct cleanup *old_chain;
11337   int thread;
11338   struct thread_info *tp;
11339
11340   clear_proceed_status ();
11341
11342   /* Set a breakpoint where the user wants it and at return from
11343      this function.  */
11344
11345   if (last_displayed_sal_is_valid ())
11346     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11347                           get_last_displayed_symtab (),
11348                           get_last_displayed_line ());
11349   else
11350     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11351                           (struct symtab *) NULL, 0);
11352
11353   if (sals.nelts != 1)
11354     error (_("Couldn't get information on specified line."));
11355
11356   sal = sals.sals[0];
11357   xfree (sals.sals);    /* malloc'd, so freed.  */
11358
11359   if (*arg)
11360     error (_("Junk at end of arguments."));
11361
11362   resolve_sal_pc (&sal);
11363
11364   tp = inferior_thread ();
11365   thread = tp->num;
11366
11367   old_chain = make_cleanup (null_cleanup, NULL);
11368
11369   /* Note linespec handling above invalidates the frame chain.
11370      Installing a breakpoint also invalidates the frame chain (as it
11371      may need to switch threads), so do any frame handling before
11372      that.  */
11373
11374   frame = get_selected_frame (NULL);
11375   frame_gdbarch = get_frame_arch (frame);
11376   stack_frame_id = get_stack_frame_id (frame);
11377   caller_frame_id = frame_unwind_caller_id (frame);
11378
11379   /* Keep within the current frame, or in frames called by the current
11380      one.  */
11381
11382   if (frame_id_p (caller_frame_id))
11383     {
11384       struct symtab_and_line sal2;
11385
11386       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11387       sal2.pc = frame_unwind_caller_pc (frame);
11388       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11389                                               sal2,
11390                                               caller_frame_id,
11391                                               bp_until);
11392       make_cleanup_delete_breakpoint (breakpoint2);
11393
11394       set_longjmp_breakpoint (tp, caller_frame_id);
11395       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11396     }
11397
11398   /* set_momentary_breakpoint could invalidate FRAME.  */
11399   frame = NULL;
11400
11401   if (anywhere)
11402     /* If the user told us to continue until a specified location,
11403        we don't specify a frame at which we need to stop.  */
11404     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11405                                            null_frame_id, bp_until);
11406   else
11407     /* Otherwise, specify the selected frame, because we want to stop
11408        only at the very same frame.  */
11409     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11410                                            stack_frame_id, bp_until);
11411   make_cleanup_delete_breakpoint (breakpoint);
11412
11413   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11414
11415   /* If we are running asynchronously, and proceed call above has
11416      actually managed to start the target, arrange for breakpoints to
11417      be deleted when the target stops.  Otherwise, we're already
11418      stopped and delete breakpoints via cleanup chain.  */
11419
11420   if (target_can_async_p () && is_running (inferior_ptid))
11421     {
11422       struct until_break_command_continuation_args *args;
11423       args = xmalloc (sizeof (*args));
11424
11425       args->breakpoint = breakpoint;
11426       args->breakpoint2 = breakpoint2;
11427       args->thread_num = thread;
11428
11429       discard_cleanups (old_chain);
11430       add_continuation (inferior_thread (),
11431                         until_break_command_continuation, args,
11432                         xfree);
11433     }
11434   else
11435     do_cleanups (old_chain);
11436 }
11437
11438 /* This function attempts to parse an optional "if <cond>" clause
11439    from the arg string.  If one is not found, it returns NULL.
11440
11441    Else, it returns a pointer to the condition string.  (It does not
11442    attempt to evaluate the string against a particular block.)  And,
11443    it updates arg to point to the first character following the parsed
11444    if clause in the arg string.  */
11445
11446 static char *
11447 ep_parse_optional_if_clause (char **arg)
11448 {
11449   char *cond_string;
11450
11451   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11452     return NULL;
11453
11454   /* Skip the "if" keyword.  */
11455   (*arg) += 2;
11456
11457   /* Skip any extra leading whitespace, and record the start of the
11458      condition string.  */
11459   *arg = skip_spaces (*arg);
11460   cond_string = *arg;
11461
11462   /* Assume that the condition occupies the remainder of the arg
11463      string.  */
11464   (*arg) += strlen (cond_string);
11465
11466   return cond_string;
11467 }
11468
11469 /* Commands to deal with catching events, such as signals, exceptions,
11470    process start/exit, etc.  */
11471
11472 typedef enum
11473 {
11474   catch_fork_temporary, catch_vfork_temporary,
11475   catch_fork_permanent, catch_vfork_permanent
11476 }
11477 catch_fork_kind;
11478
11479 static void
11480 catch_fork_command_1 (char *arg, int from_tty, 
11481                       struct cmd_list_element *command)
11482 {
11483   struct gdbarch *gdbarch = get_current_arch ();
11484   char *cond_string = NULL;
11485   catch_fork_kind fork_kind;
11486   int tempflag;
11487
11488   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11489   tempflag = (fork_kind == catch_fork_temporary
11490               || fork_kind == catch_vfork_temporary);
11491
11492   if (!arg)
11493     arg = "";
11494   arg = skip_spaces (arg);
11495
11496   /* The allowed syntax is:
11497      catch [v]fork
11498      catch [v]fork if <cond>
11499
11500      First, check if there's an if clause.  */
11501   cond_string = ep_parse_optional_if_clause (&arg);
11502
11503   if ((*arg != '\0') && !isspace (*arg))
11504     error (_("Junk at end of arguments."));
11505
11506   /* If this target supports it, create a fork or vfork catchpoint
11507      and enable reporting of such events.  */
11508   switch (fork_kind)
11509     {
11510     case catch_fork_temporary:
11511     case catch_fork_permanent:
11512       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11513                                           &catch_fork_breakpoint_ops);
11514       break;
11515     case catch_vfork_temporary:
11516     case catch_vfork_permanent:
11517       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11518                                           &catch_vfork_breakpoint_ops);
11519       break;
11520     default:
11521       error (_("unsupported or unknown fork kind; cannot catch it"));
11522       break;
11523     }
11524 }
11525
11526 static void
11527 catch_exec_command_1 (char *arg, int from_tty, 
11528                       struct cmd_list_element *command)
11529 {
11530   struct exec_catchpoint *c;
11531   struct gdbarch *gdbarch = get_current_arch ();
11532   int tempflag;
11533   char *cond_string = NULL;
11534
11535   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11536
11537   if (!arg)
11538     arg = "";
11539   arg = skip_spaces (arg);
11540
11541   /* The allowed syntax is:
11542      catch exec
11543      catch exec if <cond>
11544
11545      First, check if there's an if clause.  */
11546   cond_string = ep_parse_optional_if_clause (&arg);
11547
11548   if ((*arg != '\0') && !isspace (*arg))
11549     error (_("Junk at end of arguments."));
11550
11551   c = XNEW (struct exec_catchpoint);
11552   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11553                    &catch_exec_breakpoint_ops);
11554   c->exec_pathname = NULL;
11555
11556   install_breakpoint (0, &c->base, 1);
11557 }
11558
11559 static enum print_stop_action
11560 print_it_exception_catchpoint (bpstat bs)
11561 {
11562   struct ui_out *uiout = current_uiout;
11563   struct breakpoint *b = bs->breakpoint_at;
11564   int bp_temp, bp_throw;
11565
11566   annotate_catchpoint (b->number);
11567
11568   bp_throw = strstr (b->addr_string, "throw") != NULL;
11569   if (b->loc->address != b->loc->requested_address)
11570     breakpoint_adjustment_warning (b->loc->requested_address,
11571                                    b->loc->address,
11572                                    b->number, 1);
11573   bp_temp = b->disposition == disp_del;
11574   ui_out_text (uiout, 
11575                bp_temp ? "Temporary catchpoint "
11576                        : "Catchpoint ");
11577   if (!ui_out_is_mi_like_p (uiout))
11578     ui_out_field_int (uiout, "bkptno", b->number);
11579   ui_out_text (uiout,
11580                bp_throw ? " (exception thrown), "
11581                         : " (exception caught), ");
11582   if (ui_out_is_mi_like_p (uiout))
11583     {
11584       ui_out_field_string (uiout, "reason", 
11585                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11586       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11587       ui_out_field_int (uiout, "bkptno", b->number);
11588     }
11589   return PRINT_SRC_AND_LOC;
11590 }
11591
11592 static void
11593 print_one_exception_catchpoint (struct breakpoint *b, 
11594                                 struct bp_location **last_loc)
11595 {
11596   struct value_print_options opts;
11597   struct ui_out *uiout = current_uiout;
11598
11599   get_user_print_options (&opts);
11600   if (opts.addressprint)
11601     {
11602       annotate_field (4);
11603       if (b->loc == NULL || b->loc->shlib_disabled)
11604         ui_out_field_string (uiout, "addr", "<PENDING>");
11605       else
11606         ui_out_field_core_addr (uiout, "addr",
11607                                 b->loc->gdbarch, b->loc->address);
11608     }
11609   annotate_field (5);
11610   if (b->loc)
11611     *last_loc = b->loc;
11612   if (strstr (b->addr_string, "throw") != NULL)
11613     {
11614       ui_out_field_string (uiout, "what", "exception throw");
11615       if (ui_out_is_mi_like_p (uiout))
11616         ui_out_field_string (uiout, "catch-type", "throw");
11617     }
11618   else
11619     {
11620       ui_out_field_string (uiout, "what", "exception catch");
11621       if (ui_out_is_mi_like_p (uiout))
11622         ui_out_field_string (uiout, "catch-type", "catch");
11623     }
11624 }
11625
11626 static void
11627 print_mention_exception_catchpoint (struct breakpoint *b)
11628 {
11629   struct ui_out *uiout = current_uiout;
11630   int bp_temp;
11631   int bp_throw;
11632
11633   bp_temp = b->disposition == disp_del;
11634   bp_throw = strstr (b->addr_string, "throw") != NULL;
11635   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11636                               : _("Catchpoint "));
11637   ui_out_field_int (uiout, "bkptno", b->number);
11638   ui_out_text (uiout, bp_throw ? _(" (throw)")
11639                                : _(" (catch)"));
11640 }
11641
11642 /* Implement the "print_recreate" breakpoint_ops method for throw and
11643    catch catchpoints.  */
11644
11645 static void
11646 print_recreate_exception_catchpoint (struct breakpoint *b, 
11647                                      struct ui_file *fp)
11648 {
11649   int bp_temp;
11650   int bp_throw;
11651
11652   bp_temp = b->disposition == disp_del;
11653   bp_throw = strstr (b->addr_string, "throw") != NULL;
11654   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11655   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11656   print_recreate_thread (b, fp);
11657 }
11658
11659 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11660
11661 static int
11662 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11663                           enum exception_event_kind ex_event, int from_tty)
11664 {
11665   char *trigger_func_name;
11666  
11667   if (ex_event == EX_EVENT_CATCH)
11668     trigger_func_name = "__cxa_begin_catch";
11669   else
11670     trigger_func_name = "__cxa_throw";
11671
11672   create_breakpoint (get_current_arch (),
11673                      trigger_func_name, cond_string, -1, NULL,
11674                      0 /* condition and thread are valid.  */,
11675                      tempflag, bp_breakpoint,
11676                      0,
11677                      AUTO_BOOLEAN_TRUE /* pending */,
11678                      &gnu_v3_exception_catchpoint_ops, from_tty,
11679                      1 /* enabled */,
11680                      0 /* internal */,
11681                      0);
11682
11683   return 1;
11684 }
11685
11686 /* Deal with "catch catch" and "catch throw" commands.  */
11687
11688 static void
11689 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11690                            int tempflag, int from_tty)
11691 {
11692   char *cond_string = NULL;
11693
11694   if (!arg)
11695     arg = "";
11696   arg = skip_spaces (arg);
11697
11698   cond_string = ep_parse_optional_if_clause (&arg);
11699
11700   if ((*arg != '\0') && !isspace (*arg))
11701     error (_("Junk at end of arguments."));
11702
11703   if (ex_event != EX_EVENT_THROW
11704       && ex_event != EX_EVENT_CATCH)
11705     error (_("Unsupported or unknown exception event; cannot catch it"));
11706
11707   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11708     return;
11709
11710   warning (_("Unsupported with this platform/compiler combination."));
11711 }
11712
11713 /* Implementation of "catch catch" command.  */
11714
11715 static void
11716 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11717 {
11718   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11719
11720   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11721 }
11722
11723 /* Implementation of "catch throw" command.  */
11724
11725 static void
11726 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11727 {
11728   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11729
11730   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11731 }
11732
11733 void
11734 init_ada_exception_breakpoint (struct breakpoint *b,
11735                                struct gdbarch *gdbarch,
11736                                struct symtab_and_line sal,
11737                                char *addr_string,
11738                                const struct breakpoint_ops *ops,
11739                                int tempflag,
11740                                int from_tty)
11741 {
11742   if (from_tty)
11743     {
11744       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11745       if (!loc_gdbarch)
11746         loc_gdbarch = gdbarch;
11747
11748       describe_other_breakpoints (loc_gdbarch,
11749                                   sal.pspace, sal.pc, sal.section, -1);
11750       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11751          version for exception catchpoints, because two catchpoints
11752          used for different exception names will use the same address.
11753          In this case, a "breakpoint ... also set at..." warning is
11754          unproductive.  Besides, the warning phrasing is also a bit
11755          inappropriate, we should use the word catchpoint, and tell
11756          the user what type of catchpoint it is.  The above is good
11757          enough for now, though.  */
11758     }
11759
11760   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11761
11762   b->enable_state = bp_enabled;
11763   b->disposition = tempflag ? disp_del : disp_donttouch;
11764   b->addr_string = addr_string;
11765   b->language = language_ada;
11766 }
11767
11768 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11769    filter list, or NULL if no filtering is required.  */
11770 static VEC(int) *
11771 catch_syscall_split_args (char *arg)
11772 {
11773   VEC(int) *result = NULL;
11774   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11775
11776   while (*arg != '\0')
11777     {
11778       int i, syscall_number;
11779       char *endptr;
11780       char cur_name[128];
11781       struct syscall s;
11782
11783       /* Skip whitespace.  */
11784       arg = skip_spaces (arg);
11785
11786       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11787         cur_name[i] = arg[i];
11788       cur_name[i] = '\0';
11789       arg += i;
11790
11791       /* Check if the user provided a syscall name or a number.  */
11792       syscall_number = (int) strtol (cur_name, &endptr, 0);
11793       if (*endptr == '\0')
11794         get_syscall_by_number (syscall_number, &s);
11795       else
11796         {
11797           /* We have a name.  Let's check if it's valid and convert it
11798              to a number.  */
11799           get_syscall_by_name (cur_name, &s);
11800
11801           if (s.number == UNKNOWN_SYSCALL)
11802             /* Here we have to issue an error instead of a warning,
11803                because GDB cannot do anything useful if there's no
11804                syscall number to be caught.  */
11805             error (_("Unknown syscall name '%s'."), cur_name);
11806         }
11807
11808       /* Ok, it's valid.  */
11809       VEC_safe_push (int, result, s.number);
11810     }
11811
11812   discard_cleanups (cleanup);
11813   return result;
11814 }
11815
11816 /* Implement the "catch syscall" command.  */
11817
11818 static void
11819 catch_syscall_command_1 (char *arg, int from_tty, 
11820                          struct cmd_list_element *command)
11821 {
11822   int tempflag;
11823   VEC(int) *filter;
11824   struct syscall s;
11825   struct gdbarch *gdbarch = get_current_arch ();
11826
11827   /* Checking if the feature if supported.  */
11828   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11829     error (_("The feature 'catch syscall' is not supported on \
11830 this architecture yet."));
11831
11832   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11833
11834   arg = skip_spaces (arg);
11835
11836   /* We need to do this first "dummy" translation in order
11837      to get the syscall XML file loaded or, most important,
11838      to display a warning to the user if there's no XML file
11839      for his/her architecture.  */
11840   get_syscall_by_number (0, &s);
11841
11842   /* The allowed syntax is:
11843      catch syscall
11844      catch syscall <name | number> [<name | number> ... <name | number>]
11845
11846      Let's check if there's a syscall name.  */
11847
11848   if (arg != NULL)
11849     filter = catch_syscall_split_args (arg);
11850   else
11851     filter = NULL;
11852
11853   create_syscall_event_catchpoint (tempflag, filter,
11854                                    &catch_syscall_breakpoint_ops);
11855 }
11856
11857 static void
11858 catch_command (char *arg, int from_tty)
11859 {
11860   error (_("Catch requires an event name."));
11861 }
11862 \f
11863
11864 static void
11865 tcatch_command (char *arg, int from_tty)
11866 {
11867   error (_("Catch requires an event name."));
11868 }
11869
11870 /* A qsort comparison function that sorts breakpoints in order.  */
11871
11872 static int
11873 compare_breakpoints (const void *a, const void *b)
11874 {
11875   const breakpoint_p *ba = a;
11876   uintptr_t ua = (uintptr_t) *ba;
11877   const breakpoint_p *bb = b;
11878   uintptr_t ub = (uintptr_t) *bb;
11879
11880   if ((*ba)->number < (*bb)->number)
11881     return -1;
11882   else if ((*ba)->number > (*bb)->number)
11883     return 1;
11884
11885   /* Now sort by address, in case we see, e..g, two breakpoints with
11886      the number 0.  */
11887   if (ua < ub)
11888     return -1;
11889   return ua > ub ? 1 : 0;
11890 }
11891
11892 /* Delete breakpoints by address or line.  */
11893
11894 static void
11895 clear_command (char *arg, int from_tty)
11896 {
11897   struct breakpoint *b, *prev;
11898   VEC(breakpoint_p) *found = 0;
11899   int ix;
11900   int default_match;
11901   struct symtabs_and_lines sals;
11902   struct symtab_and_line sal;
11903   int i;
11904   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11905
11906   if (arg)
11907     {
11908       sals = decode_line_with_current_source (arg,
11909                                               (DECODE_LINE_FUNFIRSTLINE
11910                                                | DECODE_LINE_LIST_MODE));
11911       make_cleanup (xfree, sals.sals);
11912       default_match = 0;
11913     }
11914   else
11915     {
11916       sals.sals = (struct symtab_and_line *)
11917         xmalloc (sizeof (struct symtab_and_line));
11918       make_cleanup (xfree, sals.sals);
11919       init_sal (&sal);          /* Initialize to zeroes.  */
11920
11921       /* Set sal's line, symtab, pc, and pspace to the values
11922          corresponding to the last call to print_frame_info.  If the
11923          codepoint is not valid, this will set all the fields to 0.  */
11924       get_last_displayed_sal (&sal);
11925       if (sal.symtab == 0)
11926         error (_("No source file specified."));
11927
11928       sals.sals[0] = sal;
11929       sals.nelts = 1;
11930
11931       default_match = 1;
11932     }
11933
11934   /* We don't call resolve_sal_pc here.  That's not as bad as it
11935      seems, because all existing breakpoints typically have both
11936      file/line and pc set.  So, if clear is given file/line, we can
11937      match this to existing breakpoint without obtaining pc at all.
11938
11939      We only support clearing given the address explicitly 
11940      present in breakpoint table.  Say, we've set breakpoint 
11941      at file:line.  There were several PC values for that file:line,
11942      due to optimization, all in one block.
11943
11944      We've picked one PC value.  If "clear" is issued with another
11945      PC corresponding to the same file:line, the breakpoint won't
11946      be cleared.  We probably can still clear the breakpoint, but 
11947      since the other PC value is never presented to user, user
11948      can only find it by guessing, and it does not seem important
11949      to support that.  */
11950
11951   /* For each line spec given, delete bps which correspond to it.  Do
11952      it in two passes, solely to preserve the current behavior that
11953      from_tty is forced true if we delete more than one
11954      breakpoint.  */
11955
11956   found = NULL;
11957   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11958   for (i = 0; i < sals.nelts; i++)
11959     {
11960       const char *sal_fullname;
11961
11962       /* If exact pc given, clear bpts at that pc.
11963          If line given (pc == 0), clear all bpts on specified line.
11964          If defaulting, clear all bpts on default line
11965          or at default pc.
11966
11967          defaulting    sal.pc != 0    tests to do
11968
11969          0              1             pc
11970          1              1             pc _and_ line
11971          0              0             line
11972          1              0             <can't happen> */
11973
11974       sal = sals.sals[i];
11975       sal_fullname = (sal.symtab == NULL
11976                       ? NULL : symtab_to_fullname (sal.symtab));
11977
11978       /* Find all matching breakpoints and add them to 'found'.  */
11979       ALL_BREAKPOINTS (b)
11980         {
11981           int match = 0;
11982           /* Are we going to delete b?  */
11983           if (b->type != bp_none && !is_watchpoint (b))
11984             {
11985               struct bp_location *loc = b->loc;
11986               for (; loc; loc = loc->next)
11987                 {
11988                   /* If the user specified file:line, don't allow a PC
11989                      match.  This matches historical gdb behavior.  */
11990                   int pc_match = (!sal.explicit_line
11991                                   && sal.pc
11992                                   && (loc->pspace == sal.pspace)
11993                                   && (loc->address == sal.pc)
11994                                   && (!section_is_overlay (loc->section)
11995                                       || loc->section == sal.section));
11996                   int line_match = 0;
11997
11998                   if ((default_match || sal.explicit_line)
11999                       && loc->symtab != NULL
12000                       && sal_fullname != NULL
12001                       && sal.pspace == loc->pspace
12002                       && loc->line_number == sal.line
12003                       && filename_cmp (symtab_to_fullname (loc->symtab),
12004                                        sal_fullname) == 0)
12005                     line_match = 1;
12006
12007                   if (pc_match || line_match)
12008                     {
12009                       match = 1;
12010                       break;
12011                     }
12012                 }
12013             }
12014
12015           if (match)
12016             VEC_safe_push(breakpoint_p, found, b);
12017         }
12018     }
12019
12020   /* Now go thru the 'found' chain and delete them.  */
12021   if (VEC_empty(breakpoint_p, found))
12022     {
12023       if (arg)
12024         error (_("No breakpoint at %s."), arg);
12025       else
12026         error (_("No breakpoint at this line."));
12027     }
12028
12029   /* Remove duplicates from the vec.  */
12030   qsort (VEC_address (breakpoint_p, found),
12031          VEC_length (breakpoint_p, found),
12032          sizeof (breakpoint_p),
12033          compare_breakpoints);
12034   prev = VEC_index (breakpoint_p, found, 0);
12035   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12036     {
12037       if (b == prev)
12038         {
12039           VEC_ordered_remove (breakpoint_p, found, ix);
12040           --ix;
12041         }
12042     }
12043
12044   if (VEC_length(breakpoint_p, found) > 1)
12045     from_tty = 1;       /* Always report if deleted more than one.  */
12046   if (from_tty)
12047     {
12048       if (VEC_length(breakpoint_p, found) == 1)
12049         printf_unfiltered (_("Deleted breakpoint "));
12050       else
12051         printf_unfiltered (_("Deleted breakpoints "));
12052     }
12053
12054   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12055     {
12056       if (from_tty)
12057         printf_unfiltered ("%d ", b->number);
12058       delete_breakpoint (b);
12059     }
12060   if (from_tty)
12061     putchar_unfiltered ('\n');
12062
12063   do_cleanups (cleanups);
12064 }
12065 \f
12066 /* Delete breakpoint in BS if they are `delete' breakpoints and
12067    all breakpoints that are marked for deletion, whether hit or not.
12068    This is called after any breakpoint is hit, or after errors.  */
12069
12070 void
12071 breakpoint_auto_delete (bpstat bs)
12072 {
12073   struct breakpoint *b, *b_tmp;
12074
12075   for (; bs; bs = bs->next)
12076     if (bs->breakpoint_at
12077         && bs->breakpoint_at->disposition == disp_del
12078         && bs->stop)
12079       delete_breakpoint (bs->breakpoint_at);
12080
12081   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12082   {
12083     if (b->disposition == disp_del_at_next_stop)
12084       delete_breakpoint (b);
12085   }
12086 }
12087
12088 /* A comparison function for bp_location AP and BP being interfaced to
12089    qsort.  Sort elements primarily by their ADDRESS (no matter what
12090    does breakpoint_address_is_meaningful say for its OWNER),
12091    secondarily by ordering first bp_permanent OWNERed elements and
12092    terciarily just ensuring the array is sorted stable way despite
12093    qsort being an unstable algorithm.  */
12094
12095 static int
12096 bp_location_compare (const void *ap, const void *bp)
12097 {
12098   struct bp_location *a = *(void **) ap;
12099   struct bp_location *b = *(void **) bp;
12100   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12101   int a_perm = a->owner->enable_state == bp_permanent;
12102   int b_perm = b->owner->enable_state == bp_permanent;
12103
12104   if (a->address != b->address)
12105     return (a->address > b->address) - (a->address < b->address);
12106
12107   /* Sort locations at the same address by their pspace number, keeping
12108      locations of the same inferior (in a multi-inferior environment)
12109      grouped.  */
12110
12111   if (a->pspace->num != b->pspace->num)
12112     return ((a->pspace->num > b->pspace->num)
12113             - (a->pspace->num < b->pspace->num));
12114
12115   /* Sort permanent breakpoints first.  */
12116   if (a_perm != b_perm)
12117     return (a_perm < b_perm) - (a_perm > b_perm);
12118
12119   /* Make the internal GDB representation stable across GDB runs
12120      where A and B memory inside GDB can differ.  Breakpoint locations of
12121      the same type at the same address can be sorted in arbitrary order.  */
12122
12123   if (a->owner->number != b->owner->number)
12124     return ((a->owner->number > b->owner->number)
12125             - (a->owner->number < b->owner->number));
12126
12127   return (a > b) - (a < b);
12128 }
12129
12130 /* Set bp_location_placed_address_before_address_max and
12131    bp_location_shadow_len_after_address_max according to the current
12132    content of the bp_location array.  */
12133
12134 static void
12135 bp_location_target_extensions_update (void)
12136 {
12137   struct bp_location *bl, **blp_tmp;
12138
12139   bp_location_placed_address_before_address_max = 0;
12140   bp_location_shadow_len_after_address_max = 0;
12141
12142   ALL_BP_LOCATIONS (bl, blp_tmp)
12143     {
12144       CORE_ADDR start, end, addr;
12145
12146       if (!bp_location_has_shadow (bl))
12147         continue;
12148
12149       start = bl->target_info.placed_address;
12150       end = start + bl->target_info.shadow_len;
12151
12152       gdb_assert (bl->address >= start);
12153       addr = bl->address - start;
12154       if (addr > bp_location_placed_address_before_address_max)
12155         bp_location_placed_address_before_address_max = addr;
12156
12157       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12158
12159       gdb_assert (bl->address < end);
12160       addr = end - bl->address;
12161       if (addr > bp_location_shadow_len_after_address_max)
12162         bp_location_shadow_len_after_address_max = addr;
12163     }
12164 }
12165
12166 /* Download tracepoint locations if they haven't been.  */
12167
12168 static void
12169 download_tracepoint_locations (void)
12170 {
12171   struct breakpoint *b;
12172   struct cleanup *old_chain;
12173
12174   if (!target_can_download_tracepoint ())
12175     return;
12176
12177   old_chain = save_current_space_and_thread ();
12178
12179   ALL_TRACEPOINTS (b)
12180     {
12181       struct bp_location *bl;
12182       struct tracepoint *t;
12183       int bp_location_downloaded = 0;
12184
12185       if ((b->type == bp_fast_tracepoint
12186            ? !may_insert_fast_tracepoints
12187            : !may_insert_tracepoints))
12188         continue;
12189
12190       for (bl = b->loc; bl; bl = bl->next)
12191         {
12192           /* In tracepoint, locations are _never_ duplicated, so
12193              should_be_inserted is equivalent to
12194              unduplicated_should_be_inserted.  */
12195           if (!should_be_inserted (bl) || bl->inserted)
12196             continue;
12197
12198           switch_to_program_space_and_thread (bl->pspace);
12199
12200           target_download_tracepoint (bl);
12201
12202           bl->inserted = 1;
12203           bp_location_downloaded = 1;
12204         }
12205       t = (struct tracepoint *) b;
12206       t->number_on_target = b->number;
12207       if (bp_location_downloaded)
12208         observer_notify_breakpoint_modified (b);
12209     }
12210
12211   do_cleanups (old_chain);
12212 }
12213
12214 /* Swap the insertion/duplication state between two locations.  */
12215
12216 static void
12217 swap_insertion (struct bp_location *left, struct bp_location *right)
12218 {
12219   const int left_inserted = left->inserted;
12220   const int left_duplicate = left->duplicate;
12221   const int left_needs_update = left->needs_update;
12222   const struct bp_target_info left_target_info = left->target_info;
12223
12224   /* Locations of tracepoints can never be duplicated.  */
12225   if (is_tracepoint (left->owner))
12226     gdb_assert (!left->duplicate);
12227   if (is_tracepoint (right->owner))
12228     gdb_assert (!right->duplicate);
12229
12230   left->inserted = right->inserted;
12231   left->duplicate = right->duplicate;
12232   left->needs_update = right->needs_update;
12233   left->target_info = right->target_info;
12234   right->inserted = left_inserted;
12235   right->duplicate = left_duplicate;
12236   right->needs_update = left_needs_update;
12237   right->target_info = left_target_info;
12238 }
12239
12240 /* Force the re-insertion of the locations at ADDRESS.  This is called
12241    once a new/deleted/modified duplicate location is found and we are evaluating
12242    conditions on the target's side.  Such conditions need to be updated on
12243    the target.  */
12244
12245 static void
12246 force_breakpoint_reinsertion (struct bp_location *bl)
12247 {
12248   struct bp_location **locp = NULL, **loc2p;
12249   struct bp_location *loc;
12250   CORE_ADDR address = 0;
12251   int pspace_num;
12252
12253   address = bl->address;
12254   pspace_num = bl->pspace->num;
12255
12256   /* This is only meaningful if the target is
12257      evaluating conditions and if the user has
12258      opted for condition evaluation on the target's
12259      side.  */
12260   if (gdb_evaluates_breakpoint_condition_p ()
12261       || !target_supports_evaluation_of_breakpoint_conditions ())
12262     return;
12263
12264   /* Flag all breakpoint locations with this address and
12265      the same program space as the location
12266      as "its condition has changed".  We need to
12267      update the conditions on the target's side.  */
12268   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12269     {
12270       loc = *loc2p;
12271
12272       if (!is_breakpoint (loc->owner)
12273           || pspace_num != loc->pspace->num)
12274         continue;
12275
12276       /* Flag the location appropriately.  We use a different state to
12277          let everyone know that we already updated the set of locations
12278          with addr bl->address and program space bl->pspace.  This is so
12279          we don't have to keep calling these functions just to mark locations
12280          that have already been marked.  */
12281       loc->condition_changed = condition_updated;
12282
12283       /* Free the agent expression bytecode as well.  We will compute
12284          it later on.  */
12285       if (loc->cond_bytecode)
12286         {
12287           free_agent_expr (loc->cond_bytecode);
12288           loc->cond_bytecode = NULL;
12289         }
12290     }
12291 }
12292
12293 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12294    into the inferior, only remove already-inserted locations that no
12295    longer should be inserted.  Functions that delete a breakpoint or
12296    breakpoints should pass false, so that deleting a breakpoint
12297    doesn't have the side effect of inserting the locations of other
12298    breakpoints that are marked not-inserted, but should_be_inserted
12299    returns true on them.
12300
12301    This behaviour is useful is situations close to tear-down -- e.g.,
12302    after an exec, while the target still has execution, but breakpoint
12303    shadows of the previous executable image should *NOT* be restored
12304    to the new image; or before detaching, where the target still has
12305    execution and wants to delete breakpoints from GDB's lists, and all
12306    breakpoints had already been removed from the inferior.  */
12307
12308 static void
12309 update_global_location_list (int should_insert)
12310 {
12311   struct breakpoint *b;
12312   struct bp_location **locp, *loc;
12313   struct cleanup *cleanups;
12314   /* Last breakpoint location address that was marked for update.  */
12315   CORE_ADDR last_addr = 0;
12316   /* Last breakpoint location program space that was marked for update.  */
12317   int last_pspace_num = -1;
12318
12319   /* Used in the duplicates detection below.  When iterating over all
12320      bp_locations, points to the first bp_location of a given address.
12321      Breakpoints and watchpoints of different types are never
12322      duplicates of each other.  Keep one pointer for each type of
12323      breakpoint/watchpoint, so we only need to loop over all locations
12324      once.  */
12325   struct bp_location *bp_loc_first;  /* breakpoint */
12326   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12327   struct bp_location *awp_loc_first; /* access watchpoint */
12328   struct bp_location *rwp_loc_first; /* read watchpoint */
12329
12330   /* Saved former bp_location array which we compare against the newly
12331      built bp_location from the current state of ALL_BREAKPOINTS.  */
12332   struct bp_location **old_location, **old_locp;
12333   unsigned old_location_count;
12334
12335   old_location = bp_location;
12336   old_location_count = bp_location_count;
12337   bp_location = NULL;
12338   bp_location_count = 0;
12339   cleanups = make_cleanup (xfree, old_location);
12340
12341   ALL_BREAKPOINTS (b)
12342     for (loc = b->loc; loc; loc = loc->next)
12343       bp_location_count++;
12344
12345   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12346   locp = bp_location;
12347   ALL_BREAKPOINTS (b)
12348     for (loc = b->loc; loc; loc = loc->next)
12349       *locp++ = loc;
12350   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12351          bp_location_compare);
12352
12353   bp_location_target_extensions_update ();
12354
12355   /* Identify bp_location instances that are no longer present in the
12356      new list, and therefore should be freed.  Note that it's not
12357      necessary that those locations should be removed from inferior --
12358      if there's another location at the same address (previously
12359      marked as duplicate), we don't need to remove/insert the
12360      location.
12361      
12362      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12363      and former bp_location array state respectively.  */
12364
12365   locp = bp_location;
12366   for (old_locp = old_location; old_locp < old_location + old_location_count;
12367        old_locp++)
12368     {
12369       struct bp_location *old_loc = *old_locp;
12370       struct bp_location **loc2p;
12371
12372       /* Tells if 'old_loc' is found among the new locations.  If
12373          not, we have to free it.  */
12374       int found_object = 0;
12375       /* Tells if the location should remain inserted in the target.  */
12376       int keep_in_target = 0;
12377       int removed = 0;
12378
12379       /* Skip LOCP entries which will definitely never be needed.
12380          Stop either at or being the one matching OLD_LOC.  */
12381       while (locp < bp_location + bp_location_count
12382              && (*locp)->address < old_loc->address)
12383         locp++;
12384
12385       for (loc2p = locp;
12386            (loc2p < bp_location + bp_location_count
12387             && (*loc2p)->address == old_loc->address);
12388            loc2p++)
12389         {
12390           /* Check if this is a new/duplicated location or a duplicated
12391              location that had its condition modified.  If so, we want to send
12392              its condition to the target if evaluation of conditions is taking
12393              place there.  */
12394           if ((*loc2p)->condition_changed == condition_modified
12395               && (last_addr != old_loc->address
12396                   || last_pspace_num != old_loc->pspace->num))
12397             {
12398               force_breakpoint_reinsertion (*loc2p);
12399               last_pspace_num = old_loc->pspace->num;
12400             }
12401
12402           if (*loc2p == old_loc)
12403             found_object = 1;
12404         }
12405
12406       /* We have already handled this address, update it so that we don't
12407          have to go through updates again.  */
12408       last_addr = old_loc->address;
12409
12410       /* Target-side condition evaluation: Handle deleted locations.  */
12411       if (!found_object)
12412         force_breakpoint_reinsertion (old_loc);
12413
12414       /* If this location is no longer present, and inserted, look if
12415          there's maybe a new location at the same address.  If so,
12416          mark that one inserted, and don't remove this one.  This is
12417          needed so that we don't have a time window where a breakpoint
12418          at certain location is not inserted.  */
12419
12420       if (old_loc->inserted)
12421         {
12422           /* If the location is inserted now, we might have to remove
12423              it.  */
12424
12425           if (found_object && should_be_inserted (old_loc))
12426             {
12427               /* The location is still present in the location list,
12428                  and still should be inserted.  Don't do anything.  */
12429               keep_in_target = 1;
12430             }
12431           else
12432             {
12433               /* This location still exists, but it won't be kept in the
12434                  target since it may have been disabled.  We proceed to
12435                  remove its target-side condition.  */
12436
12437               /* The location is either no longer present, or got
12438                  disabled.  See if there's another location at the
12439                  same address, in which case we don't need to remove
12440                  this one from the target.  */
12441
12442               /* OLD_LOC comes from existing struct breakpoint.  */
12443               if (breakpoint_address_is_meaningful (old_loc->owner))
12444                 {
12445                   for (loc2p = locp;
12446                        (loc2p < bp_location + bp_location_count
12447                         && (*loc2p)->address == old_loc->address);
12448                        loc2p++)
12449                     {
12450                       struct bp_location *loc2 = *loc2p;
12451
12452                       if (breakpoint_locations_match (loc2, old_loc))
12453                         {
12454                           /* Read watchpoint locations are switched to
12455                              access watchpoints, if the former are not
12456                              supported, but the latter are.  */
12457                           if (is_hardware_watchpoint (old_loc->owner))
12458                             {
12459                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12460                               loc2->watchpoint_type = old_loc->watchpoint_type;
12461                             }
12462
12463                           /* loc2 is a duplicated location. We need to check
12464                              if it should be inserted in case it will be
12465                              unduplicated.  */
12466                           if (loc2 != old_loc
12467                               && unduplicated_should_be_inserted (loc2))
12468                             {
12469                               swap_insertion (old_loc, loc2);
12470                               keep_in_target = 1;
12471                               break;
12472                             }
12473                         }
12474                     }
12475                 }
12476             }
12477
12478           if (!keep_in_target)
12479             {
12480               if (remove_breakpoint (old_loc, mark_uninserted))
12481                 {
12482                   /* This is just about all we can do.  We could keep
12483                      this location on the global list, and try to
12484                      remove it next time, but there's no particular
12485                      reason why we will succeed next time.
12486                      
12487                      Note that at this point, old_loc->owner is still
12488                      valid, as delete_breakpoint frees the breakpoint
12489                      only after calling us.  */
12490                   printf_filtered (_("warning: Error removing "
12491                                      "breakpoint %d\n"), 
12492                                    old_loc->owner->number);
12493                 }
12494               removed = 1;
12495             }
12496         }
12497
12498       if (!found_object)
12499         {
12500           if (removed && non_stop
12501               && breakpoint_address_is_meaningful (old_loc->owner)
12502               && !is_hardware_watchpoint (old_loc->owner))
12503             {
12504               /* This location was removed from the target.  In
12505                  non-stop mode, a race condition is possible where
12506                  we've removed a breakpoint, but stop events for that
12507                  breakpoint are already queued and will arrive later.
12508                  We apply an heuristic to be able to distinguish such
12509                  SIGTRAPs from other random SIGTRAPs: we keep this
12510                  breakpoint location for a bit, and will retire it
12511                  after we see some number of events.  The theory here
12512                  is that reporting of events should, "on the average",
12513                  be fair, so after a while we'll see events from all
12514                  threads that have anything of interest, and no longer
12515                  need to keep this breakpoint location around.  We
12516                  don't hold locations forever so to reduce chances of
12517                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12518                  SIGTRAP.
12519
12520                  The heuristic failing can be disastrous on
12521                  decr_pc_after_break targets.
12522
12523                  On decr_pc_after_break targets, like e.g., x86-linux,
12524                  if we fail to recognize a late breakpoint SIGTRAP,
12525                  because events_till_retirement has reached 0 too
12526                  soon, we'll fail to do the PC adjustment, and report
12527                  a random SIGTRAP to the user.  When the user resumes
12528                  the inferior, it will most likely immediately crash
12529                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12530                  corrupted, because of being resumed e.g., in the
12531                  middle of a multi-byte instruction, or skipped a
12532                  one-byte instruction.  This was actually seen happen
12533                  on native x86-linux, and should be less rare on
12534                  targets that do not support new thread events, like
12535                  remote, due to the heuristic depending on
12536                  thread_count.
12537
12538                  Mistaking a random SIGTRAP for a breakpoint trap
12539                  causes similar symptoms (PC adjustment applied when
12540                  it shouldn't), but then again, playing with SIGTRAPs
12541                  behind the debugger's back is asking for trouble.
12542
12543                  Since hardware watchpoint traps are always
12544                  distinguishable from other traps, so we don't need to
12545                  apply keep hardware watchpoint moribund locations
12546                  around.  We simply always ignore hardware watchpoint
12547                  traps we can no longer explain.  */
12548
12549               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12550               old_loc->owner = NULL;
12551
12552               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12553             }
12554           else
12555             {
12556               old_loc->owner = NULL;
12557               decref_bp_location (&old_loc);
12558             }
12559         }
12560     }
12561
12562   /* Rescan breakpoints at the same address and section, marking the
12563      first one as "first" and any others as "duplicates".  This is so
12564      that the bpt instruction is only inserted once.  If we have a
12565      permanent breakpoint at the same place as BPT, make that one the
12566      official one, and the rest as duplicates.  Permanent breakpoints
12567      are sorted first for the same address.
12568
12569      Do the same for hardware watchpoints, but also considering the
12570      watchpoint's type (regular/access/read) and length.  */
12571
12572   bp_loc_first = NULL;
12573   wp_loc_first = NULL;
12574   awp_loc_first = NULL;
12575   rwp_loc_first = NULL;
12576   ALL_BP_LOCATIONS (loc, locp)
12577     {
12578       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12579          non-NULL.  */
12580       struct bp_location **loc_first_p;
12581       b = loc->owner;
12582
12583       if (!unduplicated_should_be_inserted (loc)
12584           || !breakpoint_address_is_meaningful (b)
12585           /* Don't detect duplicate for tracepoint locations because they are
12586            never duplicated.  See the comments in field `duplicate' of
12587            `struct bp_location'.  */
12588           || is_tracepoint (b))
12589         {
12590           /* Clear the condition modification flag.  */
12591           loc->condition_changed = condition_unchanged;
12592           continue;
12593         }
12594
12595       /* Permanent breakpoint should always be inserted.  */
12596       if (b->enable_state == bp_permanent && ! loc->inserted)
12597         internal_error (__FILE__, __LINE__,
12598                         _("allegedly permanent breakpoint is not "
12599                         "actually inserted"));
12600
12601       if (b->type == bp_hardware_watchpoint)
12602         loc_first_p = &wp_loc_first;
12603       else if (b->type == bp_read_watchpoint)
12604         loc_first_p = &rwp_loc_first;
12605       else if (b->type == bp_access_watchpoint)
12606         loc_first_p = &awp_loc_first;
12607       else
12608         loc_first_p = &bp_loc_first;
12609
12610       if (*loc_first_p == NULL
12611           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12612           || !breakpoint_locations_match (loc, *loc_first_p))
12613         {
12614           *loc_first_p = loc;
12615           loc->duplicate = 0;
12616
12617           if (is_breakpoint (loc->owner) && loc->condition_changed)
12618             {
12619               loc->needs_update = 1;
12620               /* Clear the condition modification flag.  */
12621               loc->condition_changed = condition_unchanged;
12622             }
12623           continue;
12624         }
12625
12626
12627       /* This and the above ensure the invariant that the first location
12628          is not duplicated, and is the inserted one.
12629          All following are marked as duplicated, and are not inserted.  */
12630       if (loc->inserted)
12631         swap_insertion (loc, *loc_first_p);
12632       loc->duplicate = 1;
12633
12634       /* Clear the condition modification flag.  */
12635       loc->condition_changed = condition_unchanged;
12636
12637       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12638           && b->enable_state != bp_permanent)
12639         internal_error (__FILE__, __LINE__,
12640                         _("another breakpoint was inserted on top of "
12641                         "a permanent breakpoint"));
12642     }
12643
12644   if (breakpoints_always_inserted_mode ()
12645       && (have_live_inferiors ()
12646           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12647     {
12648       if (should_insert)
12649         insert_breakpoint_locations ();
12650       else
12651         {
12652           /* Though should_insert is false, we may need to update conditions
12653              on the target's side if it is evaluating such conditions.  We
12654              only update conditions for locations that are marked
12655              "needs_update".  */
12656           update_inserted_breakpoint_locations ();
12657         }
12658     }
12659
12660   if (should_insert)
12661     download_tracepoint_locations ();
12662
12663   do_cleanups (cleanups);
12664 }
12665
12666 void
12667 breakpoint_retire_moribund (void)
12668 {
12669   struct bp_location *loc;
12670   int ix;
12671
12672   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12673     if (--(loc->events_till_retirement) == 0)
12674       {
12675         decref_bp_location (&loc);
12676         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12677         --ix;
12678       }
12679 }
12680
12681 static void
12682 update_global_location_list_nothrow (int inserting)
12683 {
12684   volatile struct gdb_exception e;
12685
12686   TRY_CATCH (e, RETURN_MASK_ERROR)
12687     update_global_location_list (inserting);
12688 }
12689
12690 /* Clear BKP from a BPS.  */
12691
12692 static void
12693 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12694 {
12695   bpstat bs;
12696
12697   for (bs = bps; bs; bs = bs->next)
12698     if (bs->breakpoint_at == bpt)
12699       {
12700         bs->breakpoint_at = NULL;
12701         bs->old_val = NULL;
12702         /* bs->commands will be freed later.  */
12703       }
12704 }
12705
12706 /* Callback for iterate_over_threads.  */
12707 static int
12708 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12709 {
12710   struct breakpoint *bpt = data;
12711
12712   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12713   return 0;
12714 }
12715
12716 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12717    callbacks.  */
12718
12719 static void
12720 say_where (struct breakpoint *b)
12721 {
12722   struct ui_out *uiout = current_uiout;
12723   struct value_print_options opts;
12724
12725   get_user_print_options (&opts);
12726
12727   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12728      single string.  */
12729   if (b->loc == NULL)
12730     {
12731       printf_filtered (_(" (%s) pending."), b->addr_string);
12732     }
12733   else
12734     {
12735       if (opts.addressprint || b->loc->symtab == NULL)
12736         {
12737           printf_filtered (" at ");
12738           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12739                           gdb_stdout);
12740         }
12741       if (b->loc->symtab != NULL)
12742         {
12743           /* If there is a single location, we can print the location
12744              more nicely.  */
12745           if (b->loc->next == NULL)
12746             printf_filtered (": file %s, line %d.",
12747                              symtab_to_filename_for_display (b->loc->symtab),
12748                              b->loc->line_number);
12749           else
12750             /* This is not ideal, but each location may have a
12751                different file name, and this at least reflects the
12752                real situation somewhat.  */
12753             printf_filtered (": %s.", b->addr_string);
12754         }
12755
12756       if (b->loc->next)
12757         {
12758           struct bp_location *loc = b->loc;
12759           int n = 0;
12760           for (; loc; loc = loc->next)
12761             ++n;
12762           printf_filtered (" (%d locations)", n);
12763         }
12764     }
12765 }
12766
12767 /* Default bp_location_ops methods.  */
12768
12769 static void
12770 bp_location_dtor (struct bp_location *self)
12771 {
12772   xfree (self->cond);
12773   if (self->cond_bytecode)
12774     free_agent_expr (self->cond_bytecode);
12775   xfree (self->function_name);
12776 }
12777
12778 static const struct bp_location_ops bp_location_ops =
12779 {
12780   bp_location_dtor
12781 };
12782
12783 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12784    inherit from.  */
12785
12786 static void
12787 base_breakpoint_dtor (struct breakpoint *self)
12788 {
12789   decref_counted_command_line (&self->commands);
12790   xfree (self->cond_string);
12791   xfree (self->extra_string);
12792   xfree (self->addr_string);
12793   xfree (self->filter);
12794   xfree (self->addr_string_range_end);
12795 }
12796
12797 static struct bp_location *
12798 base_breakpoint_allocate_location (struct breakpoint *self)
12799 {
12800   struct bp_location *loc;
12801
12802   loc = XNEW (struct bp_location);
12803   init_bp_location (loc, &bp_location_ops, self);
12804   return loc;
12805 }
12806
12807 static void
12808 base_breakpoint_re_set (struct breakpoint *b)
12809 {
12810   /* Nothing to re-set. */
12811 }
12812
12813 #define internal_error_pure_virtual_called() \
12814   gdb_assert_not_reached ("pure virtual function called")
12815
12816 static int
12817 base_breakpoint_insert_location (struct bp_location *bl)
12818 {
12819   internal_error_pure_virtual_called ();
12820 }
12821
12822 static int
12823 base_breakpoint_remove_location (struct bp_location *bl)
12824 {
12825   internal_error_pure_virtual_called ();
12826 }
12827
12828 static int
12829 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12830                                 struct address_space *aspace,
12831                                 CORE_ADDR bp_addr,
12832                                 const struct target_waitstatus *ws)
12833 {
12834   internal_error_pure_virtual_called ();
12835 }
12836
12837 static void
12838 base_breakpoint_check_status (bpstat bs)
12839 {
12840   /* Always stop.   */
12841 }
12842
12843 /* A "works_in_software_mode" breakpoint_ops method that just internal
12844    errors.  */
12845
12846 static int
12847 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12848 {
12849   internal_error_pure_virtual_called ();
12850 }
12851
12852 /* A "resources_needed" breakpoint_ops method that just internal
12853    errors.  */
12854
12855 static int
12856 base_breakpoint_resources_needed (const struct bp_location *bl)
12857 {
12858   internal_error_pure_virtual_called ();
12859 }
12860
12861 static enum print_stop_action
12862 base_breakpoint_print_it (bpstat bs)
12863 {
12864   internal_error_pure_virtual_called ();
12865 }
12866
12867 static void
12868 base_breakpoint_print_one_detail (const struct breakpoint *self,
12869                                   struct ui_out *uiout)
12870 {
12871   /* nothing */
12872 }
12873
12874 static void
12875 base_breakpoint_print_mention (struct breakpoint *b)
12876 {
12877   internal_error_pure_virtual_called ();
12878 }
12879
12880 static void
12881 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12882 {
12883   internal_error_pure_virtual_called ();
12884 }
12885
12886 static void
12887 base_breakpoint_create_sals_from_address (char **arg,
12888                                           struct linespec_result *canonical,
12889                                           enum bptype type_wanted,
12890                                           char *addr_start,
12891                                           char **copy_arg)
12892 {
12893   internal_error_pure_virtual_called ();
12894 }
12895
12896 static void
12897 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12898                                         struct linespec_result *c,
12899                                         struct linespec_sals *lsal,
12900                                         char *cond_string,
12901                                         char *extra_string,
12902                                         enum bptype type_wanted,
12903                                         enum bpdisp disposition,
12904                                         int thread,
12905                                         int task, int ignore_count,
12906                                         const struct breakpoint_ops *o,
12907                                         int from_tty, int enabled,
12908                                         int internal, unsigned flags)
12909 {
12910   internal_error_pure_virtual_called ();
12911 }
12912
12913 static void
12914 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12915                                  struct symtabs_and_lines *sals)
12916 {
12917   internal_error_pure_virtual_called ();
12918 }
12919
12920 /* The default 'explains_signal' method.  */
12921
12922 static enum bpstat_signal_value
12923 base_breakpoint_explains_signal (struct breakpoint *b)
12924 {
12925   return BPSTAT_SIGNAL_HIDE;
12926 }
12927
12928 struct breakpoint_ops base_breakpoint_ops =
12929 {
12930   base_breakpoint_dtor,
12931   base_breakpoint_allocate_location,
12932   base_breakpoint_re_set,
12933   base_breakpoint_insert_location,
12934   base_breakpoint_remove_location,
12935   base_breakpoint_breakpoint_hit,
12936   base_breakpoint_check_status,
12937   base_breakpoint_resources_needed,
12938   base_breakpoint_works_in_software_mode,
12939   base_breakpoint_print_it,
12940   NULL,
12941   base_breakpoint_print_one_detail,
12942   base_breakpoint_print_mention,
12943   base_breakpoint_print_recreate,
12944   base_breakpoint_create_sals_from_address,
12945   base_breakpoint_create_breakpoints_sal,
12946   base_breakpoint_decode_linespec,
12947   base_breakpoint_explains_signal
12948 };
12949
12950 /* Default breakpoint_ops methods.  */
12951
12952 static void
12953 bkpt_re_set (struct breakpoint *b)
12954 {
12955   /* FIXME: is this still reachable?  */
12956   if (b->addr_string == NULL)
12957     {
12958       /* Anything without a string can't be re-set.  */
12959       delete_breakpoint (b);
12960       return;
12961     }
12962
12963   breakpoint_re_set_default (b);
12964 }
12965
12966 static int
12967 bkpt_insert_location (struct bp_location *bl)
12968 {
12969   if (bl->loc_type == bp_loc_hardware_breakpoint)
12970     return target_insert_hw_breakpoint (bl->gdbarch,
12971                                         &bl->target_info);
12972   else
12973     return target_insert_breakpoint (bl->gdbarch,
12974                                      &bl->target_info);
12975 }
12976
12977 static int
12978 bkpt_remove_location (struct bp_location *bl)
12979 {
12980   if (bl->loc_type == bp_loc_hardware_breakpoint)
12981     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12982   else
12983     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12984 }
12985
12986 static int
12987 bkpt_breakpoint_hit (const struct bp_location *bl,
12988                      struct address_space *aspace, CORE_ADDR bp_addr,
12989                      const struct target_waitstatus *ws)
12990 {
12991   struct breakpoint *b = bl->owner;
12992
12993   if (ws->kind != TARGET_WAITKIND_STOPPED
12994       || ws->value.sig != GDB_SIGNAL_TRAP)
12995     return 0;
12996
12997   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12998                                  aspace, bp_addr))
12999     return 0;
13000
13001   if (overlay_debugging         /* unmapped overlay section */
13002       && section_is_overlay (bl->section)
13003       && !section_is_mapped (bl->section))
13004     return 0;
13005
13006   return 1;
13007 }
13008
13009 static int
13010 bkpt_resources_needed (const struct bp_location *bl)
13011 {
13012   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13013
13014   return 1;
13015 }
13016
13017 static enum print_stop_action
13018 bkpt_print_it (bpstat bs)
13019 {
13020   struct breakpoint *b;
13021   const struct bp_location *bl;
13022   int bp_temp;
13023   struct ui_out *uiout = current_uiout;
13024
13025   gdb_assert (bs->bp_location_at != NULL);
13026
13027   bl = bs->bp_location_at;
13028   b = bs->breakpoint_at;
13029
13030   bp_temp = b->disposition == disp_del;
13031   if (bl->address != bl->requested_address)
13032     breakpoint_adjustment_warning (bl->requested_address,
13033                                    bl->address,
13034                                    b->number, 1);
13035   annotate_breakpoint (b->number);
13036   if (bp_temp)
13037     ui_out_text (uiout, "\nTemporary breakpoint ");
13038   else
13039     ui_out_text (uiout, "\nBreakpoint ");
13040   if (ui_out_is_mi_like_p (uiout))
13041     {
13042       ui_out_field_string (uiout, "reason",
13043                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13044       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13045     }
13046   ui_out_field_int (uiout, "bkptno", b->number);
13047   ui_out_text (uiout, ", ");
13048
13049   return PRINT_SRC_AND_LOC;
13050 }
13051
13052 static void
13053 bkpt_print_mention (struct breakpoint *b)
13054 {
13055   if (ui_out_is_mi_like_p (current_uiout))
13056     return;
13057
13058   switch (b->type)
13059     {
13060     case bp_breakpoint:
13061     case bp_gnu_ifunc_resolver:
13062       if (b->disposition == disp_del)
13063         printf_filtered (_("Temporary breakpoint"));
13064       else
13065         printf_filtered (_("Breakpoint"));
13066       printf_filtered (_(" %d"), b->number);
13067       if (b->type == bp_gnu_ifunc_resolver)
13068         printf_filtered (_(" at gnu-indirect-function resolver"));
13069       break;
13070     case bp_hardware_breakpoint:
13071       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13072       break;
13073     case bp_dprintf:
13074       printf_filtered (_("Dprintf %d"), b->number);
13075       break;
13076     }
13077
13078   say_where (b);
13079 }
13080
13081 static void
13082 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13083 {
13084   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13085     fprintf_unfiltered (fp, "tbreak");
13086   else if (tp->type == bp_breakpoint)
13087     fprintf_unfiltered (fp, "break");
13088   else if (tp->type == bp_hardware_breakpoint
13089            && tp->disposition == disp_del)
13090     fprintf_unfiltered (fp, "thbreak");
13091   else if (tp->type == bp_hardware_breakpoint)
13092     fprintf_unfiltered (fp, "hbreak");
13093   else
13094     internal_error (__FILE__, __LINE__,
13095                     _("unhandled breakpoint type %d"), (int) tp->type);
13096
13097   fprintf_unfiltered (fp, " %s", tp->addr_string);
13098   print_recreate_thread (tp, fp);
13099 }
13100
13101 static void
13102 bkpt_create_sals_from_address (char **arg,
13103                                struct linespec_result *canonical,
13104                                enum bptype type_wanted,
13105                                char *addr_start, char **copy_arg)
13106 {
13107   create_sals_from_address_default (arg, canonical, type_wanted,
13108                                     addr_start, copy_arg);
13109 }
13110
13111 static void
13112 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13113                              struct linespec_result *canonical,
13114                              struct linespec_sals *lsal,
13115                              char *cond_string,
13116                              char *extra_string,
13117                              enum bptype type_wanted,
13118                              enum bpdisp disposition,
13119                              int thread,
13120                              int task, int ignore_count,
13121                              const struct breakpoint_ops *ops,
13122                              int from_tty, int enabled,
13123                              int internal, unsigned flags)
13124 {
13125   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13126                                   cond_string, extra_string,
13127                                   type_wanted,
13128                                   disposition, thread, task,
13129                                   ignore_count, ops, from_tty,
13130                                   enabled, internal, flags);
13131 }
13132
13133 static void
13134 bkpt_decode_linespec (struct breakpoint *b, char **s,
13135                       struct symtabs_and_lines *sals)
13136 {
13137   decode_linespec_default (b, s, sals);
13138 }
13139
13140 /* Virtual table for internal breakpoints.  */
13141
13142 static void
13143 internal_bkpt_re_set (struct breakpoint *b)
13144 {
13145   switch (b->type)
13146     {
13147       /* Delete overlay event and longjmp master breakpoints; they
13148          will be reset later by breakpoint_re_set.  */
13149     case bp_overlay_event:
13150     case bp_longjmp_master:
13151     case bp_std_terminate_master:
13152     case bp_exception_master:
13153       delete_breakpoint (b);
13154       break;
13155
13156       /* This breakpoint is special, it's set up when the inferior
13157          starts and we really don't want to touch it.  */
13158     case bp_shlib_event:
13159
13160       /* Like bp_shlib_event, this breakpoint type is special.  Once
13161          it is set up, we do not want to touch it.  */
13162     case bp_thread_event:
13163       break;
13164     }
13165 }
13166
13167 static void
13168 internal_bkpt_check_status (bpstat bs)
13169 {
13170   if (bs->breakpoint_at->type == bp_shlib_event)
13171     {
13172       /* If requested, stop when the dynamic linker notifies GDB of
13173          events.  This allows the user to get control and place
13174          breakpoints in initializer routines for dynamically loaded
13175          objects (among other things).  */
13176       bs->stop = stop_on_solib_events;
13177       bs->print = stop_on_solib_events;
13178     }
13179   else
13180     bs->stop = 0;
13181 }
13182
13183 static enum print_stop_action
13184 internal_bkpt_print_it (bpstat bs)
13185 {
13186   struct ui_out *uiout = current_uiout;
13187   struct breakpoint *b;
13188
13189   b = bs->breakpoint_at;
13190
13191   switch (b->type)
13192     {
13193     case bp_shlib_event:
13194       /* Did we stop because the user set the stop_on_solib_events
13195          variable?  (If so, we report this as a generic, "Stopped due
13196          to shlib event" message.) */
13197       print_solib_event (0);
13198       break;
13199
13200     case bp_thread_event:
13201       /* Not sure how we will get here.
13202          GDB should not stop for these breakpoints.  */
13203       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13204       break;
13205
13206     case bp_overlay_event:
13207       /* By analogy with the thread event, GDB should not stop for these.  */
13208       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13209       break;
13210
13211     case bp_longjmp_master:
13212       /* These should never be enabled.  */
13213       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13214       break;
13215
13216     case bp_std_terminate_master:
13217       /* These should never be enabled.  */
13218       printf_filtered (_("std::terminate Master Breakpoint: "
13219                          "gdb should not stop!\n"));
13220       break;
13221
13222     case bp_exception_master:
13223       /* These should never be enabled.  */
13224       printf_filtered (_("Exception Master Breakpoint: "
13225                          "gdb should not stop!\n"));
13226       break;
13227     }
13228
13229   return PRINT_NOTHING;
13230 }
13231
13232 static void
13233 internal_bkpt_print_mention (struct breakpoint *b)
13234 {
13235   /* Nothing to mention.  These breakpoints are internal.  */
13236 }
13237
13238 /* Virtual table for momentary breakpoints  */
13239
13240 static void
13241 momentary_bkpt_re_set (struct breakpoint *b)
13242 {
13243   /* Keep temporary breakpoints, which can be encountered when we step
13244      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13245      Otherwise these should have been blown away via the cleanup chain
13246      or by breakpoint_init_inferior when we rerun the executable.  */
13247 }
13248
13249 static void
13250 momentary_bkpt_check_status (bpstat bs)
13251 {
13252   /* Nothing.  The point of these breakpoints is causing a stop.  */
13253 }
13254
13255 static enum print_stop_action
13256 momentary_bkpt_print_it (bpstat bs)
13257 {
13258   struct ui_out *uiout = current_uiout;
13259
13260   if (ui_out_is_mi_like_p (uiout))
13261     {
13262       struct breakpoint *b = bs->breakpoint_at;
13263
13264       switch (b->type)
13265         {
13266         case bp_finish:
13267           ui_out_field_string
13268             (uiout, "reason",
13269              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13270           break;
13271
13272         case bp_until:
13273           ui_out_field_string
13274             (uiout, "reason",
13275              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13276           break;
13277         }
13278     }
13279
13280   return PRINT_UNKNOWN;
13281 }
13282
13283 static void
13284 momentary_bkpt_print_mention (struct breakpoint *b)
13285 {
13286   /* Nothing to mention.  These breakpoints are internal.  */
13287 }
13288
13289 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13290
13291    It gets cleared already on the removal of the first one of such placed
13292    breakpoints.  This is OK as they get all removed altogether.  */
13293
13294 static void
13295 longjmp_bkpt_dtor (struct breakpoint *self)
13296 {
13297   struct thread_info *tp = find_thread_id (self->thread);
13298
13299   if (tp)
13300     tp->initiating_frame = null_frame_id;
13301
13302   momentary_breakpoint_ops.dtor (self);
13303 }
13304
13305 /* Specific methods for probe breakpoints.  */
13306
13307 static int
13308 bkpt_probe_insert_location (struct bp_location *bl)
13309 {
13310   int v = bkpt_insert_location (bl);
13311
13312   if (v == 0)
13313     {
13314       /* The insertion was successful, now let's set the probe's semaphore
13315          if needed.  */
13316       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13317     }
13318
13319   return v;
13320 }
13321
13322 static int
13323 bkpt_probe_remove_location (struct bp_location *bl)
13324 {
13325   /* Let's clear the semaphore before removing the location.  */
13326   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13327
13328   return bkpt_remove_location (bl);
13329 }
13330
13331 static void
13332 bkpt_probe_create_sals_from_address (char **arg,
13333                                      struct linespec_result *canonical,
13334                                      enum bptype type_wanted,
13335                                      char *addr_start, char **copy_arg)
13336 {
13337   struct linespec_sals lsal;
13338
13339   lsal.sals = parse_probes (arg, canonical);
13340
13341   *copy_arg = xstrdup (canonical->addr_string);
13342   lsal.canonical = xstrdup (*copy_arg);
13343
13344   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13345 }
13346
13347 static void
13348 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13349                             struct symtabs_and_lines *sals)
13350 {
13351   *sals = parse_probes (s, NULL);
13352   if (!sals->sals)
13353     error (_("probe not found"));
13354 }
13355
13356 /* The breakpoint_ops structure to be used in tracepoints.  */
13357
13358 static void
13359 tracepoint_re_set (struct breakpoint *b)
13360 {
13361   breakpoint_re_set_default (b);
13362 }
13363
13364 static int
13365 tracepoint_breakpoint_hit (const struct bp_location *bl,
13366                            struct address_space *aspace, CORE_ADDR bp_addr,
13367                            const struct target_waitstatus *ws)
13368 {
13369   /* By definition, the inferior does not report stops at
13370      tracepoints.  */
13371   return 0;
13372 }
13373
13374 static void
13375 tracepoint_print_one_detail (const struct breakpoint *self,
13376                              struct ui_out *uiout)
13377 {
13378   struct tracepoint *tp = (struct tracepoint *) self;
13379   if (tp->static_trace_marker_id)
13380     {
13381       gdb_assert (self->type == bp_static_tracepoint);
13382
13383       ui_out_text (uiout, "\tmarker id is ");
13384       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13385                            tp->static_trace_marker_id);
13386       ui_out_text (uiout, "\n");
13387     }
13388 }
13389
13390 static void
13391 tracepoint_print_mention (struct breakpoint *b)
13392 {
13393   if (ui_out_is_mi_like_p (current_uiout))
13394     return;
13395
13396   switch (b->type)
13397     {
13398     case bp_tracepoint:
13399       printf_filtered (_("Tracepoint"));
13400       printf_filtered (_(" %d"), b->number);
13401       break;
13402     case bp_fast_tracepoint:
13403       printf_filtered (_("Fast tracepoint"));
13404       printf_filtered (_(" %d"), b->number);
13405       break;
13406     case bp_static_tracepoint:
13407       printf_filtered (_("Static tracepoint"));
13408       printf_filtered (_(" %d"), b->number);
13409       break;
13410     default:
13411       internal_error (__FILE__, __LINE__,
13412                       _("unhandled tracepoint type %d"), (int) b->type);
13413     }
13414
13415   say_where (b);
13416 }
13417
13418 static void
13419 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13420 {
13421   struct tracepoint *tp = (struct tracepoint *) self;
13422
13423   if (self->type == bp_fast_tracepoint)
13424     fprintf_unfiltered (fp, "ftrace");
13425   if (self->type == bp_static_tracepoint)
13426     fprintf_unfiltered (fp, "strace");
13427   else if (self->type == bp_tracepoint)
13428     fprintf_unfiltered (fp, "trace");
13429   else
13430     internal_error (__FILE__, __LINE__,
13431                     _("unhandled tracepoint type %d"), (int) self->type);
13432
13433   fprintf_unfiltered (fp, " %s", self->addr_string);
13434   print_recreate_thread (self, fp);
13435
13436   if (tp->pass_count)
13437     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13438 }
13439
13440 static void
13441 tracepoint_create_sals_from_address (char **arg,
13442                                      struct linespec_result *canonical,
13443                                      enum bptype type_wanted,
13444                                      char *addr_start, char **copy_arg)
13445 {
13446   create_sals_from_address_default (arg, canonical, type_wanted,
13447                                     addr_start, copy_arg);
13448 }
13449
13450 static void
13451 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13452                                    struct linespec_result *canonical,
13453                                    struct linespec_sals *lsal,
13454                                    char *cond_string,
13455                                    char *extra_string,
13456                                    enum bptype type_wanted,
13457                                    enum bpdisp disposition,
13458                                    int thread,
13459                                    int task, int ignore_count,
13460                                    const struct breakpoint_ops *ops,
13461                                    int from_tty, int enabled,
13462                                    int internal, unsigned flags)
13463 {
13464   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13465                                   cond_string, extra_string,
13466                                   type_wanted,
13467                                   disposition, thread, task,
13468                                   ignore_count, ops, from_tty,
13469                                   enabled, internal, flags);
13470 }
13471
13472 static void
13473 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13474                             struct symtabs_and_lines *sals)
13475 {
13476   decode_linespec_default (b, s, sals);
13477 }
13478
13479 struct breakpoint_ops tracepoint_breakpoint_ops;
13480
13481 /* The breakpoint_ops structure to be use on tracepoints placed in a
13482    static probe.  */
13483
13484 static void
13485 tracepoint_probe_create_sals_from_address (char **arg,
13486                                            struct linespec_result *canonical,
13487                                            enum bptype type_wanted,
13488                                            char *addr_start, char **copy_arg)
13489 {
13490   /* We use the same method for breakpoint on probes.  */
13491   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13492                                        addr_start, copy_arg);
13493 }
13494
13495 static void
13496 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13497                                   struct symtabs_and_lines *sals)
13498 {
13499   /* We use the same method for breakpoint on probes.  */
13500   bkpt_probe_decode_linespec (b, s, sals);
13501 }
13502
13503 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13504
13505 /* The breakpoint_ops structure to be used on static tracepoints with
13506    markers (`-m').  */
13507
13508 static void
13509 strace_marker_create_sals_from_address (char **arg,
13510                                         struct linespec_result *canonical,
13511                                         enum bptype type_wanted,
13512                                         char *addr_start, char **copy_arg)
13513 {
13514   struct linespec_sals lsal;
13515
13516   lsal.sals = decode_static_tracepoint_spec (arg);
13517
13518   *copy_arg = savestring (addr_start, *arg - addr_start);
13519
13520   canonical->addr_string = xstrdup (*copy_arg);
13521   lsal.canonical = xstrdup (*copy_arg);
13522   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13523 }
13524
13525 static void
13526 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13527                                       struct linespec_result *canonical,
13528                                       struct linespec_sals *lsal,
13529                                       char *cond_string,
13530                                       char *extra_string,
13531                                       enum bptype type_wanted,
13532                                       enum bpdisp disposition,
13533                                       int thread,
13534                                       int task, int ignore_count,
13535                                       const struct breakpoint_ops *ops,
13536                                       int from_tty, int enabled,
13537                                       int internal, unsigned flags)
13538 {
13539   int i;
13540
13541   /* If the user is creating a static tracepoint by marker id
13542      (strace -m MARKER_ID), then store the sals index, so that
13543      breakpoint_re_set can try to match up which of the newly
13544      found markers corresponds to this one, and, don't try to
13545      expand multiple locations for each sal, given than SALS
13546      already should contain all sals for MARKER_ID.  */
13547
13548   for (i = 0; i < lsal->sals.nelts; ++i)
13549     {
13550       struct symtabs_and_lines expanded;
13551       struct tracepoint *tp;
13552       struct cleanup *old_chain;
13553       char *addr_string;
13554
13555       expanded.nelts = 1;
13556       expanded.sals = &lsal->sals.sals[i];
13557
13558       addr_string = xstrdup (canonical->addr_string);
13559       old_chain = make_cleanup (xfree, addr_string);
13560
13561       tp = XCNEW (struct tracepoint);
13562       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13563                            addr_string, NULL,
13564                            cond_string, extra_string,
13565                            type_wanted, disposition,
13566                            thread, task, ignore_count, ops,
13567                            from_tty, enabled, internal, flags,
13568                            canonical->special_display);
13569       /* Given that its possible to have multiple markers with
13570          the same string id, if the user is creating a static
13571          tracepoint by marker id ("strace -m MARKER_ID"), then
13572          store the sals index, so that breakpoint_re_set can
13573          try to match up which of the newly found markers
13574          corresponds to this one  */
13575       tp->static_trace_marker_id_idx = i;
13576
13577       install_breakpoint (internal, &tp->base, 0);
13578
13579       discard_cleanups (old_chain);
13580     }
13581 }
13582
13583 static void
13584 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13585                                struct symtabs_and_lines *sals)
13586 {
13587   struct tracepoint *tp = (struct tracepoint *) b;
13588
13589   *sals = decode_static_tracepoint_spec (s);
13590   if (sals->nelts > tp->static_trace_marker_id_idx)
13591     {
13592       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13593       sals->nelts = 1;
13594     }
13595   else
13596     error (_("marker %s not found"), tp->static_trace_marker_id);
13597 }
13598
13599 static struct breakpoint_ops strace_marker_breakpoint_ops;
13600
13601 static int
13602 strace_marker_p (struct breakpoint *b)
13603 {
13604   return b->ops == &strace_marker_breakpoint_ops;
13605 }
13606
13607 /* Delete a breakpoint and clean up all traces of it in the data
13608    structures.  */
13609
13610 void
13611 delete_breakpoint (struct breakpoint *bpt)
13612 {
13613   struct breakpoint *b;
13614
13615   gdb_assert (bpt != NULL);
13616
13617   /* Has this bp already been deleted?  This can happen because
13618      multiple lists can hold pointers to bp's.  bpstat lists are
13619      especial culprits.
13620
13621      One example of this happening is a watchpoint's scope bp.  When
13622      the scope bp triggers, we notice that the watchpoint is out of
13623      scope, and delete it.  We also delete its scope bp.  But the
13624      scope bp is marked "auto-deleting", and is already on a bpstat.
13625      That bpstat is then checked for auto-deleting bp's, which are
13626      deleted.
13627
13628      A real solution to this problem might involve reference counts in
13629      bp's, and/or giving them pointers back to their referencing
13630      bpstat's, and teaching delete_breakpoint to only free a bp's
13631      storage when no more references were extent.  A cheaper bandaid
13632      was chosen.  */
13633   if (bpt->type == bp_none)
13634     return;
13635
13636   /* At least avoid this stale reference until the reference counting
13637      of breakpoints gets resolved.  */
13638   if (bpt->related_breakpoint != bpt)
13639     {
13640       struct breakpoint *related;
13641       struct watchpoint *w;
13642
13643       if (bpt->type == bp_watchpoint_scope)
13644         w = (struct watchpoint *) bpt->related_breakpoint;
13645       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13646         w = (struct watchpoint *) bpt;
13647       else
13648         w = NULL;
13649       if (w != NULL)
13650         watchpoint_del_at_next_stop (w);
13651
13652       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13653       for (related = bpt; related->related_breakpoint != bpt;
13654            related = related->related_breakpoint);
13655       related->related_breakpoint = bpt->related_breakpoint;
13656       bpt->related_breakpoint = bpt;
13657     }
13658
13659   /* watch_command_1 creates a watchpoint but only sets its number if
13660      update_watchpoint succeeds in creating its bp_locations.  If there's
13661      a problem in that process, we'll be asked to delete the half-created
13662      watchpoint.  In that case, don't announce the deletion.  */
13663   if (bpt->number)
13664     observer_notify_breakpoint_deleted (bpt);
13665
13666   if (breakpoint_chain == bpt)
13667     breakpoint_chain = bpt->next;
13668
13669   ALL_BREAKPOINTS (b)
13670     if (b->next == bpt)
13671     {
13672       b->next = bpt->next;
13673       break;
13674     }
13675
13676   /* Be sure no bpstat's are pointing at the breakpoint after it's
13677      been freed.  */
13678   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13679      in all threads for now.  Note that we cannot just remove bpstats
13680      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13681      commands are associated with the bpstat; if we remove it here,
13682      then the later call to bpstat_do_actions (&stop_bpstat); in
13683      event-top.c won't do anything, and temporary breakpoints with
13684      commands won't work.  */
13685
13686   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13687
13688   /* Now that breakpoint is removed from breakpoint list, update the
13689      global location list.  This will remove locations that used to
13690      belong to this breakpoint.  Do this before freeing the breakpoint
13691      itself, since remove_breakpoint looks at location's owner.  It
13692      might be better design to have location completely
13693      self-contained, but it's not the case now.  */
13694   update_global_location_list (0);
13695
13696   bpt->ops->dtor (bpt);
13697   /* On the chance that someone will soon try again to delete this
13698      same bp, we mark it as deleted before freeing its storage.  */
13699   bpt->type = bp_none;
13700   xfree (bpt);
13701 }
13702
13703 static void
13704 do_delete_breakpoint_cleanup (void *b)
13705 {
13706   delete_breakpoint (b);
13707 }
13708
13709 struct cleanup *
13710 make_cleanup_delete_breakpoint (struct breakpoint *b)
13711 {
13712   return make_cleanup (do_delete_breakpoint_cleanup, b);
13713 }
13714
13715 /* Iterator function to call a user-provided callback function once
13716    for each of B and its related breakpoints.  */
13717
13718 static void
13719 iterate_over_related_breakpoints (struct breakpoint *b,
13720                                   void (*function) (struct breakpoint *,
13721                                                     void *),
13722                                   void *data)
13723 {
13724   struct breakpoint *related;
13725
13726   related = b;
13727   do
13728     {
13729       struct breakpoint *next;
13730
13731       /* FUNCTION may delete RELATED.  */
13732       next = related->related_breakpoint;
13733
13734       if (next == related)
13735         {
13736           /* RELATED is the last ring entry.  */
13737           function (related, data);
13738
13739           /* FUNCTION may have deleted it, so we'd never reach back to
13740              B.  There's nothing left to do anyway, so just break
13741              out.  */
13742           break;
13743         }
13744       else
13745         function (related, data);
13746
13747       related = next;
13748     }
13749   while (related != b);
13750 }
13751
13752 static void
13753 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13754 {
13755   delete_breakpoint (b);
13756 }
13757
13758 /* A callback for map_breakpoint_numbers that calls
13759    delete_breakpoint.  */
13760
13761 static void
13762 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13763 {
13764   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13765 }
13766
13767 void
13768 delete_command (char *arg, int from_tty)
13769 {
13770   struct breakpoint *b, *b_tmp;
13771
13772   dont_repeat ();
13773
13774   if (arg == 0)
13775     {
13776       int breaks_to_delete = 0;
13777
13778       /* Delete all breakpoints if no argument.  Do not delete
13779          internal breakpoints, these have to be deleted with an
13780          explicit breakpoint number argument.  */
13781       ALL_BREAKPOINTS (b)
13782         if (user_breakpoint_p (b))
13783           {
13784             breaks_to_delete = 1;
13785             break;
13786           }
13787
13788       /* Ask user only if there are some breakpoints to delete.  */
13789       if (!from_tty
13790           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13791         {
13792           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13793             if (user_breakpoint_p (b))
13794               delete_breakpoint (b);
13795         }
13796     }
13797   else
13798     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13799 }
13800
13801 static int
13802 all_locations_are_pending (struct bp_location *loc)
13803 {
13804   for (; loc; loc = loc->next)
13805     if (!loc->shlib_disabled
13806         && !loc->pspace->executing_startup)
13807       return 0;
13808   return 1;
13809 }
13810
13811 /* Subroutine of update_breakpoint_locations to simplify it.
13812    Return non-zero if multiple fns in list LOC have the same name.
13813    Null names are ignored.  */
13814
13815 static int
13816 ambiguous_names_p (struct bp_location *loc)
13817 {
13818   struct bp_location *l;
13819   htab_t htab = htab_create_alloc (13, htab_hash_string,
13820                                    (int (*) (const void *, 
13821                                              const void *)) streq,
13822                                    NULL, xcalloc, xfree);
13823
13824   for (l = loc; l != NULL; l = l->next)
13825     {
13826       const char **slot;
13827       const char *name = l->function_name;
13828
13829       /* Allow for some names to be NULL, ignore them.  */
13830       if (name == NULL)
13831         continue;
13832
13833       slot = (const char **) htab_find_slot (htab, (const void *) name,
13834                                              INSERT);
13835       /* NOTE: We can assume slot != NULL here because xcalloc never
13836          returns NULL.  */
13837       if (*slot != NULL)
13838         {
13839           htab_delete (htab);
13840           return 1;
13841         }
13842       *slot = name;
13843     }
13844
13845   htab_delete (htab);
13846   return 0;
13847 }
13848
13849 /* When symbols change, it probably means the sources changed as well,
13850    and it might mean the static tracepoint markers are no longer at
13851    the same address or line numbers they used to be at last we
13852    checked.  Losing your static tracepoints whenever you rebuild is
13853    undesirable.  This function tries to resync/rematch gdb static
13854    tracepoints with the markers on the target, for static tracepoints
13855    that have not been set by marker id.  Static tracepoint that have
13856    been set by marker id are reset by marker id in breakpoint_re_set.
13857    The heuristic is:
13858
13859    1) For a tracepoint set at a specific address, look for a marker at
13860    the old PC.  If one is found there, assume to be the same marker.
13861    If the name / string id of the marker found is different from the
13862    previous known name, assume that means the user renamed the marker
13863    in the sources, and output a warning.
13864
13865    2) For a tracepoint set at a given line number, look for a marker
13866    at the new address of the old line number.  If one is found there,
13867    assume to be the same marker.  If the name / string id of the
13868    marker found is different from the previous known name, assume that
13869    means the user renamed the marker in the sources, and output a
13870    warning.
13871
13872    3) If a marker is no longer found at the same address or line, it
13873    may mean the marker no longer exists.  But it may also just mean
13874    the code changed a bit.  Maybe the user added a few lines of code
13875    that made the marker move up or down (in line number terms).  Ask
13876    the target for info about the marker with the string id as we knew
13877    it.  If found, update line number and address in the matching
13878    static tracepoint.  This will get confused if there's more than one
13879    marker with the same ID (possible in UST, although unadvised
13880    precisely because it confuses tools).  */
13881
13882 static struct symtab_and_line
13883 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13884 {
13885   struct tracepoint *tp = (struct tracepoint *) b;
13886   struct static_tracepoint_marker marker;
13887   CORE_ADDR pc;
13888
13889   pc = sal.pc;
13890   if (sal.line)
13891     find_line_pc (sal.symtab, sal.line, &pc);
13892
13893   if (target_static_tracepoint_marker_at (pc, &marker))
13894     {
13895       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13896         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13897                  b->number,
13898                  tp->static_trace_marker_id, marker.str_id);
13899
13900       xfree (tp->static_trace_marker_id);
13901       tp->static_trace_marker_id = xstrdup (marker.str_id);
13902       release_static_tracepoint_marker (&marker);
13903
13904       return sal;
13905     }
13906
13907   /* Old marker wasn't found on target at lineno.  Try looking it up
13908      by string ID.  */
13909   if (!sal.explicit_pc
13910       && sal.line != 0
13911       && sal.symtab != NULL
13912       && tp->static_trace_marker_id != NULL)
13913     {
13914       VEC(static_tracepoint_marker_p) *markers;
13915
13916       markers
13917         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13918
13919       if (!VEC_empty(static_tracepoint_marker_p, markers))
13920         {
13921           struct symtab_and_line sal2;
13922           struct symbol *sym;
13923           struct static_tracepoint_marker *tpmarker;
13924           struct ui_out *uiout = current_uiout;
13925
13926           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13927
13928           xfree (tp->static_trace_marker_id);
13929           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13930
13931           warning (_("marker for static tracepoint %d (%s) not "
13932                      "found at previous line number"),
13933                    b->number, tp->static_trace_marker_id);
13934
13935           init_sal (&sal2);
13936
13937           sal2.pc = tpmarker->address;
13938
13939           sal2 = find_pc_line (tpmarker->address, 0);
13940           sym = find_pc_sect_function (tpmarker->address, NULL);
13941           ui_out_text (uiout, "Now in ");
13942           if (sym)
13943             {
13944               ui_out_field_string (uiout, "func",
13945                                    SYMBOL_PRINT_NAME (sym));
13946               ui_out_text (uiout, " at ");
13947             }
13948           ui_out_field_string (uiout, "file",
13949                                symtab_to_filename_for_display (sal2.symtab));
13950           ui_out_text (uiout, ":");
13951
13952           if (ui_out_is_mi_like_p (uiout))
13953             {
13954               const char *fullname = symtab_to_fullname (sal2.symtab);
13955
13956               ui_out_field_string (uiout, "fullname", fullname);
13957             }
13958
13959           ui_out_field_int (uiout, "line", sal2.line);
13960           ui_out_text (uiout, "\n");
13961
13962           b->loc->line_number = sal2.line;
13963           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13964
13965           xfree (b->addr_string);
13966           b->addr_string = xstrprintf ("%s:%d",
13967                                    symtab_to_filename_for_display (sal2.symtab),
13968                                        b->loc->line_number);
13969
13970           /* Might be nice to check if function changed, and warn if
13971              so.  */
13972
13973           release_static_tracepoint_marker (tpmarker);
13974         }
13975     }
13976   return sal;
13977 }
13978
13979 /* Returns 1 iff locations A and B are sufficiently same that
13980    we don't need to report breakpoint as changed.  */
13981
13982 static int
13983 locations_are_equal (struct bp_location *a, struct bp_location *b)
13984 {
13985   while (a && b)
13986     {
13987       if (a->address != b->address)
13988         return 0;
13989
13990       if (a->shlib_disabled != b->shlib_disabled)
13991         return 0;
13992
13993       if (a->enabled != b->enabled)
13994         return 0;
13995
13996       a = a->next;
13997       b = b->next;
13998     }
13999
14000   if ((a == NULL) != (b == NULL))
14001     return 0;
14002
14003   return 1;
14004 }
14005
14006 /* Create new breakpoint locations for B (a hardware or software breakpoint)
14007    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
14008    a ranged breakpoint.  */
14009
14010 void
14011 update_breakpoint_locations (struct breakpoint *b,
14012                              struct symtabs_and_lines sals,
14013                              struct symtabs_and_lines sals_end)
14014 {
14015   int i;
14016   struct bp_location *existing_locations = b->loc;
14017
14018   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14019     {
14020       /* Ranged breakpoints have only one start location and one end
14021          location.  */
14022       b->enable_state = bp_disabled;
14023       update_global_location_list (1);
14024       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14025                            "multiple locations found\n"),
14026                          b->number);
14027       return;
14028     }
14029
14030   /* If there's no new locations, and all existing locations are
14031      pending, don't do anything.  This optimizes the common case where
14032      all locations are in the same shared library, that was unloaded.
14033      We'd like to retain the location, so that when the library is
14034      loaded again, we don't loose the enabled/disabled status of the
14035      individual locations.  */
14036   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14037     return;
14038
14039   b->loc = NULL;
14040
14041   for (i = 0; i < sals.nelts; ++i)
14042     {
14043       struct bp_location *new_loc;
14044
14045       switch_to_program_space_and_thread (sals.sals[i].pspace);
14046
14047       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14048
14049       /* Reparse conditions, they might contain references to the
14050          old symtab.  */
14051       if (b->cond_string != NULL)
14052         {
14053           const char *s;
14054           volatile struct gdb_exception e;
14055
14056           s = b->cond_string;
14057           TRY_CATCH (e, RETURN_MASK_ERROR)
14058             {
14059               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14060                                            block_for_pc (sals.sals[i].pc), 
14061                                            0);
14062             }
14063           if (e.reason < 0)
14064             {
14065               warning (_("failed to reevaluate condition "
14066                          "for breakpoint %d: %s"), 
14067                        b->number, e.message);
14068               new_loc->enabled = 0;
14069             }
14070         }
14071
14072       if (sals_end.nelts)
14073         {
14074           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14075
14076           new_loc->length = end - sals.sals[0].pc + 1;
14077         }
14078     }
14079
14080   /* Update locations of permanent breakpoints.  */
14081   if (b->enable_state == bp_permanent)
14082     make_breakpoint_permanent (b);
14083
14084   /* If possible, carry over 'disable' status from existing
14085      breakpoints.  */
14086   {
14087     struct bp_location *e = existing_locations;
14088     /* If there are multiple breakpoints with the same function name,
14089        e.g. for inline functions, comparing function names won't work.
14090        Instead compare pc addresses; this is just a heuristic as things
14091        may have moved, but in practice it gives the correct answer
14092        often enough until a better solution is found.  */
14093     int have_ambiguous_names = ambiguous_names_p (b->loc);
14094
14095     for (; e; e = e->next)
14096       {
14097         if (!e->enabled && e->function_name)
14098           {
14099             struct bp_location *l = b->loc;
14100             if (have_ambiguous_names)
14101               {
14102                 for (; l; l = l->next)
14103                   if (breakpoint_locations_match (e, l))
14104                     {
14105                       l->enabled = 0;
14106                       break;
14107                     }
14108               }
14109             else
14110               {
14111                 for (; l; l = l->next)
14112                   if (l->function_name
14113                       && strcmp (e->function_name, l->function_name) == 0)
14114                     {
14115                       l->enabled = 0;
14116                       break;
14117                     }
14118               }
14119           }
14120       }
14121   }
14122
14123   if (!locations_are_equal (existing_locations, b->loc))
14124     observer_notify_breakpoint_modified (b);
14125
14126   update_global_location_list (1);
14127 }
14128
14129 /* Find the SaL locations corresponding to the given ADDR_STRING.
14130    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14131
14132 static struct symtabs_and_lines
14133 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14134 {
14135   char *s;
14136   struct symtabs_and_lines sals = {0};
14137   volatile struct gdb_exception e;
14138
14139   gdb_assert (b->ops != NULL);
14140   s = addr_string;
14141
14142   TRY_CATCH (e, RETURN_MASK_ERROR)
14143     {
14144       b->ops->decode_linespec (b, &s, &sals);
14145     }
14146   if (e.reason < 0)
14147     {
14148       int not_found_and_ok = 0;
14149       /* For pending breakpoints, it's expected that parsing will
14150          fail until the right shared library is loaded.  User has
14151          already told to create pending breakpoints and don't need
14152          extra messages.  If breakpoint is in bp_shlib_disabled
14153          state, then user already saw the message about that
14154          breakpoint being disabled, and don't want to see more
14155          errors.  */
14156       if (e.error == NOT_FOUND_ERROR
14157           && (b->condition_not_parsed 
14158               || (b->loc && b->loc->shlib_disabled)
14159               || (b->loc && b->loc->pspace->executing_startup)
14160               || b->enable_state == bp_disabled))
14161         not_found_and_ok = 1;
14162
14163       if (!not_found_and_ok)
14164         {
14165           /* We surely don't want to warn about the same breakpoint
14166              10 times.  One solution, implemented here, is disable
14167              the breakpoint on error.  Another solution would be to
14168              have separate 'warning emitted' flag.  Since this
14169              happens only when a binary has changed, I don't know
14170              which approach is better.  */
14171           b->enable_state = bp_disabled;
14172           throw_exception (e);
14173         }
14174     }
14175
14176   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14177     {
14178       int i;
14179
14180       for (i = 0; i < sals.nelts; ++i)
14181         resolve_sal_pc (&sals.sals[i]);
14182       if (b->condition_not_parsed && s && s[0])
14183         {
14184           char *cond_string, *extra_string;
14185           int thread, task;
14186
14187           find_condition_and_thread (s, sals.sals[0].pc,
14188                                      &cond_string, &thread, &task,
14189                                      &extra_string);
14190           if (cond_string)
14191             b->cond_string = cond_string;
14192           b->thread = thread;
14193           b->task = task;
14194           if (extra_string)
14195             b->extra_string = extra_string;
14196           b->condition_not_parsed = 0;
14197         }
14198
14199       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14200         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14201
14202       *found = 1;
14203     }
14204   else
14205     *found = 0;
14206
14207   return sals;
14208 }
14209
14210 /* The default re_set method, for typical hardware or software
14211    breakpoints.  Reevaluate the breakpoint and recreate its
14212    locations.  */
14213
14214 static void
14215 breakpoint_re_set_default (struct breakpoint *b)
14216 {
14217   int found;
14218   struct symtabs_and_lines sals, sals_end;
14219   struct symtabs_and_lines expanded = {0};
14220   struct symtabs_and_lines expanded_end = {0};
14221
14222   sals = addr_string_to_sals (b, b->addr_string, &found);
14223   if (found)
14224     {
14225       make_cleanup (xfree, sals.sals);
14226       expanded = sals;
14227     }
14228
14229   if (b->addr_string_range_end)
14230     {
14231       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14232       if (found)
14233         {
14234           make_cleanup (xfree, sals_end.sals);
14235           expanded_end = sals_end;
14236         }
14237     }
14238
14239   update_breakpoint_locations (b, expanded, expanded_end);
14240 }
14241
14242 /* Default method for creating SALs from an address string.  It basically
14243    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14244
14245 static void
14246 create_sals_from_address_default (char **arg,
14247                                   struct linespec_result *canonical,
14248                                   enum bptype type_wanted,
14249                                   char *addr_start, char **copy_arg)
14250 {
14251   parse_breakpoint_sals (arg, canonical);
14252 }
14253
14254 /* Call create_breakpoints_sal for the given arguments.  This is the default
14255    function for the `create_breakpoints_sal' method of
14256    breakpoint_ops.  */
14257
14258 static void
14259 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14260                                 struct linespec_result *canonical,
14261                                 struct linespec_sals *lsal,
14262                                 char *cond_string,
14263                                 char *extra_string,
14264                                 enum bptype type_wanted,
14265                                 enum bpdisp disposition,
14266                                 int thread,
14267                                 int task, int ignore_count,
14268                                 const struct breakpoint_ops *ops,
14269                                 int from_tty, int enabled,
14270                                 int internal, unsigned flags)
14271 {
14272   create_breakpoints_sal (gdbarch, canonical, cond_string,
14273                           extra_string,
14274                           type_wanted, disposition,
14275                           thread, task, ignore_count, ops, from_tty,
14276                           enabled, internal, flags);
14277 }
14278
14279 /* Decode the line represented by S by calling decode_line_full.  This is the
14280    default function for the `decode_linespec' method of breakpoint_ops.  */
14281
14282 static void
14283 decode_linespec_default (struct breakpoint *b, char **s,
14284                          struct symtabs_and_lines *sals)
14285 {
14286   struct linespec_result canonical;
14287
14288   init_linespec_result (&canonical);
14289   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14290                     (struct symtab *) NULL, 0,
14291                     &canonical, multiple_symbols_all,
14292                     b->filter);
14293
14294   /* We should get 0 or 1 resulting SALs.  */
14295   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14296
14297   if (VEC_length (linespec_sals, canonical.sals) > 0)
14298     {
14299       struct linespec_sals *lsal;
14300
14301       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14302       *sals = lsal->sals;
14303       /* Arrange it so the destructor does not free the
14304          contents.  */
14305       lsal->sals.sals = NULL;
14306     }
14307
14308   destroy_linespec_result (&canonical);
14309 }
14310
14311 /* Prepare the global context for a re-set of breakpoint B.  */
14312
14313 static struct cleanup *
14314 prepare_re_set_context (struct breakpoint *b)
14315 {
14316   struct cleanup *cleanups;
14317
14318   input_radix = b->input_radix;
14319   cleanups = save_current_space_and_thread ();
14320   if (b->pspace != NULL)
14321     switch_to_program_space_and_thread (b->pspace);
14322   set_language (b->language);
14323
14324   return cleanups;
14325 }
14326
14327 /* Reset a breakpoint given it's struct breakpoint * BINT.
14328    The value we return ends up being the return value from catch_errors.
14329    Unused in this case.  */
14330
14331 static int
14332 breakpoint_re_set_one (void *bint)
14333 {
14334   /* Get past catch_errs.  */
14335   struct breakpoint *b = (struct breakpoint *) bint;
14336   struct cleanup *cleanups;
14337
14338   cleanups = prepare_re_set_context (b);
14339   b->ops->re_set (b);
14340   do_cleanups (cleanups);
14341   return 0;
14342 }
14343
14344 /* Re-set all breakpoints after symbols have been re-loaded.  */
14345 void
14346 breakpoint_re_set (void)
14347 {
14348   struct breakpoint *b, *b_tmp;
14349   enum language save_language;
14350   int save_input_radix;
14351   struct cleanup *old_chain;
14352
14353   save_language = current_language->la_language;
14354   save_input_radix = input_radix;
14355   old_chain = save_current_program_space ();
14356
14357   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14358   {
14359     /* Format possible error msg.  */
14360     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14361                                 b->number);
14362     struct cleanup *cleanups = make_cleanup (xfree, message);
14363     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14364     do_cleanups (cleanups);
14365   }
14366   set_language (save_language);
14367   input_radix = save_input_radix;
14368
14369   jit_breakpoint_re_set ();
14370
14371   do_cleanups (old_chain);
14372
14373   create_overlay_event_breakpoint ();
14374   create_longjmp_master_breakpoint ();
14375   create_std_terminate_master_breakpoint ();
14376   create_exception_master_breakpoint ();
14377 }
14378 \f
14379 /* Reset the thread number of this breakpoint:
14380
14381    - If the breakpoint is for all threads, leave it as-is.
14382    - Else, reset it to the current thread for inferior_ptid.  */
14383 void
14384 breakpoint_re_set_thread (struct breakpoint *b)
14385 {
14386   if (b->thread != -1)
14387     {
14388       if (in_thread_list (inferior_ptid))
14389         b->thread = pid_to_thread_id (inferior_ptid);
14390
14391       /* We're being called after following a fork.  The new fork is
14392          selected as current, and unless this was a vfork will have a
14393          different program space from the original thread.  Reset that
14394          as well.  */
14395       b->loc->pspace = current_program_space;
14396     }
14397 }
14398
14399 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14400    If from_tty is nonzero, it prints a message to that effect,
14401    which ends with a period (no newline).  */
14402
14403 void
14404 set_ignore_count (int bptnum, int count, int from_tty)
14405 {
14406   struct breakpoint *b;
14407
14408   if (count < 0)
14409     count = 0;
14410
14411   ALL_BREAKPOINTS (b)
14412     if (b->number == bptnum)
14413     {
14414       if (is_tracepoint (b))
14415         {
14416           if (from_tty && count != 0)
14417             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14418                              bptnum);
14419           return;
14420         }
14421       
14422       b->ignore_count = count;
14423       if (from_tty)
14424         {
14425           if (count == 0)
14426             printf_filtered (_("Will stop next time "
14427                                "breakpoint %d is reached."),
14428                              bptnum);
14429           else if (count == 1)
14430             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14431                              bptnum);
14432           else
14433             printf_filtered (_("Will ignore next %d "
14434                                "crossings of breakpoint %d."),
14435                              count, bptnum);
14436         }
14437       observer_notify_breakpoint_modified (b);
14438       return;
14439     }
14440
14441   error (_("No breakpoint number %d."), bptnum);
14442 }
14443
14444 /* Command to set ignore-count of breakpoint N to COUNT.  */
14445
14446 static void
14447 ignore_command (char *args, int from_tty)
14448 {
14449   char *p = args;
14450   int num;
14451
14452   if (p == 0)
14453     error_no_arg (_("a breakpoint number"));
14454
14455   num = get_number (&p);
14456   if (num == 0)
14457     error (_("bad breakpoint number: '%s'"), args);
14458   if (*p == 0)
14459     error (_("Second argument (specified ignore-count) is missing."));
14460
14461   set_ignore_count (num,
14462                     longest_to_int (value_as_long (parse_and_eval (p))),
14463                     from_tty);
14464   if (from_tty)
14465     printf_filtered ("\n");
14466 }
14467 \f
14468 /* Call FUNCTION on each of the breakpoints
14469    whose numbers are given in ARGS.  */
14470
14471 static void
14472 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14473                                                       void *),
14474                         void *data)
14475 {
14476   int num;
14477   struct breakpoint *b, *tmp;
14478   int match;
14479   struct get_number_or_range_state state;
14480
14481   if (args == 0)
14482     error_no_arg (_("one or more breakpoint numbers"));
14483
14484   init_number_or_range (&state, args);
14485
14486   while (!state.finished)
14487     {
14488       char *p = state.string;
14489
14490       match = 0;
14491
14492       num = get_number_or_range (&state);
14493       if (num == 0)
14494         {
14495           warning (_("bad breakpoint number at or near '%s'"), p);
14496         }
14497       else
14498         {
14499           ALL_BREAKPOINTS_SAFE (b, tmp)
14500             if (b->number == num)
14501               {
14502                 match = 1;
14503                 function (b, data);
14504                 break;
14505               }
14506           if (match == 0)
14507             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14508         }
14509     }
14510 }
14511
14512 static struct bp_location *
14513 find_location_by_number (char *number)
14514 {
14515   char *dot = strchr (number, '.');
14516   char *p1;
14517   int bp_num;
14518   int loc_num;
14519   struct breakpoint *b;
14520   struct bp_location *loc;  
14521
14522   *dot = '\0';
14523
14524   p1 = number;
14525   bp_num = get_number (&p1);
14526   if (bp_num == 0)
14527     error (_("Bad breakpoint number '%s'"), number);
14528
14529   ALL_BREAKPOINTS (b)
14530     if (b->number == bp_num)
14531       {
14532         break;
14533       }
14534
14535   if (!b || b->number != bp_num)
14536     error (_("Bad breakpoint number '%s'"), number);
14537   
14538   p1 = dot+1;
14539   loc_num = get_number (&p1);
14540   if (loc_num == 0)
14541     error (_("Bad breakpoint location number '%s'"), number);
14542
14543   --loc_num;
14544   loc = b->loc;
14545   for (;loc_num && loc; --loc_num, loc = loc->next)
14546     ;
14547   if (!loc)
14548     error (_("Bad breakpoint location number '%s'"), dot+1);
14549     
14550   return loc;  
14551 }
14552
14553
14554 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14555    If from_tty is nonzero, it prints a message to that effect,
14556    which ends with a period (no newline).  */
14557
14558 void
14559 disable_breakpoint (struct breakpoint *bpt)
14560 {
14561   /* Never disable a watchpoint scope breakpoint; we want to
14562      hit them when we leave scope so we can delete both the
14563      watchpoint and its scope breakpoint at that time.  */
14564   if (bpt->type == bp_watchpoint_scope)
14565     return;
14566
14567   /* You can't disable permanent breakpoints.  */
14568   if (bpt->enable_state == bp_permanent)
14569     return;
14570
14571   bpt->enable_state = bp_disabled;
14572
14573   /* Mark breakpoint locations modified.  */
14574   mark_breakpoint_modified (bpt);
14575
14576   if (target_supports_enable_disable_tracepoint ()
14577       && current_trace_status ()->running && is_tracepoint (bpt))
14578     {
14579       struct bp_location *location;
14580      
14581       for (location = bpt->loc; location; location = location->next)
14582         target_disable_tracepoint (location);
14583     }
14584
14585   update_global_location_list (0);
14586
14587   observer_notify_breakpoint_modified (bpt);
14588 }
14589
14590 /* A callback for iterate_over_related_breakpoints.  */
14591
14592 static void
14593 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14594 {
14595   disable_breakpoint (b);
14596 }
14597
14598 /* A callback for map_breakpoint_numbers that calls
14599    disable_breakpoint.  */
14600
14601 static void
14602 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14603 {
14604   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14605 }
14606
14607 static void
14608 disable_command (char *args, int from_tty)
14609 {
14610   if (args == 0)
14611     {
14612       struct breakpoint *bpt;
14613
14614       ALL_BREAKPOINTS (bpt)
14615         if (user_breakpoint_p (bpt))
14616           disable_breakpoint (bpt);
14617     }
14618   else if (strchr (args, '.'))
14619     {
14620       struct bp_location *loc = find_location_by_number (args);
14621       if (loc)
14622         {
14623           if (loc->enabled)
14624             {
14625               loc->enabled = 0;
14626               mark_breakpoint_location_modified (loc);
14627             }
14628           if (target_supports_enable_disable_tracepoint ()
14629               && current_trace_status ()->running && loc->owner
14630               && is_tracepoint (loc->owner))
14631             target_disable_tracepoint (loc);
14632         }
14633       update_global_location_list (0);
14634     }
14635   else
14636     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14637 }
14638
14639 static void
14640 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14641                         int count)
14642 {
14643   int target_resources_ok;
14644
14645   if (bpt->type == bp_hardware_breakpoint)
14646     {
14647       int i;
14648       i = hw_breakpoint_used_count ();
14649       target_resources_ok = 
14650         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14651                                             i + 1, 0);
14652       if (target_resources_ok == 0)
14653         error (_("No hardware breakpoint support in the target."));
14654       else if (target_resources_ok < 0)
14655         error (_("Hardware breakpoints used exceeds limit."));
14656     }
14657
14658   if (is_watchpoint (bpt))
14659     {
14660       /* Initialize it just to avoid a GCC false warning.  */
14661       enum enable_state orig_enable_state = 0;
14662       volatile struct gdb_exception e;
14663
14664       TRY_CATCH (e, RETURN_MASK_ALL)
14665         {
14666           struct watchpoint *w = (struct watchpoint *) bpt;
14667
14668           orig_enable_state = bpt->enable_state;
14669           bpt->enable_state = bp_enabled;
14670           update_watchpoint (w, 1 /* reparse */);
14671         }
14672       if (e.reason < 0)
14673         {
14674           bpt->enable_state = orig_enable_state;
14675           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14676                              bpt->number);
14677           return;
14678         }
14679     }
14680
14681   if (bpt->enable_state != bp_permanent)
14682     bpt->enable_state = bp_enabled;
14683
14684   bpt->enable_state = bp_enabled;
14685
14686   /* Mark breakpoint locations modified.  */
14687   mark_breakpoint_modified (bpt);
14688
14689   if (target_supports_enable_disable_tracepoint ()
14690       && current_trace_status ()->running && is_tracepoint (bpt))
14691     {
14692       struct bp_location *location;
14693
14694       for (location = bpt->loc; location; location = location->next)
14695         target_enable_tracepoint (location);
14696     }
14697
14698   bpt->disposition = disposition;
14699   bpt->enable_count = count;
14700   update_global_location_list (1);
14701
14702   observer_notify_breakpoint_modified (bpt);
14703 }
14704
14705
14706 void
14707 enable_breakpoint (struct breakpoint *bpt)
14708 {
14709   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14710 }
14711
14712 static void
14713 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14714 {
14715   enable_breakpoint (bpt);
14716 }
14717
14718 /* A callback for map_breakpoint_numbers that calls
14719    enable_breakpoint.  */
14720
14721 static void
14722 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14723 {
14724   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14725 }
14726
14727 /* The enable command enables the specified breakpoints (or all defined
14728    breakpoints) so they once again become (or continue to be) effective
14729    in stopping the inferior.  */
14730
14731 static void
14732 enable_command (char *args, int from_tty)
14733 {
14734   if (args == 0)
14735     {
14736       struct breakpoint *bpt;
14737
14738       ALL_BREAKPOINTS (bpt)
14739         if (user_breakpoint_p (bpt))
14740           enable_breakpoint (bpt);
14741     }
14742   else if (strchr (args, '.'))
14743     {
14744       struct bp_location *loc = find_location_by_number (args);
14745       if (loc)
14746         {
14747           if (!loc->enabled)
14748             {
14749               loc->enabled = 1;
14750               mark_breakpoint_location_modified (loc);
14751             }
14752           if (target_supports_enable_disable_tracepoint ()
14753               && current_trace_status ()->running && loc->owner
14754               && is_tracepoint (loc->owner))
14755             target_enable_tracepoint (loc);
14756         }
14757       update_global_location_list (1);
14758     }
14759   else
14760     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14761 }
14762
14763 /* This struct packages up disposition data for application to multiple
14764    breakpoints.  */
14765
14766 struct disp_data
14767 {
14768   enum bpdisp disp;
14769   int count;
14770 };
14771
14772 static void
14773 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14774 {
14775   struct disp_data disp_data = *(struct disp_data *) arg;
14776
14777   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14778 }
14779
14780 static void
14781 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14782 {
14783   struct disp_data disp = { disp_disable, 1 };
14784
14785   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14786 }
14787
14788 static void
14789 enable_once_command (char *args, int from_tty)
14790 {
14791   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14792 }
14793
14794 static void
14795 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14796 {
14797   struct disp_data disp = { disp_disable, *(int *) countptr };
14798
14799   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14800 }
14801
14802 static void
14803 enable_count_command (char *args, int from_tty)
14804 {
14805   int count = get_number (&args);
14806
14807   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14808 }
14809
14810 static void
14811 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14812 {
14813   struct disp_data disp = { disp_del, 1 };
14814
14815   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14816 }
14817
14818 static void
14819 enable_delete_command (char *args, int from_tty)
14820 {
14821   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14822 }
14823 \f
14824 static void
14825 set_breakpoint_cmd (char *args, int from_tty)
14826 {
14827 }
14828
14829 static void
14830 show_breakpoint_cmd (char *args, int from_tty)
14831 {
14832 }
14833
14834 /* Invalidate last known value of any hardware watchpoint if
14835    the memory which that value represents has been written to by
14836    GDB itself.  */
14837
14838 static void
14839 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14840                                       CORE_ADDR addr, ssize_t len,
14841                                       const bfd_byte *data)
14842 {
14843   struct breakpoint *bp;
14844
14845   ALL_BREAKPOINTS (bp)
14846     if (bp->enable_state == bp_enabled
14847         && bp->type == bp_hardware_watchpoint)
14848       {
14849         struct watchpoint *wp = (struct watchpoint *) bp;
14850
14851         if (wp->val_valid && wp->val)
14852           {
14853             struct bp_location *loc;
14854
14855             for (loc = bp->loc; loc != NULL; loc = loc->next)
14856               if (loc->loc_type == bp_loc_hardware_watchpoint
14857                   && loc->address + loc->length > addr
14858                   && addr + len > loc->address)
14859                 {
14860                   value_free (wp->val);
14861                   wp->val = NULL;
14862                   wp->val_valid = 0;
14863                 }
14864           }
14865       }
14866 }
14867
14868 /* Create and insert a raw software breakpoint at PC.  Return an
14869    identifier, which should be used to remove the breakpoint later.
14870    In general, places which call this should be using something on the
14871    breakpoint chain instead; this function should be eliminated
14872    someday.  */
14873
14874 void *
14875 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14876                                   struct address_space *aspace, CORE_ADDR pc)
14877 {
14878   struct bp_target_info *bp_tgt;
14879
14880   bp_tgt = XZALLOC (struct bp_target_info);
14881
14882   bp_tgt->placed_address_space = aspace;
14883   bp_tgt->placed_address = pc;
14884
14885   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14886     {
14887       /* Could not insert the breakpoint.  */
14888       xfree (bp_tgt);
14889       return NULL;
14890     }
14891
14892   return bp_tgt;
14893 }
14894
14895 /* Remove a breakpoint BP inserted by
14896    deprecated_insert_raw_breakpoint.  */
14897
14898 int
14899 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14900 {
14901   struct bp_target_info *bp_tgt = bp;
14902   int ret;
14903
14904   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14905   xfree (bp_tgt);
14906
14907   return ret;
14908 }
14909
14910 /* One (or perhaps two) breakpoints used for software single
14911    stepping.  */
14912
14913 static void *single_step_breakpoints[2];
14914 static struct gdbarch *single_step_gdbarch[2];
14915
14916 /* Create and insert a breakpoint for software single step.  */
14917
14918 void
14919 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14920                                struct address_space *aspace, 
14921                                CORE_ADDR next_pc)
14922 {
14923   void **bpt_p;
14924
14925   if (single_step_breakpoints[0] == NULL)
14926     {
14927       bpt_p = &single_step_breakpoints[0];
14928       single_step_gdbarch[0] = gdbarch;
14929     }
14930   else
14931     {
14932       gdb_assert (single_step_breakpoints[1] == NULL);
14933       bpt_p = &single_step_breakpoints[1];
14934       single_step_gdbarch[1] = gdbarch;
14935     }
14936
14937   /* NOTE drow/2006-04-11: A future improvement to this function would
14938      be to only create the breakpoints once, and actually put them on
14939      the breakpoint chain.  That would let us use set_raw_breakpoint.
14940      We could adjust the addresses each time they were needed.  Doing
14941      this requires corresponding changes elsewhere where single step
14942      breakpoints are handled, however.  So, for now, we use this.  */
14943
14944   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14945   if (*bpt_p == NULL)
14946     error (_("Could not insert single-step breakpoint at %s"),
14947              paddress (gdbarch, next_pc));
14948 }
14949
14950 /* Check if the breakpoints used for software single stepping
14951    were inserted or not.  */
14952
14953 int
14954 single_step_breakpoints_inserted (void)
14955 {
14956   return (single_step_breakpoints[0] != NULL
14957           || single_step_breakpoints[1] != NULL);
14958 }
14959
14960 /* Remove and delete any breakpoints used for software single step.  */
14961
14962 void
14963 remove_single_step_breakpoints (void)
14964 {
14965   gdb_assert (single_step_breakpoints[0] != NULL);
14966
14967   /* See insert_single_step_breakpoint for more about this deprecated
14968      call.  */
14969   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14970                                     single_step_breakpoints[0]);
14971   single_step_gdbarch[0] = NULL;
14972   single_step_breakpoints[0] = NULL;
14973
14974   if (single_step_breakpoints[1] != NULL)
14975     {
14976       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14977                                         single_step_breakpoints[1]);
14978       single_step_gdbarch[1] = NULL;
14979       single_step_breakpoints[1] = NULL;
14980     }
14981 }
14982
14983 /* Delete software single step breakpoints without removing them from
14984    the inferior.  This is intended to be used if the inferior's address
14985    space where they were inserted is already gone, e.g. after exit or
14986    exec.  */
14987
14988 void
14989 cancel_single_step_breakpoints (void)
14990 {
14991   int i;
14992
14993   for (i = 0; i < 2; i++)
14994     if (single_step_breakpoints[i])
14995       {
14996         xfree (single_step_breakpoints[i]);
14997         single_step_breakpoints[i] = NULL;
14998         single_step_gdbarch[i] = NULL;
14999       }
15000 }
15001
15002 /* Detach software single-step breakpoints from INFERIOR_PTID without
15003    removing them.  */
15004
15005 static void
15006 detach_single_step_breakpoints (void)
15007 {
15008   int i;
15009
15010   for (i = 0; i < 2; i++)
15011     if (single_step_breakpoints[i])
15012       target_remove_breakpoint (single_step_gdbarch[i],
15013                                 single_step_breakpoints[i]);
15014 }
15015
15016 /* Check whether a software single-step breakpoint is inserted at
15017    PC.  */
15018
15019 static int
15020 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
15021                                         CORE_ADDR pc)
15022 {
15023   int i;
15024
15025   for (i = 0; i < 2; i++)
15026     {
15027       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15028       if (bp_tgt
15029           && breakpoint_address_match (bp_tgt->placed_address_space,
15030                                        bp_tgt->placed_address,
15031                                        aspace, pc))
15032         return 1;
15033     }
15034
15035   return 0;
15036 }
15037
15038 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15039    non-zero otherwise.  */
15040 static int
15041 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15042 {
15043   if (syscall_catchpoint_p (bp)
15044       && bp->enable_state != bp_disabled
15045       && bp->enable_state != bp_call_disabled)
15046     return 1;
15047   else
15048     return 0;
15049 }
15050
15051 int
15052 catch_syscall_enabled (void)
15053 {
15054   struct catch_syscall_inferior_data *inf_data
15055     = get_catch_syscall_inferior_data (current_inferior ());
15056
15057   return inf_data->total_syscalls_count != 0;
15058 }
15059
15060 int
15061 catching_syscall_number (int syscall_number)
15062 {
15063   struct breakpoint *bp;
15064
15065   ALL_BREAKPOINTS (bp)
15066     if (is_syscall_catchpoint_enabled (bp))
15067       {
15068         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15069
15070         if (c->syscalls_to_be_caught)
15071           {
15072             int i, iter;
15073             for (i = 0;
15074                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15075                  i++)
15076               if (syscall_number == iter)
15077                 return 1;
15078           }
15079         else
15080           return 1;
15081       }
15082
15083   return 0;
15084 }
15085
15086 /* Complete syscall names.  Used by "catch syscall".  */
15087 static VEC (char_ptr) *
15088 catch_syscall_completer (struct cmd_list_element *cmd,
15089                          const char *text, const char *word)
15090 {
15091   const char **list = get_syscall_names ();
15092   VEC (char_ptr) *retlist
15093     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15094
15095   xfree (list);
15096   return retlist;
15097 }
15098
15099 /* Tracepoint-specific operations.  */
15100
15101 /* Set tracepoint count to NUM.  */
15102 static void
15103 set_tracepoint_count (int num)
15104 {
15105   tracepoint_count = num;
15106   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15107 }
15108
15109 static void
15110 trace_command (char *arg, int from_tty)
15111 {
15112   struct breakpoint_ops *ops;
15113   const char *arg_cp = arg;
15114
15115   if (arg && probe_linespec_to_ops (&arg_cp))
15116     ops = &tracepoint_probe_breakpoint_ops;
15117   else
15118     ops = &tracepoint_breakpoint_ops;
15119
15120   create_breakpoint (get_current_arch (),
15121                      arg,
15122                      NULL, 0, NULL, 1 /* parse arg */,
15123                      0 /* tempflag */,
15124                      bp_tracepoint /* type_wanted */,
15125                      0 /* Ignore count */,
15126                      pending_break_support,
15127                      ops,
15128                      from_tty,
15129                      1 /* enabled */,
15130                      0 /* internal */, 0);
15131 }
15132
15133 static void
15134 ftrace_command (char *arg, int from_tty)
15135 {
15136   create_breakpoint (get_current_arch (),
15137                      arg,
15138                      NULL, 0, NULL, 1 /* parse arg */,
15139                      0 /* tempflag */,
15140                      bp_fast_tracepoint /* type_wanted */,
15141                      0 /* Ignore count */,
15142                      pending_break_support,
15143                      &tracepoint_breakpoint_ops,
15144                      from_tty,
15145                      1 /* enabled */,
15146                      0 /* internal */, 0);
15147 }
15148
15149 /* strace command implementation.  Creates a static tracepoint.  */
15150
15151 static void
15152 strace_command (char *arg, int from_tty)
15153 {
15154   struct breakpoint_ops *ops;
15155
15156   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15157      or with a normal static tracepoint.  */
15158   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15159     ops = &strace_marker_breakpoint_ops;
15160   else
15161     ops = &tracepoint_breakpoint_ops;
15162
15163   create_breakpoint (get_current_arch (),
15164                      arg,
15165                      NULL, 0, NULL, 1 /* parse arg */,
15166                      0 /* tempflag */,
15167                      bp_static_tracepoint /* type_wanted */,
15168                      0 /* Ignore count */,
15169                      pending_break_support,
15170                      ops,
15171                      from_tty,
15172                      1 /* enabled */,
15173                      0 /* internal */, 0);
15174 }
15175
15176 /* Set up a fake reader function that gets command lines from a linked
15177    list that was acquired during tracepoint uploading.  */
15178
15179 static struct uploaded_tp *this_utp;
15180 static int next_cmd;
15181
15182 static char *
15183 read_uploaded_action (void)
15184 {
15185   char *rslt;
15186
15187   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15188
15189   next_cmd++;
15190
15191   return rslt;
15192 }
15193
15194 /* Given information about a tracepoint as recorded on a target (which
15195    can be either a live system or a trace file), attempt to create an
15196    equivalent GDB tracepoint.  This is not a reliable process, since
15197    the target does not necessarily have all the information used when
15198    the tracepoint was originally defined.  */
15199   
15200 struct tracepoint *
15201 create_tracepoint_from_upload (struct uploaded_tp *utp)
15202 {
15203   char *addr_str, small_buf[100];
15204   struct tracepoint *tp;
15205
15206   if (utp->at_string)
15207     addr_str = utp->at_string;
15208   else
15209     {
15210       /* In the absence of a source location, fall back to raw
15211          address.  Since there is no way to confirm that the address
15212          means the same thing as when the trace was started, warn the
15213          user.  */
15214       warning (_("Uploaded tracepoint %d has no "
15215                  "source location, using raw address"),
15216                utp->number);
15217       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15218       addr_str = small_buf;
15219     }
15220
15221   /* There's not much we can do with a sequence of bytecodes.  */
15222   if (utp->cond && !utp->cond_string)
15223     warning (_("Uploaded tracepoint %d condition "
15224                "has no source form, ignoring it"),
15225              utp->number);
15226
15227   if (!create_breakpoint (get_current_arch (),
15228                           addr_str,
15229                           utp->cond_string, -1, NULL,
15230                           0 /* parse cond/thread */,
15231                           0 /* tempflag */,
15232                           utp->type /* type_wanted */,
15233                           0 /* Ignore count */,
15234                           pending_break_support,
15235                           &tracepoint_breakpoint_ops,
15236                           0 /* from_tty */,
15237                           utp->enabled /* enabled */,
15238                           0 /* internal */,
15239                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15240     return NULL;
15241
15242   /* Get the tracepoint we just created.  */
15243   tp = get_tracepoint (tracepoint_count);
15244   gdb_assert (tp != NULL);
15245
15246   if (utp->pass > 0)
15247     {
15248       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15249                  tp->base.number);
15250
15251       trace_pass_command (small_buf, 0);
15252     }
15253
15254   /* If we have uploaded versions of the original commands, set up a
15255      special-purpose "reader" function and call the usual command line
15256      reader, then pass the result to the breakpoint command-setting
15257      function.  */
15258   if (!VEC_empty (char_ptr, utp->cmd_strings))
15259     {
15260       struct command_line *cmd_list;
15261
15262       this_utp = utp;
15263       next_cmd = 0;
15264
15265       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15266
15267       breakpoint_set_commands (&tp->base, cmd_list);
15268     }
15269   else if (!VEC_empty (char_ptr, utp->actions)
15270            || !VEC_empty (char_ptr, utp->step_actions))
15271     warning (_("Uploaded tracepoint %d actions "
15272                "have no source form, ignoring them"),
15273              utp->number);
15274
15275   /* Copy any status information that might be available.  */
15276   tp->base.hit_count = utp->hit_count;
15277   tp->traceframe_usage = utp->traceframe_usage;
15278
15279   return tp;
15280 }
15281   
15282 /* Print information on tracepoint number TPNUM_EXP, or all if
15283    omitted.  */
15284
15285 static void
15286 tracepoints_info (char *args, int from_tty)
15287 {
15288   struct ui_out *uiout = current_uiout;
15289   int num_printed;
15290
15291   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15292
15293   if (num_printed == 0)
15294     {
15295       if (args == NULL || *args == '\0')
15296         ui_out_message (uiout, 0, "No tracepoints.\n");
15297       else
15298         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15299     }
15300
15301   default_collect_info ();
15302 }
15303
15304 /* The 'enable trace' command enables tracepoints.
15305    Not supported by all targets.  */
15306 static void
15307 enable_trace_command (char *args, int from_tty)
15308 {
15309   enable_command (args, from_tty);
15310 }
15311
15312 /* The 'disable trace' command disables tracepoints.
15313    Not supported by all targets.  */
15314 static void
15315 disable_trace_command (char *args, int from_tty)
15316 {
15317   disable_command (args, from_tty);
15318 }
15319
15320 /* Remove a tracepoint (or all if no argument).  */
15321 static void
15322 delete_trace_command (char *arg, int from_tty)
15323 {
15324   struct breakpoint *b, *b_tmp;
15325
15326   dont_repeat ();
15327
15328   if (arg == 0)
15329     {
15330       int breaks_to_delete = 0;
15331
15332       /* Delete all breakpoints if no argument.
15333          Do not delete internal or call-dummy breakpoints, these
15334          have to be deleted with an explicit breakpoint number 
15335          argument.  */
15336       ALL_TRACEPOINTS (b)
15337         if (is_tracepoint (b) && user_breakpoint_p (b))
15338           {
15339             breaks_to_delete = 1;
15340             break;
15341           }
15342
15343       /* Ask user only if there are some breakpoints to delete.  */
15344       if (!from_tty
15345           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15346         {
15347           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15348             if (is_tracepoint (b) && user_breakpoint_p (b))
15349               delete_breakpoint (b);
15350         }
15351     }
15352   else
15353     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15354 }
15355
15356 /* Helper function for trace_pass_command.  */
15357
15358 static void
15359 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15360 {
15361   tp->pass_count = count;
15362   observer_notify_breakpoint_modified (&tp->base);
15363   if (from_tty)
15364     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15365                      tp->base.number, count);
15366 }
15367
15368 /* Set passcount for tracepoint.
15369
15370    First command argument is passcount, second is tracepoint number.
15371    If tracepoint number omitted, apply to most recently defined.
15372    Also accepts special argument "all".  */
15373
15374 static void
15375 trace_pass_command (char *args, int from_tty)
15376 {
15377   struct tracepoint *t1;
15378   unsigned int count;
15379
15380   if (args == 0 || *args == 0)
15381     error (_("passcount command requires an "
15382              "argument (count + optional TP num)"));
15383
15384   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15385
15386   args = skip_spaces (args);
15387   if (*args && strncasecmp (args, "all", 3) == 0)
15388     {
15389       struct breakpoint *b;
15390
15391       args += 3;                        /* Skip special argument "all".  */
15392       if (*args)
15393         error (_("Junk at end of arguments."));
15394
15395       ALL_TRACEPOINTS (b)
15396       {
15397         t1 = (struct tracepoint *) b;
15398         trace_pass_set_count (t1, count, from_tty);
15399       }
15400     }
15401   else if (*args == '\0')
15402     {
15403       t1 = get_tracepoint_by_number (&args, NULL, 1);
15404       if (t1)
15405         trace_pass_set_count (t1, count, from_tty);
15406     }
15407   else
15408     {
15409       struct get_number_or_range_state state;
15410
15411       init_number_or_range (&state, args);
15412       while (!state.finished)
15413         {
15414           t1 = get_tracepoint_by_number (&args, &state, 1);
15415           if (t1)
15416             trace_pass_set_count (t1, count, from_tty);
15417         }
15418     }
15419 }
15420
15421 struct tracepoint *
15422 get_tracepoint (int num)
15423 {
15424   struct breakpoint *t;
15425
15426   ALL_TRACEPOINTS (t)
15427     if (t->number == num)
15428       return (struct tracepoint *) t;
15429
15430   return NULL;
15431 }
15432
15433 /* Find the tracepoint with the given target-side number (which may be
15434    different from the tracepoint number after disconnecting and
15435    reconnecting).  */
15436
15437 struct tracepoint *
15438 get_tracepoint_by_number_on_target (int num)
15439 {
15440   struct breakpoint *b;
15441
15442   ALL_TRACEPOINTS (b)
15443     {
15444       struct tracepoint *t = (struct tracepoint *) b;
15445
15446       if (t->number_on_target == num)
15447         return t;
15448     }
15449
15450   return NULL;
15451 }
15452
15453 /* Utility: parse a tracepoint number and look it up in the list.
15454    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15455    If OPTIONAL_P is true, then if the argument is missing, the most
15456    recent tracepoint (tracepoint_count) is returned.  */
15457 struct tracepoint *
15458 get_tracepoint_by_number (char **arg,
15459                           struct get_number_or_range_state *state,
15460                           int optional_p)
15461 {
15462   struct breakpoint *t;
15463   int tpnum;
15464   char *instring = arg == NULL ? NULL : *arg;
15465
15466   if (state)
15467     {
15468       gdb_assert (!state->finished);
15469       tpnum = get_number_or_range (state);
15470     }
15471   else if (arg == NULL || *arg == NULL || ! **arg)
15472     {
15473       if (optional_p)
15474         tpnum = tracepoint_count;
15475       else
15476         error_no_arg (_("tracepoint number"));
15477     }
15478   else
15479     tpnum = get_number (arg);
15480
15481   if (tpnum <= 0)
15482     {
15483       if (instring && *instring)
15484         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15485                          instring);
15486       else
15487         printf_filtered (_("Tracepoint argument missing "
15488                            "and no previous tracepoint\n"));
15489       return NULL;
15490     }
15491
15492   ALL_TRACEPOINTS (t)
15493     if (t->number == tpnum)
15494     {
15495       return (struct tracepoint *) t;
15496     }
15497
15498   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15499   return NULL;
15500 }
15501
15502 void
15503 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15504 {
15505   if (b->thread != -1)
15506     fprintf_unfiltered (fp, " thread %d", b->thread);
15507
15508   if (b->task != 0)
15509     fprintf_unfiltered (fp, " task %d", b->task);
15510
15511   fprintf_unfiltered (fp, "\n");
15512 }
15513
15514 /* Save information on user settable breakpoints (watchpoints, etc) to
15515    a new script file named FILENAME.  If FILTER is non-NULL, call it
15516    on each breakpoint and only include the ones for which it returns
15517    non-zero.  */
15518
15519 static void
15520 save_breakpoints (char *filename, int from_tty,
15521                   int (*filter) (const struct breakpoint *))
15522 {
15523   struct breakpoint *tp;
15524   int any = 0;
15525   char *pathname;
15526   struct cleanup *cleanup;
15527   struct ui_file *fp;
15528   int extra_trace_bits = 0;
15529
15530   if (filename == 0 || *filename == 0)
15531     error (_("Argument required (file name in which to save)"));
15532
15533   /* See if we have anything to save.  */
15534   ALL_BREAKPOINTS (tp)
15535   {
15536     /* Skip internal and momentary breakpoints.  */
15537     if (!user_breakpoint_p (tp))
15538       continue;
15539
15540     /* If we have a filter, only save the breakpoints it accepts.  */
15541     if (filter && !filter (tp))
15542       continue;
15543
15544     any = 1;
15545
15546     if (is_tracepoint (tp))
15547       {
15548         extra_trace_bits = 1;
15549
15550         /* We can stop searching.  */
15551         break;
15552       }
15553   }
15554
15555   if (!any)
15556     {
15557       warning (_("Nothing to save."));
15558       return;
15559     }
15560
15561   pathname = tilde_expand (filename);
15562   cleanup = make_cleanup (xfree, pathname);
15563   fp = gdb_fopen (pathname, "w");
15564   if (!fp)
15565     error (_("Unable to open file '%s' for saving (%s)"),
15566            filename, safe_strerror (errno));
15567   make_cleanup_ui_file_delete (fp);
15568
15569   if (extra_trace_bits)
15570     save_trace_state_variables (fp);
15571
15572   ALL_BREAKPOINTS (tp)
15573   {
15574     /* Skip internal and momentary breakpoints.  */
15575     if (!user_breakpoint_p (tp))
15576       continue;
15577
15578     /* If we have a filter, only save the breakpoints it accepts.  */
15579     if (filter && !filter (tp))
15580       continue;
15581
15582     tp->ops->print_recreate (tp, fp);
15583
15584     /* Note, we can't rely on tp->number for anything, as we can't
15585        assume the recreated breakpoint numbers will match.  Use $bpnum
15586        instead.  */
15587
15588     if (tp->cond_string)
15589       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15590
15591     if (tp->ignore_count)
15592       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15593
15594     if (tp->commands)
15595       {
15596         volatile struct gdb_exception ex;       
15597
15598         fprintf_unfiltered (fp, "  commands\n");
15599         
15600         ui_out_redirect (current_uiout, fp);
15601         TRY_CATCH (ex, RETURN_MASK_ALL)
15602           {
15603             print_command_lines (current_uiout, tp->commands->commands, 2);
15604           }
15605         ui_out_redirect (current_uiout, NULL);
15606
15607         if (ex.reason < 0)
15608           throw_exception (ex);
15609
15610         fprintf_unfiltered (fp, "  end\n");
15611       }
15612
15613     if (tp->enable_state == bp_disabled)
15614       fprintf_unfiltered (fp, "disable\n");
15615
15616     /* If this is a multi-location breakpoint, check if the locations
15617        should be individually disabled.  Watchpoint locations are
15618        special, and not user visible.  */
15619     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15620       {
15621         struct bp_location *loc;
15622         int n = 1;
15623
15624         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15625           if (!loc->enabled)
15626             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15627       }
15628   }
15629
15630   if (extra_trace_bits && *default_collect)
15631     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15632
15633   do_cleanups (cleanup);
15634   if (from_tty)
15635     printf_filtered (_("Saved to file '%s'.\n"), filename);
15636 }
15637
15638 /* The `save breakpoints' command.  */
15639
15640 static void
15641 save_breakpoints_command (char *args, int from_tty)
15642 {
15643   save_breakpoints (args, from_tty, NULL);
15644 }
15645
15646 /* The `save tracepoints' command.  */
15647
15648 static void
15649 save_tracepoints_command (char *args, int from_tty)
15650 {
15651   save_breakpoints (args, from_tty, is_tracepoint);
15652 }
15653
15654 /* Create a vector of all tracepoints.  */
15655
15656 VEC(breakpoint_p) *
15657 all_tracepoints (void)
15658 {
15659   VEC(breakpoint_p) *tp_vec = 0;
15660   struct breakpoint *tp;
15661
15662   ALL_TRACEPOINTS (tp)
15663   {
15664     VEC_safe_push (breakpoint_p, tp_vec, tp);
15665   }
15666
15667   return tp_vec;
15668 }
15669
15670 \f
15671 /* This help string is used for the break, hbreak, tbreak and thbreak
15672    commands.  It is defined as a macro to prevent duplication.
15673    COMMAND should be a string constant containing the name of the
15674    command.  */
15675 #define BREAK_ARGS_HELP(command) \
15676 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15677 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15678 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15679 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15680 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15681 If a line number is specified, break at start of code for that line.\n\
15682 If a function is specified, break at start of code for that function.\n\
15683 If an address is specified, break at that exact address.\n\
15684 With no LOCATION, uses current execution address of the selected\n\
15685 stack frame.  This is useful for breaking on return to a stack frame.\n\
15686 \n\
15687 THREADNUM is the number from \"info threads\".\n\
15688 CONDITION is a boolean expression.\n\
15689 \n\
15690 Multiple breakpoints at one place are permitted, and useful if their\n\
15691 conditions are different.\n\
15692 \n\
15693 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15694
15695 /* List of subcommands for "catch".  */
15696 static struct cmd_list_element *catch_cmdlist;
15697
15698 /* List of subcommands for "tcatch".  */
15699 static struct cmd_list_element *tcatch_cmdlist;
15700
15701 void
15702 add_catch_command (char *name, char *docstring,
15703                    void (*sfunc) (char *args, int from_tty,
15704                                   struct cmd_list_element *command),
15705                    completer_ftype *completer,
15706                    void *user_data_catch,
15707                    void *user_data_tcatch)
15708 {
15709   struct cmd_list_element *command;
15710
15711   command = add_cmd (name, class_breakpoint, NULL, docstring,
15712                      &catch_cmdlist);
15713   set_cmd_sfunc (command, sfunc);
15714   set_cmd_context (command, user_data_catch);
15715   set_cmd_completer (command, completer);
15716
15717   command = add_cmd (name, class_breakpoint, NULL, docstring,
15718                      &tcatch_cmdlist);
15719   set_cmd_sfunc (command, sfunc);
15720   set_cmd_context (command, user_data_tcatch);
15721   set_cmd_completer (command, completer);
15722 }
15723
15724 static void
15725 clear_syscall_counts (struct inferior *inf)
15726 {
15727   struct catch_syscall_inferior_data *inf_data
15728     = get_catch_syscall_inferior_data (inf);
15729
15730   inf_data->total_syscalls_count = 0;
15731   inf_data->any_syscall_count = 0;
15732   VEC_free (int, inf_data->syscalls_counts);
15733 }
15734
15735 static void
15736 save_command (char *arg, int from_tty)
15737 {
15738   printf_unfiltered (_("\"save\" must be followed by "
15739                        "the name of a save subcommand.\n"));
15740   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15741 }
15742
15743 struct breakpoint *
15744 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15745                           void *data)
15746 {
15747   struct breakpoint *b, *b_tmp;
15748
15749   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15750     {
15751       if ((*callback) (b, data))
15752         return b;
15753     }
15754
15755   return NULL;
15756 }
15757
15758 /* Zero if any of the breakpoint's locations could be a location where
15759    functions have been inlined, nonzero otherwise.  */
15760
15761 static int
15762 is_non_inline_function (struct breakpoint *b)
15763 {
15764   /* The shared library event breakpoint is set on the address of a
15765      non-inline function.  */
15766   if (b->type == bp_shlib_event)
15767     return 1;
15768
15769   return 0;
15770 }
15771
15772 /* Nonzero if the specified PC cannot be a location where functions
15773    have been inlined.  */
15774
15775 int
15776 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15777                            const struct target_waitstatus *ws)
15778 {
15779   struct breakpoint *b;
15780   struct bp_location *bl;
15781
15782   ALL_BREAKPOINTS (b)
15783     {
15784       if (!is_non_inline_function (b))
15785         continue;
15786
15787       for (bl = b->loc; bl != NULL; bl = bl->next)
15788         {
15789           if (!bl->shlib_disabled
15790               && bpstat_check_location (bl, aspace, pc, ws))
15791             return 1;
15792         }
15793     }
15794
15795   return 0;
15796 }
15797
15798 /* Remove any references to OBJFILE which is going to be freed.  */
15799
15800 void
15801 breakpoint_free_objfile (struct objfile *objfile)
15802 {
15803   struct bp_location **locp, *loc;
15804
15805   ALL_BP_LOCATIONS (loc, locp)
15806     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15807       loc->symtab = NULL;
15808 }
15809
15810 void
15811 initialize_breakpoint_ops (void)
15812 {
15813   static int initialized = 0;
15814
15815   struct breakpoint_ops *ops;
15816
15817   if (initialized)
15818     return;
15819   initialized = 1;
15820
15821   /* The breakpoint_ops structure to be inherit by all kinds of
15822      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15823      internal and momentary breakpoints, etc.).  */
15824   ops = &bkpt_base_breakpoint_ops;
15825   *ops = base_breakpoint_ops;
15826   ops->re_set = bkpt_re_set;
15827   ops->insert_location = bkpt_insert_location;
15828   ops->remove_location = bkpt_remove_location;
15829   ops->breakpoint_hit = bkpt_breakpoint_hit;
15830   ops->create_sals_from_address = bkpt_create_sals_from_address;
15831   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15832   ops->decode_linespec = bkpt_decode_linespec;
15833
15834   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15835   ops = &bkpt_breakpoint_ops;
15836   *ops = bkpt_base_breakpoint_ops;
15837   ops->re_set = bkpt_re_set;
15838   ops->resources_needed = bkpt_resources_needed;
15839   ops->print_it = bkpt_print_it;
15840   ops->print_mention = bkpt_print_mention;
15841   ops->print_recreate = bkpt_print_recreate;
15842
15843   /* Ranged breakpoints.  */
15844   ops = &ranged_breakpoint_ops;
15845   *ops = bkpt_breakpoint_ops;
15846   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15847   ops->resources_needed = resources_needed_ranged_breakpoint;
15848   ops->print_it = print_it_ranged_breakpoint;
15849   ops->print_one = print_one_ranged_breakpoint;
15850   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15851   ops->print_mention = print_mention_ranged_breakpoint;
15852   ops->print_recreate = print_recreate_ranged_breakpoint;
15853
15854   /* Internal breakpoints.  */
15855   ops = &internal_breakpoint_ops;
15856   *ops = bkpt_base_breakpoint_ops;
15857   ops->re_set = internal_bkpt_re_set;
15858   ops->check_status = internal_bkpt_check_status;
15859   ops->print_it = internal_bkpt_print_it;
15860   ops->print_mention = internal_bkpt_print_mention;
15861
15862   /* Momentary breakpoints.  */
15863   ops = &momentary_breakpoint_ops;
15864   *ops = bkpt_base_breakpoint_ops;
15865   ops->re_set = momentary_bkpt_re_set;
15866   ops->check_status = momentary_bkpt_check_status;
15867   ops->print_it = momentary_bkpt_print_it;
15868   ops->print_mention = momentary_bkpt_print_mention;
15869
15870   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15871   ops = &longjmp_breakpoint_ops;
15872   *ops = momentary_breakpoint_ops;
15873   ops->dtor = longjmp_bkpt_dtor;
15874
15875   /* Probe breakpoints.  */
15876   ops = &bkpt_probe_breakpoint_ops;
15877   *ops = bkpt_breakpoint_ops;
15878   ops->insert_location = bkpt_probe_insert_location;
15879   ops->remove_location = bkpt_probe_remove_location;
15880   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15881   ops->decode_linespec = bkpt_probe_decode_linespec;
15882
15883   /* GNU v3 exception catchpoints.  */
15884   ops = &gnu_v3_exception_catchpoint_ops;
15885   *ops = bkpt_breakpoint_ops;
15886   ops->print_it = print_it_exception_catchpoint;
15887   ops->print_one = print_one_exception_catchpoint;
15888   ops->print_mention = print_mention_exception_catchpoint;
15889   ops->print_recreate = print_recreate_exception_catchpoint;
15890
15891   /* Watchpoints.  */
15892   ops = &watchpoint_breakpoint_ops;
15893   *ops = base_breakpoint_ops;
15894   ops->dtor = dtor_watchpoint;
15895   ops->re_set = re_set_watchpoint;
15896   ops->insert_location = insert_watchpoint;
15897   ops->remove_location = remove_watchpoint;
15898   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15899   ops->check_status = check_status_watchpoint;
15900   ops->resources_needed = resources_needed_watchpoint;
15901   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15902   ops->print_it = print_it_watchpoint;
15903   ops->print_mention = print_mention_watchpoint;
15904   ops->print_recreate = print_recreate_watchpoint;
15905
15906   /* Masked watchpoints.  */
15907   ops = &masked_watchpoint_breakpoint_ops;
15908   *ops = watchpoint_breakpoint_ops;
15909   ops->insert_location = insert_masked_watchpoint;
15910   ops->remove_location = remove_masked_watchpoint;
15911   ops->resources_needed = resources_needed_masked_watchpoint;
15912   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15913   ops->print_it = print_it_masked_watchpoint;
15914   ops->print_one_detail = print_one_detail_masked_watchpoint;
15915   ops->print_mention = print_mention_masked_watchpoint;
15916   ops->print_recreate = print_recreate_masked_watchpoint;
15917
15918   /* Tracepoints.  */
15919   ops = &tracepoint_breakpoint_ops;
15920   *ops = base_breakpoint_ops;
15921   ops->re_set = tracepoint_re_set;
15922   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15923   ops->print_one_detail = tracepoint_print_one_detail;
15924   ops->print_mention = tracepoint_print_mention;
15925   ops->print_recreate = tracepoint_print_recreate;
15926   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15927   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15928   ops->decode_linespec = tracepoint_decode_linespec;
15929
15930   /* Probe tracepoints.  */
15931   ops = &tracepoint_probe_breakpoint_ops;
15932   *ops = tracepoint_breakpoint_ops;
15933   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15934   ops->decode_linespec = tracepoint_probe_decode_linespec;
15935
15936   /* Static tracepoints with marker (`-m').  */
15937   ops = &strace_marker_breakpoint_ops;
15938   *ops = tracepoint_breakpoint_ops;
15939   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15940   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15941   ops->decode_linespec = strace_marker_decode_linespec;
15942
15943   /* Fork catchpoints.  */
15944   ops = &catch_fork_breakpoint_ops;
15945   *ops = base_breakpoint_ops;
15946   ops->insert_location = insert_catch_fork;
15947   ops->remove_location = remove_catch_fork;
15948   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15949   ops->print_it = print_it_catch_fork;
15950   ops->print_one = print_one_catch_fork;
15951   ops->print_mention = print_mention_catch_fork;
15952   ops->print_recreate = print_recreate_catch_fork;
15953
15954   /* Vfork catchpoints.  */
15955   ops = &catch_vfork_breakpoint_ops;
15956   *ops = base_breakpoint_ops;
15957   ops->insert_location = insert_catch_vfork;
15958   ops->remove_location = remove_catch_vfork;
15959   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15960   ops->print_it = print_it_catch_vfork;
15961   ops->print_one = print_one_catch_vfork;
15962   ops->print_mention = print_mention_catch_vfork;
15963   ops->print_recreate = print_recreate_catch_vfork;
15964
15965   /* Exec catchpoints.  */
15966   ops = &catch_exec_breakpoint_ops;
15967   *ops = base_breakpoint_ops;
15968   ops->dtor = dtor_catch_exec;
15969   ops->insert_location = insert_catch_exec;
15970   ops->remove_location = remove_catch_exec;
15971   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15972   ops->print_it = print_it_catch_exec;
15973   ops->print_one = print_one_catch_exec;
15974   ops->print_mention = print_mention_catch_exec;
15975   ops->print_recreate = print_recreate_catch_exec;
15976
15977   /* Syscall catchpoints.  */
15978   ops = &catch_syscall_breakpoint_ops;
15979   *ops = base_breakpoint_ops;
15980   ops->dtor = dtor_catch_syscall;
15981   ops->insert_location = insert_catch_syscall;
15982   ops->remove_location = remove_catch_syscall;
15983   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15984   ops->print_it = print_it_catch_syscall;
15985   ops->print_one = print_one_catch_syscall;
15986   ops->print_mention = print_mention_catch_syscall;
15987   ops->print_recreate = print_recreate_catch_syscall;
15988
15989   /* Solib-related catchpoints.  */
15990   ops = &catch_solib_breakpoint_ops;
15991   *ops = base_breakpoint_ops;
15992   ops->dtor = dtor_catch_solib;
15993   ops->insert_location = insert_catch_solib;
15994   ops->remove_location = remove_catch_solib;
15995   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15996   ops->check_status = check_status_catch_solib;
15997   ops->print_it = print_it_catch_solib;
15998   ops->print_one = print_one_catch_solib;
15999   ops->print_mention = print_mention_catch_solib;
16000   ops->print_recreate = print_recreate_catch_solib;
16001
16002   ops = &dprintf_breakpoint_ops;
16003   *ops = bkpt_base_breakpoint_ops;
16004   ops->re_set = bkpt_re_set;
16005   ops->resources_needed = bkpt_resources_needed;
16006   ops->print_it = bkpt_print_it;
16007   ops->print_mention = bkpt_print_mention;
16008   ops->print_recreate = bkpt_print_recreate;
16009 }
16010
16011 /* Chain containing all defined "enable breakpoint" subcommands.  */
16012
16013 static struct cmd_list_element *enablebreaklist = NULL;
16014
16015 void
16016 _initialize_breakpoint (void)
16017 {
16018   struct cmd_list_element *c;
16019
16020   initialize_breakpoint_ops ();
16021
16022   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16023   observer_attach_inferior_exit (clear_syscall_counts);
16024   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16025
16026   breakpoint_objfile_key
16027     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16028
16029   catch_syscall_inferior_data
16030     = register_inferior_data_with_cleanup (NULL,
16031                                            catch_syscall_inferior_data_cleanup);
16032
16033   breakpoint_chain = 0;
16034   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16035      before a breakpoint is set.  */
16036   breakpoint_count = 0;
16037
16038   tracepoint_count = 0;
16039
16040   add_com ("ignore", class_breakpoint, ignore_command, _("\
16041 Set ignore-count of breakpoint number N to COUNT.\n\
16042 Usage is `ignore N COUNT'."));
16043   if (xdb_commands)
16044     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16045
16046   add_com ("commands", class_breakpoint, commands_command, _("\
16047 Set commands to be executed when a breakpoint is hit.\n\
16048 Give breakpoint number as argument after \"commands\".\n\
16049 With no argument, the targeted breakpoint is the last one set.\n\
16050 The commands themselves follow starting on the next line.\n\
16051 Type a line containing \"end\" to indicate the end of them.\n\
16052 Give \"silent\" as the first line to make the breakpoint silent;\n\
16053 then no output is printed when it is hit, except what the commands print."));
16054
16055   c = add_com ("condition", class_breakpoint, condition_command, _("\
16056 Specify breakpoint number N to break only if COND is true.\n\
16057 Usage is `condition N COND', where N is an integer and COND is an\n\
16058 expression to be evaluated whenever breakpoint N is reached."));
16059   set_cmd_completer (c, condition_completer);
16060
16061   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16062 Set a temporary breakpoint.\n\
16063 Like \"break\" except the breakpoint is only temporary,\n\
16064 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16065 by using \"enable delete\" on the breakpoint number.\n\
16066 \n"
16067 BREAK_ARGS_HELP ("tbreak")));
16068   set_cmd_completer (c, location_completer);
16069
16070   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16071 Set a hardware assisted breakpoint.\n\
16072 Like \"break\" except the breakpoint requires hardware support,\n\
16073 some target hardware may not have this support.\n\
16074 \n"
16075 BREAK_ARGS_HELP ("hbreak")));
16076   set_cmd_completer (c, location_completer);
16077
16078   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16079 Set a temporary hardware assisted breakpoint.\n\
16080 Like \"hbreak\" except the breakpoint is only temporary,\n\
16081 so it will be deleted when hit.\n\
16082 \n"
16083 BREAK_ARGS_HELP ("thbreak")));
16084   set_cmd_completer (c, location_completer);
16085
16086   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16087 Enable some breakpoints.\n\
16088 Give breakpoint numbers (separated by spaces) as arguments.\n\
16089 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16090 This is used to cancel the effect of the \"disable\" command.\n\
16091 With a subcommand you can enable temporarily."),
16092                   &enablelist, "enable ", 1, &cmdlist);
16093   if (xdb_commands)
16094     add_com ("ab", class_breakpoint, enable_command, _("\
16095 Enable some breakpoints.\n\
16096 Give breakpoint numbers (separated by spaces) as arguments.\n\
16097 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16098 This is used to cancel the effect of the \"disable\" command.\n\
16099 With a subcommand you can enable temporarily."));
16100
16101   add_com_alias ("en", "enable", class_breakpoint, 1);
16102
16103   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16104 Enable some breakpoints.\n\
16105 Give breakpoint numbers (separated by spaces) as arguments.\n\
16106 This is used to cancel the effect of the \"disable\" command.\n\
16107 May be abbreviated to simply \"enable\".\n"),
16108                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16109
16110   add_cmd ("once", no_class, enable_once_command, _("\
16111 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16112 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16113            &enablebreaklist);
16114
16115   add_cmd ("delete", no_class, enable_delete_command, _("\
16116 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16117 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16118            &enablebreaklist);
16119
16120   add_cmd ("count", no_class, enable_count_command, _("\
16121 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16122 If a breakpoint is hit while enabled in this fashion,\n\
16123 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16124            &enablebreaklist);
16125
16126   add_cmd ("delete", no_class, enable_delete_command, _("\
16127 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16128 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16129            &enablelist);
16130
16131   add_cmd ("once", no_class, enable_once_command, _("\
16132 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16133 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16134            &enablelist);
16135
16136   add_cmd ("count", no_class, enable_count_command, _("\
16137 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16138 If a breakpoint is hit while enabled in this fashion,\n\
16139 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16140            &enablelist);
16141
16142   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16143 Disable some breakpoints.\n\
16144 Arguments are breakpoint numbers with spaces in between.\n\
16145 To disable all breakpoints, give no argument.\n\
16146 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16147                   &disablelist, "disable ", 1, &cmdlist);
16148   add_com_alias ("dis", "disable", class_breakpoint, 1);
16149   add_com_alias ("disa", "disable", class_breakpoint, 1);
16150   if (xdb_commands)
16151     add_com ("sb", class_breakpoint, disable_command, _("\
16152 Disable some breakpoints.\n\
16153 Arguments are breakpoint numbers with spaces in between.\n\
16154 To disable all breakpoints, give no argument.\n\
16155 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16156
16157   add_cmd ("breakpoints", class_alias, disable_command, _("\
16158 Disable some breakpoints.\n\
16159 Arguments are breakpoint numbers with spaces in between.\n\
16160 To disable all breakpoints, give no argument.\n\
16161 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16162 This command may be abbreviated \"disable\"."),
16163            &disablelist);
16164
16165   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16166 Delete some breakpoints or auto-display expressions.\n\
16167 Arguments are breakpoint numbers with spaces in between.\n\
16168 To delete all breakpoints, give no argument.\n\
16169 \n\
16170 Also a prefix command for deletion of other GDB objects.\n\
16171 The \"unset\" command is also an alias for \"delete\"."),
16172                   &deletelist, "delete ", 1, &cmdlist);
16173   add_com_alias ("d", "delete", class_breakpoint, 1);
16174   add_com_alias ("del", "delete", class_breakpoint, 1);
16175   if (xdb_commands)
16176     add_com ("db", class_breakpoint, delete_command, _("\
16177 Delete some breakpoints.\n\
16178 Arguments are breakpoint numbers with spaces in between.\n\
16179 To delete all breakpoints, give no argument.\n"));
16180
16181   add_cmd ("breakpoints", class_alias, delete_command, _("\
16182 Delete some breakpoints or auto-display expressions.\n\
16183 Arguments are breakpoint numbers with spaces in between.\n\
16184 To delete all breakpoints, give no argument.\n\
16185 This command may be abbreviated \"delete\"."),
16186            &deletelist);
16187
16188   add_com ("clear", class_breakpoint, clear_command, _("\
16189 Clear breakpoint at specified line or function.\n\
16190 Argument may be line number, function name, or \"*\" and an address.\n\
16191 If line number is specified, all breakpoints in that line are cleared.\n\
16192 If function is specified, breakpoints at beginning of function are cleared.\n\
16193 If an address is specified, breakpoints at that address are cleared.\n\
16194 \n\
16195 With no argument, clears all breakpoints in the line that the selected frame\n\
16196 is executing in.\n\
16197 \n\
16198 See also the \"delete\" command which clears breakpoints by number."));
16199   add_com_alias ("cl", "clear", class_breakpoint, 1);
16200
16201   c = add_com ("break", class_breakpoint, break_command, _("\
16202 Set breakpoint at specified line or function.\n"
16203 BREAK_ARGS_HELP ("break")));
16204   set_cmd_completer (c, location_completer);
16205
16206   add_com_alias ("b", "break", class_run, 1);
16207   add_com_alias ("br", "break", class_run, 1);
16208   add_com_alias ("bre", "break", class_run, 1);
16209   add_com_alias ("brea", "break", class_run, 1);
16210
16211   if (xdb_commands)
16212    add_com_alias ("ba", "break", class_breakpoint, 1);
16213
16214   if (dbx_commands)
16215     {
16216       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16217 Break in function/address or break at a line in the current file."),
16218                              &stoplist, "stop ", 1, &cmdlist);
16219       add_cmd ("in", class_breakpoint, stopin_command,
16220                _("Break in function or address."), &stoplist);
16221       add_cmd ("at", class_breakpoint, stopat_command,
16222                _("Break at a line in the current file."), &stoplist);
16223       add_com ("status", class_info, breakpoints_info, _("\
16224 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16225 The \"Type\" column indicates one of:\n\
16226 \tbreakpoint     - normal breakpoint\n\
16227 \twatchpoint     - watchpoint\n\
16228 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16229 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16230 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16231 address and file/line number respectively.\n\
16232 \n\
16233 Convenience variable \"$_\" and default examine address for \"x\"\n\
16234 are set to the address of the last breakpoint listed unless the command\n\
16235 is prefixed with \"server \".\n\n\
16236 Convenience variable \"$bpnum\" contains the number of the last\n\
16237 breakpoint set."));
16238     }
16239
16240   add_info ("breakpoints", breakpoints_info, _("\
16241 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16242 The \"Type\" column indicates one of:\n\
16243 \tbreakpoint     - normal breakpoint\n\
16244 \twatchpoint     - watchpoint\n\
16245 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16246 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16247 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16248 address and file/line number respectively.\n\
16249 \n\
16250 Convenience variable \"$_\" and default examine address for \"x\"\n\
16251 are set to the address of the last breakpoint listed unless the command\n\
16252 is prefixed with \"server \".\n\n\
16253 Convenience variable \"$bpnum\" contains the number of the last\n\
16254 breakpoint set."));
16255
16256   add_info_alias ("b", "breakpoints", 1);
16257
16258   if (xdb_commands)
16259     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16260 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16261 The \"Type\" column indicates one of:\n\
16262 \tbreakpoint     - normal breakpoint\n\
16263 \twatchpoint     - watchpoint\n\
16264 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16265 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16266 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16267 address and file/line number respectively.\n\
16268 \n\
16269 Convenience variable \"$_\" and default examine address for \"x\"\n\
16270 are set to the address of the last breakpoint listed unless the command\n\
16271 is prefixed with \"server \".\n\n\
16272 Convenience variable \"$bpnum\" contains the number of the last\n\
16273 breakpoint set."));
16274
16275   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16276 Status of all breakpoints, or breakpoint number NUMBER.\n\
16277 The \"Type\" column indicates one of:\n\
16278 \tbreakpoint     - normal breakpoint\n\
16279 \twatchpoint     - watchpoint\n\
16280 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16281 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16282 \tuntil          - internal breakpoint used by the \"until\" command\n\
16283 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16284 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16285 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16286 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16287 address and file/line number respectively.\n\
16288 \n\
16289 Convenience variable \"$_\" and default examine address for \"x\"\n\
16290 are set to the address of the last breakpoint listed unless the command\n\
16291 is prefixed with \"server \".\n\n\
16292 Convenience variable \"$bpnum\" contains the number of the last\n\
16293 breakpoint set."),
16294            &maintenanceinfolist);
16295
16296   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16297 Set catchpoints to catch events."),
16298                   &catch_cmdlist, "catch ",
16299                   0/*allow-unknown*/, &cmdlist);
16300
16301   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16302 Set temporary catchpoints to catch events."),
16303                   &tcatch_cmdlist, "tcatch ",
16304                   0/*allow-unknown*/, &cmdlist);
16305
16306   /* Add catch and tcatch sub-commands.  */
16307   add_catch_command ("catch", _("\
16308 Catch an exception, when caught."),
16309                      catch_catch_command,
16310                      NULL,
16311                      CATCH_PERMANENT,
16312                      CATCH_TEMPORARY);
16313   add_catch_command ("throw", _("\
16314 Catch an exception, when thrown."),
16315                      catch_throw_command,
16316                      NULL,
16317                      CATCH_PERMANENT,
16318                      CATCH_TEMPORARY);
16319   add_catch_command ("fork", _("Catch calls to fork."),
16320                      catch_fork_command_1,
16321                      NULL,
16322                      (void *) (uintptr_t) catch_fork_permanent,
16323                      (void *) (uintptr_t) catch_fork_temporary);
16324   add_catch_command ("vfork", _("Catch calls to vfork."),
16325                      catch_fork_command_1,
16326                      NULL,
16327                      (void *) (uintptr_t) catch_vfork_permanent,
16328                      (void *) (uintptr_t) catch_vfork_temporary);
16329   add_catch_command ("exec", _("Catch calls to exec."),
16330                      catch_exec_command_1,
16331                      NULL,
16332                      CATCH_PERMANENT,
16333                      CATCH_TEMPORARY);
16334   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16335 Usage: catch load [REGEX]\n\
16336 If REGEX is given, only stop for libraries matching the regular expression."),
16337                      catch_load_command_1,
16338                      NULL,
16339                      CATCH_PERMANENT,
16340                      CATCH_TEMPORARY);
16341   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16342 Usage: catch unload [REGEX]\n\
16343 If REGEX is given, only stop for libraries matching the regular expression."),
16344                      catch_unload_command_1,
16345                      NULL,
16346                      CATCH_PERMANENT,
16347                      CATCH_TEMPORARY);
16348   add_catch_command ("syscall", _("\
16349 Catch system calls by their names and/or numbers.\n\
16350 Arguments say which system calls to catch.  If no arguments\n\
16351 are given, every system call will be caught.\n\
16352 Arguments, if given, should be one or more system call names\n\
16353 (if your system supports that), or system call numbers."),
16354                      catch_syscall_command_1,
16355                      catch_syscall_completer,
16356                      CATCH_PERMANENT,
16357                      CATCH_TEMPORARY);
16358
16359   c = add_com ("watch", class_breakpoint, watch_command, _("\
16360 Set a watchpoint for an expression.\n\
16361 Usage: watch [-l|-location] EXPRESSION\n\
16362 A watchpoint stops execution of your program whenever the value of\n\
16363 an expression changes.\n\
16364 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16365 the memory to which it refers."));
16366   set_cmd_completer (c, expression_completer);
16367
16368   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16369 Set a read watchpoint for an expression.\n\
16370 Usage: rwatch [-l|-location] EXPRESSION\n\
16371 A watchpoint stops execution of your program whenever the value of\n\
16372 an expression is read.\n\
16373 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16374 the memory to which it refers."));
16375   set_cmd_completer (c, expression_completer);
16376
16377   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16378 Set a watchpoint for an expression.\n\
16379 Usage: awatch [-l|-location] EXPRESSION\n\
16380 A watchpoint stops execution of your program whenever the value of\n\
16381 an expression is either read or written.\n\
16382 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16383 the memory to which it refers."));
16384   set_cmd_completer (c, expression_completer);
16385
16386   add_info ("watchpoints", watchpoints_info, _("\
16387 Status of specified watchpoints (all watchpoints if no argument)."));
16388
16389   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16390      respond to changes - contrary to the description.  */
16391   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16392                             &can_use_hw_watchpoints, _("\
16393 Set debugger's willingness to use watchpoint hardware."), _("\
16394 Show debugger's willingness to use watchpoint hardware."), _("\
16395 If zero, gdb will not use hardware for new watchpoints, even if\n\
16396 such is available.  (However, any hardware watchpoints that were\n\
16397 created before setting this to nonzero, will continue to use watchpoint\n\
16398 hardware.)"),
16399                             NULL,
16400                             show_can_use_hw_watchpoints,
16401                             &setlist, &showlist);
16402
16403   can_use_hw_watchpoints = 1;
16404
16405   /* Tracepoint manipulation commands.  */
16406
16407   c = add_com ("trace", class_breakpoint, trace_command, _("\
16408 Set a tracepoint at specified line or function.\n\
16409 \n"
16410 BREAK_ARGS_HELP ("trace") "\n\
16411 Do \"help tracepoints\" for info on other tracepoint commands."));
16412   set_cmd_completer (c, location_completer);
16413
16414   add_com_alias ("tp", "trace", class_alias, 0);
16415   add_com_alias ("tr", "trace", class_alias, 1);
16416   add_com_alias ("tra", "trace", class_alias, 1);
16417   add_com_alias ("trac", "trace", class_alias, 1);
16418
16419   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16420 Set a fast tracepoint at specified line or function.\n\
16421 \n"
16422 BREAK_ARGS_HELP ("ftrace") "\n\
16423 Do \"help tracepoints\" for info on other tracepoint commands."));
16424   set_cmd_completer (c, location_completer);
16425
16426   c = add_com ("strace", class_breakpoint, strace_command, _("\
16427 Set a static tracepoint at specified line, function or marker.\n\
16428 \n\
16429 strace [LOCATION] [if CONDITION]\n\
16430 LOCATION may be a line number, function name, \"*\" and an address,\n\
16431 or -m MARKER_ID.\n\
16432 If a line number is specified, probe the marker at start of code\n\
16433 for that line.  If a function is specified, probe the marker at start\n\
16434 of code for that function.  If an address is specified, probe the marker\n\
16435 at that exact address.  If a marker id is specified, probe the marker\n\
16436 with that name.  With no LOCATION, uses current execution address of\n\
16437 the selected stack frame.\n\
16438 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16439 This collects arbitrary user data passed in the probe point call to the\n\
16440 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16441 by printing the $_sdata variable like any other convenience variable.\n\
16442 \n\
16443 CONDITION is a boolean expression.\n\
16444 \n\
16445 Multiple tracepoints at one place are permitted, and useful if their\n\
16446 conditions are different.\n\
16447 \n\
16448 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16449 Do \"help tracepoints\" for info on other tracepoint commands."));
16450   set_cmd_completer (c, location_completer);
16451
16452   add_info ("tracepoints", tracepoints_info, _("\
16453 Status of specified tracepoints (all tracepoints if no argument).\n\
16454 Convenience variable \"$tpnum\" contains the number of the\n\
16455 last tracepoint set."));
16456
16457   add_info_alias ("tp", "tracepoints", 1);
16458
16459   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16460 Delete specified tracepoints.\n\
16461 Arguments are tracepoint numbers, separated by spaces.\n\
16462 No argument means delete all tracepoints."),
16463            &deletelist);
16464   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16465
16466   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16467 Disable specified tracepoints.\n\
16468 Arguments are tracepoint numbers, separated by spaces.\n\
16469 No argument means disable all tracepoints."),
16470            &disablelist);
16471   deprecate_cmd (c, "disable");
16472
16473   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16474 Enable specified tracepoints.\n\
16475 Arguments are tracepoint numbers, separated by spaces.\n\
16476 No argument means enable all tracepoints."),
16477            &enablelist);
16478   deprecate_cmd (c, "enable");
16479
16480   add_com ("passcount", class_trace, trace_pass_command, _("\
16481 Set the passcount for a tracepoint.\n\
16482 The trace will end when the tracepoint has been passed 'count' times.\n\
16483 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16484 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16485
16486   add_prefix_cmd ("save", class_breakpoint, save_command,
16487                   _("Save breakpoint definitions as a script."),
16488                   &save_cmdlist, "save ",
16489                   0/*allow-unknown*/, &cmdlist);
16490
16491   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16492 Save current breakpoint definitions as a script.\n\
16493 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16494 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16495 session to restore them."),
16496                &save_cmdlist);
16497   set_cmd_completer (c, filename_completer);
16498
16499   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16500 Save current tracepoint definitions as a script.\n\
16501 Use the 'source' command in another debug session to restore them."),
16502                &save_cmdlist);
16503   set_cmd_completer (c, filename_completer);
16504
16505   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16506   deprecate_cmd (c, "save tracepoints");
16507
16508   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16509 Breakpoint specific settings\n\
16510 Configure various breakpoint-specific variables such as\n\
16511 pending breakpoint behavior"),
16512                   &breakpoint_set_cmdlist, "set breakpoint ",
16513                   0/*allow-unknown*/, &setlist);
16514   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16515 Breakpoint specific settings\n\
16516 Configure various breakpoint-specific variables such as\n\
16517 pending breakpoint behavior"),
16518                   &breakpoint_show_cmdlist, "show breakpoint ",
16519                   0/*allow-unknown*/, &showlist);
16520
16521   add_setshow_auto_boolean_cmd ("pending", no_class,
16522                                 &pending_break_support, _("\
16523 Set debugger's behavior regarding pending breakpoints."), _("\
16524 Show debugger's behavior regarding pending breakpoints."), _("\
16525 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16526 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16527 an error.  If auto, an unrecognized breakpoint location results in a\n\
16528 user-query to see if a pending breakpoint should be created."),
16529                                 NULL,
16530                                 show_pending_break_support,
16531                                 &breakpoint_set_cmdlist,
16532                                 &breakpoint_show_cmdlist);
16533
16534   pending_break_support = AUTO_BOOLEAN_AUTO;
16535
16536   add_setshow_boolean_cmd ("auto-hw", no_class,
16537                            &automatic_hardware_breakpoints, _("\
16538 Set automatic usage of hardware breakpoints."), _("\
16539 Show automatic usage of hardware breakpoints."), _("\
16540 If set, the debugger will automatically use hardware breakpoints for\n\
16541 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16542 a warning will be emitted for such breakpoints."),
16543                            NULL,
16544                            show_automatic_hardware_breakpoints,
16545                            &breakpoint_set_cmdlist,
16546                            &breakpoint_show_cmdlist);
16547
16548   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16549                                 &always_inserted_mode, _("\
16550 Set mode for inserting breakpoints."), _("\
16551 Show mode for inserting breakpoints."), _("\
16552 When this mode is off, breakpoints are inserted in inferior when it is\n\
16553 resumed, and removed when execution stops.  When this mode is on,\n\
16554 breakpoints are inserted immediately and removed only when the user\n\
16555 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16556 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16557 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16558 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16559 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16560                                 NULL,
16561                                 &show_always_inserted_mode,
16562                                 &breakpoint_set_cmdlist,
16563                                 &breakpoint_show_cmdlist);
16564
16565   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16566                         condition_evaluation_enums,
16567                         &condition_evaluation_mode_1, _("\
16568 Set mode of breakpoint condition evaluation."), _("\
16569 Show mode of breakpoint condition evaluation."), _("\
16570 When this is set to \"host\", breakpoint conditions will be\n\
16571 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16572 breakpoint conditions will be downloaded to the target (if the target\n\
16573 supports such feature) and conditions will be evaluated on the target's side.\n\
16574 If this is set to \"auto\" (default), this will be automatically set to\n\
16575 \"target\" if it supports condition evaluation, otherwise it will\n\
16576 be set to \"gdb\""),
16577                            &set_condition_evaluation_mode,
16578                            &show_condition_evaluation_mode,
16579                            &breakpoint_set_cmdlist,
16580                            &breakpoint_show_cmdlist);
16581
16582   add_com ("break-range", class_breakpoint, break_range_command, _("\
16583 Set a breakpoint for an address range.\n\
16584 break-range START-LOCATION, END-LOCATION\n\
16585 where START-LOCATION and END-LOCATION can be one of the following:\n\
16586   LINENUM, for that line in the current file,\n\
16587   FILE:LINENUM, for that line in that file,\n\
16588   +OFFSET, for that number of lines after the current line\n\
16589            or the start of the range\n\
16590   FUNCTION, for the first line in that function,\n\
16591   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16592   *ADDRESS, for the instruction at that address.\n\
16593 \n\
16594 The breakpoint will stop execution of the inferior whenever it executes\n\
16595 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16596 range (including START-LOCATION and END-LOCATION)."));
16597
16598   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16599 Set a dynamic printf at specified line or function.\n\
16600 dprintf location,format string,arg1,arg2,...\n\
16601 location may be a line number, function name, or \"*\" and an address.\n\
16602 If a line number is specified, break at start of code for that line.\n\
16603 If a function is specified, break at start of code for that function.\n\
16604 "));
16605   set_cmd_completer (c, location_completer);
16606
16607   add_setshow_enum_cmd ("dprintf-style", class_support,
16608                         dprintf_style_enums, &dprintf_style, _("\
16609 Set the style of usage for dynamic printf."), _("\
16610 Show the style of usage for dynamic printf."), _("\
16611 This setting chooses how GDB will do a dynamic printf.\n\
16612 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16613 console, as with the \"printf\" command.\n\
16614 If the value is \"call\", the print is done by calling a function in your\n\
16615 program; by default printf(), but you can choose a different function or\n\
16616 output stream by setting dprintf-function and dprintf-channel."),
16617                         update_dprintf_commands, NULL,
16618                         &setlist, &showlist);
16619
16620   dprintf_function = xstrdup ("printf");
16621   add_setshow_string_cmd ("dprintf-function", class_support,
16622                           &dprintf_function, _("\
16623 Set the function to use for dynamic printf"), _("\
16624 Show the function to use for dynamic printf"), NULL,
16625                           update_dprintf_commands, NULL,
16626                           &setlist, &showlist);
16627
16628   dprintf_channel = xstrdup ("");
16629   add_setshow_string_cmd ("dprintf-channel", class_support,
16630                           &dprintf_channel, _("\
16631 Set the channel to use for dynamic printf"), _("\
16632 Show the channel to use for dynamic printf"), NULL,
16633                           update_dprintf_commands, NULL,
16634                           &setlist, &showlist);
16635
16636   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16637                            &disconnected_dprintf, _("\
16638 Set whether dprintf continues after GDB disconnects."), _("\
16639 Show whether dprintf continues after GDB disconnects."), _("\
16640 Use this to let dprintf commands continue to hit and produce output\n\
16641 even if GDB disconnects or detaches from the target."),
16642                            NULL,
16643                            NULL,
16644                            &setlist, &showlist);
16645
16646   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16647 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16648 (target agent only) This is useful for formatted output in user-defined commands."));
16649
16650   automatic_hardware_breakpoints = 1;
16651
16652   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16653 }