There's code in annotate.c and breakpoint.c that is supposed to
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_CATCH
90 };
91
92 /* Prototypes for local functions.  */
93
94 static void enable_delete_command (char *, int);
95
96 static void enable_once_command (char *, int);
97
98 static void enable_count_command (char *, int);
99
100 static void disable_command (char *, int);
101
102 static void enable_command (char *, int);
103
104 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
105                                                       void *),
106                                     void *);
107
108 static void ignore_command (char *, int);
109
110 static int breakpoint_re_set_one (void *);
111
112 static void breakpoint_re_set_default (struct breakpoint *);
113
114 static void create_sals_from_address_default (char **,
115                                               struct linespec_result *,
116                                               enum bptype, char *,
117                                               char **);
118
119 static void create_breakpoints_sal_default (struct gdbarch *,
120                                             struct linespec_result *,
121                                             struct linespec_sals *,
122                                             char *, char *, enum bptype,
123                                             enum bpdisp, int, int,
124                                             int,
125                                             const struct breakpoint_ops *,
126                                             int, int, int, unsigned);
127
128 static void decode_linespec_default (struct breakpoint *, char **,
129                                      struct symtabs_and_lines *);
130
131 static void clear_command (char *, int);
132
133 static void catch_command (char *, int);
134
135 static int can_use_hardware_watchpoint (struct value *);
136
137 static void break_command_1 (char *, int, int);
138
139 static void mention (struct breakpoint *);
140
141 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
142                                                                enum bptype,
143                                                                const struct breakpoint_ops *);
144 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
145                                                        const struct symtab_and_line *);
146
147 /* This function is used in gdbtk sources and thus can not be made
148    static.  */
149 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
150                                        struct symtab_and_line,
151                                        enum bptype,
152                                        const struct breakpoint_ops *);
153
154 static struct breakpoint *
155   momentary_breakpoint_from_master (struct breakpoint *orig,
156                                     enum bptype type,
157                                     const struct breakpoint_ops *ops);
158
159 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
160
161 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
162                                             CORE_ADDR bpaddr,
163                                             enum bptype bptype);
164
165 static void describe_other_breakpoints (struct gdbarch *,
166                                         struct program_space *, CORE_ADDR,
167                                         struct obj_section *, int);
168
169 static int breakpoint_address_match (struct address_space *aspace1,
170                                      CORE_ADDR addr1,
171                                      struct address_space *aspace2,
172                                      CORE_ADDR addr2);
173
174 static int watchpoint_locations_match (struct bp_location *loc1,
175                                        struct bp_location *loc2);
176
177 static int breakpoint_location_address_match (struct bp_location *bl,
178                                               struct address_space *aspace,
179                                               CORE_ADDR addr);
180
181 static void breakpoints_info (char *, int);
182
183 static void watchpoints_info (char *, int);
184
185 static int breakpoint_1 (char *, int, 
186                          int (*) (const struct breakpoint *));
187
188 static int breakpoint_cond_eval (void *);
189
190 static void cleanup_executing_breakpoints (void *);
191
192 static void commands_command (char *, int);
193
194 static void condition_command (char *, int);
195
196 typedef enum
197   {
198     mark_inserted,
199     mark_uninserted
200   }
201 insertion_state_t;
202
203 static int remove_breakpoint (struct bp_location *, insertion_state_t);
204 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
205
206 static enum print_stop_action print_bp_stop_message (bpstat bs);
207
208 static int watchpoint_check (void *);
209
210 static void maintenance_info_breakpoints (char *, int);
211
212 static int hw_breakpoint_used_count (void);
213
214 static int hw_watchpoint_use_count (struct breakpoint *);
215
216 static int hw_watchpoint_used_count_others (struct breakpoint *except,
217                                             enum bptype type,
218                                             int *other_type_used);
219
220 static void hbreak_command (char *, int);
221
222 static void thbreak_command (char *, int);
223
224 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
225                                     int count);
226
227 static void stop_command (char *arg, int from_tty);
228
229 static void stopin_command (char *arg, int from_tty);
230
231 static void stopat_command (char *arg, int from_tty);
232
233 static char *ep_parse_optional_if_clause (char **arg);
234
235 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
236                                        char *arg, int tempflag, int from_tty);
237
238 static void tcatch_command (char *arg, int from_tty);
239
240 static void detach_single_step_breakpoints (void);
241
242 static int single_step_breakpoint_inserted_here_p (struct address_space *,
243                                                    CORE_ADDR pc);
244
245 static void free_bp_location (struct bp_location *loc);
246 static void incref_bp_location (struct bp_location *loc);
247 static void decref_bp_location (struct bp_location **loc);
248
249 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
250
251 static void update_global_location_list (int);
252
253 static void update_global_location_list_nothrow (int);
254
255 static int is_hardware_watchpoint (const struct breakpoint *bpt);
256
257 static void insert_breakpoint_locations (void);
258
259 static int syscall_catchpoint_p (struct breakpoint *b);
260
261 static void tracepoints_info (char *, int);
262
263 static void delete_trace_command (char *, int);
264
265 static void enable_trace_command (char *, int);
266
267 static void disable_trace_command (char *, int);
268
269 static void trace_pass_command (char *, int);
270
271 static void set_tracepoint_count (int num);
272
273 static int is_masked_watchpoint (const struct breakpoint *b);
274
275 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
276
277 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
278    otherwise.  */
279
280 static int strace_marker_p (struct breakpoint *b);
281
282 /* The abstract base class all breakpoint_ops structures inherit
283    from.  */
284 struct breakpoint_ops base_breakpoint_ops;
285
286 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
287    that are implemented on top of software or hardware breakpoints
288    (user breakpoints, internal and momentary breakpoints, etc.).  */
289 static struct breakpoint_ops bkpt_base_breakpoint_ops;
290
291 /* Internal breakpoints class type.  */
292 static struct breakpoint_ops internal_breakpoint_ops;
293
294 /* Momentary breakpoints class type.  */
295 static struct breakpoint_ops momentary_breakpoint_ops;
296
297 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
298 static struct breakpoint_ops longjmp_breakpoint_ops;
299
300 /* The breakpoint_ops structure to be used in regular user created
301    breakpoints.  */
302 struct breakpoint_ops bkpt_breakpoint_ops;
303
304 /* Breakpoints set on probes.  */
305 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
306
307 /* Dynamic printf class type.  */
308 static struct breakpoint_ops dprintf_breakpoint_ops;
309
310 /* The style in which to perform a dynamic printf.  This is a user
311    option because different output options have different tradeoffs;
312    if GDB does the printing, there is better error handling if there
313    is a problem with any of the arguments, but using an inferior
314    function lets you have special-purpose printers and sending of
315    output to the same place as compiled-in print functions.  */
316
317 static const char dprintf_style_gdb[] = "gdb";
318 static const char dprintf_style_call[] = "call";
319 static const char dprintf_style_agent[] = "agent";
320 static const char *const dprintf_style_enums[] = {
321   dprintf_style_gdb,
322   dprintf_style_call,
323   dprintf_style_agent,
324   NULL
325 };
326 static const char *dprintf_style = dprintf_style_gdb;
327
328 /* The function to use for dynamic printf if the preferred style is to
329    call into the inferior.  The value is simply a string that is
330    copied into the command, so it can be anything that GDB can
331    evaluate to a callable address, not necessarily a function name.  */
332
333 static char *dprintf_function = "";
334
335 /* The channel to use for dynamic printf if the preferred style is to
336    call into the inferior; if a nonempty string, it will be passed to
337    the call as the first argument, with the format string as the
338    second.  As with the dprintf function, this can be anything that
339    GDB knows how to evaluate, so in addition to common choices like
340    "stderr", this could be an app-specific expression like
341    "mystreams[curlogger]".  */
342
343 static char *dprintf_channel = "";
344
345 /* True if dprintf commands should continue to operate even if GDB
346    has disconnected.  */
347 static int disconnected_dprintf = 1;
348
349 /* A reference-counted struct command_line.  This lets multiple
350    breakpoints share a single command list.  */
351 struct counted_command_line
352 {
353   /* The reference count.  */
354   int refc;
355
356   /* The command list.  */
357   struct command_line *commands;
358 };
359
360 struct command_line *
361 breakpoint_commands (struct breakpoint *b)
362 {
363   return b->commands ? b->commands->commands : NULL;
364 }
365
366 /* Flag indicating that a command has proceeded the inferior past the
367    current breakpoint.  */
368
369 static int breakpoint_proceeded;
370
371 const char *
372 bpdisp_text (enum bpdisp disp)
373 {
374   /* NOTE: the following values are a part of MI protocol and
375      represent values of 'disp' field returned when inferior stops at
376      a breakpoint.  */
377   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
378
379   return bpdisps[(int) disp];
380 }
381
382 /* Prototypes for exported functions.  */
383 /* If FALSE, gdb will not use hardware support for watchpoints, even
384    if such is available.  */
385 static int can_use_hw_watchpoints;
386
387 static void
388 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
389                              struct cmd_list_element *c,
390                              const char *value)
391 {
392   fprintf_filtered (file,
393                     _("Debugger's willingness to use "
394                       "watchpoint hardware is %s.\n"),
395                     value);
396 }
397
398 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
399    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
400    for unrecognized breakpoint locations.
401    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
402 static enum auto_boolean pending_break_support;
403 static void
404 show_pending_break_support (struct ui_file *file, int from_tty,
405                             struct cmd_list_element *c,
406                             const char *value)
407 {
408   fprintf_filtered (file,
409                     _("Debugger's behavior regarding "
410                       "pending breakpoints is %s.\n"),
411                     value);
412 }
413
414 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
415    set with "break" but falling in read-only memory.
416    If 0, gdb will warn about such breakpoints, but won't automatically
417    use hardware breakpoints.  */
418 static int automatic_hardware_breakpoints;
419 static void
420 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
421                                      struct cmd_list_element *c,
422                                      const char *value)
423 {
424   fprintf_filtered (file,
425                     _("Automatic usage of hardware breakpoints is %s.\n"),
426                     value);
427 }
428
429 /* If on, gdb will keep breakpoints inserted even as inferior is
430    stopped, and immediately insert any new breakpoints.  If off, gdb
431    will insert breakpoints into inferior only when resuming it, and
432    will remove breakpoints upon stop.  If auto, GDB will behave as ON
433    if in non-stop mode, and as OFF if all-stop mode.*/
434
435 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
436
437 static void
438 show_always_inserted_mode (struct ui_file *file, int from_tty,
439                      struct cmd_list_element *c, const char *value)
440 {
441   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
442     fprintf_filtered (file,
443                       _("Always inserted breakpoint "
444                         "mode is %s (currently %s).\n"),
445                       value,
446                       breakpoints_always_inserted_mode () ? "on" : "off");
447   else
448     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
449                       value);
450 }
451
452 int
453 breakpoints_always_inserted_mode (void)
454 {
455   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
456           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
457 }
458
459 static const char condition_evaluation_both[] = "host or target";
460
461 /* Modes for breakpoint condition evaluation.  */
462 static const char condition_evaluation_auto[] = "auto";
463 static const char condition_evaluation_host[] = "host";
464 static const char condition_evaluation_target[] = "target";
465 static const char *const condition_evaluation_enums[] = {
466   condition_evaluation_auto,
467   condition_evaluation_host,
468   condition_evaluation_target,
469   NULL
470 };
471
472 /* Global that holds the current mode for breakpoint condition evaluation.  */
473 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
474
475 /* Global that we use to display information to the user (gets its value from
476    condition_evaluation_mode_1.  */
477 static const char *condition_evaluation_mode = condition_evaluation_auto;
478
479 /* Translate a condition evaluation mode MODE into either "host"
480    or "target".  This is used mostly to translate from "auto" to the
481    real setting that is being used.  It returns the translated
482    evaluation mode.  */
483
484 static const char *
485 translate_condition_evaluation_mode (const char *mode)
486 {
487   if (mode == condition_evaluation_auto)
488     {
489       if (target_supports_evaluation_of_breakpoint_conditions ())
490         return condition_evaluation_target;
491       else
492         return condition_evaluation_host;
493     }
494   else
495     return mode;
496 }
497
498 /* Discovers what condition_evaluation_auto translates to.  */
499
500 static const char *
501 breakpoint_condition_evaluation_mode (void)
502 {
503   return translate_condition_evaluation_mode (condition_evaluation_mode);
504 }
505
506 /* Return true if GDB should evaluate breakpoint conditions or false
507    otherwise.  */
508
509 static int
510 gdb_evaluates_breakpoint_condition_p (void)
511 {
512   const char *mode = breakpoint_condition_evaluation_mode ();
513
514   return (mode == condition_evaluation_host);
515 }
516
517 void _initialize_breakpoint (void);
518
519 /* Are we executing breakpoint commands?  */
520 static int executing_breakpoint_commands;
521
522 /* Are overlay event breakpoints enabled? */
523 static int overlay_events_enabled;
524
525 /* See description in breakpoint.h. */
526 int target_exact_watchpoints = 0;
527
528 /* Walk the following statement or block through all breakpoints.
529    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
530    current breakpoint.  */
531
532 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
533
534 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
535         for (B = breakpoint_chain;      \
536              B ? (TMP=B->next, 1): 0;   \
537              B = TMP)
538
539 /* Similar iterator for the low-level breakpoints.  SAFE variant is
540    not provided so update_global_location_list must not be called
541    while executing the block of ALL_BP_LOCATIONS.  */
542
543 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
544         for (BP_TMP = bp_location;                                      \
545              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
546              BP_TMP++)
547
548 /* Iterates through locations with address ADDRESS for the currently selected
549    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
550    to where the loop should start from.
551    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
552    appropriate location to start with.  */
553
554 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
555         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
556              BP_LOCP_TMP = BP_LOCP_START;                               \
557              BP_LOCP_START                                              \
558              && (BP_LOCP_TMP < bp_location + bp_location_count          \
559              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
560              BP_LOCP_TMP++)
561
562 /* Iterator for tracepoints only.  */
563
564 #define ALL_TRACEPOINTS(B)  \
565   for (B = breakpoint_chain; B; B = B->next)  \
566     if (is_tracepoint (B))
567
568 /* Chains of all breakpoints defined.  */
569
570 struct breakpoint *breakpoint_chain;
571
572 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
573
574 static struct bp_location **bp_location;
575
576 /* Number of elements of BP_LOCATION.  */
577
578 static unsigned bp_location_count;
579
580 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
581    ADDRESS for the current elements of BP_LOCATION which get a valid
582    result from bp_location_has_shadow.  You can use it for roughly
583    limiting the subrange of BP_LOCATION to scan for shadow bytes for
584    an address you need to read.  */
585
586 static CORE_ADDR bp_location_placed_address_before_address_max;
587
588 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
589    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
590    BP_LOCATION which get a valid result from bp_location_has_shadow.
591    You can use it for roughly limiting the subrange of BP_LOCATION to
592    scan for shadow bytes for an address you need to read.  */
593
594 static CORE_ADDR bp_location_shadow_len_after_address_max;
595
596 /* The locations that no longer correspond to any breakpoint, unlinked
597    from bp_location array, but for which a hit may still be reported
598    by a target.  */
599 VEC(bp_location_p) *moribund_locations = NULL;
600
601 /* Number of last breakpoint made.  */
602
603 static int breakpoint_count;
604
605 /* The value of `breakpoint_count' before the last command that
606    created breakpoints.  If the last (break-like) command created more
607    than one breakpoint, then the difference between BREAKPOINT_COUNT
608    and PREV_BREAKPOINT_COUNT is more than one.  */
609 static int prev_breakpoint_count;
610
611 /* Number of last tracepoint made.  */
612
613 static int tracepoint_count;
614
615 static struct cmd_list_element *breakpoint_set_cmdlist;
616 static struct cmd_list_element *breakpoint_show_cmdlist;
617 struct cmd_list_element *save_cmdlist;
618
619 /* Return whether a breakpoint is an active enabled breakpoint.  */
620 static int
621 breakpoint_enabled (struct breakpoint *b)
622 {
623   return (b->enable_state == bp_enabled);
624 }
625
626 /* Set breakpoint count to NUM.  */
627
628 static void
629 set_breakpoint_count (int num)
630 {
631   prev_breakpoint_count = breakpoint_count;
632   breakpoint_count = num;
633   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
634 }
635
636 /* Used by `start_rbreak_breakpoints' below, to record the current
637    breakpoint count before "rbreak" creates any breakpoint.  */
638 static int rbreak_start_breakpoint_count;
639
640 /* Called at the start an "rbreak" command to record the first
641    breakpoint made.  */
642
643 void
644 start_rbreak_breakpoints (void)
645 {
646   rbreak_start_breakpoint_count = breakpoint_count;
647 }
648
649 /* Called at the end of an "rbreak" command to record the last
650    breakpoint made.  */
651
652 void
653 end_rbreak_breakpoints (void)
654 {
655   prev_breakpoint_count = rbreak_start_breakpoint_count;
656 }
657
658 /* Used in run_command to zero the hit count when a new run starts.  */
659
660 void
661 clear_breakpoint_hit_counts (void)
662 {
663   struct breakpoint *b;
664
665   ALL_BREAKPOINTS (b)
666     b->hit_count = 0;
667 }
668
669 /* Allocate a new counted_command_line with reference count of 1.
670    The new structure owns COMMANDS.  */
671
672 static struct counted_command_line *
673 alloc_counted_command_line (struct command_line *commands)
674 {
675   struct counted_command_line *result
676     = xmalloc (sizeof (struct counted_command_line));
677
678   result->refc = 1;
679   result->commands = commands;
680   return result;
681 }
682
683 /* Increment reference count.  This does nothing if CMD is NULL.  */
684
685 static void
686 incref_counted_command_line (struct counted_command_line *cmd)
687 {
688   if (cmd)
689     ++cmd->refc;
690 }
691
692 /* Decrement reference count.  If the reference count reaches 0,
693    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
694    nothing if *CMDP is NULL.  */
695
696 static void
697 decref_counted_command_line (struct counted_command_line **cmdp)
698 {
699   if (*cmdp)
700     {
701       if (--(*cmdp)->refc == 0)
702         {
703           free_command_lines (&(*cmdp)->commands);
704           xfree (*cmdp);
705         }
706       *cmdp = NULL;
707     }
708 }
709
710 /* A cleanup function that calls decref_counted_command_line.  */
711
712 static void
713 do_cleanup_counted_command_line (void *arg)
714 {
715   decref_counted_command_line (arg);
716 }
717
718 /* Create a cleanup that calls decref_counted_command_line on the
719    argument.  */
720
721 static struct cleanup *
722 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
723 {
724   return make_cleanup (do_cleanup_counted_command_line, cmdp);
725 }
726
727 \f
728 /* Return the breakpoint with the specified number, or NULL
729    if the number does not refer to an existing breakpoint.  */
730
731 struct breakpoint *
732 get_breakpoint (int num)
733 {
734   struct breakpoint *b;
735
736   ALL_BREAKPOINTS (b)
737     if (b->number == num)
738       return b;
739   
740   return NULL;
741 }
742
743 \f
744
745 /* Mark locations as "conditions have changed" in case the target supports
746    evaluating conditions on its side.  */
747
748 static void
749 mark_breakpoint_modified (struct breakpoint *b)
750 {
751   struct bp_location *loc;
752
753   /* This is only meaningful if the target is
754      evaluating conditions and if the user has
755      opted for condition evaluation on the target's
756      side.  */
757   if (gdb_evaluates_breakpoint_condition_p ()
758       || !target_supports_evaluation_of_breakpoint_conditions ())
759     return;
760
761   if (!is_breakpoint (b))
762     return;
763
764   for (loc = b->loc; loc; loc = loc->next)
765     loc->condition_changed = condition_modified;
766 }
767
768 /* Mark location as "conditions have changed" in case the target supports
769    evaluating conditions on its side.  */
770
771 static void
772 mark_breakpoint_location_modified (struct bp_location *loc)
773 {
774   /* This is only meaningful if the target is
775      evaluating conditions and if the user has
776      opted for condition evaluation on the target's
777      side.  */
778   if (gdb_evaluates_breakpoint_condition_p ()
779       || !target_supports_evaluation_of_breakpoint_conditions ())
780
781     return;
782
783   if (!is_breakpoint (loc->owner))
784     return;
785
786   loc->condition_changed = condition_modified;
787 }
788
789 /* Sets the condition-evaluation mode using the static global
790    condition_evaluation_mode.  */
791
792 static void
793 set_condition_evaluation_mode (char *args, int from_tty,
794                                struct cmd_list_element *c)
795 {
796   const char *old_mode, *new_mode;
797
798   if ((condition_evaluation_mode_1 == condition_evaluation_target)
799       && !target_supports_evaluation_of_breakpoint_conditions ())
800     {
801       condition_evaluation_mode_1 = condition_evaluation_mode;
802       warning (_("Target does not support breakpoint condition evaluation.\n"
803                  "Using host evaluation mode instead."));
804       return;
805     }
806
807   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
808   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
809
810   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
811      settings was "auto".  */
812   condition_evaluation_mode = condition_evaluation_mode_1;
813
814   /* Only update the mode if the user picked a different one.  */
815   if (new_mode != old_mode)
816     {
817       struct bp_location *loc, **loc_tmp;
818       /* If the user switched to a different evaluation mode, we
819          need to synch the changes with the target as follows:
820
821          "host" -> "target": Send all (valid) conditions to the target.
822          "target" -> "host": Remove all the conditions from the target.
823       */
824
825       if (new_mode == condition_evaluation_target)
826         {
827           /* Mark everything modified and synch conditions with the
828              target.  */
829           ALL_BP_LOCATIONS (loc, loc_tmp)
830             mark_breakpoint_location_modified (loc);
831         }
832       else
833         {
834           /* Manually mark non-duplicate locations to synch conditions
835              with the target.  We do this to remove all the conditions the
836              target knows about.  */
837           ALL_BP_LOCATIONS (loc, loc_tmp)
838             if (is_breakpoint (loc->owner) && loc->inserted)
839               loc->needs_update = 1;
840         }
841
842       /* Do the update.  */
843       update_global_location_list (1);
844     }
845
846   return;
847 }
848
849 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
850    what "auto" is translating to.  */
851
852 static void
853 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
854                                 struct cmd_list_element *c, const char *value)
855 {
856   if (condition_evaluation_mode == condition_evaluation_auto)
857     fprintf_filtered (file,
858                       _("Breakpoint condition evaluation "
859                         "mode is %s (currently %s).\n"),
860                       value,
861                       breakpoint_condition_evaluation_mode ());
862   else
863     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
864                       value);
865 }
866
867 /* A comparison function for bp_location AP and BP that is used by
868    bsearch.  This comparison function only cares about addresses, unlike
869    the more general bp_location_compare function.  */
870
871 static int
872 bp_location_compare_addrs (const void *ap, const void *bp)
873 {
874   struct bp_location *a = *(void **) ap;
875   struct bp_location *b = *(void **) bp;
876
877   if (a->address == b->address)
878     return 0;
879   else
880     return ((a->address > b->address) - (a->address < b->address));
881 }
882
883 /* Helper function to skip all bp_locations with addresses
884    less than ADDRESS.  It returns the first bp_location that
885    is greater than or equal to ADDRESS.  If none is found, just
886    return NULL.  */
887
888 static struct bp_location **
889 get_first_locp_gte_addr (CORE_ADDR address)
890 {
891   struct bp_location dummy_loc;
892   struct bp_location *dummy_locp = &dummy_loc;
893   struct bp_location **locp_found = NULL;
894
895   /* Initialize the dummy location's address field.  */
896   memset (&dummy_loc, 0, sizeof (struct bp_location));
897   dummy_loc.address = address;
898
899   /* Find a close match to the first location at ADDRESS.  */
900   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
901                         sizeof (struct bp_location **),
902                         bp_location_compare_addrs);
903
904   /* Nothing was found, nothing left to do.  */
905   if (locp_found == NULL)
906     return NULL;
907
908   /* We may have found a location that is at ADDRESS but is not the first in the
909      location's list.  Go backwards (if possible) and locate the first one.  */
910   while ((locp_found - 1) >= bp_location
911          && (*(locp_found - 1))->address == address)
912     locp_found--;
913
914   return locp_found;
915 }
916
917 void
918 set_breakpoint_condition (struct breakpoint *b, char *exp,
919                           int from_tty)
920 {
921   xfree (b->cond_string);
922   b->cond_string = NULL;
923
924   if (is_watchpoint (b))
925     {
926       struct watchpoint *w = (struct watchpoint *) b;
927
928       xfree (w->cond_exp);
929       w->cond_exp = NULL;
930     }
931   else
932     {
933       struct bp_location *loc;
934
935       for (loc = b->loc; loc; loc = loc->next)
936         {
937           xfree (loc->cond);
938           loc->cond = NULL;
939
940           /* No need to free the condition agent expression
941              bytecode (if we have one).  We will handle this
942              when we go through update_global_location_list.  */
943         }
944     }
945
946   if (*exp == 0)
947     {
948       if (from_tty)
949         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
950     }
951   else
952     {
953       char *arg = exp;
954
955       /* I don't know if it matters whether this is the string the user
956          typed in or the decompiled expression.  */
957       b->cond_string = xstrdup (arg);
958       b->condition_not_parsed = 0;
959
960       if (is_watchpoint (b))
961         {
962           struct watchpoint *w = (struct watchpoint *) b;
963
964           innermost_block = NULL;
965           arg = exp;
966           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
967           if (*arg)
968             error (_("Junk at end of expression"));
969           w->cond_exp_valid_block = innermost_block;
970         }
971       else
972         {
973           struct bp_location *loc;
974
975           for (loc = b->loc; loc; loc = loc->next)
976             {
977               arg = exp;
978               loc->cond =
979                 parse_exp_1 (&arg, loc->address,
980                              block_for_pc (loc->address), 0);
981               if (*arg)
982                 error (_("Junk at end of expression"));
983             }
984         }
985     }
986   mark_breakpoint_modified (b);
987
988   annotate_breakpoints_changed ();
989   observer_notify_breakpoint_modified (b);
990 }
991
992 /* Completion for the "condition" command.  */
993
994 static VEC (char_ptr) *
995 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
996 {
997   char *space;
998
999   text = skip_spaces (text);
1000   space = skip_to_space (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 (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   annotate_breakpoints_changed ();
1221   observer_notify_breakpoint_modified (b);
1222 }
1223
1224 /* Set the internal `silent' flag on the breakpoint.  Note that this
1225    is not the same as the "silent" that may appear in the breakpoint's
1226    commands.  */
1227
1228 void
1229 breakpoint_set_silent (struct breakpoint *b, int silent)
1230 {
1231   int old_silent = b->silent;
1232
1233   b->silent = silent;
1234   if (old_silent != silent)
1235     observer_notify_breakpoint_modified (b);
1236 }
1237
1238 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1239    breakpoint work for any thread.  */
1240
1241 void
1242 breakpoint_set_thread (struct breakpoint *b, int thread)
1243 {
1244   int old_thread = b->thread;
1245
1246   b->thread = thread;
1247   if (old_thread != thread)
1248     observer_notify_breakpoint_modified (b);
1249 }
1250
1251 /* Set the task for this breakpoint.  If TASK is 0, make the
1252    breakpoint work for any task.  */
1253
1254 void
1255 breakpoint_set_task (struct breakpoint *b, int task)
1256 {
1257   int old_task = b->task;
1258
1259   b->task = task;
1260   if (old_task != task)
1261     observer_notify_breakpoint_modified (b);
1262 }
1263
1264 void
1265 check_tracepoint_command (char *line, void *closure)
1266 {
1267   struct breakpoint *b = closure;
1268
1269   validate_actionline (&line, b);
1270 }
1271
1272 /* A structure used to pass information through
1273    map_breakpoint_numbers.  */
1274
1275 struct commands_info
1276 {
1277   /* True if the command was typed at a tty.  */
1278   int from_tty;
1279
1280   /* The breakpoint range spec.  */
1281   char *arg;
1282
1283   /* Non-NULL if the body of the commands are being read from this
1284      already-parsed command.  */
1285   struct command_line *control;
1286
1287   /* The command lines read from the user, or NULL if they have not
1288      yet been read.  */
1289   struct counted_command_line *cmd;
1290 };
1291
1292 /* A callback for map_breakpoint_numbers that sets the commands for
1293    commands_command.  */
1294
1295 static void
1296 do_map_commands_command (struct breakpoint *b, void *data)
1297 {
1298   struct commands_info *info = data;
1299
1300   if (info->cmd == NULL)
1301     {
1302       struct command_line *l;
1303
1304       if (info->control != NULL)
1305         l = copy_command_lines (info->control->body_list[0]);
1306       else
1307         {
1308           struct cleanup *old_chain;
1309           char *str;
1310
1311           str = xstrprintf (_("Type commands for breakpoint(s) "
1312                               "%s, one per line."),
1313                             info->arg);
1314
1315           old_chain = make_cleanup (xfree, str);
1316
1317           l = read_command_lines (str,
1318                                   info->from_tty, 1,
1319                                   (is_tracepoint (b)
1320                                    ? check_tracepoint_command : 0),
1321                                   b);
1322
1323           do_cleanups (old_chain);
1324         }
1325
1326       info->cmd = alloc_counted_command_line (l);
1327     }
1328
1329   /* If a breakpoint was on the list more than once, we don't need to
1330      do anything.  */
1331   if (b->commands != info->cmd)
1332     {
1333       validate_commands_for_breakpoint (b, info->cmd->commands);
1334       incref_counted_command_line (info->cmd);
1335       decref_counted_command_line (&b->commands);
1336       b->commands = info->cmd;
1337       annotate_breakpoints_changed ();
1338       observer_notify_breakpoint_modified (b);
1339     }
1340 }
1341
1342 static void
1343 commands_command_1 (char *arg, int from_tty, 
1344                     struct command_line *control)
1345 {
1346   struct cleanup *cleanups;
1347   struct commands_info info;
1348
1349   info.from_tty = from_tty;
1350   info.control = control;
1351   info.cmd = NULL;
1352   /* If we read command lines from the user, then `info' will hold an
1353      extra reference to the commands that we must clean up.  */
1354   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1355
1356   if (arg == NULL || !*arg)
1357     {
1358       if (breakpoint_count - prev_breakpoint_count > 1)
1359         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1360                           breakpoint_count);
1361       else if (breakpoint_count > 0)
1362         arg = xstrprintf ("%d", breakpoint_count);
1363       else
1364         {
1365           /* So that we don't try to free the incoming non-NULL
1366              argument in the cleanup below.  Mapping breakpoint
1367              numbers will fail in this case.  */
1368           arg = NULL;
1369         }
1370     }
1371   else
1372     /* The command loop has some static state, so we need to preserve
1373        our argument.  */
1374     arg = xstrdup (arg);
1375
1376   if (arg != NULL)
1377     make_cleanup (xfree, arg);
1378
1379   info.arg = arg;
1380
1381   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1382
1383   if (info.cmd == NULL)
1384     error (_("No breakpoints specified."));
1385
1386   do_cleanups (cleanups);
1387 }
1388
1389 static void
1390 commands_command (char *arg, int from_tty)
1391 {
1392   commands_command_1 (arg, from_tty, NULL);
1393 }
1394
1395 /* Like commands_command, but instead of reading the commands from
1396    input stream, takes them from an already parsed command structure.
1397
1398    This is used by cli-script.c to DTRT with breakpoint commands
1399    that are part of if and while bodies.  */
1400 enum command_control_type
1401 commands_from_control_command (char *arg, struct command_line *cmd)
1402 {
1403   commands_command_1 (arg, 0, cmd);
1404   return simple_control;
1405 }
1406
1407 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1408
1409 static int
1410 bp_location_has_shadow (struct bp_location *bl)
1411 {
1412   if (bl->loc_type != bp_loc_software_breakpoint)
1413     return 0;
1414   if (!bl->inserted)
1415     return 0;
1416   if (bl->target_info.shadow_len == 0)
1417     /* BL isn't valid, or doesn't shadow memory.  */
1418     return 0;
1419   return 1;
1420 }
1421
1422 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1423    by replacing any memory breakpoints with their shadowed contents.
1424
1425    If READBUF is not NULL, this buffer must not overlap with any of
1426    the breakpoint location's shadow_contents buffers.  Otherwise,
1427    a failed assertion internal error will be raised.
1428
1429    The range of shadowed area by each bp_location is:
1430      bl->address - bp_location_placed_address_before_address_max
1431      up to bl->address + bp_location_shadow_len_after_address_max
1432    The range we were requested to resolve shadows for is:
1433      memaddr ... memaddr + len
1434    Thus the safe cutoff boundaries for performance optimization are
1435      memaddr + len <= (bl->address
1436                        - bp_location_placed_address_before_address_max)
1437    and:
1438      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1439
1440 void
1441 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1442                         const gdb_byte *writebuf_org,
1443                         ULONGEST memaddr, LONGEST len)
1444 {
1445   /* Left boundary, right boundary and median element of our binary
1446      search.  */
1447   unsigned bc_l, bc_r, bc;
1448
1449   /* Find BC_L which is a leftmost element which may affect BUF
1450      content.  It is safe to report lower value but a failure to
1451      report higher one.  */
1452
1453   bc_l = 0;
1454   bc_r = bp_location_count;
1455   while (bc_l + 1 < bc_r)
1456     {
1457       struct bp_location *bl;
1458
1459       bc = (bc_l + bc_r) / 2;
1460       bl = bp_location[bc];
1461
1462       /* Check first BL->ADDRESS will not overflow due to the added
1463          constant.  Then advance the left boundary only if we are sure
1464          the BC element can in no way affect the BUF content (MEMADDR
1465          to MEMADDR + LEN range).
1466
1467          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1468          offset so that we cannot miss a breakpoint with its shadow
1469          range tail still reaching MEMADDR.  */
1470
1471       if ((bl->address + bp_location_shadow_len_after_address_max
1472            >= bl->address)
1473           && (bl->address + bp_location_shadow_len_after_address_max
1474               <= memaddr))
1475         bc_l = bc;
1476       else
1477         bc_r = bc;
1478     }
1479
1480   /* Due to the binary search above, we need to make sure we pick the
1481      first location that's at BC_L's address.  E.g., if there are
1482      multiple locations at the same address, BC_L may end up pointing
1483      at a duplicate location, and miss the "master"/"inserted"
1484      location.  Say, given locations L1, L2 and L3 at addresses A and
1485      B:
1486
1487       L1@A, L2@A, L3@B, ...
1488
1489      BC_L could end up pointing at location L2, while the "master"
1490      location could be L1.  Since the `loc->inserted' flag is only set
1491      on "master" locations, we'd forget to restore the shadow of L1
1492      and L2.  */
1493   while (bc_l > 0
1494          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1495     bc_l--;
1496
1497   /* Now do full processing of the found relevant range of elements.  */
1498
1499   for (bc = bc_l; bc < bp_location_count; bc++)
1500   {
1501     struct bp_location *bl = bp_location[bc];
1502     CORE_ADDR bp_addr = 0;
1503     int bp_size = 0;
1504     int bptoffset = 0;
1505
1506     /* bp_location array has BL->OWNER always non-NULL.  */
1507     if (bl->owner->type == bp_none)
1508       warning (_("reading through apparently deleted breakpoint #%d?"),
1509                bl->owner->number);
1510
1511     /* Performance optimization: any further element can no longer affect BUF
1512        content.  */
1513
1514     if (bl->address >= bp_location_placed_address_before_address_max
1515         && memaddr + len <= (bl->address
1516                              - bp_location_placed_address_before_address_max))
1517       break;
1518
1519     if (!bp_location_has_shadow (bl))
1520       continue;
1521     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1522                                    current_program_space->aspace, 0))
1523       continue;
1524
1525     /* Addresses and length of the part of the breakpoint that
1526        we need to copy.  */
1527     bp_addr = bl->target_info.placed_address;
1528     bp_size = bl->target_info.shadow_len;
1529
1530     if (bp_addr + bp_size <= memaddr)
1531       /* The breakpoint is entirely before the chunk of memory we
1532          are reading.  */
1533       continue;
1534
1535     if (bp_addr >= memaddr + len)
1536       /* The breakpoint is entirely after the chunk of memory we are
1537          reading.  */
1538       continue;
1539
1540     /* Offset within shadow_contents.  */
1541     if (bp_addr < memaddr)
1542       {
1543         /* Only copy the second part of the breakpoint.  */
1544         bp_size -= memaddr - bp_addr;
1545         bptoffset = memaddr - bp_addr;
1546         bp_addr = memaddr;
1547       }
1548
1549     if (bp_addr + bp_size > memaddr + len)
1550       {
1551         /* Only copy the first part of the breakpoint.  */
1552         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1553       }
1554
1555     if (readbuf != NULL)
1556       {
1557         /* Verify that the readbuf buffer does not overlap with
1558            the shadow_contents buffer.  */
1559         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1560                     || readbuf >= (bl->target_info.shadow_contents
1561                                    + bl->target_info.shadow_len));
1562
1563         /* Update the read buffer with this inserted breakpoint's
1564            shadow.  */
1565         memcpy (readbuf + bp_addr - memaddr,
1566                 bl->target_info.shadow_contents + bptoffset, bp_size);
1567       }
1568     else
1569       {
1570         struct gdbarch *gdbarch = bl->gdbarch;
1571         const unsigned char *bp;
1572         CORE_ADDR placed_address = bl->target_info.placed_address;
1573         unsigned placed_size = bl->target_info.placed_size;
1574
1575         /* Update the shadow with what we want to write to memory.  */
1576         memcpy (bl->target_info.shadow_contents + bptoffset,
1577                 writebuf_org + bp_addr - memaddr, bp_size);
1578
1579         /* Determine appropriate breakpoint contents and size for this
1580            address.  */
1581         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1582
1583         /* Update the final write buffer with this inserted
1584            breakpoint's INSN.  */
1585         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1586       }
1587   }
1588 }
1589 \f
1590
1591 /* Return true if BPT is either a software breakpoint or a hardware
1592    breakpoint.  */
1593
1594 int
1595 is_breakpoint (const struct breakpoint *bpt)
1596 {
1597   return (bpt->type == bp_breakpoint
1598           || bpt->type == bp_hardware_breakpoint
1599           || bpt->type == bp_dprintf);
1600 }
1601
1602 /* Return true if BPT is of any hardware watchpoint kind.  */
1603
1604 static int
1605 is_hardware_watchpoint (const struct breakpoint *bpt)
1606 {
1607   return (bpt->type == bp_hardware_watchpoint
1608           || bpt->type == bp_read_watchpoint
1609           || bpt->type == bp_access_watchpoint);
1610 }
1611
1612 /* Return true if BPT is of any watchpoint kind, hardware or
1613    software.  */
1614
1615 int
1616 is_watchpoint (const struct breakpoint *bpt)
1617 {
1618   return (is_hardware_watchpoint (bpt)
1619           || bpt->type == bp_watchpoint);
1620 }
1621
1622 /* Returns true if the current thread and its running state are safe
1623    to evaluate or update watchpoint B.  Watchpoints on local
1624    expressions need to be evaluated in the context of the thread that
1625    was current when the watchpoint was created, and, that thread needs
1626    to be stopped to be able to select the correct frame context.
1627    Watchpoints on global expressions can be evaluated on any thread,
1628    and in any state.  It is presently left to the target allowing
1629    memory accesses when threads are running.  */
1630
1631 static int
1632 watchpoint_in_thread_scope (struct watchpoint *b)
1633 {
1634   return (b->base.pspace == current_program_space
1635           && (ptid_equal (b->watchpoint_thread, null_ptid)
1636               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1637                   && !is_executing (inferior_ptid))));
1638 }
1639
1640 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1641    associated bp_watchpoint_scope breakpoint.  */
1642
1643 static void
1644 watchpoint_del_at_next_stop (struct watchpoint *w)
1645 {
1646   struct breakpoint *b = &w->base;
1647
1648   if (b->related_breakpoint != b)
1649     {
1650       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1651       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1652       b->related_breakpoint->disposition = disp_del_at_next_stop;
1653       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1654       b->related_breakpoint = b;
1655     }
1656   b->disposition = disp_del_at_next_stop;
1657 }
1658
1659 /* Assuming that B is a watchpoint:
1660    - Reparse watchpoint expression, if REPARSE is non-zero
1661    - Evaluate expression and store the result in B->val
1662    - Evaluate the condition if there is one, and store the result
1663      in b->loc->cond.
1664    - Update the list of values that must be watched in B->loc.
1665
1666    If the watchpoint disposition is disp_del_at_next_stop, then do
1667    nothing.  If this is local watchpoint that is out of scope, delete
1668    it.
1669
1670    Even with `set breakpoint always-inserted on' the watchpoints are
1671    removed + inserted on each stop here.  Normal breakpoints must
1672    never be removed because they might be missed by a running thread
1673    when debugging in non-stop mode.  On the other hand, hardware
1674    watchpoints (is_hardware_watchpoint; processed here) are specific
1675    to each LWP since they are stored in each LWP's hardware debug
1676    registers.  Therefore, such LWP must be stopped first in order to
1677    be able to modify its hardware watchpoints.
1678
1679    Hardware watchpoints must be reset exactly once after being
1680    presented to the user.  It cannot be done sooner, because it would
1681    reset the data used to present the watchpoint hit to the user.  And
1682    it must not be done later because it could display the same single
1683    watchpoint hit during multiple GDB stops.  Note that the latter is
1684    relevant only to the hardware watchpoint types bp_read_watchpoint
1685    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1686    not user-visible - its hit is suppressed if the memory content has
1687    not changed.
1688
1689    The following constraints influence the location where we can reset
1690    hardware watchpoints:
1691
1692    * target_stopped_by_watchpoint and target_stopped_data_address are
1693      called several times when GDB stops.
1694
1695    [linux] 
1696    * Multiple hardware watchpoints can be hit at the same time,
1697      causing GDB to stop.  GDB only presents one hardware watchpoint
1698      hit at a time as the reason for stopping, and all the other hits
1699      are presented later, one after the other, each time the user
1700      requests the execution to be resumed.  Execution is not resumed
1701      for the threads still having pending hit event stored in
1702      LWP_INFO->STATUS.  While the watchpoint is already removed from
1703      the inferior on the first stop the thread hit event is kept being
1704      reported from its cached value by linux_nat_stopped_data_address
1705      until the real thread resume happens after the watchpoint gets
1706      presented and thus its LWP_INFO->STATUS gets reset.
1707
1708    Therefore the hardware watchpoint hit can get safely reset on the
1709    watchpoint removal from inferior.  */
1710
1711 static void
1712 update_watchpoint (struct watchpoint *b, int reparse)
1713 {
1714   int within_current_scope;
1715   struct frame_id saved_frame_id;
1716   int frame_saved;
1717
1718   /* If this is a local watchpoint, we only want to check if the
1719      watchpoint frame is in scope if the current thread is the thread
1720      that was used to create the watchpoint.  */
1721   if (!watchpoint_in_thread_scope (b))
1722     return;
1723
1724   if (b->base.disposition == disp_del_at_next_stop)
1725     return;
1726  
1727   frame_saved = 0;
1728
1729   /* Determine if the watchpoint is within scope.  */
1730   if (b->exp_valid_block == NULL)
1731     within_current_scope = 1;
1732   else
1733     {
1734       struct frame_info *fi = get_current_frame ();
1735       struct gdbarch *frame_arch = get_frame_arch (fi);
1736       CORE_ADDR frame_pc = get_frame_pc (fi);
1737
1738       /* If we're in a function epilogue, unwinding may not work
1739          properly, so do not attempt to recreate locations at this
1740          point.  See similar comments in watchpoint_check.  */
1741       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1742         return;
1743
1744       /* Save the current frame's ID so we can restore it after
1745          evaluating the watchpoint expression on its own frame.  */
1746       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1747          took a frame parameter, so that we didn't have to change the
1748          selected frame.  */
1749       frame_saved = 1;
1750       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1751
1752       fi = frame_find_by_id (b->watchpoint_frame);
1753       within_current_scope = (fi != NULL);
1754       if (within_current_scope)
1755         select_frame (fi);
1756     }
1757
1758   /* We don't free locations.  They are stored in the bp_location array
1759      and update_global_location_list will eventually delete them and
1760      remove breakpoints if needed.  */
1761   b->base.loc = NULL;
1762
1763   if (within_current_scope && reparse)
1764     {
1765       char *s;
1766
1767       if (b->exp)
1768         {
1769           xfree (b->exp);
1770           b->exp = NULL;
1771         }
1772       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1773       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1774       /* If the meaning of expression itself changed, the old value is
1775          no longer relevant.  We don't want to report a watchpoint hit
1776          to the user when the old value and the new value may actually
1777          be completely different objects.  */
1778       value_free (b->val);
1779       b->val = NULL;
1780       b->val_valid = 0;
1781
1782       /* Note that unlike with breakpoints, the watchpoint's condition
1783          expression is stored in the breakpoint object, not in the
1784          locations (re)created below.  */
1785       if (b->base.cond_string != NULL)
1786         {
1787           if (b->cond_exp != NULL)
1788             {
1789               xfree (b->cond_exp);
1790               b->cond_exp = NULL;
1791             }
1792
1793           s = b->base.cond_string;
1794           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1795         }
1796     }
1797
1798   /* If we failed to parse the expression, for example because
1799      it refers to a global variable in a not-yet-loaded shared library,
1800      don't try to insert watchpoint.  We don't automatically delete
1801      such watchpoint, though, since failure to parse expression
1802      is different from out-of-scope watchpoint.  */
1803   if ( !target_has_execution)
1804     {
1805       /* Without execution, memory can't change.  No use to try and
1806          set watchpoint locations.  The watchpoint will be reset when
1807          the target gains execution, through breakpoint_re_set.  */
1808     }
1809   else if (within_current_scope && b->exp)
1810     {
1811       int pc = 0;
1812       struct value *val_chain, *v, *result, *next;
1813       struct program_space *frame_pspace;
1814
1815       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1816
1817       /* Avoid setting b->val if it's already set.  The meaning of
1818          b->val is 'the last value' user saw, and we should update
1819          it only if we reported that last value to user.  As it
1820          happens, the code that reports it updates b->val directly.
1821          We don't keep track of the memory value for masked
1822          watchpoints.  */
1823       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1824         {
1825           b->val = v;
1826           b->val_valid = 1;
1827         }
1828
1829       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1830
1831       /* Look at each value on the value chain.  */
1832       for (v = val_chain; v; v = value_next (v))
1833         {
1834           /* If it's a memory location, and GDB actually needed
1835              its contents to evaluate the expression, then we
1836              must watch it.  If the first value returned is
1837              still lazy, that means an error occurred reading it;
1838              watch it anyway in case it becomes readable.  */
1839           if (VALUE_LVAL (v) == lval_memory
1840               && (v == val_chain || ! value_lazy (v)))
1841             {
1842               struct type *vtype = check_typedef (value_type (v));
1843
1844               /* We only watch structs and arrays if user asked
1845                  for it explicitly, never if they just happen to
1846                  appear in the middle of some value chain.  */
1847               if (v == result
1848                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1849                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1850                 {
1851                   CORE_ADDR addr;
1852                   int type;
1853                   struct bp_location *loc, **tmp;
1854
1855                   addr = value_address (v);
1856                   type = hw_write;
1857                   if (b->base.type == bp_read_watchpoint)
1858                     type = hw_read;
1859                   else if (b->base.type == bp_access_watchpoint)
1860                     type = hw_access;
1861
1862                   loc = allocate_bp_location (&b->base);
1863                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1864                     ;
1865                   *tmp = loc;
1866                   loc->gdbarch = get_type_arch (value_type (v));
1867
1868                   loc->pspace = frame_pspace;
1869                   loc->address = addr;
1870                   loc->length = TYPE_LENGTH (value_type (v));
1871                   loc->watchpoint_type = type;
1872                 }
1873             }
1874         }
1875
1876       /* Change the type of breakpoint between hardware assisted or
1877          an ordinary watchpoint depending on the hardware support
1878          and free hardware slots.  REPARSE is set when the inferior
1879          is started.  */
1880       if (reparse)
1881         {
1882           int reg_cnt;
1883           enum bp_loc_type loc_type;
1884           struct bp_location *bl;
1885
1886           reg_cnt = can_use_hardware_watchpoint (val_chain);
1887
1888           if (reg_cnt)
1889             {
1890               int i, target_resources_ok, other_type_used;
1891               enum bptype type;
1892
1893               /* Use an exact watchpoint when there's only one memory region to be
1894                  watched, and only one debug register is needed to watch it.  */
1895               b->exact = target_exact_watchpoints && reg_cnt == 1;
1896
1897               /* We need to determine how many resources are already
1898                  used for all other hardware watchpoints plus this one
1899                  to see if we still have enough resources to also fit
1900                  this watchpoint in as well.  */
1901
1902               /* If this is a software watchpoint, we try to turn it
1903                  to a hardware one -- count resources as if B was of
1904                  hardware watchpoint type.  */
1905               type = b->base.type;
1906               if (type == bp_watchpoint)
1907                 type = bp_hardware_watchpoint;
1908
1909               /* This watchpoint may or may not have been placed on
1910                  the list yet at this point (it won't be in the list
1911                  if we're trying to create it for the first time,
1912                  through watch_command), so always account for it
1913                  manually.  */
1914
1915               /* Count resources used by all watchpoints except B.  */
1916               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1917
1918               /* Add in the resources needed for B.  */
1919               i += hw_watchpoint_use_count (&b->base);
1920
1921               target_resources_ok
1922                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1923               if (target_resources_ok <= 0)
1924                 {
1925                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1926
1927                   if (target_resources_ok == 0 && !sw_mode)
1928                     error (_("Target does not support this type of "
1929                              "hardware watchpoint."));
1930                   else if (target_resources_ok < 0 && !sw_mode)
1931                     error (_("There are not enough available hardware "
1932                              "resources for this watchpoint."));
1933
1934                   /* Downgrade to software watchpoint.  */
1935                   b->base.type = bp_watchpoint;
1936                 }
1937               else
1938                 {
1939                   /* If this was a software watchpoint, we've just
1940                      found we have enough resources to turn it to a
1941                      hardware watchpoint.  Otherwise, this is a
1942                      nop.  */
1943                   b->base.type = type;
1944                 }
1945             }
1946           else if (!b->base.ops->works_in_software_mode (&b->base))
1947             error (_("Expression cannot be implemented with "
1948                      "read/access watchpoint."));
1949           else
1950             b->base.type = bp_watchpoint;
1951
1952           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1953                       : bp_loc_hardware_watchpoint);
1954           for (bl = b->base.loc; bl; bl = bl->next)
1955             bl->loc_type = loc_type;
1956         }
1957
1958       for (v = val_chain; v; v = next)
1959         {
1960           next = value_next (v);
1961           if (v != b->val)
1962             value_free (v);
1963         }
1964
1965       /* If a software watchpoint is not watching any memory, then the
1966          above left it without any location set up.  But,
1967          bpstat_stop_status requires a location to be able to report
1968          stops, so make sure there's at least a dummy one.  */
1969       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1970         {
1971           struct breakpoint *base = &b->base;
1972           base->loc = allocate_bp_location (base);
1973           base->loc->pspace = frame_pspace;
1974           base->loc->address = -1;
1975           base->loc->length = -1;
1976           base->loc->watchpoint_type = -1;
1977         }
1978     }
1979   else if (!within_current_scope)
1980     {
1981       printf_filtered (_("\
1982 Watchpoint %d deleted because the program has left the block\n\
1983 in which its expression is valid.\n"),
1984                        b->base.number);
1985       watchpoint_del_at_next_stop (b);
1986     }
1987
1988   /* Restore the selected frame.  */
1989   if (frame_saved)
1990     select_frame (frame_find_by_id (saved_frame_id));
1991 }
1992
1993
1994 /* Returns 1 iff breakpoint location should be
1995    inserted in the inferior.  We don't differentiate the type of BL's owner
1996    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1997    breakpoint_ops is not defined, because in insert_bp_location,
1998    tracepoint's insert_location will not be called.  */
1999 static int
2000 should_be_inserted (struct bp_location *bl)
2001 {
2002   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2003     return 0;
2004
2005   if (bl->owner->disposition == disp_del_at_next_stop)
2006     return 0;
2007
2008   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2009     return 0;
2010
2011   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2012     return 0;
2013
2014   /* This is set for example, when we're attached to the parent of a
2015      vfork, and have detached from the child.  The child is running
2016      free, and we expect it to do an exec or exit, at which point the
2017      OS makes the parent schedulable again (and the target reports
2018      that the vfork is done).  Until the child is done with the shared
2019      memory region, do not insert breakpoints in the parent, otherwise
2020      the child could still trip on the parent's breakpoints.  Since
2021      the parent is blocked anyway, it won't miss any breakpoint.  */
2022   if (bl->pspace->breakpoints_not_allowed)
2023     return 0;
2024
2025   return 1;
2026 }
2027
2028 /* Same as should_be_inserted but does the check assuming
2029    that the location is not duplicated.  */
2030
2031 static int
2032 unduplicated_should_be_inserted (struct bp_location *bl)
2033 {
2034   int result;
2035   const int save_duplicate = bl->duplicate;
2036
2037   bl->duplicate = 0;
2038   result = should_be_inserted (bl);
2039   bl->duplicate = save_duplicate;
2040   return result;
2041 }
2042
2043 /* Parses a conditional described by an expression COND into an
2044    agent expression bytecode suitable for evaluation
2045    by the bytecode interpreter.  Return NULL if there was
2046    any error during parsing.  */
2047
2048 static struct agent_expr *
2049 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2050 {
2051   struct agent_expr *aexpr = NULL;
2052   struct cleanup *old_chain = NULL;
2053   volatile struct gdb_exception ex;
2054
2055   if (!cond)
2056     return NULL;
2057
2058   /* We don't want to stop processing, so catch any errors
2059      that may show up.  */
2060   TRY_CATCH (ex, RETURN_MASK_ERROR)
2061     {
2062       aexpr = gen_eval_for_expr (scope, cond);
2063     }
2064
2065   if (ex.reason < 0)
2066     {
2067       /* If we got here, it means the condition could not be parsed to a valid
2068          bytecode expression and thus can't be evaluated on the target's side.
2069          It's no use iterating through the conditions.  */
2070       return NULL;
2071     }
2072
2073   /* We have a valid agent expression.  */
2074   return aexpr;
2075 }
2076
2077 /* Based on location BL, create a list of breakpoint conditions to be
2078    passed on to the target.  If we have duplicated locations with different
2079    conditions, we will add such conditions to the list.  The idea is that the
2080    target will evaluate the list of conditions and will only notify GDB when
2081    one of them is true.  */
2082
2083 static void
2084 build_target_condition_list (struct bp_location *bl)
2085 {
2086   struct bp_location **locp = NULL, **loc2p;
2087   int null_condition_or_parse_error = 0;
2088   int modified = bl->needs_update;
2089   struct bp_location *loc;
2090
2091   /* This is only meaningful if the target is
2092      evaluating conditions and if the user has
2093      opted for condition evaluation on the target's
2094      side.  */
2095   if (gdb_evaluates_breakpoint_condition_p ()
2096       || !target_supports_evaluation_of_breakpoint_conditions ())
2097     return;
2098
2099   /* Do a first pass to check for locations with no assigned
2100      conditions or conditions that fail to parse to a valid agent expression
2101      bytecode.  If any of these happen, then it's no use to send conditions
2102      to the target since this location will always trigger and generate a
2103      response back to GDB.  */
2104   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2105     {
2106       loc = (*loc2p);
2107       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2108         {
2109           if (modified)
2110             {
2111               struct agent_expr *aexpr;
2112
2113               /* Re-parse the conditions since something changed.  In that
2114                  case we already freed the condition bytecodes (see
2115                  force_breakpoint_reinsertion).  We just
2116                  need to parse the condition to bytecodes again.  */
2117               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2118               loc->cond_bytecode = aexpr;
2119
2120               /* Check if we managed to parse the conditional expression
2121                  correctly.  If not, we will not send this condition
2122                  to the target.  */
2123               if (aexpr)
2124                 continue;
2125             }
2126
2127           /* If we have a NULL bytecode expression, it means something
2128              went wrong or we have a null condition expression.  */
2129           if (!loc->cond_bytecode)
2130             {
2131               null_condition_or_parse_error = 1;
2132               break;
2133             }
2134         }
2135     }
2136
2137   /* If any of these happened, it means we will have to evaluate the conditions
2138      for the location's address on gdb's side.  It is no use keeping bytecodes
2139      for all the other duplicate locations, thus we free all of them here.
2140
2141      This is so we have a finer control over which locations' conditions are
2142      being evaluated by GDB or the remote stub.  */
2143   if (null_condition_or_parse_error)
2144     {
2145       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2146         {
2147           loc = (*loc2p);
2148           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2149             {
2150               /* Only go as far as the first NULL bytecode is
2151                  located.  */
2152               if (!loc->cond_bytecode)
2153                 return;
2154
2155               free_agent_expr (loc->cond_bytecode);
2156               loc->cond_bytecode = NULL;
2157             }
2158         }
2159     }
2160
2161   /* No NULL conditions or failed bytecode generation.  Build a condition list
2162      for this location's address.  */
2163   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2164     {
2165       loc = (*loc2p);
2166       if (loc->cond
2167           && is_breakpoint (loc->owner)
2168           && loc->pspace->num == bl->pspace->num
2169           && loc->owner->enable_state == bp_enabled
2170           && loc->enabled)
2171         /* Add the condition to the vector.  This will be used later to send the
2172            conditions to the target.  */
2173         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2174                        loc->cond_bytecode);
2175     }
2176
2177   return;
2178 }
2179
2180 /* Parses a command described by string CMD into an agent expression
2181    bytecode suitable for evaluation by the bytecode interpreter.
2182    Return NULL if there was any error during parsing.  */
2183
2184 static struct agent_expr *
2185 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2186 {
2187   struct cleanup *old_cleanups = 0;
2188   struct expression *expr, **argvec;
2189   struct agent_expr *aexpr = NULL;
2190   struct cleanup *old_chain = NULL;
2191   volatile struct gdb_exception ex;
2192   char *cmdrest;
2193   char *format_start, *format_end;
2194   struct format_piece *fpieces;
2195   int nargs;
2196   struct gdbarch *gdbarch = get_current_arch ();
2197
2198   if (!cmd)
2199     return NULL;
2200
2201   cmdrest = cmd;
2202
2203   if (*cmdrest == ',')
2204     ++cmdrest;
2205   cmdrest = skip_spaces (cmdrest);
2206
2207   if (*cmdrest++ != '"')
2208     error (_("No format string following the location"));
2209
2210   format_start = cmdrest;
2211
2212   fpieces = parse_format_string (&cmdrest);
2213
2214   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2215
2216   format_end = cmdrest;
2217
2218   if (*cmdrest++ != '"')
2219     error (_("Bad format string, non-terminated '\"'."));
2220   
2221   cmdrest = skip_spaces (cmdrest);
2222
2223   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2224     error (_("Invalid argument syntax"));
2225
2226   if (*cmdrest == ',')
2227     cmdrest++;
2228   cmdrest = skip_spaces (cmdrest);
2229
2230   /* For each argument, make an expression.  */
2231
2232   argvec = (struct expression **) alloca (strlen (cmd)
2233                                          * sizeof (struct expression *));
2234
2235   nargs = 0;
2236   while (*cmdrest != '\0')
2237     {
2238       char *cmd1;
2239
2240       cmd1 = cmdrest;
2241       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2242       argvec[nargs++] = expr;
2243       cmdrest = cmd1;
2244       if (*cmdrest == ',')
2245         ++cmdrest;
2246     }
2247
2248   /* We don't want to stop processing, so catch any errors
2249      that may show up.  */
2250   TRY_CATCH (ex, RETURN_MASK_ERROR)
2251     {
2252       aexpr = gen_printf (scope, gdbarch, 0, 0,
2253                           format_start, format_end - format_start,
2254                           fpieces, nargs, argvec);
2255     }
2256
2257   if (ex.reason < 0)
2258     {
2259       /* If we got here, it means the command could not be parsed to a valid
2260          bytecode expression and thus can't be evaluated on the target's side.
2261          It's no use iterating through the other commands.  */
2262       return NULL;
2263     }
2264
2265   do_cleanups (old_cleanups);
2266
2267   /* We have a valid agent expression, return it.  */
2268   return aexpr;
2269 }
2270
2271 /* Based on location BL, create a list of breakpoint commands to be
2272    passed on to the target.  If we have duplicated locations with
2273    different commands, we will add any such to the list.  */
2274
2275 static void
2276 build_target_command_list (struct bp_location *bl)
2277 {
2278   struct bp_location **locp = NULL, **loc2p;
2279   int null_command_or_parse_error = 0;
2280   int modified = bl->needs_update;
2281   struct bp_location *loc;
2282
2283   /* For now, limit to agent-style dprintf breakpoints.  */
2284   if (bl->owner->type != bp_dprintf
2285       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2286     return;
2287
2288   if (!target_can_run_breakpoint_commands ())
2289     return;
2290
2291   /* Do a first pass to check for locations with no assigned
2292      conditions or conditions that fail to parse to a valid agent expression
2293      bytecode.  If any of these happen, then it's no use to send conditions
2294      to the target since this location will always trigger and generate a
2295      response back to GDB.  */
2296   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2297     {
2298       loc = (*loc2p);
2299       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2300         {
2301           if (modified)
2302             {
2303               struct agent_expr *aexpr;
2304
2305               /* Re-parse the commands since something changed.  In that
2306                  case we already freed the command bytecodes (see
2307                  force_breakpoint_reinsertion).  We just
2308                  need to parse the command to bytecodes again.  */
2309               aexpr = parse_cmd_to_aexpr (bl->address,
2310                                           loc->owner->extra_string);
2311               loc->cmd_bytecode = aexpr;
2312
2313               if (!aexpr)
2314                 continue;
2315             }
2316
2317           /* If we have a NULL bytecode expression, it means something
2318              went wrong or we have a null command expression.  */
2319           if (!loc->cmd_bytecode)
2320             {
2321               null_command_or_parse_error = 1;
2322               break;
2323             }
2324         }
2325     }
2326
2327   /* If anything failed, then we're not doing target-side commands,
2328      and so clean up.  */
2329   if (null_command_or_parse_error)
2330     {
2331       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2332         {
2333           loc = (*loc2p);
2334           if (is_breakpoint (loc->owner)
2335               && loc->pspace->num == bl->pspace->num)
2336             {
2337               /* Only go as far as the first NULL bytecode is
2338                  located.  */
2339               if (!loc->cond_bytecode)
2340                 return;
2341
2342               free_agent_expr (loc->cond_bytecode);
2343               loc->cond_bytecode = NULL;
2344             }
2345         }
2346     }
2347
2348   /* No NULL commands or failed bytecode generation.  Build a command list
2349      for this location's address.  */
2350   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2351     {
2352       loc = (*loc2p);
2353       if (loc->owner->extra_string
2354           && is_breakpoint (loc->owner)
2355           && loc->pspace->num == bl->pspace->num
2356           && loc->owner->enable_state == bp_enabled
2357           && loc->enabled)
2358         /* Add the command to the vector.  This will be used later
2359            to send the commands to the target.  */
2360         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2361                        loc->cmd_bytecode);
2362     }
2363
2364   bl->target_info.persist = 0;
2365   /* Maybe flag this location as persistent.  */
2366   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2367     bl->target_info.persist = 1;
2368 }
2369
2370 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2371    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2372    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2373    Returns 0 for success, 1 if the bp_location type is not supported or
2374    -1 for failure.
2375
2376    NOTE drow/2003-09-09: This routine could be broken down to an
2377    object-style method for each breakpoint or catchpoint type.  */
2378 static int
2379 insert_bp_location (struct bp_location *bl,
2380                     struct ui_file *tmp_error_stream,
2381                     int *disabled_breaks,
2382                     int *hw_breakpoint_error,
2383                     int *hw_bp_error_explained_already)
2384 {
2385   int val = 0;
2386   char *hw_bp_err_string = NULL;
2387   struct gdb_exception e;
2388
2389   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2390     return 0;
2391
2392   /* Note we don't initialize bl->target_info, as that wipes out
2393      the breakpoint location's shadow_contents if the breakpoint
2394      is still inserted at that location.  This in turn breaks
2395      target_read_memory which depends on these buffers when
2396      a memory read is requested at the breakpoint location:
2397      Once the target_info has been wiped, we fail to see that
2398      we have a breakpoint inserted at that address and thus
2399      read the breakpoint instead of returning the data saved in
2400      the breakpoint location's shadow contents.  */
2401   bl->target_info.placed_address = bl->address;
2402   bl->target_info.placed_address_space = bl->pspace->aspace;
2403   bl->target_info.length = bl->length;
2404
2405   /* When working with target-side conditions, we must pass all the conditions
2406      for the same breakpoint address down to the target since GDB will not
2407      insert those locations.  With a list of breakpoint conditions, the target
2408      can decide when to stop and notify GDB.  */
2409
2410   if (is_breakpoint (bl->owner))
2411     {
2412       build_target_condition_list (bl);
2413       build_target_command_list (bl);
2414       /* Reset the modification marker.  */
2415       bl->needs_update = 0;
2416     }
2417
2418   if (bl->loc_type == bp_loc_software_breakpoint
2419       || bl->loc_type == bp_loc_hardware_breakpoint)
2420     {
2421       if (bl->owner->type != bp_hardware_breakpoint)
2422         {
2423           /* If the explicitly specified breakpoint type
2424              is not hardware breakpoint, check the memory map to see
2425              if the breakpoint address is in read only memory or not.
2426
2427              Two important cases are:
2428              - location type is not hardware breakpoint, memory
2429              is readonly.  We change the type of the location to
2430              hardware breakpoint.
2431              - location type is hardware breakpoint, memory is
2432              read-write.  This means we've previously made the
2433              location hardware one, but then the memory map changed,
2434              so we undo.
2435              
2436              When breakpoints are removed, remove_breakpoints will use
2437              location types we've just set here, the only possible
2438              problem is that memory map has changed during running
2439              program, but it's not going to work anyway with current
2440              gdb.  */
2441           struct mem_region *mr 
2442             = lookup_mem_region (bl->target_info.placed_address);
2443           
2444           if (mr)
2445             {
2446               if (automatic_hardware_breakpoints)
2447                 {
2448                   enum bp_loc_type new_type;
2449                   
2450                   if (mr->attrib.mode != MEM_RW)
2451                     new_type = bp_loc_hardware_breakpoint;
2452                   else 
2453                     new_type = bp_loc_software_breakpoint;
2454                   
2455                   if (new_type != bl->loc_type)
2456                     {
2457                       static int said = 0;
2458
2459                       bl->loc_type = new_type;
2460                       if (!said)
2461                         {
2462                           fprintf_filtered (gdb_stdout,
2463                                             _("Note: automatically using "
2464                                               "hardware breakpoints for "
2465                                               "read-only addresses.\n"));
2466                           said = 1;
2467                         }
2468                     }
2469                 }
2470               else if (bl->loc_type == bp_loc_software_breakpoint
2471                        && mr->attrib.mode != MEM_RW)        
2472                 warning (_("cannot set software breakpoint "
2473                            "at readonly address %s"),
2474                          paddress (bl->gdbarch, bl->address));
2475             }
2476         }
2477         
2478       /* First check to see if we have to handle an overlay.  */
2479       if (overlay_debugging == ovly_off
2480           || bl->section == NULL
2481           || !(section_is_overlay (bl->section)))
2482         {
2483           /* No overlay handling: just set the breakpoint.  */
2484           TRY_CATCH (e, RETURN_MASK_ALL)
2485             {
2486               val = bl->owner->ops->insert_location (bl);
2487             }
2488           if (e.reason < 0)
2489             {
2490               val = 1;
2491               hw_bp_err_string = (char *) e.message;
2492             }
2493         }
2494       else
2495         {
2496           /* This breakpoint is in an overlay section.
2497              Shall we set a breakpoint at the LMA?  */
2498           if (!overlay_events_enabled)
2499             {
2500               /* Yes -- overlay event support is not active, 
2501                  so we must try to set a breakpoint at the LMA.
2502                  This will not work for a hardware breakpoint.  */
2503               if (bl->loc_type == bp_loc_hardware_breakpoint)
2504                 warning (_("hardware breakpoint %d not supported in overlay!"),
2505                          bl->owner->number);
2506               else
2507                 {
2508                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2509                                                              bl->section);
2510                   /* Set a software (trap) breakpoint at the LMA.  */
2511                   bl->overlay_target_info = bl->target_info;
2512                   bl->overlay_target_info.placed_address = addr;
2513                   val = target_insert_breakpoint (bl->gdbarch,
2514                                                   &bl->overlay_target_info);
2515                   if (val != 0)
2516                     fprintf_unfiltered (tmp_error_stream,
2517                                         "Overlay breakpoint %d "
2518                                         "failed: in ROM?\n",
2519                                         bl->owner->number);
2520                 }
2521             }
2522           /* Shall we set a breakpoint at the VMA? */
2523           if (section_is_mapped (bl->section))
2524             {
2525               /* Yes.  This overlay section is mapped into memory.  */
2526               TRY_CATCH (e, RETURN_MASK_ALL)
2527                 {
2528                   val = bl->owner->ops->insert_location (bl);
2529                 }
2530               if (e.reason < 0)
2531                 {
2532                   val = 1;
2533                   hw_bp_err_string = (char *) e.message;
2534                 }
2535             }
2536           else
2537             {
2538               /* No.  This breakpoint will not be inserted.  
2539                  No error, but do not mark the bp as 'inserted'.  */
2540               return 0;
2541             }
2542         }
2543
2544       if (val)
2545         {
2546           /* Can't set the breakpoint.  */
2547           if (solib_name_from_address (bl->pspace, bl->address))
2548             {
2549               /* See also: disable_breakpoints_in_shlibs.  */
2550               val = 0;
2551               bl->shlib_disabled = 1;
2552               observer_notify_breakpoint_modified (bl->owner);
2553               if (!*disabled_breaks)
2554                 {
2555                   fprintf_unfiltered (tmp_error_stream, 
2556                                       "Cannot insert breakpoint %d.\n", 
2557                                       bl->owner->number);
2558                   fprintf_unfiltered (tmp_error_stream, 
2559                                       "Temporarily disabling shared "
2560                                       "library breakpoints:\n");
2561                 }
2562               *disabled_breaks = 1;
2563               fprintf_unfiltered (tmp_error_stream,
2564                                   "breakpoint #%d\n", bl->owner->number);
2565             }
2566           else
2567             {
2568               if (bl->loc_type == bp_loc_hardware_breakpoint)
2569                 {
2570                   *hw_breakpoint_error = 1;
2571                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2572                   fprintf_unfiltered (tmp_error_stream,
2573                                       "Cannot insert hardware breakpoint %d%s",
2574                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2575                   if (hw_bp_err_string)
2576                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2577                 }
2578               else
2579                 {
2580                   fprintf_unfiltered (tmp_error_stream, 
2581                                       "Cannot insert breakpoint %d.\n", 
2582                                       bl->owner->number);
2583                   fprintf_filtered (tmp_error_stream, 
2584                                     "Error accessing memory address ");
2585                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2586                                   tmp_error_stream);
2587                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2588                                     safe_strerror (val));
2589                 }
2590
2591             }
2592         }
2593       else
2594         bl->inserted = 1;
2595
2596       return val;
2597     }
2598
2599   else if (bl->loc_type == bp_loc_hardware_watchpoint
2600            /* NOTE drow/2003-09-08: This state only exists for removing
2601               watchpoints.  It's not clear that it's necessary...  */
2602            && bl->owner->disposition != disp_del_at_next_stop)
2603     {
2604       gdb_assert (bl->owner->ops != NULL
2605                   && bl->owner->ops->insert_location != NULL);
2606
2607       val = bl->owner->ops->insert_location (bl);
2608
2609       /* If trying to set a read-watchpoint, and it turns out it's not
2610          supported, try emulating one with an access watchpoint.  */
2611       if (val == 1 && bl->watchpoint_type == hw_read)
2612         {
2613           struct bp_location *loc, **loc_temp;
2614
2615           /* But don't try to insert it, if there's already another
2616              hw_access location that would be considered a duplicate
2617              of this one.  */
2618           ALL_BP_LOCATIONS (loc, loc_temp)
2619             if (loc != bl
2620                 && loc->watchpoint_type == hw_access
2621                 && watchpoint_locations_match (bl, loc))
2622               {
2623                 bl->duplicate = 1;
2624                 bl->inserted = 1;
2625                 bl->target_info = loc->target_info;
2626                 bl->watchpoint_type = hw_access;
2627                 val = 0;
2628                 break;
2629               }
2630
2631           if (val == 1)
2632             {
2633               bl->watchpoint_type = hw_access;
2634               val = bl->owner->ops->insert_location (bl);
2635
2636               if (val)
2637                 /* Back to the original value.  */
2638                 bl->watchpoint_type = hw_read;
2639             }
2640         }
2641
2642       bl->inserted = (val == 0);
2643     }
2644
2645   else if (bl->owner->type == bp_catchpoint)
2646     {
2647       gdb_assert (bl->owner->ops != NULL
2648                   && bl->owner->ops->insert_location != NULL);
2649
2650       val = bl->owner->ops->insert_location (bl);
2651       if (val)
2652         {
2653           bl->owner->enable_state = bp_disabled;
2654
2655           if (val == 1)
2656             warning (_("\
2657 Error inserting catchpoint %d: Your system does not support this type\n\
2658 of catchpoint."), bl->owner->number);
2659           else
2660             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2661         }
2662
2663       bl->inserted = (val == 0);
2664
2665       /* We've already printed an error message if there was a problem
2666          inserting this catchpoint, and we've disabled the catchpoint,
2667          so just return success.  */
2668       return 0;
2669     }
2670
2671   return 0;
2672 }
2673
2674 /* This function is called when program space PSPACE is about to be
2675    deleted.  It takes care of updating breakpoints to not reference
2676    PSPACE anymore.  */
2677
2678 void
2679 breakpoint_program_space_exit (struct program_space *pspace)
2680 {
2681   struct breakpoint *b, *b_temp;
2682   struct bp_location *loc, **loc_temp;
2683
2684   /* Remove any breakpoint that was set through this program space.  */
2685   ALL_BREAKPOINTS_SAFE (b, b_temp)
2686     {
2687       if (b->pspace == pspace)
2688         delete_breakpoint (b);
2689     }
2690
2691   /* Breakpoints set through other program spaces could have locations
2692      bound to PSPACE as well.  Remove those.  */
2693   ALL_BP_LOCATIONS (loc, loc_temp)
2694     {
2695       struct bp_location *tmp;
2696
2697       if (loc->pspace == pspace)
2698         {
2699           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2700           if (loc->owner->loc == loc)
2701             loc->owner->loc = loc->next;
2702           else
2703             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2704               if (tmp->next == loc)
2705                 {
2706                   tmp->next = loc->next;
2707                   break;
2708                 }
2709         }
2710     }
2711
2712   /* Now update the global location list to permanently delete the
2713      removed locations above.  */
2714   update_global_location_list (0);
2715 }
2716
2717 /* Make sure all breakpoints are inserted in inferior.
2718    Throws exception on any error.
2719    A breakpoint that is already inserted won't be inserted
2720    again, so calling this function twice is safe.  */
2721 void
2722 insert_breakpoints (void)
2723 {
2724   struct breakpoint *bpt;
2725
2726   ALL_BREAKPOINTS (bpt)
2727     if (is_hardware_watchpoint (bpt))
2728       {
2729         struct watchpoint *w = (struct watchpoint *) bpt;
2730
2731         update_watchpoint (w, 0 /* don't reparse.  */);
2732       }
2733
2734   update_global_location_list (1);
2735
2736   /* update_global_location_list does not insert breakpoints when
2737      always_inserted_mode is not enabled.  Explicitly insert them
2738      now.  */
2739   if (!breakpoints_always_inserted_mode ())
2740     insert_breakpoint_locations ();
2741 }
2742
2743 /* Invoke CALLBACK for each of bp_location.  */
2744
2745 void
2746 iterate_over_bp_locations (walk_bp_location_callback callback)
2747 {
2748   struct bp_location *loc, **loc_tmp;
2749
2750   ALL_BP_LOCATIONS (loc, loc_tmp)
2751     {
2752       callback (loc, NULL);
2753     }
2754 }
2755
2756 /* This is used when we need to synch breakpoint conditions between GDB and the
2757    target.  It is the case with deleting and disabling of breakpoints when using
2758    always-inserted mode.  */
2759
2760 static void
2761 update_inserted_breakpoint_locations (void)
2762 {
2763   struct bp_location *bl, **blp_tmp;
2764   int error_flag = 0;
2765   int val = 0;
2766   int disabled_breaks = 0;
2767   int hw_breakpoint_error = 0;
2768   int hw_bp_details_reported = 0;
2769
2770   struct ui_file *tmp_error_stream = mem_fileopen ();
2771   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2772
2773   /* Explicitly mark the warning -- this will only be printed if
2774      there was an error.  */
2775   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2776
2777   save_current_space_and_thread ();
2778
2779   ALL_BP_LOCATIONS (bl, blp_tmp)
2780     {
2781       /* We only want to update software breakpoints and hardware
2782          breakpoints.  */
2783       if (!is_breakpoint (bl->owner))
2784         continue;
2785
2786       /* We only want to update locations that are already inserted
2787          and need updating.  This is to avoid unwanted insertion during
2788          deletion of breakpoints.  */
2789       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2790         continue;
2791
2792       switch_to_program_space_and_thread (bl->pspace);
2793
2794       /* For targets that support global breakpoints, there's no need
2795          to select an inferior to insert breakpoint to.  In fact, even
2796          if we aren't attached to any process yet, we should still
2797          insert breakpoints.  */
2798       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2799           && ptid_equal (inferior_ptid, null_ptid))
2800         continue;
2801
2802       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2803                                     &hw_breakpoint_error, &hw_bp_details_reported);
2804       if (val)
2805         error_flag = val;
2806     }
2807
2808   if (error_flag)
2809     {
2810       target_terminal_ours_for_output ();
2811       error_stream (tmp_error_stream);
2812     }
2813
2814   do_cleanups (cleanups);
2815 }
2816
2817 /* Used when starting or continuing the program.  */
2818
2819 static void
2820 insert_breakpoint_locations (void)
2821 {
2822   struct breakpoint *bpt;
2823   struct bp_location *bl, **blp_tmp;
2824   int error_flag = 0;
2825   int val = 0;
2826   int disabled_breaks = 0;
2827   int hw_breakpoint_error = 0;
2828   int hw_bp_error_explained_already = 0;
2829
2830   struct ui_file *tmp_error_stream = mem_fileopen ();
2831   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2832   
2833   /* Explicitly mark the warning -- this will only be printed if
2834      there was an error.  */
2835   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2836
2837   save_current_space_and_thread ();
2838
2839   ALL_BP_LOCATIONS (bl, blp_tmp)
2840     {
2841       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2842         continue;
2843
2844       /* There is no point inserting thread-specific breakpoints if
2845          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2846          has BL->OWNER always non-NULL.  */
2847       if (bl->owner->thread != -1
2848           && !valid_thread_id (bl->owner->thread))
2849         continue;
2850
2851       switch_to_program_space_and_thread (bl->pspace);
2852
2853       /* For targets that support global breakpoints, there's no need
2854          to select an inferior to insert breakpoint to.  In fact, even
2855          if we aren't attached to any process yet, we should still
2856          insert breakpoints.  */
2857       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2858           && ptid_equal (inferior_ptid, null_ptid))
2859         continue;
2860
2861       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2862                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2863       if (val)
2864         error_flag = val;
2865     }
2866
2867   /* If we failed to insert all locations of a watchpoint, remove
2868      them, as half-inserted watchpoint is of limited use.  */
2869   ALL_BREAKPOINTS (bpt)  
2870     {
2871       int some_failed = 0;
2872       struct bp_location *loc;
2873
2874       if (!is_hardware_watchpoint (bpt))
2875         continue;
2876
2877       if (!breakpoint_enabled (bpt))
2878         continue;
2879
2880       if (bpt->disposition == disp_del_at_next_stop)
2881         continue;
2882       
2883       for (loc = bpt->loc; loc; loc = loc->next)
2884         if (!loc->inserted && should_be_inserted (loc))
2885           {
2886             some_failed = 1;
2887             break;
2888           }
2889       if (some_failed)
2890         {
2891           for (loc = bpt->loc; loc; loc = loc->next)
2892             if (loc->inserted)
2893               remove_breakpoint (loc, mark_uninserted);
2894
2895           hw_breakpoint_error = 1;
2896           fprintf_unfiltered (tmp_error_stream,
2897                               "Could not insert hardware watchpoint %d.\n", 
2898                               bpt->number);
2899           error_flag = -1;
2900         }
2901     }
2902
2903   if (error_flag)
2904     {
2905       /* If a hardware breakpoint or watchpoint was inserted, add a
2906          message about possibly exhausted resources.  */
2907       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2908         {
2909           fprintf_unfiltered (tmp_error_stream, 
2910                               "Could not insert hardware breakpoints:\n\
2911 You may have requested too many hardware breakpoints/watchpoints.\n");
2912         }
2913       target_terminal_ours_for_output ();
2914       error_stream (tmp_error_stream);
2915     }
2916
2917   do_cleanups (cleanups);
2918 }
2919
2920 /* Used when the program stops.
2921    Returns zero if successful, or non-zero if there was a problem
2922    removing a breakpoint location.  */
2923
2924 int
2925 remove_breakpoints (void)
2926 {
2927   struct bp_location *bl, **blp_tmp;
2928   int val = 0;
2929
2930   ALL_BP_LOCATIONS (bl, blp_tmp)
2931   {
2932     if (bl->inserted && !is_tracepoint (bl->owner))
2933       val |= remove_breakpoint (bl, mark_uninserted);
2934   }
2935   return val;
2936 }
2937
2938 /* Remove breakpoints of process PID.  */
2939
2940 int
2941 remove_breakpoints_pid (int pid)
2942 {
2943   struct bp_location *bl, **blp_tmp;
2944   int val;
2945   struct inferior *inf = find_inferior_pid (pid);
2946
2947   ALL_BP_LOCATIONS (bl, blp_tmp)
2948   {
2949     if (bl->pspace != inf->pspace)
2950       continue;
2951
2952     if (bl->owner->type == bp_dprintf)
2953       continue;
2954
2955     if (bl->inserted)
2956       {
2957         val = remove_breakpoint (bl, mark_uninserted);
2958         if (val != 0)
2959           return val;
2960       }
2961   }
2962   return 0;
2963 }
2964
2965 int
2966 reattach_breakpoints (int pid)
2967 {
2968   struct cleanup *old_chain;
2969   struct bp_location *bl, **blp_tmp;
2970   int val;
2971   struct ui_file *tmp_error_stream;
2972   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2973   struct inferior *inf;
2974   struct thread_info *tp;
2975
2976   tp = any_live_thread_of_process (pid);
2977   if (tp == NULL)
2978     return 1;
2979
2980   inf = find_inferior_pid (pid);
2981   old_chain = save_inferior_ptid ();
2982
2983   inferior_ptid = tp->ptid;
2984
2985   tmp_error_stream = mem_fileopen ();
2986   make_cleanup_ui_file_delete (tmp_error_stream);
2987
2988   ALL_BP_LOCATIONS (bl, blp_tmp)
2989   {
2990     if (bl->pspace != inf->pspace)
2991       continue;
2992
2993     if (bl->inserted)
2994       {
2995         bl->inserted = 0;
2996         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2997         if (val != 0)
2998           {
2999             do_cleanups (old_chain);
3000             return val;
3001           }
3002       }
3003   }
3004   do_cleanups (old_chain);
3005   return 0;
3006 }
3007
3008 static int internal_breakpoint_number = -1;
3009
3010 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3011    If INTERNAL is non-zero, the breakpoint number will be populated
3012    from internal_breakpoint_number and that variable decremented.
3013    Otherwise the breakpoint number will be populated from
3014    breakpoint_count and that value incremented.  Internal breakpoints
3015    do not set the internal var bpnum.  */
3016 static void
3017 set_breakpoint_number (int internal, struct breakpoint *b)
3018 {
3019   if (internal)
3020     b->number = internal_breakpoint_number--;
3021   else
3022     {
3023       set_breakpoint_count (breakpoint_count + 1);
3024       b->number = breakpoint_count;
3025     }
3026 }
3027
3028 static struct breakpoint *
3029 create_internal_breakpoint (struct gdbarch *gdbarch,
3030                             CORE_ADDR address, enum bptype type,
3031                             const struct breakpoint_ops *ops)
3032 {
3033   struct symtab_and_line sal;
3034   struct breakpoint *b;
3035
3036   init_sal (&sal);              /* Initialize to zeroes.  */
3037
3038   sal.pc = address;
3039   sal.section = find_pc_overlay (sal.pc);
3040   sal.pspace = current_program_space;
3041
3042   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3043   b->number = internal_breakpoint_number--;
3044   b->disposition = disp_donttouch;
3045
3046   return b;
3047 }
3048
3049 static const char *const longjmp_names[] =
3050   {
3051     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3052   };
3053 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3054
3055 /* Per-objfile data private to breakpoint.c.  */
3056 struct breakpoint_objfile_data
3057 {
3058   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3059   struct minimal_symbol *overlay_msym;
3060
3061   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3062   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3063
3064   /* True if we have looked for longjmp probes.  */
3065   int longjmp_searched;
3066
3067   /* SystemTap probe points for longjmp (if any).  */
3068   VEC (probe_p) *longjmp_probes;
3069
3070   /* Minimal symbol for "std::terminate()" (if any).  */
3071   struct minimal_symbol *terminate_msym;
3072
3073   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3074   struct minimal_symbol *exception_msym;
3075
3076   /* True if we have looked for exception probes.  */
3077   int exception_searched;
3078
3079   /* SystemTap probe points for unwinding (if any).  */
3080   VEC (probe_p) *exception_probes;
3081 };
3082
3083 static const struct objfile_data *breakpoint_objfile_key;
3084
3085 /* Minimal symbol not found sentinel.  */
3086 static struct minimal_symbol msym_not_found;
3087
3088 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3089
3090 static int
3091 msym_not_found_p (const struct minimal_symbol *msym)
3092 {
3093   return msym == &msym_not_found;
3094 }
3095
3096 /* Return per-objfile data needed by breakpoint.c.
3097    Allocate the data if necessary.  */
3098
3099 static struct breakpoint_objfile_data *
3100 get_breakpoint_objfile_data (struct objfile *objfile)
3101 {
3102   struct breakpoint_objfile_data *bp_objfile_data;
3103
3104   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3105   if (bp_objfile_data == NULL)
3106     {
3107       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3108                                        sizeof (*bp_objfile_data));
3109
3110       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3111       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3112     }
3113   return bp_objfile_data;
3114 }
3115
3116 static void
3117 free_breakpoint_probes (struct objfile *obj, void *data)
3118 {
3119   struct breakpoint_objfile_data *bp_objfile_data = data;
3120
3121   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3122   VEC_free (probe_p, bp_objfile_data->exception_probes);
3123 }
3124
3125 static void
3126 create_overlay_event_breakpoint (void)
3127 {
3128   struct objfile *objfile;
3129   const char *const func_name = "_ovly_debug_event";
3130
3131   ALL_OBJFILES (objfile)
3132     {
3133       struct breakpoint *b;
3134       struct breakpoint_objfile_data *bp_objfile_data;
3135       CORE_ADDR addr;
3136
3137       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3138
3139       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3140         continue;
3141
3142       if (bp_objfile_data->overlay_msym == NULL)
3143         {
3144           struct minimal_symbol *m;
3145
3146           m = lookup_minimal_symbol_text (func_name, objfile);
3147           if (m == NULL)
3148             {
3149               /* Avoid future lookups in this objfile.  */
3150               bp_objfile_data->overlay_msym = &msym_not_found;
3151               continue;
3152             }
3153           bp_objfile_data->overlay_msym = m;
3154         }
3155
3156       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3157       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3158                                       bp_overlay_event,
3159                                       &internal_breakpoint_ops);
3160       b->addr_string = xstrdup (func_name);
3161
3162       if (overlay_debugging == ovly_auto)
3163         {
3164           b->enable_state = bp_enabled;
3165           overlay_events_enabled = 1;
3166         }
3167       else
3168        {
3169          b->enable_state = bp_disabled;
3170          overlay_events_enabled = 0;
3171        }
3172     }
3173   update_global_location_list (1);
3174 }
3175
3176 static void
3177 create_longjmp_master_breakpoint (void)
3178 {
3179   struct program_space *pspace;
3180   struct cleanup *old_chain;
3181
3182   old_chain = save_current_program_space ();
3183
3184   ALL_PSPACES (pspace)
3185   {
3186     struct objfile *objfile;
3187
3188     set_current_program_space (pspace);
3189
3190     ALL_OBJFILES (objfile)
3191     {
3192       int i;
3193       struct gdbarch *gdbarch;
3194       struct breakpoint_objfile_data *bp_objfile_data;
3195
3196       gdbarch = get_objfile_arch (objfile);
3197       if (!gdbarch_get_longjmp_target_p (gdbarch))
3198         continue;
3199
3200       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3201
3202       if (!bp_objfile_data->longjmp_searched)
3203         {
3204           bp_objfile_data->longjmp_probes
3205             = find_probes_in_objfile (objfile, "libc", "longjmp");
3206           bp_objfile_data->longjmp_searched = 1;
3207         }
3208
3209       if (bp_objfile_data->longjmp_probes != NULL)
3210         {
3211           int i;
3212           struct probe *probe;
3213           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3214
3215           for (i = 0;
3216                VEC_iterate (probe_p,
3217                             bp_objfile_data->longjmp_probes,
3218                             i, probe);
3219                ++i)
3220             {
3221               struct breakpoint *b;
3222
3223               b = create_internal_breakpoint (gdbarch, probe->address,
3224                                               bp_longjmp_master,
3225                                               &internal_breakpoint_ops);
3226               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3227               b->enable_state = bp_disabled;
3228             }
3229
3230           continue;
3231         }
3232
3233       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3234         {
3235           struct breakpoint *b;
3236           const char *func_name;
3237           CORE_ADDR addr;
3238
3239           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3240             continue;
3241
3242           func_name = longjmp_names[i];
3243           if (bp_objfile_data->longjmp_msym[i] == NULL)
3244             {
3245               struct minimal_symbol *m;
3246
3247               m = lookup_minimal_symbol_text (func_name, objfile);
3248               if (m == NULL)
3249                 {
3250                   /* Prevent future lookups in this objfile.  */
3251                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3252                   continue;
3253                 }
3254               bp_objfile_data->longjmp_msym[i] = m;
3255             }
3256
3257           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3258           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3259                                           &internal_breakpoint_ops);
3260           b->addr_string = xstrdup (func_name);
3261           b->enable_state = bp_disabled;
3262         }
3263     }
3264   }
3265   update_global_location_list (1);
3266
3267   do_cleanups (old_chain);
3268 }
3269
3270 /* Create a master std::terminate breakpoint.  */
3271 static void
3272 create_std_terminate_master_breakpoint (void)
3273 {
3274   struct program_space *pspace;
3275   struct cleanup *old_chain;
3276   const char *const func_name = "std::terminate()";
3277
3278   old_chain = save_current_program_space ();
3279
3280   ALL_PSPACES (pspace)
3281   {
3282     struct objfile *objfile;
3283     CORE_ADDR addr;
3284
3285     set_current_program_space (pspace);
3286
3287     ALL_OBJFILES (objfile)
3288     {
3289       struct breakpoint *b;
3290       struct breakpoint_objfile_data *bp_objfile_data;
3291
3292       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3293
3294       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3295         continue;
3296
3297       if (bp_objfile_data->terminate_msym == NULL)
3298         {
3299           struct minimal_symbol *m;
3300
3301           m = lookup_minimal_symbol (func_name, NULL, objfile);
3302           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3303                             && MSYMBOL_TYPE (m) != mst_file_text))
3304             {
3305               /* Prevent future lookups in this objfile.  */
3306               bp_objfile_data->terminate_msym = &msym_not_found;
3307               continue;
3308             }
3309           bp_objfile_data->terminate_msym = m;
3310         }
3311
3312       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3313       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3314                                       bp_std_terminate_master,
3315                                       &internal_breakpoint_ops);
3316       b->addr_string = xstrdup (func_name);
3317       b->enable_state = bp_disabled;
3318     }
3319   }
3320
3321   update_global_location_list (1);
3322
3323   do_cleanups (old_chain);
3324 }
3325
3326 /* Install a master breakpoint on the unwinder's debug hook.  */
3327
3328 static void
3329 create_exception_master_breakpoint (void)
3330 {
3331   struct objfile *objfile;
3332   const char *const func_name = "_Unwind_DebugHook";
3333
3334   ALL_OBJFILES (objfile)
3335     {
3336       struct breakpoint *b;
3337       struct gdbarch *gdbarch;
3338       struct breakpoint_objfile_data *bp_objfile_data;
3339       CORE_ADDR addr;
3340
3341       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3342
3343       /* We prefer the SystemTap probe point if it exists.  */
3344       if (!bp_objfile_data->exception_searched)
3345         {
3346           bp_objfile_data->exception_probes
3347             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3348           bp_objfile_data->exception_searched = 1;
3349         }
3350
3351       if (bp_objfile_data->exception_probes != NULL)
3352         {
3353           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3354           int i;
3355           struct probe *probe;
3356
3357           for (i = 0;
3358                VEC_iterate (probe_p,
3359                             bp_objfile_data->exception_probes,
3360                             i, probe);
3361                ++i)
3362             {
3363               struct breakpoint *b;
3364
3365               b = create_internal_breakpoint (gdbarch, probe->address,
3366                                               bp_exception_master,
3367                                               &internal_breakpoint_ops);
3368               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3369               b->enable_state = bp_disabled;
3370             }
3371
3372           continue;
3373         }
3374
3375       /* Otherwise, try the hook function.  */
3376
3377       if (msym_not_found_p (bp_objfile_data->exception_msym))
3378         continue;
3379
3380       gdbarch = get_objfile_arch (objfile);
3381
3382       if (bp_objfile_data->exception_msym == NULL)
3383         {
3384           struct minimal_symbol *debug_hook;
3385
3386           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3387           if (debug_hook == NULL)
3388             {
3389               bp_objfile_data->exception_msym = &msym_not_found;
3390               continue;
3391             }
3392
3393           bp_objfile_data->exception_msym = debug_hook;
3394         }
3395
3396       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3397       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3398                                                  &current_target);
3399       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3400                                       &internal_breakpoint_ops);
3401       b->addr_string = xstrdup (func_name);
3402       b->enable_state = bp_disabled;
3403     }
3404
3405   update_global_location_list (1);
3406 }
3407
3408 void
3409 update_breakpoints_after_exec (void)
3410 {
3411   struct breakpoint *b, *b_tmp;
3412   struct bp_location *bploc, **bplocp_tmp;
3413
3414   /* We're about to delete breakpoints from GDB's lists.  If the
3415      INSERTED flag is true, GDB will try to lift the breakpoints by
3416      writing the breakpoints' "shadow contents" back into memory.  The
3417      "shadow contents" are NOT valid after an exec, so GDB should not
3418      do that.  Instead, the target is responsible from marking
3419      breakpoints out as soon as it detects an exec.  We don't do that
3420      here instead, because there may be other attempts to delete
3421      breakpoints after detecting an exec and before reaching here.  */
3422   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3423     if (bploc->pspace == current_program_space)
3424       gdb_assert (!bploc->inserted);
3425
3426   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3427   {
3428     if (b->pspace != current_program_space)
3429       continue;
3430
3431     /* Solib breakpoints must be explicitly reset after an exec().  */
3432     if (b->type == bp_shlib_event)
3433       {
3434         delete_breakpoint (b);
3435         continue;
3436       }
3437
3438     /* JIT breakpoints must be explicitly reset after an exec().  */
3439     if (b->type == bp_jit_event)
3440       {
3441         delete_breakpoint (b);
3442         continue;
3443       }
3444
3445     /* Thread event breakpoints must be set anew after an exec(),
3446        as must overlay event and longjmp master breakpoints.  */
3447     if (b->type == bp_thread_event || b->type == bp_overlay_event
3448         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3449         || b->type == bp_exception_master)
3450       {
3451         delete_breakpoint (b);
3452         continue;
3453       }
3454
3455     /* Step-resume breakpoints are meaningless after an exec().  */
3456     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3457       {
3458         delete_breakpoint (b);
3459         continue;
3460       }
3461
3462     /* Longjmp and longjmp-resume breakpoints are also meaningless
3463        after an exec.  */
3464     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3465         || b->type == bp_longjmp_call_dummy
3466         || b->type == bp_exception || b->type == bp_exception_resume)
3467       {
3468         delete_breakpoint (b);
3469         continue;
3470       }
3471
3472     if (b->type == bp_catchpoint)
3473       {
3474         /* For now, none of the bp_catchpoint breakpoints need to
3475            do anything at this point.  In the future, if some of
3476            the catchpoints need to something, we will need to add
3477            a new method, and call this method from here.  */
3478         continue;
3479       }
3480
3481     /* bp_finish is a special case.  The only way we ought to be able
3482        to see one of these when an exec() has happened, is if the user
3483        caught a vfork, and then said "finish".  Ordinarily a finish just
3484        carries them to the call-site of the current callee, by setting
3485        a temporary bp there and resuming.  But in this case, the finish
3486        will carry them entirely through the vfork & exec.
3487
3488        We don't want to allow a bp_finish to remain inserted now.  But
3489        we can't safely delete it, 'cause finish_command has a handle to
3490        the bp on a bpstat, and will later want to delete it.  There's a
3491        chance (and I've seen it happen) that if we delete the bp_finish
3492        here, that its storage will get reused by the time finish_command
3493        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3494        We really must allow finish_command to delete a bp_finish.
3495
3496        In the absence of a general solution for the "how do we know
3497        it's safe to delete something others may have handles to?"
3498        problem, what we'll do here is just uninsert the bp_finish, and
3499        let finish_command delete it.
3500
3501        (We know the bp_finish is "doomed" in the sense that it's
3502        momentary, and will be deleted as soon as finish_command sees
3503        the inferior stopped.  So it doesn't matter that the bp's
3504        address is probably bogus in the new a.out, unlike e.g., the
3505        solib breakpoints.)  */
3506
3507     if (b->type == bp_finish)
3508       {
3509         continue;
3510       }
3511
3512     /* Without a symbolic address, we have little hope of the
3513        pre-exec() address meaning the same thing in the post-exec()
3514        a.out.  */
3515     if (b->addr_string == NULL)
3516       {
3517         delete_breakpoint (b);
3518         continue;
3519       }
3520   }
3521   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3522   create_overlay_event_breakpoint ();
3523   create_longjmp_master_breakpoint ();
3524   create_std_terminate_master_breakpoint ();
3525   create_exception_master_breakpoint ();
3526 }
3527
3528 int
3529 detach_breakpoints (ptid_t ptid)
3530 {
3531   struct bp_location *bl, **blp_tmp;
3532   int val = 0;
3533   struct cleanup *old_chain = save_inferior_ptid ();
3534   struct inferior *inf = current_inferior ();
3535
3536   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3537     error (_("Cannot detach breakpoints of inferior_ptid"));
3538
3539   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3540   inferior_ptid = ptid;
3541   ALL_BP_LOCATIONS (bl, blp_tmp)
3542   {
3543     if (bl->pspace != inf->pspace)
3544       continue;
3545
3546     if (bl->inserted)
3547       val |= remove_breakpoint_1 (bl, mark_inserted);
3548   }
3549
3550   /* Detach single-step breakpoints as well.  */
3551   detach_single_step_breakpoints ();
3552
3553   do_cleanups (old_chain);
3554   return val;
3555 }
3556
3557 /* Remove the breakpoint location BL from the current address space.
3558    Note that this is used to detach breakpoints from a child fork.
3559    When we get here, the child isn't in the inferior list, and neither
3560    do we have objects to represent its address space --- we should
3561    *not* look at bl->pspace->aspace here.  */
3562
3563 static int
3564 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3565 {
3566   int val;
3567
3568   /* BL is never in moribund_locations by our callers.  */
3569   gdb_assert (bl->owner != NULL);
3570
3571   if (bl->owner->enable_state == bp_permanent)
3572     /* Permanent breakpoints cannot be inserted or removed.  */
3573     return 0;
3574
3575   /* The type of none suggests that owner is actually deleted.
3576      This should not ever happen.  */
3577   gdb_assert (bl->owner->type != bp_none);
3578
3579   if (bl->loc_type == bp_loc_software_breakpoint
3580       || bl->loc_type == bp_loc_hardware_breakpoint)
3581     {
3582       /* "Normal" instruction breakpoint: either the standard
3583          trap-instruction bp (bp_breakpoint), or a
3584          bp_hardware_breakpoint.  */
3585
3586       /* First check to see if we have to handle an overlay.  */
3587       if (overlay_debugging == ovly_off
3588           || bl->section == NULL
3589           || !(section_is_overlay (bl->section)))
3590         {
3591           /* No overlay handling: just remove the breakpoint.  */
3592           val = bl->owner->ops->remove_location (bl);
3593         }
3594       else
3595         {
3596           /* This breakpoint is in an overlay section.
3597              Did we set a breakpoint at the LMA?  */
3598           if (!overlay_events_enabled)
3599               {
3600                 /* Yes -- overlay event support is not active, so we
3601                    should have set a breakpoint at the LMA.  Remove it.  
3602                 */
3603                 /* Ignore any failures: if the LMA is in ROM, we will
3604                    have already warned when we failed to insert it.  */
3605                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3606                   target_remove_hw_breakpoint (bl->gdbarch,
3607                                                &bl->overlay_target_info);
3608                 else
3609                   target_remove_breakpoint (bl->gdbarch,
3610                                             &bl->overlay_target_info);
3611               }
3612           /* Did we set a breakpoint at the VMA? 
3613              If so, we will have marked the breakpoint 'inserted'.  */
3614           if (bl->inserted)
3615             {
3616               /* Yes -- remove it.  Previously we did not bother to
3617                  remove the breakpoint if the section had been
3618                  unmapped, but let's not rely on that being safe.  We
3619                  don't know what the overlay manager might do.  */
3620
3621               /* However, we should remove *software* breakpoints only
3622                  if the section is still mapped, or else we overwrite
3623                  wrong code with the saved shadow contents.  */
3624               if (bl->loc_type == bp_loc_hardware_breakpoint
3625                   || section_is_mapped (bl->section))
3626                 val = bl->owner->ops->remove_location (bl);
3627               else
3628                 val = 0;
3629             }
3630           else
3631             {
3632               /* No -- not inserted, so no need to remove.  No error.  */
3633               val = 0;
3634             }
3635         }
3636
3637       /* In some cases, we might not be able to remove a breakpoint
3638          in a shared library that has already been removed, but we
3639          have not yet processed the shlib unload event.  */
3640       if (val && solib_name_from_address (bl->pspace, bl->address))
3641         val = 0;
3642
3643       if (val)
3644         return val;
3645       bl->inserted = (is == mark_inserted);
3646     }
3647   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3648     {
3649       gdb_assert (bl->owner->ops != NULL
3650                   && bl->owner->ops->remove_location != NULL);
3651
3652       bl->inserted = (is == mark_inserted);
3653       bl->owner->ops->remove_location (bl);
3654
3655       /* Failure to remove any of the hardware watchpoints comes here.  */
3656       if ((is == mark_uninserted) && (bl->inserted))
3657         warning (_("Could not remove hardware watchpoint %d."),
3658                  bl->owner->number);
3659     }
3660   else if (bl->owner->type == bp_catchpoint
3661            && breakpoint_enabled (bl->owner)
3662            && !bl->duplicate)
3663     {
3664       gdb_assert (bl->owner->ops != NULL
3665                   && bl->owner->ops->remove_location != NULL);
3666
3667       val = bl->owner->ops->remove_location (bl);
3668       if (val)
3669         return val;
3670
3671       bl->inserted = (is == mark_inserted);
3672     }
3673
3674   return 0;
3675 }
3676
3677 static int
3678 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3679 {
3680   int ret;
3681   struct cleanup *old_chain;
3682
3683   /* BL is never in moribund_locations by our callers.  */
3684   gdb_assert (bl->owner != NULL);
3685
3686   if (bl->owner->enable_state == bp_permanent)
3687     /* Permanent breakpoints cannot be inserted or removed.  */
3688     return 0;
3689
3690   /* The type of none suggests that owner is actually deleted.
3691      This should not ever happen.  */
3692   gdb_assert (bl->owner->type != bp_none);
3693
3694   old_chain = save_current_space_and_thread ();
3695
3696   switch_to_program_space_and_thread (bl->pspace);
3697
3698   ret = remove_breakpoint_1 (bl, is);
3699
3700   do_cleanups (old_chain);
3701   return ret;
3702 }
3703
3704 /* Clear the "inserted" flag in all breakpoints.  */
3705
3706 void
3707 mark_breakpoints_out (void)
3708 {
3709   struct bp_location *bl, **blp_tmp;
3710
3711   ALL_BP_LOCATIONS (bl, blp_tmp)
3712     if (bl->pspace == current_program_space)
3713       bl->inserted = 0;
3714 }
3715
3716 /* Clear the "inserted" flag in all breakpoints and delete any
3717    breakpoints which should go away between runs of the program.
3718
3719    Plus other such housekeeping that has to be done for breakpoints
3720    between runs.
3721
3722    Note: this function gets called at the end of a run (by
3723    generic_mourn_inferior) and when a run begins (by
3724    init_wait_for_inferior).  */
3725
3726
3727
3728 void
3729 breakpoint_init_inferior (enum inf_context context)
3730 {
3731   struct breakpoint *b, *b_tmp;
3732   struct bp_location *bl, **blp_tmp;
3733   int ix;
3734   struct program_space *pspace = current_program_space;
3735
3736   /* If breakpoint locations are shared across processes, then there's
3737      nothing to do.  */
3738   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3739     return;
3740
3741   ALL_BP_LOCATIONS (bl, blp_tmp)
3742   {
3743     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3744     if (bl->pspace == pspace
3745         && bl->owner->enable_state != bp_permanent)
3746       bl->inserted = 0;
3747   }
3748
3749   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3750   {
3751     if (b->loc && b->loc->pspace != pspace)
3752       continue;
3753
3754     switch (b->type)
3755       {
3756       case bp_call_dummy:
3757       case bp_longjmp_call_dummy:
3758
3759         /* If the call dummy breakpoint is at the entry point it will
3760            cause problems when the inferior is rerun, so we better get
3761            rid of it.  */
3762
3763       case bp_watchpoint_scope:
3764
3765         /* Also get rid of scope breakpoints.  */
3766
3767       case bp_shlib_event:
3768
3769         /* Also remove solib event breakpoints.  Their addresses may
3770            have changed since the last time we ran the program.
3771            Actually we may now be debugging against different target;
3772            and so the solib backend that installed this breakpoint may
3773            not be used in by the target.  E.g.,
3774
3775            (gdb) file prog-linux
3776            (gdb) run               # native linux target
3777            ...
3778            (gdb) kill
3779            (gdb) file prog-win.exe
3780            (gdb) tar rem :9999     # remote Windows gdbserver.
3781         */
3782
3783       case bp_step_resume:
3784
3785         /* Also remove step-resume breakpoints.  */
3786
3787         delete_breakpoint (b);
3788         break;
3789
3790       case bp_watchpoint:
3791       case bp_hardware_watchpoint:
3792       case bp_read_watchpoint:
3793       case bp_access_watchpoint:
3794         {
3795           struct watchpoint *w = (struct watchpoint *) b;
3796
3797           /* Likewise for watchpoints on local expressions.  */
3798           if (w->exp_valid_block != NULL)
3799             delete_breakpoint (b);
3800           else if (context == inf_starting)
3801             {
3802               /* Reset val field to force reread of starting value in
3803                  insert_breakpoints.  */
3804               if (w->val)
3805                 value_free (w->val);
3806               w->val = NULL;
3807               w->val_valid = 0;
3808           }
3809         }
3810         break;
3811       default:
3812         break;
3813       }
3814   }
3815
3816   /* Get rid of the moribund locations.  */
3817   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3818     decref_bp_location (&bl);
3819   VEC_free (bp_location_p, moribund_locations);
3820 }
3821
3822 /* These functions concern about actual breakpoints inserted in the
3823    target --- to e.g. check if we need to do decr_pc adjustment or if
3824    we need to hop over the bkpt --- so we check for address space
3825    match, not program space.  */
3826
3827 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3828    exists at PC.  It returns ordinary_breakpoint_here if it's an
3829    ordinary breakpoint, or permanent_breakpoint_here if it's a
3830    permanent breakpoint.
3831    - When continuing from a location with an ordinary breakpoint, we
3832      actually single step once before calling insert_breakpoints.
3833    - When continuing from a location with a permanent breakpoint, we
3834      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3835      the target, to advance the PC past the breakpoint.  */
3836
3837 enum breakpoint_here
3838 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3839 {
3840   struct bp_location *bl, **blp_tmp;
3841   int any_breakpoint_here = 0;
3842
3843   ALL_BP_LOCATIONS (bl, blp_tmp)
3844     {
3845       if (bl->loc_type != bp_loc_software_breakpoint
3846           && bl->loc_type != bp_loc_hardware_breakpoint)
3847         continue;
3848
3849       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3850       if ((breakpoint_enabled (bl->owner)
3851            || bl->owner->enable_state == bp_permanent)
3852           && breakpoint_location_address_match (bl, aspace, pc))
3853         {
3854           if (overlay_debugging 
3855               && section_is_overlay (bl->section)
3856               && !section_is_mapped (bl->section))
3857             continue;           /* unmapped overlay -- can't be a match */
3858           else if (bl->owner->enable_state == bp_permanent)
3859             return permanent_breakpoint_here;
3860           else
3861             any_breakpoint_here = 1;
3862         }
3863     }
3864
3865   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3866 }
3867
3868 /* Return true if there's a moribund breakpoint at PC.  */
3869
3870 int
3871 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3872 {
3873   struct bp_location *loc;
3874   int ix;
3875
3876   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3877     if (breakpoint_location_address_match (loc, aspace, pc))
3878       return 1;
3879
3880   return 0;
3881 }
3882
3883 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3884    inserted using regular breakpoint_chain / bp_location array
3885    mechanism.  This does not check for single-step breakpoints, which
3886    are inserted and removed using direct target manipulation.  */
3887
3888 int
3889 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3890                                     CORE_ADDR pc)
3891 {
3892   struct bp_location *bl, **blp_tmp;
3893
3894   ALL_BP_LOCATIONS (bl, blp_tmp)
3895     {
3896       if (bl->loc_type != bp_loc_software_breakpoint
3897           && bl->loc_type != bp_loc_hardware_breakpoint)
3898         continue;
3899
3900       if (bl->inserted
3901           && breakpoint_location_address_match (bl, aspace, pc))
3902         {
3903           if (overlay_debugging 
3904               && section_is_overlay (bl->section)
3905               && !section_is_mapped (bl->section))
3906             continue;           /* unmapped overlay -- can't be a match */
3907           else
3908             return 1;
3909         }
3910     }
3911   return 0;
3912 }
3913
3914 /* Returns non-zero iff there's either regular breakpoint
3915    or a single step breakpoint inserted at PC.  */
3916
3917 int
3918 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3919 {
3920   if (regular_breakpoint_inserted_here_p (aspace, pc))
3921     return 1;
3922
3923   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3924     return 1;
3925
3926   return 0;
3927 }
3928
3929 /* This function returns non-zero iff there is a software breakpoint
3930    inserted at PC.  */
3931
3932 int
3933 software_breakpoint_inserted_here_p (struct address_space *aspace,
3934                                      CORE_ADDR pc)
3935 {
3936   struct bp_location *bl, **blp_tmp;
3937
3938   ALL_BP_LOCATIONS (bl, blp_tmp)
3939     {
3940       if (bl->loc_type != bp_loc_software_breakpoint)
3941         continue;
3942
3943       if (bl->inserted
3944           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3945                                        aspace, pc))
3946         {
3947           if (overlay_debugging 
3948               && section_is_overlay (bl->section)
3949               && !section_is_mapped (bl->section))
3950             continue;           /* unmapped overlay -- can't be a match */
3951           else
3952             return 1;
3953         }
3954     }
3955
3956   /* Also check for software single-step breakpoints.  */
3957   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3958     return 1;
3959
3960   return 0;
3961 }
3962
3963 int
3964 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3965                                        CORE_ADDR addr, ULONGEST len)
3966 {
3967   struct breakpoint *bpt;
3968
3969   ALL_BREAKPOINTS (bpt)
3970     {
3971       struct bp_location *loc;
3972
3973       if (bpt->type != bp_hardware_watchpoint
3974           && bpt->type != bp_access_watchpoint)
3975         continue;
3976
3977       if (!breakpoint_enabled (bpt))
3978         continue;
3979
3980       for (loc = bpt->loc; loc; loc = loc->next)
3981         if (loc->pspace->aspace == aspace && loc->inserted)
3982           {
3983             CORE_ADDR l, h;
3984
3985             /* Check for intersection.  */
3986             l = max (loc->address, addr);
3987             h = min (loc->address + loc->length, addr + len);
3988             if (l < h)
3989               return 1;
3990           }
3991     }
3992   return 0;
3993 }
3994
3995 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3996    PC is valid for process/thread PTID.  */
3997
3998 int
3999 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4000                          ptid_t ptid)
4001 {
4002   struct bp_location *bl, **blp_tmp;
4003   /* The thread and task IDs associated to PTID, computed lazily.  */
4004   int thread = -1;
4005   int task = 0;
4006   
4007   ALL_BP_LOCATIONS (bl, blp_tmp)
4008     {
4009       if (bl->loc_type != bp_loc_software_breakpoint
4010           && bl->loc_type != bp_loc_hardware_breakpoint)
4011         continue;
4012
4013       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4014       if (!breakpoint_enabled (bl->owner)
4015           && bl->owner->enable_state != bp_permanent)
4016         continue;
4017
4018       if (!breakpoint_location_address_match (bl, aspace, pc))
4019         continue;
4020
4021       if (bl->owner->thread != -1)
4022         {
4023           /* This is a thread-specific breakpoint.  Check that ptid
4024              matches that thread.  If thread hasn't been computed yet,
4025              it is now time to do so.  */
4026           if (thread == -1)
4027             thread = pid_to_thread_id (ptid);
4028           if (bl->owner->thread != thread)
4029             continue;
4030         }
4031
4032       if (bl->owner->task != 0)
4033         {
4034           /* This is a task-specific breakpoint.  Check that ptid
4035              matches that task.  If task hasn't been computed yet,
4036              it is now time to do so.  */
4037           if (task == 0)
4038             task = ada_get_task_number (ptid);
4039           if (bl->owner->task != task)
4040             continue;
4041         }
4042
4043       if (overlay_debugging 
4044           && section_is_overlay (bl->section)
4045           && !section_is_mapped (bl->section))
4046         continue;           /* unmapped overlay -- can't be a match */
4047
4048       return 1;
4049     }
4050
4051   return 0;
4052 }
4053 \f
4054
4055 /* bpstat stuff.  External routines' interfaces are documented
4056    in breakpoint.h.  */
4057
4058 int
4059 is_catchpoint (struct breakpoint *ep)
4060 {
4061   return (ep->type == bp_catchpoint);
4062 }
4063
4064 /* Frees any storage that is part of a bpstat.  Does not walk the
4065    'next' chain.  */
4066
4067 static void
4068 bpstat_free (bpstat bs)
4069 {
4070   if (bs->old_val != NULL)
4071     value_free (bs->old_val);
4072   decref_counted_command_line (&bs->commands);
4073   decref_bp_location (&bs->bp_location_at);
4074   xfree (bs);
4075 }
4076
4077 /* Clear a bpstat so that it says we are not at any breakpoint.
4078    Also free any storage that is part of a bpstat.  */
4079
4080 void
4081 bpstat_clear (bpstat *bsp)
4082 {
4083   bpstat p;
4084   bpstat q;
4085
4086   if (bsp == 0)
4087     return;
4088   p = *bsp;
4089   while (p != NULL)
4090     {
4091       q = p->next;
4092       bpstat_free (p);
4093       p = q;
4094     }
4095   *bsp = NULL;
4096 }
4097
4098 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4099    is part of the bpstat is copied as well.  */
4100
4101 bpstat
4102 bpstat_copy (bpstat bs)
4103 {
4104   bpstat p = NULL;
4105   bpstat tmp;
4106   bpstat retval = NULL;
4107
4108   if (bs == NULL)
4109     return bs;
4110
4111   for (; bs != NULL; bs = bs->next)
4112     {
4113       tmp = (bpstat) xmalloc (sizeof (*tmp));
4114       memcpy (tmp, bs, sizeof (*tmp));
4115       incref_counted_command_line (tmp->commands);
4116       incref_bp_location (tmp->bp_location_at);
4117       if (bs->old_val != NULL)
4118         {
4119           tmp->old_val = value_copy (bs->old_val);
4120           release_value (tmp->old_val);
4121         }
4122
4123       if (p == NULL)
4124         /* This is the first thing in the chain.  */
4125         retval = tmp;
4126       else
4127         p->next = tmp;
4128       p = tmp;
4129     }
4130   p->next = NULL;
4131   return retval;
4132 }
4133
4134 /* Find the bpstat associated with this breakpoint.  */
4135
4136 bpstat
4137 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4138 {
4139   if (bsp == NULL)
4140     return NULL;
4141
4142   for (; bsp != NULL; bsp = bsp->next)
4143     {
4144       if (bsp->breakpoint_at == breakpoint)
4145         return bsp;
4146     }
4147   return NULL;
4148 }
4149
4150 /* See breakpoint.h.  */
4151
4152 enum bpstat_signal_value
4153 bpstat_explains_signal (bpstat bsp)
4154 {
4155   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4156
4157   for (; bsp != NULL; bsp = bsp->next)
4158     {
4159       /* Ensure that, if we ever entered this loop, then we at least
4160          return BPSTAT_SIGNAL_HIDE.  */
4161       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4162
4163       if (bsp->breakpoint_at != NULL)
4164         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4165
4166       if (newval > result)
4167         result = newval;
4168     }
4169
4170   return result;
4171 }
4172
4173 /* Put in *NUM the breakpoint number of the first breakpoint we are
4174    stopped at.  *BSP upon return is a bpstat which points to the
4175    remaining breakpoints stopped at (but which is not guaranteed to be
4176    good for anything but further calls to bpstat_num).
4177
4178    Return 0 if passed a bpstat which does not indicate any breakpoints.
4179    Return -1 if stopped at a breakpoint that has been deleted since
4180    we set it.
4181    Return 1 otherwise.  */
4182
4183 int
4184 bpstat_num (bpstat *bsp, int *num)
4185 {
4186   struct breakpoint *b;
4187
4188   if ((*bsp) == NULL)
4189     return 0;                   /* No more breakpoint values */
4190
4191   /* We assume we'll never have several bpstats that correspond to a
4192      single breakpoint -- otherwise, this function might return the
4193      same number more than once and this will look ugly.  */
4194   b = (*bsp)->breakpoint_at;
4195   *bsp = (*bsp)->next;
4196   if (b == NULL)
4197     return -1;                  /* breakpoint that's been deleted since */
4198
4199   *num = b->number;             /* We have its number */
4200   return 1;
4201 }
4202
4203 /* See breakpoint.h.  */
4204
4205 void
4206 bpstat_clear_actions (void)
4207 {
4208   struct thread_info *tp;
4209   bpstat bs;
4210
4211   if (ptid_equal (inferior_ptid, null_ptid))
4212     return;
4213
4214   tp = find_thread_ptid (inferior_ptid);
4215   if (tp == NULL)
4216     return;
4217
4218   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4219     {
4220       decref_counted_command_line (&bs->commands);
4221
4222       if (bs->old_val != NULL)
4223         {
4224           value_free (bs->old_val);
4225           bs->old_val = NULL;
4226         }
4227     }
4228 }
4229
4230 /* Called when a command is about to proceed the inferior.  */
4231
4232 static void
4233 breakpoint_about_to_proceed (void)
4234 {
4235   if (!ptid_equal (inferior_ptid, null_ptid))
4236     {
4237       struct thread_info *tp = inferior_thread ();
4238
4239       /* Allow inferior function calls in breakpoint commands to not
4240          interrupt the command list.  When the call finishes
4241          successfully, the inferior will be standing at the same
4242          breakpoint as if nothing happened.  */
4243       if (tp->control.in_infcall)
4244         return;
4245     }
4246
4247   breakpoint_proceeded = 1;
4248 }
4249
4250 /* Stub for cleaning up our state if we error-out of a breakpoint
4251    command.  */
4252 static void
4253 cleanup_executing_breakpoints (void *ignore)
4254 {
4255   executing_breakpoint_commands = 0;
4256 }
4257
4258 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4259    or its equivalent.  */
4260
4261 static int
4262 command_line_is_silent (struct command_line *cmd)
4263 {
4264   return cmd && (strcmp ("silent", cmd->line) == 0
4265                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4266 }
4267
4268 /* Execute all the commands associated with all the breakpoints at
4269    this location.  Any of these commands could cause the process to
4270    proceed beyond this point, etc.  We look out for such changes by
4271    checking the global "breakpoint_proceeded" after each command.
4272
4273    Returns true if a breakpoint command resumed the inferior.  In that
4274    case, it is the caller's responsibility to recall it again with the
4275    bpstat of the current thread.  */
4276
4277 static int
4278 bpstat_do_actions_1 (bpstat *bsp)
4279 {
4280   bpstat bs;
4281   struct cleanup *old_chain;
4282   int again = 0;
4283
4284   /* Avoid endless recursion if a `source' command is contained
4285      in bs->commands.  */
4286   if (executing_breakpoint_commands)
4287     return 0;
4288
4289   executing_breakpoint_commands = 1;
4290   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4291
4292   prevent_dont_repeat ();
4293
4294   /* This pointer will iterate over the list of bpstat's.  */
4295   bs = *bsp;
4296
4297   breakpoint_proceeded = 0;
4298   for (; bs != NULL; bs = bs->next)
4299     {
4300       struct counted_command_line *ccmd;
4301       struct command_line *cmd;
4302       struct cleanup *this_cmd_tree_chain;
4303
4304       /* Take ownership of the BSP's command tree, if it has one.
4305
4306          The command tree could legitimately contain commands like
4307          'step' and 'next', which call clear_proceed_status, which
4308          frees stop_bpstat's command tree.  To make sure this doesn't
4309          free the tree we're executing out from under us, we need to
4310          take ownership of the tree ourselves.  Since a given bpstat's
4311          commands are only executed once, we don't need to copy it; we
4312          can clear the pointer in the bpstat, and make sure we free
4313          the tree when we're done.  */
4314       ccmd = bs->commands;
4315       bs->commands = NULL;
4316       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4317       cmd = ccmd ? ccmd->commands : NULL;
4318       if (command_line_is_silent (cmd))
4319         {
4320           /* The action has been already done by bpstat_stop_status.  */
4321           cmd = cmd->next;
4322         }
4323
4324       while (cmd != NULL)
4325         {
4326           execute_control_command (cmd);
4327
4328           if (breakpoint_proceeded)
4329             break;
4330           else
4331             cmd = cmd->next;
4332         }
4333
4334       /* We can free this command tree now.  */
4335       do_cleanups (this_cmd_tree_chain);
4336
4337       if (breakpoint_proceeded)
4338         {
4339           if (target_can_async_p ())
4340             /* If we are in async mode, then the target might be still
4341                running, not stopped at any breakpoint, so nothing for
4342                us to do here -- just return to the event loop.  */
4343             ;
4344           else
4345             /* In sync mode, when execute_control_command returns
4346                we're already standing on the next breakpoint.
4347                Breakpoint commands for that stop were not run, since
4348                execute_command does not run breakpoint commands --
4349                only command_line_handler does, but that one is not
4350                involved in execution of breakpoint commands.  So, we
4351                can now execute breakpoint commands.  It should be
4352                noted that making execute_command do bpstat actions is
4353                not an option -- in this case we'll have recursive
4354                invocation of bpstat for each breakpoint with a
4355                command, and can easily blow up GDB stack.  Instead, we
4356                return true, which will trigger the caller to recall us
4357                with the new stop_bpstat.  */
4358             again = 1;
4359           break;
4360         }
4361     }
4362   do_cleanups (old_chain);
4363   return again;
4364 }
4365
4366 void
4367 bpstat_do_actions (void)
4368 {
4369   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4370
4371   /* Do any commands attached to breakpoint we are stopped at.  */
4372   while (!ptid_equal (inferior_ptid, null_ptid)
4373          && target_has_execution
4374          && !is_exited (inferior_ptid)
4375          && !is_executing (inferior_ptid))
4376     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4377        and only return when it is stopped at the next breakpoint, we
4378        keep doing breakpoint actions until it returns false to
4379        indicate the inferior was not resumed.  */
4380     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4381       break;
4382
4383   discard_cleanups (cleanup_if_error);
4384 }
4385
4386 /* Print out the (old or new) value associated with a watchpoint.  */
4387
4388 static void
4389 watchpoint_value_print (struct value *val, struct ui_file *stream)
4390 {
4391   if (val == NULL)
4392     fprintf_unfiltered (stream, _("<unreadable>"));
4393   else
4394     {
4395       struct value_print_options opts;
4396       get_user_print_options (&opts);
4397       value_print (val, stream, &opts);
4398     }
4399 }
4400
4401 /* Generic routine for printing messages indicating why we
4402    stopped.  The behavior of this function depends on the value
4403    'print_it' in the bpstat structure.  Under some circumstances we
4404    may decide not to print anything here and delegate the task to
4405    normal_stop().  */
4406
4407 static enum print_stop_action
4408 print_bp_stop_message (bpstat bs)
4409 {
4410   switch (bs->print_it)
4411     {
4412     case print_it_noop:
4413       /* Nothing should be printed for this bpstat entry.  */
4414       return PRINT_UNKNOWN;
4415       break;
4416
4417     case print_it_done:
4418       /* We still want to print the frame, but we already printed the
4419          relevant messages.  */
4420       return PRINT_SRC_AND_LOC;
4421       break;
4422
4423     case print_it_normal:
4424       {
4425         struct breakpoint *b = bs->breakpoint_at;
4426
4427         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4428            which has since been deleted.  */
4429         if (b == NULL)
4430           return PRINT_UNKNOWN;
4431
4432         /* Normal case.  Call the breakpoint's print_it method.  */
4433         return b->ops->print_it (bs);
4434       }
4435       break;
4436
4437     default:
4438       internal_error (__FILE__, __LINE__,
4439                       _("print_bp_stop_message: unrecognized enum value"));
4440       break;
4441     }
4442 }
4443
4444 /* A helper function that prints a shared library stopped event.  */
4445
4446 static void
4447 print_solib_event (int is_catchpoint)
4448 {
4449   int any_deleted
4450     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4451   int any_added
4452     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4453
4454   if (!is_catchpoint)
4455     {
4456       if (any_added || any_deleted)
4457         ui_out_text (current_uiout,
4458                      _("Stopped due to shared library event:\n"));
4459       else
4460         ui_out_text (current_uiout,
4461                      _("Stopped due to shared library event (no "
4462                        "libraries added or removed)\n"));
4463     }
4464
4465   if (ui_out_is_mi_like_p (current_uiout))
4466     ui_out_field_string (current_uiout, "reason",
4467                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4468
4469   if (any_deleted)
4470     {
4471       struct cleanup *cleanup;
4472       char *name;
4473       int ix;
4474
4475       ui_out_text (current_uiout, _("  Inferior unloaded "));
4476       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4477                                                     "removed");
4478       for (ix = 0;
4479            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4480                         ix, name);
4481            ++ix)
4482         {
4483           if (ix > 0)
4484             ui_out_text (current_uiout, "    ");
4485           ui_out_field_string (current_uiout, "library", name);
4486           ui_out_text (current_uiout, "\n");
4487         }
4488
4489       do_cleanups (cleanup);
4490     }
4491
4492   if (any_added)
4493     {
4494       struct so_list *iter;
4495       int ix;
4496       struct cleanup *cleanup;
4497
4498       ui_out_text (current_uiout, _("  Inferior loaded "));
4499       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4500                                                     "added");
4501       for (ix = 0;
4502            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4503                         ix, iter);
4504            ++ix)
4505         {
4506           if (ix > 0)
4507             ui_out_text (current_uiout, "    ");
4508           ui_out_field_string (current_uiout, "library", iter->so_name);
4509           ui_out_text (current_uiout, "\n");
4510         }
4511
4512       do_cleanups (cleanup);
4513     }
4514 }
4515
4516 /* Print a message indicating what happened.  This is called from
4517    normal_stop().  The input to this routine is the head of the bpstat
4518    list - a list of the eventpoints that caused this stop.  KIND is
4519    the target_waitkind for the stopping event.  This
4520    routine calls the generic print routine for printing a message
4521    about reasons for stopping.  This will print (for example) the
4522    "Breakpoint n," part of the output.  The return value of this
4523    routine is one of:
4524
4525    PRINT_UNKNOWN: Means we printed nothing.
4526    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4527    code to print the location.  An example is 
4528    "Breakpoint 1, " which should be followed by
4529    the location.
4530    PRINT_SRC_ONLY: Means we printed something, but there is no need
4531    to also print the location part of the message.
4532    An example is the catch/throw messages, which
4533    don't require a location appended to the end.
4534    PRINT_NOTHING: We have done some printing and we don't need any 
4535    further info to be printed.  */
4536
4537 enum print_stop_action
4538 bpstat_print (bpstat bs, int kind)
4539 {
4540   int val;
4541
4542   /* Maybe another breakpoint in the chain caused us to stop.
4543      (Currently all watchpoints go on the bpstat whether hit or not.
4544      That probably could (should) be changed, provided care is taken
4545      with respect to bpstat_explains_signal).  */
4546   for (; bs; bs = bs->next)
4547     {
4548       val = print_bp_stop_message (bs);
4549       if (val == PRINT_SRC_ONLY 
4550           || val == PRINT_SRC_AND_LOC 
4551           || val == PRINT_NOTHING)
4552         return val;
4553     }
4554
4555   /* If we had hit a shared library event breakpoint,
4556      print_bp_stop_message would print out this message.  If we hit an
4557      OS-level shared library event, do the same thing.  */
4558   if (kind == TARGET_WAITKIND_LOADED)
4559     {
4560       print_solib_event (0);
4561       return PRINT_NOTHING;
4562     }
4563
4564   /* We reached the end of the chain, or we got a null BS to start
4565      with and nothing was printed.  */
4566   return PRINT_UNKNOWN;
4567 }
4568
4569 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4570    used inside a catch_errors to evaluate the breakpoint condition.
4571    The argument is a "struct expression *" that has been cast to a
4572    "char *" to make it pass through catch_errors.  */
4573
4574 static int
4575 breakpoint_cond_eval (void *exp)
4576 {
4577   struct value *mark = value_mark ();
4578   int i = !value_true (evaluate_expression ((struct expression *) exp));
4579
4580   value_free_to_mark (mark);
4581   return i;
4582 }
4583
4584 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4585
4586 static bpstat
4587 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4588 {
4589   bpstat bs;
4590
4591   bs = (bpstat) xmalloc (sizeof (*bs));
4592   bs->next = NULL;
4593   **bs_link_pointer = bs;
4594   *bs_link_pointer = &bs->next;
4595   bs->breakpoint_at = bl->owner;
4596   bs->bp_location_at = bl;
4597   incref_bp_location (bl);
4598   /* If the condition is false, etc., don't do the commands.  */
4599   bs->commands = NULL;
4600   bs->old_val = NULL;
4601   bs->print_it = print_it_normal;
4602   return bs;
4603 }
4604 \f
4605 /* The target has stopped with waitstatus WS.  Check if any hardware
4606    watchpoints have triggered, according to the target.  */
4607
4608 int
4609 watchpoints_triggered (struct target_waitstatus *ws)
4610 {
4611   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4612   CORE_ADDR addr;
4613   struct breakpoint *b;
4614
4615   if (!stopped_by_watchpoint)
4616     {
4617       /* We were not stopped by a watchpoint.  Mark all watchpoints
4618          as not triggered.  */
4619       ALL_BREAKPOINTS (b)
4620         if (is_hardware_watchpoint (b))
4621           {
4622             struct watchpoint *w = (struct watchpoint *) b;
4623
4624             w->watchpoint_triggered = watch_triggered_no;
4625           }
4626
4627       return 0;
4628     }
4629
4630   if (!target_stopped_data_address (&current_target, &addr))
4631     {
4632       /* We were stopped by a watchpoint, but we don't know where.
4633          Mark all watchpoints as unknown.  */
4634       ALL_BREAKPOINTS (b)
4635         if (is_hardware_watchpoint (b))
4636           {
4637             struct watchpoint *w = (struct watchpoint *) b;
4638
4639             w->watchpoint_triggered = watch_triggered_unknown;
4640           }
4641
4642       return stopped_by_watchpoint;
4643     }
4644
4645   /* The target could report the data address.  Mark watchpoints
4646      affected by this data address as triggered, and all others as not
4647      triggered.  */
4648
4649   ALL_BREAKPOINTS (b)
4650     if (is_hardware_watchpoint (b))
4651       {
4652         struct watchpoint *w = (struct watchpoint *) b;
4653         struct bp_location *loc;
4654
4655         w->watchpoint_triggered = watch_triggered_no;
4656         for (loc = b->loc; loc; loc = loc->next)
4657           {
4658             if (is_masked_watchpoint (b))
4659               {
4660                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4661                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4662
4663                 if (newaddr == start)
4664                   {
4665                     w->watchpoint_triggered = watch_triggered_yes;
4666                     break;
4667                   }
4668               }
4669             /* Exact match not required.  Within range is sufficient.  */
4670             else if (target_watchpoint_addr_within_range (&current_target,
4671                                                          addr, loc->address,
4672                                                          loc->length))
4673               {
4674                 w->watchpoint_triggered = watch_triggered_yes;
4675                 break;
4676               }
4677           }
4678       }
4679
4680   return 1;
4681 }
4682
4683 /* Possible return values for watchpoint_check (this can't be an enum
4684    because of check_errors).  */
4685 /* The watchpoint has been deleted.  */
4686 #define WP_DELETED 1
4687 /* The value has changed.  */
4688 #define WP_VALUE_CHANGED 2
4689 /* The value has not changed.  */
4690 #define WP_VALUE_NOT_CHANGED 3
4691 /* Ignore this watchpoint, no matter if the value changed or not.  */
4692 #define WP_IGNORE 4
4693
4694 #define BP_TEMPFLAG 1
4695 #define BP_HARDWAREFLAG 2
4696
4697 /* Evaluate watchpoint condition expression and check if its value
4698    changed.
4699
4700    P should be a pointer to struct bpstat, but is defined as a void *
4701    in order for this function to be usable with catch_errors.  */
4702
4703 static int
4704 watchpoint_check (void *p)
4705 {
4706   bpstat bs = (bpstat) p;
4707   struct watchpoint *b;
4708   struct frame_info *fr;
4709   int within_current_scope;
4710
4711   /* BS is built from an existing struct breakpoint.  */
4712   gdb_assert (bs->breakpoint_at != NULL);
4713   b = (struct watchpoint *) bs->breakpoint_at;
4714
4715   /* If this is a local watchpoint, we only want to check if the
4716      watchpoint frame is in scope if the current thread is the thread
4717      that was used to create the watchpoint.  */
4718   if (!watchpoint_in_thread_scope (b))
4719     return WP_IGNORE;
4720
4721   if (b->exp_valid_block == NULL)
4722     within_current_scope = 1;
4723   else
4724     {
4725       struct frame_info *frame = get_current_frame ();
4726       struct gdbarch *frame_arch = get_frame_arch (frame);
4727       CORE_ADDR frame_pc = get_frame_pc (frame);
4728
4729       /* in_function_epilogue_p() returns a non-zero value if we're
4730          still in the function but the stack frame has already been
4731          invalidated.  Since we can't rely on the values of local
4732          variables after the stack has been destroyed, we are treating
4733          the watchpoint in that state as `not changed' without further
4734          checking.  Don't mark watchpoints as changed if the current
4735          frame is in an epilogue - even if they are in some other
4736          frame, our view of the stack is likely to be wrong and
4737          frame_find_by_id could error out.  */
4738       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4739         return WP_IGNORE;
4740
4741       fr = frame_find_by_id (b->watchpoint_frame);
4742       within_current_scope = (fr != NULL);
4743
4744       /* If we've gotten confused in the unwinder, we might have
4745          returned a frame that can't describe this variable.  */
4746       if (within_current_scope)
4747         {
4748           struct symbol *function;
4749
4750           function = get_frame_function (fr);
4751           if (function == NULL
4752               || !contained_in (b->exp_valid_block,
4753                                 SYMBOL_BLOCK_VALUE (function)))
4754             within_current_scope = 0;
4755         }
4756
4757       if (within_current_scope)
4758         /* If we end up stopping, the current frame will get selected
4759            in normal_stop.  So this call to select_frame won't affect
4760            the user.  */
4761         select_frame (fr);
4762     }
4763
4764   if (within_current_scope)
4765     {
4766       /* We use value_{,free_to_}mark because it could be a *long*
4767          time before we return to the command level and call
4768          free_all_values.  We can't call free_all_values because we
4769          might be in the middle of evaluating a function call.  */
4770
4771       int pc = 0;
4772       struct value *mark;
4773       struct value *new_val;
4774
4775       if (is_masked_watchpoint (&b->base))
4776         /* Since we don't know the exact trigger address (from
4777            stopped_data_address), just tell the user we've triggered
4778            a mask watchpoint.  */
4779         return WP_VALUE_CHANGED;
4780
4781       mark = value_mark ();
4782       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4783
4784       /* We use value_equal_contents instead of value_equal because
4785          the latter coerces an array to a pointer, thus comparing just
4786          the address of the array instead of its contents.  This is
4787          not what we want.  */
4788       if ((b->val != NULL) != (new_val != NULL)
4789           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4790         {
4791           if (new_val != NULL)
4792             {
4793               release_value (new_val);
4794               value_free_to_mark (mark);
4795             }
4796           bs->old_val = b->val;
4797           b->val = new_val;
4798           b->val_valid = 1;
4799           return WP_VALUE_CHANGED;
4800         }
4801       else
4802         {
4803           /* Nothing changed.  */
4804           value_free_to_mark (mark);
4805           return WP_VALUE_NOT_CHANGED;
4806         }
4807     }
4808   else
4809     {
4810       struct ui_out *uiout = current_uiout;
4811
4812       /* This seems like the only logical thing to do because
4813          if we temporarily ignored the watchpoint, then when
4814          we reenter the block in which it is valid it contains
4815          garbage (in the case of a function, it may have two
4816          garbage values, one before and one after the prologue).
4817          So we can't even detect the first assignment to it and
4818          watch after that (since the garbage may or may not equal
4819          the first value assigned).  */
4820       /* We print all the stop information in
4821          breakpoint_ops->print_it, but in this case, by the time we
4822          call breakpoint_ops->print_it this bp will be deleted
4823          already.  So we have no choice but print the information
4824          here.  */
4825       if (ui_out_is_mi_like_p (uiout))
4826         ui_out_field_string
4827           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4828       ui_out_text (uiout, "\nWatchpoint ");
4829       ui_out_field_int (uiout, "wpnum", b->base.number);
4830       ui_out_text (uiout,
4831                    " deleted because the program has left the block in\n\
4832 which its expression is valid.\n");     
4833
4834       /* Make sure the watchpoint's commands aren't executed.  */
4835       decref_counted_command_line (&b->base.commands);
4836       watchpoint_del_at_next_stop (b);
4837
4838       return WP_DELETED;
4839     }
4840 }
4841
4842 /* Return true if it looks like target has stopped due to hitting
4843    breakpoint location BL.  This function does not check if we should
4844    stop, only if BL explains the stop.  */
4845
4846 static int
4847 bpstat_check_location (const struct bp_location *bl,
4848                        struct address_space *aspace, CORE_ADDR bp_addr,
4849                        const struct target_waitstatus *ws)
4850 {
4851   struct breakpoint *b = bl->owner;
4852
4853   /* BL is from an existing breakpoint.  */
4854   gdb_assert (b != NULL);
4855
4856   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4857 }
4858
4859 /* Determine if the watched values have actually changed, and we
4860    should stop.  If not, set BS->stop to 0.  */
4861
4862 static void
4863 bpstat_check_watchpoint (bpstat bs)
4864 {
4865   const struct bp_location *bl;
4866   struct watchpoint *b;
4867
4868   /* BS is built for existing struct breakpoint.  */
4869   bl = bs->bp_location_at;
4870   gdb_assert (bl != NULL);
4871   b = (struct watchpoint *) bs->breakpoint_at;
4872   gdb_assert (b != NULL);
4873
4874     {
4875       int must_check_value = 0;
4876       
4877       if (b->base.type == bp_watchpoint)
4878         /* For a software watchpoint, we must always check the
4879            watched value.  */
4880         must_check_value = 1;
4881       else if (b->watchpoint_triggered == watch_triggered_yes)
4882         /* We have a hardware watchpoint (read, write, or access)
4883            and the target earlier reported an address watched by
4884            this watchpoint.  */
4885         must_check_value = 1;
4886       else if (b->watchpoint_triggered == watch_triggered_unknown
4887                && b->base.type == bp_hardware_watchpoint)
4888         /* We were stopped by a hardware watchpoint, but the target could
4889            not report the data address.  We must check the watchpoint's
4890            value.  Access and read watchpoints are out of luck; without
4891            a data address, we can't figure it out.  */
4892         must_check_value = 1;
4893
4894       if (must_check_value)
4895         {
4896           char *message
4897             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4898                           b->base.number);
4899           struct cleanup *cleanups = make_cleanup (xfree, message);
4900           int e = catch_errors (watchpoint_check, bs, message,
4901                                 RETURN_MASK_ALL);
4902           do_cleanups (cleanups);
4903           switch (e)
4904             {
4905             case WP_DELETED:
4906               /* We've already printed what needs to be printed.  */
4907               bs->print_it = print_it_done;
4908               /* Stop.  */
4909               break;
4910             case WP_IGNORE:
4911               bs->print_it = print_it_noop;
4912               bs->stop = 0;
4913               break;
4914             case WP_VALUE_CHANGED:
4915               if (b->base.type == bp_read_watchpoint)
4916                 {
4917                   /* There are two cases to consider here:
4918
4919                      1. We're watching the triggered memory for reads.
4920                      In that case, trust the target, and always report
4921                      the watchpoint hit to the user.  Even though
4922                      reads don't cause value changes, the value may
4923                      have changed since the last time it was read, and
4924                      since we're not trapping writes, we will not see
4925                      those, and as such we should ignore our notion of
4926                      old value.
4927
4928                      2. We're watching the triggered memory for both
4929                      reads and writes.  There are two ways this may
4930                      happen:
4931
4932                      2.1. This is a target that can't break on data
4933                      reads only, but can break on accesses (reads or
4934                      writes), such as e.g., x86.  We detect this case
4935                      at the time we try to insert read watchpoints.
4936
4937                      2.2. Otherwise, the target supports read
4938                      watchpoints, but, the user set an access or write
4939                      watchpoint watching the same memory as this read
4940                      watchpoint.
4941
4942                      If we're watching memory writes as well as reads,
4943                      ignore watchpoint hits when we find that the
4944                      value hasn't changed, as reads don't cause
4945                      changes.  This still gives false positives when
4946                      the program writes the same value to memory as
4947                      what there was already in memory (we will confuse
4948                      it for a read), but it's much better than
4949                      nothing.  */
4950
4951                   int other_write_watchpoint = 0;
4952
4953                   if (bl->watchpoint_type == hw_read)
4954                     {
4955                       struct breakpoint *other_b;
4956
4957                       ALL_BREAKPOINTS (other_b)
4958                         if (other_b->type == bp_hardware_watchpoint
4959                             || other_b->type == bp_access_watchpoint)
4960                           {
4961                             struct watchpoint *other_w =
4962                               (struct watchpoint *) other_b;
4963
4964                             if (other_w->watchpoint_triggered
4965                                 == watch_triggered_yes)
4966                               {
4967                                 other_write_watchpoint = 1;
4968                                 break;
4969                               }
4970                           }
4971                     }
4972
4973                   if (other_write_watchpoint
4974                       || bl->watchpoint_type == hw_access)
4975                     {
4976                       /* We're watching the same memory for writes,
4977                          and the value changed since the last time we
4978                          updated it, so this trap must be for a write.
4979                          Ignore it.  */
4980                       bs->print_it = print_it_noop;
4981                       bs->stop = 0;
4982                     }
4983                 }
4984               break;
4985             case WP_VALUE_NOT_CHANGED:
4986               if (b->base.type == bp_hardware_watchpoint
4987                   || b->base.type == bp_watchpoint)
4988                 {
4989                   /* Don't stop: write watchpoints shouldn't fire if
4990                      the value hasn't changed.  */
4991                   bs->print_it = print_it_noop;
4992                   bs->stop = 0;
4993                 }
4994               /* Stop.  */
4995               break;
4996             default:
4997               /* Can't happen.  */
4998             case 0:
4999               /* Error from catch_errors.  */
5000               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5001               watchpoint_del_at_next_stop (b);
5002               /* We've already printed what needs to be printed.  */
5003               bs->print_it = print_it_done;
5004               break;
5005             }
5006         }
5007       else      /* must_check_value == 0 */
5008         {
5009           /* This is a case where some watchpoint(s) triggered, but
5010              not at the address of this watchpoint, or else no
5011              watchpoint triggered after all.  So don't print
5012              anything for this watchpoint.  */
5013           bs->print_it = print_it_noop;
5014           bs->stop = 0;
5015         }
5016     }
5017 }
5018
5019
5020 /* Check conditions (condition proper, frame, thread and ignore count)
5021    of breakpoint referred to by BS.  If we should not stop for this
5022    breakpoint, set BS->stop to 0.  */
5023
5024 static void
5025 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5026 {
5027   int thread_id = pid_to_thread_id (ptid);
5028   const struct bp_location *bl;
5029   struct breakpoint *b;
5030
5031   /* BS is built for existing struct breakpoint.  */
5032   bl = bs->bp_location_at;
5033   gdb_assert (bl != NULL);
5034   b = bs->breakpoint_at;
5035   gdb_assert (b != NULL);
5036
5037   /* Even if the target evaluated the condition on its end and notified GDB, we
5038      need to do so again since GDB does not know if we stopped due to a
5039      breakpoint or a single step breakpoint.  */
5040
5041   if (frame_id_p (b->frame_id)
5042       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5043     bs->stop = 0;
5044   else if (bs->stop)
5045     {
5046       int value_is_zero = 0;
5047       struct expression *cond;
5048
5049       /* Evaluate Python breakpoints that have a "stop"
5050          method implemented.  */
5051       if (b->py_bp_object)
5052         bs->stop = gdbpy_should_stop (b->py_bp_object);
5053
5054       if (is_watchpoint (b))
5055         {
5056           struct watchpoint *w = (struct watchpoint *) b;
5057
5058           cond = w->cond_exp;
5059         }
5060       else
5061         cond = bl->cond;
5062
5063       if (cond && b->disposition != disp_del_at_next_stop)
5064         {
5065           int within_current_scope = 1;
5066           struct watchpoint * w;
5067
5068           /* We use value_mark and value_free_to_mark because it could
5069              be a long time before we return to the command level and
5070              call free_all_values.  We can't call free_all_values
5071              because we might be in the middle of evaluating a
5072              function call.  */
5073           struct value *mark = value_mark ();
5074
5075           if (is_watchpoint (b))
5076             w = (struct watchpoint *) b;
5077           else
5078             w = NULL;
5079
5080           /* Need to select the frame, with all that implies so that
5081              the conditions will have the right context.  Because we
5082              use the frame, we will not see an inlined function's
5083              variables when we arrive at a breakpoint at the start
5084              of the inlined function; the current frame will be the
5085              call site.  */
5086           if (w == NULL || w->cond_exp_valid_block == NULL)
5087             select_frame (get_current_frame ());
5088           else
5089             {
5090               struct frame_info *frame;
5091
5092               /* For local watchpoint expressions, which particular
5093                  instance of a local is being watched matters, so we
5094                  keep track of the frame to evaluate the expression
5095                  in.  To evaluate the condition however, it doesn't
5096                  really matter which instantiation of the function
5097                  where the condition makes sense triggers the
5098                  watchpoint.  This allows an expression like "watch
5099                  global if q > 10" set in `func', catch writes to
5100                  global on all threads that call `func', or catch
5101                  writes on all recursive calls of `func' by a single
5102                  thread.  We simply always evaluate the condition in
5103                  the innermost frame that's executing where it makes
5104                  sense to evaluate the condition.  It seems
5105                  intuitive.  */
5106               frame = block_innermost_frame (w->cond_exp_valid_block);
5107               if (frame != NULL)
5108                 select_frame (frame);
5109               else
5110                 within_current_scope = 0;
5111             }
5112           if (within_current_scope)
5113             value_is_zero
5114               = catch_errors (breakpoint_cond_eval, cond,
5115                               "Error in testing breakpoint condition:\n",
5116                               RETURN_MASK_ALL);
5117           else
5118             {
5119               warning (_("Watchpoint condition cannot be tested "
5120                          "in the current scope"));
5121               /* If we failed to set the right context for this
5122                  watchpoint, unconditionally report it.  */
5123               value_is_zero = 0;
5124             }
5125           /* FIXME-someday, should give breakpoint #.  */
5126           value_free_to_mark (mark);
5127         }
5128
5129       if (cond && value_is_zero)
5130         {
5131           bs->stop = 0;
5132         }
5133       else if (b->thread != -1 && b->thread != thread_id)
5134         {
5135           bs->stop = 0;
5136         }
5137       else if (b->ignore_count > 0)
5138         {
5139           b->ignore_count--;
5140           bs->stop = 0;
5141           /* Increase the hit count even though we don't stop.  */
5142           ++(b->hit_count);
5143           observer_notify_breakpoint_modified (b);
5144         }       
5145     }
5146 }
5147
5148
5149 /* Get a bpstat associated with having just stopped at address
5150    BP_ADDR in thread PTID.
5151
5152    Determine whether we stopped at a breakpoint, etc, or whether we
5153    don't understand this stop.  Result is a chain of bpstat's such
5154    that:
5155
5156    if we don't understand the stop, the result is a null pointer.
5157
5158    if we understand why we stopped, the result is not null.
5159
5160    Each element of the chain refers to a particular breakpoint or
5161    watchpoint at which we have stopped.  (We may have stopped for
5162    several reasons concurrently.)
5163
5164    Each element of the chain has valid next, breakpoint_at,
5165    commands, FIXME??? fields.  */
5166
5167 bpstat
5168 bpstat_stop_status (struct address_space *aspace,
5169                     CORE_ADDR bp_addr, ptid_t ptid,
5170                     const struct target_waitstatus *ws)
5171 {
5172   struct breakpoint *b = NULL;
5173   struct bp_location *bl;
5174   struct bp_location *loc;
5175   /* First item of allocated bpstat's.  */
5176   bpstat bs_head = NULL, *bs_link = &bs_head;
5177   /* Pointer to the last thing in the chain currently.  */
5178   bpstat bs;
5179   int ix;
5180   int need_remove_insert;
5181   int removed_any;
5182
5183   /* First, build the bpstat chain with locations that explain a
5184      target stop, while being careful to not set the target running,
5185      as that may invalidate locations (in particular watchpoint
5186      locations are recreated).  Resuming will happen here with
5187      breakpoint conditions or watchpoint expressions that include
5188      inferior function calls.  */
5189
5190   ALL_BREAKPOINTS (b)
5191     {
5192       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5193         continue;
5194
5195       for (bl = b->loc; bl != NULL; bl = bl->next)
5196         {
5197           /* For hardware watchpoints, we look only at the first
5198              location.  The watchpoint_check function will work on the
5199              entire expression, not the individual locations.  For
5200              read watchpoints, the watchpoints_triggered function has
5201              checked all locations already.  */
5202           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5203             break;
5204
5205           if (!bl->enabled || bl->shlib_disabled)
5206             continue;
5207
5208           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5209             continue;
5210
5211           /* Come here if it's a watchpoint, or if the break address
5212              matches.  */
5213
5214           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5215                                                    explain stop.  */
5216
5217           /* Assume we stop.  Should we find a watchpoint that is not
5218              actually triggered, or if the condition of the breakpoint
5219              evaluates as false, we'll reset 'stop' to 0.  */
5220           bs->stop = 1;
5221           bs->print = 1;
5222
5223           /* If this is a scope breakpoint, mark the associated
5224              watchpoint as triggered so that we will handle the
5225              out-of-scope event.  We'll get to the watchpoint next
5226              iteration.  */
5227           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5228             {
5229               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5230
5231               w->watchpoint_triggered = watch_triggered_yes;
5232             }
5233         }
5234     }
5235
5236   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5237     {
5238       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5239         {
5240           bs = bpstat_alloc (loc, &bs_link);
5241           /* For hits of moribund locations, we should just proceed.  */
5242           bs->stop = 0;
5243           bs->print = 0;
5244           bs->print_it = print_it_noop;
5245         }
5246     }
5247
5248   /* A bit of special processing for shlib breakpoints.  We need to
5249      process solib loading here, so that the lists of loaded and
5250      unloaded libraries are correct before we handle "catch load" and
5251      "catch unload".  */
5252   for (bs = bs_head; bs != NULL; bs = bs->next)
5253     {
5254       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5255         {
5256           handle_solib_event ();
5257           break;
5258         }
5259     }
5260
5261   /* Now go through the locations that caused the target to stop, and
5262      check whether we're interested in reporting this stop to higher
5263      layers, or whether we should resume the target transparently.  */
5264
5265   removed_any = 0;
5266
5267   for (bs = bs_head; bs != NULL; bs = bs->next)
5268     {
5269       if (!bs->stop)
5270         continue;
5271
5272       b = bs->breakpoint_at;
5273       b->ops->check_status (bs);
5274       if (bs->stop)
5275         {
5276           bpstat_check_breakpoint_conditions (bs, ptid);
5277
5278           if (bs->stop)
5279             {
5280               ++(b->hit_count);
5281               observer_notify_breakpoint_modified (b);
5282
5283               /* We will stop here.  */
5284               if (b->disposition == disp_disable)
5285                 {
5286                   --(b->enable_count);
5287                   if (b->enable_count <= 0
5288                       && b->enable_state != bp_permanent)
5289                     b->enable_state = bp_disabled;
5290                   removed_any = 1;
5291                 }
5292               if (b->silent)
5293                 bs->print = 0;
5294               bs->commands = b->commands;
5295               incref_counted_command_line (bs->commands);
5296               if (command_line_is_silent (bs->commands
5297                                           ? bs->commands->commands : NULL))
5298                 bs->print = 0;
5299             }
5300
5301         }
5302
5303       /* Print nothing for this entry if we don't stop or don't
5304          print.  */
5305       if (!bs->stop || !bs->print)
5306         bs->print_it = print_it_noop;
5307     }
5308
5309   /* If we aren't stopping, the value of some hardware watchpoint may
5310      not have changed, but the intermediate memory locations we are
5311      watching may have.  Don't bother if we're stopping; this will get
5312      done later.  */
5313   need_remove_insert = 0;
5314   if (! bpstat_causes_stop (bs_head))
5315     for (bs = bs_head; bs != NULL; bs = bs->next)
5316       if (!bs->stop
5317           && bs->breakpoint_at
5318           && is_hardware_watchpoint (bs->breakpoint_at))
5319         {
5320           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5321
5322           update_watchpoint (w, 0 /* don't reparse.  */);
5323           need_remove_insert = 1;
5324         }
5325
5326   if (need_remove_insert)
5327     update_global_location_list (1);
5328   else if (removed_any)
5329     update_global_location_list (0);
5330
5331   return bs_head;
5332 }
5333
5334 static void
5335 handle_jit_event (void)
5336 {
5337   struct frame_info *frame;
5338   struct gdbarch *gdbarch;
5339
5340   /* Switch terminal for any messages produced by
5341      breakpoint_re_set.  */
5342   target_terminal_ours_for_output ();
5343
5344   frame = get_current_frame ();
5345   gdbarch = get_frame_arch (frame);
5346
5347   jit_event_handler (gdbarch);
5348
5349   target_terminal_inferior ();
5350 }
5351
5352 /* Handle an solib event by calling solib_add.  */
5353
5354 void
5355 handle_solib_event (void)
5356 {
5357   clear_program_space_solib_cache (current_inferior ()->pspace);
5358
5359   /* Check for any newly added shared libraries if we're supposed to
5360      be adding them automatically.  Switch terminal for any messages
5361      produced by breakpoint_re_set.  */
5362   target_terminal_ours_for_output ();
5363 #ifdef SOLIB_ADD
5364   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5365 #else
5366   solib_add (NULL, 0, &current_target, auto_solib_add);
5367 #endif
5368   target_terminal_inferior ();
5369 }
5370
5371 /* Prepare WHAT final decision for infrun.  */
5372
5373 /* Decide what infrun needs to do with this bpstat.  */
5374
5375 struct bpstat_what
5376 bpstat_what (bpstat bs_head)
5377 {
5378   struct bpstat_what retval;
5379   int jit_event = 0;
5380   bpstat bs;
5381
5382   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5383   retval.call_dummy = STOP_NONE;
5384   retval.is_longjmp = 0;
5385
5386   for (bs = bs_head; bs != NULL; bs = bs->next)
5387     {
5388       /* Extract this BS's action.  After processing each BS, we check
5389          if its action overrides all we've seem so far.  */
5390       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5391       enum bptype bptype;
5392
5393       if (bs->breakpoint_at == NULL)
5394         {
5395           /* I suspect this can happen if it was a momentary
5396              breakpoint which has since been deleted.  */
5397           bptype = bp_none;
5398         }
5399       else
5400         bptype = bs->breakpoint_at->type;
5401
5402       switch (bptype)
5403         {
5404         case bp_none:
5405           break;
5406         case bp_breakpoint:
5407         case bp_hardware_breakpoint:
5408         case bp_until:
5409         case bp_finish:
5410         case bp_shlib_event:
5411           if (bs->stop)
5412             {
5413               if (bs->print)
5414                 this_action = BPSTAT_WHAT_STOP_NOISY;
5415               else
5416                 this_action = BPSTAT_WHAT_STOP_SILENT;
5417             }
5418           else
5419             this_action = BPSTAT_WHAT_SINGLE;
5420           break;
5421         case bp_watchpoint:
5422         case bp_hardware_watchpoint:
5423         case bp_read_watchpoint:
5424         case bp_access_watchpoint:
5425           if (bs->stop)
5426             {
5427               if (bs->print)
5428                 this_action = BPSTAT_WHAT_STOP_NOISY;
5429               else
5430                 this_action = BPSTAT_WHAT_STOP_SILENT;
5431             }
5432           else
5433             {
5434               /* There was a watchpoint, but we're not stopping.
5435                  This requires no further action.  */
5436             }
5437           break;
5438         case bp_longjmp:
5439         case bp_longjmp_call_dummy:
5440         case bp_exception:
5441           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5442           retval.is_longjmp = bptype != bp_exception;
5443           break;
5444         case bp_longjmp_resume:
5445         case bp_exception_resume:
5446           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5447           retval.is_longjmp = bptype == bp_longjmp_resume;
5448           break;
5449         case bp_step_resume:
5450           if (bs->stop)
5451             this_action = BPSTAT_WHAT_STEP_RESUME;
5452           else
5453             {
5454               /* It is for the wrong frame.  */
5455               this_action = BPSTAT_WHAT_SINGLE;
5456             }
5457           break;
5458         case bp_hp_step_resume:
5459           if (bs->stop)
5460             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5461           else
5462             {
5463               /* It is for the wrong frame.  */
5464               this_action = BPSTAT_WHAT_SINGLE;
5465             }
5466           break;
5467         case bp_watchpoint_scope:
5468         case bp_thread_event:
5469         case bp_overlay_event:
5470         case bp_longjmp_master:
5471         case bp_std_terminate_master:
5472         case bp_exception_master:
5473           this_action = BPSTAT_WHAT_SINGLE;
5474           break;
5475         case bp_catchpoint:
5476           if (bs->stop)
5477             {
5478               if (bs->print)
5479                 this_action = BPSTAT_WHAT_STOP_NOISY;
5480               else
5481                 this_action = BPSTAT_WHAT_STOP_SILENT;
5482             }
5483           else
5484             {
5485               /* There was a catchpoint, but we're not stopping.
5486                  This requires no further action.  */
5487             }
5488           break;
5489         case bp_jit_event:
5490           jit_event = 1;
5491           this_action = BPSTAT_WHAT_SINGLE;
5492           break;
5493         case bp_call_dummy:
5494           /* Make sure the action is stop (silent or noisy),
5495              so infrun.c pops the dummy frame.  */
5496           retval.call_dummy = STOP_STACK_DUMMY;
5497           this_action = BPSTAT_WHAT_STOP_SILENT;
5498           break;
5499         case bp_std_terminate:
5500           /* Make sure the action is stop (silent or noisy),
5501              so infrun.c pops the dummy frame.  */
5502           retval.call_dummy = STOP_STD_TERMINATE;
5503           this_action = BPSTAT_WHAT_STOP_SILENT;
5504           break;
5505         case bp_tracepoint:
5506         case bp_fast_tracepoint:
5507         case bp_static_tracepoint:
5508           /* Tracepoint hits should not be reported back to GDB, and
5509              if one got through somehow, it should have been filtered
5510              out already.  */
5511           internal_error (__FILE__, __LINE__,
5512                           _("bpstat_what: tracepoint encountered"));
5513           break;
5514         case bp_gnu_ifunc_resolver:
5515           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5516           this_action = BPSTAT_WHAT_SINGLE;
5517           break;
5518         case bp_gnu_ifunc_resolver_return:
5519           /* The breakpoint will be removed, execution will restart from the
5520              PC of the former breakpoint.  */
5521           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5522           break;
5523
5524         case bp_dprintf:
5525           this_action = BPSTAT_WHAT_STOP_SILENT;
5526           break;
5527
5528         default:
5529           internal_error (__FILE__, __LINE__,
5530                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5531         }
5532
5533       retval.main_action = max (retval.main_action, this_action);
5534     }
5535
5536   /* These operations may affect the bs->breakpoint_at state so they are
5537      delayed after MAIN_ACTION is decided above.  */
5538
5539   if (jit_event)
5540     {
5541       if (debug_infrun)
5542         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5543
5544       handle_jit_event ();
5545     }
5546
5547   for (bs = bs_head; bs != NULL; bs = bs->next)
5548     {
5549       struct breakpoint *b = bs->breakpoint_at;
5550
5551       if (b == NULL)
5552         continue;
5553       switch (b->type)
5554         {
5555         case bp_gnu_ifunc_resolver:
5556           gnu_ifunc_resolver_stop (b);
5557           break;
5558         case bp_gnu_ifunc_resolver_return:
5559           gnu_ifunc_resolver_return_stop (b);
5560           break;
5561         }
5562     }
5563
5564   return retval;
5565 }
5566
5567 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5568    without hardware support).  This isn't related to a specific bpstat,
5569    just to things like whether watchpoints are set.  */
5570
5571 int
5572 bpstat_should_step (void)
5573 {
5574   struct breakpoint *b;
5575
5576   ALL_BREAKPOINTS (b)
5577     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5578       return 1;
5579   return 0;
5580 }
5581
5582 int
5583 bpstat_causes_stop (bpstat bs)
5584 {
5585   for (; bs != NULL; bs = bs->next)
5586     if (bs->stop)
5587       return 1;
5588
5589   return 0;
5590 }
5591
5592 \f
5593
5594 /* Compute a string of spaces suitable to indent the next line
5595    so it starts at the position corresponding to the table column
5596    named COL_NAME in the currently active table of UIOUT.  */
5597
5598 static char *
5599 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5600 {
5601   static char wrap_indent[80];
5602   int i, total_width, width, align;
5603   char *text;
5604
5605   total_width = 0;
5606   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5607     {
5608       if (strcmp (text, col_name) == 0)
5609         {
5610           gdb_assert (total_width < sizeof wrap_indent);
5611           memset (wrap_indent, ' ', total_width);
5612           wrap_indent[total_width] = 0;
5613
5614           return wrap_indent;
5615         }
5616
5617       total_width += width + 1;
5618     }
5619
5620   return NULL;
5621 }
5622
5623 /* Determine if the locations of this breakpoint will have their conditions
5624    evaluated by the target, host or a mix of both.  Returns the following:
5625
5626     "host": Host evals condition.
5627     "host or target": Host or Target evals condition.
5628     "target": Target evals condition.
5629 */
5630
5631 static const char *
5632 bp_condition_evaluator (struct breakpoint *b)
5633 {
5634   struct bp_location *bl;
5635   char host_evals = 0;
5636   char target_evals = 0;
5637
5638   if (!b)
5639     return NULL;
5640
5641   if (!is_breakpoint (b))
5642     return NULL;
5643
5644   if (gdb_evaluates_breakpoint_condition_p ()
5645       || !target_supports_evaluation_of_breakpoint_conditions ())
5646     return condition_evaluation_host;
5647
5648   for (bl = b->loc; bl; bl = bl->next)
5649     {
5650       if (bl->cond_bytecode)
5651         target_evals++;
5652       else
5653         host_evals++;
5654     }
5655
5656   if (host_evals && target_evals)
5657     return condition_evaluation_both;
5658   else if (target_evals)
5659     return condition_evaluation_target;
5660   else
5661     return condition_evaluation_host;
5662 }
5663
5664 /* Determine the breakpoint location's condition evaluator.  This is
5665    similar to bp_condition_evaluator, but for locations.  */
5666
5667 static const char *
5668 bp_location_condition_evaluator (struct bp_location *bl)
5669 {
5670   if (bl && !is_breakpoint (bl->owner))
5671     return NULL;
5672
5673   if (gdb_evaluates_breakpoint_condition_p ()
5674       || !target_supports_evaluation_of_breakpoint_conditions ())
5675     return condition_evaluation_host;
5676
5677   if (bl && bl->cond_bytecode)
5678     return condition_evaluation_target;
5679   else
5680     return condition_evaluation_host;
5681 }
5682
5683 /* Print the LOC location out of the list of B->LOC locations.  */
5684
5685 static void
5686 print_breakpoint_location (struct breakpoint *b,
5687                            struct bp_location *loc)
5688 {
5689   struct ui_out *uiout = current_uiout;
5690   struct cleanup *old_chain = save_current_program_space ();
5691
5692   if (loc != NULL && loc->shlib_disabled)
5693     loc = NULL;
5694
5695   if (loc != NULL)
5696     set_current_program_space (loc->pspace);
5697
5698   if (b->display_canonical)
5699     ui_out_field_string (uiout, "what", b->addr_string);
5700   else if (loc && loc->source_file)
5701     {
5702       struct symbol *sym 
5703         = find_pc_sect_function (loc->address, loc->section);
5704       if (sym)
5705         {
5706           ui_out_text (uiout, "in ");
5707           ui_out_field_string (uiout, "func",
5708                                SYMBOL_PRINT_NAME (sym));
5709           ui_out_text (uiout, " ");
5710           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5711           ui_out_text (uiout, "at ");
5712         }
5713       ui_out_field_string (uiout, "file", loc->source_file);
5714       ui_out_text (uiout, ":");
5715       
5716       if (ui_out_is_mi_like_p (uiout))
5717         {
5718           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5719           const char *fullname = symtab_to_fullname (sal.symtab);
5720           
5721           ui_out_field_string (uiout, "fullname", fullname);
5722         }
5723       
5724       ui_out_field_int (uiout, "line", loc->line_number);
5725     }
5726   else if (loc)
5727     {
5728       struct ui_file *stb = mem_fileopen ();
5729       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5730
5731       print_address_symbolic (loc->gdbarch, loc->address, stb,
5732                               demangle, "");
5733       ui_out_field_stream (uiout, "at", stb);
5734
5735       do_cleanups (stb_chain);
5736     }
5737   else
5738     ui_out_field_string (uiout, "pending", b->addr_string);
5739
5740   if (loc && is_breakpoint (b)
5741       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5742       && bp_condition_evaluator (b) == condition_evaluation_both)
5743     {
5744       ui_out_text (uiout, " (");
5745       ui_out_field_string (uiout, "evaluated-by",
5746                            bp_location_condition_evaluator (loc));
5747       ui_out_text (uiout, ")");
5748     }
5749
5750   do_cleanups (old_chain);
5751 }
5752
5753 static const char *
5754 bptype_string (enum bptype type)
5755 {
5756   struct ep_type_description
5757     {
5758       enum bptype type;
5759       char *description;
5760     };
5761   static struct ep_type_description bptypes[] =
5762   {
5763     {bp_none, "?deleted?"},
5764     {bp_breakpoint, "breakpoint"},
5765     {bp_hardware_breakpoint, "hw breakpoint"},
5766     {bp_until, "until"},
5767     {bp_finish, "finish"},
5768     {bp_watchpoint, "watchpoint"},
5769     {bp_hardware_watchpoint, "hw watchpoint"},
5770     {bp_read_watchpoint, "read watchpoint"},
5771     {bp_access_watchpoint, "acc watchpoint"},
5772     {bp_longjmp, "longjmp"},
5773     {bp_longjmp_resume, "longjmp resume"},
5774     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5775     {bp_exception, "exception"},
5776     {bp_exception_resume, "exception resume"},
5777     {bp_step_resume, "step resume"},
5778     {bp_hp_step_resume, "high-priority step resume"},
5779     {bp_watchpoint_scope, "watchpoint scope"},
5780     {bp_call_dummy, "call dummy"},
5781     {bp_std_terminate, "std::terminate"},
5782     {bp_shlib_event, "shlib events"},
5783     {bp_thread_event, "thread events"},
5784     {bp_overlay_event, "overlay events"},
5785     {bp_longjmp_master, "longjmp master"},
5786     {bp_std_terminate_master, "std::terminate master"},
5787     {bp_exception_master, "exception master"},
5788     {bp_catchpoint, "catchpoint"},
5789     {bp_tracepoint, "tracepoint"},
5790     {bp_fast_tracepoint, "fast tracepoint"},
5791     {bp_static_tracepoint, "static tracepoint"},
5792     {bp_dprintf, "dprintf"},
5793     {bp_jit_event, "jit events"},
5794     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5795     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5796   };
5797
5798   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5799       || ((int) type != bptypes[(int) type].type))
5800     internal_error (__FILE__, __LINE__,
5801                     _("bptypes table does not describe type #%d."),
5802                     (int) type);
5803
5804   return bptypes[(int) type].description;
5805 }
5806
5807 DEF_VEC_I(int);
5808
5809 /* For MI, output a field named 'thread-groups' with a list as the value.
5810    For CLI, prefix the list with the string 'inf'. */
5811
5812 static void
5813 output_thread_groups (struct ui_out *uiout,
5814                       const char *field_name,
5815                       VEC(int) *inf_num,
5816                       int mi_only)
5817 {
5818   struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
5819                                                                 field_name);
5820   int is_mi = ui_out_is_mi_like_p (uiout);
5821   int inf;
5822   int i;
5823
5824   /* For backward compatibility, don't display inferiors in CLI unless
5825      there are several.  Always display them for MI. */
5826   if (!is_mi && mi_only)
5827     return;
5828
5829   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5830     {
5831       if (is_mi)
5832         {
5833           char mi_group[10];
5834
5835           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5836           ui_out_field_string (uiout, NULL, mi_group);
5837         }
5838       else
5839         {
5840           if (i == 0)
5841             ui_out_text (uiout, " inf ");
5842           else
5843             ui_out_text (uiout, ", ");
5844         
5845           ui_out_text (uiout, plongest (inf));
5846         }
5847     }
5848
5849   do_cleanups (back_to);
5850 }
5851
5852 /* Print B to gdb_stdout.  */
5853
5854 static void
5855 print_one_breakpoint_location (struct breakpoint *b,
5856                                struct bp_location *loc,
5857                                int loc_number,
5858                                struct bp_location **last_loc,
5859                                int allflag)
5860 {
5861   struct command_line *l;
5862   static char bpenables[] = "nynny";
5863
5864   struct ui_out *uiout = current_uiout;
5865   int header_of_multiple = 0;
5866   int part_of_multiple = (loc != NULL);
5867   struct value_print_options opts;
5868
5869   get_user_print_options (&opts);
5870
5871   gdb_assert (!loc || loc_number != 0);
5872   /* See comment in print_one_breakpoint concerning treatment of
5873      breakpoints with single disabled location.  */
5874   if (loc == NULL 
5875       && (b->loc != NULL 
5876           && (b->loc->next != NULL || !b->loc->enabled)))
5877     header_of_multiple = 1;
5878   if (loc == NULL)
5879     loc = b->loc;
5880
5881   annotate_record ();
5882
5883   /* 1 */
5884   annotate_field (0);
5885   if (part_of_multiple)
5886     {
5887       char *formatted;
5888       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5889       ui_out_field_string (uiout, "number", formatted);
5890       xfree (formatted);
5891     }
5892   else
5893     {
5894       ui_out_field_int (uiout, "number", b->number);
5895     }
5896
5897   /* 2 */
5898   annotate_field (1);
5899   if (part_of_multiple)
5900     ui_out_field_skip (uiout, "type");
5901   else
5902     ui_out_field_string (uiout, "type", bptype_string (b->type));
5903
5904   /* 3 */
5905   annotate_field (2);
5906   if (part_of_multiple)
5907     ui_out_field_skip (uiout, "disp");
5908   else
5909     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5910
5911
5912   /* 4 */
5913   annotate_field (3);
5914   if (part_of_multiple)
5915     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5916   else
5917     ui_out_field_fmt (uiout, "enabled", "%c", 
5918                       bpenables[(int) b->enable_state]);
5919   ui_out_spaces (uiout, 2);
5920
5921   
5922   /* 5 and 6 */
5923   if (b->ops != NULL && b->ops->print_one != NULL)
5924     {
5925       /* Although the print_one can possibly print all locations,
5926          calling it here is not likely to get any nice result.  So,
5927          make sure there's just one location.  */
5928       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5929       b->ops->print_one (b, last_loc);
5930     }
5931   else
5932     switch (b->type)
5933       {
5934       case bp_none:
5935         internal_error (__FILE__, __LINE__,
5936                         _("print_one_breakpoint: bp_none encountered\n"));
5937         break;
5938
5939       case bp_watchpoint:
5940       case bp_hardware_watchpoint:
5941       case bp_read_watchpoint:
5942       case bp_access_watchpoint:
5943         {
5944           struct watchpoint *w = (struct watchpoint *) b;
5945
5946           /* Field 4, the address, is omitted (which makes the columns
5947              not line up too nicely with the headers, but the effect
5948              is relatively readable).  */
5949           if (opts.addressprint)
5950             ui_out_field_skip (uiout, "addr");
5951           annotate_field (5);
5952           ui_out_field_string (uiout, "what", w->exp_string);
5953         }
5954         break;
5955
5956       case bp_breakpoint:
5957       case bp_hardware_breakpoint:
5958       case bp_until:
5959       case bp_finish:
5960       case bp_longjmp:
5961       case bp_longjmp_resume:
5962       case bp_longjmp_call_dummy:
5963       case bp_exception:
5964       case bp_exception_resume:
5965       case bp_step_resume:
5966       case bp_hp_step_resume:
5967       case bp_watchpoint_scope:
5968       case bp_call_dummy:
5969       case bp_std_terminate:
5970       case bp_shlib_event:
5971       case bp_thread_event:
5972       case bp_overlay_event:
5973       case bp_longjmp_master:
5974       case bp_std_terminate_master:
5975       case bp_exception_master:
5976       case bp_tracepoint:
5977       case bp_fast_tracepoint:
5978       case bp_static_tracepoint:
5979       case bp_dprintf:
5980       case bp_jit_event:
5981       case bp_gnu_ifunc_resolver:
5982       case bp_gnu_ifunc_resolver_return:
5983         if (opts.addressprint)
5984           {
5985             annotate_field (4);
5986             if (header_of_multiple)
5987               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5988             else if (b->loc == NULL || loc->shlib_disabled)
5989               ui_out_field_string (uiout, "addr", "<PENDING>");
5990             else
5991               ui_out_field_core_addr (uiout, "addr",
5992                                       loc->gdbarch, loc->address);
5993           }
5994         annotate_field (5);
5995         if (!header_of_multiple)
5996           print_breakpoint_location (b, loc);
5997         if (b->loc)
5998           *last_loc = b->loc;
5999         break;
6000       }
6001
6002
6003   if (loc != NULL && !header_of_multiple)
6004     {
6005       struct inferior *inf;
6006       VEC(int) *inf_num = NULL;
6007       int mi_only = 1;
6008
6009       ALL_INFERIORS (inf)
6010         {
6011           if (inf->pspace == loc->pspace)
6012             VEC_safe_push (int, inf_num, inf->num);
6013         }
6014
6015         /* For backward compatibility, don't display inferiors in CLI unless
6016            there are several.  Always display for MI. */
6017         if (allflag
6018             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6019                 && (number_of_program_spaces () > 1
6020                     || number_of_inferiors () > 1)
6021                 /* LOC is for existing B, it cannot be in
6022                    moribund_locations and thus having NULL OWNER.  */
6023                 && loc->owner->type != bp_catchpoint))
6024         mi_only = 0;
6025       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6026       VEC_free (int, inf_num);
6027     }
6028
6029   if (!part_of_multiple)
6030     {
6031       if (b->thread != -1)
6032         {
6033           /* FIXME: This seems to be redundant and lost here; see the
6034              "stop only in" line a little further down.  */
6035           ui_out_text (uiout, " thread ");
6036           ui_out_field_int (uiout, "thread", b->thread);
6037         }
6038       else if (b->task != 0)
6039         {
6040           ui_out_text (uiout, " task ");
6041           ui_out_field_int (uiout, "task", b->task);
6042         }
6043     }
6044
6045   ui_out_text (uiout, "\n");
6046
6047   if (!part_of_multiple)
6048     b->ops->print_one_detail (b, uiout);
6049
6050   if (part_of_multiple && frame_id_p (b->frame_id))
6051     {
6052       annotate_field (6);
6053       ui_out_text (uiout, "\tstop only in stack frame at ");
6054       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6055          the frame ID.  */
6056       ui_out_field_core_addr (uiout, "frame",
6057                               b->gdbarch, b->frame_id.stack_addr);
6058       ui_out_text (uiout, "\n");
6059     }
6060   
6061   if (!part_of_multiple && b->cond_string)
6062     {
6063       annotate_field (7);
6064       if (is_tracepoint (b))
6065         ui_out_text (uiout, "\ttrace only if ");
6066       else
6067         ui_out_text (uiout, "\tstop only if ");
6068       ui_out_field_string (uiout, "cond", b->cond_string);
6069
6070       /* Print whether the target is doing the breakpoint's condition
6071          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6072       if (is_breakpoint (b)
6073           && breakpoint_condition_evaluation_mode ()
6074           == condition_evaluation_target)
6075         {
6076           ui_out_text (uiout, " (");
6077           ui_out_field_string (uiout, "evaluated-by",
6078                                bp_condition_evaluator (b));
6079           ui_out_text (uiout, " evals)");
6080         }
6081       ui_out_text (uiout, "\n");
6082     }
6083
6084   if (!part_of_multiple && b->thread != -1)
6085     {
6086       /* FIXME should make an annotation for this.  */
6087       ui_out_text (uiout, "\tstop only in thread ");
6088       ui_out_field_int (uiout, "thread", b->thread);
6089       ui_out_text (uiout, "\n");
6090     }
6091   
6092   if (!part_of_multiple)
6093     {
6094       if (b->hit_count)
6095         {
6096           /* FIXME should make an annotation for this.  */
6097           if (is_catchpoint (b))
6098             ui_out_text (uiout, "\tcatchpoint");
6099           else if (is_tracepoint (b))
6100             ui_out_text (uiout, "\ttracepoint");
6101           else
6102             ui_out_text (uiout, "\tbreakpoint");
6103           ui_out_text (uiout, " already hit ");
6104           ui_out_field_int (uiout, "times", b->hit_count);
6105           if (b->hit_count == 1)
6106             ui_out_text (uiout, " time\n");
6107           else
6108             ui_out_text (uiout, " times\n");
6109         }
6110       else
6111         {
6112           /* Output the count also if it is zero, but only if this is mi.  */
6113           if (ui_out_is_mi_like_p (uiout))
6114             ui_out_field_int (uiout, "times", b->hit_count);
6115         }
6116     }
6117
6118   if (!part_of_multiple && b->ignore_count)
6119     {
6120       annotate_field (8);
6121       ui_out_text (uiout, "\tignore next ");
6122       ui_out_field_int (uiout, "ignore", b->ignore_count);
6123       ui_out_text (uiout, " hits\n");
6124     }
6125
6126   /* Note that an enable count of 1 corresponds to "enable once"
6127      behavior, which is reported by the combination of enablement and
6128      disposition, so we don't need to mention it here.  */
6129   if (!part_of_multiple && b->enable_count > 1)
6130     {
6131       annotate_field (8);
6132       ui_out_text (uiout, "\tdisable after ");
6133       /* Tweak the wording to clarify that ignore and enable counts
6134          are distinct, and have additive effect.  */
6135       if (b->ignore_count)
6136         ui_out_text (uiout, "additional ");
6137       else
6138         ui_out_text (uiout, "next ");
6139       ui_out_field_int (uiout, "enable", b->enable_count);
6140       ui_out_text (uiout, " hits\n");
6141     }
6142
6143   if (!part_of_multiple && is_tracepoint (b))
6144     {
6145       struct tracepoint *tp = (struct tracepoint *) b;
6146
6147       if (tp->traceframe_usage)
6148         {
6149           ui_out_text (uiout, "\ttrace buffer usage ");
6150           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6151           ui_out_text (uiout, " bytes\n");
6152         }
6153     }
6154
6155   l = b->commands ? b->commands->commands : NULL;
6156   if (!part_of_multiple && l)
6157     {
6158       struct cleanup *script_chain;
6159
6160       annotate_field (9);
6161       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6162       print_command_lines (uiout, l, 4);
6163       do_cleanups (script_chain);
6164     }
6165
6166   if (is_tracepoint (b))
6167     {
6168       struct tracepoint *t = (struct tracepoint *) b;
6169
6170       if (!part_of_multiple && t->pass_count)
6171         {
6172           annotate_field (10);
6173           ui_out_text (uiout, "\tpass count ");
6174           ui_out_field_int (uiout, "pass", t->pass_count);
6175           ui_out_text (uiout, " \n");
6176         }
6177
6178       /* Don't display it when tracepoint or tracepoint location is
6179          pending.   */
6180       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6181         {
6182           annotate_field (11);
6183
6184           if (ui_out_is_mi_like_p (uiout))
6185             ui_out_field_string (uiout, "installed",
6186                                  loc->inserted ? "y" : "n");
6187           else
6188             {
6189               if (loc->inserted)
6190                 ui_out_text (uiout, "\t");
6191               else
6192                 ui_out_text (uiout, "\tnot ");
6193               ui_out_text (uiout, "installed on target\n");
6194             }
6195         }
6196     }
6197
6198   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6199     {
6200       if (is_watchpoint (b))
6201         {
6202           struct watchpoint *w = (struct watchpoint *) b;
6203
6204           ui_out_field_string (uiout, "original-location", w->exp_string);
6205         }
6206       else if (b->addr_string)
6207         ui_out_field_string (uiout, "original-location", b->addr_string);
6208     }
6209 }
6210
6211 static void
6212 print_one_breakpoint (struct breakpoint *b,
6213                       struct bp_location **last_loc, 
6214                       int allflag)
6215 {
6216   struct cleanup *bkpt_chain;
6217   struct ui_out *uiout = current_uiout;
6218
6219   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6220
6221   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6222   do_cleanups (bkpt_chain);
6223
6224   /* If this breakpoint has custom print function,
6225      it's already printed.  Otherwise, print individual
6226      locations, if any.  */
6227   if (b->ops == NULL || b->ops->print_one == NULL)
6228     {
6229       /* If breakpoint has a single location that is disabled, we
6230          print it as if it had several locations, since otherwise it's
6231          hard to represent "breakpoint enabled, location disabled"
6232          situation.
6233
6234          Note that while hardware watchpoints have several locations
6235          internally, that's not a property exposed to user.  */
6236       if (b->loc 
6237           && !is_hardware_watchpoint (b)
6238           && (b->loc->next || !b->loc->enabled))
6239         {
6240           struct bp_location *loc;
6241           int n = 1;
6242
6243           for (loc = b->loc; loc; loc = loc->next, ++n)
6244             {
6245               struct cleanup *inner2 =
6246                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6247               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6248               do_cleanups (inner2);
6249             }
6250         }
6251     }
6252 }
6253
6254 static int
6255 breakpoint_address_bits (struct breakpoint *b)
6256 {
6257   int print_address_bits = 0;
6258   struct bp_location *loc;
6259
6260   for (loc = b->loc; loc; loc = loc->next)
6261     {
6262       int addr_bit;
6263
6264       /* Software watchpoints that aren't watching memory don't have
6265          an address to print.  */
6266       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6267         continue;
6268
6269       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6270       if (addr_bit > print_address_bits)
6271         print_address_bits = addr_bit;
6272     }
6273
6274   return print_address_bits;
6275 }
6276
6277 struct captured_breakpoint_query_args
6278   {
6279     int bnum;
6280   };
6281
6282 static int
6283 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6284 {
6285   struct captured_breakpoint_query_args *args = data;
6286   struct breakpoint *b;
6287   struct bp_location *dummy_loc = NULL;
6288
6289   ALL_BREAKPOINTS (b)
6290     {
6291       if (args->bnum == b->number)
6292         {
6293           print_one_breakpoint (b, &dummy_loc, 0);
6294           return GDB_RC_OK;
6295         }
6296     }
6297   return GDB_RC_NONE;
6298 }
6299
6300 enum gdb_rc
6301 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6302                       char **error_message)
6303 {
6304   struct captured_breakpoint_query_args args;
6305
6306   args.bnum = bnum;
6307   /* For the moment we don't trust print_one_breakpoint() to not throw
6308      an error.  */
6309   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6310                                  error_message, RETURN_MASK_ALL) < 0)
6311     return GDB_RC_FAIL;
6312   else
6313     return GDB_RC_OK;
6314 }
6315
6316 /* Return true if this breakpoint was set by the user, false if it is
6317    internal or momentary.  */
6318
6319 int
6320 user_breakpoint_p (struct breakpoint *b)
6321 {
6322   return b->number > 0;
6323 }
6324
6325 /* Print information on user settable breakpoint (watchpoint, etc)
6326    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6327    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6328    FILTER is non-NULL, call it on each breakpoint and only include the
6329    ones for which it returns non-zero.  Return the total number of
6330    breakpoints listed.  */
6331
6332 static int
6333 breakpoint_1 (char *args, int allflag, 
6334               int (*filter) (const struct breakpoint *))
6335 {
6336   struct breakpoint *b;
6337   struct bp_location *last_loc = NULL;
6338   int nr_printable_breakpoints;
6339   struct cleanup *bkpttbl_chain;
6340   struct value_print_options opts;
6341   int print_address_bits = 0;
6342   int print_type_col_width = 14;
6343   struct ui_out *uiout = current_uiout;
6344
6345   get_user_print_options (&opts);
6346
6347   /* Compute the number of rows in the table, as well as the size
6348      required for address fields.  */
6349   nr_printable_breakpoints = 0;
6350   ALL_BREAKPOINTS (b)
6351     {
6352       /* If we have a filter, only list the breakpoints it accepts.  */
6353       if (filter && !filter (b))
6354         continue;
6355
6356       /* If we have an "args" string, it is a list of breakpoints to 
6357          accept.  Skip the others.  */
6358       if (args != NULL && *args != '\0')
6359         {
6360           if (allflag && parse_and_eval_long (args) != b->number)
6361             continue;
6362           if (!allflag && !number_is_in_list (args, b->number))
6363             continue;
6364         }
6365
6366       if (allflag || user_breakpoint_p (b))
6367         {
6368           int addr_bit, type_len;
6369
6370           addr_bit = breakpoint_address_bits (b);
6371           if (addr_bit > print_address_bits)
6372             print_address_bits = addr_bit;
6373
6374           type_len = strlen (bptype_string (b->type));
6375           if (type_len > print_type_col_width)
6376             print_type_col_width = type_len;
6377
6378           nr_printable_breakpoints++;
6379         }
6380     }
6381
6382   if (opts.addressprint)
6383     bkpttbl_chain 
6384       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6385                                              nr_printable_breakpoints,
6386                                              "BreakpointTable");
6387   else
6388     bkpttbl_chain 
6389       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6390                                              nr_printable_breakpoints,
6391                                              "BreakpointTable");
6392
6393   if (nr_printable_breakpoints > 0)
6394     annotate_breakpoints_headers ();
6395   if (nr_printable_breakpoints > 0)
6396     annotate_field (0);
6397   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6398   if (nr_printable_breakpoints > 0)
6399     annotate_field (1);
6400   ui_out_table_header (uiout, print_type_col_width, ui_left,
6401                        "type", "Type");                         /* 2 */
6402   if (nr_printable_breakpoints > 0)
6403     annotate_field (2);
6404   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6405   if (nr_printable_breakpoints > 0)
6406     annotate_field (3);
6407   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6408   if (opts.addressprint)
6409     {
6410       if (nr_printable_breakpoints > 0)
6411         annotate_field (4);
6412       if (print_address_bits <= 32)
6413         ui_out_table_header (uiout, 10, ui_left, 
6414                              "addr", "Address");                /* 5 */
6415       else
6416         ui_out_table_header (uiout, 18, ui_left, 
6417                              "addr", "Address");                /* 5 */
6418     }
6419   if (nr_printable_breakpoints > 0)
6420     annotate_field (5);
6421   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6422   ui_out_table_body (uiout);
6423   if (nr_printable_breakpoints > 0)
6424     annotate_breakpoints_table ();
6425
6426   ALL_BREAKPOINTS (b)
6427     {
6428       QUIT;
6429       /* If we have a filter, only list the breakpoints it accepts.  */
6430       if (filter && !filter (b))
6431         continue;
6432
6433       /* If we have an "args" string, it is a list of breakpoints to 
6434          accept.  Skip the others.  */
6435
6436       if (args != NULL && *args != '\0')
6437         {
6438           if (allflag)  /* maintenance info breakpoint */
6439             {
6440               if (parse_and_eval_long (args) != b->number)
6441                 continue;
6442             }
6443           else          /* all others */
6444             {
6445               if (!number_is_in_list (args, b->number))
6446                 continue;
6447             }
6448         }
6449       /* We only print out user settable breakpoints unless the
6450          allflag is set.  */
6451       if (allflag || user_breakpoint_p (b))
6452         print_one_breakpoint (b, &last_loc, allflag);
6453     }
6454
6455   do_cleanups (bkpttbl_chain);
6456
6457   if (nr_printable_breakpoints == 0)
6458     {
6459       /* If there's a filter, let the caller decide how to report
6460          empty list.  */
6461       if (!filter)
6462         {
6463           if (args == NULL || *args == '\0')
6464             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6465           else
6466             ui_out_message (uiout, 0, 
6467                             "No breakpoint or watchpoint matching '%s'.\n",
6468                             args);
6469         }
6470     }
6471   else
6472     {
6473       if (last_loc && !server_command)
6474         set_next_address (last_loc->gdbarch, last_loc->address);
6475     }
6476
6477   /* FIXME?  Should this be moved up so that it is only called when
6478      there have been breakpoints? */
6479   annotate_breakpoints_table_end ();
6480
6481   return nr_printable_breakpoints;
6482 }
6483
6484 /* Display the value of default-collect in a way that is generally
6485    compatible with the breakpoint list.  */
6486
6487 static void
6488 default_collect_info (void)
6489 {
6490   struct ui_out *uiout = current_uiout;
6491
6492   /* If it has no value (which is frequently the case), say nothing; a
6493      message like "No default-collect." gets in user's face when it's
6494      not wanted.  */
6495   if (!*default_collect)
6496     return;
6497
6498   /* The following phrase lines up nicely with per-tracepoint collect
6499      actions.  */
6500   ui_out_text (uiout, "default collect ");
6501   ui_out_field_string (uiout, "default-collect", default_collect);
6502   ui_out_text (uiout, " \n");
6503 }
6504   
6505 static void
6506 breakpoints_info (char *args, int from_tty)
6507 {
6508   breakpoint_1 (args, 0, NULL);
6509
6510   default_collect_info ();
6511 }
6512
6513 static void
6514 watchpoints_info (char *args, int from_tty)
6515 {
6516   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6517   struct ui_out *uiout = current_uiout;
6518
6519   if (num_printed == 0)
6520     {
6521       if (args == NULL || *args == '\0')
6522         ui_out_message (uiout, 0, "No watchpoints.\n");
6523       else
6524         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6525     }
6526 }
6527
6528 static void
6529 maintenance_info_breakpoints (char *args, int from_tty)
6530 {
6531   breakpoint_1 (args, 1, NULL);
6532
6533   default_collect_info ();
6534 }
6535
6536 static int
6537 breakpoint_has_pc (struct breakpoint *b,
6538                    struct program_space *pspace,
6539                    CORE_ADDR pc, struct obj_section *section)
6540 {
6541   struct bp_location *bl = b->loc;
6542
6543   for (; bl; bl = bl->next)
6544     {
6545       if (bl->pspace == pspace
6546           && bl->address == pc
6547           && (!overlay_debugging || bl->section == section))
6548         return 1;         
6549     }
6550   return 0;
6551 }
6552
6553 /* Print a message describing any user-breakpoints set at PC.  This
6554    concerns with logical breakpoints, so we match program spaces, not
6555    address spaces.  */
6556
6557 static void
6558 describe_other_breakpoints (struct gdbarch *gdbarch,
6559                             struct program_space *pspace, CORE_ADDR pc,
6560                             struct obj_section *section, int thread)
6561 {
6562   int others = 0;
6563   struct breakpoint *b;
6564
6565   ALL_BREAKPOINTS (b)
6566     others += (user_breakpoint_p (b)
6567                && breakpoint_has_pc (b, pspace, pc, section));
6568   if (others > 0)
6569     {
6570       if (others == 1)
6571         printf_filtered (_("Note: breakpoint "));
6572       else /* if (others == ???) */
6573         printf_filtered (_("Note: breakpoints "));
6574       ALL_BREAKPOINTS (b)
6575         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6576           {
6577             others--;
6578             printf_filtered ("%d", b->number);
6579             if (b->thread == -1 && thread != -1)
6580               printf_filtered (" (all threads)");
6581             else if (b->thread != -1)
6582               printf_filtered (" (thread %d)", b->thread);
6583             printf_filtered ("%s%s ",
6584                              ((b->enable_state == bp_disabled
6585                                || b->enable_state == bp_call_disabled)
6586                               ? " (disabled)"
6587                               : b->enable_state == bp_permanent 
6588                               ? " (permanent)"
6589                               : ""),
6590                              (others > 1) ? "," 
6591                              : ((others == 1) ? " and" : ""));
6592           }
6593       printf_filtered (_("also set at pc "));
6594       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6595       printf_filtered (".\n");
6596     }
6597 }
6598 \f
6599
6600 /* Return true iff it is meaningful to use the address member of
6601    BPT.  For some breakpoint types, the address member is irrelevant
6602    and it makes no sense to attempt to compare it to other addresses
6603    (or use it for any other purpose either).
6604
6605    More specifically, each of the following breakpoint types will
6606    always have a zero valued address and we don't want to mark
6607    breakpoints of any of these types to be a duplicate of an actual
6608    breakpoint at address zero:
6609
6610       bp_watchpoint
6611       bp_catchpoint
6612
6613 */
6614
6615 static int
6616 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6617 {
6618   enum bptype type = bpt->type;
6619
6620   return (type != bp_watchpoint && type != bp_catchpoint);
6621 }
6622
6623 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6624    true if LOC1 and LOC2 represent the same watchpoint location.  */
6625
6626 static int
6627 watchpoint_locations_match (struct bp_location *loc1, 
6628                             struct bp_location *loc2)
6629 {
6630   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6631   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6632
6633   /* Both of them must exist.  */
6634   gdb_assert (w1 != NULL);
6635   gdb_assert (w2 != NULL);
6636
6637   /* If the target can evaluate the condition expression in hardware,
6638      then we we need to insert both watchpoints even if they are at
6639      the same place.  Otherwise the watchpoint will only trigger when
6640      the condition of whichever watchpoint was inserted evaluates to
6641      true, not giving a chance for GDB to check the condition of the
6642      other watchpoint.  */
6643   if ((w1->cond_exp
6644        && target_can_accel_watchpoint_condition (loc1->address, 
6645                                                  loc1->length,
6646                                                  loc1->watchpoint_type,
6647                                                  w1->cond_exp))
6648       || (w2->cond_exp
6649           && target_can_accel_watchpoint_condition (loc2->address, 
6650                                                     loc2->length,
6651                                                     loc2->watchpoint_type,
6652                                                     w2->cond_exp)))
6653     return 0;
6654
6655   /* Note that this checks the owner's type, not the location's.  In
6656      case the target does not support read watchpoints, but does
6657      support access watchpoints, we'll have bp_read_watchpoint
6658      watchpoints with hw_access locations.  Those should be considered
6659      duplicates of hw_read locations.  The hw_read locations will
6660      become hw_access locations later.  */
6661   return (loc1->owner->type == loc2->owner->type
6662           && loc1->pspace->aspace == loc2->pspace->aspace
6663           && loc1->address == loc2->address
6664           && loc1->length == loc2->length);
6665 }
6666
6667 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6668    same breakpoint location.  In most targets, this can only be true
6669    if ASPACE1 matches ASPACE2.  On targets that have global
6670    breakpoints, the address space doesn't really matter.  */
6671
6672 static int
6673 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6674                           struct address_space *aspace2, CORE_ADDR addr2)
6675 {
6676   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6677            || aspace1 == aspace2)
6678           && addr1 == addr2);
6679 }
6680
6681 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6682    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6683    matches ASPACE2.  On targets that have global breakpoints, the address
6684    space doesn't really matter.  */
6685
6686 static int
6687 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6688                                 int len1, struct address_space *aspace2,
6689                                 CORE_ADDR addr2)
6690 {
6691   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6692            || aspace1 == aspace2)
6693           && addr2 >= addr1 && addr2 < addr1 + len1);
6694 }
6695
6696 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6697    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6698    matches the breakpoint's address space.  On targets that have global
6699    breakpoints, the address space doesn't really matter.  */
6700
6701 static int
6702 breakpoint_location_address_match (struct bp_location *bl,
6703                                    struct address_space *aspace,
6704                                    CORE_ADDR addr)
6705 {
6706   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6707                                     aspace, addr)
6708           || (bl->length
6709               && breakpoint_address_match_range (bl->pspace->aspace,
6710                                                  bl->address, bl->length,
6711                                                  aspace, addr)));
6712 }
6713
6714 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6715    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6716    true, otherwise returns false.  */
6717
6718 static int
6719 tracepoint_locations_match (struct bp_location *loc1,
6720                             struct bp_location *loc2)
6721 {
6722   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6723     /* Since tracepoint locations are never duplicated with others', tracepoint
6724        locations at the same address of different tracepoints are regarded as
6725        different locations.  */
6726     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6727   else
6728     return 0;
6729 }
6730
6731 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6732    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6733    represent the same location.  */
6734
6735 static int
6736 breakpoint_locations_match (struct bp_location *loc1, 
6737                             struct bp_location *loc2)
6738 {
6739   int hw_point1, hw_point2;
6740
6741   /* Both of them must not be in moribund_locations.  */
6742   gdb_assert (loc1->owner != NULL);
6743   gdb_assert (loc2->owner != NULL);
6744
6745   hw_point1 = is_hardware_watchpoint (loc1->owner);
6746   hw_point2 = is_hardware_watchpoint (loc2->owner);
6747
6748   if (hw_point1 != hw_point2)
6749     return 0;
6750   else if (hw_point1)
6751     return watchpoint_locations_match (loc1, loc2);
6752   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6753     return tracepoint_locations_match (loc1, loc2);
6754   else
6755     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6756     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6757                                      loc2->pspace->aspace, loc2->address)
6758             && loc1->length == loc2->length);
6759 }
6760
6761 static void
6762 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6763                                int bnum, int have_bnum)
6764 {
6765   /* The longest string possibly returned by hex_string_custom
6766      is 50 chars.  These must be at least that big for safety.  */
6767   char astr1[64];
6768   char astr2[64];
6769
6770   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6771   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6772   if (have_bnum)
6773     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6774              bnum, astr1, astr2);
6775   else
6776     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6777 }
6778
6779 /* Adjust a breakpoint's address to account for architectural
6780    constraints on breakpoint placement.  Return the adjusted address.
6781    Note: Very few targets require this kind of adjustment.  For most
6782    targets, this function is simply the identity function.  */
6783
6784 static CORE_ADDR
6785 adjust_breakpoint_address (struct gdbarch *gdbarch,
6786                            CORE_ADDR bpaddr, enum bptype bptype)
6787 {
6788   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6789     {
6790       /* Very few targets need any kind of breakpoint adjustment.  */
6791       return bpaddr;
6792     }
6793   else if (bptype == bp_watchpoint
6794            || bptype == bp_hardware_watchpoint
6795            || bptype == bp_read_watchpoint
6796            || bptype == bp_access_watchpoint
6797            || bptype == bp_catchpoint)
6798     {
6799       /* Watchpoints and the various bp_catch_* eventpoints should not
6800          have their addresses modified.  */
6801       return bpaddr;
6802     }
6803   else
6804     {
6805       CORE_ADDR adjusted_bpaddr;
6806
6807       /* Some targets have architectural constraints on the placement
6808          of breakpoint instructions.  Obtain the adjusted address.  */
6809       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6810
6811       /* An adjusted breakpoint address can significantly alter
6812          a user's expectations.  Print a warning if an adjustment
6813          is required.  */
6814       if (adjusted_bpaddr != bpaddr)
6815         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6816
6817       return adjusted_bpaddr;
6818     }
6819 }
6820
6821 void
6822 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6823                   struct breakpoint *owner)
6824 {
6825   memset (loc, 0, sizeof (*loc));
6826
6827   gdb_assert (ops != NULL);
6828
6829   loc->ops = ops;
6830   loc->owner = owner;
6831   loc->cond = NULL;
6832   loc->cond_bytecode = NULL;
6833   loc->shlib_disabled = 0;
6834   loc->enabled = 1;
6835
6836   switch (owner->type)
6837     {
6838     case bp_breakpoint:
6839     case bp_until:
6840     case bp_finish:
6841     case bp_longjmp:
6842     case bp_longjmp_resume:
6843     case bp_longjmp_call_dummy:
6844     case bp_exception:
6845     case bp_exception_resume:
6846     case bp_step_resume:
6847     case bp_hp_step_resume:
6848     case bp_watchpoint_scope:
6849     case bp_call_dummy:
6850     case bp_std_terminate:
6851     case bp_shlib_event:
6852     case bp_thread_event:
6853     case bp_overlay_event:
6854     case bp_jit_event:
6855     case bp_longjmp_master:
6856     case bp_std_terminate_master:
6857     case bp_exception_master:
6858     case bp_gnu_ifunc_resolver:
6859     case bp_gnu_ifunc_resolver_return:
6860     case bp_dprintf:
6861       loc->loc_type = bp_loc_software_breakpoint;
6862       mark_breakpoint_location_modified (loc);
6863       break;
6864     case bp_hardware_breakpoint:
6865       loc->loc_type = bp_loc_hardware_breakpoint;
6866       mark_breakpoint_location_modified (loc);
6867       break;
6868     case bp_hardware_watchpoint:
6869     case bp_read_watchpoint:
6870     case bp_access_watchpoint:
6871       loc->loc_type = bp_loc_hardware_watchpoint;
6872       break;
6873     case bp_watchpoint:
6874     case bp_catchpoint:
6875     case bp_tracepoint:
6876     case bp_fast_tracepoint:
6877     case bp_static_tracepoint:
6878       loc->loc_type = bp_loc_other;
6879       break;
6880     default:
6881       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6882     }
6883
6884   loc->refc = 1;
6885 }
6886
6887 /* Allocate a struct bp_location.  */
6888
6889 static struct bp_location *
6890 allocate_bp_location (struct breakpoint *bpt)
6891 {
6892   return bpt->ops->allocate_location (bpt);
6893 }
6894
6895 static void
6896 free_bp_location (struct bp_location *loc)
6897 {
6898   loc->ops->dtor (loc);
6899   xfree (loc);
6900 }
6901
6902 /* Increment reference count.  */
6903
6904 static void
6905 incref_bp_location (struct bp_location *bl)
6906 {
6907   ++bl->refc;
6908 }
6909
6910 /* Decrement reference count.  If the reference count reaches 0,
6911    destroy the bp_location.  Sets *BLP to NULL.  */
6912
6913 static void
6914 decref_bp_location (struct bp_location **blp)
6915 {
6916   gdb_assert ((*blp)->refc > 0);
6917
6918   if (--(*blp)->refc == 0)
6919     free_bp_location (*blp);
6920   *blp = NULL;
6921 }
6922
6923 /* Add breakpoint B at the end of the global breakpoint chain.  */
6924
6925 static void
6926 add_to_breakpoint_chain (struct breakpoint *b)
6927 {
6928   struct breakpoint *b1;
6929
6930   /* Add this breakpoint to the end of the chain so that a list of
6931      breakpoints will come out in order of increasing numbers.  */
6932
6933   b1 = breakpoint_chain;
6934   if (b1 == 0)
6935     breakpoint_chain = b;
6936   else
6937     {
6938       while (b1->next)
6939         b1 = b1->next;
6940       b1->next = b;
6941     }
6942 }
6943
6944 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6945
6946 static void
6947 init_raw_breakpoint_without_location (struct breakpoint *b,
6948                                       struct gdbarch *gdbarch,
6949                                       enum bptype bptype,
6950                                       const struct breakpoint_ops *ops)
6951 {
6952   memset (b, 0, sizeof (*b));
6953
6954   gdb_assert (ops != NULL);
6955
6956   b->ops = ops;
6957   b->type = bptype;
6958   b->gdbarch = gdbarch;
6959   b->language = current_language->la_language;
6960   b->input_radix = input_radix;
6961   b->thread = -1;
6962   b->enable_state = bp_enabled;
6963   b->next = 0;
6964   b->silent = 0;
6965   b->ignore_count = 0;
6966   b->commands = NULL;
6967   b->frame_id = null_frame_id;
6968   b->condition_not_parsed = 0;
6969   b->py_bp_object = NULL;
6970   b->related_breakpoint = b;
6971 }
6972
6973 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6974    that has type BPTYPE and has no locations as yet.  */
6975
6976 static struct breakpoint *
6977 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6978                                      enum bptype bptype,
6979                                      const struct breakpoint_ops *ops)
6980 {
6981   struct breakpoint *b = XNEW (struct breakpoint);
6982
6983   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6984   add_to_breakpoint_chain (b);
6985   return b;
6986 }
6987
6988 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6989    resolutions should be made as the user specified the location explicitly
6990    enough.  */
6991
6992 static void
6993 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6994 {
6995   gdb_assert (loc->owner != NULL);
6996
6997   if (loc->owner->type == bp_breakpoint
6998       || loc->owner->type == bp_hardware_breakpoint
6999       || is_tracepoint (loc->owner))
7000     {
7001       int is_gnu_ifunc;
7002       const char *function_name;
7003       CORE_ADDR func_addr;
7004
7005       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7006                                           &func_addr, NULL, &is_gnu_ifunc);
7007
7008       if (is_gnu_ifunc && !explicit_loc)
7009         {
7010           struct breakpoint *b = loc->owner;
7011
7012           gdb_assert (loc->pspace == current_program_space);
7013           if (gnu_ifunc_resolve_name (function_name,
7014                                       &loc->requested_address))
7015             {
7016               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7017               loc->address = adjust_breakpoint_address (loc->gdbarch,
7018                                                         loc->requested_address,
7019                                                         b->type);
7020             }
7021           else if (b->type == bp_breakpoint && b->loc == loc
7022                    && loc->next == NULL && b->related_breakpoint == b)
7023             {
7024               /* Create only the whole new breakpoint of this type but do not
7025                  mess more complicated breakpoints with multiple locations.  */
7026               b->type = bp_gnu_ifunc_resolver;
7027               /* Remember the resolver's address for use by the return
7028                  breakpoint.  */
7029               loc->related_address = func_addr;
7030             }
7031         }
7032
7033       if (function_name)
7034         loc->function_name = xstrdup (function_name);
7035     }
7036 }
7037
7038 /* Attempt to determine architecture of location identified by SAL.  */
7039 struct gdbarch *
7040 get_sal_arch (struct symtab_and_line sal)
7041 {
7042   if (sal.section)
7043     return get_objfile_arch (sal.section->objfile);
7044   if (sal.symtab)
7045     return get_objfile_arch (sal.symtab->objfile);
7046
7047   return NULL;
7048 }
7049
7050 /* Low level routine for partially initializing a breakpoint of type
7051    BPTYPE.  The newly created breakpoint's address, section, source
7052    file name, and line number are provided by SAL.
7053
7054    It is expected that the caller will complete the initialization of
7055    the newly created breakpoint struct as well as output any status
7056    information regarding the creation of a new breakpoint.  */
7057
7058 static void
7059 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7060                      struct symtab_and_line sal, enum bptype bptype,
7061                      const struct breakpoint_ops *ops)
7062 {
7063   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7064
7065   add_location_to_breakpoint (b, &sal);
7066
7067   if (bptype != bp_catchpoint)
7068     gdb_assert (sal.pspace != NULL);
7069
7070   /* Store the program space that was used to set the breakpoint,
7071      except for ordinary breakpoints, which are independent of the
7072      program space.  */
7073   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7074     b->pspace = sal.pspace;
7075
7076   annotate_breakpoints_changed ();
7077 }
7078
7079 /* set_raw_breakpoint is a low level routine for allocating and
7080    partially initializing a breakpoint of type BPTYPE.  The newly
7081    created breakpoint's address, section, source file name, and line
7082    number are provided by SAL.  The newly created and partially
7083    initialized breakpoint is added to the breakpoint chain and
7084    is also returned as the value of this function.
7085
7086    It is expected that the caller will complete the initialization of
7087    the newly created breakpoint struct as well as output any status
7088    information regarding the creation of a new breakpoint.  In
7089    particular, set_raw_breakpoint does NOT set the breakpoint
7090    number!  Care should be taken to not allow an error to occur
7091    prior to completing the initialization of the breakpoint.  If this
7092    should happen, a bogus breakpoint will be left on the chain.  */
7093
7094 struct breakpoint *
7095 set_raw_breakpoint (struct gdbarch *gdbarch,
7096                     struct symtab_and_line sal, enum bptype bptype,
7097                     const struct breakpoint_ops *ops)
7098 {
7099   struct breakpoint *b = XNEW (struct breakpoint);
7100
7101   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7102   add_to_breakpoint_chain (b);
7103   return b;
7104 }
7105
7106
7107 /* Note that the breakpoint object B describes a permanent breakpoint
7108    instruction, hard-wired into the inferior's code.  */
7109 void
7110 make_breakpoint_permanent (struct breakpoint *b)
7111 {
7112   struct bp_location *bl;
7113
7114   b->enable_state = bp_permanent;
7115
7116   /* By definition, permanent breakpoints are already present in the
7117      code.  Mark all locations as inserted.  For now,
7118      make_breakpoint_permanent is called in just one place, so it's
7119      hard to say if it's reasonable to have permanent breakpoint with
7120      multiple locations or not, but it's easy to implement.  */
7121   for (bl = b->loc; bl; bl = bl->next)
7122     bl->inserted = 1;
7123 }
7124
7125 /* Call this routine when stepping and nexting to enable a breakpoint
7126    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7127    initiated the operation.  */
7128
7129 void
7130 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7131 {
7132   struct breakpoint *b, *b_tmp;
7133   int thread = tp->num;
7134
7135   /* To avoid having to rescan all objfile symbols at every step,
7136      we maintain a list of continually-inserted but always disabled
7137      longjmp "master" breakpoints.  Here, we simply create momentary
7138      clones of those and enable them for the requested thread.  */
7139   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7140     if (b->pspace == current_program_space
7141         && (b->type == bp_longjmp_master
7142             || b->type == bp_exception_master))
7143       {
7144         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7145         struct breakpoint *clone;
7146
7147         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7148            after their removal.  */
7149         clone = momentary_breakpoint_from_master (b, type,
7150                                                   &longjmp_breakpoint_ops);
7151         clone->thread = thread;
7152       }
7153
7154   tp->initiating_frame = frame;
7155 }
7156
7157 /* Delete all longjmp breakpoints from THREAD.  */
7158 void
7159 delete_longjmp_breakpoint (int thread)
7160 {
7161   struct breakpoint *b, *b_tmp;
7162
7163   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7164     if (b->type == bp_longjmp || b->type == bp_exception)
7165       {
7166         if (b->thread == thread)
7167           delete_breakpoint (b);
7168       }
7169 }
7170
7171 void
7172 delete_longjmp_breakpoint_at_next_stop (int thread)
7173 {
7174   struct breakpoint *b, *b_tmp;
7175
7176   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7177     if (b->type == bp_longjmp || b->type == bp_exception)
7178       {
7179         if (b->thread == thread)
7180           b->disposition = disp_del_at_next_stop;
7181       }
7182 }
7183
7184 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7185    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7186    pointer to any of them.  Return NULL if this system cannot place longjmp
7187    breakpoints.  */
7188
7189 struct breakpoint *
7190 set_longjmp_breakpoint_for_call_dummy (void)
7191 {
7192   struct breakpoint *b, *retval = NULL;
7193
7194   ALL_BREAKPOINTS (b)
7195     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7196       {
7197         struct breakpoint *new_b;
7198
7199         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7200                                                   &momentary_breakpoint_ops);
7201         new_b->thread = pid_to_thread_id (inferior_ptid);
7202
7203         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7204
7205         gdb_assert (new_b->related_breakpoint == new_b);
7206         if (retval == NULL)
7207           retval = new_b;
7208         new_b->related_breakpoint = retval;
7209         while (retval->related_breakpoint != new_b->related_breakpoint)
7210           retval = retval->related_breakpoint;
7211         retval->related_breakpoint = new_b;
7212       }
7213
7214   return retval;
7215 }
7216
7217 /* Verify all existing dummy frames and their associated breakpoints for
7218    THREAD.  Remove those which can no longer be found in the current frame
7219    stack.
7220
7221    You should call this function only at places where it is safe to currently
7222    unwind the whole stack.  Failed stack unwind would discard live dummy
7223    frames.  */
7224
7225 void
7226 check_longjmp_breakpoint_for_call_dummy (int thread)
7227 {
7228   struct breakpoint *b, *b_tmp;
7229
7230   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7231     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7232       {
7233         struct breakpoint *dummy_b = b->related_breakpoint;
7234
7235         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7236           dummy_b = dummy_b->related_breakpoint;
7237         if (dummy_b->type != bp_call_dummy
7238             || frame_find_by_id (dummy_b->frame_id) != NULL)
7239           continue;
7240         
7241         dummy_frame_discard (dummy_b->frame_id);
7242
7243         while (b->related_breakpoint != b)
7244           {
7245             if (b_tmp == b->related_breakpoint)
7246               b_tmp = b->related_breakpoint->next;
7247             delete_breakpoint (b->related_breakpoint);
7248           }
7249         delete_breakpoint (b);
7250       }
7251 }
7252
7253 void
7254 enable_overlay_breakpoints (void)
7255 {
7256   struct breakpoint *b;
7257
7258   ALL_BREAKPOINTS (b)
7259     if (b->type == bp_overlay_event)
7260     {
7261       b->enable_state = bp_enabled;
7262       update_global_location_list (1);
7263       overlay_events_enabled = 1;
7264     }
7265 }
7266
7267 void
7268 disable_overlay_breakpoints (void)
7269 {
7270   struct breakpoint *b;
7271
7272   ALL_BREAKPOINTS (b)
7273     if (b->type == bp_overlay_event)
7274     {
7275       b->enable_state = bp_disabled;
7276       update_global_location_list (0);
7277       overlay_events_enabled = 0;
7278     }
7279 }
7280
7281 /* Set an active std::terminate breakpoint for each std::terminate
7282    master breakpoint.  */
7283 void
7284 set_std_terminate_breakpoint (void)
7285 {
7286   struct breakpoint *b, *b_tmp;
7287
7288   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7289     if (b->pspace == current_program_space
7290         && b->type == bp_std_terminate_master)
7291       {
7292         momentary_breakpoint_from_master (b, bp_std_terminate,
7293                                           &momentary_breakpoint_ops);
7294       }
7295 }
7296
7297 /* Delete all the std::terminate breakpoints.  */
7298 void
7299 delete_std_terminate_breakpoint (void)
7300 {
7301   struct breakpoint *b, *b_tmp;
7302
7303   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7304     if (b->type == bp_std_terminate)
7305       delete_breakpoint (b);
7306 }
7307
7308 struct breakpoint *
7309 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7310 {
7311   struct breakpoint *b;
7312
7313   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7314                                   &internal_breakpoint_ops);
7315
7316   b->enable_state = bp_enabled;
7317   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7318   b->addr_string
7319     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7320
7321   update_global_location_list_nothrow (1);
7322
7323   return b;
7324 }
7325
7326 void
7327 remove_thread_event_breakpoints (void)
7328 {
7329   struct breakpoint *b, *b_tmp;
7330
7331   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7332     if (b->type == bp_thread_event
7333         && b->loc->pspace == current_program_space)
7334       delete_breakpoint (b);
7335 }
7336
7337 struct lang_and_radix
7338   {
7339     enum language lang;
7340     int radix;
7341   };
7342
7343 /* Create a breakpoint for JIT code registration and unregistration.  */
7344
7345 struct breakpoint *
7346 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7347 {
7348   struct breakpoint *b;
7349
7350   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7351                                   &internal_breakpoint_ops);
7352   update_global_location_list_nothrow (1);
7353   return b;
7354 }
7355
7356 /* Remove JIT code registration and unregistration breakpoint(s).  */
7357
7358 void
7359 remove_jit_event_breakpoints (void)
7360 {
7361   struct breakpoint *b, *b_tmp;
7362
7363   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7364     if (b->type == bp_jit_event
7365         && b->loc->pspace == current_program_space)
7366       delete_breakpoint (b);
7367 }
7368
7369 void
7370 remove_solib_event_breakpoints (void)
7371 {
7372   struct breakpoint *b, *b_tmp;
7373
7374   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7375     if (b->type == bp_shlib_event
7376         && b->loc->pspace == current_program_space)
7377       delete_breakpoint (b);
7378 }
7379
7380 struct breakpoint *
7381 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7382 {
7383   struct breakpoint *b;
7384
7385   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7386                                   &internal_breakpoint_ops);
7387   update_global_location_list_nothrow (1);
7388   return b;
7389 }
7390
7391 /* Disable any breakpoints that are on code in shared libraries.  Only
7392    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7393
7394 void
7395 disable_breakpoints_in_shlibs (void)
7396 {
7397   struct bp_location *loc, **locp_tmp;
7398
7399   ALL_BP_LOCATIONS (loc, locp_tmp)
7400   {
7401     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7402     struct breakpoint *b = loc->owner;
7403
7404     /* We apply the check to all breakpoints, including disabled for
7405        those with loc->duplicate set.  This is so that when breakpoint
7406        becomes enabled, or the duplicate is removed, gdb will try to
7407        insert all breakpoints.  If we don't set shlib_disabled here,
7408        we'll try to insert those breakpoints and fail.  */
7409     if (((b->type == bp_breakpoint)
7410          || (b->type == bp_jit_event)
7411          || (b->type == bp_hardware_breakpoint)
7412          || (is_tracepoint (b)))
7413         && loc->pspace == current_program_space
7414         && !loc->shlib_disabled
7415 #ifdef PC_SOLIB
7416         && PC_SOLIB (loc->address)
7417 #else
7418         && solib_name_from_address (loc->pspace, loc->address)
7419 #endif
7420         )
7421       {
7422         loc->shlib_disabled = 1;
7423       }
7424   }
7425 }
7426
7427 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7428    library.  Only apply to enabled breakpoints, disabled ones can just stay
7429    disabled.  */
7430
7431 static void
7432 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7433 {
7434   struct bp_location *loc, **locp_tmp;
7435   int disabled_shlib_breaks = 0;
7436
7437   /* SunOS a.out shared libraries are always mapped, so do not
7438      disable breakpoints; they will only be reported as unloaded
7439      through clear_solib when GDB discards its shared library
7440      list.  See clear_solib for more information.  */
7441   if (exec_bfd != NULL
7442       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7443     return;
7444
7445   ALL_BP_LOCATIONS (loc, locp_tmp)
7446   {
7447     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7448     struct breakpoint *b = loc->owner;
7449
7450     if (solib->pspace == loc->pspace
7451         && !loc->shlib_disabled
7452         && (((b->type == bp_breakpoint
7453               || b->type == bp_jit_event
7454               || b->type == bp_hardware_breakpoint)
7455              && (loc->loc_type == bp_loc_hardware_breakpoint
7456                  || loc->loc_type == bp_loc_software_breakpoint))
7457             || is_tracepoint (b))
7458         && solib_contains_address_p (solib, loc->address))
7459       {
7460         loc->shlib_disabled = 1;
7461         /* At this point, we cannot rely on remove_breakpoint
7462            succeeding so we must mark the breakpoint as not inserted
7463            to prevent future errors occurring in remove_breakpoints.  */
7464         loc->inserted = 0;
7465
7466         /* This may cause duplicate notifications for the same breakpoint.  */
7467         observer_notify_breakpoint_modified (b);
7468
7469         if (!disabled_shlib_breaks)
7470           {
7471             target_terminal_ours_for_output ();
7472             warning (_("Temporarily disabling breakpoints "
7473                        "for unloaded shared library \"%s\""),
7474                      solib->so_name);
7475           }
7476         disabled_shlib_breaks = 1;
7477       }
7478   }
7479 }
7480
7481 /* FORK & VFORK catchpoints.  */
7482
7483 /* An instance of this type is used to represent a fork or vfork
7484    catchpoint.  It includes a "struct breakpoint" as a kind of base
7485    class; users downcast to "struct breakpoint *" when needed.  A
7486    breakpoint is really of this type iff its ops pointer points to
7487    CATCH_FORK_BREAKPOINT_OPS.  */
7488
7489 struct fork_catchpoint
7490 {
7491   /* The base class.  */
7492   struct breakpoint base;
7493
7494   /* Process id of a child process whose forking triggered this
7495      catchpoint.  This field is only valid immediately after this
7496      catchpoint has triggered.  */
7497   ptid_t forked_inferior_pid;
7498 };
7499
7500 /* Implement the "insert" breakpoint_ops method for fork
7501    catchpoints.  */
7502
7503 static int
7504 insert_catch_fork (struct bp_location *bl)
7505 {
7506   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7507 }
7508
7509 /* Implement the "remove" breakpoint_ops method for fork
7510    catchpoints.  */
7511
7512 static int
7513 remove_catch_fork (struct bp_location *bl)
7514 {
7515   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7516 }
7517
7518 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7519    catchpoints.  */
7520
7521 static int
7522 breakpoint_hit_catch_fork (const struct bp_location *bl,
7523                            struct address_space *aspace, CORE_ADDR bp_addr,
7524                            const struct target_waitstatus *ws)
7525 {
7526   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7527
7528   if (ws->kind != TARGET_WAITKIND_FORKED)
7529     return 0;
7530
7531   c->forked_inferior_pid = ws->value.related_pid;
7532   return 1;
7533 }
7534
7535 /* Implement the "print_it" breakpoint_ops method for fork
7536    catchpoints.  */
7537
7538 static enum print_stop_action
7539 print_it_catch_fork (bpstat bs)
7540 {
7541   struct ui_out *uiout = current_uiout;
7542   struct breakpoint *b = bs->breakpoint_at;
7543   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7544
7545   annotate_catchpoint (b->number);
7546   if (b->disposition == disp_del)
7547     ui_out_text (uiout, "\nTemporary catchpoint ");
7548   else
7549     ui_out_text (uiout, "\nCatchpoint ");
7550   if (ui_out_is_mi_like_p (uiout))
7551     {
7552       ui_out_field_string (uiout, "reason",
7553                            async_reason_lookup (EXEC_ASYNC_FORK));
7554       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7555     }
7556   ui_out_field_int (uiout, "bkptno", b->number);
7557   ui_out_text (uiout, " (forked process ");
7558   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7559   ui_out_text (uiout, "), ");
7560   return PRINT_SRC_AND_LOC;
7561 }
7562
7563 /* Implement the "print_one" breakpoint_ops method for fork
7564    catchpoints.  */
7565
7566 static void
7567 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7568 {
7569   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7570   struct value_print_options opts;
7571   struct ui_out *uiout = current_uiout;
7572
7573   get_user_print_options (&opts);
7574
7575   /* Field 4, the address, is omitted (which makes the columns not
7576      line up too nicely with the headers, but the effect is relatively
7577      readable).  */
7578   if (opts.addressprint)
7579     ui_out_field_skip (uiout, "addr");
7580   annotate_field (5);
7581   ui_out_text (uiout, "fork");
7582   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7583     {
7584       ui_out_text (uiout, ", process ");
7585       ui_out_field_int (uiout, "what",
7586                         ptid_get_pid (c->forked_inferior_pid));
7587       ui_out_spaces (uiout, 1);
7588     }
7589
7590   if (ui_out_is_mi_like_p (uiout))
7591     ui_out_field_string (uiout, "catch-type", "fork");
7592 }
7593
7594 /* Implement the "print_mention" breakpoint_ops method for fork
7595    catchpoints.  */
7596
7597 static void
7598 print_mention_catch_fork (struct breakpoint *b)
7599 {
7600   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7601 }
7602
7603 /* Implement the "print_recreate" breakpoint_ops method for fork
7604    catchpoints.  */
7605
7606 static void
7607 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7608 {
7609   fprintf_unfiltered (fp, "catch fork");
7610   print_recreate_thread (b, fp);
7611 }
7612
7613 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7614
7615 static struct breakpoint_ops catch_fork_breakpoint_ops;
7616
7617 /* Implement the "insert" breakpoint_ops method for vfork
7618    catchpoints.  */
7619
7620 static int
7621 insert_catch_vfork (struct bp_location *bl)
7622 {
7623   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7624 }
7625
7626 /* Implement the "remove" breakpoint_ops method for vfork
7627    catchpoints.  */
7628
7629 static int
7630 remove_catch_vfork (struct bp_location *bl)
7631 {
7632   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7633 }
7634
7635 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7636    catchpoints.  */
7637
7638 static int
7639 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7640                             struct address_space *aspace, CORE_ADDR bp_addr,
7641                             const struct target_waitstatus *ws)
7642 {
7643   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7644
7645   if (ws->kind != TARGET_WAITKIND_VFORKED)
7646     return 0;
7647
7648   c->forked_inferior_pid = ws->value.related_pid;
7649   return 1;
7650 }
7651
7652 /* Implement the "print_it" breakpoint_ops method for vfork
7653    catchpoints.  */
7654
7655 static enum print_stop_action
7656 print_it_catch_vfork (bpstat bs)
7657 {
7658   struct ui_out *uiout = current_uiout;
7659   struct breakpoint *b = bs->breakpoint_at;
7660   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7661
7662   annotate_catchpoint (b->number);
7663   if (b->disposition == disp_del)
7664     ui_out_text (uiout, "\nTemporary catchpoint ");
7665   else
7666     ui_out_text (uiout, "\nCatchpoint ");
7667   if (ui_out_is_mi_like_p (uiout))
7668     {
7669       ui_out_field_string (uiout, "reason",
7670                            async_reason_lookup (EXEC_ASYNC_VFORK));
7671       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7672     }
7673   ui_out_field_int (uiout, "bkptno", b->number);
7674   ui_out_text (uiout, " (vforked process ");
7675   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7676   ui_out_text (uiout, "), ");
7677   return PRINT_SRC_AND_LOC;
7678 }
7679
7680 /* Implement the "print_one" breakpoint_ops method for vfork
7681    catchpoints.  */
7682
7683 static void
7684 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7685 {
7686   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7687   struct value_print_options opts;
7688   struct ui_out *uiout = current_uiout;
7689
7690   get_user_print_options (&opts);
7691   /* Field 4, the address, is omitted (which makes the columns not
7692      line up too nicely with the headers, but the effect is relatively
7693      readable).  */
7694   if (opts.addressprint)
7695     ui_out_field_skip (uiout, "addr");
7696   annotate_field (5);
7697   ui_out_text (uiout, "vfork");
7698   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7699     {
7700       ui_out_text (uiout, ", process ");
7701       ui_out_field_int (uiout, "what",
7702                         ptid_get_pid (c->forked_inferior_pid));
7703       ui_out_spaces (uiout, 1);
7704     }
7705
7706   if (ui_out_is_mi_like_p (uiout))
7707     ui_out_field_string (uiout, "catch-type", "vfork");
7708 }
7709
7710 /* Implement the "print_mention" breakpoint_ops method for vfork
7711    catchpoints.  */
7712
7713 static void
7714 print_mention_catch_vfork (struct breakpoint *b)
7715 {
7716   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7717 }
7718
7719 /* Implement the "print_recreate" breakpoint_ops method for vfork
7720    catchpoints.  */
7721
7722 static void
7723 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7724 {
7725   fprintf_unfiltered (fp, "catch vfork");
7726   print_recreate_thread (b, fp);
7727 }
7728
7729 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7730
7731 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7732
7733 /* An instance of this type is used to represent an solib catchpoint.
7734    It includes a "struct breakpoint" as a kind of base class; users
7735    downcast to "struct breakpoint *" when needed.  A breakpoint is
7736    really of this type iff its ops pointer points to
7737    CATCH_SOLIB_BREAKPOINT_OPS.  */
7738
7739 struct solib_catchpoint
7740 {
7741   /* The base class.  */
7742   struct breakpoint base;
7743
7744   /* True for "catch load", false for "catch unload".  */
7745   unsigned char is_load;
7746
7747   /* Regular expression to match, if any.  COMPILED is only valid when
7748      REGEX is non-NULL.  */
7749   char *regex;
7750   regex_t compiled;
7751 };
7752
7753 static void
7754 dtor_catch_solib (struct breakpoint *b)
7755 {
7756   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7757
7758   if (self->regex)
7759     regfree (&self->compiled);
7760   xfree (self->regex);
7761
7762   base_breakpoint_ops.dtor (b);
7763 }
7764
7765 static int
7766 insert_catch_solib (struct bp_location *ignore)
7767 {
7768   return 0;
7769 }
7770
7771 static int
7772 remove_catch_solib (struct bp_location *ignore)
7773 {
7774   return 0;
7775 }
7776
7777 static int
7778 breakpoint_hit_catch_solib (const struct bp_location *bl,
7779                             struct address_space *aspace,
7780                             CORE_ADDR bp_addr,
7781                             const struct target_waitstatus *ws)
7782 {
7783   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7784   struct breakpoint *other;
7785
7786   if (ws->kind == TARGET_WAITKIND_LOADED)
7787     return 1;
7788
7789   ALL_BREAKPOINTS (other)
7790   {
7791     struct bp_location *other_bl;
7792
7793     if (other == bl->owner)
7794       continue;
7795
7796     if (other->type != bp_shlib_event)
7797       continue;
7798
7799     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7800       continue;
7801
7802     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7803       {
7804         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7805           return 1;
7806       }
7807   }
7808
7809   return 0;
7810 }
7811
7812 static void
7813 check_status_catch_solib (struct bpstats *bs)
7814 {
7815   struct solib_catchpoint *self
7816     = (struct solib_catchpoint *) bs->breakpoint_at;
7817   int ix;
7818
7819   if (self->is_load)
7820     {
7821       struct so_list *iter;
7822
7823       for (ix = 0;
7824            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7825                         ix, iter);
7826            ++ix)
7827         {
7828           if (!self->regex
7829               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7830             return;
7831         }
7832     }
7833   else
7834     {
7835       char *iter;
7836
7837       for (ix = 0;
7838            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7839                         ix, iter);
7840            ++ix)
7841         {
7842           if (!self->regex
7843               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7844             return;
7845         }
7846     }
7847
7848   bs->stop = 0;
7849   bs->print_it = print_it_noop;
7850 }
7851
7852 static enum print_stop_action
7853 print_it_catch_solib (bpstat bs)
7854 {
7855   struct breakpoint *b = bs->breakpoint_at;
7856   struct ui_out *uiout = current_uiout;
7857
7858   annotate_catchpoint (b->number);
7859   if (b->disposition == disp_del)
7860     ui_out_text (uiout, "\nTemporary catchpoint ");
7861   else
7862     ui_out_text (uiout, "\nCatchpoint ");
7863   ui_out_field_int (uiout, "bkptno", b->number);
7864   ui_out_text (uiout, "\n");
7865   if (ui_out_is_mi_like_p (uiout))
7866     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7867   print_solib_event (1);
7868   return PRINT_SRC_AND_LOC;
7869 }
7870
7871 static void
7872 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7873 {
7874   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7875   struct value_print_options opts;
7876   struct ui_out *uiout = current_uiout;
7877   char *msg;
7878
7879   get_user_print_options (&opts);
7880   /* Field 4, the address, is omitted (which makes the columns not
7881      line up too nicely with the headers, but the effect is relatively
7882      readable).  */
7883   if (opts.addressprint)
7884     {
7885       annotate_field (4);
7886       ui_out_field_skip (uiout, "addr");
7887     }
7888
7889   annotate_field (5);
7890   if (self->is_load)
7891     {
7892       if (self->regex)
7893         msg = xstrprintf (_("load of library matching %s"), self->regex);
7894       else
7895         msg = xstrdup (_("load of library"));
7896     }
7897   else
7898     {
7899       if (self->regex)
7900         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7901       else
7902         msg = xstrdup (_("unload of library"));
7903     }
7904   ui_out_field_string (uiout, "what", msg);
7905   xfree (msg);
7906
7907   if (ui_out_is_mi_like_p (uiout))
7908     ui_out_field_string (uiout, "catch-type",
7909                          self->is_load ? "load" : "unload");
7910 }
7911
7912 static void
7913 print_mention_catch_solib (struct breakpoint *b)
7914 {
7915   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7916
7917   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7918                    self->is_load ? "load" : "unload");
7919 }
7920
7921 static void
7922 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7923 {
7924   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7925
7926   fprintf_unfiltered (fp, "%s %s",
7927                       b->disposition == disp_del ? "tcatch" : "catch",
7928                       self->is_load ? "load" : "unload");
7929   if (self->regex)
7930     fprintf_unfiltered (fp, " %s", self->regex);
7931   fprintf_unfiltered (fp, "\n");
7932 }
7933
7934 static struct breakpoint_ops catch_solib_breakpoint_ops;
7935
7936 /* Shared helper function (MI and CLI) for creating and installing
7937    a shared object event catchpoint.  If IS_LOAD is non-zero then
7938    the events to be caught are load events, otherwise they are
7939    unload events.  If IS_TEMP is non-zero the catchpoint is a
7940    temporary one.  If ENABLED is non-zero the catchpoint is
7941    created in an enabled state.  */
7942
7943 void
7944 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7945 {
7946   struct solib_catchpoint *c;
7947   struct gdbarch *gdbarch = get_current_arch ();
7948   struct cleanup *cleanup;
7949
7950   if (!arg)
7951     arg = "";
7952   arg = skip_spaces (arg);
7953
7954   c = XCNEW (struct solib_catchpoint);
7955   cleanup = make_cleanup (xfree, c);
7956
7957   if (*arg != '\0')
7958     {
7959       int errcode;
7960
7961       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7962       if (errcode != 0)
7963         {
7964           char *err = get_regcomp_error (errcode, &c->compiled);
7965
7966           make_cleanup (xfree, err);
7967           error (_("Invalid regexp (%s): %s"), err, arg);
7968         }
7969       c->regex = xstrdup (arg);
7970     }
7971
7972   c->is_load = is_load;
7973   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7974                    &catch_solib_breakpoint_ops);
7975
7976   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7977
7978   discard_cleanups (cleanup);
7979   install_breakpoint (0, &c->base, 1);
7980 }
7981
7982 /* A helper function that does all the work for "catch load" and
7983    "catch unload".  */
7984
7985 static void
7986 catch_load_or_unload (char *arg, int from_tty, int is_load,
7987                       struct cmd_list_element *command)
7988 {
7989   int tempflag;
7990   const int enabled = 1;
7991
7992   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7993
7994   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7995 }
7996
7997 static void
7998 catch_load_command_1 (char *arg, int from_tty,
7999                       struct cmd_list_element *command)
8000 {
8001   catch_load_or_unload (arg, from_tty, 1, command);
8002 }
8003
8004 static void
8005 catch_unload_command_1 (char *arg, int from_tty,
8006                         struct cmd_list_element *command)
8007 {
8008   catch_load_or_unload (arg, from_tty, 0, command);
8009 }
8010
8011 /* An instance of this type is used to represent a syscall catchpoint.
8012    It includes a "struct breakpoint" as a kind of base class; users
8013    downcast to "struct breakpoint *" when needed.  A breakpoint is
8014    really of this type iff its ops pointer points to
8015    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8016
8017 struct syscall_catchpoint
8018 {
8019   /* The base class.  */
8020   struct breakpoint base;
8021
8022   /* Syscall numbers used for the 'catch syscall' feature.  If no
8023      syscall has been specified for filtering, its value is NULL.
8024      Otherwise, it holds a list of all syscalls to be caught.  The
8025      list elements are allocated with xmalloc.  */
8026   VEC(int) *syscalls_to_be_caught;
8027 };
8028
8029 /* Implement the "dtor" breakpoint_ops method for syscall
8030    catchpoints.  */
8031
8032 static void
8033 dtor_catch_syscall (struct breakpoint *b)
8034 {
8035   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8036
8037   VEC_free (int, c->syscalls_to_be_caught);
8038
8039   base_breakpoint_ops.dtor (b);
8040 }
8041
8042 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8043
8044 struct catch_syscall_inferior_data
8045 {
8046   /* We keep a count of the number of times the user has requested a
8047      particular syscall to be tracked, and pass this information to the
8048      target.  This lets capable targets implement filtering directly.  */
8049
8050   /* Number of times that "any" syscall is requested.  */
8051   int any_syscall_count;
8052
8053   /* Count of each system call.  */
8054   VEC(int) *syscalls_counts;
8055
8056   /* This counts all syscall catch requests, so we can readily determine
8057      if any catching is necessary.  */
8058   int total_syscalls_count;
8059 };
8060
8061 static struct catch_syscall_inferior_data*
8062 get_catch_syscall_inferior_data (struct inferior *inf)
8063 {
8064   struct catch_syscall_inferior_data *inf_data;
8065
8066   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8067   if (inf_data == NULL)
8068     {
8069       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8070       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8071     }
8072
8073   return inf_data;
8074 }
8075
8076 static void
8077 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8078 {
8079   xfree (arg);
8080 }
8081
8082
8083 /* Implement the "insert" breakpoint_ops method for syscall
8084    catchpoints.  */
8085
8086 static int
8087 insert_catch_syscall (struct bp_location *bl)
8088 {
8089   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8090   struct inferior *inf = current_inferior ();
8091   struct catch_syscall_inferior_data *inf_data
8092     = get_catch_syscall_inferior_data (inf);
8093
8094   ++inf_data->total_syscalls_count;
8095   if (!c->syscalls_to_be_caught)
8096     ++inf_data->any_syscall_count;
8097   else
8098     {
8099       int i, iter;
8100
8101       for (i = 0;
8102            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8103            i++)
8104         {
8105           int elem;
8106
8107           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8108             {
8109               int old_size = VEC_length (int, inf_data->syscalls_counts);
8110               uintptr_t vec_addr_offset
8111                 = old_size * ((uintptr_t) sizeof (int));
8112               uintptr_t vec_addr;
8113               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8114               vec_addr = ((uintptr_t) VEC_address (int,
8115                                                   inf_data->syscalls_counts)
8116                           + vec_addr_offset);
8117               memset ((void *) vec_addr, 0,
8118                       (iter + 1 - old_size) * sizeof (int));
8119             }
8120           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8121           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8122         }
8123     }
8124
8125   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8126                                         inf_data->total_syscalls_count != 0,
8127                                         inf_data->any_syscall_count,
8128                                         VEC_length (int,
8129                                                     inf_data->syscalls_counts),
8130                                         VEC_address (int,
8131                                                      inf_data->syscalls_counts));
8132 }
8133
8134 /* Implement the "remove" breakpoint_ops method for syscall
8135    catchpoints.  */
8136
8137 static int
8138 remove_catch_syscall (struct bp_location *bl)
8139 {
8140   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8141   struct inferior *inf = current_inferior ();
8142   struct catch_syscall_inferior_data *inf_data
8143     = get_catch_syscall_inferior_data (inf);
8144
8145   --inf_data->total_syscalls_count;
8146   if (!c->syscalls_to_be_caught)
8147     --inf_data->any_syscall_count;
8148   else
8149     {
8150       int i, iter;
8151
8152       for (i = 0;
8153            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8154            i++)
8155         {
8156           int elem;
8157           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8158             /* Shouldn't happen.  */
8159             continue;
8160           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8161           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8162         }
8163     }
8164
8165   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8166                                         inf_data->total_syscalls_count != 0,
8167                                         inf_data->any_syscall_count,
8168                                         VEC_length (int,
8169                                                     inf_data->syscalls_counts),
8170                                         VEC_address (int,
8171                                                      inf_data->syscalls_counts));
8172 }
8173
8174 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8175    catchpoints.  */
8176
8177 static int
8178 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8179                               struct address_space *aspace, CORE_ADDR bp_addr,
8180                               const struct target_waitstatus *ws)
8181 {
8182   /* We must check if we are catching specific syscalls in this
8183      breakpoint.  If we are, then we must guarantee that the called
8184      syscall is the same syscall we are catching.  */
8185   int syscall_number = 0;
8186   const struct syscall_catchpoint *c
8187     = (const struct syscall_catchpoint *) bl->owner;
8188
8189   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8190       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8191     return 0;
8192
8193   syscall_number = ws->value.syscall_number;
8194
8195   /* Now, checking if the syscall is the same.  */
8196   if (c->syscalls_to_be_caught)
8197     {
8198       int i, iter;
8199
8200       for (i = 0;
8201            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8202            i++)
8203         if (syscall_number == iter)
8204           break;
8205       /* Not the same.  */
8206       if (!iter)
8207         return 0;
8208     }
8209
8210   return 1;
8211 }
8212
8213 /* Implement the "print_it" breakpoint_ops method for syscall
8214    catchpoints.  */
8215
8216 static enum print_stop_action
8217 print_it_catch_syscall (bpstat bs)
8218 {
8219   struct ui_out *uiout = current_uiout;
8220   struct breakpoint *b = bs->breakpoint_at;
8221   /* These are needed because we want to know in which state a
8222      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8223      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8224      must print "called syscall" or "returned from syscall".  */
8225   ptid_t ptid;
8226   struct target_waitstatus last;
8227   struct syscall s;
8228
8229   get_last_target_status (&ptid, &last);
8230
8231   get_syscall_by_number (last.value.syscall_number, &s);
8232
8233   annotate_catchpoint (b->number);
8234
8235   if (b->disposition == disp_del)
8236     ui_out_text (uiout, "\nTemporary catchpoint ");
8237   else
8238     ui_out_text (uiout, "\nCatchpoint ");
8239   if (ui_out_is_mi_like_p (uiout))
8240     {
8241       ui_out_field_string (uiout, "reason",
8242                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8243                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8244                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8245       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8246     }
8247   ui_out_field_int (uiout, "bkptno", b->number);
8248
8249   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8250     ui_out_text (uiout, " (call to syscall ");
8251   else
8252     ui_out_text (uiout, " (returned from syscall ");
8253
8254   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8255     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8256   if (s.name != NULL)
8257     ui_out_field_string (uiout, "syscall-name", s.name);
8258
8259   ui_out_text (uiout, "), ");
8260
8261   return PRINT_SRC_AND_LOC;
8262 }
8263
8264 /* Implement the "print_one" breakpoint_ops method for syscall
8265    catchpoints.  */
8266
8267 static void
8268 print_one_catch_syscall (struct breakpoint *b,
8269                          struct bp_location **last_loc)
8270 {
8271   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8272   struct value_print_options opts;
8273   struct ui_out *uiout = current_uiout;
8274
8275   get_user_print_options (&opts);
8276   /* Field 4, the address, is omitted (which makes the columns not
8277      line up too nicely with the headers, but the effect is relatively
8278      readable).  */
8279   if (opts.addressprint)
8280     ui_out_field_skip (uiout, "addr");
8281   annotate_field (5);
8282
8283   if (c->syscalls_to_be_caught
8284       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8285     ui_out_text (uiout, "syscalls \"");
8286   else
8287     ui_out_text (uiout, "syscall \"");
8288
8289   if (c->syscalls_to_be_caught)
8290     {
8291       int i, iter;
8292       char *text = xstrprintf ("%s", "");
8293
8294       for (i = 0;
8295            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8296            i++)
8297         {
8298           char *x = text;
8299           struct syscall s;
8300           get_syscall_by_number (iter, &s);
8301
8302           if (s.name != NULL)
8303             text = xstrprintf ("%s%s, ", text, s.name);
8304           else
8305             text = xstrprintf ("%s%d, ", text, iter);
8306
8307           /* We have to xfree the last 'text' (now stored at 'x')
8308              because xstrprintf dynamically allocates new space for it
8309              on every call.  */
8310           xfree (x);
8311         }
8312       /* Remove the last comma.  */
8313       text[strlen (text) - 2] = '\0';
8314       ui_out_field_string (uiout, "what", text);
8315     }
8316   else
8317     ui_out_field_string (uiout, "what", "<any syscall>");
8318   ui_out_text (uiout, "\" ");
8319
8320   if (ui_out_is_mi_like_p (uiout))
8321     ui_out_field_string (uiout, "catch-type", "syscall");
8322 }
8323
8324 /* Implement the "print_mention" breakpoint_ops method for syscall
8325    catchpoints.  */
8326
8327 static void
8328 print_mention_catch_syscall (struct breakpoint *b)
8329 {
8330   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8331
8332   if (c->syscalls_to_be_caught)
8333     {
8334       int i, iter;
8335
8336       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8337         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8338       else
8339         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8340
8341       for (i = 0;
8342            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8343            i++)
8344         {
8345           struct syscall s;
8346           get_syscall_by_number (iter, &s);
8347
8348           if (s.name)
8349             printf_filtered (" '%s' [%d]", s.name, s.number);
8350           else
8351             printf_filtered (" %d", s.number);
8352         }
8353       printf_filtered (")");
8354     }
8355   else
8356     printf_filtered (_("Catchpoint %d (any syscall)"),
8357                      b->number);
8358 }
8359
8360 /* Implement the "print_recreate" breakpoint_ops method for syscall
8361    catchpoints.  */
8362
8363 static void
8364 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8365 {
8366   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8367
8368   fprintf_unfiltered (fp, "catch syscall");
8369
8370   if (c->syscalls_to_be_caught)
8371     {
8372       int i, iter;
8373
8374       for (i = 0;
8375            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8376            i++)
8377         {
8378           struct syscall s;
8379
8380           get_syscall_by_number (iter, &s);
8381           if (s.name)
8382             fprintf_unfiltered (fp, " %s", s.name);
8383           else
8384             fprintf_unfiltered (fp, " %d", s.number);
8385         }
8386     }
8387   print_recreate_thread (b, fp);
8388 }
8389
8390 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8391
8392 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8393
8394 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8395
8396 static int
8397 syscall_catchpoint_p (struct breakpoint *b)
8398 {
8399   return (b->ops == &catch_syscall_breakpoint_ops);
8400 }
8401
8402 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8403    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8404    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8405    the breakpoint_ops structure associated to the catchpoint.  */
8406
8407 void
8408 init_catchpoint (struct breakpoint *b,
8409                  struct gdbarch *gdbarch, int tempflag,
8410                  char *cond_string,
8411                  const struct breakpoint_ops *ops)
8412 {
8413   struct symtab_and_line sal;
8414
8415   init_sal (&sal);
8416   sal.pspace = current_program_space;
8417
8418   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8419
8420   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8421   b->disposition = tempflag ? disp_del : disp_donttouch;
8422 }
8423
8424 void
8425 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8426 {
8427   add_to_breakpoint_chain (b);
8428   set_breakpoint_number (internal, b);
8429   if (is_tracepoint (b))
8430     set_tracepoint_count (breakpoint_count);
8431   if (!internal)
8432     mention (b);
8433   observer_notify_breakpoint_created (b);
8434
8435   if (update_gll)
8436     update_global_location_list (1);
8437 }
8438
8439 static void
8440 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8441                                     int tempflag, char *cond_string,
8442                                     const struct breakpoint_ops *ops)
8443 {
8444   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8445
8446   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8447
8448   c->forked_inferior_pid = null_ptid;
8449
8450   install_breakpoint (0, &c->base, 1);
8451 }
8452
8453 /* Exec catchpoints.  */
8454
8455 /* An instance of this type is used to represent an exec catchpoint.
8456    It includes a "struct breakpoint" as a kind of base class; users
8457    downcast to "struct breakpoint *" when needed.  A breakpoint is
8458    really of this type iff its ops pointer points to
8459    CATCH_EXEC_BREAKPOINT_OPS.  */
8460
8461 struct exec_catchpoint
8462 {
8463   /* The base class.  */
8464   struct breakpoint base;
8465
8466   /* Filename of a program whose exec triggered this catchpoint.
8467      This field is only valid immediately after this catchpoint has
8468      triggered.  */
8469   char *exec_pathname;
8470 };
8471
8472 /* Implement the "dtor" breakpoint_ops method for exec
8473    catchpoints.  */
8474
8475 static void
8476 dtor_catch_exec (struct breakpoint *b)
8477 {
8478   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8479
8480   xfree (c->exec_pathname);
8481
8482   base_breakpoint_ops.dtor (b);
8483 }
8484
8485 static int
8486 insert_catch_exec (struct bp_location *bl)
8487 {
8488   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8489 }
8490
8491 static int
8492 remove_catch_exec (struct bp_location *bl)
8493 {
8494   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8495 }
8496
8497 static int
8498 breakpoint_hit_catch_exec (const struct bp_location *bl,
8499                            struct address_space *aspace, CORE_ADDR bp_addr,
8500                            const struct target_waitstatus *ws)
8501 {
8502   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8503
8504   if (ws->kind != TARGET_WAITKIND_EXECD)
8505     return 0;
8506
8507   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8508   return 1;
8509 }
8510
8511 static enum print_stop_action
8512 print_it_catch_exec (bpstat bs)
8513 {
8514   struct ui_out *uiout = current_uiout;
8515   struct breakpoint *b = bs->breakpoint_at;
8516   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8517
8518   annotate_catchpoint (b->number);
8519   if (b->disposition == disp_del)
8520     ui_out_text (uiout, "\nTemporary catchpoint ");
8521   else
8522     ui_out_text (uiout, "\nCatchpoint ");
8523   if (ui_out_is_mi_like_p (uiout))
8524     {
8525       ui_out_field_string (uiout, "reason",
8526                            async_reason_lookup (EXEC_ASYNC_EXEC));
8527       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8528     }
8529   ui_out_field_int (uiout, "bkptno", b->number);
8530   ui_out_text (uiout, " (exec'd ");
8531   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8532   ui_out_text (uiout, "), ");
8533
8534   return PRINT_SRC_AND_LOC;
8535 }
8536
8537 static void
8538 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8539 {
8540   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8541   struct value_print_options opts;
8542   struct ui_out *uiout = current_uiout;
8543
8544   get_user_print_options (&opts);
8545
8546   /* Field 4, the address, is omitted (which makes the columns
8547      not line up too nicely with the headers, but the effect
8548      is relatively readable).  */
8549   if (opts.addressprint)
8550     ui_out_field_skip (uiout, "addr");
8551   annotate_field (5);
8552   ui_out_text (uiout, "exec");
8553   if (c->exec_pathname != NULL)
8554     {
8555       ui_out_text (uiout, ", program \"");
8556       ui_out_field_string (uiout, "what", c->exec_pathname);
8557       ui_out_text (uiout, "\" ");
8558     }
8559
8560   if (ui_out_is_mi_like_p (uiout))
8561     ui_out_field_string (uiout, "catch-type", "exec");
8562 }
8563
8564 static void
8565 print_mention_catch_exec (struct breakpoint *b)
8566 {
8567   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8568 }
8569
8570 /* Implement the "print_recreate" breakpoint_ops method for exec
8571    catchpoints.  */
8572
8573 static void
8574 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8575 {
8576   fprintf_unfiltered (fp, "catch exec");
8577   print_recreate_thread (b, fp);
8578 }
8579
8580 static struct breakpoint_ops catch_exec_breakpoint_ops;
8581
8582 static void
8583 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8584                                  const struct breakpoint_ops *ops)
8585 {
8586   struct syscall_catchpoint *c;
8587   struct gdbarch *gdbarch = get_current_arch ();
8588
8589   c = XNEW (struct syscall_catchpoint);
8590   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8591   c->syscalls_to_be_caught = filter;
8592
8593   install_breakpoint (0, &c->base, 1);
8594 }
8595
8596 static int
8597 hw_breakpoint_used_count (void)
8598 {
8599   int i = 0;
8600   struct breakpoint *b;
8601   struct bp_location *bl;
8602
8603   ALL_BREAKPOINTS (b)
8604   {
8605     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8606       for (bl = b->loc; bl; bl = bl->next)
8607         {
8608           /* Special types of hardware breakpoints may use more than
8609              one register.  */
8610           i += b->ops->resources_needed (bl);
8611         }
8612   }
8613
8614   return i;
8615 }
8616
8617 /* Returns the resources B would use if it were a hardware
8618    watchpoint.  */
8619
8620 static int
8621 hw_watchpoint_use_count (struct breakpoint *b)
8622 {
8623   int i = 0;
8624   struct bp_location *bl;
8625
8626   if (!breakpoint_enabled (b))
8627     return 0;
8628
8629   for (bl = b->loc; bl; bl = bl->next)
8630     {
8631       /* Special types of hardware watchpoints may use more than
8632          one register.  */
8633       i += b->ops->resources_needed (bl);
8634     }
8635
8636   return i;
8637 }
8638
8639 /* Returns the sum the used resources of all hardware watchpoints of
8640    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8641    the sum of the used resources of all hardware watchpoints of other
8642    types _not_ TYPE.  */
8643
8644 static int
8645 hw_watchpoint_used_count_others (struct breakpoint *except,
8646                                  enum bptype type, int *other_type_used)
8647 {
8648   int i = 0;
8649   struct breakpoint *b;
8650
8651   *other_type_used = 0;
8652   ALL_BREAKPOINTS (b)
8653     {
8654       if (b == except)
8655         continue;
8656       if (!breakpoint_enabled (b))
8657         continue;
8658
8659       if (b->type == type)
8660         i += hw_watchpoint_use_count (b);
8661       else if (is_hardware_watchpoint (b))
8662         *other_type_used = 1;
8663     }
8664
8665   return i;
8666 }
8667
8668 void
8669 disable_watchpoints_before_interactive_call_start (void)
8670 {
8671   struct breakpoint *b;
8672
8673   ALL_BREAKPOINTS (b)
8674   {
8675     if (is_watchpoint (b) && breakpoint_enabled (b))
8676       {
8677         b->enable_state = bp_call_disabled;
8678         update_global_location_list (0);
8679       }
8680   }
8681 }
8682
8683 void
8684 enable_watchpoints_after_interactive_call_stop (void)
8685 {
8686   struct breakpoint *b;
8687
8688   ALL_BREAKPOINTS (b)
8689   {
8690     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8691       {
8692         b->enable_state = bp_enabled;
8693         update_global_location_list (1);
8694       }
8695   }
8696 }
8697
8698 void
8699 disable_breakpoints_before_startup (void)
8700 {
8701   current_program_space->executing_startup = 1;
8702   update_global_location_list (0);
8703 }
8704
8705 void
8706 enable_breakpoints_after_startup (void)
8707 {
8708   current_program_space->executing_startup = 0;
8709   breakpoint_re_set ();
8710 }
8711
8712
8713 /* Set a breakpoint that will evaporate an end of command
8714    at address specified by SAL.
8715    Restrict it to frame FRAME if FRAME is nonzero.  */
8716
8717 struct breakpoint *
8718 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8719                           struct frame_id frame_id, enum bptype type)
8720 {
8721   struct breakpoint *b;
8722
8723   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8724      tail-called one.  */
8725   gdb_assert (!frame_id_artificial_p (frame_id));
8726
8727   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8728   b->enable_state = bp_enabled;
8729   b->disposition = disp_donttouch;
8730   b->frame_id = frame_id;
8731
8732   /* If we're debugging a multi-threaded program, then we want
8733      momentary breakpoints to be active in only a single thread of
8734      control.  */
8735   if (in_thread_list (inferior_ptid))
8736     b->thread = pid_to_thread_id (inferior_ptid);
8737
8738   update_global_location_list_nothrow (1);
8739
8740   return b;
8741 }
8742
8743 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8744    The new breakpoint will have type TYPE, and use OPS as it
8745    breakpoint_ops.  */
8746
8747 static struct breakpoint *
8748 momentary_breakpoint_from_master (struct breakpoint *orig,
8749                                   enum bptype type,
8750                                   const struct breakpoint_ops *ops)
8751 {
8752   struct breakpoint *copy;
8753
8754   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8755   copy->loc = allocate_bp_location (copy);
8756   set_breakpoint_location_function (copy->loc, 1);
8757
8758   copy->loc->gdbarch = orig->loc->gdbarch;
8759   copy->loc->requested_address = orig->loc->requested_address;
8760   copy->loc->address = orig->loc->address;
8761   copy->loc->section = orig->loc->section;
8762   copy->loc->pspace = orig->loc->pspace;
8763   copy->loc->probe = orig->loc->probe;
8764
8765   if (orig->loc->source_file != NULL)
8766     copy->loc->source_file = xstrdup (orig->loc->source_file);
8767
8768   copy->loc->line_number = orig->loc->line_number;
8769   copy->frame_id = orig->frame_id;
8770   copy->thread = orig->thread;
8771   copy->pspace = orig->pspace;
8772
8773   copy->enable_state = bp_enabled;
8774   copy->disposition = disp_donttouch;
8775   copy->number = internal_breakpoint_number--;
8776
8777   update_global_location_list_nothrow (0);
8778   return copy;
8779 }
8780
8781 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8782    ORIG is NULL.  */
8783
8784 struct breakpoint *
8785 clone_momentary_breakpoint (struct breakpoint *orig)
8786 {
8787   /* If there's nothing to clone, then return nothing.  */
8788   if (orig == NULL)
8789     return NULL;
8790
8791   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8792 }
8793
8794 struct breakpoint *
8795 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8796                                 enum bptype type)
8797 {
8798   struct symtab_and_line sal;
8799
8800   sal = find_pc_line (pc, 0);
8801   sal.pc = pc;
8802   sal.section = find_pc_overlay (pc);
8803   sal.explicit_pc = 1;
8804
8805   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8806 }
8807 \f
8808
8809 /* Tell the user we have just set a breakpoint B.  */
8810
8811 static void
8812 mention (struct breakpoint *b)
8813 {
8814   b->ops->print_mention (b);
8815   if (ui_out_is_mi_like_p (current_uiout))
8816     return;
8817   printf_filtered ("\n");
8818 }
8819 \f
8820
8821 static struct bp_location *
8822 add_location_to_breakpoint (struct breakpoint *b,
8823                             const struct symtab_and_line *sal)
8824 {
8825   struct bp_location *loc, **tmp;
8826   CORE_ADDR adjusted_address;
8827   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8828
8829   if (loc_gdbarch == NULL)
8830     loc_gdbarch = b->gdbarch;
8831
8832   /* Adjust the breakpoint's address prior to allocating a location.
8833      Once we call allocate_bp_location(), that mostly uninitialized
8834      location will be placed on the location chain.  Adjustment of the
8835      breakpoint may cause target_read_memory() to be called and we do
8836      not want its scan of the location chain to find a breakpoint and
8837      location that's only been partially initialized.  */
8838   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8839                                                 sal->pc, b->type);
8840
8841   loc = allocate_bp_location (b);
8842   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8843     ;
8844   *tmp = loc;
8845
8846   loc->requested_address = sal->pc;
8847   loc->address = adjusted_address;
8848   loc->pspace = sal->pspace;
8849   loc->probe = sal->probe;
8850   gdb_assert (loc->pspace != NULL);
8851   loc->section = sal->section;
8852   loc->gdbarch = loc_gdbarch;
8853
8854   if (sal->symtab != NULL)
8855     loc->source_file = xstrdup (sal->symtab->filename);
8856   loc->line_number = sal->line;
8857
8858   set_breakpoint_location_function (loc,
8859                                     sal->explicit_pc || sal->explicit_line);
8860   return loc;
8861 }
8862 \f
8863
8864 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8865    return 0 otherwise.  */
8866
8867 static int
8868 bp_loc_is_permanent (struct bp_location *loc)
8869 {
8870   int len;
8871   CORE_ADDR addr;
8872   const gdb_byte *bpoint;
8873   gdb_byte *target_mem;
8874   struct cleanup *cleanup;
8875   int retval = 0;
8876
8877   gdb_assert (loc != NULL);
8878
8879   addr = loc->address;
8880   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8881
8882   /* Software breakpoints unsupported?  */
8883   if (bpoint == NULL)
8884     return 0;
8885
8886   target_mem = alloca (len);
8887
8888   /* Enable the automatic memory restoration from breakpoints while
8889      we read the memory.  Otherwise we could say about our temporary
8890      breakpoints they are permanent.  */
8891   cleanup = save_current_space_and_thread ();
8892
8893   switch_to_program_space_and_thread (loc->pspace);
8894   make_show_memory_breakpoints_cleanup (0);
8895
8896   if (target_read_memory (loc->address, target_mem, len) == 0
8897       && memcmp (target_mem, bpoint, len) == 0)
8898     retval = 1;
8899
8900   do_cleanups (cleanup);
8901
8902   return retval;
8903 }
8904
8905 /* Build a command list for the dprintf corresponding to the current
8906    settings of the dprintf style options.  */
8907
8908 static void
8909 update_dprintf_command_list (struct breakpoint *b)
8910 {
8911   char *dprintf_args = b->extra_string;
8912   char *printf_line = NULL;
8913
8914   if (!dprintf_args)
8915     return;
8916
8917   dprintf_args = skip_spaces (dprintf_args);
8918
8919   /* Allow a comma, as it may have terminated a location, but don't
8920      insist on it.  */
8921   if (*dprintf_args == ',')
8922     ++dprintf_args;
8923   dprintf_args = skip_spaces (dprintf_args);
8924
8925   if (*dprintf_args != '"')
8926     error (_("Bad format string, missing '\"'."));
8927
8928   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8929     printf_line = xstrprintf ("printf %s", dprintf_args);
8930   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8931     {
8932       if (!dprintf_function)
8933         error (_("No function supplied for dprintf call"));
8934
8935       if (dprintf_channel && strlen (dprintf_channel) > 0)
8936         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8937                                   dprintf_function,
8938                                   dprintf_channel,
8939                                   dprintf_args);
8940       else
8941         printf_line = xstrprintf ("call (void) %s (%s)",
8942                                   dprintf_function,
8943                                   dprintf_args);
8944     }
8945   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8946     {
8947       if (target_can_run_breakpoint_commands ())
8948         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8949       else
8950         {
8951           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8952           printf_line = xstrprintf ("printf %s", dprintf_args);
8953         }
8954     }
8955   else
8956     internal_error (__FILE__, __LINE__,
8957                     _("Invalid dprintf style."));
8958
8959   gdb_assert (printf_line != NULL);
8960   /* Manufacture a printf/continue sequence.  */
8961   {
8962     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8963
8964     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8965       {
8966         cont_cmd_line = xmalloc (sizeof (struct command_line));
8967         cont_cmd_line->control_type = simple_control;
8968         cont_cmd_line->body_count = 0;
8969         cont_cmd_line->body_list = NULL;
8970         cont_cmd_line->next = NULL;
8971         cont_cmd_line->line = xstrdup ("continue");
8972       }
8973
8974     printf_cmd_line = xmalloc (sizeof (struct command_line));
8975     printf_cmd_line->control_type = simple_control;
8976     printf_cmd_line->body_count = 0;
8977     printf_cmd_line->body_list = NULL;
8978     printf_cmd_line->next = cont_cmd_line;
8979     printf_cmd_line->line = printf_line;
8980
8981     breakpoint_set_commands (b, printf_cmd_line);
8982   }
8983 }
8984
8985 /* Update all dprintf commands, making their command lists reflect
8986    current style settings.  */
8987
8988 static void
8989 update_dprintf_commands (char *args, int from_tty,
8990                          struct cmd_list_element *c)
8991 {
8992   struct breakpoint *b;
8993
8994   ALL_BREAKPOINTS (b)
8995     {
8996       if (b->type == bp_dprintf)
8997         update_dprintf_command_list (b);
8998     }
8999 }
9000
9001 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
9002    as textual description of the location, and COND_STRING
9003    as condition expression.  */
9004
9005 static void
9006 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9007                      struct symtabs_and_lines sals, char *addr_string,
9008                      char *filter, char *cond_string,
9009                      char *extra_string,
9010                      enum bptype type, enum bpdisp disposition,
9011                      int thread, int task, int ignore_count,
9012                      const struct breakpoint_ops *ops, int from_tty,
9013                      int enabled, int internal, unsigned flags,
9014                      int display_canonical)
9015 {
9016   int i;
9017
9018   if (type == bp_hardware_breakpoint)
9019     {
9020       int target_resources_ok;
9021
9022       i = hw_breakpoint_used_count ();
9023       target_resources_ok =
9024         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9025                                             i + 1, 0);
9026       if (target_resources_ok == 0)
9027         error (_("No hardware breakpoint support in the target."));
9028       else if (target_resources_ok < 0)
9029         error (_("Hardware breakpoints used exceeds limit."));
9030     }
9031
9032   gdb_assert (sals.nelts > 0);
9033
9034   for (i = 0; i < sals.nelts; ++i)
9035     {
9036       struct symtab_and_line sal = sals.sals[i];
9037       struct bp_location *loc;
9038
9039       if (from_tty)
9040         {
9041           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9042           if (!loc_gdbarch)
9043             loc_gdbarch = gdbarch;
9044
9045           describe_other_breakpoints (loc_gdbarch,
9046                                       sal.pspace, sal.pc, sal.section, thread);
9047         }
9048
9049       if (i == 0)
9050         {
9051           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9052           b->thread = thread;
9053           b->task = task;
9054
9055           b->cond_string = cond_string;
9056           b->extra_string = extra_string;
9057           b->ignore_count = ignore_count;
9058           b->enable_state = enabled ? bp_enabled : bp_disabled;
9059           b->disposition = disposition;
9060
9061           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9062             b->loc->inserted = 1;
9063
9064           if (type == bp_static_tracepoint)
9065             {
9066               struct tracepoint *t = (struct tracepoint *) b;
9067               struct static_tracepoint_marker marker;
9068
9069               if (strace_marker_p (b))
9070                 {
9071                   /* We already know the marker exists, otherwise, we
9072                      wouldn't see a sal for it.  */
9073                   char *p = &addr_string[3];
9074                   char *endp;
9075                   char *marker_str;
9076
9077                   p = skip_spaces (p);
9078
9079                   endp = skip_to_space (p);
9080
9081                   marker_str = savestring (p, endp - p);
9082                   t->static_trace_marker_id = marker_str;
9083
9084                   printf_filtered (_("Probed static tracepoint "
9085                                      "marker \"%s\"\n"),
9086                                    t->static_trace_marker_id);
9087                 }
9088               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9089                 {
9090                   t->static_trace_marker_id = xstrdup (marker.str_id);
9091                   release_static_tracepoint_marker (&marker);
9092
9093                   printf_filtered (_("Probed static tracepoint "
9094                                      "marker \"%s\"\n"),
9095                                    t->static_trace_marker_id);
9096                 }
9097               else
9098                 warning (_("Couldn't determine the static "
9099                            "tracepoint marker to probe"));
9100             }
9101
9102           loc = b->loc;
9103         }
9104       else
9105         {
9106           loc = add_location_to_breakpoint (b, &sal);
9107           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9108             loc->inserted = 1;
9109         }
9110
9111       if (bp_loc_is_permanent (loc))
9112         make_breakpoint_permanent (b);
9113
9114       if (b->cond_string)
9115         {
9116           char *arg = b->cond_string;
9117           loc->cond = parse_exp_1 (&arg, loc->address,
9118                                    block_for_pc (loc->address), 0);
9119           if (*arg)
9120               error (_("Garbage '%s' follows condition"), arg);
9121         }
9122
9123       /* Dynamic printf requires and uses additional arguments on the
9124          command line, otherwise it's an error.  */
9125       if (type == bp_dprintf)
9126         {
9127           if (b->extra_string)
9128             update_dprintf_command_list (b);
9129           else
9130             error (_("Format string required"));
9131         }
9132       else if (b->extra_string)
9133         error (_("Garbage '%s' at end of command"), b->extra_string);
9134     }
9135
9136   b->display_canonical = display_canonical;
9137   if (addr_string)
9138     b->addr_string = addr_string;
9139   else
9140     /* addr_string has to be used or breakpoint_re_set will delete
9141        me.  */
9142     b->addr_string
9143       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9144   b->filter = filter;
9145 }
9146
9147 static void
9148 create_breakpoint_sal (struct gdbarch *gdbarch,
9149                        struct symtabs_and_lines sals, char *addr_string,
9150                        char *filter, char *cond_string,
9151                        char *extra_string,
9152                        enum bptype type, enum bpdisp disposition,
9153                        int thread, int task, int ignore_count,
9154                        const struct breakpoint_ops *ops, int from_tty,
9155                        int enabled, int internal, unsigned flags,
9156                        int display_canonical)
9157 {
9158   struct breakpoint *b;
9159   struct cleanup *old_chain;
9160
9161   if (is_tracepoint_type (type))
9162     {
9163       struct tracepoint *t;
9164
9165       t = XCNEW (struct tracepoint);
9166       b = &t->base;
9167     }
9168   else
9169     b = XNEW (struct breakpoint);
9170
9171   old_chain = make_cleanup (xfree, b);
9172
9173   init_breakpoint_sal (b, gdbarch,
9174                        sals, addr_string,
9175                        filter, cond_string, extra_string,
9176                        type, disposition,
9177                        thread, task, ignore_count,
9178                        ops, from_tty,
9179                        enabled, internal, flags,
9180                        display_canonical);
9181   discard_cleanups (old_chain);
9182
9183   install_breakpoint (internal, b, 0);
9184 }
9185
9186 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9187    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9188    value.  COND_STRING, if not NULL, specified the condition to be
9189    used for all breakpoints.  Essentially the only case where
9190    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9191    function.  In that case, it's still not possible to specify
9192    separate conditions for different overloaded functions, so
9193    we take just a single condition string.
9194    
9195    NOTE: If the function succeeds, the caller is expected to cleanup
9196    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9197    array contents).  If the function fails (error() is called), the
9198    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9199    COND and SALS arrays and each of those arrays contents.  */
9200
9201 static void
9202 create_breakpoints_sal (struct gdbarch *gdbarch,
9203                         struct linespec_result *canonical,
9204                         char *cond_string, char *extra_string,
9205                         enum bptype type, enum bpdisp disposition,
9206                         int thread, int task, int ignore_count,
9207                         const struct breakpoint_ops *ops, int from_tty,
9208                         int enabled, int internal, unsigned flags)
9209 {
9210   int i;
9211   struct linespec_sals *lsal;
9212
9213   if (canonical->pre_expanded)
9214     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9215
9216   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9217     {
9218       /* Note that 'addr_string' can be NULL in the case of a plain
9219          'break', without arguments.  */
9220       char *addr_string = (canonical->addr_string
9221                            ? xstrdup (canonical->addr_string)
9222                            : NULL);
9223       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9224       struct cleanup *inner = make_cleanup (xfree, addr_string);
9225
9226       make_cleanup (xfree, filter_string);
9227       create_breakpoint_sal (gdbarch, lsal->sals,
9228                              addr_string,
9229                              filter_string,
9230                              cond_string, extra_string,
9231                              type, disposition,
9232                              thread, task, ignore_count, ops,
9233                              from_tty, enabled, internal, flags,
9234                              canonical->special_display);
9235       discard_cleanups (inner);
9236     }
9237 }
9238
9239 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9240    followed by conditionals.  On return, SALS contains an array of SAL
9241    addresses found.  ADDR_STRING contains a vector of (canonical)
9242    address strings.  ADDRESS points to the end of the SAL.
9243
9244    The array and the line spec strings are allocated on the heap, it is
9245    the caller's responsibility to free them.  */
9246
9247 static void
9248 parse_breakpoint_sals (char **address,
9249                        struct linespec_result *canonical)
9250 {
9251   /* If no arg given, or if first arg is 'if ', use the default
9252      breakpoint.  */
9253   if ((*address) == NULL
9254       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9255     {
9256       /* The last displayed codepoint, if it's valid, is our default breakpoint
9257          address.  */
9258       if (last_displayed_sal_is_valid ())
9259         {
9260           struct linespec_sals lsal;
9261           struct symtab_and_line sal;
9262           CORE_ADDR pc;
9263
9264           init_sal (&sal);              /* Initialize to zeroes.  */
9265           lsal.sals.sals = (struct symtab_and_line *)
9266             xmalloc (sizeof (struct symtab_and_line));
9267
9268           /* Set sal's pspace, pc, symtab, and line to the values
9269              corresponding to the last call to print_frame_info.
9270              Be sure to reinitialize LINE with NOTCURRENT == 0
9271              as the breakpoint line number is inappropriate otherwise.
9272              find_pc_line would adjust PC, re-set it back.  */
9273           get_last_displayed_sal (&sal);
9274           pc = sal.pc;
9275           sal = find_pc_line (pc, 0);
9276
9277           /* "break" without arguments is equivalent to "break *PC"
9278              where PC is the last displayed codepoint's address.  So
9279              make sure to set sal.explicit_pc to prevent GDB from
9280              trying to expand the list of sals to include all other
9281              instances with the same symtab and line.  */
9282           sal.pc = pc;
9283           sal.explicit_pc = 1;
9284
9285           lsal.sals.sals[0] = sal;
9286           lsal.sals.nelts = 1;
9287           lsal.canonical = NULL;
9288
9289           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9290         }
9291       else
9292         error (_("No default breakpoint address now."));
9293     }
9294   else
9295     {
9296       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9297
9298       /* Force almost all breakpoints to be in terms of the
9299          current_source_symtab (which is decode_line_1's default).
9300          This should produce the results we want almost all of the
9301          time while leaving default_breakpoint_* alone.
9302
9303          ObjC: However, don't match an Objective-C method name which
9304          may have a '+' or '-' succeeded by a '['.  */
9305       if (last_displayed_sal_is_valid ()
9306           && (!cursal.symtab
9307               || ((strchr ("+-", (*address)[0]) != NULL)
9308                   && ((*address)[1] != '['))))
9309         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9310                           get_last_displayed_symtab (),
9311                           get_last_displayed_line (),
9312                           canonical, NULL, NULL);
9313       else
9314         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9315                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9316     }
9317 }
9318
9319
9320 /* Convert each SAL into a real PC.  Verify that the PC can be
9321    inserted as a breakpoint.  If it can't throw an error.  */
9322
9323 static void
9324 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9325 {    
9326   int i;
9327
9328   for (i = 0; i < sals->nelts; i++)
9329     resolve_sal_pc (&sals->sals[i]);
9330 }
9331
9332 /* Fast tracepoints may have restrictions on valid locations.  For
9333    instance, a fast tracepoint using a jump instead of a trap will
9334    likely have to overwrite more bytes than a trap would, and so can
9335    only be placed where the instruction is longer than the jump, or a
9336    multi-instruction sequence does not have a jump into the middle of
9337    it, etc.  */
9338
9339 static void
9340 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9341                             struct symtabs_and_lines *sals)
9342 {
9343   int i, rslt;
9344   struct symtab_and_line *sal;
9345   char *msg;
9346   struct cleanup *old_chain;
9347
9348   for (i = 0; i < sals->nelts; i++)
9349     {
9350       struct gdbarch *sarch;
9351
9352       sal = &sals->sals[i];
9353
9354       sarch = get_sal_arch (*sal);
9355       /* We fall back to GDBARCH if there is no architecture
9356          associated with SAL.  */
9357       if (sarch == NULL)
9358         sarch = gdbarch;
9359       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9360                                                NULL, &msg);
9361       old_chain = make_cleanup (xfree, msg);
9362
9363       if (!rslt)
9364         error (_("May not have a fast tracepoint at 0x%s%s"),
9365                paddress (sarch, sal->pc), (msg ? msg : ""));
9366
9367       do_cleanups (old_chain);
9368     }
9369 }
9370
9371 /* Issue an invalid thread ID error.  */
9372
9373 static void ATTRIBUTE_NORETURN
9374 invalid_thread_id_error (int id)
9375 {
9376   error (_("Unknown thread %d."), id);
9377 }
9378
9379 /* Given TOK, a string specification of condition and thread, as
9380    accepted by the 'break' command, extract the condition
9381    string and thread number and set *COND_STRING and *THREAD.
9382    PC identifies the context at which the condition should be parsed.
9383    If no condition is found, *COND_STRING is set to NULL.
9384    If no thread is found, *THREAD is set to -1.  */
9385
9386 static void
9387 find_condition_and_thread (char *tok, CORE_ADDR pc,
9388                            char **cond_string, int *thread, int *task,
9389                            char **rest)
9390 {
9391   *cond_string = NULL;
9392   *thread = -1;
9393   *task = 0;
9394   *rest = NULL;
9395
9396   while (tok && *tok)
9397     {
9398       char *end_tok;
9399       int toklen;
9400       char *cond_start = NULL;
9401       char *cond_end = NULL;
9402
9403       tok = skip_spaces (tok);
9404
9405       if ((*tok == '"' || *tok == ',') && rest)
9406         {
9407           *rest = savestring (tok, strlen (tok));
9408           return;
9409         }
9410
9411       end_tok = skip_to_space (tok);
9412
9413       toklen = end_tok - tok;
9414
9415       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9416         {
9417           struct expression *expr;
9418
9419           tok = cond_start = end_tok + 1;
9420           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9421           xfree (expr);
9422           cond_end = tok;
9423           *cond_string = savestring (cond_start, cond_end - cond_start);
9424         }
9425       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9426         {
9427           char *tmptok;
9428
9429           tok = end_tok + 1;
9430           tmptok = tok;
9431           *thread = strtol (tok, &tok, 0);
9432           if (tok == tmptok)
9433             error (_("Junk after thread keyword."));
9434           if (!valid_thread_id (*thread))
9435             invalid_thread_id_error (*thread);
9436         }
9437       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9438         {
9439           char *tmptok;
9440
9441           tok = end_tok + 1;
9442           tmptok = tok;
9443           *task = strtol (tok, &tok, 0);
9444           if (tok == tmptok)
9445             error (_("Junk after task keyword."));
9446           if (!valid_task_id (*task))
9447             error (_("Unknown task %d."), *task);
9448         }
9449       else if (rest)
9450         {
9451           *rest = savestring (tok, strlen (tok));
9452           return;
9453         }
9454       else
9455         error (_("Junk at end of arguments."));
9456     }
9457 }
9458
9459 /* Decode a static tracepoint marker spec.  */
9460
9461 static struct symtabs_and_lines
9462 decode_static_tracepoint_spec (char **arg_p)
9463 {
9464   VEC(static_tracepoint_marker_p) *markers = NULL;
9465   struct symtabs_and_lines sals;
9466   struct cleanup *old_chain;
9467   char *p = &(*arg_p)[3];
9468   char *endp;
9469   char *marker_str;
9470   int i;
9471
9472   p = skip_spaces (p);
9473
9474   endp = skip_to_space (p);
9475
9476   marker_str = savestring (p, endp - p);
9477   old_chain = make_cleanup (xfree, marker_str);
9478
9479   markers = target_static_tracepoint_markers_by_strid (marker_str);
9480   if (VEC_empty(static_tracepoint_marker_p, markers))
9481     error (_("No known static tracepoint marker named %s"), marker_str);
9482
9483   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9484   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9485
9486   for (i = 0; i < sals.nelts; i++)
9487     {
9488       struct static_tracepoint_marker *marker;
9489
9490       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9491
9492       init_sal (&sals.sals[i]);
9493
9494       sals.sals[i] = find_pc_line (marker->address, 0);
9495       sals.sals[i].pc = marker->address;
9496
9497       release_static_tracepoint_marker (marker);
9498     }
9499
9500   do_cleanups (old_chain);
9501
9502   *arg_p = endp;
9503   return sals;
9504 }
9505
9506 /* Set a breakpoint.  This function is shared between CLI and MI
9507    functions for setting a breakpoint.  This function has two major
9508    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9509    parameter.  If non-zero, the function will parse arg, extracting
9510    breakpoint location, address and thread.  Otherwise, ARG is just
9511    the location of breakpoint, with condition and thread specified by
9512    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9513    the breakpoint number will be allocated from the internal
9514    breakpoint count.  Returns true if any breakpoint was created;
9515    false otherwise.  */
9516
9517 int
9518 create_breakpoint (struct gdbarch *gdbarch,
9519                    char *arg, char *cond_string,
9520                    int thread, char *extra_string,
9521                    int parse_condition_and_thread,
9522                    int tempflag, enum bptype type_wanted,
9523                    int ignore_count,
9524                    enum auto_boolean pending_break_support,
9525                    const struct breakpoint_ops *ops,
9526                    int from_tty, int enabled, int internal,
9527                    unsigned flags)
9528 {
9529   volatile struct gdb_exception e;
9530   char *copy_arg = NULL;
9531   char *addr_start = arg;
9532   struct linespec_result canonical;
9533   struct cleanup *old_chain;
9534   struct cleanup *bkpt_chain = NULL;
9535   int pending = 0;
9536   int task = 0;
9537   int prev_bkpt_count = breakpoint_count;
9538
9539   gdb_assert (ops != NULL);
9540
9541   init_linespec_result (&canonical);
9542
9543   TRY_CATCH (e, RETURN_MASK_ALL)
9544     {
9545       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9546                                      addr_start, &copy_arg);
9547     }
9548
9549   /* If caller is interested in rc value from parse, set value.  */
9550   switch (e.reason)
9551     {
9552     case GDB_NO_ERROR:
9553       if (VEC_empty (linespec_sals, canonical.sals))
9554         return 0;
9555       break;
9556     case RETURN_ERROR:
9557       switch (e.error)
9558         {
9559         case NOT_FOUND_ERROR:
9560
9561           /* If pending breakpoint support is turned off, throw
9562              error.  */
9563
9564           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9565             throw_exception (e);
9566
9567           exception_print (gdb_stderr, e);
9568
9569           /* If pending breakpoint support is auto query and the user
9570              selects no, then simply return the error code.  */
9571           if (pending_break_support == AUTO_BOOLEAN_AUTO
9572               && !nquery (_("Make %s pending on future shared library load? "),
9573                           bptype_string (type_wanted)))
9574             return 0;
9575
9576           /* At this point, either the user was queried about setting
9577              a pending breakpoint and selected yes, or pending
9578              breakpoint behavior is on and thus a pending breakpoint
9579              is defaulted on behalf of the user.  */
9580           {
9581             struct linespec_sals lsal;
9582
9583             copy_arg = xstrdup (addr_start);
9584             lsal.canonical = xstrdup (copy_arg);
9585             lsal.sals.nelts = 1;
9586             lsal.sals.sals = XNEW (struct symtab_and_line);
9587             init_sal (&lsal.sals.sals[0]);
9588             pending = 1;
9589             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9590           }
9591           break;
9592         default:
9593           throw_exception (e);
9594         }
9595       break;
9596     default:
9597       throw_exception (e);
9598     }
9599
9600   /* Create a chain of things that always need to be cleaned up.  */
9601   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9602
9603   /* ----------------------------- SNIP -----------------------------
9604      Anything added to the cleanup chain beyond this point is assumed
9605      to be part of a breakpoint.  If the breakpoint create succeeds
9606      then the memory is not reclaimed.  */
9607   bkpt_chain = make_cleanup (null_cleanup, 0);
9608
9609   /* Resolve all line numbers to PC's and verify that the addresses
9610      are ok for the target.  */
9611   if (!pending)
9612     {
9613       int ix;
9614       struct linespec_sals *iter;
9615
9616       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9617         breakpoint_sals_to_pc (&iter->sals);
9618     }
9619
9620   /* Fast tracepoints may have additional restrictions on location.  */
9621   if (!pending && type_wanted == bp_fast_tracepoint)
9622     {
9623       int ix;
9624       struct linespec_sals *iter;
9625
9626       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9627         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9628     }
9629
9630   /* Verify that condition can be parsed, before setting any
9631      breakpoints.  Allocate a separate condition expression for each
9632      breakpoint.  */
9633   if (!pending)
9634     {
9635       struct linespec_sals *lsal;
9636
9637       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9638
9639       if (parse_condition_and_thread)
9640         {
9641             char *rest;
9642             /* Here we only parse 'arg' to separate condition
9643                from thread number, so parsing in context of first
9644                sal is OK.  When setting the breakpoint we'll 
9645                re-parse it in context of each sal.  */
9646
9647             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9648                                        &thread, &task, &rest);
9649             if (cond_string)
9650                 make_cleanup (xfree, cond_string);
9651             if (rest)
9652               make_cleanup (xfree, rest);
9653             if (rest)
9654               extra_string = rest;
9655         }
9656       else
9657         {
9658             /* Create a private copy of condition string.  */
9659             if (cond_string)
9660             {
9661                 cond_string = xstrdup (cond_string);
9662                 make_cleanup (xfree, cond_string);
9663             }
9664             /* Create a private copy of any extra string.  */
9665             if (extra_string)
9666               {
9667                 extra_string = xstrdup (extra_string);
9668                 make_cleanup (xfree, extra_string);
9669               }
9670         }
9671
9672       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9673                                    cond_string, extra_string, type_wanted,
9674                                    tempflag ? disp_del : disp_donttouch,
9675                                    thread, task, ignore_count, ops,
9676                                    from_tty, enabled, internal, flags);
9677     }
9678   else
9679     {
9680       struct breakpoint *b;
9681
9682       make_cleanup (xfree, copy_arg);
9683
9684       if (is_tracepoint_type (type_wanted))
9685         {
9686           struct tracepoint *t;
9687
9688           t = XCNEW (struct tracepoint);
9689           b = &t->base;
9690         }
9691       else
9692         b = XNEW (struct breakpoint);
9693
9694       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9695
9696       b->addr_string = copy_arg;
9697       if (parse_condition_and_thread)
9698         b->cond_string = NULL;
9699       else
9700         {
9701           /* Create a private copy of condition string.  */
9702           if (cond_string)
9703             {
9704               cond_string = xstrdup (cond_string);
9705               make_cleanup (xfree, cond_string);
9706             }
9707           b->cond_string = cond_string;
9708         }
9709       b->extra_string = NULL;
9710       b->ignore_count = ignore_count;
9711       b->disposition = tempflag ? disp_del : disp_donttouch;
9712       b->condition_not_parsed = 1;
9713       b->enable_state = enabled ? bp_enabled : bp_disabled;
9714       if ((type_wanted != bp_breakpoint
9715            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9716         b->pspace = current_program_space;
9717
9718       install_breakpoint (internal, b, 0);
9719     }
9720   
9721   if (VEC_length (linespec_sals, canonical.sals) > 1)
9722     {
9723       warning (_("Multiple breakpoints were set.\nUse the "
9724                  "\"delete\" command to delete unwanted breakpoints."));
9725       prev_breakpoint_count = prev_bkpt_count;
9726     }
9727
9728   /* That's it.  Discard the cleanups for data inserted into the
9729      breakpoint.  */
9730   discard_cleanups (bkpt_chain);
9731   /* But cleanup everything else.  */
9732   do_cleanups (old_chain);
9733
9734   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9735   update_global_location_list (1);
9736
9737   return 1;
9738 }
9739
9740 /* Set a breakpoint.
9741    ARG is a string describing breakpoint address,
9742    condition, and thread.
9743    FLAG specifies if a breakpoint is hardware on,
9744    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9745    and BP_TEMPFLAG.  */
9746
9747 static void
9748 break_command_1 (char *arg, int flag, int from_tty)
9749 {
9750   int tempflag = flag & BP_TEMPFLAG;
9751   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9752                              ? bp_hardware_breakpoint
9753                              : bp_breakpoint);
9754   struct breakpoint_ops *ops;
9755   const char *arg_cp = arg;
9756
9757   /* Matching breakpoints on probes.  */
9758   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9759     ops = &bkpt_probe_breakpoint_ops;
9760   else
9761     ops = &bkpt_breakpoint_ops;
9762
9763   create_breakpoint (get_current_arch (),
9764                      arg,
9765                      NULL, 0, NULL, 1 /* parse arg */,
9766                      tempflag, type_wanted,
9767                      0 /* Ignore count */,
9768                      pending_break_support,
9769                      ops,
9770                      from_tty,
9771                      1 /* enabled */,
9772                      0 /* internal */,
9773                      0);
9774 }
9775
9776 /* Helper function for break_command_1 and disassemble_command.  */
9777
9778 void
9779 resolve_sal_pc (struct symtab_and_line *sal)
9780 {
9781   CORE_ADDR pc;
9782
9783   if (sal->pc == 0 && sal->symtab != NULL)
9784     {
9785       if (!find_line_pc (sal->symtab, sal->line, &pc))
9786         error (_("No line %d in file \"%s\"."),
9787                sal->line, sal->symtab->filename);
9788       sal->pc = pc;
9789
9790       /* If this SAL corresponds to a breakpoint inserted using a line
9791          number, then skip the function prologue if necessary.  */
9792       if (sal->explicit_line)
9793         skip_prologue_sal (sal);
9794     }
9795
9796   if (sal->section == 0 && sal->symtab != NULL)
9797     {
9798       struct blockvector *bv;
9799       struct block *b;
9800       struct symbol *sym;
9801
9802       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9803       if (bv != NULL)
9804         {
9805           sym = block_linkage_function (b);
9806           if (sym != NULL)
9807             {
9808               fixup_symbol_section (sym, sal->symtab->objfile);
9809               sal->section = SYMBOL_OBJ_SECTION (sym);
9810             }
9811           else
9812             {
9813               /* It really is worthwhile to have the section, so we'll
9814                  just have to look harder. This case can be executed
9815                  if we have line numbers but no functions (as can
9816                  happen in assembly source).  */
9817
9818               struct minimal_symbol *msym;
9819               struct cleanup *old_chain = save_current_space_and_thread ();
9820
9821               switch_to_program_space_and_thread (sal->pspace);
9822
9823               msym = lookup_minimal_symbol_by_pc (sal->pc);
9824               if (msym)
9825                 sal->section = SYMBOL_OBJ_SECTION (msym);
9826
9827               do_cleanups (old_chain);
9828             }
9829         }
9830     }
9831 }
9832
9833 void
9834 break_command (char *arg, int from_tty)
9835 {
9836   break_command_1 (arg, 0, from_tty);
9837 }
9838
9839 void
9840 tbreak_command (char *arg, int from_tty)
9841 {
9842   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9843 }
9844
9845 static void
9846 hbreak_command (char *arg, int from_tty)
9847 {
9848   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9849 }
9850
9851 static void
9852 thbreak_command (char *arg, int from_tty)
9853 {
9854   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9855 }
9856
9857 static void
9858 stop_command (char *arg, int from_tty)
9859 {
9860   printf_filtered (_("Specify the type of breakpoint to set.\n\
9861 Usage: stop in <function | address>\n\
9862        stop at <line>\n"));
9863 }
9864
9865 static void
9866 stopin_command (char *arg, int from_tty)
9867 {
9868   int badInput = 0;
9869
9870   if (arg == (char *) NULL)
9871     badInput = 1;
9872   else if (*arg != '*')
9873     {
9874       char *argptr = arg;
9875       int hasColon = 0;
9876
9877       /* Look for a ':'.  If this is a line number specification, then
9878          say it is bad, otherwise, it should be an address or
9879          function/method name.  */
9880       while (*argptr && !hasColon)
9881         {
9882           hasColon = (*argptr == ':');
9883           argptr++;
9884         }
9885
9886       if (hasColon)
9887         badInput = (*argptr != ':');    /* Not a class::method */
9888       else
9889         badInput = isdigit (*arg);      /* a simple line number */
9890     }
9891
9892   if (badInput)
9893     printf_filtered (_("Usage: stop in <function | address>\n"));
9894   else
9895     break_command_1 (arg, 0, from_tty);
9896 }
9897
9898 static void
9899 stopat_command (char *arg, int from_tty)
9900 {
9901   int badInput = 0;
9902
9903   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9904     badInput = 1;
9905   else
9906     {
9907       char *argptr = arg;
9908       int hasColon = 0;
9909
9910       /* Look for a ':'.  If there is a '::' then get out, otherwise
9911          it is probably a line number.  */
9912       while (*argptr && !hasColon)
9913         {
9914           hasColon = (*argptr == ':');
9915           argptr++;
9916         }
9917
9918       if (hasColon)
9919         badInput = (*argptr == ':');    /* we have class::method */
9920       else
9921         badInput = !isdigit (*arg);     /* not a line number */
9922     }
9923
9924   if (badInput)
9925     printf_filtered (_("Usage: stop at <line>\n"));
9926   else
9927     break_command_1 (arg, 0, from_tty);
9928 }
9929
9930 /* The dynamic printf command is mostly like a regular breakpoint, but
9931    with a prewired command list consisting of a single output command,
9932    built from extra arguments supplied on the dprintf command
9933    line.  */
9934
9935 static void
9936 dprintf_command (char *arg, int from_tty)
9937 {
9938   create_breakpoint (get_current_arch (),
9939                      arg,
9940                      NULL, 0, NULL, 1 /* parse arg */,
9941                      0, bp_dprintf,
9942                      0 /* Ignore count */,
9943                      pending_break_support,
9944                      &dprintf_breakpoint_ops,
9945                      from_tty,
9946                      1 /* enabled */,
9947                      0 /* internal */,
9948                      0);
9949 }
9950
9951 static void
9952 agent_printf_command (char *arg, int from_tty)
9953 {
9954   error (_("May only run agent-printf on the target"));
9955 }
9956
9957 /* Implement the "breakpoint_hit" breakpoint_ops method for
9958    ranged breakpoints.  */
9959
9960 static int
9961 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9962                                   struct address_space *aspace,
9963                                   CORE_ADDR bp_addr,
9964                                   const struct target_waitstatus *ws)
9965 {
9966   if (ws->kind != TARGET_WAITKIND_STOPPED
9967       || ws->value.sig != GDB_SIGNAL_TRAP)
9968     return 0;
9969
9970   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9971                                          bl->length, aspace, bp_addr);
9972 }
9973
9974 /* Implement the "resources_needed" breakpoint_ops method for
9975    ranged breakpoints.  */
9976
9977 static int
9978 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9979 {
9980   return target_ranged_break_num_registers ();
9981 }
9982
9983 /* Implement the "print_it" breakpoint_ops method for
9984    ranged breakpoints.  */
9985
9986 static enum print_stop_action
9987 print_it_ranged_breakpoint (bpstat bs)
9988 {
9989   struct breakpoint *b = bs->breakpoint_at;
9990   struct bp_location *bl = b->loc;
9991   struct ui_out *uiout = current_uiout;
9992
9993   gdb_assert (b->type == bp_hardware_breakpoint);
9994
9995   /* Ranged breakpoints have only one location.  */
9996   gdb_assert (bl && bl->next == NULL);
9997
9998   annotate_breakpoint (b->number);
9999   if (b->disposition == disp_del)
10000     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10001   else
10002     ui_out_text (uiout, "\nRanged breakpoint ");
10003   if (ui_out_is_mi_like_p (uiout))
10004     {
10005       ui_out_field_string (uiout, "reason",
10006                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10007       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10008     }
10009   ui_out_field_int (uiout, "bkptno", b->number);
10010   ui_out_text (uiout, ", ");
10011
10012   return PRINT_SRC_AND_LOC;
10013 }
10014
10015 /* Implement the "print_one" breakpoint_ops method for
10016    ranged breakpoints.  */
10017
10018 static void
10019 print_one_ranged_breakpoint (struct breakpoint *b,
10020                              struct bp_location **last_loc)
10021 {
10022   struct bp_location *bl = b->loc;
10023   struct value_print_options opts;
10024   struct ui_out *uiout = current_uiout;
10025
10026   /* Ranged breakpoints have only one location.  */
10027   gdb_assert (bl && bl->next == NULL);
10028
10029   get_user_print_options (&opts);
10030
10031   if (opts.addressprint)
10032     /* We don't print the address range here, it will be printed later
10033        by print_one_detail_ranged_breakpoint.  */
10034     ui_out_field_skip (uiout, "addr");
10035   annotate_field (5);
10036   print_breakpoint_location (b, bl);
10037   *last_loc = bl;
10038 }
10039
10040 /* Implement the "print_one_detail" breakpoint_ops method for
10041    ranged breakpoints.  */
10042
10043 static void
10044 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10045                                     struct ui_out *uiout)
10046 {
10047   CORE_ADDR address_start, address_end;
10048   struct bp_location *bl = b->loc;
10049   struct ui_file *stb = mem_fileopen ();
10050   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10051
10052   gdb_assert (bl);
10053
10054   address_start = bl->address;
10055   address_end = address_start + bl->length - 1;
10056
10057   ui_out_text (uiout, "\taddress range: ");
10058   fprintf_unfiltered (stb, "[%s, %s]",
10059                       print_core_address (bl->gdbarch, address_start),
10060                       print_core_address (bl->gdbarch, address_end));
10061   ui_out_field_stream (uiout, "addr", stb);
10062   ui_out_text (uiout, "\n");
10063
10064   do_cleanups (cleanup);
10065 }
10066
10067 /* Implement the "print_mention" breakpoint_ops method for
10068    ranged breakpoints.  */
10069
10070 static void
10071 print_mention_ranged_breakpoint (struct breakpoint *b)
10072 {
10073   struct bp_location *bl = b->loc;
10074   struct ui_out *uiout = current_uiout;
10075
10076   gdb_assert (bl);
10077   gdb_assert (b->type == bp_hardware_breakpoint);
10078
10079   if (ui_out_is_mi_like_p (uiout))
10080     return;
10081
10082   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10083                    b->number, paddress (bl->gdbarch, bl->address),
10084                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10085 }
10086
10087 /* Implement the "print_recreate" breakpoint_ops method for
10088    ranged breakpoints.  */
10089
10090 static void
10091 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10092 {
10093   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10094                       b->addr_string_range_end);
10095   print_recreate_thread (b, fp);
10096 }
10097
10098 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10099
10100 static struct breakpoint_ops ranged_breakpoint_ops;
10101
10102 /* Find the address where the end of the breakpoint range should be
10103    placed, given the SAL of the end of the range.  This is so that if
10104    the user provides a line number, the end of the range is set to the
10105    last instruction of the given line.  */
10106
10107 static CORE_ADDR
10108 find_breakpoint_range_end (struct symtab_and_line sal)
10109 {
10110   CORE_ADDR end;
10111
10112   /* If the user provided a PC value, use it.  Otherwise,
10113      find the address of the end of the given location.  */
10114   if (sal.explicit_pc)
10115     end = sal.pc;
10116   else
10117     {
10118       int ret;
10119       CORE_ADDR start;
10120
10121       ret = find_line_pc_range (sal, &start, &end);
10122       if (!ret)
10123         error (_("Could not find location of the end of the range."));
10124
10125       /* find_line_pc_range returns the start of the next line.  */
10126       end--;
10127     }
10128
10129   return end;
10130 }
10131
10132 /* Implement the "break-range" CLI command.  */
10133
10134 static void
10135 break_range_command (char *arg, int from_tty)
10136 {
10137   char *arg_start, *addr_string_start, *addr_string_end;
10138   struct linespec_result canonical_start, canonical_end;
10139   int bp_count, can_use_bp, length;
10140   CORE_ADDR end;
10141   struct breakpoint *b;
10142   struct symtab_and_line sal_start, sal_end;
10143   struct cleanup *cleanup_bkpt;
10144   struct linespec_sals *lsal_start, *lsal_end;
10145
10146   /* We don't support software ranged breakpoints.  */
10147   if (target_ranged_break_num_registers () < 0)
10148     error (_("This target does not support hardware ranged breakpoints."));
10149
10150   bp_count = hw_breakpoint_used_count ();
10151   bp_count += target_ranged_break_num_registers ();
10152   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10153                                                    bp_count, 0);
10154   if (can_use_bp < 0)
10155     error (_("Hardware breakpoints used exceeds limit."));
10156
10157   arg = skip_spaces (arg);
10158   if (arg == NULL || arg[0] == '\0')
10159     error(_("No address range specified."));
10160
10161   init_linespec_result (&canonical_start);
10162
10163   arg_start = arg;
10164   parse_breakpoint_sals (&arg, &canonical_start);
10165
10166   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10167
10168   if (arg[0] != ',')
10169     error (_("Too few arguments."));
10170   else if (VEC_empty (linespec_sals, canonical_start.sals))
10171     error (_("Could not find location of the beginning of the range."));
10172
10173   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10174
10175   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10176       || lsal_start->sals.nelts != 1)
10177     error (_("Cannot create a ranged breakpoint with multiple locations."));
10178
10179   sal_start = lsal_start->sals.sals[0];
10180   addr_string_start = savestring (arg_start, arg - arg_start);
10181   make_cleanup (xfree, addr_string_start);
10182
10183   arg++;        /* Skip the comma.  */
10184   arg = skip_spaces (arg);
10185
10186   /* Parse the end location.  */
10187
10188   init_linespec_result (&canonical_end);
10189   arg_start = arg;
10190
10191   /* We call decode_line_full directly here instead of using
10192      parse_breakpoint_sals because we need to specify the start location's
10193      symtab and line as the default symtab and line for the end of the
10194      range.  This makes it possible to have ranges like "foo.c:27, +14",
10195      where +14 means 14 lines from the start location.  */
10196   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10197                     sal_start.symtab, sal_start.line,
10198                     &canonical_end, NULL, NULL);
10199
10200   make_cleanup_destroy_linespec_result (&canonical_end);
10201
10202   if (VEC_empty (linespec_sals, canonical_end.sals))
10203     error (_("Could not find location of the end of the range."));
10204
10205   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10206   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10207       || lsal_end->sals.nelts != 1)
10208     error (_("Cannot create a ranged breakpoint with multiple locations."));
10209
10210   sal_end = lsal_end->sals.sals[0];
10211   addr_string_end = savestring (arg_start, arg - arg_start);
10212   make_cleanup (xfree, addr_string_end);
10213
10214   end = find_breakpoint_range_end (sal_end);
10215   if (sal_start.pc > end)
10216     error (_("Invalid address range, end precedes start."));
10217
10218   length = end - sal_start.pc + 1;
10219   if (length < 0)
10220     /* Length overflowed.  */
10221     error (_("Address range too large."));
10222   else if (length == 1)
10223     {
10224       /* This range is simple enough to be handled by
10225          the `hbreak' command.  */
10226       hbreak_command (addr_string_start, 1);
10227
10228       do_cleanups (cleanup_bkpt);
10229
10230       return;
10231     }
10232
10233   /* Now set up the breakpoint.  */
10234   b = set_raw_breakpoint (get_current_arch (), sal_start,
10235                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10236   set_breakpoint_count (breakpoint_count + 1);
10237   b->number = breakpoint_count;
10238   b->disposition = disp_donttouch;
10239   b->addr_string = xstrdup (addr_string_start);
10240   b->addr_string_range_end = xstrdup (addr_string_end);
10241   b->loc->length = length;
10242
10243   do_cleanups (cleanup_bkpt);
10244
10245   mention (b);
10246   observer_notify_breakpoint_created (b);
10247   update_global_location_list (1);
10248 }
10249
10250 /*  Return non-zero if EXP is verified as constant.  Returned zero
10251     means EXP is variable.  Also the constant detection may fail for
10252     some constant expressions and in such case still falsely return
10253     zero.  */
10254
10255 static int
10256 watchpoint_exp_is_const (const struct expression *exp)
10257 {
10258   int i = exp->nelts;
10259
10260   while (i > 0)
10261     {
10262       int oplenp, argsp;
10263
10264       /* We are only interested in the descriptor of each element.  */
10265       operator_length (exp, i, &oplenp, &argsp);
10266       i -= oplenp;
10267
10268       switch (exp->elts[i].opcode)
10269         {
10270         case BINOP_ADD:
10271         case BINOP_SUB:
10272         case BINOP_MUL:
10273         case BINOP_DIV:
10274         case BINOP_REM:
10275         case BINOP_MOD:
10276         case BINOP_LSH:
10277         case BINOP_RSH:
10278         case BINOP_LOGICAL_AND:
10279         case BINOP_LOGICAL_OR:
10280         case BINOP_BITWISE_AND:
10281         case BINOP_BITWISE_IOR:
10282         case BINOP_BITWISE_XOR:
10283         case BINOP_EQUAL:
10284         case BINOP_NOTEQUAL:
10285         case BINOP_LESS:
10286         case BINOP_GTR:
10287         case BINOP_LEQ:
10288         case BINOP_GEQ:
10289         case BINOP_REPEAT:
10290         case BINOP_COMMA:
10291         case BINOP_EXP:
10292         case BINOP_MIN:
10293         case BINOP_MAX:
10294         case BINOP_INTDIV:
10295         case BINOP_CONCAT:
10296         case BINOP_IN:
10297         case BINOP_RANGE:
10298         case TERNOP_COND:
10299         case TERNOP_SLICE:
10300
10301         case OP_LONG:
10302         case OP_DOUBLE:
10303         case OP_DECFLOAT:
10304         case OP_LAST:
10305         case OP_COMPLEX:
10306         case OP_STRING:
10307         case OP_ARRAY:
10308         case OP_TYPE:
10309         case OP_TYPEOF:
10310         case OP_DECLTYPE:
10311         case OP_NAME:
10312         case OP_OBJC_NSSTRING:
10313
10314         case UNOP_NEG:
10315         case UNOP_LOGICAL_NOT:
10316         case UNOP_COMPLEMENT:
10317         case UNOP_ADDR:
10318         case UNOP_HIGH:
10319         case UNOP_CAST:
10320
10321         case UNOP_CAST_TYPE:
10322         case UNOP_REINTERPRET_CAST:
10323         case UNOP_DYNAMIC_CAST:
10324           /* Unary, binary and ternary operators: We have to check
10325              their operands.  If they are constant, then so is the
10326              result of that operation.  For instance, if A and B are
10327              determined to be constants, then so is "A + B".
10328
10329              UNOP_IND is one exception to the rule above, because the
10330              value of *ADDR is not necessarily a constant, even when
10331              ADDR is.  */
10332           break;
10333
10334         case OP_VAR_VALUE:
10335           /* Check whether the associated symbol is a constant.
10336
10337              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10338              possible that a buggy compiler could mark a variable as
10339              constant even when it is not, and TYPE_CONST would return
10340              true in this case, while SYMBOL_CLASS wouldn't.
10341
10342              We also have to check for function symbols because they
10343              are always constant.  */
10344           {
10345             struct symbol *s = exp->elts[i + 2].symbol;
10346
10347             if (SYMBOL_CLASS (s) != LOC_BLOCK
10348                 && SYMBOL_CLASS (s) != LOC_CONST
10349                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10350               return 0;
10351             break;
10352           }
10353
10354         /* The default action is to return 0 because we are using
10355            the optimistic approach here: If we don't know something,
10356            then it is not a constant.  */
10357         default:
10358           return 0;
10359         }
10360     }
10361
10362   return 1;
10363 }
10364
10365 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10366
10367 static void
10368 dtor_watchpoint (struct breakpoint *self)
10369 {
10370   struct watchpoint *w = (struct watchpoint *) self;
10371
10372   xfree (w->cond_exp);
10373   xfree (w->exp);
10374   xfree (w->exp_string);
10375   xfree (w->exp_string_reparse);
10376   value_free (w->val);
10377
10378   base_breakpoint_ops.dtor (self);
10379 }
10380
10381 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10382
10383 static void
10384 re_set_watchpoint (struct breakpoint *b)
10385 {
10386   struct watchpoint *w = (struct watchpoint *) b;
10387
10388   /* Watchpoint can be either on expression using entirely global
10389      variables, or it can be on local variables.
10390
10391      Watchpoints of the first kind are never auto-deleted, and even
10392      persist across program restarts.  Since they can use variables
10393      from shared libraries, we need to reparse expression as libraries
10394      are loaded and unloaded.
10395
10396      Watchpoints on local variables can also change meaning as result
10397      of solib event.  For example, if a watchpoint uses both a local
10398      and a global variables in expression, it's a local watchpoint,
10399      but unloading of a shared library will make the expression
10400      invalid.  This is not a very common use case, but we still
10401      re-evaluate expression, to avoid surprises to the user.
10402
10403      Note that for local watchpoints, we re-evaluate it only if
10404      watchpoints frame id is still valid.  If it's not, it means the
10405      watchpoint is out of scope and will be deleted soon.  In fact,
10406      I'm not sure we'll ever be called in this case.
10407
10408      If a local watchpoint's frame id is still valid, then
10409      w->exp_valid_block is likewise valid, and we can safely use it.
10410
10411      Don't do anything about disabled watchpoints, since they will be
10412      reevaluated again when enabled.  */
10413   update_watchpoint (w, 1 /* reparse */);
10414 }
10415
10416 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10417
10418 static int
10419 insert_watchpoint (struct bp_location *bl)
10420 {
10421   struct watchpoint *w = (struct watchpoint *) bl->owner;
10422   int length = w->exact ? 1 : bl->length;
10423
10424   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10425                                    w->cond_exp);
10426 }
10427
10428 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10429
10430 static int
10431 remove_watchpoint (struct bp_location *bl)
10432 {
10433   struct watchpoint *w = (struct watchpoint *) bl->owner;
10434   int length = w->exact ? 1 : bl->length;
10435
10436   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10437                                    w->cond_exp);
10438 }
10439
10440 static int
10441 breakpoint_hit_watchpoint (const struct bp_location *bl,
10442                            struct address_space *aspace, CORE_ADDR bp_addr,
10443                            const struct target_waitstatus *ws)
10444 {
10445   struct breakpoint *b = bl->owner;
10446   struct watchpoint *w = (struct watchpoint *) b;
10447
10448   /* Continuable hardware watchpoints are treated as non-existent if the
10449      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10450      some data address).  Otherwise gdb won't stop on a break instruction
10451      in the code (not from a breakpoint) when a hardware watchpoint has
10452      been defined.  Also skip watchpoints which we know did not trigger
10453      (did not match the data address).  */
10454   if (is_hardware_watchpoint (b)
10455       && w->watchpoint_triggered == watch_triggered_no)
10456     return 0;
10457
10458   return 1;
10459 }
10460
10461 static void
10462 check_status_watchpoint (bpstat bs)
10463 {
10464   gdb_assert (is_watchpoint (bs->breakpoint_at));
10465
10466   bpstat_check_watchpoint (bs);
10467 }
10468
10469 /* Implement the "resources_needed" breakpoint_ops method for
10470    hardware watchpoints.  */
10471
10472 static int
10473 resources_needed_watchpoint (const struct bp_location *bl)
10474 {
10475   struct watchpoint *w = (struct watchpoint *) bl->owner;
10476   int length = w->exact? 1 : bl->length;
10477
10478   return target_region_ok_for_hw_watchpoint (bl->address, length);
10479 }
10480
10481 /* Implement the "works_in_software_mode" breakpoint_ops method for
10482    hardware watchpoints.  */
10483
10484 static int
10485 works_in_software_mode_watchpoint (const struct breakpoint *b)
10486 {
10487   /* Read and access watchpoints only work with hardware support.  */
10488   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10489 }
10490
10491 static enum print_stop_action
10492 print_it_watchpoint (bpstat bs)
10493 {
10494   struct cleanup *old_chain;
10495   struct breakpoint *b;
10496   const struct bp_location *bl;
10497   struct ui_file *stb;
10498   enum print_stop_action result;
10499   struct watchpoint *w;
10500   struct ui_out *uiout = current_uiout;
10501
10502   gdb_assert (bs->bp_location_at != NULL);
10503
10504   bl = bs->bp_location_at;
10505   b = bs->breakpoint_at;
10506   w = (struct watchpoint *) b;
10507
10508   stb = mem_fileopen ();
10509   old_chain = make_cleanup_ui_file_delete (stb);
10510
10511   switch (b->type)
10512     {
10513     case bp_watchpoint:
10514     case bp_hardware_watchpoint:
10515       annotate_watchpoint (b->number);
10516       if (ui_out_is_mi_like_p (uiout))
10517         ui_out_field_string
10518           (uiout, "reason",
10519            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10520       mention (b);
10521       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10522       ui_out_text (uiout, "\nOld value = ");
10523       watchpoint_value_print (bs->old_val, stb);
10524       ui_out_field_stream (uiout, "old", stb);
10525       ui_out_text (uiout, "\nNew value = ");
10526       watchpoint_value_print (w->val, stb);
10527       ui_out_field_stream (uiout, "new", stb);
10528       ui_out_text (uiout, "\n");
10529       /* More than one watchpoint may have been triggered.  */
10530       result = PRINT_UNKNOWN;
10531       break;
10532
10533     case bp_read_watchpoint:
10534       if (ui_out_is_mi_like_p (uiout))
10535         ui_out_field_string
10536           (uiout, "reason",
10537            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10538       mention (b);
10539       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10540       ui_out_text (uiout, "\nValue = ");
10541       watchpoint_value_print (w->val, stb);
10542       ui_out_field_stream (uiout, "value", stb);
10543       ui_out_text (uiout, "\n");
10544       result = PRINT_UNKNOWN;
10545       break;
10546
10547     case bp_access_watchpoint:
10548       if (bs->old_val != NULL)
10549         {
10550           annotate_watchpoint (b->number);
10551           if (ui_out_is_mi_like_p (uiout))
10552             ui_out_field_string
10553               (uiout, "reason",
10554                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10555           mention (b);
10556           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10557           ui_out_text (uiout, "\nOld value = ");
10558           watchpoint_value_print (bs->old_val, stb);
10559           ui_out_field_stream (uiout, "old", stb);
10560           ui_out_text (uiout, "\nNew value = ");
10561         }
10562       else
10563         {
10564           mention (b);
10565           if (ui_out_is_mi_like_p (uiout))
10566             ui_out_field_string
10567               (uiout, "reason",
10568                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10569           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10570           ui_out_text (uiout, "\nValue = ");
10571         }
10572       watchpoint_value_print (w->val, stb);
10573       ui_out_field_stream (uiout, "new", stb);
10574       ui_out_text (uiout, "\n");
10575       result = PRINT_UNKNOWN;
10576       break;
10577     default:
10578       result = PRINT_UNKNOWN;
10579     }
10580
10581   do_cleanups (old_chain);
10582   return result;
10583 }
10584
10585 /* Implement the "print_mention" breakpoint_ops method for hardware
10586    watchpoints.  */
10587
10588 static void
10589 print_mention_watchpoint (struct breakpoint *b)
10590 {
10591   struct cleanup *ui_out_chain;
10592   struct watchpoint *w = (struct watchpoint *) b;
10593   struct ui_out *uiout = current_uiout;
10594
10595   switch (b->type)
10596     {
10597     case bp_watchpoint:
10598       ui_out_text (uiout, "Watchpoint ");
10599       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10600       break;
10601     case bp_hardware_watchpoint:
10602       ui_out_text (uiout, "Hardware watchpoint ");
10603       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10604       break;
10605     case bp_read_watchpoint:
10606       ui_out_text (uiout, "Hardware read watchpoint ");
10607       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10608       break;
10609     case bp_access_watchpoint:
10610       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10611       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10612       break;
10613     default:
10614       internal_error (__FILE__, __LINE__,
10615                       _("Invalid hardware watchpoint type."));
10616     }
10617
10618   ui_out_field_int (uiout, "number", b->number);
10619   ui_out_text (uiout, ": ");
10620   ui_out_field_string (uiout, "exp", w->exp_string);
10621   do_cleanups (ui_out_chain);
10622 }
10623
10624 /* Implement the "print_recreate" breakpoint_ops method for
10625    watchpoints.  */
10626
10627 static void
10628 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10629 {
10630   struct watchpoint *w = (struct watchpoint *) b;
10631
10632   switch (b->type)
10633     {
10634     case bp_watchpoint:
10635     case bp_hardware_watchpoint:
10636       fprintf_unfiltered (fp, "watch");
10637       break;
10638     case bp_read_watchpoint:
10639       fprintf_unfiltered (fp, "rwatch");
10640       break;
10641     case bp_access_watchpoint:
10642       fprintf_unfiltered (fp, "awatch");
10643       break;
10644     default:
10645       internal_error (__FILE__, __LINE__,
10646                       _("Invalid watchpoint type."));
10647     }
10648
10649   fprintf_unfiltered (fp, " %s", w->exp_string);
10650   print_recreate_thread (b, fp);
10651 }
10652
10653 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10654
10655 static struct breakpoint_ops watchpoint_breakpoint_ops;
10656
10657 /* Implement the "insert" breakpoint_ops method for
10658    masked hardware watchpoints.  */
10659
10660 static int
10661 insert_masked_watchpoint (struct bp_location *bl)
10662 {
10663   struct watchpoint *w = (struct watchpoint *) bl->owner;
10664
10665   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10666                                         bl->watchpoint_type);
10667 }
10668
10669 /* Implement the "remove" breakpoint_ops method for
10670    masked hardware watchpoints.  */
10671
10672 static int
10673 remove_masked_watchpoint (struct bp_location *bl)
10674 {
10675   struct watchpoint *w = (struct watchpoint *) bl->owner;
10676
10677   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10678                                         bl->watchpoint_type);
10679 }
10680
10681 /* Implement the "resources_needed" breakpoint_ops method for
10682    masked hardware watchpoints.  */
10683
10684 static int
10685 resources_needed_masked_watchpoint (const struct bp_location *bl)
10686 {
10687   struct watchpoint *w = (struct watchpoint *) bl->owner;
10688
10689   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10690 }
10691
10692 /* Implement the "works_in_software_mode" breakpoint_ops method for
10693    masked hardware watchpoints.  */
10694
10695 static int
10696 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10697 {
10698   return 0;
10699 }
10700
10701 /* Implement the "print_it" breakpoint_ops method for
10702    masked hardware watchpoints.  */
10703
10704 static enum print_stop_action
10705 print_it_masked_watchpoint (bpstat bs)
10706 {
10707   struct breakpoint *b = bs->breakpoint_at;
10708   struct ui_out *uiout = current_uiout;
10709
10710   /* Masked watchpoints have only one location.  */
10711   gdb_assert (b->loc && b->loc->next == NULL);
10712
10713   switch (b->type)
10714     {
10715     case bp_hardware_watchpoint:
10716       annotate_watchpoint (b->number);
10717       if (ui_out_is_mi_like_p (uiout))
10718         ui_out_field_string
10719           (uiout, "reason",
10720            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10721       break;
10722
10723     case bp_read_watchpoint:
10724       if (ui_out_is_mi_like_p (uiout))
10725         ui_out_field_string
10726           (uiout, "reason",
10727            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10728       break;
10729
10730     case bp_access_watchpoint:
10731       if (ui_out_is_mi_like_p (uiout))
10732         ui_out_field_string
10733           (uiout, "reason",
10734            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10735       break;
10736     default:
10737       internal_error (__FILE__, __LINE__,
10738                       _("Invalid hardware watchpoint type."));
10739     }
10740
10741   mention (b);
10742   ui_out_text (uiout, _("\n\
10743 Check the underlying instruction at PC for the memory\n\
10744 address and value which triggered this watchpoint.\n"));
10745   ui_out_text (uiout, "\n");
10746
10747   /* More than one watchpoint may have been triggered.  */
10748   return PRINT_UNKNOWN;
10749 }
10750
10751 /* Implement the "print_one_detail" breakpoint_ops method for
10752    masked hardware watchpoints.  */
10753
10754 static void
10755 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10756                                     struct ui_out *uiout)
10757 {
10758   struct watchpoint *w = (struct watchpoint *) b;
10759
10760   /* Masked watchpoints have only one location.  */
10761   gdb_assert (b->loc && b->loc->next == NULL);
10762
10763   ui_out_text (uiout, "\tmask ");
10764   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10765   ui_out_text (uiout, "\n");
10766 }
10767
10768 /* Implement the "print_mention" breakpoint_ops method for
10769    masked hardware watchpoints.  */
10770
10771 static void
10772 print_mention_masked_watchpoint (struct breakpoint *b)
10773 {
10774   struct watchpoint *w = (struct watchpoint *) b;
10775   struct ui_out *uiout = current_uiout;
10776   struct cleanup *ui_out_chain;
10777
10778   switch (b->type)
10779     {
10780     case bp_hardware_watchpoint:
10781       ui_out_text (uiout, "Masked hardware watchpoint ");
10782       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10783       break;
10784     case bp_read_watchpoint:
10785       ui_out_text (uiout, "Masked hardware read watchpoint ");
10786       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10787       break;
10788     case bp_access_watchpoint:
10789       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10790       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10791       break;
10792     default:
10793       internal_error (__FILE__, __LINE__,
10794                       _("Invalid hardware watchpoint type."));
10795     }
10796
10797   ui_out_field_int (uiout, "number", b->number);
10798   ui_out_text (uiout, ": ");
10799   ui_out_field_string (uiout, "exp", w->exp_string);
10800   do_cleanups (ui_out_chain);
10801 }
10802
10803 /* Implement the "print_recreate" breakpoint_ops method for
10804    masked hardware watchpoints.  */
10805
10806 static void
10807 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10808 {
10809   struct watchpoint *w = (struct watchpoint *) b;
10810   char tmp[40];
10811
10812   switch (b->type)
10813     {
10814     case bp_hardware_watchpoint:
10815       fprintf_unfiltered (fp, "watch");
10816       break;
10817     case bp_read_watchpoint:
10818       fprintf_unfiltered (fp, "rwatch");
10819       break;
10820     case bp_access_watchpoint:
10821       fprintf_unfiltered (fp, "awatch");
10822       break;
10823     default:
10824       internal_error (__FILE__, __LINE__,
10825                       _("Invalid hardware watchpoint type."));
10826     }
10827
10828   sprintf_vma (tmp, w->hw_wp_mask);
10829   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10830   print_recreate_thread (b, fp);
10831 }
10832
10833 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10834
10835 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10836
10837 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10838
10839 static int
10840 is_masked_watchpoint (const struct breakpoint *b)
10841 {
10842   return b->ops == &masked_watchpoint_breakpoint_ops;
10843 }
10844
10845 /* accessflag:  hw_write:  watch write, 
10846                 hw_read:   watch read, 
10847                 hw_access: watch access (read or write) */
10848 static void
10849 watch_command_1 (char *arg, int accessflag, int from_tty,
10850                  int just_location, int internal)
10851 {
10852   volatile struct gdb_exception e;
10853   struct breakpoint *b, *scope_breakpoint = NULL;
10854   struct expression *exp;
10855   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10856   struct value *val, *mark, *result;
10857   struct frame_info *frame;
10858   char *exp_start = NULL;
10859   char *exp_end = NULL;
10860   char *tok, *end_tok;
10861   int toklen = -1;
10862   char *cond_start = NULL;
10863   char *cond_end = NULL;
10864   enum bptype bp_type;
10865   int thread = -1;
10866   int pc = 0;
10867   /* Flag to indicate whether we are going to use masks for
10868      the hardware watchpoint.  */
10869   int use_mask = 0;
10870   CORE_ADDR mask = 0;
10871   struct watchpoint *w;
10872
10873   /* Make sure that we actually have parameters to parse.  */
10874   if (arg != NULL && arg[0] != '\0')
10875     {
10876       char *value_start;
10877
10878       /* Look for "parameter value" pairs at the end
10879          of the arguments string.  */
10880       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10881         {
10882           /* Skip whitespace at the end of the argument list.  */
10883           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10884             tok--;
10885
10886           /* Find the beginning of the last token.
10887              This is the value of the parameter.  */
10888           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10889             tok--;
10890           value_start = tok + 1;
10891
10892           /* Skip whitespace.  */
10893           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10894             tok--;
10895
10896           end_tok = tok;
10897
10898           /* Find the beginning of the second to last token.
10899              This is the parameter itself.  */
10900           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10901             tok--;
10902           tok++;
10903           toklen = end_tok - tok + 1;
10904
10905           if (toklen == 6 && !strncmp (tok, "thread", 6))
10906             {
10907               /* At this point we've found a "thread" token, which means
10908                  the user is trying to set a watchpoint that triggers
10909                  only in a specific thread.  */
10910               char *endp;
10911
10912               if (thread != -1)
10913                 error(_("You can specify only one thread."));
10914
10915               /* Extract the thread ID from the next token.  */
10916               thread = strtol (value_start, &endp, 0);
10917
10918               /* Check if the user provided a valid numeric value for the
10919                  thread ID.  */
10920               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10921                 error (_("Invalid thread ID specification %s."), value_start);
10922
10923               /* Check if the thread actually exists.  */
10924               if (!valid_thread_id (thread))
10925                 invalid_thread_id_error (thread);
10926             }
10927           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10928             {
10929               /* We've found a "mask" token, which means the user wants to
10930                  create a hardware watchpoint that is going to have the mask
10931                  facility.  */
10932               struct value *mask_value, *mark;
10933
10934               if (use_mask)
10935                 error(_("You can specify only one mask."));
10936
10937               use_mask = just_location = 1;
10938
10939               mark = value_mark ();
10940               mask_value = parse_to_comma_and_eval (&value_start);
10941               mask = value_as_address (mask_value);
10942               value_free_to_mark (mark);
10943             }
10944           else
10945             /* We didn't recognize what we found.  We should stop here.  */
10946             break;
10947
10948           /* Truncate the string and get rid of the "parameter value" pair before
10949              the arguments string is parsed by the parse_exp_1 function.  */
10950           *tok = '\0';
10951         }
10952     }
10953
10954   /* Parse the rest of the arguments.  */
10955   innermost_block = NULL;
10956   exp_start = arg;
10957   exp = parse_exp_1 (&arg, 0, 0, 0);
10958   exp_end = arg;
10959   /* Remove trailing whitespace from the expression before saving it.
10960      This makes the eventual display of the expression string a bit
10961      prettier.  */
10962   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10963     --exp_end;
10964
10965   /* Checking if the expression is not constant.  */
10966   if (watchpoint_exp_is_const (exp))
10967     {
10968       int len;
10969
10970       len = exp_end - exp_start;
10971       while (len > 0 && isspace (exp_start[len - 1]))
10972         len--;
10973       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10974     }
10975
10976   exp_valid_block = innermost_block;
10977   mark = value_mark ();
10978   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10979
10980   if (just_location)
10981     {
10982       int ret;
10983
10984       exp_valid_block = NULL;
10985       val = value_addr (result);
10986       release_value (val);
10987       value_free_to_mark (mark);
10988
10989       if (use_mask)
10990         {
10991           ret = target_masked_watch_num_registers (value_as_address (val),
10992                                                    mask);
10993           if (ret == -1)
10994             error (_("This target does not support masked watchpoints."));
10995           else if (ret == -2)
10996             error (_("Invalid mask or memory region."));
10997         }
10998     }
10999   else if (val != NULL)
11000     release_value (val);
11001
11002   tok = skip_spaces (arg);
11003   end_tok = skip_to_space (tok);
11004
11005   toklen = end_tok - tok;
11006   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11007     {
11008       struct expression *cond;
11009
11010       innermost_block = NULL;
11011       tok = cond_start = end_tok + 1;
11012       cond = parse_exp_1 (&tok, 0, 0, 0);
11013
11014       /* The watchpoint expression may not be local, but the condition
11015          may still be.  E.g.: `watch global if local > 0'.  */
11016       cond_exp_valid_block = innermost_block;
11017
11018       xfree (cond);
11019       cond_end = tok;
11020     }
11021   if (*tok)
11022     error (_("Junk at end of command."));
11023
11024   if (accessflag == hw_read)
11025     bp_type = bp_read_watchpoint;
11026   else if (accessflag == hw_access)
11027     bp_type = bp_access_watchpoint;
11028   else
11029     bp_type = bp_hardware_watchpoint;
11030
11031   frame = block_innermost_frame (exp_valid_block);
11032
11033   /* If the expression is "local", then set up a "watchpoint scope"
11034      breakpoint at the point where we've left the scope of the watchpoint
11035      expression.  Create the scope breakpoint before the watchpoint, so
11036      that we will encounter it first in bpstat_stop_status.  */
11037   if (exp_valid_block && frame)
11038     {
11039       if (frame_id_p (frame_unwind_caller_id (frame)))
11040         {
11041           scope_breakpoint
11042             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11043                                           frame_unwind_caller_pc (frame),
11044                                           bp_watchpoint_scope,
11045                                           &momentary_breakpoint_ops);
11046
11047           scope_breakpoint->enable_state = bp_enabled;
11048
11049           /* Automatically delete the breakpoint when it hits.  */
11050           scope_breakpoint->disposition = disp_del;
11051
11052           /* Only break in the proper frame (help with recursion).  */
11053           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11054
11055           /* Set the address at which we will stop.  */
11056           scope_breakpoint->loc->gdbarch
11057             = frame_unwind_caller_arch (frame);
11058           scope_breakpoint->loc->requested_address
11059             = frame_unwind_caller_pc (frame);
11060           scope_breakpoint->loc->address
11061             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11062                                          scope_breakpoint->loc->requested_address,
11063                                          scope_breakpoint->type);
11064         }
11065     }
11066
11067   /* Now set up the breakpoint.  */
11068
11069   w = XCNEW (struct watchpoint);
11070   b = &w->base;
11071   if (use_mask)
11072     init_raw_breakpoint_without_location (b, NULL, bp_type,
11073                                           &masked_watchpoint_breakpoint_ops);
11074   else
11075     init_raw_breakpoint_without_location (b, NULL, bp_type,
11076                                           &watchpoint_breakpoint_ops);
11077   b->thread = thread;
11078   b->disposition = disp_donttouch;
11079   b->pspace = current_program_space;
11080   w->exp = exp;
11081   w->exp_valid_block = exp_valid_block;
11082   w->cond_exp_valid_block = cond_exp_valid_block;
11083   if (just_location)
11084     {
11085       struct type *t = value_type (val);
11086       CORE_ADDR addr = value_as_address (val);
11087       char *name;
11088
11089       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11090       name = type_to_string (t);
11091
11092       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11093                                           core_addr_to_string (addr));
11094       xfree (name);
11095
11096       w->exp_string = xstrprintf ("-location %.*s",
11097                                   (int) (exp_end - exp_start), exp_start);
11098
11099       /* The above expression is in C.  */
11100       b->language = language_c;
11101     }
11102   else
11103     w->exp_string = savestring (exp_start, exp_end - exp_start);
11104
11105   if (use_mask)
11106     {
11107       w->hw_wp_mask = mask;
11108     }
11109   else
11110     {
11111       w->val = val;
11112       w->val_valid = 1;
11113     }
11114
11115   if (cond_start)
11116     b->cond_string = savestring (cond_start, cond_end - cond_start);
11117   else
11118     b->cond_string = 0;
11119
11120   if (frame)
11121     {
11122       w->watchpoint_frame = get_frame_id (frame);
11123       w->watchpoint_thread = inferior_ptid;
11124     }
11125   else
11126     {
11127       w->watchpoint_frame = null_frame_id;
11128       w->watchpoint_thread = null_ptid;
11129     }
11130
11131   if (scope_breakpoint != NULL)
11132     {
11133       /* The scope breakpoint is related to the watchpoint.  We will
11134          need to act on them together.  */
11135       b->related_breakpoint = scope_breakpoint;
11136       scope_breakpoint->related_breakpoint = b;
11137     }
11138
11139   if (!just_location)
11140     value_free_to_mark (mark);
11141
11142   TRY_CATCH (e, RETURN_MASK_ALL)
11143     {
11144       /* Finally update the new watchpoint.  This creates the locations
11145          that should be inserted.  */
11146       update_watchpoint (w, 1);
11147     }
11148   if (e.reason < 0)
11149     {
11150       delete_breakpoint (b);
11151       throw_exception (e);
11152     }
11153
11154   install_breakpoint (internal, b, 1);
11155 }
11156
11157 /* Return count of debug registers needed to watch the given expression.
11158    If the watchpoint cannot be handled in hardware return zero.  */
11159
11160 static int
11161 can_use_hardware_watchpoint (struct value *v)
11162 {
11163   int found_memory_cnt = 0;
11164   struct value *head = v;
11165
11166   /* Did the user specifically forbid us to use hardware watchpoints? */
11167   if (!can_use_hw_watchpoints)
11168     return 0;
11169
11170   /* Make sure that the value of the expression depends only upon
11171      memory contents, and values computed from them within GDB.  If we
11172      find any register references or function calls, we can't use a
11173      hardware watchpoint.
11174
11175      The idea here is that evaluating an expression generates a series
11176      of values, one holding the value of every subexpression.  (The
11177      expression a*b+c has five subexpressions: a, b, a*b, c, and
11178      a*b+c.)  GDB's values hold almost enough information to establish
11179      the criteria given above --- they identify memory lvalues,
11180      register lvalues, computed values, etcetera.  So we can evaluate
11181      the expression, and then scan the chain of values that leaves
11182      behind to decide whether we can detect any possible change to the
11183      expression's final value using only hardware watchpoints.
11184
11185      However, I don't think that the values returned by inferior
11186      function calls are special in any way.  So this function may not
11187      notice that an expression involving an inferior function call
11188      can't be watched with hardware watchpoints.  FIXME.  */
11189   for (; v; v = value_next (v))
11190     {
11191       if (VALUE_LVAL (v) == lval_memory)
11192         {
11193           if (v != head && value_lazy (v))
11194             /* A lazy memory lvalue in the chain is one that GDB never
11195                needed to fetch; we either just used its address (e.g.,
11196                `a' in `a.b') or we never needed it at all (e.g., `a'
11197                in `a,b').  This doesn't apply to HEAD; if that is
11198                lazy then it was not readable, but watch it anyway.  */
11199             ;
11200           else
11201             {
11202               /* Ahh, memory we actually used!  Check if we can cover
11203                  it with hardware watchpoints.  */
11204               struct type *vtype = check_typedef (value_type (v));
11205
11206               /* We only watch structs and arrays if user asked for it
11207                  explicitly, never if they just happen to appear in a
11208                  middle of some value chain.  */
11209               if (v == head
11210                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11211                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11212                 {
11213                   CORE_ADDR vaddr = value_address (v);
11214                   int len;
11215                   int num_regs;
11216
11217                   len = (target_exact_watchpoints
11218                          && is_scalar_type_recursive (vtype))?
11219                     1 : TYPE_LENGTH (value_type (v));
11220
11221                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11222                   if (!num_regs)
11223                     return 0;
11224                   else
11225                     found_memory_cnt += num_regs;
11226                 }
11227             }
11228         }
11229       else if (VALUE_LVAL (v) != not_lval
11230                && deprecated_value_modifiable (v) == 0)
11231         return 0;       /* These are values from the history (e.g., $1).  */
11232       else if (VALUE_LVAL (v) == lval_register)
11233         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11234     }
11235
11236   /* The expression itself looks suitable for using a hardware
11237      watchpoint, but give the target machine a chance to reject it.  */
11238   return found_memory_cnt;
11239 }
11240
11241 void
11242 watch_command_wrapper (char *arg, int from_tty, int internal)
11243 {
11244   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11245 }
11246
11247 /* A helper function that looks for the "-location" argument and then
11248    calls watch_command_1.  */
11249
11250 static void
11251 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11252 {
11253   int just_location = 0;
11254
11255   if (arg
11256       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11257           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11258     {
11259       arg = skip_spaces (arg);
11260       just_location = 1;
11261     }
11262
11263   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11264 }
11265
11266 static void
11267 watch_command (char *arg, int from_tty)
11268 {
11269   watch_maybe_just_location (arg, hw_write, from_tty);
11270 }
11271
11272 void
11273 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11274 {
11275   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11276 }
11277
11278 static void
11279 rwatch_command (char *arg, int from_tty)
11280 {
11281   watch_maybe_just_location (arg, hw_read, from_tty);
11282 }
11283
11284 void
11285 awatch_command_wrapper (char *arg, int from_tty, int internal)
11286 {
11287   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11288 }
11289
11290 static void
11291 awatch_command (char *arg, int from_tty)
11292 {
11293   watch_maybe_just_location (arg, hw_access, from_tty);
11294 }
11295 \f
11296
11297 /* Helper routines for the until_command routine in infcmd.c.  Here
11298    because it uses the mechanisms of breakpoints.  */
11299
11300 struct until_break_command_continuation_args
11301 {
11302   struct breakpoint *breakpoint;
11303   struct breakpoint *breakpoint2;
11304   int thread_num;
11305 };
11306
11307 /* This function is called by fetch_inferior_event via the
11308    cmd_continuation pointer, to complete the until command.  It takes
11309    care of cleaning up the temporary breakpoints set up by the until
11310    command.  */
11311 static void
11312 until_break_command_continuation (void *arg, int err)
11313 {
11314   struct until_break_command_continuation_args *a = arg;
11315
11316   delete_breakpoint (a->breakpoint);
11317   if (a->breakpoint2)
11318     delete_breakpoint (a->breakpoint2);
11319   delete_longjmp_breakpoint (a->thread_num);
11320 }
11321
11322 void
11323 until_break_command (char *arg, int from_tty, int anywhere)
11324 {
11325   struct symtabs_and_lines sals;
11326   struct symtab_and_line sal;
11327   struct frame_info *frame;
11328   struct gdbarch *frame_gdbarch;
11329   struct frame_id stack_frame_id;
11330   struct frame_id caller_frame_id;
11331   struct breakpoint *breakpoint;
11332   struct breakpoint *breakpoint2 = NULL;
11333   struct cleanup *old_chain;
11334   int thread;
11335   struct thread_info *tp;
11336
11337   clear_proceed_status ();
11338
11339   /* Set a breakpoint where the user wants it and at return from
11340      this function.  */
11341
11342   if (last_displayed_sal_is_valid ())
11343     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11344                           get_last_displayed_symtab (),
11345                           get_last_displayed_line ());
11346   else
11347     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11348                           (struct symtab *) NULL, 0);
11349
11350   if (sals.nelts != 1)
11351     error (_("Couldn't get information on specified line."));
11352
11353   sal = sals.sals[0];
11354   xfree (sals.sals);    /* malloc'd, so freed.  */
11355
11356   if (*arg)
11357     error (_("Junk at end of arguments."));
11358
11359   resolve_sal_pc (&sal);
11360
11361   tp = inferior_thread ();
11362   thread = tp->num;
11363
11364   old_chain = make_cleanup (null_cleanup, NULL);
11365
11366   /* Note linespec handling above invalidates the frame chain.
11367      Installing a breakpoint also invalidates the frame chain (as it
11368      may need to switch threads), so do any frame handling before
11369      that.  */
11370
11371   frame = get_selected_frame (NULL);
11372   frame_gdbarch = get_frame_arch (frame);
11373   stack_frame_id = get_stack_frame_id (frame);
11374   caller_frame_id = frame_unwind_caller_id (frame);
11375
11376   /* Keep within the current frame, or in frames called by the current
11377      one.  */
11378
11379   if (frame_id_p (caller_frame_id))
11380     {
11381       struct symtab_and_line sal2;
11382
11383       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11384       sal2.pc = frame_unwind_caller_pc (frame);
11385       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11386                                               sal2,
11387                                               caller_frame_id,
11388                                               bp_until);
11389       make_cleanup_delete_breakpoint (breakpoint2);
11390
11391       set_longjmp_breakpoint (tp, caller_frame_id);
11392       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11393     }
11394
11395   /* set_momentary_breakpoint could invalidate FRAME.  */
11396   frame = NULL;
11397
11398   if (anywhere)
11399     /* If the user told us to continue until a specified location,
11400        we don't specify a frame at which we need to stop.  */
11401     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11402                                            null_frame_id, bp_until);
11403   else
11404     /* Otherwise, specify the selected frame, because we want to stop
11405        only at the very same frame.  */
11406     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11407                                            stack_frame_id, bp_until);
11408   make_cleanup_delete_breakpoint (breakpoint);
11409
11410   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11411
11412   /* If we are running asynchronously, and proceed call above has
11413      actually managed to start the target, arrange for breakpoints to
11414      be deleted when the target stops.  Otherwise, we're already
11415      stopped and delete breakpoints via cleanup chain.  */
11416
11417   if (target_can_async_p () && is_running (inferior_ptid))
11418     {
11419       struct until_break_command_continuation_args *args;
11420       args = xmalloc (sizeof (*args));
11421
11422       args->breakpoint = breakpoint;
11423       args->breakpoint2 = breakpoint2;
11424       args->thread_num = thread;
11425
11426       discard_cleanups (old_chain);
11427       add_continuation (inferior_thread (),
11428                         until_break_command_continuation, args,
11429                         xfree);
11430     }
11431   else
11432     do_cleanups (old_chain);
11433 }
11434
11435 /* This function attempts to parse an optional "if <cond>" clause
11436    from the arg string.  If one is not found, it returns NULL.
11437
11438    Else, it returns a pointer to the condition string.  (It does not
11439    attempt to evaluate the string against a particular block.)  And,
11440    it updates arg to point to the first character following the parsed
11441    if clause in the arg string.  */
11442
11443 static char *
11444 ep_parse_optional_if_clause (char **arg)
11445 {
11446   char *cond_string;
11447
11448   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11449     return NULL;
11450
11451   /* Skip the "if" keyword.  */
11452   (*arg) += 2;
11453
11454   /* Skip any extra leading whitespace, and record the start of the
11455      condition string.  */
11456   *arg = skip_spaces (*arg);
11457   cond_string = *arg;
11458
11459   /* Assume that the condition occupies the remainder of the arg
11460      string.  */
11461   (*arg) += strlen (cond_string);
11462
11463   return cond_string;
11464 }
11465
11466 /* Commands to deal with catching events, such as signals, exceptions,
11467    process start/exit, etc.  */
11468
11469 typedef enum
11470 {
11471   catch_fork_temporary, catch_vfork_temporary,
11472   catch_fork_permanent, catch_vfork_permanent
11473 }
11474 catch_fork_kind;
11475
11476 static void
11477 catch_fork_command_1 (char *arg, int from_tty, 
11478                       struct cmd_list_element *command)
11479 {
11480   struct gdbarch *gdbarch = get_current_arch ();
11481   char *cond_string = NULL;
11482   catch_fork_kind fork_kind;
11483   int tempflag;
11484
11485   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11486   tempflag = (fork_kind == catch_fork_temporary
11487               || fork_kind == catch_vfork_temporary);
11488
11489   if (!arg)
11490     arg = "";
11491   arg = skip_spaces (arg);
11492
11493   /* The allowed syntax is:
11494      catch [v]fork
11495      catch [v]fork if <cond>
11496
11497      First, check if there's an if clause.  */
11498   cond_string = ep_parse_optional_if_clause (&arg);
11499
11500   if ((*arg != '\0') && !isspace (*arg))
11501     error (_("Junk at end of arguments."));
11502
11503   /* If this target supports it, create a fork or vfork catchpoint
11504      and enable reporting of such events.  */
11505   switch (fork_kind)
11506     {
11507     case catch_fork_temporary:
11508     case catch_fork_permanent:
11509       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11510                                           &catch_fork_breakpoint_ops);
11511       break;
11512     case catch_vfork_temporary:
11513     case catch_vfork_permanent:
11514       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11515                                           &catch_vfork_breakpoint_ops);
11516       break;
11517     default:
11518       error (_("unsupported or unknown fork kind; cannot catch it"));
11519       break;
11520     }
11521 }
11522
11523 static void
11524 catch_exec_command_1 (char *arg, int from_tty, 
11525                       struct cmd_list_element *command)
11526 {
11527   struct exec_catchpoint *c;
11528   struct gdbarch *gdbarch = get_current_arch ();
11529   int tempflag;
11530   char *cond_string = NULL;
11531
11532   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11533
11534   if (!arg)
11535     arg = "";
11536   arg = skip_spaces (arg);
11537
11538   /* The allowed syntax is:
11539      catch exec
11540      catch exec if <cond>
11541
11542      First, check if there's an if clause.  */
11543   cond_string = ep_parse_optional_if_clause (&arg);
11544
11545   if ((*arg != '\0') && !isspace (*arg))
11546     error (_("Junk at end of arguments."));
11547
11548   c = XNEW (struct exec_catchpoint);
11549   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11550                    &catch_exec_breakpoint_ops);
11551   c->exec_pathname = NULL;
11552
11553   install_breakpoint (0, &c->base, 1);
11554 }
11555
11556 static enum print_stop_action
11557 print_it_exception_catchpoint (bpstat bs)
11558 {
11559   struct ui_out *uiout = current_uiout;
11560   struct breakpoint *b = bs->breakpoint_at;
11561   int bp_temp, bp_throw;
11562
11563   annotate_catchpoint (b->number);
11564
11565   bp_throw = strstr (b->addr_string, "throw") != NULL;
11566   if (b->loc->address != b->loc->requested_address)
11567     breakpoint_adjustment_warning (b->loc->requested_address,
11568                                    b->loc->address,
11569                                    b->number, 1);
11570   bp_temp = b->disposition == disp_del;
11571   ui_out_text (uiout, 
11572                bp_temp ? "Temporary catchpoint "
11573                        : "Catchpoint ");
11574   if (!ui_out_is_mi_like_p (uiout))
11575     ui_out_field_int (uiout, "bkptno", b->number);
11576   ui_out_text (uiout,
11577                bp_throw ? " (exception thrown), "
11578                         : " (exception caught), ");
11579   if (ui_out_is_mi_like_p (uiout))
11580     {
11581       ui_out_field_string (uiout, "reason", 
11582                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11583       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11584       ui_out_field_int (uiout, "bkptno", b->number);
11585     }
11586   return PRINT_SRC_AND_LOC;
11587 }
11588
11589 static void
11590 print_one_exception_catchpoint (struct breakpoint *b, 
11591                                 struct bp_location **last_loc)
11592 {
11593   struct value_print_options opts;
11594   struct ui_out *uiout = current_uiout;
11595
11596   get_user_print_options (&opts);
11597   if (opts.addressprint)
11598     {
11599       annotate_field (4);
11600       if (b->loc == NULL || b->loc->shlib_disabled)
11601         ui_out_field_string (uiout, "addr", "<PENDING>");
11602       else
11603         ui_out_field_core_addr (uiout, "addr",
11604                                 b->loc->gdbarch, b->loc->address);
11605     }
11606   annotate_field (5);
11607   if (b->loc)
11608     *last_loc = b->loc;
11609   if (strstr (b->addr_string, "throw") != NULL)
11610     {
11611       ui_out_field_string (uiout, "what", "exception throw");
11612       if (ui_out_is_mi_like_p (uiout))
11613         ui_out_field_string (uiout, "catch-type", "throw");
11614     }
11615   else
11616     {
11617       ui_out_field_string (uiout, "what", "exception catch");
11618       if (ui_out_is_mi_like_p (uiout))
11619         ui_out_field_string (uiout, "catch-type", "catch");
11620     }
11621 }
11622
11623 static void
11624 print_mention_exception_catchpoint (struct breakpoint *b)
11625 {
11626   struct ui_out *uiout = current_uiout;
11627   int bp_temp;
11628   int bp_throw;
11629
11630   bp_temp = b->disposition == disp_del;
11631   bp_throw = strstr (b->addr_string, "throw") != NULL;
11632   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11633                               : _("Catchpoint "));
11634   ui_out_field_int (uiout, "bkptno", b->number);
11635   ui_out_text (uiout, bp_throw ? _(" (throw)")
11636                                : _(" (catch)"));
11637 }
11638
11639 /* Implement the "print_recreate" breakpoint_ops method for throw and
11640    catch catchpoints.  */
11641
11642 static void
11643 print_recreate_exception_catchpoint (struct breakpoint *b, 
11644                                      struct ui_file *fp)
11645 {
11646   int bp_temp;
11647   int bp_throw;
11648
11649   bp_temp = b->disposition == disp_del;
11650   bp_throw = strstr (b->addr_string, "throw") != NULL;
11651   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11652   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11653   print_recreate_thread (b, fp);
11654 }
11655
11656 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11657
11658 static int
11659 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11660                           enum exception_event_kind ex_event, int from_tty)
11661 {
11662   char *trigger_func_name;
11663  
11664   if (ex_event == EX_EVENT_CATCH)
11665     trigger_func_name = "__cxa_begin_catch";
11666   else
11667     trigger_func_name = "__cxa_throw";
11668
11669   create_breakpoint (get_current_arch (),
11670                      trigger_func_name, cond_string, -1, NULL,
11671                      0 /* condition and thread are valid.  */,
11672                      tempflag, bp_breakpoint,
11673                      0,
11674                      AUTO_BOOLEAN_TRUE /* pending */,
11675                      &gnu_v3_exception_catchpoint_ops, from_tty,
11676                      1 /* enabled */,
11677                      0 /* internal */,
11678                      0);
11679
11680   return 1;
11681 }
11682
11683 /* Deal with "catch catch" and "catch throw" commands.  */
11684
11685 static void
11686 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11687                            int tempflag, int from_tty)
11688 {
11689   char *cond_string = NULL;
11690
11691   if (!arg)
11692     arg = "";
11693   arg = skip_spaces (arg);
11694
11695   cond_string = ep_parse_optional_if_clause (&arg);
11696
11697   if ((*arg != '\0') && !isspace (*arg))
11698     error (_("Junk at end of arguments."));
11699
11700   if (ex_event != EX_EVENT_THROW
11701       && ex_event != EX_EVENT_CATCH)
11702     error (_("Unsupported or unknown exception event; cannot catch it"));
11703
11704   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11705     return;
11706
11707   warning (_("Unsupported with this platform/compiler combination."));
11708 }
11709
11710 /* Implementation of "catch catch" command.  */
11711
11712 static void
11713 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11714 {
11715   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11716
11717   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11718 }
11719
11720 /* Implementation of "catch throw" command.  */
11721
11722 static void
11723 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11724 {
11725   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11726
11727   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11728 }
11729
11730 void
11731 init_ada_exception_breakpoint (struct breakpoint *b,
11732                                struct gdbarch *gdbarch,
11733                                struct symtab_and_line sal,
11734                                char *addr_string,
11735                                const struct breakpoint_ops *ops,
11736                                int tempflag,
11737                                int from_tty)
11738 {
11739   if (from_tty)
11740     {
11741       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11742       if (!loc_gdbarch)
11743         loc_gdbarch = gdbarch;
11744
11745       describe_other_breakpoints (loc_gdbarch,
11746                                   sal.pspace, sal.pc, sal.section, -1);
11747       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11748          version for exception catchpoints, because two catchpoints
11749          used for different exception names will use the same address.
11750          In this case, a "breakpoint ... also set at..." warning is
11751          unproductive.  Besides, the warning phrasing is also a bit
11752          inappropriate, we should use the word catchpoint, and tell
11753          the user what type of catchpoint it is.  The above is good
11754          enough for now, though.  */
11755     }
11756
11757   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11758
11759   b->enable_state = bp_enabled;
11760   b->disposition = tempflag ? disp_del : disp_donttouch;
11761   b->addr_string = addr_string;
11762   b->language = language_ada;
11763 }
11764
11765 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11766    filter list, or NULL if no filtering is required.  */
11767 static VEC(int) *
11768 catch_syscall_split_args (char *arg)
11769 {
11770   VEC(int) *result = NULL;
11771   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11772
11773   while (*arg != '\0')
11774     {
11775       int i, syscall_number;
11776       char *endptr;
11777       char cur_name[128];
11778       struct syscall s;
11779
11780       /* Skip whitespace.  */
11781       while (isspace (*arg))
11782         arg++;
11783
11784       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11785         cur_name[i] = arg[i];
11786       cur_name[i] = '\0';
11787       arg += i;
11788
11789       /* Check if the user provided a syscall name or a number.  */
11790       syscall_number = (int) strtol (cur_name, &endptr, 0);
11791       if (*endptr == '\0')
11792         get_syscall_by_number (syscall_number, &s);
11793       else
11794         {
11795           /* We have a name.  Let's check if it's valid and convert it
11796              to a number.  */
11797           get_syscall_by_name (cur_name, &s);
11798
11799           if (s.number == UNKNOWN_SYSCALL)
11800             /* Here we have to issue an error instead of a warning,
11801                because GDB cannot do anything useful if there's no
11802                syscall number to be caught.  */
11803             error (_("Unknown syscall name '%s'."), cur_name);
11804         }
11805
11806       /* Ok, it's valid.  */
11807       VEC_safe_push (int, result, s.number);
11808     }
11809
11810   discard_cleanups (cleanup);
11811   return result;
11812 }
11813
11814 /* Implement the "catch syscall" command.  */
11815
11816 static void
11817 catch_syscall_command_1 (char *arg, int from_tty, 
11818                          struct cmd_list_element *command)
11819 {
11820   int tempflag;
11821   VEC(int) *filter;
11822   struct syscall s;
11823   struct gdbarch *gdbarch = get_current_arch ();
11824
11825   /* Checking if the feature if supported.  */
11826   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11827     error (_("The feature 'catch syscall' is not supported on \
11828 this architecture yet."));
11829
11830   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11831
11832   arg = skip_spaces (arg);
11833
11834   /* We need to do this first "dummy" translation in order
11835      to get the syscall XML file loaded or, most important,
11836      to display a warning to the user if there's no XML file
11837      for his/her architecture.  */
11838   get_syscall_by_number (0, &s);
11839
11840   /* The allowed syntax is:
11841      catch syscall
11842      catch syscall <name | number> [<name | number> ... <name | number>]
11843
11844      Let's check if there's a syscall name.  */
11845
11846   if (arg != NULL)
11847     filter = catch_syscall_split_args (arg);
11848   else
11849     filter = NULL;
11850
11851   create_syscall_event_catchpoint (tempflag, filter,
11852                                    &catch_syscall_breakpoint_ops);
11853 }
11854
11855 static void
11856 catch_command (char *arg, int from_tty)
11857 {
11858   error (_("Catch requires an event name."));
11859 }
11860 \f
11861
11862 static void
11863 tcatch_command (char *arg, int from_tty)
11864 {
11865   error (_("Catch requires an event name."));
11866 }
11867
11868 /* A qsort comparison function that sorts breakpoints in order.  */
11869
11870 static int
11871 compare_breakpoints (const void *a, const void *b)
11872 {
11873   const breakpoint_p *ba = a;
11874   uintptr_t ua = (uintptr_t) *ba;
11875   const breakpoint_p *bb = b;
11876   uintptr_t ub = (uintptr_t) *bb;
11877
11878   if ((*ba)->number < (*bb)->number)
11879     return -1;
11880   else if ((*ba)->number > (*bb)->number)
11881     return 1;
11882
11883   /* Now sort by address, in case we see, e..g, two breakpoints with
11884      the number 0.  */
11885   if (ua < ub)
11886     return -1;
11887   return ua > ub ? 1 : 0;
11888 }
11889
11890 /* Delete breakpoints by address or line.  */
11891
11892 static void
11893 clear_command (char *arg, int from_tty)
11894 {
11895   struct breakpoint *b, *prev;
11896   VEC(breakpoint_p) *found = 0;
11897   int ix;
11898   int default_match;
11899   struct symtabs_and_lines sals;
11900   struct symtab_and_line sal;
11901   int i;
11902   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11903
11904   if (arg)
11905     {
11906       sals = decode_line_with_current_source (arg,
11907                                               (DECODE_LINE_FUNFIRSTLINE
11908                                                | DECODE_LINE_LIST_MODE));
11909       make_cleanup (xfree, sals.sals);
11910       default_match = 0;
11911     }
11912   else
11913     {
11914       sals.sals = (struct symtab_and_line *)
11915         xmalloc (sizeof (struct symtab_and_line));
11916       make_cleanup (xfree, sals.sals);
11917       init_sal (&sal);          /* Initialize to zeroes.  */
11918
11919       /* Set sal's line, symtab, pc, and pspace to the values
11920          corresponding to the last call to print_frame_info.  If the
11921          codepoint is not valid, this will set all the fields to 0.  */
11922       get_last_displayed_sal (&sal);
11923       if (sal.symtab == 0)
11924         error (_("No source file specified."));
11925
11926       sals.sals[0] = sal;
11927       sals.nelts = 1;
11928
11929       default_match = 1;
11930     }
11931
11932   /* We don't call resolve_sal_pc here.  That's not as bad as it
11933      seems, because all existing breakpoints typically have both
11934      file/line and pc set.  So, if clear is given file/line, we can
11935      match this to existing breakpoint without obtaining pc at all.
11936
11937      We only support clearing given the address explicitly 
11938      present in breakpoint table.  Say, we've set breakpoint 
11939      at file:line.  There were several PC values for that file:line,
11940      due to optimization, all in one block.
11941
11942      We've picked one PC value.  If "clear" is issued with another
11943      PC corresponding to the same file:line, the breakpoint won't
11944      be cleared.  We probably can still clear the breakpoint, but 
11945      since the other PC value is never presented to user, user
11946      can only find it by guessing, and it does not seem important
11947      to support that.  */
11948
11949   /* For each line spec given, delete bps which correspond to it.  Do
11950      it in two passes, solely to preserve the current behavior that
11951      from_tty is forced true if we delete more than one
11952      breakpoint.  */
11953
11954   found = NULL;
11955   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11956   for (i = 0; i < sals.nelts; i++)
11957     {
11958       int is_abs;
11959
11960       /* If exact pc given, clear bpts at that pc.
11961          If line given (pc == 0), clear all bpts on specified line.
11962          If defaulting, clear all bpts on default line
11963          or at default pc.
11964
11965          defaulting    sal.pc != 0    tests to do
11966
11967          0              1             pc
11968          1              1             pc _and_ line
11969          0              0             line
11970          1              0             <can't happen> */
11971
11972       sal = sals.sals[i];
11973       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11974
11975       /* Find all matching breakpoints and add them to 'found'.  */
11976       ALL_BREAKPOINTS (b)
11977         {
11978           int match = 0;
11979           /* Are we going to delete b?  */
11980           if (b->type != bp_none && !is_watchpoint (b))
11981             {
11982               struct bp_location *loc = b->loc;
11983               for (; loc; loc = loc->next)
11984                 {
11985                   /* If the user specified file:line, don't allow a PC
11986                      match.  This matches historical gdb behavior.  */
11987                   int pc_match = (!sal.explicit_line
11988                                   && sal.pc
11989                                   && (loc->pspace == sal.pspace)
11990                                   && (loc->address == sal.pc)
11991                                   && (!section_is_overlay (loc->section)
11992                                       || loc->section == sal.section));
11993                   int line_match = 0;
11994
11995                   if ((default_match || sal.explicit_line)
11996                       && loc->source_file != NULL
11997                       && sal.symtab != NULL
11998                       && sal.pspace == loc->pspace
11999                       && loc->line_number == sal.line)
12000                     {
12001                       if (filename_cmp (loc->source_file,
12002                                         sal.symtab->filename) == 0)
12003                         line_match = 1;
12004                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
12005                                && compare_filenames_for_search (loc->source_file,
12006                                                                 sal.symtab->filename))
12007                         line_match = 1;
12008                     }
12009
12010                   if (pc_match || line_match)
12011                     {
12012                       match = 1;
12013                       break;
12014                     }
12015                 }
12016             }
12017
12018           if (match)
12019             VEC_safe_push(breakpoint_p, found, b);
12020         }
12021     }
12022
12023   /* Now go thru the 'found' chain and delete them.  */
12024   if (VEC_empty(breakpoint_p, found))
12025     {
12026       if (arg)
12027         error (_("No breakpoint at %s."), arg);
12028       else
12029         error (_("No breakpoint at this line."));
12030     }
12031
12032   /* Remove duplicates from the vec.  */
12033   qsort (VEC_address (breakpoint_p, found),
12034          VEC_length (breakpoint_p, found),
12035          sizeof (breakpoint_p),
12036          compare_breakpoints);
12037   prev = VEC_index (breakpoint_p, found, 0);
12038   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12039     {
12040       if (b == prev)
12041         {
12042           VEC_ordered_remove (breakpoint_p, found, ix);
12043           --ix;
12044         }
12045     }
12046
12047   if (VEC_length(breakpoint_p, found) > 1)
12048     from_tty = 1;       /* Always report if deleted more than one.  */
12049   if (from_tty)
12050     {
12051       if (VEC_length(breakpoint_p, found) == 1)
12052         printf_unfiltered (_("Deleted breakpoint "));
12053       else
12054         printf_unfiltered (_("Deleted breakpoints "));
12055     }
12056   annotate_breakpoints_changed ();
12057
12058   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12059     {
12060       if (from_tty)
12061         printf_unfiltered ("%d ", b->number);
12062       delete_breakpoint (b);
12063     }
12064   if (from_tty)
12065     putchar_unfiltered ('\n');
12066
12067   do_cleanups (cleanups);
12068 }
12069 \f
12070 /* Delete breakpoint in BS if they are `delete' breakpoints and
12071    all breakpoints that are marked for deletion, whether hit or not.
12072    This is called after any breakpoint is hit, or after errors.  */
12073
12074 void
12075 breakpoint_auto_delete (bpstat bs)
12076 {
12077   struct breakpoint *b, *b_tmp;
12078
12079   for (; bs; bs = bs->next)
12080     if (bs->breakpoint_at
12081         && bs->breakpoint_at->disposition == disp_del
12082         && bs->stop)
12083       delete_breakpoint (bs->breakpoint_at);
12084
12085   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12086   {
12087     if (b->disposition == disp_del_at_next_stop)
12088       delete_breakpoint (b);
12089   }
12090 }
12091
12092 /* A comparison function for bp_location AP and BP being interfaced to
12093    qsort.  Sort elements primarily by their ADDRESS (no matter what
12094    does breakpoint_address_is_meaningful say for its OWNER),
12095    secondarily by ordering first bp_permanent OWNERed elements and
12096    terciarily just ensuring the array is sorted stable way despite
12097    qsort being an unstable algorithm.  */
12098
12099 static int
12100 bp_location_compare (const void *ap, const void *bp)
12101 {
12102   struct bp_location *a = *(void **) ap;
12103   struct bp_location *b = *(void **) bp;
12104   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12105   int a_perm = a->owner->enable_state == bp_permanent;
12106   int b_perm = b->owner->enable_state == bp_permanent;
12107
12108   if (a->address != b->address)
12109     return (a->address > b->address) - (a->address < b->address);
12110
12111   /* Sort locations at the same address by their pspace number, keeping
12112      locations of the same inferior (in a multi-inferior environment)
12113      grouped.  */
12114
12115   if (a->pspace->num != b->pspace->num)
12116     return ((a->pspace->num > b->pspace->num)
12117             - (a->pspace->num < b->pspace->num));
12118
12119   /* Sort permanent breakpoints first.  */
12120   if (a_perm != b_perm)
12121     return (a_perm < b_perm) - (a_perm > b_perm);
12122
12123   /* Make the internal GDB representation stable across GDB runs
12124      where A and B memory inside GDB can differ.  Breakpoint locations of
12125      the same type at the same address can be sorted in arbitrary order.  */
12126
12127   if (a->owner->number != b->owner->number)
12128     return ((a->owner->number > b->owner->number)
12129             - (a->owner->number < b->owner->number));
12130
12131   return (a > b) - (a < b);
12132 }
12133
12134 /* Set bp_location_placed_address_before_address_max and
12135    bp_location_shadow_len_after_address_max according to the current
12136    content of the bp_location array.  */
12137
12138 static void
12139 bp_location_target_extensions_update (void)
12140 {
12141   struct bp_location *bl, **blp_tmp;
12142
12143   bp_location_placed_address_before_address_max = 0;
12144   bp_location_shadow_len_after_address_max = 0;
12145
12146   ALL_BP_LOCATIONS (bl, blp_tmp)
12147     {
12148       CORE_ADDR start, end, addr;
12149
12150       if (!bp_location_has_shadow (bl))
12151         continue;
12152
12153       start = bl->target_info.placed_address;
12154       end = start + bl->target_info.shadow_len;
12155
12156       gdb_assert (bl->address >= start);
12157       addr = bl->address - start;
12158       if (addr > bp_location_placed_address_before_address_max)
12159         bp_location_placed_address_before_address_max = addr;
12160
12161       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12162
12163       gdb_assert (bl->address < end);
12164       addr = end - bl->address;
12165       if (addr > bp_location_shadow_len_after_address_max)
12166         bp_location_shadow_len_after_address_max = addr;
12167     }
12168 }
12169
12170 /* Download tracepoint locations if they haven't been.  */
12171
12172 static void
12173 download_tracepoint_locations (void)
12174 {
12175   struct breakpoint *b;
12176   struct cleanup *old_chain;
12177
12178   if (!target_can_download_tracepoint ())
12179     return;
12180
12181   old_chain = save_current_space_and_thread ();
12182
12183   ALL_TRACEPOINTS (b)
12184     {
12185       struct bp_location *bl;
12186       struct tracepoint *t;
12187       int bp_location_downloaded = 0;
12188
12189       if ((b->type == bp_fast_tracepoint
12190            ? !may_insert_fast_tracepoints
12191            : !may_insert_tracepoints))
12192         continue;
12193
12194       for (bl = b->loc; bl; bl = bl->next)
12195         {
12196           /* In tracepoint, locations are _never_ duplicated, so
12197              should_be_inserted is equivalent to
12198              unduplicated_should_be_inserted.  */
12199           if (!should_be_inserted (bl) || bl->inserted)
12200             continue;
12201
12202           switch_to_program_space_and_thread (bl->pspace);
12203
12204           target_download_tracepoint (bl);
12205
12206           bl->inserted = 1;
12207           bp_location_downloaded = 1;
12208         }
12209       t = (struct tracepoint *) b;
12210       t->number_on_target = b->number;
12211       if (bp_location_downloaded)
12212         observer_notify_breakpoint_modified (b);
12213     }
12214
12215   do_cleanups (old_chain);
12216 }
12217
12218 /* Swap the insertion/duplication state between two locations.  */
12219
12220 static void
12221 swap_insertion (struct bp_location *left, struct bp_location *right)
12222 {
12223   const int left_inserted = left->inserted;
12224   const int left_duplicate = left->duplicate;
12225   const int left_needs_update = left->needs_update;
12226   const struct bp_target_info left_target_info = left->target_info;
12227
12228   /* Locations of tracepoints can never be duplicated.  */
12229   if (is_tracepoint (left->owner))
12230     gdb_assert (!left->duplicate);
12231   if (is_tracepoint (right->owner))
12232     gdb_assert (!right->duplicate);
12233
12234   left->inserted = right->inserted;
12235   left->duplicate = right->duplicate;
12236   left->needs_update = right->needs_update;
12237   left->target_info = right->target_info;
12238   right->inserted = left_inserted;
12239   right->duplicate = left_duplicate;
12240   right->needs_update = left_needs_update;
12241   right->target_info = left_target_info;
12242 }
12243
12244 /* Force the re-insertion of the locations at ADDRESS.  This is called
12245    once a new/deleted/modified duplicate location is found and we are evaluating
12246    conditions on the target's side.  Such conditions need to be updated on
12247    the target.  */
12248
12249 static void
12250 force_breakpoint_reinsertion (struct bp_location *bl)
12251 {
12252   struct bp_location **locp = NULL, **loc2p;
12253   struct bp_location *loc;
12254   CORE_ADDR address = 0;
12255   int pspace_num;
12256
12257   address = bl->address;
12258   pspace_num = bl->pspace->num;
12259
12260   /* This is only meaningful if the target is
12261      evaluating conditions and if the user has
12262      opted for condition evaluation on the target's
12263      side.  */
12264   if (gdb_evaluates_breakpoint_condition_p ()
12265       || !target_supports_evaluation_of_breakpoint_conditions ())
12266     return;
12267
12268   /* Flag all breakpoint locations with this address and
12269      the same program space as the location
12270      as "its condition has changed".  We need to
12271      update the conditions on the target's side.  */
12272   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12273     {
12274       loc = *loc2p;
12275
12276       if (!is_breakpoint (loc->owner)
12277           || pspace_num != loc->pspace->num)
12278         continue;
12279
12280       /* Flag the location appropriately.  We use a different state to
12281          let everyone know that we already updated the set of locations
12282          with addr bl->address and program space bl->pspace.  This is so
12283          we don't have to keep calling these functions just to mark locations
12284          that have already been marked.  */
12285       loc->condition_changed = condition_updated;
12286
12287       /* Free the agent expression bytecode as well.  We will compute
12288          it later on.  */
12289       if (loc->cond_bytecode)
12290         {
12291           free_agent_expr (loc->cond_bytecode);
12292           loc->cond_bytecode = NULL;
12293         }
12294     }
12295 }
12296
12297 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12298    into the inferior, only remove already-inserted locations that no
12299    longer should be inserted.  Functions that delete a breakpoint or
12300    breakpoints should pass false, so that deleting a breakpoint
12301    doesn't have the side effect of inserting the locations of other
12302    breakpoints that are marked not-inserted, but should_be_inserted
12303    returns true on them.
12304
12305    This behaviour is useful is situations close to tear-down -- e.g.,
12306    after an exec, while the target still has execution, but breakpoint
12307    shadows of the previous executable image should *NOT* be restored
12308    to the new image; or before detaching, where the target still has
12309    execution and wants to delete breakpoints from GDB's lists, and all
12310    breakpoints had already been removed from the inferior.  */
12311
12312 static void
12313 update_global_location_list (int should_insert)
12314 {
12315   struct breakpoint *b;
12316   struct bp_location **locp, *loc;
12317   struct cleanup *cleanups;
12318   /* Last breakpoint location address that was marked for update.  */
12319   CORE_ADDR last_addr = 0;
12320   /* Last breakpoint location program space that was marked for update.  */
12321   int last_pspace_num = -1;
12322
12323   /* Used in the duplicates detection below.  When iterating over all
12324      bp_locations, points to the first bp_location of a given address.
12325      Breakpoints and watchpoints of different types are never
12326      duplicates of each other.  Keep one pointer for each type of
12327      breakpoint/watchpoint, so we only need to loop over all locations
12328      once.  */
12329   struct bp_location *bp_loc_first;  /* breakpoint */
12330   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12331   struct bp_location *awp_loc_first; /* access watchpoint */
12332   struct bp_location *rwp_loc_first; /* read watchpoint */
12333
12334   /* Saved former bp_location array which we compare against the newly
12335      built bp_location from the current state of ALL_BREAKPOINTS.  */
12336   struct bp_location **old_location, **old_locp;
12337   unsigned old_location_count;
12338
12339   old_location = bp_location;
12340   old_location_count = bp_location_count;
12341   bp_location = NULL;
12342   bp_location_count = 0;
12343   cleanups = make_cleanup (xfree, old_location);
12344
12345   ALL_BREAKPOINTS (b)
12346     for (loc = b->loc; loc; loc = loc->next)
12347       bp_location_count++;
12348
12349   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12350   locp = bp_location;
12351   ALL_BREAKPOINTS (b)
12352     for (loc = b->loc; loc; loc = loc->next)
12353       *locp++ = loc;
12354   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12355          bp_location_compare);
12356
12357   bp_location_target_extensions_update ();
12358
12359   /* Identify bp_location instances that are no longer present in the
12360      new list, and therefore should be freed.  Note that it's not
12361      necessary that those locations should be removed from inferior --
12362      if there's another location at the same address (previously
12363      marked as duplicate), we don't need to remove/insert the
12364      location.
12365      
12366      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12367      and former bp_location array state respectively.  */
12368
12369   locp = bp_location;
12370   for (old_locp = old_location; old_locp < old_location + old_location_count;
12371        old_locp++)
12372     {
12373       struct bp_location *old_loc = *old_locp;
12374       struct bp_location **loc2p;
12375
12376       /* Tells if 'old_loc' is found among the new locations.  If
12377          not, we have to free it.  */
12378       int found_object = 0;
12379       /* Tells if the location should remain inserted in the target.  */
12380       int keep_in_target = 0;
12381       int removed = 0;
12382
12383       /* Skip LOCP entries which will definitely never be needed.
12384          Stop either at or being the one matching OLD_LOC.  */
12385       while (locp < bp_location + bp_location_count
12386              && (*locp)->address < old_loc->address)
12387         locp++;
12388
12389       for (loc2p = locp;
12390            (loc2p < bp_location + bp_location_count
12391             && (*loc2p)->address == old_loc->address);
12392            loc2p++)
12393         {
12394           /* Check if this is a new/duplicated location or a duplicated
12395              location that had its condition modified.  If so, we want to send
12396              its condition to the target if evaluation of conditions is taking
12397              place there.  */
12398           if ((*loc2p)->condition_changed == condition_modified
12399               && (last_addr != old_loc->address
12400                   || last_pspace_num != old_loc->pspace->num))
12401             {
12402               force_breakpoint_reinsertion (*loc2p);
12403               last_pspace_num = old_loc->pspace->num;
12404             }
12405
12406           if (*loc2p == old_loc)
12407             found_object = 1;
12408         }
12409
12410       /* We have already handled this address, update it so that we don't
12411          have to go through updates again.  */
12412       last_addr = old_loc->address;
12413
12414       /* Target-side condition evaluation: Handle deleted locations.  */
12415       if (!found_object)
12416         force_breakpoint_reinsertion (old_loc);
12417
12418       /* If this location is no longer present, and inserted, look if
12419          there's maybe a new location at the same address.  If so,
12420          mark that one inserted, and don't remove this one.  This is
12421          needed so that we don't have a time window where a breakpoint
12422          at certain location is not inserted.  */
12423
12424       if (old_loc->inserted)
12425         {
12426           /* If the location is inserted now, we might have to remove
12427              it.  */
12428
12429           if (found_object && should_be_inserted (old_loc))
12430             {
12431               /* The location is still present in the location list,
12432                  and still should be inserted.  Don't do anything.  */
12433               keep_in_target = 1;
12434             }
12435           else
12436             {
12437               /* This location still exists, but it won't be kept in the
12438                  target since it may have been disabled.  We proceed to
12439                  remove its target-side condition.  */
12440
12441               /* The location is either no longer present, or got
12442                  disabled.  See if there's another location at the
12443                  same address, in which case we don't need to remove
12444                  this one from the target.  */
12445
12446               /* OLD_LOC comes from existing struct breakpoint.  */
12447               if (breakpoint_address_is_meaningful (old_loc->owner))
12448                 {
12449                   for (loc2p = locp;
12450                        (loc2p < bp_location + bp_location_count
12451                         && (*loc2p)->address == old_loc->address);
12452                        loc2p++)
12453                     {
12454                       struct bp_location *loc2 = *loc2p;
12455
12456                       if (breakpoint_locations_match (loc2, old_loc))
12457                         {
12458                           /* Read watchpoint locations are switched to
12459                              access watchpoints, if the former are not
12460                              supported, but the latter are.  */
12461                           if (is_hardware_watchpoint (old_loc->owner))
12462                             {
12463                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12464                               loc2->watchpoint_type = old_loc->watchpoint_type;
12465                             }
12466
12467                           /* loc2 is a duplicated location. We need to check
12468                              if it should be inserted in case it will be
12469                              unduplicated.  */
12470                           if (loc2 != old_loc
12471                               && unduplicated_should_be_inserted (loc2))
12472                             {
12473                               swap_insertion (old_loc, loc2);
12474                               keep_in_target = 1;
12475                               break;
12476                             }
12477                         }
12478                     }
12479                 }
12480             }
12481
12482           if (!keep_in_target)
12483             {
12484               if (remove_breakpoint (old_loc, mark_uninserted))
12485                 {
12486                   /* This is just about all we can do.  We could keep
12487                      this location on the global list, and try to
12488                      remove it next time, but there's no particular
12489                      reason why we will succeed next time.
12490                      
12491                      Note that at this point, old_loc->owner is still
12492                      valid, as delete_breakpoint frees the breakpoint
12493                      only after calling us.  */
12494                   printf_filtered (_("warning: Error removing "
12495                                      "breakpoint %d\n"), 
12496                                    old_loc->owner->number);
12497                 }
12498               removed = 1;
12499             }
12500         }
12501
12502       if (!found_object)
12503         {
12504           if (removed && non_stop
12505               && breakpoint_address_is_meaningful (old_loc->owner)
12506               && !is_hardware_watchpoint (old_loc->owner))
12507             {
12508               /* This location was removed from the target.  In
12509                  non-stop mode, a race condition is possible where
12510                  we've removed a breakpoint, but stop events for that
12511                  breakpoint are already queued and will arrive later.
12512                  We apply an heuristic to be able to distinguish such
12513                  SIGTRAPs from other random SIGTRAPs: we keep this
12514                  breakpoint location for a bit, and will retire it
12515                  after we see some number of events.  The theory here
12516                  is that reporting of events should, "on the average",
12517                  be fair, so after a while we'll see events from all
12518                  threads that have anything of interest, and no longer
12519                  need to keep this breakpoint location around.  We
12520                  don't hold locations forever so to reduce chances of
12521                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12522                  SIGTRAP.
12523
12524                  The heuristic failing can be disastrous on
12525                  decr_pc_after_break targets.
12526
12527                  On decr_pc_after_break targets, like e.g., x86-linux,
12528                  if we fail to recognize a late breakpoint SIGTRAP,
12529                  because events_till_retirement has reached 0 too
12530                  soon, we'll fail to do the PC adjustment, and report
12531                  a random SIGTRAP to the user.  When the user resumes
12532                  the inferior, it will most likely immediately crash
12533                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12534                  corrupted, because of being resumed e.g., in the
12535                  middle of a multi-byte instruction, or skipped a
12536                  one-byte instruction.  This was actually seen happen
12537                  on native x86-linux, and should be less rare on
12538                  targets that do not support new thread events, like
12539                  remote, due to the heuristic depending on
12540                  thread_count.
12541
12542                  Mistaking a random SIGTRAP for a breakpoint trap
12543                  causes similar symptoms (PC adjustment applied when
12544                  it shouldn't), but then again, playing with SIGTRAPs
12545                  behind the debugger's back is asking for trouble.
12546
12547                  Since hardware watchpoint traps are always
12548                  distinguishable from other traps, so we don't need to
12549                  apply keep hardware watchpoint moribund locations
12550                  around.  We simply always ignore hardware watchpoint
12551                  traps we can no longer explain.  */
12552
12553               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12554               old_loc->owner = NULL;
12555
12556               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12557             }
12558           else
12559             {
12560               old_loc->owner = NULL;
12561               decref_bp_location (&old_loc);
12562             }
12563         }
12564     }
12565
12566   /* Rescan breakpoints at the same address and section, marking the
12567      first one as "first" and any others as "duplicates".  This is so
12568      that the bpt instruction is only inserted once.  If we have a
12569      permanent breakpoint at the same place as BPT, make that one the
12570      official one, and the rest as duplicates.  Permanent breakpoints
12571      are sorted first for the same address.
12572
12573      Do the same for hardware watchpoints, but also considering the
12574      watchpoint's type (regular/access/read) and length.  */
12575
12576   bp_loc_first = NULL;
12577   wp_loc_first = NULL;
12578   awp_loc_first = NULL;
12579   rwp_loc_first = NULL;
12580   ALL_BP_LOCATIONS (loc, locp)
12581     {
12582       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12583          non-NULL.  */
12584       struct bp_location **loc_first_p;
12585       b = loc->owner;
12586
12587       if (!unduplicated_should_be_inserted (loc)
12588           || !breakpoint_address_is_meaningful (b)
12589           /* Don't detect duplicate for tracepoint locations because they are
12590            never duplicated.  See the comments in field `duplicate' of
12591            `struct bp_location'.  */
12592           || is_tracepoint (b))
12593         {
12594           /* Clear the condition modification flag.  */
12595           loc->condition_changed = condition_unchanged;
12596           continue;
12597         }
12598
12599       /* Permanent breakpoint should always be inserted.  */
12600       if (b->enable_state == bp_permanent && ! loc->inserted)
12601         internal_error (__FILE__, __LINE__,
12602                         _("allegedly permanent breakpoint is not "
12603                         "actually inserted"));
12604
12605       if (b->type == bp_hardware_watchpoint)
12606         loc_first_p = &wp_loc_first;
12607       else if (b->type == bp_read_watchpoint)
12608         loc_first_p = &rwp_loc_first;
12609       else if (b->type == bp_access_watchpoint)
12610         loc_first_p = &awp_loc_first;
12611       else
12612         loc_first_p = &bp_loc_first;
12613
12614       if (*loc_first_p == NULL
12615           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12616           || !breakpoint_locations_match (loc, *loc_first_p))
12617         {
12618           *loc_first_p = loc;
12619           loc->duplicate = 0;
12620
12621           if (is_breakpoint (loc->owner) && loc->condition_changed)
12622             {
12623               loc->needs_update = 1;
12624               /* Clear the condition modification flag.  */
12625               loc->condition_changed = condition_unchanged;
12626             }
12627           continue;
12628         }
12629
12630
12631       /* This and the above ensure the invariant that the first location
12632          is not duplicated, and is the inserted one.
12633          All following are marked as duplicated, and are not inserted.  */
12634       if (loc->inserted)
12635         swap_insertion (loc, *loc_first_p);
12636       loc->duplicate = 1;
12637
12638       /* Clear the condition modification flag.  */
12639       loc->condition_changed = condition_unchanged;
12640
12641       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12642           && b->enable_state != bp_permanent)
12643         internal_error (__FILE__, __LINE__,
12644                         _("another breakpoint was inserted on top of "
12645                         "a permanent breakpoint"));
12646     }
12647
12648   if (breakpoints_always_inserted_mode ()
12649       && (have_live_inferiors ()
12650           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12651     {
12652       if (should_insert)
12653         insert_breakpoint_locations ();
12654       else
12655         {
12656           /* Though should_insert is false, we may need to update conditions
12657              on the target's side if it is evaluating such conditions.  We
12658              only update conditions for locations that are marked
12659              "needs_update".  */
12660           update_inserted_breakpoint_locations ();
12661         }
12662     }
12663
12664   if (should_insert)
12665     download_tracepoint_locations ();
12666
12667   do_cleanups (cleanups);
12668 }
12669
12670 void
12671 breakpoint_retire_moribund (void)
12672 {
12673   struct bp_location *loc;
12674   int ix;
12675
12676   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12677     if (--(loc->events_till_retirement) == 0)
12678       {
12679         decref_bp_location (&loc);
12680         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12681         --ix;
12682       }
12683 }
12684
12685 static void
12686 update_global_location_list_nothrow (int inserting)
12687 {
12688   volatile struct gdb_exception e;
12689
12690   TRY_CATCH (e, RETURN_MASK_ERROR)
12691     update_global_location_list (inserting);
12692 }
12693
12694 /* Clear BKP from a BPS.  */
12695
12696 static void
12697 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12698 {
12699   bpstat bs;
12700
12701   for (bs = bps; bs; bs = bs->next)
12702     if (bs->breakpoint_at == bpt)
12703       {
12704         bs->breakpoint_at = NULL;
12705         bs->old_val = NULL;
12706         /* bs->commands will be freed later.  */
12707       }
12708 }
12709
12710 /* Callback for iterate_over_threads.  */
12711 static int
12712 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12713 {
12714   struct breakpoint *bpt = data;
12715
12716   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12717   return 0;
12718 }
12719
12720 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12721    callbacks.  */
12722
12723 static void
12724 say_where (struct breakpoint *b)
12725 {
12726   struct ui_out *uiout = current_uiout;
12727   struct value_print_options opts;
12728
12729   get_user_print_options (&opts);
12730
12731   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12732      single string.  */
12733   if (b->loc == NULL)
12734     {
12735       printf_filtered (_(" (%s) pending."), b->addr_string);
12736     }
12737   else
12738     {
12739       if (opts.addressprint || b->loc->source_file == NULL)
12740         {
12741           printf_filtered (" at ");
12742           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12743                           gdb_stdout);
12744         }
12745       if (b->loc->source_file)
12746         {
12747           /* If there is a single location, we can print the location
12748              more nicely.  */
12749           if (b->loc->next == NULL)
12750             printf_filtered (": file %s, line %d.",
12751                              b->loc->source_file, b->loc->line_number);
12752           else
12753             /* This is not ideal, but each location may have a
12754                different file name, and this at least reflects the
12755                real situation somewhat.  */
12756             printf_filtered (": %s.", b->addr_string);
12757         }
12758
12759       if (b->loc->next)
12760         {
12761           struct bp_location *loc = b->loc;
12762           int n = 0;
12763           for (; loc; loc = loc->next)
12764             ++n;
12765           printf_filtered (" (%d locations)", n);
12766         }
12767     }
12768 }
12769
12770 /* Default bp_location_ops methods.  */
12771
12772 static void
12773 bp_location_dtor (struct bp_location *self)
12774 {
12775   xfree (self->cond);
12776   if (self->cond_bytecode)
12777     free_agent_expr (self->cond_bytecode);
12778   xfree (self->function_name);
12779   xfree (self->source_file);
12780 }
12781
12782 static const struct bp_location_ops bp_location_ops =
12783 {
12784   bp_location_dtor
12785 };
12786
12787 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12788    inherit from.  */
12789
12790 static void
12791 base_breakpoint_dtor (struct breakpoint *self)
12792 {
12793   decref_counted_command_line (&self->commands);
12794   xfree (self->cond_string);
12795   xfree (self->addr_string);
12796   xfree (self->filter);
12797   xfree (self->addr_string_range_end);
12798 }
12799
12800 static struct bp_location *
12801 base_breakpoint_allocate_location (struct breakpoint *self)
12802 {
12803   struct bp_location *loc;
12804
12805   loc = XNEW (struct bp_location);
12806   init_bp_location (loc, &bp_location_ops, self);
12807   return loc;
12808 }
12809
12810 static void
12811 base_breakpoint_re_set (struct breakpoint *b)
12812 {
12813   /* Nothing to re-set. */
12814 }
12815
12816 #define internal_error_pure_virtual_called() \
12817   gdb_assert_not_reached ("pure virtual function called")
12818
12819 static int
12820 base_breakpoint_insert_location (struct bp_location *bl)
12821 {
12822   internal_error_pure_virtual_called ();
12823 }
12824
12825 static int
12826 base_breakpoint_remove_location (struct bp_location *bl)
12827 {
12828   internal_error_pure_virtual_called ();
12829 }
12830
12831 static int
12832 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12833                                 struct address_space *aspace,
12834                                 CORE_ADDR bp_addr,
12835                                 const struct target_waitstatus *ws)
12836 {
12837   internal_error_pure_virtual_called ();
12838 }
12839
12840 static void
12841 base_breakpoint_check_status (bpstat bs)
12842 {
12843   /* Always stop.   */
12844 }
12845
12846 /* A "works_in_software_mode" breakpoint_ops method that just internal
12847    errors.  */
12848
12849 static int
12850 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12851 {
12852   internal_error_pure_virtual_called ();
12853 }
12854
12855 /* A "resources_needed" breakpoint_ops method that just internal
12856    errors.  */
12857
12858 static int
12859 base_breakpoint_resources_needed (const struct bp_location *bl)
12860 {
12861   internal_error_pure_virtual_called ();
12862 }
12863
12864 static enum print_stop_action
12865 base_breakpoint_print_it (bpstat bs)
12866 {
12867   internal_error_pure_virtual_called ();
12868 }
12869
12870 static void
12871 base_breakpoint_print_one_detail (const struct breakpoint *self,
12872                                   struct ui_out *uiout)
12873 {
12874   /* nothing */
12875 }
12876
12877 static void
12878 base_breakpoint_print_mention (struct breakpoint *b)
12879 {
12880   internal_error_pure_virtual_called ();
12881 }
12882
12883 static void
12884 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12885 {
12886   internal_error_pure_virtual_called ();
12887 }
12888
12889 static void
12890 base_breakpoint_create_sals_from_address (char **arg,
12891                                           struct linespec_result *canonical,
12892                                           enum bptype type_wanted,
12893                                           char *addr_start,
12894                                           char **copy_arg)
12895 {
12896   internal_error_pure_virtual_called ();
12897 }
12898
12899 static void
12900 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12901                                         struct linespec_result *c,
12902                                         struct linespec_sals *lsal,
12903                                         char *cond_string,
12904                                         char *extra_string,
12905                                         enum bptype type_wanted,
12906                                         enum bpdisp disposition,
12907                                         int thread,
12908                                         int task, int ignore_count,
12909                                         const struct breakpoint_ops *o,
12910                                         int from_tty, int enabled,
12911                                         int internal, unsigned flags)
12912 {
12913   internal_error_pure_virtual_called ();
12914 }
12915
12916 static void
12917 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12918                                  struct symtabs_and_lines *sals)
12919 {
12920   internal_error_pure_virtual_called ();
12921 }
12922
12923 /* The default 'explains_signal' method.  */
12924
12925 static enum bpstat_signal_value
12926 base_breakpoint_explains_signal (struct breakpoint *b)
12927 {
12928   return BPSTAT_SIGNAL_HIDE;
12929 }
12930
12931 struct breakpoint_ops base_breakpoint_ops =
12932 {
12933   base_breakpoint_dtor,
12934   base_breakpoint_allocate_location,
12935   base_breakpoint_re_set,
12936   base_breakpoint_insert_location,
12937   base_breakpoint_remove_location,
12938   base_breakpoint_breakpoint_hit,
12939   base_breakpoint_check_status,
12940   base_breakpoint_resources_needed,
12941   base_breakpoint_works_in_software_mode,
12942   base_breakpoint_print_it,
12943   NULL,
12944   base_breakpoint_print_one_detail,
12945   base_breakpoint_print_mention,
12946   base_breakpoint_print_recreate,
12947   base_breakpoint_create_sals_from_address,
12948   base_breakpoint_create_breakpoints_sal,
12949   base_breakpoint_decode_linespec,
12950   base_breakpoint_explains_signal
12951 };
12952
12953 /* Default breakpoint_ops methods.  */
12954
12955 static void
12956 bkpt_re_set (struct breakpoint *b)
12957 {
12958   /* FIXME: is this still reachable?  */
12959   if (b->addr_string == NULL)
12960     {
12961       /* Anything without a string can't be re-set.  */
12962       delete_breakpoint (b);
12963       return;
12964     }
12965
12966   breakpoint_re_set_default (b);
12967 }
12968
12969 static int
12970 bkpt_insert_location (struct bp_location *bl)
12971 {
12972   if (bl->loc_type == bp_loc_hardware_breakpoint)
12973     return target_insert_hw_breakpoint (bl->gdbarch,
12974                                         &bl->target_info);
12975   else
12976     return target_insert_breakpoint (bl->gdbarch,
12977                                      &bl->target_info);
12978 }
12979
12980 static int
12981 bkpt_remove_location (struct bp_location *bl)
12982 {
12983   if (bl->loc_type == bp_loc_hardware_breakpoint)
12984     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12985   else
12986     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12987 }
12988
12989 static int
12990 bkpt_breakpoint_hit (const struct bp_location *bl,
12991                      struct address_space *aspace, CORE_ADDR bp_addr,
12992                      const struct target_waitstatus *ws)
12993 {
12994   struct breakpoint *b = bl->owner;
12995
12996   if (ws->kind != TARGET_WAITKIND_STOPPED
12997       || ws->value.sig != GDB_SIGNAL_TRAP)
12998     return 0;
12999
13000   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13001                                  aspace, bp_addr))
13002     return 0;
13003
13004   if (overlay_debugging         /* unmapped overlay section */
13005       && section_is_overlay (bl->section)
13006       && !section_is_mapped (bl->section))
13007     return 0;
13008
13009   return 1;
13010 }
13011
13012 static int
13013 bkpt_resources_needed (const struct bp_location *bl)
13014 {
13015   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13016
13017   return 1;
13018 }
13019
13020 static enum print_stop_action
13021 bkpt_print_it (bpstat bs)
13022 {
13023   struct breakpoint *b;
13024   const struct bp_location *bl;
13025   int bp_temp;
13026   struct ui_out *uiout = current_uiout;
13027
13028   gdb_assert (bs->bp_location_at != NULL);
13029
13030   bl = bs->bp_location_at;
13031   b = bs->breakpoint_at;
13032
13033   bp_temp = b->disposition == disp_del;
13034   if (bl->address != bl->requested_address)
13035     breakpoint_adjustment_warning (bl->requested_address,
13036                                    bl->address,
13037                                    b->number, 1);
13038   annotate_breakpoint (b->number);
13039   if (bp_temp)
13040     ui_out_text (uiout, "\nTemporary breakpoint ");
13041   else
13042     ui_out_text (uiout, "\nBreakpoint ");
13043   if (ui_out_is_mi_like_p (uiout))
13044     {
13045       ui_out_field_string (uiout, "reason",
13046                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13047       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13048     }
13049   ui_out_field_int (uiout, "bkptno", b->number);
13050   ui_out_text (uiout, ", ");
13051
13052   return PRINT_SRC_AND_LOC;
13053 }
13054
13055 static void
13056 bkpt_print_mention (struct breakpoint *b)
13057 {
13058   if (ui_out_is_mi_like_p (current_uiout))
13059     return;
13060
13061   switch (b->type)
13062     {
13063     case bp_breakpoint:
13064     case bp_gnu_ifunc_resolver:
13065       if (b->disposition == disp_del)
13066         printf_filtered (_("Temporary breakpoint"));
13067       else
13068         printf_filtered (_("Breakpoint"));
13069       printf_filtered (_(" %d"), b->number);
13070       if (b->type == bp_gnu_ifunc_resolver)
13071         printf_filtered (_(" at gnu-indirect-function resolver"));
13072       break;
13073     case bp_hardware_breakpoint:
13074       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13075       break;
13076     case bp_dprintf:
13077       printf_filtered (_("Dprintf %d"), b->number);
13078       break;
13079     }
13080
13081   say_where (b);
13082 }
13083
13084 static void
13085 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13086 {
13087   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13088     fprintf_unfiltered (fp, "tbreak");
13089   else if (tp->type == bp_breakpoint)
13090     fprintf_unfiltered (fp, "break");
13091   else if (tp->type == bp_hardware_breakpoint
13092            && tp->disposition == disp_del)
13093     fprintf_unfiltered (fp, "thbreak");
13094   else if (tp->type == bp_hardware_breakpoint)
13095     fprintf_unfiltered (fp, "hbreak");
13096   else
13097     internal_error (__FILE__, __LINE__,
13098                     _("unhandled breakpoint type %d"), (int) tp->type);
13099
13100   fprintf_unfiltered (fp, " %s", tp->addr_string);
13101   print_recreate_thread (tp, fp);
13102 }
13103
13104 static void
13105 bkpt_create_sals_from_address (char **arg,
13106                                struct linespec_result *canonical,
13107                                enum bptype type_wanted,
13108                                char *addr_start, char **copy_arg)
13109 {
13110   create_sals_from_address_default (arg, canonical, type_wanted,
13111                                     addr_start, copy_arg);
13112 }
13113
13114 static void
13115 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13116                              struct linespec_result *canonical,
13117                              struct linespec_sals *lsal,
13118                              char *cond_string,
13119                              char *extra_string,
13120                              enum bptype type_wanted,
13121                              enum bpdisp disposition,
13122                              int thread,
13123                              int task, int ignore_count,
13124                              const struct breakpoint_ops *ops,
13125                              int from_tty, int enabled,
13126                              int internal, unsigned flags)
13127 {
13128   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13129                                   cond_string, extra_string,
13130                                   type_wanted,
13131                                   disposition, thread, task,
13132                                   ignore_count, ops, from_tty,
13133                                   enabled, internal, flags);
13134 }
13135
13136 static void
13137 bkpt_decode_linespec (struct breakpoint *b, char **s,
13138                       struct symtabs_and_lines *sals)
13139 {
13140   decode_linespec_default (b, s, sals);
13141 }
13142
13143 /* Virtual table for internal breakpoints.  */
13144
13145 static void
13146 internal_bkpt_re_set (struct breakpoint *b)
13147 {
13148   switch (b->type)
13149     {
13150       /* Delete overlay event and longjmp master breakpoints; they
13151          will be reset later by breakpoint_re_set.  */
13152     case bp_overlay_event:
13153     case bp_longjmp_master:
13154     case bp_std_terminate_master:
13155     case bp_exception_master:
13156       delete_breakpoint (b);
13157       break;
13158
13159       /* This breakpoint is special, it's set up when the inferior
13160          starts and we really don't want to touch it.  */
13161     case bp_shlib_event:
13162
13163       /* Like bp_shlib_event, this breakpoint type is special.  Once
13164          it is set up, we do not want to touch it.  */
13165     case bp_thread_event:
13166       break;
13167     }
13168 }
13169
13170 static void
13171 internal_bkpt_check_status (bpstat bs)
13172 {
13173   if (bs->breakpoint_at->type == bp_shlib_event)
13174     {
13175       /* If requested, stop when the dynamic linker notifies GDB of
13176          events.  This allows the user to get control and place
13177          breakpoints in initializer routines for dynamically loaded
13178          objects (among other things).  */
13179       bs->stop = stop_on_solib_events;
13180       bs->print = stop_on_solib_events;
13181     }
13182   else
13183     bs->stop = 0;
13184 }
13185
13186 static enum print_stop_action
13187 internal_bkpt_print_it (bpstat bs)
13188 {
13189   struct ui_out *uiout = current_uiout;
13190   struct breakpoint *b;
13191
13192   b = bs->breakpoint_at;
13193
13194   switch (b->type)
13195     {
13196     case bp_shlib_event:
13197       /* Did we stop because the user set the stop_on_solib_events
13198          variable?  (If so, we report this as a generic, "Stopped due
13199          to shlib event" message.) */
13200       print_solib_event (0);
13201       break;
13202
13203     case bp_thread_event:
13204       /* Not sure how we will get here.
13205          GDB should not stop for these breakpoints.  */
13206       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13207       break;
13208
13209     case bp_overlay_event:
13210       /* By analogy with the thread event, GDB should not stop for these.  */
13211       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13212       break;
13213
13214     case bp_longjmp_master:
13215       /* These should never be enabled.  */
13216       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13217       break;
13218
13219     case bp_std_terminate_master:
13220       /* These should never be enabled.  */
13221       printf_filtered (_("std::terminate Master Breakpoint: "
13222                          "gdb should not stop!\n"));
13223       break;
13224
13225     case bp_exception_master:
13226       /* These should never be enabled.  */
13227       printf_filtered (_("Exception Master Breakpoint: "
13228                          "gdb should not stop!\n"));
13229       break;
13230     }
13231
13232   return PRINT_NOTHING;
13233 }
13234
13235 static void
13236 internal_bkpt_print_mention (struct breakpoint *b)
13237 {
13238   /* Nothing to mention.  These breakpoints are internal.  */
13239 }
13240
13241 /* Virtual table for momentary breakpoints  */
13242
13243 static void
13244 momentary_bkpt_re_set (struct breakpoint *b)
13245 {
13246   /* Keep temporary breakpoints, which can be encountered when we step
13247      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13248      Otherwise these should have been blown away via the cleanup chain
13249      or by breakpoint_init_inferior when we rerun the executable.  */
13250 }
13251
13252 static void
13253 momentary_bkpt_check_status (bpstat bs)
13254 {
13255   /* Nothing.  The point of these breakpoints is causing a stop.  */
13256 }
13257
13258 static enum print_stop_action
13259 momentary_bkpt_print_it (bpstat bs)
13260 {
13261   struct ui_out *uiout = current_uiout;
13262
13263   if (ui_out_is_mi_like_p (uiout))
13264     {
13265       struct breakpoint *b = bs->breakpoint_at;
13266
13267       switch (b->type)
13268         {
13269         case bp_finish:
13270           ui_out_field_string
13271             (uiout, "reason",
13272              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13273           break;
13274
13275         case bp_until:
13276           ui_out_field_string
13277             (uiout, "reason",
13278              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13279           break;
13280         }
13281     }
13282
13283   return PRINT_UNKNOWN;
13284 }
13285
13286 static void
13287 momentary_bkpt_print_mention (struct breakpoint *b)
13288 {
13289   /* Nothing to mention.  These breakpoints are internal.  */
13290 }
13291
13292 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13293
13294    It gets cleared already on the removal of the first one of such placed
13295    breakpoints.  This is OK as they get all removed altogether.  */
13296
13297 static void
13298 longjmp_bkpt_dtor (struct breakpoint *self)
13299 {
13300   struct thread_info *tp = find_thread_id (self->thread);
13301
13302   if (tp)
13303     tp->initiating_frame = null_frame_id;
13304
13305   momentary_breakpoint_ops.dtor (self);
13306 }
13307
13308 /* Specific methods for probe breakpoints.  */
13309
13310 static int
13311 bkpt_probe_insert_location (struct bp_location *bl)
13312 {
13313   int v = bkpt_insert_location (bl);
13314
13315   if (v == 0)
13316     {
13317       /* The insertion was successful, now let's set the probe's semaphore
13318          if needed.  */
13319       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13320     }
13321
13322   return v;
13323 }
13324
13325 static int
13326 bkpt_probe_remove_location (struct bp_location *bl)
13327 {
13328   /* Let's clear the semaphore before removing the location.  */
13329   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13330
13331   return bkpt_remove_location (bl);
13332 }
13333
13334 static void
13335 bkpt_probe_create_sals_from_address (char **arg,
13336                                      struct linespec_result *canonical,
13337                                      enum bptype type_wanted,
13338                                      char *addr_start, char **copy_arg)
13339 {
13340   struct linespec_sals lsal;
13341
13342   lsal.sals = parse_probes (arg, canonical);
13343
13344   *copy_arg = xstrdup (canonical->addr_string);
13345   lsal.canonical = xstrdup (*copy_arg);
13346
13347   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13348 }
13349
13350 static void
13351 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13352                             struct symtabs_and_lines *sals)
13353 {
13354   *sals = parse_probes (s, NULL);
13355   if (!sals->sals)
13356     error (_("probe not found"));
13357 }
13358
13359 /* The breakpoint_ops structure to be used in tracepoints.  */
13360
13361 static void
13362 tracepoint_re_set (struct breakpoint *b)
13363 {
13364   breakpoint_re_set_default (b);
13365 }
13366
13367 static int
13368 tracepoint_breakpoint_hit (const struct bp_location *bl,
13369                            struct address_space *aspace, CORE_ADDR bp_addr,
13370                            const struct target_waitstatus *ws)
13371 {
13372   /* By definition, the inferior does not report stops at
13373      tracepoints.  */
13374   return 0;
13375 }
13376
13377 static void
13378 tracepoint_print_one_detail (const struct breakpoint *self,
13379                              struct ui_out *uiout)
13380 {
13381   struct tracepoint *tp = (struct tracepoint *) self;
13382   if (tp->static_trace_marker_id)
13383     {
13384       gdb_assert (self->type == bp_static_tracepoint);
13385
13386       ui_out_text (uiout, "\tmarker id is ");
13387       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13388                            tp->static_trace_marker_id);
13389       ui_out_text (uiout, "\n");
13390     }
13391 }
13392
13393 static void
13394 tracepoint_print_mention (struct breakpoint *b)
13395 {
13396   if (ui_out_is_mi_like_p (current_uiout))
13397     return;
13398
13399   switch (b->type)
13400     {
13401     case bp_tracepoint:
13402       printf_filtered (_("Tracepoint"));
13403       printf_filtered (_(" %d"), b->number);
13404       break;
13405     case bp_fast_tracepoint:
13406       printf_filtered (_("Fast tracepoint"));
13407       printf_filtered (_(" %d"), b->number);
13408       break;
13409     case bp_static_tracepoint:
13410       printf_filtered (_("Static tracepoint"));
13411       printf_filtered (_(" %d"), b->number);
13412       break;
13413     default:
13414       internal_error (__FILE__, __LINE__,
13415                       _("unhandled tracepoint type %d"), (int) b->type);
13416     }
13417
13418   say_where (b);
13419 }
13420
13421 static void
13422 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13423 {
13424   struct tracepoint *tp = (struct tracepoint *) self;
13425
13426   if (self->type == bp_fast_tracepoint)
13427     fprintf_unfiltered (fp, "ftrace");
13428   if (self->type == bp_static_tracepoint)
13429     fprintf_unfiltered (fp, "strace");
13430   else if (self->type == bp_tracepoint)
13431     fprintf_unfiltered (fp, "trace");
13432   else
13433     internal_error (__FILE__, __LINE__,
13434                     _("unhandled tracepoint type %d"), (int) self->type);
13435
13436   fprintf_unfiltered (fp, " %s", self->addr_string);
13437   print_recreate_thread (self, fp);
13438
13439   if (tp->pass_count)
13440     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13441 }
13442
13443 static void
13444 tracepoint_create_sals_from_address (char **arg,
13445                                      struct linespec_result *canonical,
13446                                      enum bptype type_wanted,
13447                                      char *addr_start, char **copy_arg)
13448 {
13449   create_sals_from_address_default (arg, canonical, type_wanted,
13450                                     addr_start, copy_arg);
13451 }
13452
13453 static void
13454 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13455                                    struct linespec_result *canonical,
13456                                    struct linespec_sals *lsal,
13457                                    char *cond_string,
13458                                    char *extra_string,
13459                                    enum bptype type_wanted,
13460                                    enum bpdisp disposition,
13461                                    int thread,
13462                                    int task, int ignore_count,
13463                                    const struct breakpoint_ops *ops,
13464                                    int from_tty, int enabled,
13465                                    int internal, unsigned flags)
13466 {
13467   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13468                                   cond_string, extra_string,
13469                                   type_wanted,
13470                                   disposition, thread, task,
13471                                   ignore_count, ops, from_tty,
13472                                   enabled, internal, flags);
13473 }
13474
13475 static void
13476 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13477                             struct symtabs_and_lines *sals)
13478 {
13479   decode_linespec_default (b, s, sals);
13480 }
13481
13482 struct breakpoint_ops tracepoint_breakpoint_ops;
13483
13484 /* The breakpoint_ops structure to be use on tracepoints placed in a
13485    static probe.  */
13486
13487 static void
13488 tracepoint_probe_create_sals_from_address (char **arg,
13489                                            struct linespec_result *canonical,
13490                                            enum bptype type_wanted,
13491                                            char *addr_start, char **copy_arg)
13492 {
13493   /* We use the same method for breakpoint on probes.  */
13494   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13495                                        addr_start, copy_arg);
13496 }
13497
13498 static void
13499 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13500                                   struct symtabs_and_lines *sals)
13501 {
13502   /* We use the same method for breakpoint on probes.  */
13503   bkpt_probe_decode_linespec (b, s, sals);
13504 }
13505
13506 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13507
13508 /* The breakpoint_ops structure to be used on static tracepoints with
13509    markers (`-m').  */
13510
13511 static void
13512 strace_marker_create_sals_from_address (char **arg,
13513                                         struct linespec_result *canonical,
13514                                         enum bptype type_wanted,
13515                                         char *addr_start, char **copy_arg)
13516 {
13517   struct linespec_sals lsal;
13518
13519   lsal.sals = decode_static_tracepoint_spec (arg);
13520
13521   *copy_arg = savestring (addr_start, *arg - addr_start);
13522
13523   canonical->addr_string = xstrdup (*copy_arg);
13524   lsal.canonical = xstrdup (*copy_arg);
13525   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13526 }
13527
13528 static void
13529 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13530                                       struct linespec_result *canonical,
13531                                       struct linespec_sals *lsal,
13532                                       char *cond_string,
13533                                       char *extra_string,
13534                                       enum bptype type_wanted,
13535                                       enum bpdisp disposition,
13536                                       int thread,
13537                                       int task, int ignore_count,
13538                                       const struct breakpoint_ops *ops,
13539                                       int from_tty, int enabled,
13540                                       int internal, unsigned flags)
13541 {
13542   int i;
13543
13544   /* If the user is creating a static tracepoint by marker id
13545      (strace -m MARKER_ID), then store the sals index, so that
13546      breakpoint_re_set can try to match up which of the newly
13547      found markers corresponds to this one, and, don't try to
13548      expand multiple locations for each sal, given than SALS
13549      already should contain all sals for MARKER_ID.  */
13550
13551   for (i = 0; i < lsal->sals.nelts; ++i)
13552     {
13553       struct symtabs_and_lines expanded;
13554       struct tracepoint *tp;
13555       struct cleanup *old_chain;
13556       char *addr_string;
13557
13558       expanded.nelts = 1;
13559       expanded.sals = &lsal->sals.sals[i];
13560
13561       addr_string = xstrdup (canonical->addr_string);
13562       old_chain = make_cleanup (xfree, addr_string);
13563
13564       tp = XCNEW (struct tracepoint);
13565       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13566                            addr_string, NULL,
13567                            cond_string, extra_string,
13568                            type_wanted, disposition,
13569                            thread, task, ignore_count, ops,
13570                            from_tty, enabled, internal, flags,
13571                            canonical->special_display);
13572       /* Given that its possible to have multiple markers with
13573          the same string id, if the user is creating a static
13574          tracepoint by marker id ("strace -m MARKER_ID"), then
13575          store the sals index, so that breakpoint_re_set can
13576          try to match up which of the newly found markers
13577          corresponds to this one  */
13578       tp->static_trace_marker_id_idx = i;
13579
13580       install_breakpoint (internal, &tp->base, 0);
13581
13582       discard_cleanups (old_chain);
13583     }
13584 }
13585
13586 static void
13587 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13588                                struct symtabs_and_lines *sals)
13589 {
13590   struct tracepoint *tp = (struct tracepoint *) b;
13591
13592   *sals = decode_static_tracepoint_spec (s);
13593   if (sals->nelts > tp->static_trace_marker_id_idx)
13594     {
13595       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13596       sals->nelts = 1;
13597     }
13598   else
13599     error (_("marker %s not found"), tp->static_trace_marker_id);
13600 }
13601
13602 static struct breakpoint_ops strace_marker_breakpoint_ops;
13603
13604 static int
13605 strace_marker_p (struct breakpoint *b)
13606 {
13607   return b->ops == &strace_marker_breakpoint_ops;
13608 }
13609
13610 /* Delete a breakpoint and clean up all traces of it in the data
13611    structures.  */
13612
13613 void
13614 delete_breakpoint (struct breakpoint *bpt)
13615 {
13616   struct breakpoint *b;
13617
13618   gdb_assert (bpt != NULL);
13619
13620   /* Has this bp already been deleted?  This can happen because
13621      multiple lists can hold pointers to bp's.  bpstat lists are
13622      especial culprits.
13623
13624      One example of this happening is a watchpoint's scope bp.  When
13625      the scope bp triggers, we notice that the watchpoint is out of
13626      scope, and delete it.  We also delete its scope bp.  But the
13627      scope bp is marked "auto-deleting", and is already on a bpstat.
13628      That bpstat is then checked for auto-deleting bp's, which are
13629      deleted.
13630
13631      A real solution to this problem might involve reference counts in
13632      bp's, and/or giving them pointers back to their referencing
13633      bpstat's, and teaching delete_breakpoint to only free a bp's
13634      storage when no more references were extent.  A cheaper bandaid
13635      was chosen.  */
13636   if (bpt->type == bp_none)
13637     return;
13638
13639   /* At least avoid this stale reference until the reference counting
13640      of breakpoints gets resolved.  */
13641   if (bpt->related_breakpoint != bpt)
13642     {
13643       struct breakpoint *related;
13644       struct watchpoint *w;
13645
13646       if (bpt->type == bp_watchpoint_scope)
13647         w = (struct watchpoint *) bpt->related_breakpoint;
13648       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13649         w = (struct watchpoint *) bpt;
13650       else
13651         w = NULL;
13652       if (w != NULL)
13653         watchpoint_del_at_next_stop (w);
13654
13655       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13656       for (related = bpt; related->related_breakpoint != bpt;
13657            related = related->related_breakpoint);
13658       related->related_breakpoint = bpt->related_breakpoint;
13659       bpt->related_breakpoint = bpt;
13660     }
13661
13662   /* watch_command_1 creates a watchpoint but only sets its number if
13663      update_watchpoint succeeds in creating its bp_locations.  If there's
13664      a problem in that process, we'll be asked to delete the half-created
13665      watchpoint.  In that case, don't announce the deletion.  */
13666   if (bpt->number)
13667     observer_notify_breakpoint_deleted (bpt);
13668
13669   if (breakpoint_chain == bpt)
13670     breakpoint_chain = bpt->next;
13671
13672   ALL_BREAKPOINTS (b)
13673     if (b->next == bpt)
13674     {
13675       b->next = bpt->next;
13676       break;
13677     }
13678
13679   /* Be sure no bpstat's are pointing at the breakpoint after it's
13680      been freed.  */
13681   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13682      in all threads for now.  Note that we cannot just remove bpstats
13683      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13684      commands are associated with the bpstat; if we remove it here,
13685      then the later call to bpstat_do_actions (&stop_bpstat); in
13686      event-top.c won't do anything, and temporary breakpoints with
13687      commands won't work.  */
13688
13689   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13690
13691   /* Now that breakpoint is removed from breakpoint list, update the
13692      global location list.  This will remove locations that used to
13693      belong to this breakpoint.  Do this before freeing the breakpoint
13694      itself, since remove_breakpoint looks at location's owner.  It
13695      might be better design to have location completely
13696      self-contained, but it's not the case now.  */
13697   update_global_location_list (0);
13698
13699   bpt->ops->dtor (bpt);
13700   /* On the chance that someone will soon try again to delete this
13701      same bp, we mark it as deleted before freeing its storage.  */
13702   bpt->type = bp_none;
13703   xfree (bpt);
13704 }
13705
13706 static void
13707 do_delete_breakpoint_cleanup (void *b)
13708 {
13709   delete_breakpoint (b);
13710 }
13711
13712 struct cleanup *
13713 make_cleanup_delete_breakpoint (struct breakpoint *b)
13714 {
13715   return make_cleanup (do_delete_breakpoint_cleanup, b);
13716 }
13717
13718 /* Iterator function to call a user-provided callback function once
13719    for each of B and its related breakpoints.  */
13720
13721 static void
13722 iterate_over_related_breakpoints (struct breakpoint *b,
13723                                   void (*function) (struct breakpoint *,
13724                                                     void *),
13725                                   void *data)
13726 {
13727   struct breakpoint *related;
13728
13729   related = b;
13730   do
13731     {
13732       struct breakpoint *next;
13733
13734       /* FUNCTION may delete RELATED.  */
13735       next = related->related_breakpoint;
13736
13737       if (next == related)
13738         {
13739           /* RELATED is the last ring entry.  */
13740           function (related, data);
13741
13742           /* FUNCTION may have deleted it, so we'd never reach back to
13743              B.  There's nothing left to do anyway, so just break
13744              out.  */
13745           break;
13746         }
13747       else
13748         function (related, data);
13749
13750       related = next;
13751     }
13752   while (related != b);
13753 }
13754
13755 static void
13756 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13757 {
13758   delete_breakpoint (b);
13759 }
13760
13761 /* A callback for map_breakpoint_numbers that calls
13762    delete_breakpoint.  */
13763
13764 static void
13765 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13766 {
13767   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13768 }
13769
13770 void
13771 delete_command (char *arg, int from_tty)
13772 {
13773   struct breakpoint *b, *b_tmp;
13774
13775   dont_repeat ();
13776
13777   if (arg == 0)
13778     {
13779       int breaks_to_delete = 0;
13780
13781       /* Delete all breakpoints if no argument.  Do not delete
13782          internal breakpoints, these have to be deleted with an
13783          explicit breakpoint number argument.  */
13784       ALL_BREAKPOINTS (b)
13785         if (user_breakpoint_p (b))
13786           {
13787             breaks_to_delete = 1;
13788             break;
13789           }
13790
13791       /* Ask user only if there are some breakpoints to delete.  */
13792       if (!from_tty
13793           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13794         {
13795           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13796             if (user_breakpoint_p (b))
13797               delete_breakpoint (b);
13798         }
13799     }
13800   else
13801     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13802 }
13803
13804 static int
13805 all_locations_are_pending (struct bp_location *loc)
13806 {
13807   for (; loc; loc = loc->next)
13808     if (!loc->shlib_disabled
13809         && !loc->pspace->executing_startup)
13810       return 0;
13811   return 1;
13812 }
13813
13814 /* Subroutine of update_breakpoint_locations to simplify it.
13815    Return non-zero if multiple fns in list LOC have the same name.
13816    Null names are ignored.  */
13817
13818 static int
13819 ambiguous_names_p (struct bp_location *loc)
13820 {
13821   struct bp_location *l;
13822   htab_t htab = htab_create_alloc (13, htab_hash_string,
13823                                    (int (*) (const void *, 
13824                                              const void *)) streq,
13825                                    NULL, xcalloc, xfree);
13826
13827   for (l = loc; l != NULL; l = l->next)
13828     {
13829       const char **slot;
13830       const char *name = l->function_name;
13831
13832       /* Allow for some names to be NULL, ignore them.  */
13833       if (name == NULL)
13834         continue;
13835
13836       slot = (const char **) htab_find_slot (htab, (const void *) name,
13837                                              INSERT);
13838       /* NOTE: We can assume slot != NULL here because xcalloc never
13839          returns NULL.  */
13840       if (*slot != NULL)
13841         {
13842           htab_delete (htab);
13843           return 1;
13844         }
13845       *slot = name;
13846     }
13847
13848   htab_delete (htab);
13849   return 0;
13850 }
13851
13852 /* When symbols change, it probably means the sources changed as well,
13853    and it might mean the static tracepoint markers are no longer at
13854    the same address or line numbers they used to be at last we
13855    checked.  Losing your static tracepoints whenever you rebuild is
13856    undesirable.  This function tries to resync/rematch gdb static
13857    tracepoints with the markers on the target, for static tracepoints
13858    that have not been set by marker id.  Static tracepoint that have
13859    been set by marker id are reset by marker id in breakpoint_re_set.
13860    The heuristic is:
13861
13862    1) For a tracepoint set at a specific address, look for a marker at
13863    the old PC.  If one is found there, assume to be the same marker.
13864    If the name / string id of the marker found is different from the
13865    previous known name, assume that means the user renamed the marker
13866    in the sources, and output a warning.
13867
13868    2) For a tracepoint set at a given line number, look for a marker
13869    at the new address of the old line number.  If one is found there,
13870    assume to be the same marker.  If the name / string id of the
13871    marker found is different from the previous known name, assume that
13872    means the user renamed the marker in the sources, and output a
13873    warning.
13874
13875    3) If a marker is no longer found at the same address or line, it
13876    may mean the marker no longer exists.  But it may also just mean
13877    the code changed a bit.  Maybe the user added a few lines of code
13878    that made the marker move up or down (in line number terms).  Ask
13879    the target for info about the marker with the string id as we knew
13880    it.  If found, update line number and address in the matching
13881    static tracepoint.  This will get confused if there's more than one
13882    marker with the same ID (possible in UST, although unadvised
13883    precisely because it confuses tools).  */
13884
13885 static struct symtab_and_line
13886 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13887 {
13888   struct tracepoint *tp = (struct tracepoint *) b;
13889   struct static_tracepoint_marker marker;
13890   CORE_ADDR pc;
13891
13892   pc = sal.pc;
13893   if (sal.line)
13894     find_line_pc (sal.symtab, sal.line, &pc);
13895
13896   if (target_static_tracepoint_marker_at (pc, &marker))
13897     {
13898       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13899         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13900                  b->number,
13901                  tp->static_trace_marker_id, marker.str_id);
13902
13903       xfree (tp->static_trace_marker_id);
13904       tp->static_trace_marker_id = xstrdup (marker.str_id);
13905       release_static_tracepoint_marker (&marker);
13906
13907       return sal;
13908     }
13909
13910   /* Old marker wasn't found on target at lineno.  Try looking it up
13911      by string ID.  */
13912   if (!sal.explicit_pc
13913       && sal.line != 0
13914       && sal.symtab != NULL
13915       && tp->static_trace_marker_id != NULL)
13916     {
13917       VEC(static_tracepoint_marker_p) *markers;
13918
13919       markers
13920         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13921
13922       if (!VEC_empty(static_tracepoint_marker_p, markers))
13923         {
13924           struct symtab_and_line sal2;
13925           struct symbol *sym;
13926           struct static_tracepoint_marker *tpmarker;
13927           struct ui_out *uiout = current_uiout;
13928
13929           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13930
13931           xfree (tp->static_trace_marker_id);
13932           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13933
13934           warning (_("marker for static tracepoint %d (%s) not "
13935                      "found at previous line number"),
13936                    b->number, tp->static_trace_marker_id);
13937
13938           init_sal (&sal2);
13939
13940           sal2.pc = tpmarker->address;
13941
13942           sal2 = find_pc_line (tpmarker->address, 0);
13943           sym = find_pc_sect_function (tpmarker->address, NULL);
13944           ui_out_text (uiout, "Now in ");
13945           if (sym)
13946             {
13947               ui_out_field_string (uiout, "func",
13948                                    SYMBOL_PRINT_NAME (sym));
13949               ui_out_text (uiout, " at ");
13950             }
13951           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13952           ui_out_text (uiout, ":");
13953
13954           if (ui_out_is_mi_like_p (uiout))
13955             {
13956               const char *fullname = symtab_to_fullname (sal2.symtab);
13957
13958               ui_out_field_string (uiout, "fullname", fullname);
13959             }
13960
13961           ui_out_field_int (uiout, "line", sal2.line);
13962           ui_out_text (uiout, "\n");
13963
13964           b->loc->line_number = sal2.line;
13965
13966           xfree (b->loc->source_file);
13967           if (sym)
13968             b->loc->source_file = xstrdup (sal2.symtab->filename);
13969           else
13970             b->loc->source_file = NULL;
13971
13972           xfree (b->addr_string);
13973           b->addr_string = xstrprintf ("%s:%d",
13974                                        sal2.symtab->filename,
13975                                        b->loc->line_number);
13976
13977           /* Might be nice to check if function changed, and warn if
13978              so.  */
13979
13980           release_static_tracepoint_marker (tpmarker);
13981         }
13982     }
13983   return sal;
13984 }
13985
13986 /* Returns 1 iff locations A and B are sufficiently same that
13987    we don't need to report breakpoint as changed.  */
13988
13989 static int
13990 locations_are_equal (struct bp_location *a, struct bp_location *b)
13991 {
13992   while (a && b)
13993     {
13994       if (a->address != b->address)
13995         return 0;
13996
13997       if (a->shlib_disabled != b->shlib_disabled)
13998         return 0;
13999
14000       if (a->enabled != b->enabled)
14001         return 0;
14002
14003       a = a->next;
14004       b = b->next;
14005     }
14006
14007   if ((a == NULL) != (b == NULL))
14008     return 0;
14009
14010   return 1;
14011 }
14012
14013 /* Create new breakpoint locations for B (a hardware or software breakpoint)
14014    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
14015    a ranged breakpoint.  */
14016
14017 void
14018 update_breakpoint_locations (struct breakpoint *b,
14019                              struct symtabs_and_lines sals,
14020                              struct symtabs_and_lines sals_end)
14021 {
14022   int i;
14023   struct bp_location *existing_locations = b->loc;
14024
14025   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14026     {
14027       /* Ranged breakpoints have only one start location and one end
14028          location.  */
14029       b->enable_state = bp_disabled;
14030       update_global_location_list (1);
14031       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14032                            "multiple locations found\n"),
14033                          b->number);
14034       return;
14035     }
14036
14037   /* If there's no new locations, and all existing locations are
14038      pending, don't do anything.  This optimizes the common case where
14039      all locations are in the same shared library, that was unloaded.
14040      We'd like to retain the location, so that when the library is
14041      loaded again, we don't loose the enabled/disabled status of the
14042      individual locations.  */
14043   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14044     return;
14045
14046   b->loc = NULL;
14047
14048   for (i = 0; i < sals.nelts; ++i)
14049     {
14050       struct bp_location *new_loc;
14051
14052       switch_to_program_space_and_thread (sals.sals[i].pspace);
14053
14054       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14055
14056       /* Reparse conditions, they might contain references to the
14057          old symtab.  */
14058       if (b->cond_string != NULL)
14059         {
14060           char *s;
14061           volatile struct gdb_exception e;
14062
14063           s = b->cond_string;
14064           TRY_CATCH (e, RETURN_MASK_ERROR)
14065             {
14066               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14067                                            block_for_pc (sals.sals[i].pc), 
14068                                            0);
14069             }
14070           if (e.reason < 0)
14071             {
14072               warning (_("failed to reevaluate condition "
14073                          "for breakpoint %d: %s"), 
14074                        b->number, e.message);
14075               new_loc->enabled = 0;
14076             }
14077         }
14078
14079       if (sals_end.nelts)
14080         {
14081           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14082
14083           new_loc->length = end - sals.sals[0].pc + 1;
14084         }
14085     }
14086
14087   /* Update locations of permanent breakpoints.  */
14088   if (b->enable_state == bp_permanent)
14089     make_breakpoint_permanent (b);
14090
14091   /* If possible, carry over 'disable' status from existing
14092      breakpoints.  */
14093   {
14094     struct bp_location *e = existing_locations;
14095     /* If there are multiple breakpoints with the same function name,
14096        e.g. for inline functions, comparing function names won't work.
14097        Instead compare pc addresses; this is just a heuristic as things
14098        may have moved, but in practice it gives the correct answer
14099        often enough until a better solution is found.  */
14100     int have_ambiguous_names = ambiguous_names_p (b->loc);
14101
14102     for (; e; e = e->next)
14103       {
14104         if (!e->enabled && e->function_name)
14105           {
14106             struct bp_location *l = b->loc;
14107             if (have_ambiguous_names)
14108               {
14109                 for (; l; l = l->next)
14110                   if (breakpoint_locations_match (e, l))
14111                     {
14112                       l->enabled = 0;
14113                       break;
14114                     }
14115               }
14116             else
14117               {
14118                 for (; l; l = l->next)
14119                   if (l->function_name
14120                       && strcmp (e->function_name, l->function_name) == 0)
14121                     {
14122                       l->enabled = 0;
14123                       break;
14124                     }
14125               }
14126           }
14127       }
14128   }
14129
14130   if (!locations_are_equal (existing_locations, b->loc))
14131     observer_notify_breakpoint_modified (b);
14132
14133   update_global_location_list (1);
14134 }
14135
14136 /* Find the SaL locations corresponding to the given ADDR_STRING.
14137    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14138
14139 static struct symtabs_and_lines
14140 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14141 {
14142   char *s;
14143   struct symtabs_and_lines sals = {0};
14144   volatile struct gdb_exception e;
14145
14146   gdb_assert (b->ops != NULL);
14147   s = addr_string;
14148
14149   TRY_CATCH (e, RETURN_MASK_ERROR)
14150     {
14151       b->ops->decode_linespec (b, &s, &sals);
14152     }
14153   if (e.reason < 0)
14154     {
14155       int not_found_and_ok = 0;
14156       /* For pending breakpoints, it's expected that parsing will
14157          fail until the right shared library is loaded.  User has
14158          already told to create pending breakpoints and don't need
14159          extra messages.  If breakpoint is in bp_shlib_disabled
14160          state, then user already saw the message about that
14161          breakpoint being disabled, and don't want to see more
14162          errors.  */
14163       if (e.error == NOT_FOUND_ERROR
14164           && (b->condition_not_parsed 
14165               || (b->loc && b->loc->shlib_disabled)
14166               || (b->loc && b->loc->pspace->executing_startup)
14167               || b->enable_state == bp_disabled))
14168         not_found_and_ok = 1;
14169
14170       if (!not_found_and_ok)
14171         {
14172           /* We surely don't want to warn about the same breakpoint
14173              10 times.  One solution, implemented here, is disable
14174              the breakpoint on error.  Another solution would be to
14175              have separate 'warning emitted' flag.  Since this
14176              happens only when a binary has changed, I don't know
14177              which approach is better.  */
14178           b->enable_state = bp_disabled;
14179           throw_exception (e);
14180         }
14181     }
14182
14183   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14184     {
14185       int i;
14186
14187       for (i = 0; i < sals.nelts; ++i)
14188         resolve_sal_pc (&sals.sals[i]);
14189       if (b->condition_not_parsed && s && s[0])
14190         {
14191           char *cond_string, *extra_string;
14192           int thread, task;
14193
14194           find_condition_and_thread (s, sals.sals[0].pc,
14195                                      &cond_string, &thread, &task,
14196                                      &extra_string);
14197           if (cond_string)
14198             b->cond_string = cond_string;
14199           b->thread = thread;
14200           b->task = task;
14201           if (extra_string)
14202             b->extra_string = extra_string;
14203           b->condition_not_parsed = 0;
14204         }
14205
14206       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14207         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14208
14209       *found = 1;
14210     }
14211   else
14212     *found = 0;
14213
14214   return sals;
14215 }
14216
14217 /* The default re_set method, for typical hardware or software
14218    breakpoints.  Reevaluate the breakpoint and recreate its
14219    locations.  */
14220
14221 static void
14222 breakpoint_re_set_default (struct breakpoint *b)
14223 {
14224   int found;
14225   struct symtabs_and_lines sals, sals_end;
14226   struct symtabs_and_lines expanded = {0};
14227   struct symtabs_and_lines expanded_end = {0};
14228
14229   sals = addr_string_to_sals (b, b->addr_string, &found);
14230   if (found)
14231     {
14232       make_cleanup (xfree, sals.sals);
14233       expanded = sals;
14234     }
14235
14236   if (b->addr_string_range_end)
14237     {
14238       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14239       if (found)
14240         {
14241           make_cleanup (xfree, sals_end.sals);
14242           expanded_end = sals_end;
14243         }
14244     }
14245
14246   update_breakpoint_locations (b, expanded, expanded_end);
14247 }
14248
14249 /* Default method for creating SALs from an address string.  It basically
14250    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14251
14252 static void
14253 create_sals_from_address_default (char **arg,
14254                                   struct linespec_result *canonical,
14255                                   enum bptype type_wanted,
14256                                   char *addr_start, char **copy_arg)
14257 {
14258   parse_breakpoint_sals (arg, canonical);
14259 }
14260
14261 /* Call create_breakpoints_sal for the given arguments.  This is the default
14262    function for the `create_breakpoints_sal' method of
14263    breakpoint_ops.  */
14264
14265 static void
14266 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14267                                 struct linespec_result *canonical,
14268                                 struct linespec_sals *lsal,
14269                                 char *cond_string,
14270                                 char *extra_string,
14271                                 enum bptype type_wanted,
14272                                 enum bpdisp disposition,
14273                                 int thread,
14274                                 int task, int ignore_count,
14275                                 const struct breakpoint_ops *ops,
14276                                 int from_tty, int enabled,
14277                                 int internal, unsigned flags)
14278 {
14279   create_breakpoints_sal (gdbarch, canonical, cond_string,
14280                           extra_string,
14281                           type_wanted, disposition,
14282                           thread, task, ignore_count, ops, from_tty,
14283                           enabled, internal, flags);
14284 }
14285
14286 /* Decode the line represented by S by calling decode_line_full.  This is the
14287    default function for the `decode_linespec' method of breakpoint_ops.  */
14288
14289 static void
14290 decode_linespec_default (struct breakpoint *b, char **s,
14291                          struct symtabs_and_lines *sals)
14292 {
14293   struct linespec_result canonical;
14294
14295   init_linespec_result (&canonical);
14296   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14297                     (struct symtab *) NULL, 0,
14298                     &canonical, multiple_symbols_all,
14299                     b->filter);
14300
14301   /* We should get 0 or 1 resulting SALs.  */
14302   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14303
14304   if (VEC_length (linespec_sals, canonical.sals) > 0)
14305     {
14306       struct linespec_sals *lsal;
14307
14308       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14309       *sals = lsal->sals;
14310       /* Arrange it so the destructor does not free the
14311          contents.  */
14312       lsal->sals.sals = NULL;
14313     }
14314
14315   destroy_linespec_result (&canonical);
14316 }
14317
14318 /* Prepare the global context for a re-set of breakpoint B.  */
14319
14320 static struct cleanup *
14321 prepare_re_set_context (struct breakpoint *b)
14322 {
14323   struct cleanup *cleanups;
14324
14325   input_radix = b->input_radix;
14326   cleanups = save_current_space_and_thread ();
14327   if (b->pspace != NULL)
14328     switch_to_program_space_and_thread (b->pspace);
14329   set_language (b->language);
14330
14331   return cleanups;
14332 }
14333
14334 /* Reset a breakpoint given it's struct breakpoint * BINT.
14335    The value we return ends up being the return value from catch_errors.
14336    Unused in this case.  */
14337
14338 static int
14339 breakpoint_re_set_one (void *bint)
14340 {
14341   /* Get past catch_errs.  */
14342   struct breakpoint *b = (struct breakpoint *) bint;
14343   struct cleanup *cleanups;
14344
14345   cleanups = prepare_re_set_context (b);
14346   b->ops->re_set (b);
14347   do_cleanups (cleanups);
14348   return 0;
14349 }
14350
14351 /* Re-set all breakpoints after symbols have been re-loaded.  */
14352 void
14353 breakpoint_re_set (void)
14354 {
14355   struct breakpoint *b, *b_tmp;
14356   enum language save_language;
14357   int save_input_radix;
14358   struct cleanup *old_chain;
14359
14360   save_language = current_language->la_language;
14361   save_input_radix = input_radix;
14362   old_chain = save_current_program_space ();
14363
14364   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14365   {
14366     /* Format possible error msg.  */
14367     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14368                                 b->number);
14369     struct cleanup *cleanups = make_cleanup (xfree, message);
14370     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14371     do_cleanups (cleanups);
14372   }
14373   set_language (save_language);
14374   input_radix = save_input_radix;
14375
14376   jit_breakpoint_re_set ();
14377
14378   do_cleanups (old_chain);
14379
14380   create_overlay_event_breakpoint ();
14381   create_longjmp_master_breakpoint ();
14382   create_std_terminate_master_breakpoint ();
14383   create_exception_master_breakpoint ();
14384 }
14385 \f
14386 /* Reset the thread number of this breakpoint:
14387
14388    - If the breakpoint is for all threads, leave it as-is.
14389    - Else, reset it to the current thread for inferior_ptid.  */
14390 void
14391 breakpoint_re_set_thread (struct breakpoint *b)
14392 {
14393   if (b->thread != -1)
14394     {
14395       if (in_thread_list (inferior_ptid))
14396         b->thread = pid_to_thread_id (inferior_ptid);
14397
14398       /* We're being called after following a fork.  The new fork is
14399          selected as current, and unless this was a vfork will have a
14400          different program space from the original thread.  Reset that
14401          as well.  */
14402       b->loc->pspace = current_program_space;
14403     }
14404 }
14405
14406 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14407    If from_tty is nonzero, it prints a message to that effect,
14408    which ends with a period (no newline).  */
14409
14410 void
14411 set_ignore_count (int bptnum, int count, int from_tty)
14412 {
14413   struct breakpoint *b;
14414
14415   if (count < 0)
14416     count = 0;
14417
14418   ALL_BREAKPOINTS (b)
14419     if (b->number == bptnum)
14420     {
14421       if (is_tracepoint (b))
14422         {
14423           if (from_tty && count != 0)
14424             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14425                              bptnum);
14426           return;
14427         }
14428       
14429       b->ignore_count = count;
14430       if (from_tty)
14431         {
14432           if (count == 0)
14433             printf_filtered (_("Will stop next time "
14434                                "breakpoint %d is reached."),
14435                              bptnum);
14436           else if (count == 1)
14437             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14438                              bptnum);
14439           else
14440             printf_filtered (_("Will ignore next %d "
14441                                "crossings of breakpoint %d."),
14442                              count, bptnum);
14443         }
14444       annotate_breakpoints_changed ();
14445       observer_notify_breakpoint_modified (b);
14446       return;
14447     }
14448
14449   error (_("No breakpoint number %d."), bptnum);
14450 }
14451
14452 /* Command to set ignore-count of breakpoint N to COUNT.  */
14453
14454 static void
14455 ignore_command (char *args, int from_tty)
14456 {
14457   char *p = args;
14458   int num;
14459
14460   if (p == 0)
14461     error_no_arg (_("a breakpoint number"));
14462
14463   num = get_number (&p);
14464   if (num == 0)
14465     error (_("bad breakpoint number: '%s'"), args);
14466   if (*p == 0)
14467     error (_("Second argument (specified ignore-count) is missing."));
14468
14469   set_ignore_count (num,
14470                     longest_to_int (value_as_long (parse_and_eval (p))),
14471                     from_tty);
14472   if (from_tty)
14473     printf_filtered ("\n");
14474 }
14475 \f
14476 /* Call FUNCTION on each of the breakpoints
14477    whose numbers are given in ARGS.  */
14478
14479 static void
14480 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14481                                                       void *),
14482                         void *data)
14483 {
14484   int num;
14485   struct breakpoint *b, *tmp;
14486   int match;
14487   struct get_number_or_range_state state;
14488
14489   if (args == 0)
14490     error_no_arg (_("one or more breakpoint numbers"));
14491
14492   init_number_or_range (&state, args);
14493
14494   while (!state.finished)
14495     {
14496       char *p = state.string;
14497
14498       match = 0;
14499
14500       num = get_number_or_range (&state);
14501       if (num == 0)
14502         {
14503           warning (_("bad breakpoint number at or near '%s'"), p);
14504         }
14505       else
14506         {
14507           ALL_BREAKPOINTS_SAFE (b, tmp)
14508             if (b->number == num)
14509               {
14510                 match = 1;
14511                 function (b, data);
14512                 break;
14513               }
14514           if (match == 0)
14515             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14516         }
14517     }
14518 }
14519
14520 static struct bp_location *
14521 find_location_by_number (char *number)
14522 {
14523   char *dot = strchr (number, '.');
14524   char *p1;
14525   int bp_num;
14526   int loc_num;
14527   struct breakpoint *b;
14528   struct bp_location *loc;  
14529
14530   *dot = '\0';
14531
14532   p1 = number;
14533   bp_num = get_number (&p1);
14534   if (bp_num == 0)
14535     error (_("Bad breakpoint number '%s'"), number);
14536
14537   ALL_BREAKPOINTS (b)
14538     if (b->number == bp_num)
14539       {
14540         break;
14541       }
14542
14543   if (!b || b->number != bp_num)
14544     error (_("Bad breakpoint number '%s'"), number);
14545   
14546   p1 = dot+1;
14547   loc_num = get_number (&p1);
14548   if (loc_num == 0)
14549     error (_("Bad breakpoint location number '%s'"), number);
14550
14551   --loc_num;
14552   loc = b->loc;
14553   for (;loc_num && loc; --loc_num, loc = loc->next)
14554     ;
14555   if (!loc)
14556     error (_("Bad breakpoint location number '%s'"), dot+1);
14557     
14558   return loc;  
14559 }
14560
14561
14562 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14563    If from_tty is nonzero, it prints a message to that effect,
14564    which ends with a period (no newline).  */
14565
14566 void
14567 disable_breakpoint (struct breakpoint *bpt)
14568 {
14569   /* Never disable a watchpoint scope breakpoint; we want to
14570      hit them when we leave scope so we can delete both the
14571      watchpoint and its scope breakpoint at that time.  */
14572   if (bpt->type == bp_watchpoint_scope)
14573     return;
14574
14575   /* You can't disable permanent breakpoints.  */
14576   if (bpt->enable_state == bp_permanent)
14577     return;
14578
14579   bpt->enable_state = bp_disabled;
14580
14581   /* Mark breakpoint locations modified.  */
14582   mark_breakpoint_modified (bpt);
14583
14584   if (target_supports_enable_disable_tracepoint ()
14585       && current_trace_status ()->running && is_tracepoint (bpt))
14586     {
14587       struct bp_location *location;
14588      
14589       for (location = bpt->loc; location; location = location->next)
14590         target_disable_tracepoint (location);
14591     }
14592
14593   update_global_location_list (0);
14594
14595   observer_notify_breakpoint_modified (bpt);
14596 }
14597
14598 /* A callback for iterate_over_related_breakpoints.  */
14599
14600 static void
14601 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14602 {
14603   disable_breakpoint (b);
14604 }
14605
14606 /* A callback for map_breakpoint_numbers that calls
14607    disable_breakpoint.  */
14608
14609 static void
14610 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14611 {
14612   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14613 }
14614
14615 static void
14616 disable_command (char *args, int from_tty)
14617 {
14618   if (args == 0)
14619     {
14620       struct breakpoint *bpt;
14621
14622       ALL_BREAKPOINTS (bpt)
14623         if (user_breakpoint_p (bpt))
14624           disable_breakpoint (bpt);
14625     }
14626   else if (strchr (args, '.'))
14627     {
14628       struct bp_location *loc = find_location_by_number (args);
14629       if (loc)
14630         {
14631           if (loc->enabled)
14632             {
14633               loc->enabled = 0;
14634               mark_breakpoint_location_modified (loc);
14635             }
14636           if (target_supports_enable_disable_tracepoint ()
14637               && current_trace_status ()->running && loc->owner
14638               && is_tracepoint (loc->owner))
14639             target_disable_tracepoint (loc);
14640         }
14641       update_global_location_list (0);
14642     }
14643   else
14644     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14645 }
14646
14647 static void
14648 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14649                         int count)
14650 {
14651   int target_resources_ok;
14652
14653   if (bpt->type == bp_hardware_breakpoint)
14654     {
14655       int i;
14656       i = hw_breakpoint_used_count ();
14657       target_resources_ok = 
14658         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14659                                             i + 1, 0);
14660       if (target_resources_ok == 0)
14661         error (_("No hardware breakpoint support in the target."));
14662       else if (target_resources_ok < 0)
14663         error (_("Hardware breakpoints used exceeds limit."));
14664     }
14665
14666   if (is_watchpoint (bpt))
14667     {
14668       /* Initialize it just to avoid a GCC false warning.  */
14669       enum enable_state orig_enable_state = 0;
14670       volatile struct gdb_exception e;
14671
14672       TRY_CATCH (e, RETURN_MASK_ALL)
14673         {
14674           struct watchpoint *w = (struct watchpoint *) bpt;
14675
14676           orig_enable_state = bpt->enable_state;
14677           bpt->enable_state = bp_enabled;
14678           update_watchpoint (w, 1 /* reparse */);
14679         }
14680       if (e.reason < 0)
14681         {
14682           bpt->enable_state = orig_enable_state;
14683           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14684                              bpt->number);
14685           return;
14686         }
14687     }
14688
14689   if (bpt->enable_state != bp_permanent)
14690     bpt->enable_state = bp_enabled;
14691
14692   bpt->enable_state = bp_enabled;
14693
14694   /* Mark breakpoint locations modified.  */
14695   mark_breakpoint_modified (bpt);
14696
14697   if (target_supports_enable_disable_tracepoint ()
14698       && current_trace_status ()->running && is_tracepoint (bpt))
14699     {
14700       struct bp_location *location;
14701
14702       for (location = bpt->loc; location; location = location->next)
14703         target_enable_tracepoint (location);
14704     }
14705
14706   bpt->disposition = disposition;
14707   bpt->enable_count = count;
14708   update_global_location_list (1);
14709   annotate_breakpoints_changed ();
14710   
14711   observer_notify_breakpoint_modified (bpt);
14712 }
14713
14714
14715 void
14716 enable_breakpoint (struct breakpoint *bpt)
14717 {
14718   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14719 }
14720
14721 static void
14722 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14723 {
14724   enable_breakpoint (bpt);
14725 }
14726
14727 /* A callback for map_breakpoint_numbers that calls
14728    enable_breakpoint.  */
14729
14730 static void
14731 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14732 {
14733   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14734 }
14735
14736 /* The enable command enables the specified breakpoints (or all defined
14737    breakpoints) so they once again become (or continue to be) effective
14738    in stopping the inferior.  */
14739
14740 static void
14741 enable_command (char *args, int from_tty)
14742 {
14743   if (args == 0)
14744     {
14745       struct breakpoint *bpt;
14746
14747       ALL_BREAKPOINTS (bpt)
14748         if (user_breakpoint_p (bpt))
14749           enable_breakpoint (bpt);
14750     }
14751   else if (strchr (args, '.'))
14752     {
14753       struct bp_location *loc = find_location_by_number (args);
14754       if (loc)
14755         {
14756           if (!loc->enabled)
14757             {
14758               loc->enabled = 1;
14759               mark_breakpoint_location_modified (loc);
14760             }
14761           if (target_supports_enable_disable_tracepoint ()
14762               && current_trace_status ()->running && loc->owner
14763               && is_tracepoint (loc->owner))
14764             target_enable_tracepoint (loc);
14765         }
14766       update_global_location_list (1);
14767     }
14768   else
14769     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14770 }
14771
14772 /* This struct packages up disposition data for application to multiple
14773    breakpoints.  */
14774
14775 struct disp_data
14776 {
14777   enum bpdisp disp;
14778   int count;
14779 };
14780
14781 static void
14782 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14783 {
14784   struct disp_data disp_data = *(struct disp_data *) arg;
14785
14786   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14787 }
14788
14789 static void
14790 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14791 {
14792   struct disp_data disp = { disp_disable, 1 };
14793
14794   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14795 }
14796
14797 static void
14798 enable_once_command (char *args, int from_tty)
14799 {
14800   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14801 }
14802
14803 static void
14804 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14805 {
14806   struct disp_data disp = { disp_disable, *(int *) countptr };
14807
14808   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14809 }
14810
14811 static void
14812 enable_count_command (char *args, int from_tty)
14813 {
14814   int count = get_number (&args);
14815
14816   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14817 }
14818
14819 static void
14820 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14821 {
14822   struct disp_data disp = { disp_del, 1 };
14823
14824   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14825 }
14826
14827 static void
14828 enable_delete_command (char *args, int from_tty)
14829 {
14830   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14831 }
14832 \f
14833 static void
14834 set_breakpoint_cmd (char *args, int from_tty)
14835 {
14836 }
14837
14838 static void
14839 show_breakpoint_cmd (char *args, int from_tty)
14840 {
14841 }
14842
14843 /* Invalidate last known value of any hardware watchpoint if
14844    the memory which that value represents has been written to by
14845    GDB itself.  */
14846
14847 static void
14848 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14849                                       CORE_ADDR addr, ssize_t len,
14850                                       const bfd_byte *data)
14851 {
14852   struct breakpoint *bp;
14853
14854   ALL_BREAKPOINTS (bp)
14855     if (bp->enable_state == bp_enabled
14856         && bp->type == bp_hardware_watchpoint)
14857       {
14858         struct watchpoint *wp = (struct watchpoint *) bp;
14859
14860         if (wp->val_valid && wp->val)
14861           {
14862             struct bp_location *loc;
14863
14864             for (loc = bp->loc; loc != NULL; loc = loc->next)
14865               if (loc->loc_type == bp_loc_hardware_watchpoint
14866                   && loc->address + loc->length > addr
14867                   && addr + len > loc->address)
14868                 {
14869                   value_free (wp->val);
14870                   wp->val = NULL;
14871                   wp->val_valid = 0;
14872                 }
14873           }
14874       }
14875 }
14876
14877 /* Create and insert a raw software breakpoint at PC.  Return an
14878    identifier, which should be used to remove the breakpoint later.
14879    In general, places which call this should be using something on the
14880    breakpoint chain instead; this function should be eliminated
14881    someday.  */
14882
14883 void *
14884 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14885                                   struct address_space *aspace, CORE_ADDR pc)
14886 {
14887   struct bp_target_info *bp_tgt;
14888
14889   bp_tgt = XZALLOC (struct bp_target_info);
14890
14891   bp_tgt->placed_address_space = aspace;
14892   bp_tgt->placed_address = pc;
14893
14894   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14895     {
14896       /* Could not insert the breakpoint.  */
14897       xfree (bp_tgt);
14898       return NULL;
14899     }
14900
14901   return bp_tgt;
14902 }
14903
14904 /* Remove a breakpoint BP inserted by
14905    deprecated_insert_raw_breakpoint.  */
14906
14907 int
14908 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14909 {
14910   struct bp_target_info *bp_tgt = bp;
14911   int ret;
14912
14913   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14914   xfree (bp_tgt);
14915
14916   return ret;
14917 }
14918
14919 /* One (or perhaps two) breakpoints used for software single
14920    stepping.  */
14921
14922 static void *single_step_breakpoints[2];
14923 static struct gdbarch *single_step_gdbarch[2];
14924
14925 /* Create and insert a breakpoint for software single step.  */
14926
14927 void
14928 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14929                                struct address_space *aspace, 
14930                                CORE_ADDR next_pc)
14931 {
14932   void **bpt_p;
14933
14934   if (single_step_breakpoints[0] == NULL)
14935     {
14936       bpt_p = &single_step_breakpoints[0];
14937       single_step_gdbarch[0] = gdbarch;
14938     }
14939   else
14940     {
14941       gdb_assert (single_step_breakpoints[1] == NULL);
14942       bpt_p = &single_step_breakpoints[1];
14943       single_step_gdbarch[1] = gdbarch;
14944     }
14945
14946   /* NOTE drow/2006-04-11: A future improvement to this function would
14947      be to only create the breakpoints once, and actually put them on
14948      the breakpoint chain.  That would let us use set_raw_breakpoint.
14949      We could adjust the addresses each time they were needed.  Doing
14950      this requires corresponding changes elsewhere where single step
14951      breakpoints are handled, however.  So, for now, we use this.  */
14952
14953   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14954   if (*bpt_p == NULL)
14955     error (_("Could not insert single-step breakpoint at %s"),
14956              paddress (gdbarch, next_pc));
14957 }
14958
14959 /* Check if the breakpoints used for software single stepping
14960    were inserted or not.  */
14961
14962 int
14963 single_step_breakpoints_inserted (void)
14964 {
14965   return (single_step_breakpoints[0] != NULL
14966           || single_step_breakpoints[1] != NULL);
14967 }
14968
14969 /* Remove and delete any breakpoints used for software single step.  */
14970
14971 void
14972 remove_single_step_breakpoints (void)
14973 {
14974   gdb_assert (single_step_breakpoints[0] != NULL);
14975
14976   /* See insert_single_step_breakpoint for more about this deprecated
14977      call.  */
14978   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14979                                     single_step_breakpoints[0]);
14980   single_step_gdbarch[0] = NULL;
14981   single_step_breakpoints[0] = NULL;
14982
14983   if (single_step_breakpoints[1] != NULL)
14984     {
14985       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14986                                         single_step_breakpoints[1]);
14987       single_step_gdbarch[1] = NULL;
14988       single_step_breakpoints[1] = NULL;
14989     }
14990 }
14991
14992 /* Delete software single step breakpoints without removing them from
14993    the inferior.  This is intended to be used if the inferior's address
14994    space where they were inserted is already gone, e.g. after exit or
14995    exec.  */
14996
14997 void
14998 cancel_single_step_breakpoints (void)
14999 {
15000   int i;
15001
15002   for (i = 0; i < 2; i++)
15003     if (single_step_breakpoints[i])
15004       {
15005         xfree (single_step_breakpoints[i]);
15006         single_step_breakpoints[i] = NULL;
15007         single_step_gdbarch[i] = NULL;
15008       }
15009 }
15010
15011 /* Detach software single-step breakpoints from INFERIOR_PTID without
15012    removing them.  */
15013
15014 static void
15015 detach_single_step_breakpoints (void)
15016 {
15017   int i;
15018
15019   for (i = 0; i < 2; i++)
15020     if (single_step_breakpoints[i])
15021       target_remove_breakpoint (single_step_gdbarch[i],
15022                                 single_step_breakpoints[i]);
15023 }
15024
15025 /* Check whether a software single-step breakpoint is inserted at
15026    PC.  */
15027
15028 static int
15029 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
15030                                         CORE_ADDR pc)
15031 {
15032   int i;
15033
15034   for (i = 0; i < 2; i++)
15035     {
15036       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15037       if (bp_tgt
15038           && breakpoint_address_match (bp_tgt->placed_address_space,
15039                                        bp_tgt->placed_address,
15040                                        aspace, pc))
15041         return 1;
15042     }
15043
15044   return 0;
15045 }
15046
15047 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15048    non-zero otherwise.  */
15049 static int
15050 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15051 {
15052   if (syscall_catchpoint_p (bp)
15053       && bp->enable_state != bp_disabled
15054       && bp->enable_state != bp_call_disabled)
15055     return 1;
15056   else
15057     return 0;
15058 }
15059
15060 int
15061 catch_syscall_enabled (void)
15062 {
15063   struct catch_syscall_inferior_data *inf_data
15064     = get_catch_syscall_inferior_data (current_inferior ());
15065
15066   return inf_data->total_syscalls_count != 0;
15067 }
15068
15069 int
15070 catching_syscall_number (int syscall_number)
15071 {
15072   struct breakpoint *bp;
15073
15074   ALL_BREAKPOINTS (bp)
15075     if (is_syscall_catchpoint_enabled (bp))
15076       {
15077         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15078
15079         if (c->syscalls_to_be_caught)
15080           {
15081             int i, iter;
15082             for (i = 0;
15083                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15084                  i++)
15085               if (syscall_number == iter)
15086                 return 1;
15087           }
15088         else
15089           return 1;
15090       }
15091
15092   return 0;
15093 }
15094
15095 /* Complete syscall names.  Used by "catch syscall".  */
15096 static VEC (char_ptr) *
15097 catch_syscall_completer (struct cmd_list_element *cmd,
15098                          char *text, char *word)
15099 {
15100   const char **list = get_syscall_names ();
15101   VEC (char_ptr) *retlist
15102     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15103
15104   xfree (list);
15105   return retlist;
15106 }
15107
15108 /* Tracepoint-specific operations.  */
15109
15110 /* Set tracepoint count to NUM.  */
15111 static void
15112 set_tracepoint_count (int num)
15113 {
15114   tracepoint_count = num;
15115   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15116 }
15117
15118 static void
15119 trace_command (char *arg, int from_tty)
15120 {
15121   struct breakpoint_ops *ops;
15122   const char *arg_cp = arg;
15123
15124   if (arg && probe_linespec_to_ops (&arg_cp))
15125     ops = &tracepoint_probe_breakpoint_ops;
15126   else
15127     ops = &tracepoint_breakpoint_ops;
15128
15129   create_breakpoint (get_current_arch (),
15130                      arg,
15131                      NULL, 0, NULL, 1 /* parse arg */,
15132                      0 /* tempflag */,
15133                      bp_tracepoint /* type_wanted */,
15134                      0 /* Ignore count */,
15135                      pending_break_support,
15136                      ops,
15137                      from_tty,
15138                      1 /* enabled */,
15139                      0 /* internal */, 0);
15140 }
15141
15142 static void
15143 ftrace_command (char *arg, int from_tty)
15144 {
15145   create_breakpoint (get_current_arch (),
15146                      arg,
15147                      NULL, 0, NULL, 1 /* parse arg */,
15148                      0 /* tempflag */,
15149                      bp_fast_tracepoint /* type_wanted */,
15150                      0 /* Ignore count */,
15151                      pending_break_support,
15152                      &tracepoint_breakpoint_ops,
15153                      from_tty,
15154                      1 /* enabled */,
15155                      0 /* internal */, 0);
15156 }
15157
15158 /* strace command implementation.  Creates a static tracepoint.  */
15159
15160 static void
15161 strace_command (char *arg, int from_tty)
15162 {
15163   struct breakpoint_ops *ops;
15164
15165   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15166      or with a normal static tracepoint.  */
15167   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15168     ops = &strace_marker_breakpoint_ops;
15169   else
15170     ops = &tracepoint_breakpoint_ops;
15171
15172   create_breakpoint (get_current_arch (),
15173                      arg,
15174                      NULL, 0, NULL, 1 /* parse arg */,
15175                      0 /* tempflag */,
15176                      bp_static_tracepoint /* type_wanted */,
15177                      0 /* Ignore count */,
15178                      pending_break_support,
15179                      ops,
15180                      from_tty,
15181                      1 /* enabled */,
15182                      0 /* internal */, 0);
15183 }
15184
15185 /* Set up a fake reader function that gets command lines from a linked
15186    list that was acquired during tracepoint uploading.  */
15187
15188 static struct uploaded_tp *this_utp;
15189 static int next_cmd;
15190
15191 static char *
15192 read_uploaded_action (void)
15193 {
15194   char *rslt;
15195
15196   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15197
15198   next_cmd++;
15199
15200   return rslt;
15201 }
15202
15203 /* Given information about a tracepoint as recorded on a target (which
15204    can be either a live system or a trace file), attempt to create an
15205    equivalent GDB tracepoint.  This is not a reliable process, since
15206    the target does not necessarily have all the information used when
15207    the tracepoint was originally defined.  */
15208   
15209 struct tracepoint *
15210 create_tracepoint_from_upload (struct uploaded_tp *utp)
15211 {
15212   char *addr_str, small_buf[100];
15213   struct tracepoint *tp;
15214
15215   if (utp->at_string)
15216     addr_str = utp->at_string;
15217   else
15218     {
15219       /* In the absence of a source location, fall back to raw
15220          address.  Since there is no way to confirm that the address
15221          means the same thing as when the trace was started, warn the
15222          user.  */
15223       warning (_("Uploaded tracepoint %d has no "
15224                  "source location, using raw address"),
15225                utp->number);
15226       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15227       addr_str = small_buf;
15228     }
15229
15230   /* There's not much we can do with a sequence of bytecodes.  */
15231   if (utp->cond && !utp->cond_string)
15232     warning (_("Uploaded tracepoint %d condition "
15233                "has no source form, ignoring it"),
15234              utp->number);
15235
15236   if (!create_breakpoint (get_current_arch (),
15237                           addr_str,
15238                           utp->cond_string, -1, NULL,
15239                           0 /* parse cond/thread */,
15240                           0 /* tempflag */,
15241                           utp->type /* type_wanted */,
15242                           0 /* Ignore count */,
15243                           pending_break_support,
15244                           &tracepoint_breakpoint_ops,
15245                           0 /* from_tty */,
15246                           utp->enabled /* enabled */,
15247                           0 /* internal */,
15248                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15249     return NULL;
15250
15251   /* Get the tracepoint we just created.  */
15252   tp = get_tracepoint (tracepoint_count);
15253   gdb_assert (tp != NULL);
15254
15255   if (utp->pass > 0)
15256     {
15257       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15258                  tp->base.number);
15259
15260       trace_pass_command (small_buf, 0);
15261     }
15262
15263   /* If we have uploaded versions of the original commands, set up a
15264      special-purpose "reader" function and call the usual command line
15265      reader, then pass the result to the breakpoint command-setting
15266      function.  */
15267   if (!VEC_empty (char_ptr, utp->cmd_strings))
15268     {
15269       struct command_line *cmd_list;
15270
15271       this_utp = utp;
15272       next_cmd = 0;
15273
15274       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15275
15276       breakpoint_set_commands (&tp->base, cmd_list);
15277     }
15278   else if (!VEC_empty (char_ptr, utp->actions)
15279            || !VEC_empty (char_ptr, utp->step_actions))
15280     warning (_("Uploaded tracepoint %d actions "
15281                "have no source form, ignoring them"),
15282              utp->number);
15283
15284   /* Copy any status information that might be available.  */
15285   tp->base.hit_count = utp->hit_count;
15286   tp->traceframe_usage = utp->traceframe_usage;
15287
15288   return tp;
15289 }
15290   
15291 /* Print information on tracepoint number TPNUM_EXP, or all if
15292    omitted.  */
15293
15294 static void
15295 tracepoints_info (char *args, int from_tty)
15296 {
15297   struct ui_out *uiout = current_uiout;
15298   int num_printed;
15299
15300   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15301
15302   if (num_printed == 0)
15303     {
15304       if (args == NULL || *args == '\0')
15305         ui_out_message (uiout, 0, "No tracepoints.\n");
15306       else
15307         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15308     }
15309
15310   default_collect_info ();
15311 }
15312
15313 /* The 'enable trace' command enables tracepoints.
15314    Not supported by all targets.  */
15315 static void
15316 enable_trace_command (char *args, int from_tty)
15317 {
15318   enable_command (args, from_tty);
15319 }
15320
15321 /* The 'disable trace' command disables tracepoints.
15322    Not supported by all targets.  */
15323 static void
15324 disable_trace_command (char *args, int from_tty)
15325 {
15326   disable_command (args, from_tty);
15327 }
15328
15329 /* Remove a tracepoint (or all if no argument).  */
15330 static void
15331 delete_trace_command (char *arg, int from_tty)
15332 {
15333   struct breakpoint *b, *b_tmp;
15334
15335   dont_repeat ();
15336
15337   if (arg == 0)
15338     {
15339       int breaks_to_delete = 0;
15340
15341       /* Delete all breakpoints if no argument.
15342          Do not delete internal or call-dummy breakpoints, these
15343          have to be deleted with an explicit breakpoint number 
15344          argument.  */
15345       ALL_TRACEPOINTS (b)
15346         if (is_tracepoint (b) && user_breakpoint_p (b))
15347           {
15348             breaks_to_delete = 1;
15349             break;
15350           }
15351
15352       /* Ask user only if there are some breakpoints to delete.  */
15353       if (!from_tty
15354           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15355         {
15356           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15357             if (is_tracepoint (b) && user_breakpoint_p (b))
15358               delete_breakpoint (b);
15359         }
15360     }
15361   else
15362     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15363 }
15364
15365 /* Helper function for trace_pass_command.  */
15366
15367 static void
15368 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15369 {
15370   tp->pass_count = count;
15371   observer_notify_breakpoint_modified (&tp->base);
15372   if (from_tty)
15373     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15374                      tp->base.number, count);
15375 }
15376
15377 /* Set passcount for tracepoint.
15378
15379    First command argument is passcount, second is tracepoint number.
15380    If tracepoint number omitted, apply to most recently defined.
15381    Also accepts special argument "all".  */
15382
15383 static void
15384 trace_pass_command (char *args, int from_tty)
15385 {
15386   struct tracepoint *t1;
15387   unsigned int count;
15388
15389   if (args == 0 || *args == 0)
15390     error (_("passcount command requires an "
15391              "argument (count + optional TP num)"));
15392
15393   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15394
15395   while (*args && isspace ((int) *args))
15396     args++;
15397
15398   if (*args && strncasecmp (args, "all", 3) == 0)
15399     {
15400       struct breakpoint *b;
15401
15402       args += 3;                        /* Skip special argument "all".  */
15403       if (*args)
15404         error (_("Junk at end of arguments."));
15405
15406       ALL_TRACEPOINTS (b)
15407       {
15408         t1 = (struct tracepoint *) b;
15409         trace_pass_set_count (t1, count, from_tty);
15410       }
15411     }
15412   else if (*args == '\0')
15413     {
15414       t1 = get_tracepoint_by_number (&args, NULL, 1);
15415       if (t1)
15416         trace_pass_set_count (t1, count, from_tty);
15417     }
15418   else
15419     {
15420       struct get_number_or_range_state state;
15421
15422       init_number_or_range (&state, args);
15423       while (!state.finished)
15424         {
15425           t1 = get_tracepoint_by_number (&args, &state, 1);
15426           if (t1)
15427             trace_pass_set_count (t1, count, from_tty);
15428         }
15429     }
15430 }
15431
15432 struct tracepoint *
15433 get_tracepoint (int num)
15434 {
15435   struct breakpoint *t;
15436
15437   ALL_TRACEPOINTS (t)
15438     if (t->number == num)
15439       return (struct tracepoint *) t;
15440
15441   return NULL;
15442 }
15443
15444 /* Find the tracepoint with the given target-side number (which may be
15445    different from the tracepoint number after disconnecting and
15446    reconnecting).  */
15447
15448 struct tracepoint *
15449 get_tracepoint_by_number_on_target (int num)
15450 {
15451   struct breakpoint *b;
15452
15453   ALL_TRACEPOINTS (b)
15454     {
15455       struct tracepoint *t = (struct tracepoint *) b;
15456
15457       if (t->number_on_target == num)
15458         return t;
15459     }
15460
15461   return NULL;
15462 }
15463
15464 /* Utility: parse a tracepoint number and look it up in the list.
15465    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15466    If OPTIONAL_P is true, then if the argument is missing, the most
15467    recent tracepoint (tracepoint_count) is returned.  */
15468 struct tracepoint *
15469 get_tracepoint_by_number (char **arg,
15470                           struct get_number_or_range_state *state,
15471                           int optional_p)
15472 {
15473   struct breakpoint *t;
15474   int tpnum;
15475   char *instring = arg == NULL ? NULL : *arg;
15476
15477   if (state)
15478     {
15479       gdb_assert (!state->finished);
15480       tpnum = get_number_or_range (state);
15481     }
15482   else if (arg == NULL || *arg == NULL || ! **arg)
15483     {
15484       if (optional_p)
15485         tpnum = tracepoint_count;
15486       else
15487         error_no_arg (_("tracepoint number"));
15488     }
15489   else
15490     tpnum = get_number (arg);
15491
15492   if (tpnum <= 0)
15493     {
15494       if (instring && *instring)
15495         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15496                          instring);
15497       else
15498         printf_filtered (_("Tracepoint argument missing "
15499                            "and no previous tracepoint\n"));
15500       return NULL;
15501     }
15502
15503   ALL_TRACEPOINTS (t)
15504     if (t->number == tpnum)
15505     {
15506       return (struct tracepoint *) t;
15507     }
15508
15509   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15510   return NULL;
15511 }
15512
15513 void
15514 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15515 {
15516   if (b->thread != -1)
15517     fprintf_unfiltered (fp, " thread %d", b->thread);
15518
15519   if (b->task != 0)
15520     fprintf_unfiltered (fp, " task %d", b->task);
15521
15522   fprintf_unfiltered (fp, "\n");
15523 }
15524
15525 /* Save information on user settable breakpoints (watchpoints, etc) to
15526    a new script file named FILENAME.  If FILTER is non-NULL, call it
15527    on each breakpoint and only include the ones for which it returns
15528    non-zero.  */
15529
15530 static void
15531 save_breakpoints (char *filename, int from_tty,
15532                   int (*filter) (const struct breakpoint *))
15533 {
15534   struct breakpoint *tp;
15535   int any = 0;
15536   char *pathname;
15537   struct cleanup *cleanup;
15538   struct ui_file *fp;
15539   int extra_trace_bits = 0;
15540
15541   if (filename == 0 || *filename == 0)
15542     error (_("Argument required (file name in which to save)"));
15543
15544   /* See if we have anything to save.  */
15545   ALL_BREAKPOINTS (tp)
15546   {
15547     /* Skip internal and momentary breakpoints.  */
15548     if (!user_breakpoint_p (tp))
15549       continue;
15550
15551     /* If we have a filter, only save the breakpoints it accepts.  */
15552     if (filter && !filter (tp))
15553       continue;
15554
15555     any = 1;
15556
15557     if (is_tracepoint (tp))
15558       {
15559         extra_trace_bits = 1;
15560
15561         /* We can stop searching.  */
15562         break;
15563       }
15564   }
15565
15566   if (!any)
15567     {
15568       warning (_("Nothing to save."));
15569       return;
15570     }
15571
15572   pathname = tilde_expand (filename);
15573   cleanup = make_cleanup (xfree, pathname);
15574   fp = gdb_fopen (pathname, "w");
15575   if (!fp)
15576     error (_("Unable to open file '%s' for saving (%s)"),
15577            filename, safe_strerror (errno));
15578   make_cleanup_ui_file_delete (fp);
15579
15580   if (extra_trace_bits)
15581     save_trace_state_variables (fp);
15582
15583   ALL_BREAKPOINTS (tp)
15584   {
15585     /* Skip internal and momentary breakpoints.  */
15586     if (!user_breakpoint_p (tp))
15587       continue;
15588
15589     /* If we have a filter, only save the breakpoints it accepts.  */
15590     if (filter && !filter (tp))
15591       continue;
15592
15593     tp->ops->print_recreate (tp, fp);
15594
15595     /* Note, we can't rely on tp->number for anything, as we can't
15596        assume the recreated breakpoint numbers will match.  Use $bpnum
15597        instead.  */
15598
15599     if (tp->cond_string)
15600       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15601
15602     if (tp->ignore_count)
15603       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15604
15605     if (tp->commands)
15606       {
15607         volatile struct gdb_exception ex;       
15608
15609         fprintf_unfiltered (fp, "  commands\n");
15610         
15611         ui_out_redirect (current_uiout, fp);
15612         TRY_CATCH (ex, RETURN_MASK_ALL)
15613           {
15614             print_command_lines (current_uiout, tp->commands->commands, 2);
15615           }
15616         ui_out_redirect (current_uiout, NULL);
15617
15618         if (ex.reason < 0)
15619           throw_exception (ex);
15620
15621         fprintf_unfiltered (fp, "  end\n");
15622       }
15623
15624     if (tp->enable_state == bp_disabled)
15625       fprintf_unfiltered (fp, "disable\n");
15626
15627     /* If this is a multi-location breakpoint, check if the locations
15628        should be individually disabled.  Watchpoint locations are
15629        special, and not user visible.  */
15630     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15631       {
15632         struct bp_location *loc;
15633         int n = 1;
15634
15635         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15636           if (!loc->enabled)
15637             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15638       }
15639   }
15640
15641   if (extra_trace_bits && *default_collect)
15642     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15643
15644   do_cleanups (cleanup);
15645   if (from_tty)
15646     printf_filtered (_("Saved to file '%s'.\n"), filename);
15647 }
15648
15649 /* The `save breakpoints' command.  */
15650
15651 static void
15652 save_breakpoints_command (char *args, int from_tty)
15653 {
15654   save_breakpoints (args, from_tty, NULL);
15655 }
15656
15657 /* The `save tracepoints' command.  */
15658
15659 static void
15660 save_tracepoints_command (char *args, int from_tty)
15661 {
15662   save_breakpoints (args, from_tty, is_tracepoint);
15663 }
15664
15665 /* Create a vector of all tracepoints.  */
15666
15667 VEC(breakpoint_p) *
15668 all_tracepoints (void)
15669 {
15670   VEC(breakpoint_p) *tp_vec = 0;
15671   struct breakpoint *tp;
15672
15673   ALL_TRACEPOINTS (tp)
15674   {
15675     VEC_safe_push (breakpoint_p, tp_vec, tp);
15676   }
15677
15678   return tp_vec;
15679 }
15680
15681 \f
15682 /* This help string is used for the break, hbreak, tbreak and thbreak
15683    commands.  It is defined as a macro to prevent duplication.
15684    COMMAND should be a string constant containing the name of the
15685    command.  */
15686 #define BREAK_ARGS_HELP(command) \
15687 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15688 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15689 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15690 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15691 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15692 If a line number is specified, break at start of code for that line.\n\
15693 If a function is specified, break at start of code for that function.\n\
15694 If an address is specified, break at that exact address.\n\
15695 With no LOCATION, uses current execution address of the selected\n\
15696 stack frame.  This is useful for breaking on return to a stack frame.\n\
15697 \n\
15698 THREADNUM is the number from \"info threads\".\n\
15699 CONDITION is a boolean expression.\n\
15700 \n\
15701 Multiple breakpoints at one place are permitted, and useful if their\n\
15702 conditions are different.\n\
15703 \n\
15704 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15705
15706 /* List of subcommands for "catch".  */
15707 static struct cmd_list_element *catch_cmdlist;
15708
15709 /* List of subcommands for "tcatch".  */
15710 static struct cmd_list_element *tcatch_cmdlist;
15711
15712 void
15713 add_catch_command (char *name, char *docstring,
15714                    void (*sfunc) (char *args, int from_tty,
15715                                   struct cmd_list_element *command),
15716                    completer_ftype *completer,
15717                    void *user_data_catch,
15718                    void *user_data_tcatch)
15719 {
15720   struct cmd_list_element *command;
15721
15722   command = add_cmd (name, class_breakpoint, NULL, docstring,
15723                      &catch_cmdlist);
15724   set_cmd_sfunc (command, sfunc);
15725   set_cmd_context (command, user_data_catch);
15726   set_cmd_completer (command, completer);
15727
15728   command = add_cmd (name, class_breakpoint, NULL, docstring,
15729                      &tcatch_cmdlist);
15730   set_cmd_sfunc (command, sfunc);
15731   set_cmd_context (command, user_data_tcatch);
15732   set_cmd_completer (command, completer);
15733 }
15734
15735 static void
15736 clear_syscall_counts (struct inferior *inf)
15737 {
15738   struct catch_syscall_inferior_data *inf_data
15739     = get_catch_syscall_inferior_data (inf);
15740
15741   inf_data->total_syscalls_count = 0;
15742   inf_data->any_syscall_count = 0;
15743   VEC_free (int, inf_data->syscalls_counts);
15744 }
15745
15746 static void
15747 save_command (char *arg, int from_tty)
15748 {
15749   printf_unfiltered (_("\"save\" must be followed by "
15750                        "the name of a save subcommand.\n"));
15751   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15752 }
15753
15754 struct breakpoint *
15755 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15756                           void *data)
15757 {
15758   struct breakpoint *b, *b_tmp;
15759
15760   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15761     {
15762       if ((*callback) (b, data))
15763         return b;
15764     }
15765
15766   return NULL;
15767 }
15768
15769 /* Zero if any of the breakpoint's locations could be a location where
15770    functions have been inlined, nonzero otherwise.  */
15771
15772 static int
15773 is_non_inline_function (struct breakpoint *b)
15774 {
15775   /* The shared library event breakpoint is set on the address of a
15776      non-inline function.  */
15777   if (b->type == bp_shlib_event)
15778     return 1;
15779
15780   return 0;
15781 }
15782
15783 /* Nonzero if the specified PC cannot be a location where functions
15784    have been inlined.  */
15785
15786 int
15787 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15788                            const struct target_waitstatus *ws)
15789 {
15790   struct breakpoint *b;
15791   struct bp_location *bl;
15792
15793   ALL_BREAKPOINTS (b)
15794     {
15795       if (!is_non_inline_function (b))
15796         continue;
15797
15798       for (bl = b->loc; bl != NULL; bl = bl->next)
15799         {
15800           if (!bl->shlib_disabled
15801               && bpstat_check_location (bl, aspace, pc, ws))
15802             return 1;
15803         }
15804     }
15805
15806   return 0;
15807 }
15808
15809 void
15810 initialize_breakpoint_ops (void)
15811 {
15812   static int initialized = 0;
15813
15814   struct breakpoint_ops *ops;
15815
15816   if (initialized)
15817     return;
15818   initialized = 1;
15819
15820   /* The breakpoint_ops structure to be inherit by all kinds of
15821      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15822      internal and momentary breakpoints, etc.).  */
15823   ops = &bkpt_base_breakpoint_ops;
15824   *ops = base_breakpoint_ops;
15825   ops->re_set = bkpt_re_set;
15826   ops->insert_location = bkpt_insert_location;
15827   ops->remove_location = bkpt_remove_location;
15828   ops->breakpoint_hit = bkpt_breakpoint_hit;
15829   ops->create_sals_from_address = bkpt_create_sals_from_address;
15830   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15831   ops->decode_linespec = bkpt_decode_linespec;
15832
15833   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15834   ops = &bkpt_breakpoint_ops;
15835   *ops = bkpt_base_breakpoint_ops;
15836   ops->re_set = bkpt_re_set;
15837   ops->resources_needed = bkpt_resources_needed;
15838   ops->print_it = bkpt_print_it;
15839   ops->print_mention = bkpt_print_mention;
15840   ops->print_recreate = bkpt_print_recreate;
15841
15842   /* Ranged breakpoints.  */
15843   ops = &ranged_breakpoint_ops;
15844   *ops = bkpt_breakpoint_ops;
15845   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15846   ops->resources_needed = resources_needed_ranged_breakpoint;
15847   ops->print_it = print_it_ranged_breakpoint;
15848   ops->print_one = print_one_ranged_breakpoint;
15849   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15850   ops->print_mention = print_mention_ranged_breakpoint;
15851   ops->print_recreate = print_recreate_ranged_breakpoint;
15852
15853   /* Internal breakpoints.  */
15854   ops = &internal_breakpoint_ops;
15855   *ops = bkpt_base_breakpoint_ops;
15856   ops->re_set = internal_bkpt_re_set;
15857   ops->check_status = internal_bkpt_check_status;
15858   ops->print_it = internal_bkpt_print_it;
15859   ops->print_mention = internal_bkpt_print_mention;
15860
15861   /* Momentary breakpoints.  */
15862   ops = &momentary_breakpoint_ops;
15863   *ops = bkpt_base_breakpoint_ops;
15864   ops->re_set = momentary_bkpt_re_set;
15865   ops->check_status = momentary_bkpt_check_status;
15866   ops->print_it = momentary_bkpt_print_it;
15867   ops->print_mention = momentary_bkpt_print_mention;
15868
15869   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15870   ops = &longjmp_breakpoint_ops;
15871   *ops = momentary_breakpoint_ops;
15872   ops->dtor = longjmp_bkpt_dtor;
15873
15874   /* Probe breakpoints.  */
15875   ops = &bkpt_probe_breakpoint_ops;
15876   *ops = bkpt_breakpoint_ops;
15877   ops->insert_location = bkpt_probe_insert_location;
15878   ops->remove_location = bkpt_probe_remove_location;
15879   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15880   ops->decode_linespec = bkpt_probe_decode_linespec;
15881
15882   /* GNU v3 exception catchpoints.  */
15883   ops = &gnu_v3_exception_catchpoint_ops;
15884   *ops = bkpt_breakpoint_ops;
15885   ops->print_it = print_it_exception_catchpoint;
15886   ops->print_one = print_one_exception_catchpoint;
15887   ops->print_mention = print_mention_exception_catchpoint;
15888   ops->print_recreate = print_recreate_exception_catchpoint;
15889
15890   /* Watchpoints.  */
15891   ops = &watchpoint_breakpoint_ops;
15892   *ops = base_breakpoint_ops;
15893   ops->dtor = dtor_watchpoint;
15894   ops->re_set = re_set_watchpoint;
15895   ops->insert_location = insert_watchpoint;
15896   ops->remove_location = remove_watchpoint;
15897   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15898   ops->check_status = check_status_watchpoint;
15899   ops->resources_needed = resources_needed_watchpoint;
15900   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15901   ops->print_it = print_it_watchpoint;
15902   ops->print_mention = print_mention_watchpoint;
15903   ops->print_recreate = print_recreate_watchpoint;
15904
15905   /* Masked watchpoints.  */
15906   ops = &masked_watchpoint_breakpoint_ops;
15907   *ops = watchpoint_breakpoint_ops;
15908   ops->insert_location = insert_masked_watchpoint;
15909   ops->remove_location = remove_masked_watchpoint;
15910   ops->resources_needed = resources_needed_masked_watchpoint;
15911   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15912   ops->print_it = print_it_masked_watchpoint;
15913   ops->print_one_detail = print_one_detail_masked_watchpoint;
15914   ops->print_mention = print_mention_masked_watchpoint;
15915   ops->print_recreate = print_recreate_masked_watchpoint;
15916
15917   /* Tracepoints.  */
15918   ops = &tracepoint_breakpoint_ops;
15919   *ops = base_breakpoint_ops;
15920   ops->re_set = tracepoint_re_set;
15921   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15922   ops->print_one_detail = tracepoint_print_one_detail;
15923   ops->print_mention = tracepoint_print_mention;
15924   ops->print_recreate = tracepoint_print_recreate;
15925   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15926   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15927   ops->decode_linespec = tracepoint_decode_linespec;
15928
15929   /* Probe tracepoints.  */
15930   ops = &tracepoint_probe_breakpoint_ops;
15931   *ops = tracepoint_breakpoint_ops;
15932   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15933   ops->decode_linespec = tracepoint_probe_decode_linespec;
15934
15935   /* Static tracepoints with marker (`-m').  */
15936   ops = &strace_marker_breakpoint_ops;
15937   *ops = tracepoint_breakpoint_ops;
15938   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15939   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15940   ops->decode_linespec = strace_marker_decode_linespec;
15941
15942   /* Fork catchpoints.  */
15943   ops = &catch_fork_breakpoint_ops;
15944   *ops = base_breakpoint_ops;
15945   ops->insert_location = insert_catch_fork;
15946   ops->remove_location = remove_catch_fork;
15947   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15948   ops->print_it = print_it_catch_fork;
15949   ops->print_one = print_one_catch_fork;
15950   ops->print_mention = print_mention_catch_fork;
15951   ops->print_recreate = print_recreate_catch_fork;
15952
15953   /* Vfork catchpoints.  */
15954   ops = &catch_vfork_breakpoint_ops;
15955   *ops = base_breakpoint_ops;
15956   ops->insert_location = insert_catch_vfork;
15957   ops->remove_location = remove_catch_vfork;
15958   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15959   ops->print_it = print_it_catch_vfork;
15960   ops->print_one = print_one_catch_vfork;
15961   ops->print_mention = print_mention_catch_vfork;
15962   ops->print_recreate = print_recreate_catch_vfork;
15963
15964   /* Exec catchpoints.  */
15965   ops = &catch_exec_breakpoint_ops;
15966   *ops = base_breakpoint_ops;
15967   ops->dtor = dtor_catch_exec;
15968   ops->insert_location = insert_catch_exec;
15969   ops->remove_location = remove_catch_exec;
15970   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15971   ops->print_it = print_it_catch_exec;
15972   ops->print_one = print_one_catch_exec;
15973   ops->print_mention = print_mention_catch_exec;
15974   ops->print_recreate = print_recreate_catch_exec;
15975
15976   /* Syscall catchpoints.  */
15977   ops = &catch_syscall_breakpoint_ops;
15978   *ops = base_breakpoint_ops;
15979   ops->dtor = dtor_catch_syscall;
15980   ops->insert_location = insert_catch_syscall;
15981   ops->remove_location = remove_catch_syscall;
15982   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15983   ops->print_it = print_it_catch_syscall;
15984   ops->print_one = print_one_catch_syscall;
15985   ops->print_mention = print_mention_catch_syscall;
15986   ops->print_recreate = print_recreate_catch_syscall;
15987
15988   /* Solib-related catchpoints.  */
15989   ops = &catch_solib_breakpoint_ops;
15990   *ops = base_breakpoint_ops;
15991   ops->dtor = dtor_catch_solib;
15992   ops->insert_location = insert_catch_solib;
15993   ops->remove_location = remove_catch_solib;
15994   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15995   ops->check_status = check_status_catch_solib;
15996   ops->print_it = print_it_catch_solib;
15997   ops->print_one = print_one_catch_solib;
15998   ops->print_mention = print_mention_catch_solib;
15999   ops->print_recreate = print_recreate_catch_solib;
16000
16001   ops = &dprintf_breakpoint_ops;
16002   *ops = bkpt_base_breakpoint_ops;
16003   ops->re_set = bkpt_re_set;
16004   ops->resources_needed = bkpt_resources_needed;
16005   ops->print_it = bkpt_print_it;
16006   ops->print_mention = bkpt_print_mention;
16007   ops->print_recreate = bkpt_print_recreate;
16008 }
16009
16010 /* Chain containing all defined "enable breakpoint" subcommands.  */
16011
16012 static struct cmd_list_element *enablebreaklist = NULL;
16013
16014 void
16015 _initialize_breakpoint (void)
16016 {
16017   struct cmd_list_element *c;
16018
16019   initialize_breakpoint_ops ();
16020
16021   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16022   observer_attach_inferior_exit (clear_syscall_counts);
16023   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16024
16025   breakpoint_objfile_key
16026     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16027
16028   catch_syscall_inferior_data
16029     = register_inferior_data_with_cleanup (NULL,
16030                                            catch_syscall_inferior_data_cleanup);
16031
16032   breakpoint_chain = 0;
16033   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16034      before a breakpoint is set.  */
16035   breakpoint_count = 0;
16036
16037   tracepoint_count = 0;
16038
16039   add_com ("ignore", class_breakpoint, ignore_command, _("\
16040 Set ignore-count of breakpoint number N to COUNT.\n\
16041 Usage is `ignore N COUNT'."));
16042   if (xdb_commands)
16043     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16044
16045   add_com ("commands", class_breakpoint, commands_command, _("\
16046 Set commands to be executed when a breakpoint is hit.\n\
16047 Give breakpoint number as argument after \"commands\".\n\
16048 With no argument, the targeted breakpoint is the last one set.\n\
16049 The commands themselves follow starting on the next line.\n\
16050 Type a line containing \"end\" to indicate the end of them.\n\
16051 Give \"silent\" as the first line to make the breakpoint silent;\n\
16052 then no output is printed when it is hit, except what the commands print."));
16053
16054   c = add_com ("condition", class_breakpoint, condition_command, _("\
16055 Specify breakpoint number N to break only if COND is true.\n\
16056 Usage is `condition N COND', where N is an integer and COND is an\n\
16057 expression to be evaluated whenever breakpoint N is reached."));
16058   set_cmd_completer (c, condition_completer);
16059
16060   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16061 Set a temporary breakpoint.\n\
16062 Like \"break\" except the breakpoint is only temporary,\n\
16063 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16064 by using \"enable delete\" on the breakpoint number.\n\
16065 \n"
16066 BREAK_ARGS_HELP ("tbreak")));
16067   set_cmd_completer (c, location_completer);
16068
16069   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16070 Set a hardware assisted breakpoint.\n\
16071 Like \"break\" except the breakpoint requires hardware support,\n\
16072 some target hardware may not have this support.\n\
16073 \n"
16074 BREAK_ARGS_HELP ("hbreak")));
16075   set_cmd_completer (c, location_completer);
16076
16077   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16078 Set a temporary hardware assisted breakpoint.\n\
16079 Like \"hbreak\" except the breakpoint is only temporary,\n\
16080 so it will be deleted when hit.\n\
16081 \n"
16082 BREAK_ARGS_HELP ("thbreak")));
16083   set_cmd_completer (c, location_completer);
16084
16085   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16086 Enable some breakpoints.\n\
16087 Give breakpoint numbers (separated by spaces) as arguments.\n\
16088 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16089 This is used to cancel the effect of the \"disable\" command.\n\
16090 With a subcommand you can enable temporarily."),
16091                   &enablelist, "enable ", 1, &cmdlist);
16092   if (xdb_commands)
16093     add_com ("ab", class_breakpoint, enable_command, _("\
16094 Enable some breakpoints.\n\
16095 Give breakpoint numbers (separated by spaces) as arguments.\n\
16096 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16097 This is used to cancel the effect of the \"disable\" command.\n\
16098 With a subcommand you can enable temporarily."));
16099
16100   add_com_alias ("en", "enable", class_breakpoint, 1);
16101
16102   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16103 Enable some breakpoints.\n\
16104 Give breakpoint numbers (separated by spaces) as arguments.\n\
16105 This is used to cancel the effect of the \"disable\" command.\n\
16106 May be abbreviated to simply \"enable\".\n"),
16107                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16108
16109   add_cmd ("once", no_class, enable_once_command, _("\
16110 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16111 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16112            &enablebreaklist);
16113
16114   add_cmd ("delete", no_class, enable_delete_command, _("\
16115 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16116 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16117            &enablebreaklist);
16118
16119   add_cmd ("count", no_class, enable_count_command, _("\
16120 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16121 If a breakpoint is hit while enabled in this fashion,\n\
16122 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16123            &enablebreaklist);
16124
16125   add_cmd ("delete", no_class, enable_delete_command, _("\
16126 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16127 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16128            &enablelist);
16129
16130   add_cmd ("once", no_class, enable_once_command, _("\
16131 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16132 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16133            &enablelist);
16134
16135   add_cmd ("count", no_class, enable_count_command, _("\
16136 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16137 If a breakpoint is hit while enabled in this fashion,\n\
16138 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16139            &enablelist);
16140
16141   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16142 Disable some breakpoints.\n\
16143 Arguments are breakpoint numbers with spaces in between.\n\
16144 To disable all breakpoints, give no argument.\n\
16145 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16146                   &disablelist, "disable ", 1, &cmdlist);
16147   add_com_alias ("dis", "disable", class_breakpoint, 1);
16148   add_com_alias ("disa", "disable", class_breakpoint, 1);
16149   if (xdb_commands)
16150     add_com ("sb", class_breakpoint, disable_command, _("\
16151 Disable some breakpoints.\n\
16152 Arguments are breakpoint numbers with spaces in between.\n\
16153 To disable all breakpoints, give no argument.\n\
16154 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16155
16156   add_cmd ("breakpoints", class_alias, disable_command, _("\
16157 Disable some breakpoints.\n\
16158 Arguments are breakpoint numbers with spaces in between.\n\
16159 To disable all breakpoints, give no argument.\n\
16160 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16161 This command may be abbreviated \"disable\"."),
16162            &disablelist);
16163
16164   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16165 Delete some breakpoints or auto-display expressions.\n\
16166 Arguments are breakpoint numbers with spaces in between.\n\
16167 To delete all breakpoints, give no argument.\n\
16168 \n\
16169 Also a prefix command for deletion of other GDB objects.\n\
16170 The \"unset\" command is also an alias for \"delete\"."),
16171                   &deletelist, "delete ", 1, &cmdlist);
16172   add_com_alias ("d", "delete", class_breakpoint, 1);
16173   add_com_alias ("del", "delete", class_breakpoint, 1);
16174   if (xdb_commands)
16175     add_com ("db", class_breakpoint, delete_command, _("\
16176 Delete some breakpoints.\n\
16177 Arguments are breakpoint numbers with spaces in between.\n\
16178 To delete all breakpoints, give no argument.\n"));
16179
16180   add_cmd ("breakpoints", class_alias, delete_command, _("\
16181 Delete some breakpoints or auto-display expressions.\n\
16182 Arguments are breakpoint numbers with spaces in between.\n\
16183 To delete all breakpoints, give no argument.\n\
16184 This command may be abbreviated \"delete\"."),
16185            &deletelist);
16186
16187   add_com ("clear", class_breakpoint, clear_command, _("\
16188 Clear breakpoint at specified line or function.\n\
16189 Argument may be line number, function name, or \"*\" and an address.\n\
16190 If line number is specified, all breakpoints in that line are cleared.\n\
16191 If function is specified, breakpoints at beginning of function are cleared.\n\
16192 If an address is specified, breakpoints at that address are cleared.\n\
16193 \n\
16194 With no argument, clears all breakpoints in the line that the selected frame\n\
16195 is executing in.\n\
16196 \n\
16197 See also the \"delete\" command which clears breakpoints by number."));
16198   add_com_alias ("cl", "clear", class_breakpoint, 1);
16199
16200   c = add_com ("break", class_breakpoint, break_command, _("\
16201 Set breakpoint at specified line or function.\n"
16202 BREAK_ARGS_HELP ("break")));
16203   set_cmd_completer (c, location_completer);
16204
16205   add_com_alias ("b", "break", class_run, 1);
16206   add_com_alias ("br", "break", class_run, 1);
16207   add_com_alias ("bre", "break", class_run, 1);
16208   add_com_alias ("brea", "break", class_run, 1);
16209
16210   if (xdb_commands)
16211    add_com_alias ("ba", "break", class_breakpoint, 1);
16212
16213   if (dbx_commands)
16214     {
16215       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16216 Break in function/address or break at a line in the current file."),
16217                              &stoplist, "stop ", 1, &cmdlist);
16218       add_cmd ("in", class_breakpoint, stopin_command,
16219                _("Break in function or address."), &stoplist);
16220       add_cmd ("at", class_breakpoint, stopat_command,
16221                _("Break at a line in the current file."), &stoplist);
16222       add_com ("status", class_info, breakpoints_info, _("\
16223 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16224 The \"Type\" column indicates one of:\n\
16225 \tbreakpoint     - normal breakpoint\n\
16226 \twatchpoint     - watchpoint\n\
16227 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16228 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16229 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16230 address and file/line number respectively.\n\
16231 \n\
16232 Convenience variable \"$_\" and default examine address for \"x\"\n\
16233 are set to the address of the last breakpoint listed unless the command\n\
16234 is prefixed with \"server \".\n\n\
16235 Convenience variable \"$bpnum\" contains the number of the last\n\
16236 breakpoint set."));
16237     }
16238
16239   add_info ("breakpoints", breakpoints_info, _("\
16240 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16241 The \"Type\" column indicates one of:\n\
16242 \tbreakpoint     - normal breakpoint\n\
16243 \twatchpoint     - watchpoint\n\
16244 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16245 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16246 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16247 address and file/line number respectively.\n\
16248 \n\
16249 Convenience variable \"$_\" and default examine address for \"x\"\n\
16250 are set to the address of the last breakpoint listed unless the command\n\
16251 is prefixed with \"server \".\n\n\
16252 Convenience variable \"$bpnum\" contains the number of the last\n\
16253 breakpoint set."));
16254
16255   add_info_alias ("b", "breakpoints", 1);
16256
16257   if (xdb_commands)
16258     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16259 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16260 The \"Type\" column indicates one of:\n\
16261 \tbreakpoint     - normal breakpoint\n\
16262 \twatchpoint     - watchpoint\n\
16263 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16264 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16265 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16266 address and file/line number respectively.\n\
16267 \n\
16268 Convenience variable \"$_\" and default examine address for \"x\"\n\
16269 are set to the address of the last breakpoint listed unless the command\n\
16270 is prefixed with \"server \".\n\n\
16271 Convenience variable \"$bpnum\" contains the number of the last\n\
16272 breakpoint set."));
16273
16274   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16275 Status of all breakpoints, or breakpoint number NUMBER.\n\
16276 The \"Type\" column indicates one of:\n\
16277 \tbreakpoint     - normal breakpoint\n\
16278 \twatchpoint     - watchpoint\n\
16279 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16280 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16281 \tuntil          - internal breakpoint used by the \"until\" command\n\
16282 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16283 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16284 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16285 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16286 address and file/line number respectively.\n\
16287 \n\
16288 Convenience variable \"$_\" and default examine address for \"x\"\n\
16289 are set to the address of the last breakpoint listed unless the command\n\
16290 is prefixed with \"server \".\n\n\
16291 Convenience variable \"$bpnum\" contains the number of the last\n\
16292 breakpoint set."),
16293            &maintenanceinfolist);
16294
16295   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16296 Set catchpoints to catch events."),
16297                   &catch_cmdlist, "catch ",
16298                   0/*allow-unknown*/, &cmdlist);
16299
16300   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16301 Set temporary catchpoints to catch events."),
16302                   &tcatch_cmdlist, "tcatch ",
16303                   0/*allow-unknown*/, &cmdlist);
16304
16305   /* Add catch and tcatch sub-commands.  */
16306   add_catch_command ("catch", _("\
16307 Catch an exception, when caught."),
16308                      catch_catch_command,
16309                      NULL,
16310                      CATCH_PERMANENT,
16311                      CATCH_TEMPORARY);
16312   add_catch_command ("throw", _("\
16313 Catch an exception, when thrown."),
16314                      catch_throw_command,
16315                      NULL,
16316                      CATCH_PERMANENT,
16317                      CATCH_TEMPORARY);
16318   add_catch_command ("fork", _("Catch calls to fork."),
16319                      catch_fork_command_1,
16320                      NULL,
16321                      (void *) (uintptr_t) catch_fork_permanent,
16322                      (void *) (uintptr_t) catch_fork_temporary);
16323   add_catch_command ("vfork", _("Catch calls to vfork."),
16324                      catch_fork_command_1,
16325                      NULL,
16326                      (void *) (uintptr_t) catch_vfork_permanent,
16327                      (void *) (uintptr_t) catch_vfork_temporary);
16328   add_catch_command ("exec", _("Catch calls to exec."),
16329                      catch_exec_command_1,
16330                      NULL,
16331                      CATCH_PERMANENT,
16332                      CATCH_TEMPORARY);
16333   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16334 Usage: catch load [REGEX]\n\
16335 If REGEX is given, only stop for libraries matching the regular expression."),
16336                      catch_load_command_1,
16337                      NULL,
16338                      CATCH_PERMANENT,
16339                      CATCH_TEMPORARY);
16340   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16341 Usage: catch unload [REGEX]\n\
16342 If REGEX is given, only stop for libraries matching the regular expression."),
16343                      catch_unload_command_1,
16344                      NULL,
16345                      CATCH_PERMANENT,
16346                      CATCH_TEMPORARY);
16347   add_catch_command ("syscall", _("\
16348 Catch system calls by their names and/or numbers.\n\
16349 Arguments say which system calls to catch.  If no arguments\n\
16350 are given, every system call will be caught.\n\
16351 Arguments, if given, should be one or more system call names\n\
16352 (if your system supports that), or system call numbers."),
16353                      catch_syscall_command_1,
16354                      catch_syscall_completer,
16355                      CATCH_PERMANENT,
16356                      CATCH_TEMPORARY);
16357
16358   c = add_com ("watch", class_breakpoint, watch_command, _("\
16359 Set a watchpoint for an expression.\n\
16360 Usage: watch [-l|-location] EXPRESSION\n\
16361 A watchpoint stops execution of your program whenever the value of\n\
16362 an expression changes.\n\
16363 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16364 the memory to which it refers."));
16365   set_cmd_completer (c, expression_completer);
16366
16367   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16368 Set a read watchpoint for an expression.\n\
16369 Usage: rwatch [-l|-location] EXPRESSION\n\
16370 A watchpoint stops execution of your program whenever the value of\n\
16371 an expression is read.\n\
16372 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16373 the memory to which it refers."));
16374   set_cmd_completer (c, expression_completer);
16375
16376   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16377 Set a watchpoint for an expression.\n\
16378 Usage: awatch [-l|-location] EXPRESSION\n\
16379 A watchpoint stops execution of your program whenever the value of\n\
16380 an expression is either read or written.\n\
16381 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16382 the memory to which it refers."));
16383   set_cmd_completer (c, expression_completer);
16384
16385   add_info ("watchpoints", watchpoints_info, _("\
16386 Status of specified watchpoints (all watchpoints if no argument)."));
16387
16388   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16389      respond to changes - contrary to the description.  */
16390   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16391                             &can_use_hw_watchpoints, _("\
16392 Set debugger's willingness to use watchpoint hardware."), _("\
16393 Show debugger's willingness to use watchpoint hardware."), _("\
16394 If zero, gdb will not use hardware for new watchpoints, even if\n\
16395 such is available.  (However, any hardware watchpoints that were\n\
16396 created before setting this to nonzero, will continue to use watchpoint\n\
16397 hardware.)"),
16398                             NULL,
16399                             show_can_use_hw_watchpoints,
16400                             &setlist, &showlist);
16401
16402   can_use_hw_watchpoints = 1;
16403
16404   /* Tracepoint manipulation commands.  */
16405
16406   c = add_com ("trace", class_breakpoint, trace_command, _("\
16407 Set a tracepoint at specified line or function.\n\
16408 \n"
16409 BREAK_ARGS_HELP ("trace") "\n\
16410 Do \"help tracepoints\" for info on other tracepoint commands."));
16411   set_cmd_completer (c, location_completer);
16412
16413   add_com_alias ("tp", "trace", class_alias, 0);
16414   add_com_alias ("tr", "trace", class_alias, 1);
16415   add_com_alias ("tra", "trace", class_alias, 1);
16416   add_com_alias ("trac", "trace", class_alias, 1);
16417
16418   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16419 Set a fast tracepoint at specified line or function.\n\
16420 \n"
16421 BREAK_ARGS_HELP ("ftrace") "\n\
16422 Do \"help tracepoints\" for info on other tracepoint commands."));
16423   set_cmd_completer (c, location_completer);
16424
16425   c = add_com ("strace", class_breakpoint, strace_command, _("\
16426 Set a static tracepoint at specified line, function or marker.\n\
16427 \n\
16428 strace [LOCATION] [if CONDITION]\n\
16429 LOCATION may be a line number, function name, \"*\" and an address,\n\
16430 or -m MARKER_ID.\n\
16431 If a line number is specified, probe the marker at start of code\n\
16432 for that line.  If a function is specified, probe the marker at start\n\
16433 of code for that function.  If an address is specified, probe the marker\n\
16434 at that exact address.  If a marker id is specified, probe the marker\n\
16435 with that name.  With no LOCATION, uses current execution address of\n\
16436 the selected stack frame.\n\
16437 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16438 This collects arbitrary user data passed in the probe point call to the\n\
16439 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16440 by printing the $_sdata variable like any other convenience variable.\n\
16441 \n\
16442 CONDITION is a boolean expression.\n\
16443 \n\
16444 Multiple tracepoints at one place are permitted, and useful if their\n\
16445 conditions are different.\n\
16446 \n\
16447 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16448 Do \"help tracepoints\" for info on other tracepoint commands."));
16449   set_cmd_completer (c, location_completer);
16450
16451   add_info ("tracepoints", tracepoints_info, _("\
16452 Status of specified tracepoints (all tracepoints if no argument).\n\
16453 Convenience variable \"$tpnum\" contains the number of the\n\
16454 last tracepoint set."));
16455
16456   add_info_alias ("tp", "tracepoints", 1);
16457
16458   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16459 Delete specified tracepoints.\n\
16460 Arguments are tracepoint numbers, separated by spaces.\n\
16461 No argument means delete all tracepoints."),
16462            &deletelist);
16463   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16464
16465   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16466 Disable specified tracepoints.\n\
16467 Arguments are tracepoint numbers, separated by spaces.\n\
16468 No argument means disable all tracepoints."),
16469            &disablelist);
16470   deprecate_cmd (c, "disable");
16471
16472   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16473 Enable specified tracepoints.\n\
16474 Arguments are tracepoint numbers, separated by spaces.\n\
16475 No argument means enable all tracepoints."),
16476            &enablelist);
16477   deprecate_cmd (c, "enable");
16478
16479   add_com ("passcount", class_trace, trace_pass_command, _("\
16480 Set the passcount for a tracepoint.\n\
16481 The trace will end when the tracepoint has been passed 'count' times.\n\
16482 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16483 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16484
16485   add_prefix_cmd ("save", class_breakpoint, save_command,
16486                   _("Save breakpoint definitions as a script."),
16487                   &save_cmdlist, "save ",
16488                   0/*allow-unknown*/, &cmdlist);
16489
16490   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16491 Save current breakpoint definitions as a script.\n\
16492 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16493 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16494 session to restore them."),
16495                &save_cmdlist);
16496   set_cmd_completer (c, filename_completer);
16497
16498   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16499 Save current tracepoint definitions as a script.\n\
16500 Use the 'source' command in another debug session to restore them."),
16501                &save_cmdlist);
16502   set_cmd_completer (c, filename_completer);
16503
16504   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16505   deprecate_cmd (c, "save tracepoints");
16506
16507   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16508 Breakpoint specific settings\n\
16509 Configure various breakpoint-specific variables such as\n\
16510 pending breakpoint behavior"),
16511                   &breakpoint_set_cmdlist, "set breakpoint ",
16512                   0/*allow-unknown*/, &setlist);
16513   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16514 Breakpoint specific settings\n\
16515 Configure various breakpoint-specific variables such as\n\
16516 pending breakpoint behavior"),
16517                   &breakpoint_show_cmdlist, "show breakpoint ",
16518                   0/*allow-unknown*/, &showlist);
16519
16520   add_setshow_auto_boolean_cmd ("pending", no_class,
16521                                 &pending_break_support, _("\
16522 Set debugger's behavior regarding pending breakpoints."), _("\
16523 Show debugger's behavior regarding pending breakpoints."), _("\
16524 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16525 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16526 an error.  If auto, an unrecognized breakpoint location results in a\n\
16527 user-query to see if a pending breakpoint should be created."),
16528                                 NULL,
16529                                 show_pending_break_support,
16530                                 &breakpoint_set_cmdlist,
16531                                 &breakpoint_show_cmdlist);
16532
16533   pending_break_support = AUTO_BOOLEAN_AUTO;
16534
16535   add_setshow_boolean_cmd ("auto-hw", no_class,
16536                            &automatic_hardware_breakpoints, _("\
16537 Set automatic usage of hardware breakpoints."), _("\
16538 Show automatic usage of hardware breakpoints."), _("\
16539 If set, the debugger will automatically use hardware breakpoints for\n\
16540 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16541 a warning will be emitted for such breakpoints."),
16542                            NULL,
16543                            show_automatic_hardware_breakpoints,
16544                            &breakpoint_set_cmdlist,
16545                            &breakpoint_show_cmdlist);
16546
16547   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16548                                 &always_inserted_mode, _("\
16549 Set mode for inserting breakpoints."), _("\
16550 Show mode for inserting breakpoints."), _("\
16551 When this mode is off, breakpoints are inserted in inferior when it is\n\
16552 resumed, and removed when execution stops.  When this mode is on,\n\
16553 breakpoints are inserted immediately and removed only when the user\n\
16554 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16555 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16556 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16557 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16558 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16559                                 NULL,
16560                                 &show_always_inserted_mode,
16561                                 &breakpoint_set_cmdlist,
16562                                 &breakpoint_show_cmdlist);
16563
16564   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16565                         condition_evaluation_enums,
16566                         &condition_evaluation_mode_1, _("\
16567 Set mode of breakpoint condition evaluation."), _("\
16568 Show mode of breakpoint condition evaluation."), _("\
16569 When this is set to \"host\", breakpoint conditions will be\n\
16570 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16571 breakpoint conditions will be downloaded to the target (if the target\n\
16572 supports such feature) and conditions will be evaluated on the target's side.\n\
16573 If this is set to \"auto\" (default), this will be automatically set to\n\
16574 \"target\" if it supports condition evaluation, otherwise it will\n\
16575 be set to \"gdb\""),
16576                            &set_condition_evaluation_mode,
16577                            &show_condition_evaluation_mode,
16578                            &breakpoint_set_cmdlist,
16579                            &breakpoint_show_cmdlist);
16580
16581   add_com ("break-range", class_breakpoint, break_range_command, _("\
16582 Set a breakpoint for an address range.\n\
16583 break-range START-LOCATION, END-LOCATION\n\
16584 where START-LOCATION and END-LOCATION can be one of the following:\n\
16585   LINENUM, for that line in the current file,\n\
16586   FILE:LINENUM, for that line in that file,\n\
16587   +OFFSET, for that number of lines after the current line\n\
16588            or the start of the range\n\
16589   FUNCTION, for the first line in that function,\n\
16590   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16591   *ADDRESS, for the instruction at that address.\n\
16592 \n\
16593 The breakpoint will stop execution of the inferior whenever it executes\n\
16594 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16595 range (including START-LOCATION and END-LOCATION)."));
16596
16597   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16598 Set a dynamic printf at specified line or function.\n\
16599 dprintf location,format string,arg1,arg2,...\n\
16600 location may be a line number, function name, or \"*\" and an address.\n\
16601 If a line number is specified, break at start of code for that line.\n\
16602 If a function is specified, break at start of code for that function.\n\
16603 "));
16604   set_cmd_completer (c, location_completer);
16605
16606   add_setshow_enum_cmd ("dprintf-style", class_support,
16607                         dprintf_style_enums, &dprintf_style, _("\
16608 Set the style of usage for dynamic printf."), _("\
16609 Show the style of usage for dynamic printf."), _("\
16610 This setting chooses how GDB will do a dynamic printf.\n\
16611 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16612 console, as with the \"printf\" command.\n\
16613 If the value is \"call\", the print is done by calling a function in your\n\
16614 program; by default printf(), but you can choose a different function or\n\
16615 output stream by setting dprintf-function and dprintf-channel."),
16616                         update_dprintf_commands, NULL,
16617                         &setlist, &showlist);
16618
16619   dprintf_function = xstrdup ("printf");
16620   add_setshow_string_cmd ("dprintf-function", class_support,
16621                           &dprintf_function, _("\
16622 Set the function to use for dynamic printf"), _("\
16623 Show the function to use for dynamic printf"), NULL,
16624                           update_dprintf_commands, NULL,
16625                           &setlist, &showlist);
16626
16627   dprintf_channel = xstrdup ("");
16628   add_setshow_string_cmd ("dprintf-channel", class_support,
16629                           &dprintf_channel, _("\
16630 Set the channel to use for dynamic printf"), _("\
16631 Show the channel to use for dynamic printf"), NULL,
16632                           update_dprintf_commands, NULL,
16633                           &setlist, &showlist);
16634
16635   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16636                            &disconnected_dprintf, _("\
16637 Set whether dprintf continues after GDB disconnects."), _("\
16638 Show whether dprintf continues after GDB disconnects."), _("\
16639 Use this to let dprintf commands continue to hit and produce output\n\
16640 even if GDB disconnects or detaches from the target."),
16641                            NULL,
16642                            NULL,
16643                            &setlist, &showlist);
16644
16645   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16646 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16647 (target agent only) This is useful for formatted output in user-defined commands."));
16648
16649   automatic_hardware_breakpoints = 1;
16650
16651   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16652 }