2012-12-15 Yao Qi <yao@codesourcery.com>
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2012 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 /* Prototypes for local functions.  */
86
87 static void enable_delete_command (char *, int);
88
89 static void enable_once_command (char *, int);
90
91 static void enable_count_command (char *, int);
92
93 static void disable_command (char *, int);
94
95 static void enable_command (char *, int);
96
97 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
98                                                       void *),
99                                     void *);
100
101 static void ignore_command (char *, int);
102
103 static int breakpoint_re_set_one (void *);
104
105 static void breakpoint_re_set_default (struct breakpoint *);
106
107 static void create_sals_from_address_default (char **,
108                                               struct linespec_result *,
109                                               enum bptype, char *,
110                                               char **);
111
112 static void create_breakpoints_sal_default (struct gdbarch *,
113                                             struct linespec_result *,
114                                             struct linespec_sals *,
115                                             char *, char *, enum bptype,
116                                             enum bpdisp, int, int,
117                                             int,
118                                             const struct breakpoint_ops *,
119                                             int, int, int, unsigned);
120
121 static void decode_linespec_default (struct breakpoint *, char **,
122                                      struct symtabs_and_lines *);
123
124 static void clear_command (char *, int);
125
126 static void catch_command (char *, int);
127
128 static int can_use_hardware_watchpoint (struct value *);
129
130 static void break_command_1 (char *, int, int);
131
132 static void mention (struct breakpoint *);
133
134 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
135                                                                enum bptype,
136                                                                const struct breakpoint_ops *);
137 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
138                                                        const struct symtab_and_line *);
139
140 /* This function is used in gdbtk sources and thus can not be made
141    static.  */
142 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
143                                        struct symtab_and_line,
144                                        enum bptype,
145                                        const struct breakpoint_ops *);
146
147 static struct breakpoint *
148   momentary_breakpoint_from_master (struct breakpoint *orig,
149                                     enum bptype type,
150                                     const struct breakpoint_ops *ops);
151
152 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
153
154 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
155                                             CORE_ADDR bpaddr,
156                                             enum bptype bptype);
157
158 static void describe_other_breakpoints (struct gdbarch *,
159                                         struct program_space *, CORE_ADDR,
160                                         struct obj_section *, int);
161
162 static int breakpoint_address_match (struct address_space *aspace1,
163                                      CORE_ADDR addr1,
164                                      struct address_space *aspace2,
165                                      CORE_ADDR addr2);
166
167 static int watchpoint_locations_match (struct bp_location *loc1,
168                                        struct bp_location *loc2);
169
170 static int breakpoint_location_address_match (struct bp_location *bl,
171                                               struct address_space *aspace,
172                                               CORE_ADDR addr);
173
174 static void breakpoints_info (char *, int);
175
176 static void watchpoints_info (char *, int);
177
178 static int breakpoint_1 (char *, int, 
179                          int (*) (const struct breakpoint *));
180
181 static int breakpoint_cond_eval (void *);
182
183 static void cleanup_executing_breakpoints (void *);
184
185 static void commands_command (char *, int);
186
187 static void condition_command (char *, int);
188
189 typedef enum
190   {
191     mark_inserted,
192     mark_uninserted
193   }
194 insertion_state_t;
195
196 static int remove_breakpoint (struct bp_location *, insertion_state_t);
197 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
198
199 static enum print_stop_action print_bp_stop_message (bpstat bs);
200
201 static int watchpoint_check (void *);
202
203 static void maintenance_info_breakpoints (char *, int);
204
205 static int hw_breakpoint_used_count (void);
206
207 static int hw_watchpoint_use_count (struct breakpoint *);
208
209 static int hw_watchpoint_used_count_others (struct breakpoint *except,
210                                             enum bptype type,
211                                             int *other_type_used);
212
213 static void hbreak_command (char *, int);
214
215 static void thbreak_command (char *, int);
216
217 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
218                                     int count);
219
220 static void stop_command (char *arg, int from_tty);
221
222 static void stopin_command (char *arg, int from_tty);
223
224 static void stopat_command (char *arg, int from_tty);
225
226 static char *ep_parse_optional_if_clause (char **arg);
227
228 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
229                                        char *arg, int tempflag, int from_tty);
230
231 static void tcatch_command (char *arg, int from_tty);
232
233 static void detach_single_step_breakpoints (void);
234
235 static int single_step_breakpoint_inserted_here_p (struct address_space *,
236                                                    CORE_ADDR pc);
237
238 static void free_bp_location (struct bp_location *loc);
239 static void incref_bp_location (struct bp_location *loc);
240 static void decref_bp_location (struct bp_location **loc);
241
242 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
243
244 static void update_global_location_list (int);
245
246 static void update_global_location_list_nothrow (int);
247
248 static int is_hardware_watchpoint (const struct breakpoint *bpt);
249
250 static void insert_breakpoint_locations (void);
251
252 static int syscall_catchpoint_p (struct breakpoint *b);
253
254 static void tracepoints_info (char *, int);
255
256 static void delete_trace_command (char *, int);
257
258 static void enable_trace_command (char *, int);
259
260 static void disable_trace_command (char *, int);
261
262 static void trace_pass_command (char *, int);
263
264 static void set_tracepoint_count (int num);
265
266 static int is_masked_watchpoint (const struct breakpoint *b);
267
268 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
269
270 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
271    otherwise.  */
272
273 static int strace_marker_p (struct breakpoint *b);
274
275 static void init_catchpoint (struct breakpoint *b,
276                              struct gdbarch *gdbarch, int tempflag,
277                              char *cond_string,
278                              const struct breakpoint_ops *ops);
279
280 /* The abstract base class all breakpoint_ops structures inherit
281    from.  */
282 static struct breakpoint_ops base_breakpoint_ops;
283
284 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
285    that are implemented on top of software or hardware breakpoints
286    (user breakpoints, internal and momentary breakpoints, etc.).  */
287 static struct breakpoint_ops bkpt_base_breakpoint_ops;
288
289 /* Internal breakpoints class type.  */
290 static struct breakpoint_ops internal_breakpoint_ops;
291
292 /* Momentary breakpoints class type.  */
293 static struct breakpoint_ops momentary_breakpoint_ops;
294
295 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
296 static struct breakpoint_ops longjmp_breakpoint_ops;
297
298 /* The breakpoint_ops structure to be used in regular user created
299    breakpoints.  */
300 struct breakpoint_ops bkpt_breakpoint_ops;
301
302 /* Breakpoints set on probes.  */
303 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
304
305 /* Dynamic printf class type.  */
306 static struct breakpoint_ops dprintf_breakpoint_ops;
307
308 /* The style in which to perform a dynamic printf.  This is a user
309    option because different output options have different tradeoffs;
310    if GDB does the printing, there is better error handling if there
311    is a problem with any of the arguments, but using an inferior
312    function lets you have special-purpose printers and sending of
313    output to the same place as compiled-in print functions.  */
314
315 static const char dprintf_style_gdb[] = "gdb";
316 static const char dprintf_style_call[] = "call";
317 static const char dprintf_style_agent[] = "agent";
318 static const char *const dprintf_style_enums[] = {
319   dprintf_style_gdb,
320   dprintf_style_call,
321   dprintf_style_agent,
322   NULL
323 };
324 static const char *dprintf_style = dprintf_style_gdb;
325
326 /* The function to use for dynamic printf if the preferred style is to
327    call into the inferior.  The value is simply a string that is
328    copied into the command, so it can be anything that GDB can
329    evaluate to a callable address, not necessarily a function name.  */
330
331 static char *dprintf_function = "";
332
333 /* The channel to use for dynamic printf if the preferred style is to
334    call into the inferior; if a nonempty string, it will be passed to
335    the call as the first argument, with the format string as the
336    second.  As with the dprintf function, this can be anything that
337    GDB knows how to evaluate, so in addition to common choices like
338    "stderr", this could be an app-specific expression like
339    "mystreams[curlogger]".  */
340
341 static char *dprintf_channel = "";
342
343 /* True if dprintf commands should continue to operate even if GDB
344    has disconnected.  */
345 static int disconnected_dprintf = 1;
346
347 /* A reference-counted struct command_line.  This lets multiple
348    breakpoints share a single command list.  */
349 struct counted_command_line
350 {
351   /* The reference count.  */
352   int refc;
353
354   /* The command list.  */
355   struct command_line *commands;
356 };
357
358 struct command_line *
359 breakpoint_commands (struct breakpoint *b)
360 {
361   return b->commands ? b->commands->commands : NULL;
362 }
363
364 /* Flag indicating that a command has proceeded the inferior past the
365    current breakpoint.  */
366
367 static int breakpoint_proceeded;
368
369 const char *
370 bpdisp_text (enum bpdisp disp)
371 {
372   /* NOTE: the following values are a part of MI protocol and
373      represent values of 'disp' field returned when inferior stops at
374      a breakpoint.  */
375   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
376
377   return bpdisps[(int) disp];
378 }
379
380 /* Prototypes for exported functions.  */
381 /* If FALSE, gdb will not use hardware support for watchpoints, even
382    if such is available.  */
383 static int can_use_hw_watchpoints;
384
385 static void
386 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
387                              struct cmd_list_element *c,
388                              const char *value)
389 {
390   fprintf_filtered (file,
391                     _("Debugger's willingness to use "
392                       "watchpoint hardware is %s.\n"),
393                     value);
394 }
395
396 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
397    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
398    for unrecognized breakpoint locations.
399    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
400 static enum auto_boolean pending_break_support;
401 static void
402 show_pending_break_support (struct ui_file *file, int from_tty,
403                             struct cmd_list_element *c,
404                             const char *value)
405 {
406   fprintf_filtered (file,
407                     _("Debugger's behavior regarding "
408                       "pending breakpoints is %s.\n"),
409                     value);
410 }
411
412 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
413    set with "break" but falling in read-only memory.
414    If 0, gdb will warn about such breakpoints, but won't automatically
415    use hardware breakpoints.  */
416 static int automatic_hardware_breakpoints;
417 static void
418 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
419                                      struct cmd_list_element *c,
420                                      const char *value)
421 {
422   fprintf_filtered (file,
423                     _("Automatic usage of hardware breakpoints is %s.\n"),
424                     value);
425 }
426
427 /* If on, gdb will keep breakpoints inserted even as inferior is
428    stopped, and immediately insert any new breakpoints.  If off, gdb
429    will insert breakpoints into inferior only when resuming it, and
430    will remove breakpoints upon stop.  If auto, GDB will behave as ON
431    if in non-stop mode, and as OFF if all-stop mode.*/
432
433 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
434
435 static void
436 show_always_inserted_mode (struct ui_file *file, int from_tty,
437                      struct cmd_list_element *c, const char *value)
438 {
439   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
440     fprintf_filtered (file,
441                       _("Always inserted breakpoint "
442                         "mode is %s (currently %s).\n"),
443                       value,
444                       breakpoints_always_inserted_mode () ? "on" : "off");
445   else
446     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
447                       value);
448 }
449
450 int
451 breakpoints_always_inserted_mode (void)
452 {
453   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
454           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
455 }
456
457 static const char condition_evaluation_both[] = "host or target";
458
459 /* Modes for breakpoint condition evaluation.  */
460 static const char condition_evaluation_auto[] = "auto";
461 static const char condition_evaluation_host[] = "host";
462 static const char condition_evaluation_target[] = "target";
463 static const char *const condition_evaluation_enums[] = {
464   condition_evaluation_auto,
465   condition_evaluation_host,
466   condition_evaluation_target,
467   NULL
468 };
469
470 /* Global that holds the current mode for breakpoint condition evaluation.  */
471 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
472
473 /* Global that we use to display information to the user (gets its value from
474    condition_evaluation_mode_1.  */
475 static const char *condition_evaluation_mode = condition_evaluation_auto;
476
477 /* Translate a condition evaluation mode MODE into either "host"
478    or "target".  This is used mostly to translate from "auto" to the
479    real setting that is being used.  It returns the translated
480    evaluation mode.  */
481
482 static const char *
483 translate_condition_evaluation_mode (const char *mode)
484 {
485   if (mode == condition_evaluation_auto)
486     {
487       if (target_supports_evaluation_of_breakpoint_conditions ())
488         return condition_evaluation_target;
489       else
490         return condition_evaluation_host;
491     }
492   else
493     return mode;
494 }
495
496 /* Discovers what condition_evaluation_auto translates to.  */
497
498 static const char *
499 breakpoint_condition_evaluation_mode (void)
500 {
501   return translate_condition_evaluation_mode (condition_evaluation_mode);
502 }
503
504 /* Return true if GDB should evaluate breakpoint conditions or false
505    otherwise.  */
506
507 static int
508 gdb_evaluates_breakpoint_condition_p (void)
509 {
510   const char *mode = breakpoint_condition_evaluation_mode ();
511
512   return (mode == condition_evaluation_host);
513 }
514
515 void _initialize_breakpoint (void);
516
517 /* Are we executing breakpoint commands?  */
518 static int executing_breakpoint_commands;
519
520 /* Are overlay event breakpoints enabled? */
521 static int overlay_events_enabled;
522
523 /* See description in breakpoint.h. */
524 int target_exact_watchpoints = 0;
525
526 /* Walk the following statement or block through all breakpoints.
527    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
528    current breakpoint.  */
529
530 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
531
532 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
533         for (B = breakpoint_chain;      \
534              B ? (TMP=B->next, 1): 0;   \
535              B = TMP)
536
537 /* Similar iterator for the low-level breakpoints.  SAFE variant is
538    not provided so update_global_location_list must not be called
539    while executing the block of ALL_BP_LOCATIONS.  */
540
541 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
542         for (BP_TMP = bp_location;                                      \
543              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
544              BP_TMP++)
545
546 /* Iterates through locations with address ADDRESS for the currently selected
547    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
548    to where the loop should start from.
549    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
550    appropriate location to start with.  */
551
552 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
553         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
554              BP_LOCP_TMP = BP_LOCP_START;                               \
555              BP_LOCP_START                                              \
556              && (BP_LOCP_TMP < bp_location + bp_location_count          \
557              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
558              BP_LOCP_TMP++)
559
560 /* Iterator for tracepoints only.  */
561
562 #define ALL_TRACEPOINTS(B)  \
563   for (B = breakpoint_chain; B; B = B->next)  \
564     if (is_tracepoint (B))
565
566 /* Chains of all breakpoints defined.  */
567
568 struct breakpoint *breakpoint_chain;
569
570 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
571
572 static struct bp_location **bp_location;
573
574 /* Number of elements of BP_LOCATION.  */
575
576 static unsigned bp_location_count;
577
578 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
579    ADDRESS for the current elements of BP_LOCATION which get a valid
580    result from bp_location_has_shadow.  You can use it for roughly
581    limiting the subrange of BP_LOCATION to scan for shadow bytes for
582    an address you need to read.  */
583
584 static CORE_ADDR bp_location_placed_address_before_address_max;
585
586 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
587    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
588    BP_LOCATION which get a valid result from bp_location_has_shadow.
589    You can use it for roughly limiting the subrange of BP_LOCATION to
590    scan for shadow bytes for an address you need to read.  */
591
592 static CORE_ADDR bp_location_shadow_len_after_address_max;
593
594 /* The locations that no longer correspond to any breakpoint, unlinked
595    from bp_location array, but for which a hit may still be reported
596    by a target.  */
597 VEC(bp_location_p) *moribund_locations = NULL;
598
599 /* Number of last breakpoint made.  */
600
601 static int breakpoint_count;
602
603 /* The value of `breakpoint_count' before the last command that
604    created breakpoints.  If the last (break-like) command created more
605    than one breakpoint, then the difference between BREAKPOINT_COUNT
606    and PREV_BREAKPOINT_COUNT is more than one.  */
607 static int prev_breakpoint_count;
608
609 /* Number of last tracepoint made.  */
610
611 static int tracepoint_count;
612
613 static struct cmd_list_element *breakpoint_set_cmdlist;
614 static struct cmd_list_element *breakpoint_show_cmdlist;
615 struct cmd_list_element *save_cmdlist;
616
617 /* Return whether a breakpoint is an active enabled breakpoint.  */
618 static int
619 breakpoint_enabled (struct breakpoint *b)
620 {
621   return (b->enable_state == bp_enabled);
622 }
623
624 /* Set breakpoint count to NUM.  */
625
626 static void
627 set_breakpoint_count (int num)
628 {
629   prev_breakpoint_count = breakpoint_count;
630   breakpoint_count = num;
631   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
632 }
633
634 /* Used by `start_rbreak_breakpoints' below, to record the current
635    breakpoint count before "rbreak" creates any breakpoint.  */
636 static int rbreak_start_breakpoint_count;
637
638 /* Called at the start an "rbreak" command to record the first
639    breakpoint made.  */
640
641 void
642 start_rbreak_breakpoints (void)
643 {
644   rbreak_start_breakpoint_count = breakpoint_count;
645 }
646
647 /* Called at the end of an "rbreak" command to record the last
648    breakpoint made.  */
649
650 void
651 end_rbreak_breakpoints (void)
652 {
653   prev_breakpoint_count = rbreak_start_breakpoint_count;
654 }
655
656 /* Used in run_command to zero the hit count when a new run starts.  */
657
658 void
659 clear_breakpoint_hit_counts (void)
660 {
661   struct breakpoint *b;
662
663   ALL_BREAKPOINTS (b)
664     b->hit_count = 0;
665 }
666
667 /* Allocate a new counted_command_line with reference count of 1.
668    The new structure owns COMMANDS.  */
669
670 static struct counted_command_line *
671 alloc_counted_command_line (struct command_line *commands)
672 {
673   struct counted_command_line *result
674     = xmalloc (sizeof (struct counted_command_line));
675
676   result->refc = 1;
677   result->commands = commands;
678   return result;
679 }
680
681 /* Increment reference count.  This does nothing if CMD is NULL.  */
682
683 static void
684 incref_counted_command_line (struct counted_command_line *cmd)
685 {
686   if (cmd)
687     ++cmd->refc;
688 }
689
690 /* Decrement reference count.  If the reference count reaches 0,
691    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
692    nothing if *CMDP is NULL.  */
693
694 static void
695 decref_counted_command_line (struct counted_command_line **cmdp)
696 {
697   if (*cmdp)
698     {
699       if (--(*cmdp)->refc == 0)
700         {
701           free_command_lines (&(*cmdp)->commands);
702           xfree (*cmdp);
703         }
704       *cmdp = NULL;
705     }
706 }
707
708 /* A cleanup function that calls decref_counted_command_line.  */
709
710 static void
711 do_cleanup_counted_command_line (void *arg)
712 {
713   decref_counted_command_line (arg);
714 }
715
716 /* Create a cleanup that calls decref_counted_command_line on the
717    argument.  */
718
719 static struct cleanup *
720 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
721 {
722   return make_cleanup (do_cleanup_counted_command_line, cmdp);
723 }
724
725 \f
726 /* Return the breakpoint with the specified number, or NULL
727    if the number does not refer to an existing breakpoint.  */
728
729 struct breakpoint *
730 get_breakpoint (int num)
731 {
732   struct breakpoint *b;
733
734   ALL_BREAKPOINTS (b)
735     if (b->number == num)
736       return b;
737   
738   return NULL;
739 }
740
741 \f
742
743 /* Mark locations as "conditions have changed" in case the target supports
744    evaluating conditions on its side.  */
745
746 static void
747 mark_breakpoint_modified (struct breakpoint *b)
748 {
749   struct bp_location *loc;
750
751   /* This is only meaningful if the target is
752      evaluating conditions and if the user has
753      opted for condition evaluation on the target's
754      side.  */
755   if (gdb_evaluates_breakpoint_condition_p ()
756       || !target_supports_evaluation_of_breakpoint_conditions ())
757     return;
758
759   if (!is_breakpoint (b))
760     return;
761
762   for (loc = b->loc; loc; loc = loc->next)
763     loc->condition_changed = condition_modified;
764 }
765
766 /* Mark location as "conditions have changed" in case the target supports
767    evaluating conditions on its side.  */
768
769 static void
770 mark_breakpoint_location_modified (struct bp_location *loc)
771 {
772   /* This is only meaningful if the target is
773      evaluating conditions and if the user has
774      opted for condition evaluation on the target's
775      side.  */
776   if (gdb_evaluates_breakpoint_condition_p ()
777       || !target_supports_evaluation_of_breakpoint_conditions ())
778
779     return;
780
781   if (!is_breakpoint (loc->owner))
782     return;
783
784   loc->condition_changed = condition_modified;
785 }
786
787 /* Sets the condition-evaluation mode using the static global
788    condition_evaluation_mode.  */
789
790 static void
791 set_condition_evaluation_mode (char *args, int from_tty,
792                                struct cmd_list_element *c)
793 {
794   const char *old_mode, *new_mode;
795
796   if ((condition_evaluation_mode_1 == condition_evaluation_target)
797       && !target_supports_evaluation_of_breakpoint_conditions ())
798     {
799       condition_evaluation_mode_1 = condition_evaluation_mode;
800       warning (_("Target does not support breakpoint condition evaluation.\n"
801                  "Using host evaluation mode instead."));
802       return;
803     }
804
805   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
806   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
807
808   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
809      settings was "auto".  */
810   condition_evaluation_mode = condition_evaluation_mode_1;
811
812   /* Only update the mode if the user picked a different one.  */
813   if (new_mode != old_mode)
814     {
815       struct bp_location *loc, **loc_tmp;
816       /* If the user switched to a different evaluation mode, we
817          need to synch the changes with the target as follows:
818
819          "host" -> "target": Send all (valid) conditions to the target.
820          "target" -> "host": Remove all the conditions from the target.
821       */
822
823       if (new_mode == condition_evaluation_target)
824         {
825           /* Mark everything modified and synch conditions with the
826              target.  */
827           ALL_BP_LOCATIONS (loc, loc_tmp)
828             mark_breakpoint_location_modified (loc);
829         }
830       else
831         {
832           /* Manually mark non-duplicate locations to synch conditions
833              with the target.  We do this to remove all the conditions the
834              target knows about.  */
835           ALL_BP_LOCATIONS (loc, loc_tmp)
836             if (is_breakpoint (loc->owner) && loc->inserted)
837               loc->needs_update = 1;
838         }
839
840       /* Do the update.  */
841       update_global_location_list (1);
842     }
843
844   return;
845 }
846
847 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
848    what "auto" is translating to.  */
849
850 static void
851 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
852                                 struct cmd_list_element *c, const char *value)
853 {
854   if (condition_evaluation_mode == condition_evaluation_auto)
855     fprintf_filtered (file,
856                       _("Breakpoint condition evaluation "
857                         "mode is %s (currently %s).\n"),
858                       value,
859                       breakpoint_condition_evaluation_mode ());
860   else
861     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
862                       value);
863 }
864
865 /* A comparison function for bp_location AP and BP that is used by
866    bsearch.  This comparison function only cares about addresses, unlike
867    the more general bp_location_compare function.  */
868
869 static int
870 bp_location_compare_addrs (const void *ap, const void *bp)
871 {
872   struct bp_location *a = *(void **) ap;
873   struct bp_location *b = *(void **) bp;
874
875   if (a->address == b->address)
876     return 0;
877   else
878     return ((a->address > b->address) - (a->address < b->address));
879 }
880
881 /* Helper function to skip all bp_locations with addresses
882    less than ADDRESS.  It returns the first bp_location that
883    is greater than or equal to ADDRESS.  If none is found, just
884    return NULL.  */
885
886 static struct bp_location **
887 get_first_locp_gte_addr (CORE_ADDR address)
888 {
889   struct bp_location dummy_loc;
890   struct bp_location *dummy_locp = &dummy_loc;
891   struct bp_location **locp_found = NULL;
892
893   /* Initialize the dummy location's address field.  */
894   memset (&dummy_loc, 0, sizeof (struct bp_location));
895   dummy_loc.address = address;
896
897   /* Find a close match to the first location at ADDRESS.  */
898   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
899                         sizeof (struct bp_location **),
900                         bp_location_compare_addrs);
901
902   /* Nothing was found, nothing left to do.  */
903   if (locp_found == NULL)
904     return NULL;
905
906   /* We may have found a location that is at ADDRESS but is not the first in the
907      location's list.  Go backwards (if possible) and locate the first one.  */
908   while ((locp_found - 1) >= bp_location
909          && (*(locp_found - 1))->address == address)
910     locp_found--;
911
912   return locp_found;
913 }
914
915 void
916 set_breakpoint_condition (struct breakpoint *b, char *exp,
917                           int from_tty)
918 {
919   xfree (b->cond_string);
920   b->cond_string = NULL;
921
922   if (is_watchpoint (b))
923     {
924       struct watchpoint *w = (struct watchpoint *) b;
925
926       xfree (w->cond_exp);
927       w->cond_exp = NULL;
928     }
929   else
930     {
931       struct bp_location *loc;
932
933       for (loc = b->loc; loc; loc = loc->next)
934         {
935           xfree (loc->cond);
936           loc->cond = NULL;
937
938           /* No need to free the condition agent expression
939              bytecode (if we have one).  We will handle this
940              when we go through update_global_location_list.  */
941         }
942     }
943
944   if (*exp == 0)
945     {
946       if (from_tty)
947         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
948     }
949   else
950     {
951       char *arg = exp;
952
953       /* I don't know if it matters whether this is the string the user
954          typed in or the decompiled expression.  */
955       b->cond_string = xstrdup (arg);
956       b->condition_not_parsed = 0;
957
958       if (is_watchpoint (b))
959         {
960           struct watchpoint *w = (struct watchpoint *) b;
961
962           innermost_block = NULL;
963           arg = exp;
964           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
965           if (*arg)
966             error (_("Junk at end of expression"));
967           w->cond_exp_valid_block = innermost_block;
968         }
969       else
970         {
971           struct bp_location *loc;
972
973           for (loc = b->loc; loc; loc = loc->next)
974             {
975               arg = exp;
976               loc->cond =
977                 parse_exp_1 (&arg, loc->address,
978                              block_for_pc (loc->address), 0);
979               if (*arg)
980                 error (_("Junk at end of expression"));
981             }
982         }
983     }
984   mark_breakpoint_modified (b);
985
986   annotate_breakpoints_changed ();
987   observer_notify_breakpoint_modified (b);
988 }
989
990 /* Completion for the "condition" command.  */
991
992 static VEC (char_ptr) *
993 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
994 {
995   char *space;
996
997   text = skip_spaces (text);
998   space = skip_to_space (text);
999   if (*space == '\0')
1000     {
1001       int len;
1002       struct breakpoint *b;
1003       VEC (char_ptr) *result = NULL;
1004
1005       if (text[0] == '$')
1006         {
1007           /* We don't support completion of history indices.  */
1008           if (isdigit (text[1]))
1009             return NULL;
1010           return complete_internalvar (&text[1]);
1011         }
1012
1013       /* We're completing the breakpoint number.  */
1014       len = strlen (text);
1015
1016       ALL_BREAKPOINTS (b)
1017       {
1018         int single = b->loc->next == NULL;
1019         struct bp_location *loc;
1020         int count = 1;
1021
1022         for (loc = b->loc; loc; loc = loc->next)
1023           {
1024             char location[50];
1025
1026             if (single)
1027               xsnprintf (location, sizeof (location), "%d", b->number);
1028             else
1029               xsnprintf (location, sizeof (location),  "%d.%d", b->number,
1030                          count);
1031
1032             if (strncmp (location, text, len) == 0)
1033               VEC_safe_push (char_ptr, result, xstrdup (location));
1034
1035             ++count;
1036           }
1037       }
1038
1039       return result;
1040     }
1041
1042   /* We're completing the expression part.  */
1043   text = skip_spaces (space);
1044   return expression_completer (cmd, text, word);
1045 }
1046
1047 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1048
1049 static void
1050 condition_command (char *arg, int from_tty)
1051 {
1052   struct breakpoint *b;
1053   char *p;
1054   int bnum;
1055
1056   if (arg == 0)
1057     error_no_arg (_("breakpoint number"));
1058
1059   p = arg;
1060   bnum = get_number (&p);
1061   if (bnum == 0)
1062     error (_("Bad breakpoint argument: '%s'"), arg);
1063
1064   ALL_BREAKPOINTS (b)
1065     if (b->number == bnum)
1066       {
1067         /* Check if this breakpoint has a Python object assigned to
1068            it, and if it has a definition of the "stop"
1069            method.  This method and conditions entered into GDB from
1070            the CLI are mutually exclusive.  */
1071         if (b->py_bp_object
1072             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1073           error (_("Cannot set a condition where a Python 'stop' "
1074                    "method has been defined in the breakpoint."));
1075         set_breakpoint_condition (b, p, from_tty);
1076
1077         if (is_breakpoint (b))
1078           update_global_location_list (1);
1079
1080         return;
1081       }
1082
1083   error (_("No breakpoint number %d."), bnum);
1084 }
1085
1086 /* Check that COMMAND do not contain commands that are suitable
1087    only for tracepoints and not suitable for ordinary breakpoints.
1088    Throw if any such commands is found.  */
1089
1090 static void
1091 check_no_tracepoint_commands (struct command_line *commands)
1092 {
1093   struct command_line *c;
1094
1095   for (c = commands; c; c = c->next)
1096     {
1097       int i;
1098
1099       if (c->control_type == while_stepping_control)
1100         error (_("The 'while-stepping' command can "
1101                  "only be used for tracepoints"));
1102
1103       for (i = 0; i < c->body_count; ++i)
1104         check_no_tracepoint_commands ((c->body_list)[i]);
1105
1106       /* Not that command parsing removes leading whitespace and comment
1107          lines and also empty lines.  So, we only need to check for
1108          command directly.  */
1109       if (strstr (c->line, "collect ") == c->line)
1110         error (_("The 'collect' command can only be used for tracepoints"));
1111
1112       if (strstr (c->line, "teval ") == c->line)
1113         error (_("The 'teval' command can only be used for tracepoints"));
1114     }
1115 }
1116
1117 /* Encapsulate tests for different types of tracepoints.  */
1118
1119 static int
1120 is_tracepoint_type (enum bptype type)
1121 {
1122   return (type == bp_tracepoint
1123           || type == bp_fast_tracepoint
1124           || type == bp_static_tracepoint);
1125 }
1126
1127 int
1128 is_tracepoint (const struct breakpoint *b)
1129 {
1130   return is_tracepoint_type (b->type);
1131 }
1132
1133 /* A helper function that validates that COMMANDS are valid for a
1134    breakpoint.  This function will throw an exception if a problem is
1135    found.  */
1136
1137 static void
1138 validate_commands_for_breakpoint (struct breakpoint *b,
1139                                   struct command_line *commands)
1140 {
1141   if (is_tracepoint (b))
1142     {
1143       /* We need to verify that each top-level element of commands is
1144          valid for tracepoints, that there's at most one
1145          while-stepping element, and that while-stepping's body has
1146          valid tracing commands excluding nested while-stepping.  */
1147       struct command_line *c;
1148       struct command_line *while_stepping = 0;
1149       for (c = commands; c; c = c->next)
1150         {
1151           if (c->control_type == while_stepping_control)
1152             {
1153               if (b->type == bp_fast_tracepoint)
1154                 error (_("The 'while-stepping' command "
1155                          "cannot be used for fast tracepoint"));
1156               else if (b->type == bp_static_tracepoint)
1157                 error (_("The 'while-stepping' command "
1158                          "cannot be used for static tracepoint"));
1159
1160               if (while_stepping)
1161                 error (_("The 'while-stepping' command "
1162                          "can be used only once"));
1163               else
1164                 while_stepping = c;
1165             }
1166         }
1167       if (while_stepping)
1168         {
1169           struct command_line *c2;
1170
1171           gdb_assert (while_stepping->body_count == 1);
1172           c2 = while_stepping->body_list[0];
1173           for (; c2; c2 = c2->next)
1174             {
1175               if (c2->control_type == while_stepping_control)
1176                 error (_("The 'while-stepping' command cannot be nested"));
1177             }
1178         }
1179     }
1180   else
1181     {
1182       check_no_tracepoint_commands (commands);
1183     }
1184 }
1185
1186 /* Return a vector of all the static tracepoints set at ADDR.  The
1187    caller is responsible for releasing the vector.  */
1188
1189 VEC(breakpoint_p) *
1190 static_tracepoints_here (CORE_ADDR addr)
1191 {
1192   struct breakpoint *b;
1193   VEC(breakpoint_p) *found = 0;
1194   struct bp_location *loc;
1195
1196   ALL_BREAKPOINTS (b)
1197     if (b->type == bp_static_tracepoint)
1198       {
1199         for (loc = b->loc; loc; loc = loc->next)
1200           if (loc->address == addr)
1201             VEC_safe_push(breakpoint_p, found, b);
1202       }
1203
1204   return found;
1205 }
1206
1207 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1208    validate that only allowed commands are included.  */
1209
1210 void
1211 breakpoint_set_commands (struct breakpoint *b, 
1212                          struct command_line *commands)
1213 {
1214   validate_commands_for_breakpoint (b, commands);
1215
1216   decref_counted_command_line (&b->commands);
1217   b->commands = alloc_counted_command_line (commands);
1218   annotate_breakpoints_changed ();
1219   observer_notify_breakpoint_modified (b);
1220 }
1221
1222 /* Set the internal `silent' flag on the breakpoint.  Note that this
1223    is not the same as the "silent" that may appear in the breakpoint's
1224    commands.  */
1225
1226 void
1227 breakpoint_set_silent (struct breakpoint *b, int silent)
1228 {
1229   int old_silent = b->silent;
1230
1231   b->silent = silent;
1232   if (old_silent != silent)
1233     observer_notify_breakpoint_modified (b);
1234 }
1235
1236 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1237    breakpoint work for any thread.  */
1238
1239 void
1240 breakpoint_set_thread (struct breakpoint *b, int thread)
1241 {
1242   int old_thread = b->thread;
1243
1244   b->thread = thread;
1245   if (old_thread != thread)
1246     observer_notify_breakpoint_modified (b);
1247 }
1248
1249 /* Set the task for this breakpoint.  If TASK is 0, make the
1250    breakpoint work for any task.  */
1251
1252 void
1253 breakpoint_set_task (struct breakpoint *b, int task)
1254 {
1255   int old_task = b->task;
1256
1257   b->task = task;
1258   if (old_task != task)
1259     observer_notify_breakpoint_modified (b);
1260 }
1261
1262 void
1263 check_tracepoint_command (char *line, void *closure)
1264 {
1265   struct breakpoint *b = closure;
1266
1267   validate_actionline (&line, b);
1268 }
1269
1270 /* A structure used to pass information through
1271    map_breakpoint_numbers.  */
1272
1273 struct commands_info
1274 {
1275   /* True if the command was typed at a tty.  */
1276   int from_tty;
1277
1278   /* The breakpoint range spec.  */
1279   char *arg;
1280
1281   /* Non-NULL if the body of the commands are being read from this
1282      already-parsed command.  */
1283   struct command_line *control;
1284
1285   /* The command lines read from the user, or NULL if they have not
1286      yet been read.  */
1287   struct counted_command_line *cmd;
1288 };
1289
1290 /* A callback for map_breakpoint_numbers that sets the commands for
1291    commands_command.  */
1292
1293 static void
1294 do_map_commands_command (struct breakpoint *b, void *data)
1295 {
1296   struct commands_info *info = data;
1297
1298   if (info->cmd == NULL)
1299     {
1300       struct command_line *l;
1301
1302       if (info->control != NULL)
1303         l = copy_command_lines (info->control->body_list[0]);
1304       else
1305         {
1306           struct cleanup *old_chain;
1307           char *str;
1308
1309           str = xstrprintf (_("Type commands for breakpoint(s) "
1310                               "%s, one per line."),
1311                             info->arg);
1312
1313           old_chain = make_cleanup (xfree, str);
1314
1315           l = read_command_lines (str,
1316                                   info->from_tty, 1,
1317                                   (is_tracepoint (b)
1318                                    ? check_tracepoint_command : 0),
1319                                   b);
1320
1321           do_cleanups (old_chain);
1322         }
1323
1324       info->cmd = alloc_counted_command_line (l);
1325     }
1326
1327   /* If a breakpoint was on the list more than once, we don't need to
1328      do anything.  */
1329   if (b->commands != info->cmd)
1330     {
1331       validate_commands_for_breakpoint (b, info->cmd->commands);
1332       incref_counted_command_line (info->cmd);
1333       decref_counted_command_line (&b->commands);
1334       b->commands = info->cmd;
1335       annotate_breakpoints_changed ();
1336       observer_notify_breakpoint_modified (b);
1337     }
1338 }
1339
1340 static void
1341 commands_command_1 (char *arg, int from_tty, 
1342                     struct command_line *control)
1343 {
1344   struct cleanup *cleanups;
1345   struct commands_info info;
1346
1347   info.from_tty = from_tty;
1348   info.control = control;
1349   info.cmd = NULL;
1350   /* If we read command lines from the user, then `info' will hold an
1351      extra reference to the commands that we must clean up.  */
1352   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1353
1354   if (arg == NULL || !*arg)
1355     {
1356       if (breakpoint_count - prev_breakpoint_count > 1)
1357         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1358                           breakpoint_count);
1359       else if (breakpoint_count > 0)
1360         arg = xstrprintf ("%d", breakpoint_count);
1361       else
1362         {
1363           /* So that we don't try to free the incoming non-NULL
1364              argument in the cleanup below.  Mapping breakpoint
1365              numbers will fail in this case.  */
1366           arg = NULL;
1367         }
1368     }
1369   else
1370     /* The command loop has some static state, so we need to preserve
1371        our argument.  */
1372     arg = xstrdup (arg);
1373
1374   if (arg != NULL)
1375     make_cleanup (xfree, arg);
1376
1377   info.arg = arg;
1378
1379   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1380
1381   if (info.cmd == NULL)
1382     error (_("No breakpoints specified."));
1383
1384   do_cleanups (cleanups);
1385 }
1386
1387 static void
1388 commands_command (char *arg, int from_tty)
1389 {
1390   commands_command_1 (arg, from_tty, NULL);
1391 }
1392
1393 /* Like commands_command, but instead of reading the commands from
1394    input stream, takes them from an already parsed command structure.
1395
1396    This is used by cli-script.c to DTRT with breakpoint commands
1397    that are part of if and while bodies.  */
1398 enum command_control_type
1399 commands_from_control_command (char *arg, struct command_line *cmd)
1400 {
1401   commands_command_1 (arg, 0, cmd);
1402   return simple_control;
1403 }
1404
1405 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1406
1407 static int
1408 bp_location_has_shadow (struct bp_location *bl)
1409 {
1410   if (bl->loc_type != bp_loc_software_breakpoint)
1411     return 0;
1412   if (!bl->inserted)
1413     return 0;
1414   if (bl->target_info.shadow_len == 0)
1415     /* BL isn't valid, or doesn't shadow memory.  */
1416     return 0;
1417   return 1;
1418 }
1419
1420 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1421    by replacing any memory breakpoints with their shadowed contents.
1422
1423    If READBUF is not NULL, this buffer must not overlap with any of
1424    the breakpoint location's shadow_contents buffers.  Otherwise,
1425    a failed assertion internal error will be raised.
1426
1427    The range of shadowed area by each bp_location is:
1428      bl->address - bp_location_placed_address_before_address_max
1429      up to bl->address + bp_location_shadow_len_after_address_max
1430    The range we were requested to resolve shadows for is:
1431      memaddr ... memaddr + len
1432    Thus the safe cutoff boundaries for performance optimization are
1433      memaddr + len <= (bl->address
1434                        - bp_location_placed_address_before_address_max)
1435    and:
1436      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1437
1438 void
1439 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1440                         const gdb_byte *writebuf_org,
1441                         ULONGEST memaddr, LONGEST len)
1442 {
1443   /* Left boundary, right boundary and median element of our binary
1444      search.  */
1445   unsigned bc_l, bc_r, bc;
1446
1447   /* Find BC_L which is a leftmost element which may affect BUF
1448      content.  It is safe to report lower value but a failure to
1449      report higher one.  */
1450
1451   bc_l = 0;
1452   bc_r = bp_location_count;
1453   while (bc_l + 1 < bc_r)
1454     {
1455       struct bp_location *bl;
1456
1457       bc = (bc_l + bc_r) / 2;
1458       bl = bp_location[bc];
1459
1460       /* Check first BL->ADDRESS will not overflow due to the added
1461          constant.  Then advance the left boundary only if we are sure
1462          the BC element can in no way affect the BUF content (MEMADDR
1463          to MEMADDR + LEN range).
1464
1465          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1466          offset so that we cannot miss a breakpoint with its shadow
1467          range tail still reaching MEMADDR.  */
1468
1469       if ((bl->address + bp_location_shadow_len_after_address_max
1470            >= bl->address)
1471           && (bl->address + bp_location_shadow_len_after_address_max
1472               <= memaddr))
1473         bc_l = bc;
1474       else
1475         bc_r = bc;
1476     }
1477
1478   /* Due to the binary search above, we need to make sure we pick the
1479      first location that's at BC_L's address.  E.g., if there are
1480      multiple locations at the same address, BC_L may end up pointing
1481      at a duplicate location, and miss the "master"/"inserted"
1482      location.  Say, given locations L1, L2 and L3 at addresses A and
1483      B:
1484
1485       L1@A, L2@A, L3@B, ...
1486
1487      BC_L could end up pointing at location L2, while the "master"
1488      location could be L1.  Since the `loc->inserted' flag is only set
1489      on "master" locations, we'd forget to restore the shadow of L1
1490      and L2.  */
1491   while (bc_l > 0
1492          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1493     bc_l--;
1494
1495   /* Now do full processing of the found relevant range of elements.  */
1496
1497   for (bc = bc_l; bc < bp_location_count; bc++)
1498   {
1499     struct bp_location *bl = bp_location[bc];
1500     CORE_ADDR bp_addr = 0;
1501     int bp_size = 0;
1502     int bptoffset = 0;
1503
1504     /* bp_location array has BL->OWNER always non-NULL.  */
1505     if (bl->owner->type == bp_none)
1506       warning (_("reading through apparently deleted breakpoint #%d?"),
1507                bl->owner->number);
1508
1509     /* Performance optimization: any further element can no longer affect BUF
1510        content.  */
1511
1512     if (bl->address >= bp_location_placed_address_before_address_max
1513         && memaddr + len <= (bl->address
1514                              - bp_location_placed_address_before_address_max))
1515       break;
1516
1517     if (!bp_location_has_shadow (bl))
1518       continue;
1519     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1520                                    current_program_space->aspace, 0))
1521       continue;
1522
1523     /* Addresses and length of the part of the breakpoint that
1524        we need to copy.  */
1525     bp_addr = bl->target_info.placed_address;
1526     bp_size = bl->target_info.shadow_len;
1527
1528     if (bp_addr + bp_size <= memaddr)
1529       /* The breakpoint is entirely before the chunk of memory we
1530          are reading.  */
1531       continue;
1532
1533     if (bp_addr >= memaddr + len)
1534       /* The breakpoint is entirely after the chunk of memory we are
1535          reading.  */
1536       continue;
1537
1538     /* Offset within shadow_contents.  */
1539     if (bp_addr < memaddr)
1540       {
1541         /* Only copy the second part of the breakpoint.  */
1542         bp_size -= memaddr - bp_addr;
1543         bptoffset = memaddr - bp_addr;
1544         bp_addr = memaddr;
1545       }
1546
1547     if (bp_addr + bp_size > memaddr + len)
1548       {
1549         /* Only copy the first part of the breakpoint.  */
1550         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1551       }
1552
1553     if (readbuf != NULL)
1554       {
1555         /* Verify that the readbuf buffer does not overlap with
1556            the shadow_contents buffer.  */
1557         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1558                     || readbuf >= (bl->target_info.shadow_contents
1559                                    + bl->target_info.shadow_len));
1560
1561         /* Update the read buffer with this inserted breakpoint's
1562            shadow.  */
1563         memcpy (readbuf + bp_addr - memaddr,
1564                 bl->target_info.shadow_contents + bptoffset, bp_size);
1565       }
1566     else
1567       {
1568         struct gdbarch *gdbarch = bl->gdbarch;
1569         const unsigned char *bp;
1570         CORE_ADDR placed_address = bl->target_info.placed_address;
1571         unsigned placed_size = bl->target_info.placed_size;
1572
1573         /* Update the shadow with what we want to write to memory.  */
1574         memcpy (bl->target_info.shadow_contents + bptoffset,
1575                 writebuf_org + bp_addr - memaddr, bp_size);
1576
1577         /* Determine appropriate breakpoint contents and size for this
1578            address.  */
1579         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1580
1581         /* Update the final write buffer with this inserted
1582            breakpoint's INSN.  */
1583         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1584       }
1585   }
1586 }
1587 \f
1588
1589 /* Return true if BPT is either a software breakpoint or a hardware
1590    breakpoint.  */
1591
1592 int
1593 is_breakpoint (const struct breakpoint *bpt)
1594 {
1595   return (bpt->type == bp_breakpoint
1596           || bpt->type == bp_hardware_breakpoint
1597           || bpt->type == bp_dprintf);
1598 }
1599
1600 /* Return true if BPT is of any hardware watchpoint kind.  */
1601
1602 static int
1603 is_hardware_watchpoint (const struct breakpoint *bpt)
1604 {
1605   return (bpt->type == bp_hardware_watchpoint
1606           || bpt->type == bp_read_watchpoint
1607           || bpt->type == bp_access_watchpoint);
1608 }
1609
1610 /* Return true if BPT is of any watchpoint kind, hardware or
1611    software.  */
1612
1613 int
1614 is_watchpoint (const struct breakpoint *bpt)
1615 {
1616   return (is_hardware_watchpoint (bpt)
1617           || bpt->type == bp_watchpoint);
1618 }
1619
1620 /* Returns true if the current thread and its running state are safe
1621    to evaluate or update watchpoint B.  Watchpoints on local
1622    expressions need to be evaluated in the context of the thread that
1623    was current when the watchpoint was created, and, that thread needs
1624    to be stopped to be able to select the correct frame context.
1625    Watchpoints on global expressions can be evaluated on any thread,
1626    and in any state.  It is presently left to the target allowing
1627    memory accesses when threads are running.  */
1628
1629 static int
1630 watchpoint_in_thread_scope (struct watchpoint *b)
1631 {
1632   return (b->base.pspace == current_program_space
1633           && (ptid_equal (b->watchpoint_thread, null_ptid)
1634               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1635                   && !is_executing (inferior_ptid))));
1636 }
1637
1638 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1639    associated bp_watchpoint_scope breakpoint.  */
1640
1641 static void
1642 watchpoint_del_at_next_stop (struct watchpoint *w)
1643 {
1644   struct breakpoint *b = &w->base;
1645
1646   if (b->related_breakpoint != b)
1647     {
1648       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1649       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1650       b->related_breakpoint->disposition = disp_del_at_next_stop;
1651       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1652       b->related_breakpoint = b;
1653     }
1654   b->disposition = disp_del_at_next_stop;
1655 }
1656
1657 /* Assuming that B is a watchpoint:
1658    - Reparse watchpoint expression, if REPARSE is non-zero
1659    - Evaluate expression and store the result in B->val
1660    - Evaluate the condition if there is one, and store the result
1661      in b->loc->cond.
1662    - Update the list of values that must be watched in B->loc.
1663
1664    If the watchpoint disposition is disp_del_at_next_stop, then do
1665    nothing.  If this is local watchpoint that is out of scope, delete
1666    it.
1667
1668    Even with `set breakpoint always-inserted on' the watchpoints are
1669    removed + inserted on each stop here.  Normal breakpoints must
1670    never be removed because they might be missed by a running thread
1671    when debugging in non-stop mode.  On the other hand, hardware
1672    watchpoints (is_hardware_watchpoint; processed here) are specific
1673    to each LWP since they are stored in each LWP's hardware debug
1674    registers.  Therefore, such LWP must be stopped first in order to
1675    be able to modify its hardware watchpoints.
1676
1677    Hardware watchpoints must be reset exactly once after being
1678    presented to the user.  It cannot be done sooner, because it would
1679    reset the data used to present the watchpoint hit to the user.  And
1680    it must not be done later because it could display the same single
1681    watchpoint hit during multiple GDB stops.  Note that the latter is
1682    relevant only to the hardware watchpoint types bp_read_watchpoint
1683    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1684    not user-visible - its hit is suppressed if the memory content has
1685    not changed.
1686
1687    The following constraints influence the location where we can reset
1688    hardware watchpoints:
1689
1690    * target_stopped_by_watchpoint and target_stopped_data_address are
1691      called several times when GDB stops.
1692
1693    [linux] 
1694    * Multiple hardware watchpoints can be hit at the same time,
1695      causing GDB to stop.  GDB only presents one hardware watchpoint
1696      hit at a time as the reason for stopping, and all the other hits
1697      are presented later, one after the other, each time the user
1698      requests the execution to be resumed.  Execution is not resumed
1699      for the threads still having pending hit event stored in
1700      LWP_INFO->STATUS.  While the watchpoint is already removed from
1701      the inferior on the first stop the thread hit event is kept being
1702      reported from its cached value by linux_nat_stopped_data_address
1703      until the real thread resume happens after the watchpoint gets
1704      presented and thus its LWP_INFO->STATUS gets reset.
1705
1706    Therefore the hardware watchpoint hit can get safely reset on the
1707    watchpoint removal from inferior.  */
1708
1709 static void
1710 update_watchpoint (struct watchpoint *b, int reparse)
1711 {
1712   int within_current_scope;
1713   struct frame_id saved_frame_id;
1714   int frame_saved;
1715
1716   /* If this is a local watchpoint, we only want to check if the
1717      watchpoint frame is in scope if the current thread is the thread
1718      that was used to create the watchpoint.  */
1719   if (!watchpoint_in_thread_scope (b))
1720     return;
1721
1722   if (b->base.disposition == disp_del_at_next_stop)
1723     return;
1724  
1725   frame_saved = 0;
1726
1727   /* Determine if the watchpoint is within scope.  */
1728   if (b->exp_valid_block == NULL)
1729     within_current_scope = 1;
1730   else
1731     {
1732       struct frame_info *fi = get_current_frame ();
1733       struct gdbarch *frame_arch = get_frame_arch (fi);
1734       CORE_ADDR frame_pc = get_frame_pc (fi);
1735
1736       /* If we're in a function epilogue, unwinding may not work
1737          properly, so do not attempt to recreate locations at this
1738          point.  See similar comments in watchpoint_check.  */
1739       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1740         return;
1741
1742       /* Save the current frame's ID so we can restore it after
1743          evaluating the watchpoint expression on its own frame.  */
1744       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1745          took a frame parameter, so that we didn't have to change the
1746          selected frame.  */
1747       frame_saved = 1;
1748       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1749
1750       fi = frame_find_by_id (b->watchpoint_frame);
1751       within_current_scope = (fi != NULL);
1752       if (within_current_scope)
1753         select_frame (fi);
1754     }
1755
1756   /* We don't free locations.  They are stored in the bp_location array
1757      and update_global_location_list will eventually delete them and
1758      remove breakpoints if needed.  */
1759   b->base.loc = NULL;
1760
1761   if (within_current_scope && reparse)
1762     {
1763       char *s;
1764
1765       if (b->exp)
1766         {
1767           xfree (b->exp);
1768           b->exp = NULL;
1769         }
1770       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1771       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1772       /* If the meaning of expression itself changed, the old value is
1773          no longer relevant.  We don't want to report a watchpoint hit
1774          to the user when the old value and the new value may actually
1775          be completely different objects.  */
1776       value_free (b->val);
1777       b->val = NULL;
1778       b->val_valid = 0;
1779
1780       /* Note that unlike with breakpoints, the watchpoint's condition
1781          expression is stored in the breakpoint object, not in the
1782          locations (re)created below.  */
1783       if (b->base.cond_string != NULL)
1784         {
1785           if (b->cond_exp != NULL)
1786             {
1787               xfree (b->cond_exp);
1788               b->cond_exp = NULL;
1789             }
1790
1791           s = b->base.cond_string;
1792           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1793         }
1794     }
1795
1796   /* If we failed to parse the expression, for example because
1797      it refers to a global variable in a not-yet-loaded shared library,
1798      don't try to insert watchpoint.  We don't automatically delete
1799      such watchpoint, though, since failure to parse expression
1800      is different from out-of-scope watchpoint.  */
1801   if ( !target_has_execution)
1802     {
1803       /* Without execution, memory can't change.  No use to try and
1804          set watchpoint locations.  The watchpoint will be reset when
1805          the target gains execution, through breakpoint_re_set.  */
1806     }
1807   else if (within_current_scope && b->exp)
1808     {
1809       int pc = 0;
1810       struct value *val_chain, *v, *result, *next;
1811       struct program_space *frame_pspace;
1812
1813       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1814
1815       /* Avoid setting b->val if it's already set.  The meaning of
1816          b->val is 'the last value' user saw, and we should update
1817          it only if we reported that last value to user.  As it
1818          happens, the code that reports it updates b->val directly.
1819          We don't keep track of the memory value for masked
1820          watchpoints.  */
1821       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1822         {
1823           b->val = v;
1824           b->val_valid = 1;
1825         }
1826
1827       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1828
1829       /* Look at each value on the value chain.  */
1830       for (v = val_chain; v; v = value_next (v))
1831         {
1832           /* If it's a memory location, and GDB actually needed
1833              its contents to evaluate the expression, then we
1834              must watch it.  If the first value returned is
1835              still lazy, that means an error occurred reading it;
1836              watch it anyway in case it becomes readable.  */
1837           if (VALUE_LVAL (v) == lval_memory
1838               && (v == val_chain || ! value_lazy (v)))
1839             {
1840               struct type *vtype = check_typedef (value_type (v));
1841
1842               /* We only watch structs and arrays if user asked
1843                  for it explicitly, never if they just happen to
1844                  appear in the middle of some value chain.  */
1845               if (v == result
1846                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1847                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1848                 {
1849                   CORE_ADDR addr;
1850                   int type;
1851                   struct bp_location *loc, **tmp;
1852
1853                   addr = value_address (v);
1854                   type = hw_write;
1855                   if (b->base.type == bp_read_watchpoint)
1856                     type = hw_read;
1857                   else if (b->base.type == bp_access_watchpoint)
1858                     type = hw_access;
1859
1860                   loc = allocate_bp_location (&b->base);
1861                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1862                     ;
1863                   *tmp = loc;
1864                   loc->gdbarch = get_type_arch (value_type (v));
1865
1866                   loc->pspace = frame_pspace;
1867                   loc->address = addr;
1868                   loc->length = TYPE_LENGTH (value_type (v));
1869                   loc->watchpoint_type = type;
1870                 }
1871             }
1872         }
1873
1874       /* Change the type of breakpoint between hardware assisted or
1875          an ordinary watchpoint depending on the hardware support
1876          and free hardware slots.  REPARSE is set when the inferior
1877          is started.  */
1878       if (reparse)
1879         {
1880           int reg_cnt;
1881           enum bp_loc_type loc_type;
1882           struct bp_location *bl;
1883
1884           reg_cnt = can_use_hardware_watchpoint (val_chain);
1885
1886           if (reg_cnt)
1887             {
1888               int i, target_resources_ok, other_type_used;
1889               enum bptype type;
1890
1891               /* Use an exact watchpoint when there's only one memory region to be
1892                  watched, and only one debug register is needed to watch it.  */
1893               b->exact = target_exact_watchpoints && reg_cnt == 1;
1894
1895               /* We need to determine how many resources are already
1896                  used for all other hardware watchpoints plus this one
1897                  to see if we still have enough resources to also fit
1898                  this watchpoint in as well.  */
1899
1900               /* If this is a software watchpoint, we try to turn it
1901                  to a hardware one -- count resources as if B was of
1902                  hardware watchpoint type.  */
1903               type = b->base.type;
1904               if (type == bp_watchpoint)
1905                 type = bp_hardware_watchpoint;
1906
1907               /* This watchpoint may or may not have been placed on
1908                  the list yet at this point (it won't be in the list
1909                  if we're trying to create it for the first time,
1910                  through watch_command), so always account for it
1911                  manually.  */
1912
1913               /* Count resources used by all watchpoints except B.  */
1914               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1915
1916               /* Add in the resources needed for B.  */
1917               i += hw_watchpoint_use_count (&b->base);
1918
1919               target_resources_ok
1920                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1921               if (target_resources_ok <= 0)
1922                 {
1923                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1924
1925                   if (target_resources_ok == 0 && !sw_mode)
1926                     error (_("Target does not support this type of "
1927                              "hardware watchpoint."));
1928                   else if (target_resources_ok < 0 && !sw_mode)
1929                     error (_("There are not enough available hardware "
1930                              "resources for this watchpoint."));
1931
1932                   /* Downgrade to software watchpoint.  */
1933                   b->base.type = bp_watchpoint;
1934                 }
1935               else
1936                 {
1937                   /* If this was a software watchpoint, we've just
1938                      found we have enough resources to turn it to a
1939                      hardware watchpoint.  Otherwise, this is a
1940                      nop.  */
1941                   b->base.type = type;
1942                 }
1943             }
1944           else if (!b->base.ops->works_in_software_mode (&b->base))
1945             error (_("Expression cannot be implemented with "
1946                      "read/access watchpoint."));
1947           else
1948             b->base.type = bp_watchpoint;
1949
1950           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1951                       : bp_loc_hardware_watchpoint);
1952           for (bl = b->base.loc; bl; bl = bl->next)
1953             bl->loc_type = loc_type;
1954         }
1955
1956       for (v = val_chain; v; v = next)
1957         {
1958           next = value_next (v);
1959           if (v != b->val)
1960             value_free (v);
1961         }
1962
1963       /* If a software watchpoint is not watching any memory, then the
1964          above left it without any location set up.  But,
1965          bpstat_stop_status requires a location to be able to report
1966          stops, so make sure there's at least a dummy one.  */
1967       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1968         {
1969           struct breakpoint *base = &b->base;
1970           base->loc = allocate_bp_location (base);
1971           base->loc->pspace = frame_pspace;
1972           base->loc->address = -1;
1973           base->loc->length = -1;
1974           base->loc->watchpoint_type = -1;
1975         }
1976     }
1977   else if (!within_current_scope)
1978     {
1979       printf_filtered (_("\
1980 Watchpoint %d deleted because the program has left the block\n\
1981 in which its expression is valid.\n"),
1982                        b->base.number);
1983       watchpoint_del_at_next_stop (b);
1984     }
1985
1986   /* Restore the selected frame.  */
1987   if (frame_saved)
1988     select_frame (frame_find_by_id (saved_frame_id));
1989 }
1990
1991
1992 /* Returns 1 iff breakpoint location should be
1993    inserted in the inferior.  We don't differentiate the type of BL's owner
1994    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1995    breakpoint_ops is not defined, because in insert_bp_location,
1996    tracepoint's insert_location will not be called.  */
1997 static int
1998 should_be_inserted (struct bp_location *bl)
1999 {
2000   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2001     return 0;
2002
2003   if (bl->owner->disposition == disp_del_at_next_stop)
2004     return 0;
2005
2006   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2007     return 0;
2008
2009   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2010     return 0;
2011
2012   /* This is set for example, when we're attached to the parent of a
2013      vfork, and have detached from the child.  The child is running
2014      free, and we expect it to do an exec or exit, at which point the
2015      OS makes the parent schedulable again (and the target reports
2016      that the vfork is done).  Until the child is done with the shared
2017      memory region, do not insert breakpoints in the parent, otherwise
2018      the child could still trip on the parent's breakpoints.  Since
2019      the parent is blocked anyway, it won't miss any breakpoint.  */
2020   if (bl->pspace->breakpoints_not_allowed)
2021     return 0;
2022
2023   return 1;
2024 }
2025
2026 /* Same as should_be_inserted but does the check assuming
2027    that the location is not duplicated.  */
2028
2029 static int
2030 unduplicated_should_be_inserted (struct bp_location *bl)
2031 {
2032   int result;
2033   const int save_duplicate = bl->duplicate;
2034
2035   bl->duplicate = 0;
2036   result = should_be_inserted (bl);
2037   bl->duplicate = save_duplicate;
2038   return result;
2039 }
2040
2041 /* Parses a conditional described by an expression COND into an
2042    agent expression bytecode suitable for evaluation
2043    by the bytecode interpreter.  Return NULL if there was
2044    any error during parsing.  */
2045
2046 static struct agent_expr *
2047 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2048 {
2049   struct agent_expr *aexpr = NULL;
2050   struct cleanup *old_chain = NULL;
2051   volatile struct gdb_exception ex;
2052
2053   if (!cond)
2054     return NULL;
2055
2056   /* We don't want to stop processing, so catch any errors
2057      that may show up.  */
2058   TRY_CATCH (ex, RETURN_MASK_ERROR)
2059     {
2060       aexpr = gen_eval_for_expr (scope, cond);
2061     }
2062
2063   if (ex.reason < 0)
2064     {
2065       /* If we got here, it means the condition could not be parsed to a valid
2066          bytecode expression and thus can't be evaluated on the target's side.
2067          It's no use iterating through the conditions.  */
2068       return NULL;
2069     }
2070
2071   /* We have a valid agent expression.  */
2072   return aexpr;
2073 }
2074
2075 /* Based on location BL, create a list of breakpoint conditions to be
2076    passed on to the target.  If we have duplicated locations with different
2077    conditions, we will add such conditions to the list.  The idea is that the
2078    target will evaluate the list of conditions and will only notify GDB when
2079    one of them is true.  */
2080
2081 static void
2082 build_target_condition_list (struct bp_location *bl)
2083 {
2084   struct bp_location **locp = NULL, **loc2p;
2085   int null_condition_or_parse_error = 0;
2086   int modified = bl->needs_update;
2087   struct bp_location *loc;
2088
2089   /* This is only meaningful if the target is
2090      evaluating conditions and if the user has
2091      opted for condition evaluation on the target's
2092      side.  */
2093   if (gdb_evaluates_breakpoint_condition_p ()
2094       || !target_supports_evaluation_of_breakpoint_conditions ())
2095     return;
2096
2097   /* Do a first pass to check for locations with no assigned
2098      conditions or conditions that fail to parse to a valid agent expression
2099      bytecode.  If any of these happen, then it's no use to send conditions
2100      to the target since this location will always trigger and generate a
2101      response back to GDB.  */
2102   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2103     {
2104       loc = (*loc2p);
2105       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2106         {
2107           if (modified)
2108             {
2109               struct agent_expr *aexpr;
2110
2111               /* Re-parse the conditions since something changed.  In that
2112                  case we already freed the condition bytecodes (see
2113                  force_breakpoint_reinsertion).  We just
2114                  need to parse the condition to bytecodes again.  */
2115               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2116               loc->cond_bytecode = aexpr;
2117
2118               /* Check if we managed to parse the conditional expression
2119                  correctly.  If not, we will not send this condition
2120                  to the target.  */
2121               if (aexpr)
2122                 continue;
2123             }
2124
2125           /* If we have a NULL bytecode expression, it means something
2126              went wrong or we have a null condition expression.  */
2127           if (!loc->cond_bytecode)
2128             {
2129               null_condition_or_parse_error = 1;
2130               break;
2131             }
2132         }
2133     }
2134
2135   /* If any of these happened, it means we will have to evaluate the conditions
2136      for the location's address on gdb's side.  It is no use keeping bytecodes
2137      for all the other duplicate locations, thus we free all of them here.
2138
2139      This is so we have a finer control over which locations' conditions are
2140      being evaluated by GDB or the remote stub.  */
2141   if (null_condition_or_parse_error)
2142     {
2143       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2144         {
2145           loc = (*loc2p);
2146           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2147             {
2148               /* Only go as far as the first NULL bytecode is
2149                  located.  */
2150               if (!loc->cond_bytecode)
2151                 return;
2152
2153               free_agent_expr (loc->cond_bytecode);
2154               loc->cond_bytecode = NULL;
2155             }
2156         }
2157     }
2158
2159   /* No NULL conditions or failed bytecode generation.  Build a condition list
2160      for this location's address.  */
2161   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2162     {
2163       loc = (*loc2p);
2164       if (loc->cond
2165           && is_breakpoint (loc->owner)
2166           && loc->pspace->num == bl->pspace->num
2167           && loc->owner->enable_state == bp_enabled
2168           && loc->enabled)
2169         /* Add the condition to the vector.  This will be used later to send the
2170            conditions to the target.  */
2171         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2172                        loc->cond_bytecode);
2173     }
2174
2175   return;
2176 }
2177
2178 /* Parses a command described by string CMD into an agent expression
2179    bytecode suitable for evaluation by the bytecode interpreter.
2180    Return NULL if there was any error during parsing.  */
2181
2182 static struct agent_expr *
2183 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2184 {
2185   struct cleanup *old_cleanups = 0;
2186   struct expression *expr, **argvec;
2187   struct agent_expr *aexpr = NULL;
2188   struct cleanup *old_chain = NULL;
2189   volatile struct gdb_exception ex;
2190   char *cmdrest;
2191   char *format_start, *format_end;
2192   struct format_piece *fpieces;
2193   int nargs;
2194   struct gdbarch *gdbarch = get_current_arch ();
2195
2196   if (!cmd)
2197     return NULL;
2198
2199   cmdrest = cmd;
2200
2201   if (*cmdrest == ',')
2202     ++cmdrest;
2203   cmdrest = skip_spaces (cmdrest);
2204
2205   if (*cmdrest++ != '"')
2206     error (_("No format string following the location"));
2207
2208   format_start = cmdrest;
2209
2210   fpieces = parse_format_string (&cmdrest);
2211
2212   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2213
2214   format_end = cmdrest;
2215
2216   if (*cmdrest++ != '"')
2217     error (_("Bad format string, non-terminated '\"'."));
2218   
2219   cmdrest = skip_spaces (cmdrest);
2220
2221   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2222     error (_("Invalid argument syntax"));
2223
2224   if (*cmdrest == ',')
2225     cmdrest++;
2226   cmdrest = skip_spaces (cmdrest);
2227
2228   /* For each argument, make an expression.  */
2229
2230   argvec = (struct expression **) alloca (strlen (cmd)
2231                                          * sizeof (struct expression *));
2232
2233   nargs = 0;
2234   while (*cmdrest != '\0')
2235     {
2236       char *cmd1;
2237
2238       cmd1 = cmdrest;
2239       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2240       argvec[nargs++] = expr;
2241       cmdrest = cmd1;
2242       if (*cmdrest == ',')
2243         ++cmdrest;
2244     }
2245
2246   /* We don't want to stop processing, so catch any errors
2247      that may show up.  */
2248   TRY_CATCH (ex, RETURN_MASK_ERROR)
2249     {
2250       aexpr = gen_printf (scope, gdbarch, 0, 0,
2251                           format_start, format_end - format_start,
2252                           fpieces, nargs, argvec);
2253     }
2254
2255   if (ex.reason < 0)
2256     {
2257       /* If we got here, it means the command could not be parsed to a valid
2258          bytecode expression and thus can't be evaluated on the target's side.
2259          It's no use iterating through the other commands.  */
2260       return NULL;
2261     }
2262
2263   do_cleanups (old_cleanups);
2264
2265   /* We have a valid agent expression, return it.  */
2266   return aexpr;
2267 }
2268
2269 /* Based on location BL, create a list of breakpoint commands to be
2270    passed on to the target.  If we have duplicated locations with
2271    different commands, we will add any such to the list.  */
2272
2273 static void
2274 build_target_command_list (struct bp_location *bl)
2275 {
2276   struct bp_location **locp = NULL, **loc2p;
2277   int null_command_or_parse_error = 0;
2278   int modified = bl->needs_update;
2279   struct bp_location *loc;
2280
2281   /* For now, limit to agent-style dprintf breakpoints.  */
2282   if (bl->owner->type != bp_dprintf
2283       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2284     return;
2285
2286   if (!target_can_run_breakpoint_commands ())
2287     return;
2288
2289   /* Do a first pass to check for locations with no assigned
2290      conditions or conditions that fail to parse to a valid agent expression
2291      bytecode.  If any of these happen, then it's no use to send conditions
2292      to the target since this location will always trigger and generate a
2293      response back to GDB.  */
2294   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2295     {
2296       loc = (*loc2p);
2297       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2298         {
2299           if (modified)
2300             {
2301               struct agent_expr *aexpr;
2302
2303               /* Re-parse the commands since something changed.  In that
2304                  case we already freed the command bytecodes (see
2305                  force_breakpoint_reinsertion).  We just
2306                  need to parse the command to bytecodes again.  */
2307               aexpr = parse_cmd_to_aexpr (bl->address,
2308                                           loc->owner->extra_string);
2309               loc->cmd_bytecode = aexpr;
2310
2311               if (!aexpr)
2312                 continue;
2313             }
2314
2315           /* If we have a NULL bytecode expression, it means something
2316              went wrong or we have a null command expression.  */
2317           if (!loc->cmd_bytecode)
2318             {
2319               null_command_or_parse_error = 1;
2320               break;
2321             }
2322         }
2323     }
2324
2325   /* If anything failed, then we're not doing target-side commands,
2326      and so clean up.  */
2327   if (null_command_or_parse_error)
2328     {
2329       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2330         {
2331           loc = (*loc2p);
2332           if (is_breakpoint (loc->owner)
2333               && loc->pspace->num == bl->pspace->num)
2334             {
2335               /* Only go as far as the first NULL bytecode is
2336                  located.  */
2337               if (!loc->cond_bytecode)
2338                 return;
2339
2340               free_agent_expr (loc->cond_bytecode);
2341               loc->cond_bytecode = NULL;
2342             }
2343         }
2344     }
2345
2346   /* No NULL commands or failed bytecode generation.  Build a command list
2347      for this location's address.  */
2348   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2349     {
2350       loc = (*loc2p);
2351       if (loc->owner->extra_string
2352           && is_breakpoint (loc->owner)
2353           && loc->pspace->num == bl->pspace->num
2354           && loc->owner->enable_state == bp_enabled
2355           && loc->enabled)
2356         /* Add the command to the vector.  This will be used later
2357            to send the commands to the target.  */
2358         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2359                        loc->cmd_bytecode);
2360     }
2361
2362   bl->target_info.persist = 0;
2363   /* Maybe flag this location as persistent.  */
2364   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2365     bl->target_info.persist = 1;
2366 }
2367
2368 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2369    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2370    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2371    Returns 0 for success, 1 if the bp_location type is not supported or
2372    -1 for failure.
2373
2374    NOTE drow/2003-09-09: This routine could be broken down to an
2375    object-style method for each breakpoint or catchpoint type.  */
2376 static int
2377 insert_bp_location (struct bp_location *bl,
2378                     struct ui_file *tmp_error_stream,
2379                     int *disabled_breaks,
2380                     int *hw_breakpoint_error,
2381                     int *hw_bp_error_explained_already)
2382 {
2383   int val = 0;
2384   char *hw_bp_err_string = NULL;
2385   struct gdb_exception e;
2386
2387   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2388     return 0;
2389
2390   /* Note we don't initialize bl->target_info, as that wipes out
2391      the breakpoint location's shadow_contents if the breakpoint
2392      is still inserted at that location.  This in turn breaks
2393      target_read_memory which depends on these buffers when
2394      a memory read is requested at the breakpoint location:
2395      Once the target_info has been wiped, we fail to see that
2396      we have a breakpoint inserted at that address and thus
2397      read the breakpoint instead of returning the data saved in
2398      the breakpoint location's shadow contents.  */
2399   bl->target_info.placed_address = bl->address;
2400   bl->target_info.placed_address_space = bl->pspace->aspace;
2401   bl->target_info.length = bl->length;
2402
2403   /* When working with target-side conditions, we must pass all the conditions
2404      for the same breakpoint address down to the target since GDB will not
2405      insert those locations.  With a list of breakpoint conditions, the target
2406      can decide when to stop and notify GDB.  */
2407
2408   if (is_breakpoint (bl->owner))
2409     {
2410       build_target_condition_list (bl);
2411       build_target_command_list (bl);
2412       /* Reset the modification marker.  */
2413       bl->needs_update = 0;
2414     }
2415
2416   if (bl->loc_type == bp_loc_software_breakpoint
2417       || bl->loc_type == bp_loc_hardware_breakpoint)
2418     {
2419       if (bl->owner->type != bp_hardware_breakpoint)
2420         {
2421           /* If the explicitly specified breakpoint type
2422              is not hardware breakpoint, check the memory map to see
2423              if the breakpoint address is in read only memory or not.
2424
2425              Two important cases are:
2426              - location type is not hardware breakpoint, memory
2427              is readonly.  We change the type of the location to
2428              hardware breakpoint.
2429              - location type is hardware breakpoint, memory is
2430              read-write.  This means we've previously made the
2431              location hardware one, but then the memory map changed,
2432              so we undo.
2433              
2434              When breakpoints are removed, remove_breakpoints will use
2435              location types we've just set here, the only possible
2436              problem is that memory map has changed during running
2437              program, but it's not going to work anyway with current
2438              gdb.  */
2439           struct mem_region *mr 
2440             = lookup_mem_region (bl->target_info.placed_address);
2441           
2442           if (mr)
2443             {
2444               if (automatic_hardware_breakpoints)
2445                 {
2446                   enum bp_loc_type new_type;
2447                   
2448                   if (mr->attrib.mode != MEM_RW)
2449                     new_type = bp_loc_hardware_breakpoint;
2450                   else 
2451                     new_type = bp_loc_software_breakpoint;
2452                   
2453                   if (new_type != bl->loc_type)
2454                     {
2455                       static int said = 0;
2456
2457                       bl->loc_type = new_type;
2458                       if (!said)
2459                         {
2460                           fprintf_filtered (gdb_stdout,
2461                                             _("Note: automatically using "
2462                                               "hardware breakpoints for "
2463                                               "read-only addresses.\n"));
2464                           said = 1;
2465                         }
2466                     }
2467                 }
2468               else if (bl->loc_type == bp_loc_software_breakpoint
2469                        && mr->attrib.mode != MEM_RW)        
2470                 warning (_("cannot set software breakpoint "
2471                            "at readonly address %s"),
2472                          paddress (bl->gdbarch, bl->address));
2473             }
2474         }
2475         
2476       /* First check to see if we have to handle an overlay.  */
2477       if (overlay_debugging == ovly_off
2478           || bl->section == NULL
2479           || !(section_is_overlay (bl->section)))
2480         {
2481           /* No overlay handling: just set the breakpoint.  */
2482           TRY_CATCH (e, RETURN_MASK_ALL)
2483             {
2484               val = bl->owner->ops->insert_location (bl);
2485             }
2486           if (e.reason < 0)
2487             {
2488               val = 1;
2489               hw_bp_err_string = (char *) e.message;
2490             }
2491         }
2492       else
2493         {
2494           /* This breakpoint is in an overlay section.
2495              Shall we set a breakpoint at the LMA?  */
2496           if (!overlay_events_enabled)
2497             {
2498               /* Yes -- overlay event support is not active, 
2499                  so we must try to set a breakpoint at the LMA.
2500                  This will not work for a hardware breakpoint.  */
2501               if (bl->loc_type == bp_loc_hardware_breakpoint)
2502                 warning (_("hardware breakpoint %d not supported in overlay!"),
2503                          bl->owner->number);
2504               else
2505                 {
2506                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2507                                                              bl->section);
2508                   /* Set a software (trap) breakpoint at the LMA.  */
2509                   bl->overlay_target_info = bl->target_info;
2510                   bl->overlay_target_info.placed_address = addr;
2511                   val = target_insert_breakpoint (bl->gdbarch,
2512                                                   &bl->overlay_target_info);
2513                   if (val != 0)
2514                     fprintf_unfiltered (tmp_error_stream,
2515                                         "Overlay breakpoint %d "
2516                                         "failed: in ROM?\n",
2517                                         bl->owner->number);
2518                 }
2519             }
2520           /* Shall we set a breakpoint at the VMA? */
2521           if (section_is_mapped (bl->section))
2522             {
2523               /* Yes.  This overlay section is mapped into memory.  */
2524               TRY_CATCH (e, RETURN_MASK_ALL)
2525                 {
2526                   val = bl->owner->ops->insert_location (bl);
2527                 }
2528               if (e.reason < 0)
2529                 {
2530                   val = 1;
2531                   hw_bp_err_string = (char *) e.message;
2532                 }
2533             }
2534           else
2535             {
2536               /* No.  This breakpoint will not be inserted.  
2537                  No error, but do not mark the bp as 'inserted'.  */
2538               return 0;
2539             }
2540         }
2541
2542       if (val)
2543         {
2544           /* Can't set the breakpoint.  */
2545           if (solib_name_from_address (bl->pspace, bl->address))
2546             {
2547               /* See also: disable_breakpoints_in_shlibs.  */
2548               val = 0;
2549               bl->shlib_disabled = 1;
2550               observer_notify_breakpoint_modified (bl->owner);
2551               if (!*disabled_breaks)
2552                 {
2553                   fprintf_unfiltered (tmp_error_stream, 
2554                                       "Cannot insert breakpoint %d.\n", 
2555                                       bl->owner->number);
2556                   fprintf_unfiltered (tmp_error_stream, 
2557                                       "Temporarily disabling shared "
2558                                       "library breakpoints:\n");
2559                 }
2560               *disabled_breaks = 1;
2561               fprintf_unfiltered (tmp_error_stream,
2562                                   "breakpoint #%d\n", bl->owner->number);
2563             }
2564           else
2565             {
2566               if (bl->loc_type == bp_loc_hardware_breakpoint)
2567                 {
2568                   *hw_breakpoint_error = 1;
2569                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2570                   fprintf_unfiltered (tmp_error_stream,
2571                                       "Cannot insert hardware breakpoint %d%s",
2572                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2573                   if (hw_bp_err_string)
2574                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2575                 }
2576               else
2577                 {
2578                   fprintf_unfiltered (tmp_error_stream, 
2579                                       "Cannot insert breakpoint %d.\n", 
2580                                       bl->owner->number);
2581                   fprintf_filtered (tmp_error_stream, 
2582                                     "Error accessing memory address ");
2583                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2584                                   tmp_error_stream);
2585                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2586                                     safe_strerror (val));
2587                 }
2588
2589             }
2590         }
2591       else
2592         bl->inserted = 1;
2593
2594       return val;
2595     }
2596
2597   else if (bl->loc_type == bp_loc_hardware_watchpoint
2598            /* NOTE drow/2003-09-08: This state only exists for removing
2599               watchpoints.  It's not clear that it's necessary...  */
2600            && bl->owner->disposition != disp_del_at_next_stop)
2601     {
2602       gdb_assert (bl->owner->ops != NULL
2603                   && bl->owner->ops->insert_location != NULL);
2604
2605       val = bl->owner->ops->insert_location (bl);
2606
2607       /* If trying to set a read-watchpoint, and it turns out it's not
2608          supported, try emulating one with an access watchpoint.  */
2609       if (val == 1 && bl->watchpoint_type == hw_read)
2610         {
2611           struct bp_location *loc, **loc_temp;
2612
2613           /* But don't try to insert it, if there's already another
2614              hw_access location that would be considered a duplicate
2615              of this one.  */
2616           ALL_BP_LOCATIONS (loc, loc_temp)
2617             if (loc != bl
2618                 && loc->watchpoint_type == hw_access
2619                 && watchpoint_locations_match (bl, loc))
2620               {
2621                 bl->duplicate = 1;
2622                 bl->inserted = 1;
2623                 bl->target_info = loc->target_info;
2624                 bl->watchpoint_type = hw_access;
2625                 val = 0;
2626                 break;
2627               }
2628
2629           if (val == 1)
2630             {
2631               bl->watchpoint_type = hw_access;
2632               val = bl->owner->ops->insert_location (bl);
2633
2634               if (val)
2635                 /* Back to the original value.  */
2636                 bl->watchpoint_type = hw_read;
2637             }
2638         }
2639
2640       bl->inserted = (val == 0);
2641     }
2642
2643   else if (bl->owner->type == bp_catchpoint)
2644     {
2645       gdb_assert (bl->owner->ops != NULL
2646                   && bl->owner->ops->insert_location != NULL);
2647
2648       val = bl->owner->ops->insert_location (bl);
2649       if (val)
2650         {
2651           bl->owner->enable_state = bp_disabled;
2652
2653           if (val == 1)
2654             warning (_("\
2655 Error inserting catchpoint %d: Your system does not support this type\n\
2656 of catchpoint."), bl->owner->number);
2657           else
2658             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2659         }
2660
2661       bl->inserted = (val == 0);
2662
2663       /* We've already printed an error message if there was a problem
2664          inserting this catchpoint, and we've disabled the catchpoint,
2665          so just return success.  */
2666       return 0;
2667     }
2668
2669   return 0;
2670 }
2671
2672 /* This function is called when program space PSPACE is about to be
2673    deleted.  It takes care of updating breakpoints to not reference
2674    PSPACE anymore.  */
2675
2676 void
2677 breakpoint_program_space_exit (struct program_space *pspace)
2678 {
2679   struct breakpoint *b, *b_temp;
2680   struct bp_location *loc, **loc_temp;
2681
2682   /* Remove any breakpoint that was set through this program space.  */
2683   ALL_BREAKPOINTS_SAFE (b, b_temp)
2684     {
2685       if (b->pspace == pspace)
2686         delete_breakpoint (b);
2687     }
2688
2689   /* Breakpoints set through other program spaces could have locations
2690      bound to PSPACE as well.  Remove those.  */
2691   ALL_BP_LOCATIONS (loc, loc_temp)
2692     {
2693       struct bp_location *tmp;
2694
2695       if (loc->pspace == pspace)
2696         {
2697           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2698           if (loc->owner->loc == loc)
2699             loc->owner->loc = loc->next;
2700           else
2701             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2702               if (tmp->next == loc)
2703                 {
2704                   tmp->next = loc->next;
2705                   break;
2706                 }
2707         }
2708     }
2709
2710   /* Now update the global location list to permanently delete the
2711      removed locations above.  */
2712   update_global_location_list (0);
2713 }
2714
2715 /* Make sure all breakpoints are inserted in inferior.
2716    Throws exception on any error.
2717    A breakpoint that is already inserted won't be inserted
2718    again, so calling this function twice is safe.  */
2719 void
2720 insert_breakpoints (void)
2721 {
2722   struct breakpoint *bpt;
2723
2724   ALL_BREAKPOINTS (bpt)
2725     if (is_hardware_watchpoint (bpt))
2726       {
2727         struct watchpoint *w = (struct watchpoint *) bpt;
2728
2729         update_watchpoint (w, 0 /* don't reparse.  */);
2730       }
2731
2732   update_global_location_list (1);
2733
2734   /* update_global_location_list does not insert breakpoints when
2735      always_inserted_mode is not enabled.  Explicitly insert them
2736      now.  */
2737   if (!breakpoints_always_inserted_mode ())
2738     insert_breakpoint_locations ();
2739 }
2740
2741 /* Invoke CALLBACK for each of bp_location.  */
2742
2743 void
2744 iterate_over_bp_locations (walk_bp_location_callback callback)
2745 {
2746   struct bp_location *loc, **loc_tmp;
2747
2748   ALL_BP_LOCATIONS (loc, loc_tmp)
2749     {
2750       callback (loc, NULL);
2751     }
2752 }
2753
2754 /* This is used when we need to synch breakpoint conditions between GDB and the
2755    target.  It is the case with deleting and disabling of breakpoints when using
2756    always-inserted mode.  */
2757
2758 static void
2759 update_inserted_breakpoint_locations (void)
2760 {
2761   struct bp_location *bl, **blp_tmp;
2762   int error_flag = 0;
2763   int val = 0;
2764   int disabled_breaks = 0;
2765   int hw_breakpoint_error = 0;
2766   int hw_bp_details_reported = 0;
2767
2768   struct ui_file *tmp_error_stream = mem_fileopen ();
2769   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2770
2771   /* Explicitly mark the warning -- this will only be printed if
2772      there was an error.  */
2773   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2774
2775   save_current_space_and_thread ();
2776
2777   ALL_BP_LOCATIONS (bl, blp_tmp)
2778     {
2779       /* We only want to update software breakpoints and hardware
2780          breakpoints.  */
2781       if (!is_breakpoint (bl->owner))
2782         continue;
2783
2784       /* We only want to update locations that are already inserted
2785          and need updating.  This is to avoid unwanted insertion during
2786          deletion of breakpoints.  */
2787       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2788         continue;
2789
2790       switch_to_program_space_and_thread (bl->pspace);
2791
2792       /* For targets that support global breakpoints, there's no need
2793          to select an inferior to insert breakpoint to.  In fact, even
2794          if we aren't attached to any process yet, we should still
2795          insert breakpoints.  */
2796       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2797           && ptid_equal (inferior_ptid, null_ptid))
2798         continue;
2799
2800       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2801                                     &hw_breakpoint_error, &hw_bp_details_reported);
2802       if (val)
2803         error_flag = val;
2804     }
2805
2806   if (error_flag)
2807     {
2808       target_terminal_ours_for_output ();
2809       error_stream (tmp_error_stream);
2810     }
2811
2812   do_cleanups (cleanups);
2813 }
2814
2815 /* Used when starting or continuing the program.  */
2816
2817 static void
2818 insert_breakpoint_locations (void)
2819 {
2820   struct breakpoint *bpt;
2821   struct bp_location *bl, **blp_tmp;
2822   int error_flag = 0;
2823   int val = 0;
2824   int disabled_breaks = 0;
2825   int hw_breakpoint_error = 0;
2826   int hw_bp_error_explained_already = 0;
2827
2828   struct ui_file *tmp_error_stream = mem_fileopen ();
2829   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2830   
2831   /* Explicitly mark the warning -- this will only be printed if
2832      there was an error.  */
2833   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2834
2835   save_current_space_and_thread ();
2836
2837   ALL_BP_LOCATIONS (bl, blp_tmp)
2838     {
2839       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2840         continue;
2841
2842       /* There is no point inserting thread-specific breakpoints if
2843          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2844          has BL->OWNER always non-NULL.  */
2845       if (bl->owner->thread != -1
2846           && !valid_thread_id (bl->owner->thread))
2847         continue;
2848
2849       switch_to_program_space_and_thread (bl->pspace);
2850
2851       /* For targets that support global breakpoints, there's no need
2852          to select an inferior to insert breakpoint to.  In fact, even
2853          if we aren't attached to any process yet, we should still
2854          insert breakpoints.  */
2855       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2856           && ptid_equal (inferior_ptid, null_ptid))
2857         continue;
2858
2859       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2860                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2861       if (val)
2862         error_flag = val;
2863     }
2864
2865   /* If we failed to insert all locations of a watchpoint, remove
2866      them, as half-inserted watchpoint is of limited use.  */
2867   ALL_BREAKPOINTS (bpt)  
2868     {
2869       int some_failed = 0;
2870       struct bp_location *loc;
2871
2872       if (!is_hardware_watchpoint (bpt))
2873         continue;
2874
2875       if (!breakpoint_enabled (bpt))
2876         continue;
2877
2878       if (bpt->disposition == disp_del_at_next_stop)
2879         continue;
2880       
2881       for (loc = bpt->loc; loc; loc = loc->next)
2882         if (!loc->inserted && should_be_inserted (loc))
2883           {
2884             some_failed = 1;
2885             break;
2886           }
2887       if (some_failed)
2888         {
2889           for (loc = bpt->loc; loc; loc = loc->next)
2890             if (loc->inserted)
2891               remove_breakpoint (loc, mark_uninserted);
2892
2893           hw_breakpoint_error = 1;
2894           fprintf_unfiltered (tmp_error_stream,
2895                               "Could not insert hardware watchpoint %d.\n", 
2896                               bpt->number);
2897           error_flag = -1;
2898         }
2899     }
2900
2901   if (error_flag)
2902     {
2903       /* If a hardware breakpoint or watchpoint was inserted, add a
2904          message about possibly exhausted resources.  */
2905       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2906         {
2907           fprintf_unfiltered (tmp_error_stream, 
2908                               "Could not insert hardware breakpoints:\n\
2909 You may have requested too many hardware breakpoints/watchpoints.\n");
2910         }
2911       target_terminal_ours_for_output ();
2912       error_stream (tmp_error_stream);
2913     }
2914
2915   do_cleanups (cleanups);
2916 }
2917
2918 /* Used when the program stops.
2919    Returns zero if successful, or non-zero if there was a problem
2920    removing a breakpoint location.  */
2921
2922 int
2923 remove_breakpoints (void)
2924 {
2925   struct bp_location *bl, **blp_tmp;
2926   int val = 0;
2927
2928   ALL_BP_LOCATIONS (bl, blp_tmp)
2929   {
2930     if (bl->inserted && !is_tracepoint (bl->owner))
2931       val |= remove_breakpoint (bl, mark_uninserted);
2932   }
2933   return val;
2934 }
2935
2936 /* Remove breakpoints of process PID.  */
2937
2938 int
2939 remove_breakpoints_pid (int pid)
2940 {
2941   struct bp_location *bl, **blp_tmp;
2942   int val;
2943   struct inferior *inf = find_inferior_pid (pid);
2944
2945   ALL_BP_LOCATIONS (bl, blp_tmp)
2946   {
2947     if (bl->pspace != inf->pspace)
2948       continue;
2949
2950     if (bl->owner->type == bp_dprintf)
2951       continue;
2952
2953     if (bl->inserted)
2954       {
2955         val = remove_breakpoint (bl, mark_uninserted);
2956         if (val != 0)
2957           return val;
2958       }
2959   }
2960   return 0;
2961 }
2962
2963 int
2964 reattach_breakpoints (int pid)
2965 {
2966   struct cleanup *old_chain;
2967   struct bp_location *bl, **blp_tmp;
2968   int val;
2969   struct ui_file *tmp_error_stream;
2970   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2971   struct inferior *inf;
2972   struct thread_info *tp;
2973
2974   tp = any_live_thread_of_process (pid);
2975   if (tp == NULL)
2976     return 1;
2977
2978   inf = find_inferior_pid (pid);
2979   old_chain = save_inferior_ptid ();
2980
2981   inferior_ptid = tp->ptid;
2982
2983   tmp_error_stream = mem_fileopen ();
2984   make_cleanup_ui_file_delete (tmp_error_stream);
2985
2986   ALL_BP_LOCATIONS (bl, blp_tmp)
2987   {
2988     if (bl->pspace != inf->pspace)
2989       continue;
2990
2991     if (bl->inserted)
2992       {
2993         bl->inserted = 0;
2994         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2995         if (val != 0)
2996           {
2997             do_cleanups (old_chain);
2998             return val;
2999           }
3000       }
3001   }
3002   do_cleanups (old_chain);
3003   return 0;
3004 }
3005
3006 static int internal_breakpoint_number = -1;
3007
3008 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3009    If INTERNAL is non-zero, the breakpoint number will be populated
3010    from internal_breakpoint_number and that variable decremented.
3011    Otherwise the breakpoint number will be populated from
3012    breakpoint_count and that value incremented.  Internal breakpoints
3013    do not set the internal var bpnum.  */
3014 static void
3015 set_breakpoint_number (int internal, struct breakpoint *b)
3016 {
3017   if (internal)
3018     b->number = internal_breakpoint_number--;
3019   else
3020     {
3021       set_breakpoint_count (breakpoint_count + 1);
3022       b->number = breakpoint_count;
3023     }
3024 }
3025
3026 static struct breakpoint *
3027 create_internal_breakpoint (struct gdbarch *gdbarch,
3028                             CORE_ADDR address, enum bptype type,
3029                             const struct breakpoint_ops *ops)
3030 {
3031   struct symtab_and_line sal;
3032   struct breakpoint *b;
3033
3034   init_sal (&sal);              /* Initialize to zeroes.  */
3035
3036   sal.pc = address;
3037   sal.section = find_pc_overlay (sal.pc);
3038   sal.pspace = current_program_space;
3039
3040   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3041   b->number = internal_breakpoint_number--;
3042   b->disposition = disp_donttouch;
3043
3044   return b;
3045 }
3046
3047 static const char *const longjmp_names[] =
3048   {
3049     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3050   };
3051 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3052
3053 /* Per-objfile data private to breakpoint.c.  */
3054 struct breakpoint_objfile_data
3055 {
3056   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3057   struct minimal_symbol *overlay_msym;
3058
3059   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3060   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3061
3062   /* True if we have looked for longjmp probes.  */
3063   int longjmp_searched;
3064
3065   /* SystemTap probe points for longjmp (if any).  */
3066   VEC (probe_p) *longjmp_probes;
3067
3068   /* Minimal symbol for "std::terminate()" (if any).  */
3069   struct minimal_symbol *terminate_msym;
3070
3071   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3072   struct minimal_symbol *exception_msym;
3073
3074   /* True if we have looked for exception probes.  */
3075   int exception_searched;
3076
3077   /* SystemTap probe points for unwinding (if any).  */
3078   VEC (probe_p) *exception_probes;
3079 };
3080
3081 static const struct objfile_data *breakpoint_objfile_key;
3082
3083 /* Minimal symbol not found sentinel.  */
3084 static struct minimal_symbol msym_not_found;
3085
3086 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3087
3088 static int
3089 msym_not_found_p (const struct minimal_symbol *msym)
3090 {
3091   return msym == &msym_not_found;
3092 }
3093
3094 /* Return per-objfile data needed by breakpoint.c.
3095    Allocate the data if necessary.  */
3096
3097 static struct breakpoint_objfile_data *
3098 get_breakpoint_objfile_data (struct objfile *objfile)
3099 {
3100   struct breakpoint_objfile_data *bp_objfile_data;
3101
3102   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3103   if (bp_objfile_data == NULL)
3104     {
3105       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3106                                        sizeof (*bp_objfile_data));
3107
3108       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3109       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3110     }
3111   return bp_objfile_data;
3112 }
3113
3114 static void
3115 free_breakpoint_probes (struct objfile *obj, void *data)
3116 {
3117   struct breakpoint_objfile_data *bp_objfile_data = data;
3118
3119   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3120   VEC_free (probe_p, bp_objfile_data->exception_probes);
3121 }
3122
3123 static void
3124 create_overlay_event_breakpoint (void)
3125 {
3126   struct objfile *objfile;
3127   const char *const func_name = "_ovly_debug_event";
3128
3129   ALL_OBJFILES (objfile)
3130     {
3131       struct breakpoint *b;
3132       struct breakpoint_objfile_data *bp_objfile_data;
3133       CORE_ADDR addr;
3134
3135       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3136
3137       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3138         continue;
3139
3140       if (bp_objfile_data->overlay_msym == NULL)
3141         {
3142           struct minimal_symbol *m;
3143
3144           m = lookup_minimal_symbol_text (func_name, objfile);
3145           if (m == NULL)
3146             {
3147               /* Avoid future lookups in this objfile.  */
3148               bp_objfile_data->overlay_msym = &msym_not_found;
3149               continue;
3150             }
3151           bp_objfile_data->overlay_msym = m;
3152         }
3153
3154       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3155       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3156                                       bp_overlay_event,
3157                                       &internal_breakpoint_ops);
3158       b->addr_string = xstrdup (func_name);
3159
3160       if (overlay_debugging == ovly_auto)
3161         {
3162           b->enable_state = bp_enabled;
3163           overlay_events_enabled = 1;
3164         }
3165       else
3166        {
3167          b->enable_state = bp_disabled;
3168          overlay_events_enabled = 0;
3169        }
3170     }
3171   update_global_location_list (1);
3172 }
3173
3174 static void
3175 create_longjmp_master_breakpoint (void)
3176 {
3177   struct program_space *pspace;
3178   struct cleanup *old_chain;
3179
3180   old_chain = save_current_program_space ();
3181
3182   ALL_PSPACES (pspace)
3183   {
3184     struct objfile *objfile;
3185
3186     set_current_program_space (pspace);
3187
3188     ALL_OBJFILES (objfile)
3189     {
3190       int i;
3191       struct gdbarch *gdbarch;
3192       struct breakpoint_objfile_data *bp_objfile_data;
3193
3194       gdbarch = get_objfile_arch (objfile);
3195       if (!gdbarch_get_longjmp_target_p (gdbarch))
3196         continue;
3197
3198       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3199
3200       if (!bp_objfile_data->longjmp_searched)
3201         {
3202           bp_objfile_data->longjmp_probes
3203             = find_probes_in_objfile (objfile, "libc", "longjmp");
3204           bp_objfile_data->longjmp_searched = 1;
3205         }
3206
3207       if (bp_objfile_data->longjmp_probes != NULL)
3208         {
3209           int i;
3210           struct probe *probe;
3211           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3212
3213           for (i = 0;
3214                VEC_iterate (probe_p,
3215                             bp_objfile_data->longjmp_probes,
3216                             i, probe);
3217                ++i)
3218             {
3219               struct breakpoint *b;
3220
3221               b = create_internal_breakpoint (gdbarch, probe->address,
3222                                               bp_longjmp_master,
3223                                               &internal_breakpoint_ops);
3224               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3225               b->enable_state = bp_disabled;
3226             }
3227
3228           continue;
3229         }
3230
3231       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3232         {
3233           struct breakpoint *b;
3234           const char *func_name;
3235           CORE_ADDR addr;
3236
3237           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3238             continue;
3239
3240           func_name = longjmp_names[i];
3241           if (bp_objfile_data->longjmp_msym[i] == NULL)
3242             {
3243               struct minimal_symbol *m;
3244
3245               m = lookup_minimal_symbol_text (func_name, objfile);
3246               if (m == NULL)
3247                 {
3248                   /* Prevent future lookups in this objfile.  */
3249                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3250                   continue;
3251                 }
3252               bp_objfile_data->longjmp_msym[i] = m;
3253             }
3254
3255           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3256           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3257                                           &internal_breakpoint_ops);
3258           b->addr_string = xstrdup (func_name);
3259           b->enable_state = bp_disabled;
3260         }
3261     }
3262   }
3263   update_global_location_list (1);
3264
3265   do_cleanups (old_chain);
3266 }
3267
3268 /* Create a master std::terminate breakpoint.  */
3269 static void
3270 create_std_terminate_master_breakpoint (void)
3271 {
3272   struct program_space *pspace;
3273   struct cleanup *old_chain;
3274   const char *const func_name = "std::terminate()";
3275
3276   old_chain = save_current_program_space ();
3277
3278   ALL_PSPACES (pspace)
3279   {
3280     struct objfile *objfile;
3281     CORE_ADDR addr;
3282
3283     set_current_program_space (pspace);
3284
3285     ALL_OBJFILES (objfile)
3286     {
3287       struct breakpoint *b;
3288       struct breakpoint_objfile_data *bp_objfile_data;
3289
3290       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3291
3292       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3293         continue;
3294
3295       if (bp_objfile_data->terminate_msym == NULL)
3296         {
3297           struct minimal_symbol *m;
3298
3299           m = lookup_minimal_symbol (func_name, NULL, objfile);
3300           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3301                             && MSYMBOL_TYPE (m) != mst_file_text))
3302             {
3303               /* Prevent future lookups in this objfile.  */
3304               bp_objfile_data->terminate_msym = &msym_not_found;
3305               continue;
3306             }
3307           bp_objfile_data->terminate_msym = m;
3308         }
3309
3310       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3311       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3312                                       bp_std_terminate_master,
3313                                       &internal_breakpoint_ops);
3314       b->addr_string = xstrdup (func_name);
3315       b->enable_state = bp_disabled;
3316     }
3317   }
3318
3319   update_global_location_list (1);
3320
3321   do_cleanups (old_chain);
3322 }
3323
3324 /* Install a master breakpoint on the unwinder's debug hook.  */
3325
3326 static void
3327 create_exception_master_breakpoint (void)
3328 {
3329   struct objfile *objfile;
3330   const char *const func_name = "_Unwind_DebugHook";
3331
3332   ALL_OBJFILES (objfile)
3333     {
3334       struct breakpoint *b;
3335       struct gdbarch *gdbarch;
3336       struct breakpoint_objfile_data *bp_objfile_data;
3337       CORE_ADDR addr;
3338
3339       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3340
3341       /* We prefer the SystemTap probe point if it exists.  */
3342       if (!bp_objfile_data->exception_searched)
3343         {
3344           bp_objfile_data->exception_probes
3345             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3346           bp_objfile_data->exception_searched = 1;
3347         }
3348
3349       if (bp_objfile_data->exception_probes != NULL)
3350         {
3351           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3352           int i;
3353           struct probe *probe;
3354
3355           for (i = 0;
3356                VEC_iterate (probe_p,
3357                             bp_objfile_data->exception_probes,
3358                             i, probe);
3359                ++i)
3360             {
3361               struct breakpoint *b;
3362
3363               b = create_internal_breakpoint (gdbarch, probe->address,
3364                                               bp_exception_master,
3365                                               &internal_breakpoint_ops);
3366               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3367               b->enable_state = bp_disabled;
3368             }
3369
3370           continue;
3371         }
3372
3373       /* Otherwise, try the hook function.  */
3374
3375       if (msym_not_found_p (bp_objfile_data->exception_msym))
3376         continue;
3377
3378       gdbarch = get_objfile_arch (objfile);
3379
3380       if (bp_objfile_data->exception_msym == NULL)
3381         {
3382           struct minimal_symbol *debug_hook;
3383
3384           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3385           if (debug_hook == NULL)
3386             {
3387               bp_objfile_data->exception_msym = &msym_not_found;
3388               continue;
3389             }
3390
3391           bp_objfile_data->exception_msym = debug_hook;
3392         }
3393
3394       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3395       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3396                                                  &current_target);
3397       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3398                                       &internal_breakpoint_ops);
3399       b->addr_string = xstrdup (func_name);
3400       b->enable_state = bp_disabled;
3401     }
3402
3403   update_global_location_list (1);
3404 }
3405
3406 void
3407 update_breakpoints_after_exec (void)
3408 {
3409   struct breakpoint *b, *b_tmp;
3410   struct bp_location *bploc, **bplocp_tmp;
3411
3412   /* We're about to delete breakpoints from GDB's lists.  If the
3413      INSERTED flag is true, GDB will try to lift the breakpoints by
3414      writing the breakpoints' "shadow contents" back into memory.  The
3415      "shadow contents" are NOT valid after an exec, so GDB should not
3416      do that.  Instead, the target is responsible from marking
3417      breakpoints out as soon as it detects an exec.  We don't do that
3418      here instead, because there may be other attempts to delete
3419      breakpoints after detecting an exec and before reaching here.  */
3420   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3421     if (bploc->pspace == current_program_space)
3422       gdb_assert (!bploc->inserted);
3423
3424   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3425   {
3426     if (b->pspace != current_program_space)
3427       continue;
3428
3429     /* Solib breakpoints must be explicitly reset after an exec().  */
3430     if (b->type == bp_shlib_event)
3431       {
3432         delete_breakpoint (b);
3433         continue;
3434       }
3435
3436     /* JIT breakpoints must be explicitly reset after an exec().  */
3437     if (b->type == bp_jit_event)
3438       {
3439         delete_breakpoint (b);
3440         continue;
3441       }
3442
3443     /* Thread event breakpoints must be set anew after an exec(),
3444        as must overlay event and longjmp master breakpoints.  */
3445     if (b->type == bp_thread_event || b->type == bp_overlay_event
3446         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3447         || b->type == bp_exception_master)
3448       {
3449         delete_breakpoint (b);
3450         continue;
3451       }
3452
3453     /* Step-resume breakpoints are meaningless after an exec().  */
3454     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3455       {
3456         delete_breakpoint (b);
3457         continue;
3458       }
3459
3460     /* Longjmp and longjmp-resume breakpoints are also meaningless
3461        after an exec.  */
3462     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3463         || b->type == bp_longjmp_call_dummy
3464         || b->type == bp_exception || b->type == bp_exception_resume)
3465       {
3466         delete_breakpoint (b);
3467         continue;
3468       }
3469
3470     if (b->type == bp_catchpoint)
3471       {
3472         /* For now, none of the bp_catchpoint breakpoints need to
3473            do anything at this point.  In the future, if some of
3474            the catchpoints need to something, we will need to add
3475            a new method, and call this method from here.  */
3476         continue;
3477       }
3478
3479     /* bp_finish is a special case.  The only way we ought to be able
3480        to see one of these when an exec() has happened, is if the user
3481        caught a vfork, and then said "finish".  Ordinarily a finish just
3482        carries them to the call-site of the current callee, by setting
3483        a temporary bp there and resuming.  But in this case, the finish
3484        will carry them entirely through the vfork & exec.
3485
3486        We don't want to allow a bp_finish to remain inserted now.  But
3487        we can't safely delete it, 'cause finish_command has a handle to
3488        the bp on a bpstat, and will later want to delete it.  There's a
3489        chance (and I've seen it happen) that if we delete the bp_finish
3490        here, that its storage will get reused by the time finish_command
3491        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3492        We really must allow finish_command to delete a bp_finish.
3493
3494        In the absence of a general solution for the "how do we know
3495        it's safe to delete something others may have handles to?"
3496        problem, what we'll do here is just uninsert the bp_finish, and
3497        let finish_command delete it.
3498
3499        (We know the bp_finish is "doomed" in the sense that it's
3500        momentary, and will be deleted as soon as finish_command sees
3501        the inferior stopped.  So it doesn't matter that the bp's
3502        address is probably bogus in the new a.out, unlike e.g., the
3503        solib breakpoints.)  */
3504
3505     if (b->type == bp_finish)
3506       {
3507         continue;
3508       }
3509
3510     /* Without a symbolic address, we have little hope of the
3511        pre-exec() address meaning the same thing in the post-exec()
3512        a.out.  */
3513     if (b->addr_string == NULL)
3514       {
3515         delete_breakpoint (b);
3516         continue;
3517       }
3518   }
3519   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3520   create_overlay_event_breakpoint ();
3521   create_longjmp_master_breakpoint ();
3522   create_std_terminate_master_breakpoint ();
3523   create_exception_master_breakpoint ();
3524 }
3525
3526 int
3527 detach_breakpoints (ptid_t ptid)
3528 {
3529   struct bp_location *bl, **blp_tmp;
3530   int val = 0;
3531   struct cleanup *old_chain = save_inferior_ptid ();
3532   struct inferior *inf = current_inferior ();
3533
3534   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3535     error (_("Cannot detach breakpoints of inferior_ptid"));
3536
3537   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3538   inferior_ptid = ptid;
3539   ALL_BP_LOCATIONS (bl, blp_tmp)
3540   {
3541     if (bl->pspace != inf->pspace)
3542       continue;
3543
3544     if (bl->inserted)
3545       val |= remove_breakpoint_1 (bl, mark_inserted);
3546   }
3547
3548   /* Detach single-step breakpoints as well.  */
3549   detach_single_step_breakpoints ();
3550
3551   do_cleanups (old_chain);
3552   return val;
3553 }
3554
3555 /* Remove the breakpoint location BL from the current address space.
3556    Note that this is used to detach breakpoints from a child fork.
3557    When we get here, the child isn't in the inferior list, and neither
3558    do we have objects to represent its address space --- we should
3559    *not* look at bl->pspace->aspace here.  */
3560
3561 static int
3562 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3563 {
3564   int val;
3565
3566   /* BL is never in moribund_locations by our callers.  */
3567   gdb_assert (bl->owner != NULL);
3568
3569   if (bl->owner->enable_state == bp_permanent)
3570     /* Permanent breakpoints cannot be inserted or removed.  */
3571     return 0;
3572
3573   /* The type of none suggests that owner is actually deleted.
3574      This should not ever happen.  */
3575   gdb_assert (bl->owner->type != bp_none);
3576
3577   if (bl->loc_type == bp_loc_software_breakpoint
3578       || bl->loc_type == bp_loc_hardware_breakpoint)
3579     {
3580       /* "Normal" instruction breakpoint: either the standard
3581          trap-instruction bp (bp_breakpoint), or a
3582          bp_hardware_breakpoint.  */
3583
3584       /* First check to see if we have to handle an overlay.  */
3585       if (overlay_debugging == ovly_off
3586           || bl->section == NULL
3587           || !(section_is_overlay (bl->section)))
3588         {
3589           /* No overlay handling: just remove the breakpoint.  */
3590           val = bl->owner->ops->remove_location (bl);
3591         }
3592       else
3593         {
3594           /* This breakpoint is in an overlay section.
3595              Did we set a breakpoint at the LMA?  */
3596           if (!overlay_events_enabled)
3597               {
3598                 /* Yes -- overlay event support is not active, so we
3599                    should have set a breakpoint at the LMA.  Remove it.  
3600                 */
3601                 /* Ignore any failures: if the LMA is in ROM, we will
3602                    have already warned when we failed to insert it.  */
3603                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3604                   target_remove_hw_breakpoint (bl->gdbarch,
3605                                                &bl->overlay_target_info);
3606                 else
3607                   target_remove_breakpoint (bl->gdbarch,
3608                                             &bl->overlay_target_info);
3609               }
3610           /* Did we set a breakpoint at the VMA? 
3611              If so, we will have marked the breakpoint 'inserted'.  */
3612           if (bl->inserted)
3613             {
3614               /* Yes -- remove it.  Previously we did not bother to
3615                  remove the breakpoint if the section had been
3616                  unmapped, but let's not rely on that being safe.  We
3617                  don't know what the overlay manager might do.  */
3618
3619               /* However, we should remove *software* breakpoints only
3620                  if the section is still mapped, or else we overwrite
3621                  wrong code with the saved shadow contents.  */
3622               if (bl->loc_type == bp_loc_hardware_breakpoint
3623                   || section_is_mapped (bl->section))
3624                 val = bl->owner->ops->remove_location (bl);
3625               else
3626                 val = 0;
3627             }
3628           else
3629             {
3630               /* No -- not inserted, so no need to remove.  No error.  */
3631               val = 0;
3632             }
3633         }
3634
3635       /* In some cases, we might not be able to remove a breakpoint
3636          in a shared library that has already been removed, but we
3637          have not yet processed the shlib unload event.  */
3638       if (val && solib_name_from_address (bl->pspace, bl->address))
3639         val = 0;
3640
3641       if (val)
3642         return val;
3643       bl->inserted = (is == mark_inserted);
3644     }
3645   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3646     {
3647       gdb_assert (bl->owner->ops != NULL
3648                   && bl->owner->ops->remove_location != NULL);
3649
3650       bl->inserted = (is == mark_inserted);
3651       bl->owner->ops->remove_location (bl);
3652
3653       /* Failure to remove any of the hardware watchpoints comes here.  */
3654       if ((is == mark_uninserted) && (bl->inserted))
3655         warning (_("Could not remove hardware watchpoint %d."),
3656                  bl->owner->number);
3657     }
3658   else if (bl->owner->type == bp_catchpoint
3659            && breakpoint_enabled (bl->owner)
3660            && !bl->duplicate)
3661     {
3662       gdb_assert (bl->owner->ops != NULL
3663                   && bl->owner->ops->remove_location != NULL);
3664
3665       val = bl->owner->ops->remove_location (bl);
3666       if (val)
3667         return val;
3668
3669       bl->inserted = (is == mark_inserted);
3670     }
3671
3672   return 0;
3673 }
3674
3675 static int
3676 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3677 {
3678   int ret;
3679   struct cleanup *old_chain;
3680
3681   /* BL is never in moribund_locations by our callers.  */
3682   gdb_assert (bl->owner != NULL);
3683
3684   if (bl->owner->enable_state == bp_permanent)
3685     /* Permanent breakpoints cannot be inserted or removed.  */
3686     return 0;
3687
3688   /* The type of none suggests that owner is actually deleted.
3689      This should not ever happen.  */
3690   gdb_assert (bl->owner->type != bp_none);
3691
3692   old_chain = save_current_space_and_thread ();
3693
3694   switch_to_program_space_and_thread (bl->pspace);
3695
3696   ret = remove_breakpoint_1 (bl, is);
3697
3698   do_cleanups (old_chain);
3699   return ret;
3700 }
3701
3702 /* Clear the "inserted" flag in all breakpoints.  */
3703
3704 void
3705 mark_breakpoints_out (void)
3706 {
3707   struct bp_location *bl, **blp_tmp;
3708
3709   ALL_BP_LOCATIONS (bl, blp_tmp)
3710     if (bl->pspace == current_program_space)
3711       bl->inserted = 0;
3712 }
3713
3714 /* Clear the "inserted" flag in all breakpoints and delete any
3715    breakpoints which should go away between runs of the program.
3716
3717    Plus other such housekeeping that has to be done for breakpoints
3718    between runs.
3719
3720    Note: this function gets called at the end of a run (by
3721    generic_mourn_inferior) and when a run begins (by
3722    init_wait_for_inferior).  */
3723
3724
3725
3726 void
3727 breakpoint_init_inferior (enum inf_context context)
3728 {
3729   struct breakpoint *b, *b_tmp;
3730   struct bp_location *bl, **blp_tmp;
3731   int ix;
3732   struct program_space *pspace = current_program_space;
3733
3734   /* If breakpoint locations are shared across processes, then there's
3735      nothing to do.  */
3736   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3737     return;
3738
3739   ALL_BP_LOCATIONS (bl, blp_tmp)
3740   {
3741     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3742     if (bl->pspace == pspace
3743         && bl->owner->enable_state != bp_permanent)
3744       bl->inserted = 0;
3745   }
3746
3747   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3748   {
3749     if (b->loc && b->loc->pspace != pspace)
3750       continue;
3751
3752     switch (b->type)
3753       {
3754       case bp_call_dummy:
3755       case bp_longjmp_call_dummy:
3756
3757         /* If the call dummy breakpoint is at the entry point it will
3758            cause problems when the inferior is rerun, so we better get
3759            rid of it.  */
3760
3761       case bp_watchpoint_scope:
3762
3763         /* Also get rid of scope breakpoints.  */
3764
3765       case bp_shlib_event:
3766
3767         /* Also remove solib event breakpoints.  Their addresses may
3768            have changed since the last time we ran the program.
3769            Actually we may now be debugging against different target;
3770            and so the solib backend that installed this breakpoint may
3771            not be used in by the target.  E.g.,
3772
3773            (gdb) file prog-linux
3774            (gdb) run               # native linux target
3775            ...
3776            (gdb) kill
3777            (gdb) file prog-win.exe
3778            (gdb) tar rem :9999     # remote Windows gdbserver.
3779         */
3780
3781       case bp_step_resume:
3782
3783         /* Also remove step-resume breakpoints.  */
3784
3785         delete_breakpoint (b);
3786         break;
3787
3788       case bp_watchpoint:
3789       case bp_hardware_watchpoint:
3790       case bp_read_watchpoint:
3791       case bp_access_watchpoint:
3792         {
3793           struct watchpoint *w = (struct watchpoint *) b;
3794
3795           /* Likewise for watchpoints on local expressions.  */
3796           if (w->exp_valid_block != NULL)
3797             delete_breakpoint (b);
3798           else if (context == inf_starting)
3799             {
3800               /* Reset val field to force reread of starting value in
3801                  insert_breakpoints.  */
3802               if (w->val)
3803                 value_free (w->val);
3804               w->val = NULL;
3805               w->val_valid = 0;
3806           }
3807         }
3808         break;
3809       default:
3810         break;
3811       }
3812   }
3813
3814   /* Get rid of the moribund locations.  */
3815   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3816     decref_bp_location (&bl);
3817   VEC_free (bp_location_p, moribund_locations);
3818 }
3819
3820 /* These functions concern about actual breakpoints inserted in the
3821    target --- to e.g. check if we need to do decr_pc adjustment or if
3822    we need to hop over the bkpt --- so we check for address space
3823    match, not program space.  */
3824
3825 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3826    exists at PC.  It returns ordinary_breakpoint_here if it's an
3827    ordinary breakpoint, or permanent_breakpoint_here if it's a
3828    permanent breakpoint.
3829    - When continuing from a location with an ordinary breakpoint, we
3830      actually single step once before calling insert_breakpoints.
3831    - When continuing from a location with a permanent breakpoint, we
3832      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3833      the target, to advance the PC past the breakpoint.  */
3834
3835 enum breakpoint_here
3836 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3837 {
3838   struct bp_location *bl, **blp_tmp;
3839   int any_breakpoint_here = 0;
3840
3841   ALL_BP_LOCATIONS (bl, blp_tmp)
3842     {
3843       if (bl->loc_type != bp_loc_software_breakpoint
3844           && bl->loc_type != bp_loc_hardware_breakpoint)
3845         continue;
3846
3847       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3848       if ((breakpoint_enabled (bl->owner)
3849            || bl->owner->enable_state == bp_permanent)
3850           && breakpoint_location_address_match (bl, aspace, pc))
3851         {
3852           if (overlay_debugging 
3853               && section_is_overlay (bl->section)
3854               && !section_is_mapped (bl->section))
3855             continue;           /* unmapped overlay -- can't be a match */
3856           else if (bl->owner->enable_state == bp_permanent)
3857             return permanent_breakpoint_here;
3858           else
3859             any_breakpoint_here = 1;
3860         }
3861     }
3862
3863   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3864 }
3865
3866 /* Return true if there's a moribund breakpoint at PC.  */
3867
3868 int
3869 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3870 {
3871   struct bp_location *loc;
3872   int ix;
3873
3874   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3875     if (breakpoint_location_address_match (loc, aspace, pc))
3876       return 1;
3877
3878   return 0;
3879 }
3880
3881 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3882    inserted using regular breakpoint_chain / bp_location array
3883    mechanism.  This does not check for single-step breakpoints, which
3884    are inserted and removed using direct target manipulation.  */
3885
3886 int
3887 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3888                                     CORE_ADDR pc)
3889 {
3890   struct bp_location *bl, **blp_tmp;
3891
3892   ALL_BP_LOCATIONS (bl, blp_tmp)
3893     {
3894       if (bl->loc_type != bp_loc_software_breakpoint
3895           && bl->loc_type != bp_loc_hardware_breakpoint)
3896         continue;
3897
3898       if (bl->inserted
3899           && breakpoint_location_address_match (bl, aspace, pc))
3900         {
3901           if (overlay_debugging 
3902               && section_is_overlay (bl->section)
3903               && !section_is_mapped (bl->section))
3904             continue;           /* unmapped overlay -- can't be a match */
3905           else
3906             return 1;
3907         }
3908     }
3909   return 0;
3910 }
3911
3912 /* Returns non-zero iff there's either regular breakpoint
3913    or a single step breakpoint inserted at PC.  */
3914
3915 int
3916 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3917 {
3918   if (regular_breakpoint_inserted_here_p (aspace, pc))
3919     return 1;
3920
3921   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3922     return 1;
3923
3924   return 0;
3925 }
3926
3927 /* This function returns non-zero iff there is a software breakpoint
3928    inserted at PC.  */
3929
3930 int
3931 software_breakpoint_inserted_here_p (struct address_space *aspace,
3932                                      CORE_ADDR pc)
3933 {
3934   struct bp_location *bl, **blp_tmp;
3935
3936   ALL_BP_LOCATIONS (bl, blp_tmp)
3937     {
3938       if (bl->loc_type != bp_loc_software_breakpoint)
3939         continue;
3940
3941       if (bl->inserted
3942           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3943                                        aspace, pc))
3944         {
3945           if (overlay_debugging 
3946               && section_is_overlay (bl->section)
3947               && !section_is_mapped (bl->section))
3948             continue;           /* unmapped overlay -- can't be a match */
3949           else
3950             return 1;
3951         }
3952     }
3953
3954   /* Also check for software single-step breakpoints.  */
3955   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3956     return 1;
3957
3958   return 0;
3959 }
3960
3961 int
3962 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3963                                        CORE_ADDR addr, ULONGEST len)
3964 {
3965   struct breakpoint *bpt;
3966
3967   ALL_BREAKPOINTS (bpt)
3968     {
3969       struct bp_location *loc;
3970
3971       if (bpt->type != bp_hardware_watchpoint
3972           && bpt->type != bp_access_watchpoint)
3973         continue;
3974
3975       if (!breakpoint_enabled (bpt))
3976         continue;
3977
3978       for (loc = bpt->loc; loc; loc = loc->next)
3979         if (loc->pspace->aspace == aspace && loc->inserted)
3980           {
3981             CORE_ADDR l, h;
3982
3983             /* Check for intersection.  */
3984             l = max (loc->address, addr);
3985             h = min (loc->address + loc->length, addr + len);
3986             if (l < h)
3987               return 1;
3988           }
3989     }
3990   return 0;
3991 }
3992
3993 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3994    PC is valid for process/thread PTID.  */
3995
3996 int
3997 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3998                          ptid_t ptid)
3999 {
4000   struct bp_location *bl, **blp_tmp;
4001   /* The thread and task IDs associated to PTID, computed lazily.  */
4002   int thread = -1;
4003   int task = 0;
4004   
4005   ALL_BP_LOCATIONS (bl, blp_tmp)
4006     {
4007       if (bl->loc_type != bp_loc_software_breakpoint
4008           && bl->loc_type != bp_loc_hardware_breakpoint)
4009         continue;
4010
4011       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4012       if (!breakpoint_enabled (bl->owner)
4013           && bl->owner->enable_state != bp_permanent)
4014         continue;
4015
4016       if (!breakpoint_location_address_match (bl, aspace, pc))
4017         continue;
4018
4019       if (bl->owner->thread != -1)
4020         {
4021           /* This is a thread-specific breakpoint.  Check that ptid
4022              matches that thread.  If thread hasn't been computed yet,
4023              it is now time to do so.  */
4024           if (thread == -1)
4025             thread = pid_to_thread_id (ptid);
4026           if (bl->owner->thread != thread)
4027             continue;
4028         }
4029
4030       if (bl->owner->task != 0)
4031         {
4032           /* This is a task-specific breakpoint.  Check that ptid
4033              matches that task.  If task hasn't been computed yet,
4034              it is now time to do so.  */
4035           if (task == 0)
4036             task = ada_get_task_number (ptid);
4037           if (bl->owner->task != task)
4038             continue;
4039         }
4040
4041       if (overlay_debugging 
4042           && section_is_overlay (bl->section)
4043           && !section_is_mapped (bl->section))
4044         continue;           /* unmapped overlay -- can't be a match */
4045
4046       return 1;
4047     }
4048
4049   return 0;
4050 }
4051 \f
4052
4053 /* bpstat stuff.  External routines' interfaces are documented
4054    in breakpoint.h.  */
4055
4056 int
4057 is_catchpoint (struct breakpoint *ep)
4058 {
4059   return (ep->type == bp_catchpoint);
4060 }
4061
4062 /* Frees any storage that is part of a bpstat.  Does not walk the
4063    'next' chain.  */
4064
4065 static void
4066 bpstat_free (bpstat bs)
4067 {
4068   if (bs->old_val != NULL)
4069     value_free (bs->old_val);
4070   decref_counted_command_line (&bs->commands);
4071   decref_bp_location (&bs->bp_location_at);
4072   xfree (bs);
4073 }
4074
4075 /* Clear a bpstat so that it says we are not at any breakpoint.
4076    Also free any storage that is part of a bpstat.  */
4077
4078 void
4079 bpstat_clear (bpstat *bsp)
4080 {
4081   bpstat p;
4082   bpstat q;
4083
4084   if (bsp == 0)
4085     return;
4086   p = *bsp;
4087   while (p != NULL)
4088     {
4089       q = p->next;
4090       bpstat_free (p);
4091       p = q;
4092     }
4093   *bsp = NULL;
4094 }
4095
4096 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4097    is part of the bpstat is copied as well.  */
4098
4099 bpstat
4100 bpstat_copy (bpstat bs)
4101 {
4102   bpstat p = NULL;
4103   bpstat tmp;
4104   bpstat retval = NULL;
4105
4106   if (bs == NULL)
4107     return bs;
4108
4109   for (; bs != NULL; bs = bs->next)
4110     {
4111       tmp = (bpstat) xmalloc (sizeof (*tmp));
4112       memcpy (tmp, bs, sizeof (*tmp));
4113       incref_counted_command_line (tmp->commands);
4114       incref_bp_location (tmp->bp_location_at);
4115       if (bs->old_val != NULL)
4116         {
4117           tmp->old_val = value_copy (bs->old_val);
4118           release_value (tmp->old_val);
4119         }
4120
4121       if (p == NULL)
4122         /* This is the first thing in the chain.  */
4123         retval = tmp;
4124       else
4125         p->next = tmp;
4126       p = tmp;
4127     }
4128   p->next = NULL;
4129   return retval;
4130 }
4131
4132 /* Find the bpstat associated with this breakpoint.  */
4133
4134 bpstat
4135 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4136 {
4137   if (bsp == NULL)
4138     return NULL;
4139
4140   for (; bsp != NULL; bsp = bsp->next)
4141     {
4142       if (bsp->breakpoint_at == breakpoint)
4143         return bsp;
4144     }
4145   return NULL;
4146 }
4147
4148 /* Put in *NUM the breakpoint number of the first breakpoint we are
4149    stopped at.  *BSP upon return is a bpstat which points to the
4150    remaining breakpoints stopped at (but which is not guaranteed to be
4151    good for anything but further calls to bpstat_num).
4152
4153    Return 0 if passed a bpstat which does not indicate any breakpoints.
4154    Return -1 if stopped at a breakpoint that has been deleted since
4155    we set it.
4156    Return 1 otherwise.  */
4157
4158 int
4159 bpstat_num (bpstat *bsp, int *num)
4160 {
4161   struct breakpoint *b;
4162
4163   if ((*bsp) == NULL)
4164     return 0;                   /* No more breakpoint values */
4165
4166   /* We assume we'll never have several bpstats that correspond to a
4167      single breakpoint -- otherwise, this function might return the
4168      same number more than once and this will look ugly.  */
4169   b = (*bsp)->breakpoint_at;
4170   *bsp = (*bsp)->next;
4171   if (b == NULL)
4172     return -1;                  /* breakpoint that's been deleted since */
4173
4174   *num = b->number;             /* We have its number */
4175   return 1;
4176 }
4177
4178 /* See breakpoint.h.  */
4179
4180 void
4181 bpstat_clear_actions (void)
4182 {
4183   struct thread_info *tp;
4184   bpstat bs;
4185
4186   if (ptid_equal (inferior_ptid, null_ptid))
4187     return;
4188
4189   tp = find_thread_ptid (inferior_ptid);
4190   if (tp == NULL)
4191     return;
4192
4193   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4194     {
4195       decref_counted_command_line (&bs->commands);
4196
4197       if (bs->old_val != NULL)
4198         {
4199           value_free (bs->old_val);
4200           bs->old_val = NULL;
4201         }
4202     }
4203 }
4204
4205 /* Called when a command is about to proceed the inferior.  */
4206
4207 static void
4208 breakpoint_about_to_proceed (void)
4209 {
4210   if (!ptid_equal (inferior_ptid, null_ptid))
4211     {
4212       struct thread_info *tp = inferior_thread ();
4213
4214       /* Allow inferior function calls in breakpoint commands to not
4215          interrupt the command list.  When the call finishes
4216          successfully, the inferior will be standing at the same
4217          breakpoint as if nothing happened.  */
4218       if (tp->control.in_infcall)
4219         return;
4220     }
4221
4222   breakpoint_proceeded = 1;
4223 }
4224
4225 /* Stub for cleaning up our state if we error-out of a breakpoint
4226    command.  */
4227 static void
4228 cleanup_executing_breakpoints (void *ignore)
4229 {
4230   executing_breakpoint_commands = 0;
4231 }
4232
4233 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4234    or its equivalent.  */
4235
4236 static int
4237 command_line_is_silent (struct command_line *cmd)
4238 {
4239   return cmd && (strcmp ("silent", cmd->line) == 0
4240                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4241 }
4242
4243 /* Execute all the commands associated with all the breakpoints at
4244    this location.  Any of these commands could cause the process to
4245    proceed beyond this point, etc.  We look out for such changes by
4246    checking the global "breakpoint_proceeded" after each command.
4247
4248    Returns true if a breakpoint command resumed the inferior.  In that
4249    case, it is the caller's responsibility to recall it again with the
4250    bpstat of the current thread.  */
4251
4252 static int
4253 bpstat_do_actions_1 (bpstat *bsp)
4254 {
4255   bpstat bs;
4256   struct cleanup *old_chain;
4257   int again = 0;
4258
4259   /* Avoid endless recursion if a `source' command is contained
4260      in bs->commands.  */
4261   if (executing_breakpoint_commands)
4262     return 0;
4263
4264   executing_breakpoint_commands = 1;
4265   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4266
4267   prevent_dont_repeat ();
4268
4269   /* This pointer will iterate over the list of bpstat's.  */
4270   bs = *bsp;
4271
4272   breakpoint_proceeded = 0;
4273   for (; bs != NULL; bs = bs->next)
4274     {
4275       struct counted_command_line *ccmd;
4276       struct command_line *cmd;
4277       struct cleanup *this_cmd_tree_chain;
4278
4279       /* Take ownership of the BSP's command tree, if it has one.
4280
4281          The command tree could legitimately contain commands like
4282          'step' and 'next', which call clear_proceed_status, which
4283          frees stop_bpstat's command tree.  To make sure this doesn't
4284          free the tree we're executing out from under us, we need to
4285          take ownership of the tree ourselves.  Since a given bpstat's
4286          commands are only executed once, we don't need to copy it; we
4287          can clear the pointer in the bpstat, and make sure we free
4288          the tree when we're done.  */
4289       ccmd = bs->commands;
4290       bs->commands = NULL;
4291       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4292       cmd = ccmd ? ccmd->commands : NULL;
4293       if (command_line_is_silent (cmd))
4294         {
4295           /* The action has been already done by bpstat_stop_status.  */
4296           cmd = cmd->next;
4297         }
4298
4299       while (cmd != NULL)
4300         {
4301           execute_control_command (cmd);
4302
4303           if (breakpoint_proceeded)
4304             break;
4305           else
4306             cmd = cmd->next;
4307         }
4308
4309       /* We can free this command tree now.  */
4310       do_cleanups (this_cmd_tree_chain);
4311
4312       if (breakpoint_proceeded)
4313         {
4314           if (target_can_async_p ())
4315             /* If we are in async mode, then the target might be still
4316                running, not stopped at any breakpoint, so nothing for
4317                us to do here -- just return to the event loop.  */
4318             ;
4319           else
4320             /* In sync mode, when execute_control_command returns
4321                we're already standing on the next breakpoint.
4322                Breakpoint commands for that stop were not run, since
4323                execute_command does not run breakpoint commands --
4324                only command_line_handler does, but that one is not
4325                involved in execution of breakpoint commands.  So, we
4326                can now execute breakpoint commands.  It should be
4327                noted that making execute_command do bpstat actions is
4328                not an option -- in this case we'll have recursive
4329                invocation of bpstat for each breakpoint with a
4330                command, and can easily blow up GDB stack.  Instead, we
4331                return true, which will trigger the caller to recall us
4332                with the new stop_bpstat.  */
4333             again = 1;
4334           break;
4335         }
4336     }
4337   do_cleanups (old_chain);
4338   return again;
4339 }
4340
4341 void
4342 bpstat_do_actions (void)
4343 {
4344   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4345
4346   /* Do any commands attached to breakpoint we are stopped at.  */
4347   while (!ptid_equal (inferior_ptid, null_ptid)
4348          && target_has_execution
4349          && !is_exited (inferior_ptid)
4350          && !is_executing (inferior_ptid))
4351     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4352        and only return when it is stopped at the next breakpoint, we
4353        keep doing breakpoint actions until it returns false to
4354        indicate the inferior was not resumed.  */
4355     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4356       break;
4357
4358   discard_cleanups (cleanup_if_error);
4359 }
4360
4361 /* Print out the (old or new) value associated with a watchpoint.  */
4362
4363 static void
4364 watchpoint_value_print (struct value *val, struct ui_file *stream)
4365 {
4366   if (val == NULL)
4367     fprintf_unfiltered (stream, _("<unreadable>"));
4368   else
4369     {
4370       struct value_print_options opts;
4371       get_user_print_options (&opts);
4372       value_print (val, stream, &opts);
4373     }
4374 }
4375
4376 /* Generic routine for printing messages indicating why we
4377    stopped.  The behavior of this function depends on the value
4378    'print_it' in the bpstat structure.  Under some circumstances we
4379    may decide not to print anything here and delegate the task to
4380    normal_stop().  */
4381
4382 static enum print_stop_action
4383 print_bp_stop_message (bpstat bs)
4384 {
4385   switch (bs->print_it)
4386     {
4387     case print_it_noop:
4388       /* Nothing should be printed for this bpstat entry.  */
4389       return PRINT_UNKNOWN;
4390       break;
4391
4392     case print_it_done:
4393       /* We still want to print the frame, but we already printed the
4394          relevant messages.  */
4395       return PRINT_SRC_AND_LOC;
4396       break;
4397
4398     case print_it_normal:
4399       {
4400         struct breakpoint *b = bs->breakpoint_at;
4401
4402         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4403            which has since been deleted.  */
4404         if (b == NULL)
4405           return PRINT_UNKNOWN;
4406
4407         /* Normal case.  Call the breakpoint's print_it method.  */
4408         return b->ops->print_it (bs);
4409       }
4410       break;
4411
4412     default:
4413       internal_error (__FILE__, __LINE__,
4414                       _("print_bp_stop_message: unrecognized enum value"));
4415       break;
4416     }
4417 }
4418
4419 /* A helper function that prints a shared library stopped event.  */
4420
4421 static void
4422 print_solib_event (int is_catchpoint)
4423 {
4424   int any_deleted
4425     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4426   int any_added
4427     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4428
4429   if (!is_catchpoint)
4430     {
4431       if (any_added || any_deleted)
4432         ui_out_text (current_uiout,
4433                      _("Stopped due to shared library event:\n"));
4434       else
4435         ui_out_text (current_uiout,
4436                      _("Stopped due to shared library event (no "
4437                        "libraries added or removed)\n"));
4438     }
4439
4440   if (ui_out_is_mi_like_p (current_uiout))
4441     ui_out_field_string (current_uiout, "reason",
4442                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4443
4444   if (any_deleted)
4445     {
4446       struct cleanup *cleanup;
4447       char *name;
4448       int ix;
4449
4450       ui_out_text (current_uiout, _("  Inferior unloaded "));
4451       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4452                                                     "removed");
4453       for (ix = 0;
4454            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4455                         ix, name);
4456            ++ix)
4457         {
4458           if (ix > 0)
4459             ui_out_text (current_uiout, "    ");
4460           ui_out_field_string (current_uiout, "library", name);
4461           ui_out_text (current_uiout, "\n");
4462         }
4463
4464       do_cleanups (cleanup);
4465     }
4466
4467   if (any_added)
4468     {
4469       struct so_list *iter;
4470       int ix;
4471       struct cleanup *cleanup;
4472
4473       ui_out_text (current_uiout, _("  Inferior loaded "));
4474       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4475                                                     "added");
4476       for (ix = 0;
4477            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4478                         ix, iter);
4479            ++ix)
4480         {
4481           if (ix > 0)
4482             ui_out_text (current_uiout, "    ");
4483           ui_out_field_string (current_uiout, "library", iter->so_name);
4484           ui_out_text (current_uiout, "\n");
4485         }
4486
4487       do_cleanups (cleanup);
4488     }
4489 }
4490
4491 /* Print a message indicating what happened.  This is called from
4492    normal_stop().  The input to this routine is the head of the bpstat
4493    list - a list of the eventpoints that caused this stop.  KIND is
4494    the target_waitkind for the stopping event.  This
4495    routine calls the generic print routine for printing a message
4496    about reasons for stopping.  This will print (for example) the
4497    "Breakpoint n," part of the output.  The return value of this
4498    routine is one of:
4499
4500    PRINT_UNKNOWN: Means we printed nothing.
4501    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4502    code to print the location.  An example is 
4503    "Breakpoint 1, " which should be followed by
4504    the location.
4505    PRINT_SRC_ONLY: Means we printed something, but there is no need
4506    to also print the location part of the message.
4507    An example is the catch/throw messages, which
4508    don't require a location appended to the end.
4509    PRINT_NOTHING: We have done some printing and we don't need any 
4510    further info to be printed.  */
4511
4512 enum print_stop_action
4513 bpstat_print (bpstat bs, int kind)
4514 {
4515   int val;
4516
4517   /* Maybe another breakpoint in the chain caused us to stop.
4518      (Currently all watchpoints go on the bpstat whether hit or not.
4519      That probably could (should) be changed, provided care is taken
4520      with respect to bpstat_explains_signal).  */
4521   for (; bs; bs = bs->next)
4522     {
4523       val = print_bp_stop_message (bs);
4524       if (val == PRINT_SRC_ONLY 
4525           || val == PRINT_SRC_AND_LOC 
4526           || val == PRINT_NOTHING)
4527         return val;
4528     }
4529
4530   /* If we had hit a shared library event breakpoint,
4531      print_bp_stop_message would print out this message.  If we hit an
4532      OS-level shared library event, do the same thing.  */
4533   if (kind == TARGET_WAITKIND_LOADED)
4534     {
4535       print_solib_event (0);
4536       return PRINT_NOTHING;
4537     }
4538
4539   /* We reached the end of the chain, or we got a null BS to start
4540      with and nothing was printed.  */
4541   return PRINT_UNKNOWN;
4542 }
4543
4544 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4545    used inside a catch_errors to evaluate the breakpoint condition.
4546    The argument is a "struct expression *" that has been cast to a
4547    "char *" to make it pass through catch_errors.  */
4548
4549 static int
4550 breakpoint_cond_eval (void *exp)
4551 {
4552   struct value *mark = value_mark ();
4553   int i = !value_true (evaluate_expression ((struct expression *) exp));
4554
4555   value_free_to_mark (mark);
4556   return i;
4557 }
4558
4559 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4560
4561 static bpstat
4562 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4563 {
4564   bpstat bs;
4565
4566   bs = (bpstat) xmalloc (sizeof (*bs));
4567   bs->next = NULL;
4568   **bs_link_pointer = bs;
4569   *bs_link_pointer = &bs->next;
4570   bs->breakpoint_at = bl->owner;
4571   bs->bp_location_at = bl;
4572   incref_bp_location (bl);
4573   /* If the condition is false, etc., don't do the commands.  */
4574   bs->commands = NULL;
4575   bs->old_val = NULL;
4576   bs->print_it = print_it_normal;
4577   return bs;
4578 }
4579 \f
4580 /* The target has stopped with waitstatus WS.  Check if any hardware
4581    watchpoints have triggered, according to the target.  */
4582
4583 int
4584 watchpoints_triggered (struct target_waitstatus *ws)
4585 {
4586   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4587   CORE_ADDR addr;
4588   struct breakpoint *b;
4589
4590   if (!stopped_by_watchpoint)
4591     {
4592       /* We were not stopped by a watchpoint.  Mark all watchpoints
4593          as not triggered.  */
4594       ALL_BREAKPOINTS (b)
4595         if (is_hardware_watchpoint (b))
4596           {
4597             struct watchpoint *w = (struct watchpoint *) b;
4598
4599             w->watchpoint_triggered = watch_triggered_no;
4600           }
4601
4602       return 0;
4603     }
4604
4605   if (!target_stopped_data_address (&current_target, &addr))
4606     {
4607       /* We were stopped by a watchpoint, but we don't know where.
4608          Mark all watchpoints as unknown.  */
4609       ALL_BREAKPOINTS (b)
4610         if (is_hardware_watchpoint (b))
4611           {
4612             struct watchpoint *w = (struct watchpoint *) b;
4613
4614             w->watchpoint_triggered = watch_triggered_unknown;
4615           }
4616
4617       return stopped_by_watchpoint;
4618     }
4619
4620   /* The target could report the data address.  Mark watchpoints
4621      affected by this data address as triggered, and all others as not
4622      triggered.  */
4623
4624   ALL_BREAKPOINTS (b)
4625     if (is_hardware_watchpoint (b))
4626       {
4627         struct watchpoint *w = (struct watchpoint *) b;
4628         struct bp_location *loc;
4629
4630         w->watchpoint_triggered = watch_triggered_no;
4631         for (loc = b->loc; loc; loc = loc->next)
4632           {
4633             if (is_masked_watchpoint (b))
4634               {
4635                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4636                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4637
4638                 if (newaddr == start)
4639                   {
4640                     w->watchpoint_triggered = watch_triggered_yes;
4641                     break;
4642                   }
4643               }
4644             /* Exact match not required.  Within range is sufficient.  */
4645             else if (target_watchpoint_addr_within_range (&current_target,
4646                                                          addr, loc->address,
4647                                                          loc->length))
4648               {
4649                 w->watchpoint_triggered = watch_triggered_yes;
4650                 break;
4651               }
4652           }
4653       }
4654
4655   return 1;
4656 }
4657
4658 /* Possible return values for watchpoint_check (this can't be an enum
4659    because of check_errors).  */
4660 /* The watchpoint has been deleted.  */
4661 #define WP_DELETED 1
4662 /* The value has changed.  */
4663 #define WP_VALUE_CHANGED 2
4664 /* The value has not changed.  */
4665 #define WP_VALUE_NOT_CHANGED 3
4666 /* Ignore this watchpoint, no matter if the value changed or not.  */
4667 #define WP_IGNORE 4
4668
4669 #define BP_TEMPFLAG 1
4670 #define BP_HARDWAREFLAG 2
4671
4672 /* Evaluate watchpoint condition expression and check if its value
4673    changed.
4674
4675    P should be a pointer to struct bpstat, but is defined as a void *
4676    in order for this function to be usable with catch_errors.  */
4677
4678 static int
4679 watchpoint_check (void *p)
4680 {
4681   bpstat bs = (bpstat) p;
4682   struct watchpoint *b;
4683   struct frame_info *fr;
4684   int within_current_scope;
4685
4686   /* BS is built from an existing struct breakpoint.  */
4687   gdb_assert (bs->breakpoint_at != NULL);
4688   b = (struct watchpoint *) bs->breakpoint_at;
4689
4690   /* If this is a local watchpoint, we only want to check if the
4691      watchpoint frame is in scope if the current thread is the thread
4692      that was used to create the watchpoint.  */
4693   if (!watchpoint_in_thread_scope (b))
4694     return WP_IGNORE;
4695
4696   if (b->exp_valid_block == NULL)
4697     within_current_scope = 1;
4698   else
4699     {
4700       struct frame_info *frame = get_current_frame ();
4701       struct gdbarch *frame_arch = get_frame_arch (frame);
4702       CORE_ADDR frame_pc = get_frame_pc (frame);
4703
4704       /* in_function_epilogue_p() returns a non-zero value if we're
4705          still in the function but the stack frame has already been
4706          invalidated.  Since we can't rely on the values of local
4707          variables after the stack has been destroyed, we are treating
4708          the watchpoint in that state as `not changed' without further
4709          checking.  Don't mark watchpoints as changed if the current
4710          frame is in an epilogue - even if they are in some other
4711          frame, our view of the stack is likely to be wrong and
4712          frame_find_by_id could error out.  */
4713       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4714         return WP_IGNORE;
4715
4716       fr = frame_find_by_id (b->watchpoint_frame);
4717       within_current_scope = (fr != NULL);
4718
4719       /* If we've gotten confused in the unwinder, we might have
4720          returned a frame that can't describe this variable.  */
4721       if (within_current_scope)
4722         {
4723           struct symbol *function;
4724
4725           function = get_frame_function (fr);
4726           if (function == NULL
4727               || !contained_in (b->exp_valid_block,
4728                                 SYMBOL_BLOCK_VALUE (function)))
4729             within_current_scope = 0;
4730         }
4731
4732       if (within_current_scope)
4733         /* If we end up stopping, the current frame will get selected
4734            in normal_stop.  So this call to select_frame won't affect
4735            the user.  */
4736         select_frame (fr);
4737     }
4738
4739   if (within_current_scope)
4740     {
4741       /* We use value_{,free_to_}mark because it could be a *long*
4742          time before we return to the command level and call
4743          free_all_values.  We can't call free_all_values because we
4744          might be in the middle of evaluating a function call.  */
4745
4746       int pc = 0;
4747       struct value *mark;
4748       struct value *new_val;
4749
4750       if (is_masked_watchpoint (&b->base))
4751         /* Since we don't know the exact trigger address (from
4752            stopped_data_address), just tell the user we've triggered
4753            a mask watchpoint.  */
4754         return WP_VALUE_CHANGED;
4755
4756       mark = value_mark ();
4757       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4758
4759       /* We use value_equal_contents instead of value_equal because
4760          the latter coerces an array to a pointer, thus comparing just
4761          the address of the array instead of its contents.  This is
4762          not what we want.  */
4763       if ((b->val != NULL) != (new_val != NULL)
4764           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4765         {
4766           if (new_val != NULL)
4767             {
4768               release_value (new_val);
4769               value_free_to_mark (mark);
4770             }
4771           bs->old_val = b->val;
4772           b->val = new_val;
4773           b->val_valid = 1;
4774           return WP_VALUE_CHANGED;
4775         }
4776       else
4777         {
4778           /* Nothing changed.  */
4779           value_free_to_mark (mark);
4780           return WP_VALUE_NOT_CHANGED;
4781         }
4782     }
4783   else
4784     {
4785       struct ui_out *uiout = current_uiout;
4786
4787       /* This seems like the only logical thing to do because
4788          if we temporarily ignored the watchpoint, then when
4789          we reenter the block in which it is valid it contains
4790          garbage (in the case of a function, it may have two
4791          garbage values, one before and one after the prologue).
4792          So we can't even detect the first assignment to it and
4793          watch after that (since the garbage may or may not equal
4794          the first value assigned).  */
4795       /* We print all the stop information in
4796          breakpoint_ops->print_it, but in this case, by the time we
4797          call breakpoint_ops->print_it this bp will be deleted
4798          already.  So we have no choice but print the information
4799          here.  */
4800       if (ui_out_is_mi_like_p (uiout))
4801         ui_out_field_string
4802           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4803       ui_out_text (uiout, "\nWatchpoint ");
4804       ui_out_field_int (uiout, "wpnum", b->base.number);
4805       ui_out_text (uiout,
4806                    " deleted because the program has left the block in\n\
4807 which its expression is valid.\n");     
4808
4809       /* Make sure the watchpoint's commands aren't executed.  */
4810       decref_counted_command_line (&b->base.commands);
4811       watchpoint_del_at_next_stop (b);
4812
4813       return WP_DELETED;
4814     }
4815 }
4816
4817 /* Return true if it looks like target has stopped due to hitting
4818    breakpoint location BL.  This function does not check if we should
4819    stop, only if BL explains the stop.  */
4820
4821 static int
4822 bpstat_check_location (const struct bp_location *bl,
4823                        struct address_space *aspace, CORE_ADDR bp_addr,
4824                        const struct target_waitstatus *ws)
4825 {
4826   struct breakpoint *b = bl->owner;
4827
4828   /* BL is from an existing breakpoint.  */
4829   gdb_assert (b != NULL);
4830
4831   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4832 }
4833
4834 /* Determine if the watched values have actually changed, and we
4835    should stop.  If not, set BS->stop to 0.  */
4836
4837 static void
4838 bpstat_check_watchpoint (bpstat bs)
4839 {
4840   const struct bp_location *bl;
4841   struct watchpoint *b;
4842
4843   /* BS is built for existing struct breakpoint.  */
4844   bl = bs->bp_location_at;
4845   gdb_assert (bl != NULL);
4846   b = (struct watchpoint *) bs->breakpoint_at;
4847   gdb_assert (b != NULL);
4848
4849     {
4850       int must_check_value = 0;
4851       
4852       if (b->base.type == bp_watchpoint)
4853         /* For a software watchpoint, we must always check the
4854            watched value.  */
4855         must_check_value = 1;
4856       else if (b->watchpoint_triggered == watch_triggered_yes)
4857         /* We have a hardware watchpoint (read, write, or access)
4858            and the target earlier reported an address watched by
4859            this watchpoint.  */
4860         must_check_value = 1;
4861       else if (b->watchpoint_triggered == watch_triggered_unknown
4862                && b->base.type == bp_hardware_watchpoint)
4863         /* We were stopped by a hardware watchpoint, but the target could
4864            not report the data address.  We must check the watchpoint's
4865            value.  Access and read watchpoints are out of luck; without
4866            a data address, we can't figure it out.  */
4867         must_check_value = 1;
4868
4869       if (must_check_value)
4870         {
4871           char *message
4872             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4873                           b->base.number);
4874           struct cleanup *cleanups = make_cleanup (xfree, message);
4875           int e = catch_errors (watchpoint_check, bs, message,
4876                                 RETURN_MASK_ALL);
4877           do_cleanups (cleanups);
4878           switch (e)
4879             {
4880             case WP_DELETED:
4881               /* We've already printed what needs to be printed.  */
4882               bs->print_it = print_it_done;
4883               /* Stop.  */
4884               break;
4885             case WP_IGNORE:
4886               bs->print_it = print_it_noop;
4887               bs->stop = 0;
4888               break;
4889             case WP_VALUE_CHANGED:
4890               if (b->base.type == bp_read_watchpoint)
4891                 {
4892                   /* There are two cases to consider here:
4893
4894                      1. We're watching the triggered memory for reads.
4895                      In that case, trust the target, and always report
4896                      the watchpoint hit to the user.  Even though
4897                      reads don't cause value changes, the value may
4898                      have changed since the last time it was read, and
4899                      since we're not trapping writes, we will not see
4900                      those, and as such we should ignore our notion of
4901                      old value.
4902
4903                      2. We're watching the triggered memory for both
4904                      reads and writes.  There are two ways this may
4905                      happen:
4906
4907                      2.1. This is a target that can't break on data
4908                      reads only, but can break on accesses (reads or
4909                      writes), such as e.g., x86.  We detect this case
4910                      at the time we try to insert read watchpoints.
4911
4912                      2.2. Otherwise, the target supports read
4913                      watchpoints, but, the user set an access or write
4914                      watchpoint watching the same memory as this read
4915                      watchpoint.
4916
4917                      If we're watching memory writes as well as reads,
4918                      ignore watchpoint hits when we find that the
4919                      value hasn't changed, as reads don't cause
4920                      changes.  This still gives false positives when
4921                      the program writes the same value to memory as
4922                      what there was already in memory (we will confuse
4923                      it for a read), but it's much better than
4924                      nothing.  */
4925
4926                   int other_write_watchpoint = 0;
4927
4928                   if (bl->watchpoint_type == hw_read)
4929                     {
4930                       struct breakpoint *other_b;
4931
4932                       ALL_BREAKPOINTS (other_b)
4933                         if (other_b->type == bp_hardware_watchpoint
4934                             || other_b->type == bp_access_watchpoint)
4935                           {
4936                             struct watchpoint *other_w =
4937                               (struct watchpoint *) other_b;
4938
4939                             if (other_w->watchpoint_triggered
4940                                 == watch_triggered_yes)
4941                               {
4942                                 other_write_watchpoint = 1;
4943                                 break;
4944                               }
4945                           }
4946                     }
4947
4948                   if (other_write_watchpoint
4949                       || bl->watchpoint_type == hw_access)
4950                     {
4951                       /* We're watching the same memory for writes,
4952                          and the value changed since the last time we
4953                          updated it, so this trap must be for a write.
4954                          Ignore it.  */
4955                       bs->print_it = print_it_noop;
4956                       bs->stop = 0;
4957                     }
4958                 }
4959               break;
4960             case WP_VALUE_NOT_CHANGED:
4961               if (b->base.type == bp_hardware_watchpoint
4962                   || b->base.type == bp_watchpoint)
4963                 {
4964                   /* Don't stop: write watchpoints shouldn't fire if
4965                      the value hasn't changed.  */
4966                   bs->print_it = print_it_noop;
4967                   bs->stop = 0;
4968                 }
4969               /* Stop.  */
4970               break;
4971             default:
4972               /* Can't happen.  */
4973             case 0:
4974               /* Error from catch_errors.  */
4975               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4976               watchpoint_del_at_next_stop (b);
4977               /* We've already printed what needs to be printed.  */
4978               bs->print_it = print_it_done;
4979               break;
4980             }
4981         }
4982       else      /* must_check_value == 0 */
4983         {
4984           /* This is a case where some watchpoint(s) triggered, but
4985              not at the address of this watchpoint, or else no
4986              watchpoint triggered after all.  So don't print
4987              anything for this watchpoint.  */
4988           bs->print_it = print_it_noop;
4989           bs->stop = 0;
4990         }
4991     }
4992 }
4993
4994
4995 /* Check conditions (condition proper, frame, thread and ignore count)
4996    of breakpoint referred to by BS.  If we should not stop for this
4997    breakpoint, set BS->stop to 0.  */
4998
4999 static void
5000 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5001 {
5002   int thread_id = pid_to_thread_id (ptid);
5003   const struct bp_location *bl;
5004   struct breakpoint *b;
5005
5006   /* BS is built for existing struct breakpoint.  */
5007   bl = bs->bp_location_at;
5008   gdb_assert (bl != NULL);
5009   b = bs->breakpoint_at;
5010   gdb_assert (b != NULL);
5011
5012   /* Even if the target evaluated the condition on its end and notified GDB, we
5013      need to do so again since GDB does not know if we stopped due to a
5014      breakpoint or a single step breakpoint.  */
5015
5016   if (frame_id_p (b->frame_id)
5017       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5018     bs->stop = 0;
5019   else if (bs->stop)
5020     {
5021       int value_is_zero = 0;
5022       struct expression *cond;
5023
5024       /* Evaluate Python breakpoints that have a "stop"
5025          method implemented.  */
5026       if (b->py_bp_object)
5027         bs->stop = gdbpy_should_stop (b->py_bp_object);
5028
5029       if (is_watchpoint (b))
5030         {
5031           struct watchpoint *w = (struct watchpoint *) b;
5032
5033           cond = w->cond_exp;
5034         }
5035       else
5036         cond = bl->cond;
5037
5038       if (cond && b->disposition != disp_del_at_next_stop)
5039         {
5040           int within_current_scope = 1;
5041           struct watchpoint * w;
5042
5043           /* We use value_mark and value_free_to_mark because it could
5044              be a long time before we return to the command level and
5045              call free_all_values.  We can't call free_all_values
5046              because we might be in the middle of evaluating a
5047              function call.  */
5048           struct value *mark = value_mark ();
5049
5050           if (is_watchpoint (b))
5051             w = (struct watchpoint *) b;
5052           else
5053             w = NULL;
5054
5055           /* Need to select the frame, with all that implies so that
5056              the conditions will have the right context.  Because we
5057              use the frame, we will not see an inlined function's
5058              variables when we arrive at a breakpoint at the start
5059              of the inlined function; the current frame will be the
5060              call site.  */
5061           if (w == NULL || w->cond_exp_valid_block == NULL)
5062             select_frame (get_current_frame ());
5063           else
5064             {
5065               struct frame_info *frame;
5066
5067               /* For local watchpoint expressions, which particular
5068                  instance of a local is being watched matters, so we
5069                  keep track of the frame to evaluate the expression
5070                  in.  To evaluate the condition however, it doesn't
5071                  really matter which instantiation of the function
5072                  where the condition makes sense triggers the
5073                  watchpoint.  This allows an expression like "watch
5074                  global if q > 10" set in `func', catch writes to
5075                  global on all threads that call `func', or catch
5076                  writes on all recursive calls of `func' by a single
5077                  thread.  We simply always evaluate the condition in
5078                  the innermost frame that's executing where it makes
5079                  sense to evaluate the condition.  It seems
5080                  intuitive.  */
5081               frame = block_innermost_frame (w->cond_exp_valid_block);
5082               if (frame != NULL)
5083                 select_frame (frame);
5084               else
5085                 within_current_scope = 0;
5086             }
5087           if (within_current_scope)
5088             value_is_zero
5089               = catch_errors (breakpoint_cond_eval, cond,
5090                               "Error in testing breakpoint condition:\n",
5091                               RETURN_MASK_ALL);
5092           else
5093             {
5094               warning (_("Watchpoint condition cannot be tested "
5095                          "in the current scope"));
5096               /* If we failed to set the right context for this
5097                  watchpoint, unconditionally report it.  */
5098               value_is_zero = 0;
5099             }
5100           /* FIXME-someday, should give breakpoint #.  */
5101           value_free_to_mark (mark);
5102         }
5103
5104       if (cond && value_is_zero)
5105         {
5106           bs->stop = 0;
5107         }
5108       else if (b->thread != -1 && b->thread != thread_id)
5109         {
5110           bs->stop = 0;
5111         }
5112       else if (b->ignore_count > 0)
5113         {
5114           b->ignore_count--;
5115           annotate_ignore_count_change ();
5116           bs->stop = 0;
5117           /* Increase the hit count even though we don't stop.  */
5118           ++(b->hit_count);
5119           observer_notify_breakpoint_modified (b);
5120         }       
5121     }
5122 }
5123
5124
5125 /* Get a bpstat associated with having just stopped at address
5126    BP_ADDR in thread PTID.
5127
5128    Determine whether we stopped at a breakpoint, etc, or whether we
5129    don't understand this stop.  Result is a chain of bpstat's such
5130    that:
5131
5132    if we don't understand the stop, the result is a null pointer.
5133
5134    if we understand why we stopped, the result is not null.
5135
5136    Each element of the chain refers to a particular breakpoint or
5137    watchpoint at which we have stopped.  (We may have stopped for
5138    several reasons concurrently.)
5139
5140    Each element of the chain has valid next, breakpoint_at,
5141    commands, FIXME??? fields.  */
5142
5143 bpstat
5144 bpstat_stop_status (struct address_space *aspace,
5145                     CORE_ADDR bp_addr, ptid_t ptid,
5146                     const struct target_waitstatus *ws)
5147 {
5148   struct breakpoint *b = NULL;
5149   struct bp_location *bl;
5150   struct bp_location *loc;
5151   /* First item of allocated bpstat's.  */
5152   bpstat bs_head = NULL, *bs_link = &bs_head;
5153   /* Pointer to the last thing in the chain currently.  */
5154   bpstat bs;
5155   int ix;
5156   int need_remove_insert;
5157   int removed_any;
5158
5159   /* First, build the bpstat chain with locations that explain a
5160      target stop, while being careful to not set the target running,
5161      as that may invalidate locations (in particular watchpoint
5162      locations are recreated).  Resuming will happen here with
5163      breakpoint conditions or watchpoint expressions that include
5164      inferior function calls.  */
5165
5166   ALL_BREAKPOINTS (b)
5167     {
5168       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5169         continue;
5170
5171       for (bl = b->loc; bl != NULL; bl = bl->next)
5172         {
5173           /* For hardware watchpoints, we look only at the first
5174              location.  The watchpoint_check function will work on the
5175              entire expression, not the individual locations.  For
5176              read watchpoints, the watchpoints_triggered function has
5177              checked all locations already.  */
5178           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5179             break;
5180
5181           if (!bl->enabled || bl->shlib_disabled)
5182             continue;
5183
5184           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5185             continue;
5186
5187           /* Come here if it's a watchpoint, or if the break address
5188              matches.  */
5189
5190           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5191                                                    explain stop.  */
5192
5193           /* Assume we stop.  Should we find a watchpoint that is not
5194              actually triggered, or if the condition of the breakpoint
5195              evaluates as false, we'll reset 'stop' to 0.  */
5196           bs->stop = 1;
5197           bs->print = 1;
5198
5199           /* If this is a scope breakpoint, mark the associated
5200              watchpoint as triggered so that we will handle the
5201              out-of-scope event.  We'll get to the watchpoint next
5202              iteration.  */
5203           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5204             {
5205               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5206
5207               w->watchpoint_triggered = watch_triggered_yes;
5208             }
5209         }
5210     }
5211
5212   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5213     {
5214       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5215         {
5216           bs = bpstat_alloc (loc, &bs_link);
5217           /* For hits of moribund locations, we should just proceed.  */
5218           bs->stop = 0;
5219           bs->print = 0;
5220           bs->print_it = print_it_noop;
5221         }
5222     }
5223
5224   /* A bit of special processing for shlib breakpoints.  We need to
5225      process solib loading here, so that the lists of loaded and
5226      unloaded libraries are correct before we handle "catch load" and
5227      "catch unload".  */
5228   for (bs = bs_head; bs != NULL; bs = bs->next)
5229     {
5230       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5231         {
5232           handle_solib_event ();
5233           break;
5234         }
5235     }
5236
5237   /* Now go through the locations that caused the target to stop, and
5238      check whether we're interested in reporting this stop to higher
5239      layers, or whether we should resume the target transparently.  */
5240
5241   removed_any = 0;
5242
5243   for (bs = bs_head; bs != NULL; bs = bs->next)
5244     {
5245       if (!bs->stop)
5246         continue;
5247
5248       b = bs->breakpoint_at;
5249       b->ops->check_status (bs);
5250       if (bs->stop)
5251         {
5252           bpstat_check_breakpoint_conditions (bs, ptid);
5253
5254           if (bs->stop)
5255             {
5256               ++(b->hit_count);
5257               observer_notify_breakpoint_modified (b);
5258
5259               /* We will stop here.  */
5260               if (b->disposition == disp_disable)
5261                 {
5262                   --(b->enable_count);
5263                   if (b->enable_count <= 0
5264                       && b->enable_state != bp_permanent)
5265                     b->enable_state = bp_disabled;
5266                   removed_any = 1;
5267                 }
5268               if (b->silent)
5269                 bs->print = 0;
5270               bs->commands = b->commands;
5271               incref_counted_command_line (bs->commands);
5272               if (command_line_is_silent (bs->commands
5273                                           ? bs->commands->commands : NULL))
5274                 bs->print = 0;
5275             }
5276
5277         }
5278
5279       /* Print nothing for this entry if we don't stop or don't
5280          print.  */
5281       if (!bs->stop || !bs->print)
5282         bs->print_it = print_it_noop;
5283     }
5284
5285   /* If we aren't stopping, the value of some hardware watchpoint may
5286      not have changed, but the intermediate memory locations we are
5287      watching may have.  Don't bother if we're stopping; this will get
5288      done later.  */
5289   need_remove_insert = 0;
5290   if (! bpstat_causes_stop (bs_head))
5291     for (bs = bs_head; bs != NULL; bs = bs->next)
5292       if (!bs->stop
5293           && bs->breakpoint_at
5294           && is_hardware_watchpoint (bs->breakpoint_at))
5295         {
5296           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5297
5298           update_watchpoint (w, 0 /* don't reparse.  */);
5299           need_remove_insert = 1;
5300         }
5301
5302   if (need_remove_insert)
5303     update_global_location_list (1);
5304   else if (removed_any)
5305     update_global_location_list (0);
5306
5307   return bs_head;
5308 }
5309
5310 static void
5311 handle_jit_event (void)
5312 {
5313   struct frame_info *frame;
5314   struct gdbarch *gdbarch;
5315
5316   /* Switch terminal for any messages produced by
5317      breakpoint_re_set.  */
5318   target_terminal_ours_for_output ();
5319
5320   frame = get_current_frame ();
5321   gdbarch = get_frame_arch (frame);
5322
5323   jit_event_handler (gdbarch);
5324
5325   target_terminal_inferior ();
5326 }
5327
5328 /* Handle an solib event by calling solib_add.  */
5329
5330 void
5331 handle_solib_event (void)
5332 {
5333   clear_program_space_solib_cache (current_inferior ()->pspace);
5334
5335   /* Check for any newly added shared libraries if we're supposed to
5336      be adding them automatically.  Switch terminal for any messages
5337      produced by breakpoint_re_set.  */
5338   target_terminal_ours_for_output ();
5339 #ifdef SOLIB_ADD
5340   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5341 #else
5342   solib_add (NULL, 0, &current_target, auto_solib_add);
5343 #endif
5344   target_terminal_inferior ();
5345 }
5346
5347 /* Prepare WHAT final decision for infrun.  */
5348
5349 /* Decide what infrun needs to do with this bpstat.  */
5350
5351 struct bpstat_what
5352 bpstat_what (bpstat bs_head)
5353 {
5354   struct bpstat_what retval;
5355   int jit_event = 0;
5356   bpstat bs;
5357
5358   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5359   retval.call_dummy = STOP_NONE;
5360   retval.is_longjmp = 0;
5361
5362   for (bs = bs_head; bs != NULL; bs = bs->next)
5363     {
5364       /* Extract this BS's action.  After processing each BS, we check
5365          if its action overrides all we've seem so far.  */
5366       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5367       enum bptype bptype;
5368
5369       if (bs->breakpoint_at == NULL)
5370         {
5371           /* I suspect this can happen if it was a momentary
5372              breakpoint which has since been deleted.  */
5373           bptype = bp_none;
5374         }
5375       else
5376         bptype = bs->breakpoint_at->type;
5377
5378       switch (bptype)
5379         {
5380         case bp_none:
5381           break;
5382         case bp_breakpoint:
5383         case bp_hardware_breakpoint:
5384         case bp_until:
5385         case bp_finish:
5386         case bp_shlib_event:
5387           if (bs->stop)
5388             {
5389               if (bs->print)
5390                 this_action = BPSTAT_WHAT_STOP_NOISY;
5391               else
5392                 this_action = BPSTAT_WHAT_STOP_SILENT;
5393             }
5394           else
5395             this_action = BPSTAT_WHAT_SINGLE;
5396           break;
5397         case bp_watchpoint:
5398         case bp_hardware_watchpoint:
5399         case bp_read_watchpoint:
5400         case bp_access_watchpoint:
5401           if (bs->stop)
5402             {
5403               if (bs->print)
5404                 this_action = BPSTAT_WHAT_STOP_NOISY;
5405               else
5406                 this_action = BPSTAT_WHAT_STOP_SILENT;
5407             }
5408           else
5409             {
5410               /* There was a watchpoint, but we're not stopping.
5411                  This requires no further action.  */
5412             }
5413           break;
5414         case bp_longjmp:
5415         case bp_longjmp_call_dummy:
5416         case bp_exception:
5417           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5418           retval.is_longjmp = bptype != bp_exception;
5419           break;
5420         case bp_longjmp_resume:
5421         case bp_exception_resume:
5422           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5423           retval.is_longjmp = bptype == bp_longjmp_resume;
5424           break;
5425         case bp_step_resume:
5426           if (bs->stop)
5427             this_action = BPSTAT_WHAT_STEP_RESUME;
5428           else
5429             {
5430               /* It is for the wrong frame.  */
5431               this_action = BPSTAT_WHAT_SINGLE;
5432             }
5433           break;
5434         case bp_hp_step_resume:
5435           if (bs->stop)
5436             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5437           else
5438             {
5439               /* It is for the wrong frame.  */
5440               this_action = BPSTAT_WHAT_SINGLE;
5441             }
5442           break;
5443         case bp_watchpoint_scope:
5444         case bp_thread_event:
5445         case bp_overlay_event:
5446         case bp_longjmp_master:
5447         case bp_std_terminate_master:
5448         case bp_exception_master:
5449           this_action = BPSTAT_WHAT_SINGLE;
5450           break;
5451         case bp_catchpoint:
5452           if (bs->stop)
5453             {
5454               if (bs->print)
5455                 this_action = BPSTAT_WHAT_STOP_NOISY;
5456               else
5457                 this_action = BPSTAT_WHAT_STOP_SILENT;
5458             }
5459           else
5460             {
5461               /* There was a catchpoint, but we're not stopping.
5462                  This requires no further action.  */
5463             }
5464           break;
5465         case bp_jit_event:
5466           jit_event = 1;
5467           this_action = BPSTAT_WHAT_SINGLE;
5468           break;
5469         case bp_call_dummy:
5470           /* Make sure the action is stop (silent or noisy),
5471              so infrun.c pops the dummy frame.  */
5472           retval.call_dummy = STOP_STACK_DUMMY;
5473           this_action = BPSTAT_WHAT_STOP_SILENT;
5474           break;
5475         case bp_std_terminate:
5476           /* Make sure the action is stop (silent or noisy),
5477              so infrun.c pops the dummy frame.  */
5478           retval.call_dummy = STOP_STD_TERMINATE;
5479           this_action = BPSTAT_WHAT_STOP_SILENT;
5480           break;
5481         case bp_tracepoint:
5482         case bp_fast_tracepoint:
5483         case bp_static_tracepoint:
5484           /* Tracepoint hits should not be reported back to GDB, and
5485              if one got through somehow, it should have been filtered
5486              out already.  */
5487           internal_error (__FILE__, __LINE__,
5488                           _("bpstat_what: tracepoint encountered"));
5489           break;
5490         case bp_gnu_ifunc_resolver:
5491           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5492           this_action = BPSTAT_WHAT_SINGLE;
5493           break;
5494         case bp_gnu_ifunc_resolver_return:
5495           /* The breakpoint will be removed, execution will restart from the
5496              PC of the former breakpoint.  */
5497           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5498           break;
5499
5500         case bp_dprintf:
5501           this_action = BPSTAT_WHAT_STOP_SILENT;
5502           break;
5503
5504         default:
5505           internal_error (__FILE__, __LINE__,
5506                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5507         }
5508
5509       retval.main_action = max (retval.main_action, this_action);
5510     }
5511
5512   /* These operations may affect the bs->breakpoint_at state so they are
5513      delayed after MAIN_ACTION is decided above.  */
5514
5515   if (jit_event)
5516     {
5517       if (debug_infrun)
5518         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5519
5520       handle_jit_event ();
5521     }
5522
5523   for (bs = bs_head; bs != NULL; bs = bs->next)
5524     {
5525       struct breakpoint *b = bs->breakpoint_at;
5526
5527       if (b == NULL)
5528         continue;
5529       switch (b->type)
5530         {
5531         case bp_gnu_ifunc_resolver:
5532           gnu_ifunc_resolver_stop (b);
5533           break;
5534         case bp_gnu_ifunc_resolver_return:
5535           gnu_ifunc_resolver_return_stop (b);
5536           break;
5537         }
5538     }
5539
5540   return retval;
5541 }
5542
5543 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5544    without hardware support).  This isn't related to a specific bpstat,
5545    just to things like whether watchpoints are set.  */
5546
5547 int
5548 bpstat_should_step (void)
5549 {
5550   struct breakpoint *b;
5551
5552   ALL_BREAKPOINTS (b)
5553     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5554       return 1;
5555   return 0;
5556 }
5557
5558 int
5559 bpstat_causes_stop (bpstat bs)
5560 {
5561   for (; bs != NULL; bs = bs->next)
5562     if (bs->stop)
5563       return 1;
5564
5565   return 0;
5566 }
5567
5568 \f
5569
5570 /* Compute a string of spaces suitable to indent the next line
5571    so it starts at the position corresponding to the table column
5572    named COL_NAME in the currently active table of UIOUT.  */
5573
5574 static char *
5575 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5576 {
5577   static char wrap_indent[80];
5578   int i, total_width, width, align;
5579   char *text;
5580
5581   total_width = 0;
5582   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5583     {
5584       if (strcmp (text, col_name) == 0)
5585         {
5586           gdb_assert (total_width < sizeof wrap_indent);
5587           memset (wrap_indent, ' ', total_width);
5588           wrap_indent[total_width] = 0;
5589
5590           return wrap_indent;
5591         }
5592
5593       total_width += width + 1;
5594     }
5595
5596   return NULL;
5597 }
5598
5599 /* Determine if the locations of this breakpoint will have their conditions
5600    evaluated by the target, host or a mix of both.  Returns the following:
5601
5602     "host": Host evals condition.
5603     "host or target": Host or Target evals condition.
5604     "target": Target evals condition.
5605 */
5606
5607 static const char *
5608 bp_condition_evaluator (struct breakpoint *b)
5609 {
5610   struct bp_location *bl;
5611   char host_evals = 0;
5612   char target_evals = 0;
5613
5614   if (!b)
5615     return NULL;
5616
5617   if (!is_breakpoint (b))
5618     return NULL;
5619
5620   if (gdb_evaluates_breakpoint_condition_p ()
5621       || !target_supports_evaluation_of_breakpoint_conditions ())
5622     return condition_evaluation_host;
5623
5624   for (bl = b->loc; bl; bl = bl->next)
5625     {
5626       if (bl->cond_bytecode)
5627         target_evals++;
5628       else
5629         host_evals++;
5630     }
5631
5632   if (host_evals && target_evals)
5633     return condition_evaluation_both;
5634   else if (target_evals)
5635     return condition_evaluation_target;
5636   else
5637     return condition_evaluation_host;
5638 }
5639
5640 /* Determine the breakpoint location's condition evaluator.  This is
5641    similar to bp_condition_evaluator, but for locations.  */
5642
5643 static const char *
5644 bp_location_condition_evaluator (struct bp_location *bl)
5645 {
5646   if (bl && !is_breakpoint (bl->owner))
5647     return NULL;
5648
5649   if (gdb_evaluates_breakpoint_condition_p ()
5650       || !target_supports_evaluation_of_breakpoint_conditions ())
5651     return condition_evaluation_host;
5652
5653   if (bl && bl->cond_bytecode)
5654     return condition_evaluation_target;
5655   else
5656     return condition_evaluation_host;
5657 }
5658
5659 /* Print the LOC location out of the list of B->LOC locations.  */
5660
5661 static void
5662 print_breakpoint_location (struct breakpoint *b,
5663                            struct bp_location *loc)
5664 {
5665   struct ui_out *uiout = current_uiout;
5666   struct cleanup *old_chain = save_current_program_space ();
5667
5668   if (loc != NULL && loc->shlib_disabled)
5669     loc = NULL;
5670
5671   if (loc != NULL)
5672     set_current_program_space (loc->pspace);
5673
5674   if (b->display_canonical)
5675     ui_out_field_string (uiout, "what", b->addr_string);
5676   else if (loc && loc->source_file)
5677     {
5678       struct symbol *sym 
5679         = find_pc_sect_function (loc->address, loc->section);
5680       if (sym)
5681         {
5682           ui_out_text (uiout, "in ");
5683           ui_out_field_string (uiout, "func",
5684                                SYMBOL_PRINT_NAME (sym));
5685           ui_out_text (uiout, " ");
5686           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5687           ui_out_text (uiout, "at ");
5688         }
5689       ui_out_field_string (uiout, "file", loc->source_file);
5690       ui_out_text (uiout, ":");
5691       
5692       if (ui_out_is_mi_like_p (uiout))
5693         {
5694           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5695           const char *fullname = symtab_to_fullname (sal.symtab);
5696           
5697           if (fullname)
5698             ui_out_field_string (uiout, "fullname", fullname);
5699         }
5700       
5701       ui_out_field_int (uiout, "line", loc->line_number);
5702     }
5703   else if (loc)
5704     {
5705       struct ui_file *stb = mem_fileopen ();
5706       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5707
5708       print_address_symbolic (loc->gdbarch, loc->address, stb,
5709                               demangle, "");
5710       ui_out_field_stream (uiout, "at", stb);
5711
5712       do_cleanups (stb_chain);
5713     }
5714   else
5715     ui_out_field_string (uiout, "pending", b->addr_string);
5716
5717   if (loc && is_breakpoint (b)
5718       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5719       && bp_condition_evaluator (b) == condition_evaluation_both)
5720     {
5721       ui_out_text (uiout, " (");
5722       ui_out_field_string (uiout, "evaluated-by",
5723                            bp_location_condition_evaluator (loc));
5724       ui_out_text (uiout, ")");
5725     }
5726
5727   do_cleanups (old_chain);
5728 }
5729
5730 static const char *
5731 bptype_string (enum bptype type)
5732 {
5733   struct ep_type_description
5734     {
5735       enum bptype type;
5736       char *description;
5737     };
5738   static struct ep_type_description bptypes[] =
5739   {
5740     {bp_none, "?deleted?"},
5741     {bp_breakpoint, "breakpoint"},
5742     {bp_hardware_breakpoint, "hw breakpoint"},
5743     {bp_until, "until"},
5744     {bp_finish, "finish"},
5745     {bp_watchpoint, "watchpoint"},
5746     {bp_hardware_watchpoint, "hw watchpoint"},
5747     {bp_read_watchpoint, "read watchpoint"},
5748     {bp_access_watchpoint, "acc watchpoint"},
5749     {bp_longjmp, "longjmp"},
5750     {bp_longjmp_resume, "longjmp resume"},
5751     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5752     {bp_exception, "exception"},
5753     {bp_exception_resume, "exception resume"},
5754     {bp_step_resume, "step resume"},
5755     {bp_hp_step_resume, "high-priority step resume"},
5756     {bp_watchpoint_scope, "watchpoint scope"},
5757     {bp_call_dummy, "call dummy"},
5758     {bp_std_terminate, "std::terminate"},
5759     {bp_shlib_event, "shlib events"},
5760     {bp_thread_event, "thread events"},
5761     {bp_overlay_event, "overlay events"},
5762     {bp_longjmp_master, "longjmp master"},
5763     {bp_std_terminate_master, "std::terminate master"},
5764     {bp_exception_master, "exception master"},
5765     {bp_catchpoint, "catchpoint"},
5766     {bp_tracepoint, "tracepoint"},
5767     {bp_fast_tracepoint, "fast tracepoint"},
5768     {bp_static_tracepoint, "static tracepoint"},
5769     {bp_dprintf, "dprintf"},
5770     {bp_jit_event, "jit events"},
5771     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5772     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5773   };
5774
5775   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5776       || ((int) type != bptypes[(int) type].type))
5777     internal_error (__FILE__, __LINE__,
5778                     _("bptypes table does not describe type #%d."),
5779                     (int) type);
5780
5781   return bptypes[(int) type].description;
5782 }
5783
5784 /* Print B to gdb_stdout.  */
5785
5786 static void
5787 print_one_breakpoint_location (struct breakpoint *b,
5788                                struct bp_location *loc,
5789                                int loc_number,
5790                                struct bp_location **last_loc,
5791                                int allflag)
5792 {
5793   struct command_line *l;
5794   static char bpenables[] = "nynny";
5795
5796   struct ui_out *uiout = current_uiout;
5797   int header_of_multiple = 0;
5798   int part_of_multiple = (loc != NULL);
5799   struct value_print_options opts;
5800
5801   get_user_print_options (&opts);
5802
5803   gdb_assert (!loc || loc_number != 0);
5804   /* See comment in print_one_breakpoint concerning treatment of
5805      breakpoints with single disabled location.  */
5806   if (loc == NULL 
5807       && (b->loc != NULL 
5808           && (b->loc->next != NULL || !b->loc->enabled)))
5809     header_of_multiple = 1;
5810   if (loc == NULL)
5811     loc = b->loc;
5812
5813   annotate_record ();
5814
5815   /* 1 */
5816   annotate_field (0);
5817   if (part_of_multiple)
5818     {
5819       char *formatted;
5820       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5821       ui_out_field_string (uiout, "number", formatted);
5822       xfree (formatted);
5823     }
5824   else
5825     {
5826       ui_out_field_int (uiout, "number", b->number);
5827     }
5828
5829   /* 2 */
5830   annotate_field (1);
5831   if (part_of_multiple)
5832     ui_out_field_skip (uiout, "type");
5833   else
5834     ui_out_field_string (uiout, "type", bptype_string (b->type));
5835
5836   /* 3 */
5837   annotate_field (2);
5838   if (part_of_multiple)
5839     ui_out_field_skip (uiout, "disp");
5840   else
5841     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5842
5843
5844   /* 4 */
5845   annotate_field (3);
5846   if (part_of_multiple)
5847     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5848   else
5849     ui_out_field_fmt (uiout, "enabled", "%c", 
5850                       bpenables[(int) b->enable_state]);
5851   ui_out_spaces (uiout, 2);
5852
5853   
5854   /* 5 and 6 */
5855   if (b->ops != NULL && b->ops->print_one != NULL)
5856     {
5857       /* Although the print_one can possibly print all locations,
5858          calling it here is not likely to get any nice result.  So,
5859          make sure there's just one location.  */
5860       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5861       b->ops->print_one (b, last_loc);
5862     }
5863   else
5864     switch (b->type)
5865       {
5866       case bp_none:
5867         internal_error (__FILE__, __LINE__,
5868                         _("print_one_breakpoint: bp_none encountered\n"));
5869         break;
5870
5871       case bp_watchpoint:
5872       case bp_hardware_watchpoint:
5873       case bp_read_watchpoint:
5874       case bp_access_watchpoint:
5875         {
5876           struct watchpoint *w = (struct watchpoint *) b;
5877
5878           /* Field 4, the address, is omitted (which makes the columns
5879              not line up too nicely with the headers, but the effect
5880              is relatively readable).  */
5881           if (opts.addressprint)
5882             ui_out_field_skip (uiout, "addr");
5883           annotate_field (5);
5884           ui_out_field_string (uiout, "what", w->exp_string);
5885         }
5886         break;
5887
5888       case bp_breakpoint:
5889       case bp_hardware_breakpoint:
5890       case bp_until:
5891       case bp_finish:
5892       case bp_longjmp:
5893       case bp_longjmp_resume:
5894       case bp_longjmp_call_dummy:
5895       case bp_exception:
5896       case bp_exception_resume:
5897       case bp_step_resume:
5898       case bp_hp_step_resume:
5899       case bp_watchpoint_scope:
5900       case bp_call_dummy:
5901       case bp_std_terminate:
5902       case bp_shlib_event:
5903       case bp_thread_event:
5904       case bp_overlay_event:
5905       case bp_longjmp_master:
5906       case bp_std_terminate_master:
5907       case bp_exception_master:
5908       case bp_tracepoint:
5909       case bp_fast_tracepoint:
5910       case bp_static_tracepoint:
5911       case bp_dprintf:
5912       case bp_jit_event:
5913       case bp_gnu_ifunc_resolver:
5914       case bp_gnu_ifunc_resolver_return:
5915         if (opts.addressprint)
5916           {
5917             annotate_field (4);
5918             if (header_of_multiple)
5919               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5920             else if (b->loc == NULL || loc->shlib_disabled)
5921               ui_out_field_string (uiout, "addr", "<PENDING>");
5922             else
5923               ui_out_field_core_addr (uiout, "addr",
5924                                       loc->gdbarch, loc->address);
5925           }
5926         annotate_field (5);
5927         if (!header_of_multiple)
5928           print_breakpoint_location (b, loc);
5929         if (b->loc)
5930           *last_loc = b->loc;
5931         break;
5932       }
5933
5934
5935   /* For backward compatibility, don't display inferiors unless there
5936      are several.  */
5937   if (loc != NULL
5938       && !header_of_multiple
5939       && (allflag
5940           || (!gdbarch_has_global_breakpoints (target_gdbarch ())
5941               && (number_of_program_spaces () > 1
5942                   || number_of_inferiors () > 1)
5943               /* LOC is for existing B, it cannot be in
5944                  moribund_locations and thus having NULL OWNER.  */
5945               && loc->owner->type != bp_catchpoint)))
5946     {
5947       struct inferior *inf;
5948       int first = 1;
5949
5950       for (inf = inferior_list; inf != NULL; inf = inf->next)
5951         {
5952           if (inf->pspace == loc->pspace)
5953             {
5954               if (first)
5955                 {
5956                   first = 0;
5957                   ui_out_text (uiout, " inf ");
5958                 }
5959               else
5960                 ui_out_text (uiout, ", ");
5961               ui_out_text (uiout, plongest (inf->num));
5962             }
5963         }
5964     }
5965
5966   if (!part_of_multiple)
5967     {
5968       if (b->thread != -1)
5969         {
5970           /* FIXME: This seems to be redundant and lost here; see the
5971              "stop only in" line a little further down.  */
5972           ui_out_text (uiout, " thread ");
5973           ui_out_field_int (uiout, "thread", b->thread);
5974         }
5975       else if (b->task != 0)
5976         {
5977           ui_out_text (uiout, " task ");
5978           ui_out_field_int (uiout, "task", b->task);
5979         }
5980     }
5981
5982   ui_out_text (uiout, "\n");
5983
5984   if (!part_of_multiple)
5985     b->ops->print_one_detail (b, uiout);
5986
5987   if (part_of_multiple && frame_id_p (b->frame_id))
5988     {
5989       annotate_field (6);
5990       ui_out_text (uiout, "\tstop only in stack frame at ");
5991       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5992          the frame ID.  */
5993       ui_out_field_core_addr (uiout, "frame",
5994                               b->gdbarch, b->frame_id.stack_addr);
5995       ui_out_text (uiout, "\n");
5996     }
5997   
5998   if (!part_of_multiple && b->cond_string)
5999     {
6000       annotate_field (7);
6001       if (is_tracepoint (b))
6002         ui_out_text (uiout, "\ttrace only if ");
6003       else
6004         ui_out_text (uiout, "\tstop only if ");
6005       ui_out_field_string (uiout, "cond", b->cond_string);
6006
6007       /* Print whether the target is doing the breakpoint's condition
6008          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6009       if (is_breakpoint (b)
6010           && breakpoint_condition_evaluation_mode ()
6011           == condition_evaluation_target)
6012         {
6013           ui_out_text (uiout, " (");
6014           ui_out_field_string (uiout, "evaluated-by",
6015                                bp_condition_evaluator (b));
6016           ui_out_text (uiout, " evals)");
6017         }
6018       ui_out_text (uiout, "\n");
6019     }
6020
6021   if (!part_of_multiple && b->thread != -1)
6022     {
6023       /* FIXME should make an annotation for this.  */
6024       ui_out_text (uiout, "\tstop only in thread ");
6025       ui_out_field_int (uiout, "thread", b->thread);
6026       ui_out_text (uiout, "\n");
6027     }
6028   
6029   if (!part_of_multiple)
6030     {
6031       if (b->hit_count)
6032         {
6033           /* FIXME should make an annotation for this.  */
6034           if (is_catchpoint (b))
6035             ui_out_text (uiout, "\tcatchpoint");
6036           else if (is_tracepoint (b))
6037             ui_out_text (uiout, "\ttracepoint");
6038           else
6039             ui_out_text (uiout, "\tbreakpoint");
6040           ui_out_text (uiout, " already hit ");
6041           ui_out_field_int (uiout, "times", b->hit_count);
6042           if (b->hit_count == 1)
6043             ui_out_text (uiout, " time\n");
6044           else
6045             ui_out_text (uiout, " times\n");
6046         }
6047       else
6048         {
6049           /* Output the count also if it is zero, but only if this is mi.  */
6050           if (ui_out_is_mi_like_p (uiout))
6051             ui_out_field_int (uiout, "times", b->hit_count);
6052         }
6053     }
6054
6055   if (!part_of_multiple && b->ignore_count)
6056     {
6057       annotate_field (8);
6058       ui_out_text (uiout, "\tignore next ");
6059       ui_out_field_int (uiout, "ignore", b->ignore_count);
6060       ui_out_text (uiout, " hits\n");
6061     }
6062
6063   /* Note that an enable count of 1 corresponds to "enable once"
6064      behavior, which is reported by the combination of enablement and
6065      disposition, so we don't need to mention it here.  */
6066   if (!part_of_multiple && b->enable_count > 1)
6067     {
6068       annotate_field (8);
6069       ui_out_text (uiout, "\tdisable after ");
6070       /* Tweak the wording to clarify that ignore and enable counts
6071          are distinct, and have additive effect.  */
6072       if (b->ignore_count)
6073         ui_out_text (uiout, "additional ");
6074       else
6075         ui_out_text (uiout, "next ");
6076       ui_out_field_int (uiout, "enable", b->enable_count);
6077       ui_out_text (uiout, " hits\n");
6078     }
6079
6080   if (!part_of_multiple && is_tracepoint (b))
6081     {
6082       struct tracepoint *tp = (struct tracepoint *) b;
6083
6084       if (tp->traceframe_usage)
6085         {
6086           ui_out_text (uiout, "\ttrace buffer usage ");
6087           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6088           ui_out_text (uiout, " bytes\n");
6089         }
6090     }
6091   
6092   if (!part_of_multiple && b->extra_string
6093       && b->type == bp_dprintf && !b->commands)
6094     {
6095       annotate_field (7);
6096       ui_out_text (uiout, "\t(agent printf) ");
6097       ui_out_field_string (uiout, "printf", b->extra_string);
6098       ui_out_text (uiout, "\n");
6099     }
6100
6101   l = b->commands ? b->commands->commands : NULL;
6102   if (!part_of_multiple && l)
6103     {
6104       struct cleanup *script_chain;
6105
6106       annotate_field (9);
6107       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6108       print_command_lines (uiout, l, 4);
6109       do_cleanups (script_chain);
6110     }
6111
6112   if (is_tracepoint (b))
6113     {
6114       struct tracepoint *t = (struct tracepoint *) b;
6115
6116       if (!part_of_multiple && t->pass_count)
6117         {
6118           annotate_field (10);
6119           ui_out_text (uiout, "\tpass count ");
6120           ui_out_field_int (uiout, "pass", t->pass_count);
6121           ui_out_text (uiout, " \n");
6122         }
6123
6124       /* Don't display it when tracepoint or tracepoint location is
6125          pending.   */
6126       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6127         {
6128           annotate_field (11);
6129
6130           if (ui_out_is_mi_like_p (uiout))
6131             ui_out_field_string (uiout, "installed",
6132                                  loc->inserted ? "y" : "n");
6133           else
6134             {
6135               if (loc->inserted)
6136                 ui_out_text (uiout, "\t");
6137               else
6138                 ui_out_text (uiout, "\tnot ");
6139               ui_out_text (uiout, "installed on target\n");
6140             }
6141         }
6142     }
6143
6144   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6145     {
6146       if (is_watchpoint (b))
6147         {
6148           struct watchpoint *w = (struct watchpoint *) b;
6149
6150           ui_out_field_string (uiout, "original-location", w->exp_string);
6151         }
6152       else if (b->addr_string)
6153         ui_out_field_string (uiout, "original-location", b->addr_string);
6154     }
6155 }
6156
6157 static void
6158 print_one_breakpoint (struct breakpoint *b,
6159                       struct bp_location **last_loc, 
6160                       int allflag)
6161 {
6162   struct cleanup *bkpt_chain;
6163   struct ui_out *uiout = current_uiout;
6164
6165   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6166
6167   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6168   do_cleanups (bkpt_chain);
6169
6170   /* If this breakpoint has custom print function,
6171      it's already printed.  Otherwise, print individual
6172      locations, if any.  */
6173   if (b->ops == NULL || b->ops->print_one == NULL)
6174     {
6175       /* If breakpoint has a single location that is disabled, we
6176          print it as if it had several locations, since otherwise it's
6177          hard to represent "breakpoint enabled, location disabled"
6178          situation.
6179
6180          Note that while hardware watchpoints have several locations
6181          internally, that's not a property exposed to user.  */
6182       if (b->loc 
6183           && !is_hardware_watchpoint (b)
6184           && (b->loc->next || !b->loc->enabled))
6185         {
6186           struct bp_location *loc;
6187           int n = 1;
6188
6189           for (loc = b->loc; loc; loc = loc->next, ++n)
6190             {
6191               struct cleanup *inner2 =
6192                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6193               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6194               do_cleanups (inner2);
6195             }
6196         }
6197     }
6198 }
6199
6200 static int
6201 breakpoint_address_bits (struct breakpoint *b)
6202 {
6203   int print_address_bits = 0;
6204   struct bp_location *loc;
6205
6206   for (loc = b->loc; loc; loc = loc->next)
6207     {
6208       int addr_bit;
6209
6210       /* Software watchpoints that aren't watching memory don't have
6211          an address to print.  */
6212       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6213         continue;
6214
6215       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6216       if (addr_bit > print_address_bits)
6217         print_address_bits = addr_bit;
6218     }
6219
6220   return print_address_bits;
6221 }
6222
6223 struct captured_breakpoint_query_args
6224   {
6225     int bnum;
6226   };
6227
6228 static int
6229 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6230 {
6231   struct captured_breakpoint_query_args *args = data;
6232   struct breakpoint *b;
6233   struct bp_location *dummy_loc = NULL;
6234
6235   ALL_BREAKPOINTS (b)
6236     {
6237       if (args->bnum == b->number)
6238         {
6239           print_one_breakpoint (b, &dummy_loc, 0);
6240           return GDB_RC_OK;
6241         }
6242     }
6243   return GDB_RC_NONE;
6244 }
6245
6246 enum gdb_rc
6247 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6248                       char **error_message)
6249 {
6250   struct captured_breakpoint_query_args args;
6251
6252   args.bnum = bnum;
6253   /* For the moment we don't trust print_one_breakpoint() to not throw
6254      an error.  */
6255   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6256                                  error_message, RETURN_MASK_ALL) < 0)
6257     return GDB_RC_FAIL;
6258   else
6259     return GDB_RC_OK;
6260 }
6261
6262 /* Return true if this breakpoint was set by the user, false if it is
6263    internal or momentary.  */
6264
6265 int
6266 user_breakpoint_p (struct breakpoint *b)
6267 {
6268   return b->number > 0;
6269 }
6270
6271 /* Print information on user settable breakpoint (watchpoint, etc)
6272    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6273    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6274    FILTER is non-NULL, call it on each breakpoint and only include the
6275    ones for which it returns non-zero.  Return the total number of
6276    breakpoints listed.  */
6277
6278 static int
6279 breakpoint_1 (char *args, int allflag, 
6280               int (*filter) (const struct breakpoint *))
6281 {
6282   struct breakpoint *b;
6283   struct bp_location *last_loc = NULL;
6284   int nr_printable_breakpoints;
6285   struct cleanup *bkpttbl_chain;
6286   struct value_print_options opts;
6287   int print_address_bits = 0;
6288   int print_type_col_width = 14;
6289   struct ui_out *uiout = current_uiout;
6290
6291   get_user_print_options (&opts);
6292
6293   /* Compute the number of rows in the table, as well as the size
6294      required for address fields.  */
6295   nr_printable_breakpoints = 0;
6296   ALL_BREAKPOINTS (b)
6297     {
6298       /* If we have a filter, only list the breakpoints it accepts.  */
6299       if (filter && !filter (b))
6300         continue;
6301
6302       /* If we have an "args" string, it is a list of breakpoints to 
6303          accept.  Skip the others.  */
6304       if (args != NULL && *args != '\0')
6305         {
6306           if (allflag && parse_and_eval_long (args) != b->number)
6307             continue;
6308           if (!allflag && !number_is_in_list (args, b->number))
6309             continue;
6310         }
6311
6312       if (allflag || user_breakpoint_p (b))
6313         {
6314           int addr_bit, type_len;
6315
6316           addr_bit = breakpoint_address_bits (b);
6317           if (addr_bit > print_address_bits)
6318             print_address_bits = addr_bit;
6319
6320           type_len = strlen (bptype_string (b->type));
6321           if (type_len > print_type_col_width)
6322             print_type_col_width = type_len;
6323
6324           nr_printable_breakpoints++;
6325         }
6326     }
6327
6328   if (opts.addressprint)
6329     bkpttbl_chain 
6330       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6331                                              nr_printable_breakpoints,
6332                                              "BreakpointTable");
6333   else
6334     bkpttbl_chain 
6335       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6336                                              nr_printable_breakpoints,
6337                                              "BreakpointTable");
6338
6339   if (nr_printable_breakpoints > 0)
6340     annotate_breakpoints_headers ();
6341   if (nr_printable_breakpoints > 0)
6342     annotate_field (0);
6343   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6344   if (nr_printable_breakpoints > 0)
6345     annotate_field (1);
6346   ui_out_table_header (uiout, print_type_col_width, ui_left,
6347                        "type", "Type");                         /* 2 */
6348   if (nr_printable_breakpoints > 0)
6349     annotate_field (2);
6350   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6351   if (nr_printable_breakpoints > 0)
6352     annotate_field (3);
6353   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6354   if (opts.addressprint)
6355     {
6356       if (nr_printable_breakpoints > 0)
6357         annotate_field (4);
6358       if (print_address_bits <= 32)
6359         ui_out_table_header (uiout, 10, ui_left, 
6360                              "addr", "Address");                /* 5 */
6361       else
6362         ui_out_table_header (uiout, 18, ui_left, 
6363                              "addr", "Address");                /* 5 */
6364     }
6365   if (nr_printable_breakpoints > 0)
6366     annotate_field (5);
6367   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6368   ui_out_table_body (uiout);
6369   if (nr_printable_breakpoints > 0)
6370     annotate_breakpoints_table ();
6371
6372   ALL_BREAKPOINTS (b)
6373     {
6374       QUIT;
6375       /* If we have a filter, only list the breakpoints it accepts.  */
6376       if (filter && !filter (b))
6377         continue;
6378
6379       /* If we have an "args" string, it is a list of breakpoints to 
6380          accept.  Skip the others.  */
6381
6382       if (args != NULL && *args != '\0')
6383         {
6384           if (allflag)  /* maintenance info breakpoint */
6385             {
6386               if (parse_and_eval_long (args) != b->number)
6387                 continue;
6388             }
6389           else          /* all others */
6390             {
6391               if (!number_is_in_list (args, b->number))
6392                 continue;
6393             }
6394         }
6395       /* We only print out user settable breakpoints unless the
6396          allflag is set.  */
6397       if (allflag || user_breakpoint_p (b))
6398         print_one_breakpoint (b, &last_loc, allflag);
6399     }
6400
6401   do_cleanups (bkpttbl_chain);
6402
6403   if (nr_printable_breakpoints == 0)
6404     {
6405       /* If there's a filter, let the caller decide how to report
6406          empty list.  */
6407       if (!filter)
6408         {
6409           if (args == NULL || *args == '\0')
6410             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6411           else
6412             ui_out_message (uiout, 0, 
6413                             "No breakpoint or watchpoint matching '%s'.\n",
6414                             args);
6415         }
6416     }
6417   else
6418     {
6419       if (last_loc && !server_command)
6420         set_next_address (last_loc->gdbarch, last_loc->address);
6421     }
6422
6423   /* FIXME?  Should this be moved up so that it is only called when
6424      there have been breakpoints? */
6425   annotate_breakpoints_table_end ();
6426
6427   return nr_printable_breakpoints;
6428 }
6429
6430 /* Display the value of default-collect in a way that is generally
6431    compatible with the breakpoint list.  */
6432
6433 static void
6434 default_collect_info (void)
6435 {
6436   struct ui_out *uiout = current_uiout;
6437
6438   /* If it has no value (which is frequently the case), say nothing; a
6439      message like "No default-collect." gets in user's face when it's
6440      not wanted.  */
6441   if (!*default_collect)
6442     return;
6443
6444   /* The following phrase lines up nicely with per-tracepoint collect
6445      actions.  */
6446   ui_out_text (uiout, "default collect ");
6447   ui_out_field_string (uiout, "default-collect", default_collect);
6448   ui_out_text (uiout, " \n");
6449 }
6450   
6451 static void
6452 breakpoints_info (char *args, int from_tty)
6453 {
6454   breakpoint_1 (args, 0, NULL);
6455
6456   default_collect_info ();
6457 }
6458
6459 static void
6460 watchpoints_info (char *args, int from_tty)
6461 {
6462   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6463   struct ui_out *uiout = current_uiout;
6464
6465   if (num_printed == 0)
6466     {
6467       if (args == NULL || *args == '\0')
6468         ui_out_message (uiout, 0, "No watchpoints.\n");
6469       else
6470         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6471     }
6472 }
6473
6474 static void
6475 maintenance_info_breakpoints (char *args, int from_tty)
6476 {
6477   breakpoint_1 (args, 1, NULL);
6478
6479   default_collect_info ();
6480 }
6481
6482 static int
6483 breakpoint_has_pc (struct breakpoint *b,
6484                    struct program_space *pspace,
6485                    CORE_ADDR pc, struct obj_section *section)
6486 {
6487   struct bp_location *bl = b->loc;
6488
6489   for (; bl; bl = bl->next)
6490     {
6491       if (bl->pspace == pspace
6492           && bl->address == pc
6493           && (!overlay_debugging || bl->section == section))
6494         return 1;         
6495     }
6496   return 0;
6497 }
6498
6499 /* Print a message describing any user-breakpoints set at PC.  This
6500    concerns with logical breakpoints, so we match program spaces, not
6501    address spaces.  */
6502
6503 static void
6504 describe_other_breakpoints (struct gdbarch *gdbarch,
6505                             struct program_space *pspace, CORE_ADDR pc,
6506                             struct obj_section *section, int thread)
6507 {
6508   int others = 0;
6509   struct breakpoint *b;
6510
6511   ALL_BREAKPOINTS (b)
6512     others += (user_breakpoint_p (b)
6513                && breakpoint_has_pc (b, pspace, pc, section));
6514   if (others > 0)
6515     {
6516       if (others == 1)
6517         printf_filtered (_("Note: breakpoint "));
6518       else /* if (others == ???) */
6519         printf_filtered (_("Note: breakpoints "));
6520       ALL_BREAKPOINTS (b)
6521         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6522           {
6523             others--;
6524             printf_filtered ("%d", b->number);
6525             if (b->thread == -1 && thread != -1)
6526               printf_filtered (" (all threads)");
6527             else if (b->thread != -1)
6528               printf_filtered (" (thread %d)", b->thread);
6529             printf_filtered ("%s%s ",
6530                              ((b->enable_state == bp_disabled
6531                                || b->enable_state == bp_call_disabled)
6532                               ? " (disabled)"
6533                               : b->enable_state == bp_permanent 
6534                               ? " (permanent)"
6535                               : ""),
6536                              (others > 1) ? "," 
6537                              : ((others == 1) ? " and" : ""));
6538           }
6539       printf_filtered (_("also set at pc "));
6540       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6541       printf_filtered (".\n");
6542     }
6543 }
6544 \f
6545
6546 /* Return true iff it is meaningful to use the address member of
6547    BPT.  For some breakpoint types, the address member is irrelevant
6548    and it makes no sense to attempt to compare it to other addresses
6549    (or use it for any other purpose either).
6550
6551    More specifically, each of the following breakpoint types will
6552    always have a zero valued address and we don't want to mark
6553    breakpoints of any of these types to be a duplicate of an actual
6554    breakpoint at address zero:
6555
6556       bp_watchpoint
6557       bp_catchpoint
6558
6559 */
6560
6561 static int
6562 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6563 {
6564   enum bptype type = bpt->type;
6565
6566   return (type != bp_watchpoint && type != bp_catchpoint);
6567 }
6568
6569 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6570    true if LOC1 and LOC2 represent the same watchpoint location.  */
6571
6572 static int
6573 watchpoint_locations_match (struct bp_location *loc1, 
6574                             struct bp_location *loc2)
6575 {
6576   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6577   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6578
6579   /* Both of them must exist.  */
6580   gdb_assert (w1 != NULL);
6581   gdb_assert (w2 != NULL);
6582
6583   /* If the target can evaluate the condition expression in hardware,
6584      then we we need to insert both watchpoints even if they are at
6585      the same place.  Otherwise the watchpoint will only trigger when
6586      the condition of whichever watchpoint was inserted evaluates to
6587      true, not giving a chance for GDB to check the condition of the
6588      other watchpoint.  */
6589   if ((w1->cond_exp
6590        && target_can_accel_watchpoint_condition (loc1->address, 
6591                                                  loc1->length,
6592                                                  loc1->watchpoint_type,
6593                                                  w1->cond_exp))
6594       || (w2->cond_exp
6595           && target_can_accel_watchpoint_condition (loc2->address, 
6596                                                     loc2->length,
6597                                                     loc2->watchpoint_type,
6598                                                     w2->cond_exp)))
6599     return 0;
6600
6601   /* Note that this checks the owner's type, not the location's.  In
6602      case the target does not support read watchpoints, but does
6603      support access watchpoints, we'll have bp_read_watchpoint
6604      watchpoints with hw_access locations.  Those should be considered
6605      duplicates of hw_read locations.  The hw_read locations will
6606      become hw_access locations later.  */
6607   return (loc1->owner->type == loc2->owner->type
6608           && loc1->pspace->aspace == loc2->pspace->aspace
6609           && loc1->address == loc2->address
6610           && loc1->length == loc2->length);
6611 }
6612
6613 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6614    same breakpoint location.  In most targets, this can only be true
6615    if ASPACE1 matches ASPACE2.  On targets that have global
6616    breakpoints, the address space doesn't really matter.  */
6617
6618 static int
6619 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6620                           struct address_space *aspace2, CORE_ADDR addr2)
6621 {
6622   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6623            || aspace1 == aspace2)
6624           && addr1 == addr2);
6625 }
6626
6627 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6628    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6629    matches ASPACE2.  On targets that have global breakpoints, the address
6630    space doesn't really matter.  */
6631
6632 static int
6633 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6634                                 int len1, struct address_space *aspace2,
6635                                 CORE_ADDR addr2)
6636 {
6637   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6638            || aspace1 == aspace2)
6639           && addr2 >= addr1 && addr2 < addr1 + len1);
6640 }
6641
6642 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6643    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6644    matches the breakpoint's address space.  On targets that have global
6645    breakpoints, the address space doesn't really matter.  */
6646
6647 static int
6648 breakpoint_location_address_match (struct bp_location *bl,
6649                                    struct address_space *aspace,
6650                                    CORE_ADDR addr)
6651 {
6652   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6653                                     aspace, addr)
6654           || (bl->length
6655               && breakpoint_address_match_range (bl->pspace->aspace,
6656                                                  bl->address, bl->length,
6657                                                  aspace, addr)));
6658 }
6659
6660 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6661    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6662    true, otherwise returns false.  */
6663
6664 static int
6665 tracepoint_locations_match (struct bp_location *loc1,
6666                             struct bp_location *loc2)
6667 {
6668   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6669     /* Since tracepoint locations are never duplicated with others', tracepoint
6670        locations at the same address of different tracepoints are regarded as
6671        different locations.  */
6672     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6673   else
6674     return 0;
6675 }
6676
6677 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6678    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6679    represent the same location.  */
6680
6681 static int
6682 breakpoint_locations_match (struct bp_location *loc1, 
6683                             struct bp_location *loc2)
6684 {
6685   int hw_point1, hw_point2;
6686
6687   /* Both of them must not be in moribund_locations.  */
6688   gdb_assert (loc1->owner != NULL);
6689   gdb_assert (loc2->owner != NULL);
6690
6691   hw_point1 = is_hardware_watchpoint (loc1->owner);
6692   hw_point2 = is_hardware_watchpoint (loc2->owner);
6693
6694   if (hw_point1 != hw_point2)
6695     return 0;
6696   else if (hw_point1)
6697     return watchpoint_locations_match (loc1, loc2);
6698   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6699     return tracepoint_locations_match (loc1, loc2);
6700   else
6701     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6702     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6703                                      loc2->pspace->aspace, loc2->address)
6704             && loc1->length == loc2->length);
6705 }
6706
6707 static void
6708 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6709                                int bnum, int have_bnum)
6710 {
6711   /* The longest string possibly returned by hex_string_custom
6712      is 50 chars.  These must be at least that big for safety.  */
6713   char astr1[64];
6714   char astr2[64];
6715
6716   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6717   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6718   if (have_bnum)
6719     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6720              bnum, astr1, astr2);
6721   else
6722     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6723 }
6724
6725 /* Adjust a breakpoint's address to account for architectural
6726    constraints on breakpoint placement.  Return the adjusted address.
6727    Note: Very few targets require this kind of adjustment.  For most
6728    targets, this function is simply the identity function.  */
6729
6730 static CORE_ADDR
6731 adjust_breakpoint_address (struct gdbarch *gdbarch,
6732                            CORE_ADDR bpaddr, enum bptype bptype)
6733 {
6734   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6735     {
6736       /* Very few targets need any kind of breakpoint adjustment.  */
6737       return bpaddr;
6738     }
6739   else if (bptype == bp_watchpoint
6740            || bptype == bp_hardware_watchpoint
6741            || bptype == bp_read_watchpoint
6742            || bptype == bp_access_watchpoint
6743            || bptype == bp_catchpoint)
6744     {
6745       /* Watchpoints and the various bp_catch_* eventpoints should not
6746          have their addresses modified.  */
6747       return bpaddr;
6748     }
6749   else
6750     {
6751       CORE_ADDR adjusted_bpaddr;
6752
6753       /* Some targets have architectural constraints on the placement
6754          of breakpoint instructions.  Obtain the adjusted address.  */
6755       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6756
6757       /* An adjusted breakpoint address can significantly alter
6758          a user's expectations.  Print a warning if an adjustment
6759          is required.  */
6760       if (adjusted_bpaddr != bpaddr)
6761         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6762
6763       return adjusted_bpaddr;
6764     }
6765 }
6766
6767 void
6768 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6769                   struct breakpoint *owner)
6770 {
6771   memset (loc, 0, sizeof (*loc));
6772
6773   gdb_assert (ops != NULL);
6774
6775   loc->ops = ops;
6776   loc->owner = owner;
6777   loc->cond = NULL;
6778   loc->cond_bytecode = NULL;
6779   loc->shlib_disabled = 0;
6780   loc->enabled = 1;
6781
6782   switch (owner->type)
6783     {
6784     case bp_breakpoint:
6785     case bp_until:
6786     case bp_finish:
6787     case bp_longjmp:
6788     case bp_longjmp_resume:
6789     case bp_longjmp_call_dummy:
6790     case bp_exception:
6791     case bp_exception_resume:
6792     case bp_step_resume:
6793     case bp_hp_step_resume:
6794     case bp_watchpoint_scope:
6795     case bp_call_dummy:
6796     case bp_std_terminate:
6797     case bp_shlib_event:
6798     case bp_thread_event:
6799     case bp_overlay_event:
6800     case bp_jit_event:
6801     case bp_longjmp_master:
6802     case bp_std_terminate_master:
6803     case bp_exception_master:
6804     case bp_gnu_ifunc_resolver:
6805     case bp_gnu_ifunc_resolver_return:
6806     case bp_dprintf:
6807       loc->loc_type = bp_loc_software_breakpoint;
6808       mark_breakpoint_location_modified (loc);
6809       break;
6810     case bp_hardware_breakpoint:
6811       loc->loc_type = bp_loc_hardware_breakpoint;
6812       mark_breakpoint_location_modified (loc);
6813       break;
6814     case bp_hardware_watchpoint:
6815     case bp_read_watchpoint:
6816     case bp_access_watchpoint:
6817       loc->loc_type = bp_loc_hardware_watchpoint;
6818       break;
6819     case bp_watchpoint:
6820     case bp_catchpoint:
6821     case bp_tracepoint:
6822     case bp_fast_tracepoint:
6823     case bp_static_tracepoint:
6824       loc->loc_type = bp_loc_other;
6825       break;
6826     default:
6827       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6828     }
6829
6830   loc->refc = 1;
6831 }
6832
6833 /* Allocate a struct bp_location.  */
6834
6835 static struct bp_location *
6836 allocate_bp_location (struct breakpoint *bpt)
6837 {
6838   return bpt->ops->allocate_location (bpt);
6839 }
6840
6841 static void
6842 free_bp_location (struct bp_location *loc)
6843 {
6844   loc->ops->dtor (loc);
6845   xfree (loc);
6846 }
6847
6848 /* Increment reference count.  */
6849
6850 static void
6851 incref_bp_location (struct bp_location *bl)
6852 {
6853   ++bl->refc;
6854 }
6855
6856 /* Decrement reference count.  If the reference count reaches 0,
6857    destroy the bp_location.  Sets *BLP to NULL.  */
6858
6859 static void
6860 decref_bp_location (struct bp_location **blp)
6861 {
6862   gdb_assert ((*blp)->refc > 0);
6863
6864   if (--(*blp)->refc == 0)
6865     free_bp_location (*blp);
6866   *blp = NULL;
6867 }
6868
6869 /* Add breakpoint B at the end of the global breakpoint chain.  */
6870
6871 static void
6872 add_to_breakpoint_chain (struct breakpoint *b)
6873 {
6874   struct breakpoint *b1;
6875
6876   /* Add this breakpoint to the end of the chain so that a list of
6877      breakpoints will come out in order of increasing numbers.  */
6878
6879   b1 = breakpoint_chain;
6880   if (b1 == 0)
6881     breakpoint_chain = b;
6882   else
6883     {
6884       while (b1->next)
6885         b1 = b1->next;
6886       b1->next = b;
6887     }
6888 }
6889
6890 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6891
6892 static void
6893 init_raw_breakpoint_without_location (struct breakpoint *b,
6894                                       struct gdbarch *gdbarch,
6895                                       enum bptype bptype,
6896                                       const struct breakpoint_ops *ops)
6897 {
6898   memset (b, 0, sizeof (*b));
6899
6900   gdb_assert (ops != NULL);
6901
6902   b->ops = ops;
6903   b->type = bptype;
6904   b->gdbarch = gdbarch;
6905   b->language = current_language->la_language;
6906   b->input_radix = input_radix;
6907   b->thread = -1;
6908   b->enable_state = bp_enabled;
6909   b->next = 0;
6910   b->silent = 0;
6911   b->ignore_count = 0;
6912   b->commands = NULL;
6913   b->frame_id = null_frame_id;
6914   b->condition_not_parsed = 0;
6915   b->py_bp_object = NULL;
6916   b->related_breakpoint = b;
6917 }
6918
6919 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6920    that has type BPTYPE and has no locations as yet.  */
6921
6922 static struct breakpoint *
6923 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6924                                      enum bptype bptype,
6925                                      const struct breakpoint_ops *ops)
6926 {
6927   struct breakpoint *b = XNEW (struct breakpoint);
6928
6929   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6930   add_to_breakpoint_chain (b);
6931   return b;
6932 }
6933
6934 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6935    resolutions should be made as the user specified the location explicitly
6936    enough.  */
6937
6938 static void
6939 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6940 {
6941   gdb_assert (loc->owner != NULL);
6942
6943   if (loc->owner->type == bp_breakpoint
6944       || loc->owner->type == bp_hardware_breakpoint
6945       || is_tracepoint (loc->owner))
6946     {
6947       int is_gnu_ifunc;
6948       const char *function_name;
6949       CORE_ADDR func_addr;
6950
6951       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6952                                           &func_addr, NULL, &is_gnu_ifunc);
6953
6954       if (is_gnu_ifunc && !explicit_loc)
6955         {
6956           struct breakpoint *b = loc->owner;
6957
6958           gdb_assert (loc->pspace == current_program_space);
6959           if (gnu_ifunc_resolve_name (function_name,
6960                                       &loc->requested_address))
6961             {
6962               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6963               loc->address = adjust_breakpoint_address (loc->gdbarch,
6964                                                         loc->requested_address,
6965                                                         b->type);
6966             }
6967           else if (b->type == bp_breakpoint && b->loc == loc
6968                    && loc->next == NULL && b->related_breakpoint == b)
6969             {
6970               /* Create only the whole new breakpoint of this type but do not
6971                  mess more complicated breakpoints with multiple locations.  */
6972               b->type = bp_gnu_ifunc_resolver;
6973               /* Remember the resolver's address for use by the return
6974                  breakpoint.  */
6975               loc->related_address = func_addr;
6976             }
6977         }
6978
6979       if (function_name)
6980         loc->function_name = xstrdup (function_name);
6981     }
6982 }
6983
6984 /* Attempt to determine architecture of location identified by SAL.  */
6985 struct gdbarch *
6986 get_sal_arch (struct symtab_and_line sal)
6987 {
6988   if (sal.section)
6989     return get_objfile_arch (sal.section->objfile);
6990   if (sal.symtab)
6991     return get_objfile_arch (sal.symtab->objfile);
6992
6993   return NULL;
6994 }
6995
6996 /* Low level routine for partially initializing a breakpoint of type
6997    BPTYPE.  The newly created breakpoint's address, section, source
6998    file name, and line number are provided by SAL.
6999
7000    It is expected that the caller will complete the initialization of
7001    the newly created breakpoint struct as well as output any status
7002    information regarding the creation of a new breakpoint.  */
7003
7004 static void
7005 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7006                      struct symtab_and_line sal, enum bptype bptype,
7007                      const struct breakpoint_ops *ops)
7008 {
7009   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7010
7011   add_location_to_breakpoint (b, &sal);
7012
7013   if (bptype != bp_catchpoint)
7014     gdb_assert (sal.pspace != NULL);
7015
7016   /* Store the program space that was used to set the breakpoint,
7017      except for ordinary breakpoints, which are independent of the
7018      program space.  */
7019   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7020     b->pspace = sal.pspace;
7021
7022   annotate_breakpoints_changed ();
7023 }
7024
7025 /* set_raw_breakpoint is a low level routine for allocating and
7026    partially initializing a breakpoint of type BPTYPE.  The newly
7027    created breakpoint's address, section, source file name, and line
7028    number are provided by SAL.  The newly created and partially
7029    initialized breakpoint is added to the breakpoint chain and
7030    is also returned as the value of this function.
7031
7032    It is expected that the caller will complete the initialization of
7033    the newly created breakpoint struct as well as output any status
7034    information regarding the creation of a new breakpoint.  In
7035    particular, set_raw_breakpoint does NOT set the breakpoint
7036    number!  Care should be taken to not allow an error to occur
7037    prior to completing the initialization of the breakpoint.  If this
7038    should happen, a bogus breakpoint will be left on the chain.  */
7039
7040 struct breakpoint *
7041 set_raw_breakpoint (struct gdbarch *gdbarch,
7042                     struct symtab_and_line sal, enum bptype bptype,
7043                     const struct breakpoint_ops *ops)
7044 {
7045   struct breakpoint *b = XNEW (struct breakpoint);
7046
7047   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7048   add_to_breakpoint_chain (b);
7049   return b;
7050 }
7051
7052
7053 /* Note that the breakpoint object B describes a permanent breakpoint
7054    instruction, hard-wired into the inferior's code.  */
7055 void
7056 make_breakpoint_permanent (struct breakpoint *b)
7057 {
7058   struct bp_location *bl;
7059
7060   b->enable_state = bp_permanent;
7061
7062   /* By definition, permanent breakpoints are already present in the
7063      code.  Mark all locations as inserted.  For now,
7064      make_breakpoint_permanent is called in just one place, so it's
7065      hard to say if it's reasonable to have permanent breakpoint with
7066      multiple locations or not, but it's easy to implement.  */
7067   for (bl = b->loc; bl; bl = bl->next)
7068     bl->inserted = 1;
7069 }
7070
7071 /* Call this routine when stepping and nexting to enable a breakpoint
7072    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7073    initiated the operation.  */
7074
7075 void
7076 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7077 {
7078   struct breakpoint *b, *b_tmp;
7079   int thread = tp->num;
7080
7081   /* To avoid having to rescan all objfile symbols at every step,
7082      we maintain a list of continually-inserted but always disabled
7083      longjmp "master" breakpoints.  Here, we simply create momentary
7084      clones of those and enable them for the requested thread.  */
7085   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7086     if (b->pspace == current_program_space
7087         && (b->type == bp_longjmp_master
7088             || b->type == bp_exception_master))
7089       {
7090         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7091         struct breakpoint *clone;
7092
7093         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7094            after their removal.  */
7095         clone = momentary_breakpoint_from_master (b, type,
7096                                                   &longjmp_breakpoint_ops);
7097         clone->thread = thread;
7098       }
7099
7100   tp->initiating_frame = frame;
7101 }
7102
7103 /* Delete all longjmp breakpoints from THREAD.  */
7104 void
7105 delete_longjmp_breakpoint (int thread)
7106 {
7107   struct breakpoint *b, *b_tmp;
7108
7109   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7110     if (b->type == bp_longjmp || b->type == bp_exception)
7111       {
7112         if (b->thread == thread)
7113           delete_breakpoint (b);
7114       }
7115 }
7116
7117 void
7118 delete_longjmp_breakpoint_at_next_stop (int thread)
7119 {
7120   struct breakpoint *b, *b_tmp;
7121
7122   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7123     if (b->type == bp_longjmp || b->type == bp_exception)
7124       {
7125         if (b->thread == thread)
7126           b->disposition = disp_del_at_next_stop;
7127       }
7128 }
7129
7130 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7131    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7132    pointer to any of them.  Return NULL if this system cannot place longjmp
7133    breakpoints.  */
7134
7135 struct breakpoint *
7136 set_longjmp_breakpoint_for_call_dummy (void)
7137 {
7138   struct breakpoint *b, *retval = NULL;
7139
7140   ALL_BREAKPOINTS (b)
7141     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7142       {
7143         struct breakpoint *new_b;
7144
7145         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7146                                                   &momentary_breakpoint_ops);
7147         new_b->thread = pid_to_thread_id (inferior_ptid);
7148
7149         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7150
7151         gdb_assert (new_b->related_breakpoint == new_b);
7152         if (retval == NULL)
7153           retval = new_b;
7154         new_b->related_breakpoint = retval;
7155         while (retval->related_breakpoint != new_b->related_breakpoint)
7156           retval = retval->related_breakpoint;
7157         retval->related_breakpoint = new_b;
7158       }
7159
7160   return retval;
7161 }
7162
7163 /* Verify all existing dummy frames and their associated breakpoints for
7164    THREAD.  Remove those which can no longer be found in the current frame
7165    stack.
7166
7167    You should call this function only at places where it is safe to currently
7168    unwind the whole stack.  Failed stack unwind would discard live dummy
7169    frames.  */
7170
7171 void
7172 check_longjmp_breakpoint_for_call_dummy (int thread)
7173 {
7174   struct breakpoint *b, *b_tmp;
7175
7176   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7177     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7178       {
7179         struct breakpoint *dummy_b = b->related_breakpoint;
7180
7181         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7182           dummy_b = dummy_b->related_breakpoint;
7183         if (dummy_b->type != bp_call_dummy
7184             || frame_find_by_id (dummy_b->frame_id) != NULL)
7185           continue;
7186         
7187         dummy_frame_discard (dummy_b->frame_id);
7188
7189         while (b->related_breakpoint != b)
7190           {
7191             if (b_tmp == b->related_breakpoint)
7192               b_tmp = b->related_breakpoint->next;
7193             delete_breakpoint (b->related_breakpoint);
7194           }
7195         delete_breakpoint (b);
7196       }
7197 }
7198
7199 void
7200 enable_overlay_breakpoints (void)
7201 {
7202   struct breakpoint *b;
7203
7204   ALL_BREAKPOINTS (b)
7205     if (b->type == bp_overlay_event)
7206     {
7207       b->enable_state = bp_enabled;
7208       update_global_location_list (1);
7209       overlay_events_enabled = 1;
7210     }
7211 }
7212
7213 void
7214 disable_overlay_breakpoints (void)
7215 {
7216   struct breakpoint *b;
7217
7218   ALL_BREAKPOINTS (b)
7219     if (b->type == bp_overlay_event)
7220     {
7221       b->enable_state = bp_disabled;
7222       update_global_location_list (0);
7223       overlay_events_enabled = 0;
7224     }
7225 }
7226
7227 /* Set an active std::terminate breakpoint for each std::terminate
7228    master breakpoint.  */
7229 void
7230 set_std_terminate_breakpoint (void)
7231 {
7232   struct breakpoint *b, *b_tmp;
7233
7234   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7235     if (b->pspace == current_program_space
7236         && b->type == bp_std_terminate_master)
7237       {
7238         momentary_breakpoint_from_master (b, bp_std_terminate,
7239                                           &momentary_breakpoint_ops);
7240       }
7241 }
7242
7243 /* Delete all the std::terminate breakpoints.  */
7244 void
7245 delete_std_terminate_breakpoint (void)
7246 {
7247   struct breakpoint *b, *b_tmp;
7248
7249   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7250     if (b->type == bp_std_terminate)
7251       delete_breakpoint (b);
7252 }
7253
7254 struct breakpoint *
7255 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7256 {
7257   struct breakpoint *b;
7258
7259   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7260                                   &internal_breakpoint_ops);
7261
7262   b->enable_state = bp_enabled;
7263   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7264   b->addr_string
7265     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7266
7267   update_global_location_list_nothrow (1);
7268
7269   return b;
7270 }
7271
7272 void
7273 remove_thread_event_breakpoints (void)
7274 {
7275   struct breakpoint *b, *b_tmp;
7276
7277   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7278     if (b->type == bp_thread_event
7279         && b->loc->pspace == current_program_space)
7280       delete_breakpoint (b);
7281 }
7282
7283 struct lang_and_radix
7284   {
7285     enum language lang;
7286     int radix;
7287   };
7288
7289 /* Create a breakpoint for JIT code registration and unregistration.  */
7290
7291 struct breakpoint *
7292 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7293 {
7294   struct breakpoint *b;
7295
7296   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7297                                   &internal_breakpoint_ops);
7298   update_global_location_list_nothrow (1);
7299   return b;
7300 }
7301
7302 /* Remove JIT code registration and unregistration breakpoint(s).  */
7303
7304 void
7305 remove_jit_event_breakpoints (void)
7306 {
7307   struct breakpoint *b, *b_tmp;
7308
7309   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7310     if (b->type == bp_jit_event
7311         && b->loc->pspace == current_program_space)
7312       delete_breakpoint (b);
7313 }
7314
7315 void
7316 remove_solib_event_breakpoints (void)
7317 {
7318   struct breakpoint *b, *b_tmp;
7319
7320   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7321     if (b->type == bp_shlib_event
7322         && b->loc->pspace == current_program_space)
7323       delete_breakpoint (b);
7324 }
7325
7326 struct breakpoint *
7327 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7328 {
7329   struct breakpoint *b;
7330
7331   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7332                                   &internal_breakpoint_ops);
7333   update_global_location_list_nothrow (1);
7334   return b;
7335 }
7336
7337 /* Disable any breakpoints that are on code in shared libraries.  Only
7338    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7339
7340 void
7341 disable_breakpoints_in_shlibs (void)
7342 {
7343   struct bp_location *loc, **locp_tmp;
7344
7345   ALL_BP_LOCATIONS (loc, locp_tmp)
7346   {
7347     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7348     struct breakpoint *b = loc->owner;
7349
7350     /* We apply the check to all breakpoints, including disabled for
7351        those with loc->duplicate set.  This is so that when breakpoint
7352        becomes enabled, or the duplicate is removed, gdb will try to
7353        insert all breakpoints.  If we don't set shlib_disabled here,
7354        we'll try to insert those breakpoints and fail.  */
7355     if (((b->type == bp_breakpoint)
7356          || (b->type == bp_jit_event)
7357          || (b->type == bp_hardware_breakpoint)
7358          || (is_tracepoint (b)))
7359         && loc->pspace == current_program_space
7360         && !loc->shlib_disabled
7361 #ifdef PC_SOLIB
7362         && PC_SOLIB (loc->address)
7363 #else
7364         && solib_name_from_address (loc->pspace, loc->address)
7365 #endif
7366         )
7367       {
7368         loc->shlib_disabled = 1;
7369       }
7370   }
7371 }
7372
7373 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7374    library.  Only apply to enabled breakpoints, disabled ones can just stay
7375    disabled.  */
7376
7377 static void
7378 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7379 {
7380   struct bp_location *loc, **locp_tmp;
7381   int disabled_shlib_breaks = 0;
7382
7383   /* SunOS a.out shared libraries are always mapped, so do not
7384      disable breakpoints; they will only be reported as unloaded
7385      through clear_solib when GDB discards its shared library
7386      list.  See clear_solib for more information.  */
7387   if (exec_bfd != NULL
7388       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7389     return;
7390
7391   ALL_BP_LOCATIONS (loc, locp_tmp)
7392   {
7393     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7394     struct breakpoint *b = loc->owner;
7395
7396     if (solib->pspace == loc->pspace
7397         && !loc->shlib_disabled
7398         && (((b->type == bp_breakpoint
7399               || b->type == bp_jit_event
7400               || b->type == bp_hardware_breakpoint)
7401              && (loc->loc_type == bp_loc_hardware_breakpoint
7402                  || loc->loc_type == bp_loc_software_breakpoint))
7403             || is_tracepoint (b))
7404         && solib_contains_address_p (solib, loc->address))
7405       {
7406         loc->shlib_disabled = 1;
7407         /* At this point, we cannot rely on remove_breakpoint
7408            succeeding so we must mark the breakpoint as not inserted
7409            to prevent future errors occurring in remove_breakpoints.  */
7410         loc->inserted = 0;
7411
7412         /* This may cause duplicate notifications for the same breakpoint.  */
7413         observer_notify_breakpoint_modified (b);
7414
7415         if (!disabled_shlib_breaks)
7416           {
7417             target_terminal_ours_for_output ();
7418             warning (_("Temporarily disabling breakpoints "
7419                        "for unloaded shared library \"%s\""),
7420                      solib->so_name);
7421           }
7422         disabled_shlib_breaks = 1;
7423       }
7424   }
7425 }
7426
7427 /* FORK & VFORK catchpoints.  */
7428
7429 /* An instance of this type is used to represent a fork or vfork
7430    catchpoint.  It includes a "struct breakpoint" as a kind of base
7431    class; users downcast to "struct breakpoint *" when needed.  A
7432    breakpoint is really of this type iff its ops pointer points to
7433    CATCH_FORK_BREAKPOINT_OPS.  */
7434
7435 struct fork_catchpoint
7436 {
7437   /* The base class.  */
7438   struct breakpoint base;
7439
7440   /* Process id of a child process whose forking triggered this
7441      catchpoint.  This field is only valid immediately after this
7442      catchpoint has triggered.  */
7443   ptid_t forked_inferior_pid;
7444 };
7445
7446 /* Implement the "insert" breakpoint_ops method for fork
7447    catchpoints.  */
7448
7449 static int
7450 insert_catch_fork (struct bp_location *bl)
7451 {
7452   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7453 }
7454
7455 /* Implement the "remove" breakpoint_ops method for fork
7456    catchpoints.  */
7457
7458 static int
7459 remove_catch_fork (struct bp_location *bl)
7460 {
7461   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7462 }
7463
7464 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7465    catchpoints.  */
7466
7467 static int
7468 breakpoint_hit_catch_fork (const struct bp_location *bl,
7469                            struct address_space *aspace, CORE_ADDR bp_addr,
7470                            const struct target_waitstatus *ws)
7471 {
7472   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7473
7474   if (ws->kind != TARGET_WAITKIND_FORKED)
7475     return 0;
7476
7477   c->forked_inferior_pid = ws->value.related_pid;
7478   return 1;
7479 }
7480
7481 /* Implement the "print_it" breakpoint_ops method for fork
7482    catchpoints.  */
7483
7484 static enum print_stop_action
7485 print_it_catch_fork (bpstat bs)
7486 {
7487   struct ui_out *uiout = current_uiout;
7488   struct breakpoint *b = bs->breakpoint_at;
7489   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7490
7491   annotate_catchpoint (b->number);
7492   if (b->disposition == disp_del)
7493     ui_out_text (uiout, "\nTemporary catchpoint ");
7494   else
7495     ui_out_text (uiout, "\nCatchpoint ");
7496   if (ui_out_is_mi_like_p (uiout))
7497     {
7498       ui_out_field_string (uiout, "reason",
7499                            async_reason_lookup (EXEC_ASYNC_FORK));
7500       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7501     }
7502   ui_out_field_int (uiout, "bkptno", b->number);
7503   ui_out_text (uiout, " (forked process ");
7504   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7505   ui_out_text (uiout, "), ");
7506   return PRINT_SRC_AND_LOC;
7507 }
7508
7509 /* Implement the "print_one" breakpoint_ops method for fork
7510    catchpoints.  */
7511
7512 static void
7513 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7514 {
7515   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7516   struct value_print_options opts;
7517   struct ui_out *uiout = current_uiout;
7518
7519   get_user_print_options (&opts);
7520
7521   /* Field 4, the address, is omitted (which makes the columns not
7522      line up too nicely with the headers, but the effect is relatively
7523      readable).  */
7524   if (opts.addressprint)
7525     ui_out_field_skip (uiout, "addr");
7526   annotate_field (5);
7527   ui_out_text (uiout, "fork");
7528   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7529     {
7530       ui_out_text (uiout, ", process ");
7531       ui_out_field_int (uiout, "what",
7532                         ptid_get_pid (c->forked_inferior_pid));
7533       ui_out_spaces (uiout, 1);
7534     }
7535 }
7536
7537 /* Implement the "print_mention" breakpoint_ops method for fork
7538    catchpoints.  */
7539
7540 static void
7541 print_mention_catch_fork (struct breakpoint *b)
7542 {
7543   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7544 }
7545
7546 /* Implement the "print_recreate" breakpoint_ops method for fork
7547    catchpoints.  */
7548
7549 static void
7550 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7551 {
7552   fprintf_unfiltered (fp, "catch fork");
7553   print_recreate_thread (b, fp);
7554 }
7555
7556 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7557
7558 static struct breakpoint_ops catch_fork_breakpoint_ops;
7559
7560 /* Implement the "insert" breakpoint_ops method for vfork
7561    catchpoints.  */
7562
7563 static int
7564 insert_catch_vfork (struct bp_location *bl)
7565 {
7566   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7567 }
7568
7569 /* Implement the "remove" breakpoint_ops method for vfork
7570    catchpoints.  */
7571
7572 static int
7573 remove_catch_vfork (struct bp_location *bl)
7574 {
7575   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7576 }
7577
7578 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7579    catchpoints.  */
7580
7581 static int
7582 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7583                             struct address_space *aspace, CORE_ADDR bp_addr,
7584                             const struct target_waitstatus *ws)
7585 {
7586   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7587
7588   if (ws->kind != TARGET_WAITKIND_VFORKED)
7589     return 0;
7590
7591   c->forked_inferior_pid = ws->value.related_pid;
7592   return 1;
7593 }
7594
7595 /* Implement the "print_it" breakpoint_ops method for vfork
7596    catchpoints.  */
7597
7598 static enum print_stop_action
7599 print_it_catch_vfork (bpstat bs)
7600 {
7601   struct ui_out *uiout = current_uiout;
7602   struct breakpoint *b = bs->breakpoint_at;
7603   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7604
7605   annotate_catchpoint (b->number);
7606   if (b->disposition == disp_del)
7607     ui_out_text (uiout, "\nTemporary catchpoint ");
7608   else
7609     ui_out_text (uiout, "\nCatchpoint ");
7610   if (ui_out_is_mi_like_p (uiout))
7611     {
7612       ui_out_field_string (uiout, "reason",
7613                            async_reason_lookup (EXEC_ASYNC_VFORK));
7614       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7615     }
7616   ui_out_field_int (uiout, "bkptno", b->number);
7617   ui_out_text (uiout, " (vforked process ");
7618   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7619   ui_out_text (uiout, "), ");
7620   return PRINT_SRC_AND_LOC;
7621 }
7622
7623 /* Implement the "print_one" breakpoint_ops method for vfork
7624    catchpoints.  */
7625
7626 static void
7627 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7628 {
7629   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7630   struct value_print_options opts;
7631   struct ui_out *uiout = current_uiout;
7632
7633   get_user_print_options (&opts);
7634   /* Field 4, the address, is omitted (which makes the columns not
7635      line up too nicely with the headers, but the effect is relatively
7636      readable).  */
7637   if (opts.addressprint)
7638     ui_out_field_skip (uiout, "addr");
7639   annotate_field (5);
7640   ui_out_text (uiout, "vfork");
7641   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7642     {
7643       ui_out_text (uiout, ", process ");
7644       ui_out_field_int (uiout, "what",
7645                         ptid_get_pid (c->forked_inferior_pid));
7646       ui_out_spaces (uiout, 1);
7647     }
7648 }
7649
7650 /* Implement the "print_mention" breakpoint_ops method for vfork
7651    catchpoints.  */
7652
7653 static void
7654 print_mention_catch_vfork (struct breakpoint *b)
7655 {
7656   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7657 }
7658
7659 /* Implement the "print_recreate" breakpoint_ops method for vfork
7660    catchpoints.  */
7661
7662 static void
7663 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7664 {
7665   fprintf_unfiltered (fp, "catch vfork");
7666   print_recreate_thread (b, fp);
7667 }
7668
7669 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7670
7671 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7672
7673 /* An instance of this type is used to represent an solib catchpoint.
7674    It includes a "struct breakpoint" as a kind of base class; users
7675    downcast to "struct breakpoint *" when needed.  A breakpoint is
7676    really of this type iff its ops pointer points to
7677    CATCH_SOLIB_BREAKPOINT_OPS.  */
7678
7679 struct solib_catchpoint
7680 {
7681   /* The base class.  */
7682   struct breakpoint base;
7683
7684   /* True for "catch load", false for "catch unload".  */
7685   unsigned char is_load;
7686
7687   /* Regular expression to match, if any.  COMPILED is only valid when
7688      REGEX is non-NULL.  */
7689   char *regex;
7690   regex_t compiled;
7691 };
7692
7693 static void
7694 dtor_catch_solib (struct breakpoint *b)
7695 {
7696   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7697
7698   if (self->regex)
7699     regfree (&self->compiled);
7700   xfree (self->regex);
7701
7702   base_breakpoint_ops.dtor (b);
7703 }
7704
7705 static int
7706 insert_catch_solib (struct bp_location *ignore)
7707 {
7708   return 0;
7709 }
7710
7711 static int
7712 remove_catch_solib (struct bp_location *ignore)
7713 {
7714   return 0;
7715 }
7716
7717 static int
7718 breakpoint_hit_catch_solib (const struct bp_location *bl,
7719                             struct address_space *aspace,
7720                             CORE_ADDR bp_addr,
7721                             const struct target_waitstatus *ws)
7722 {
7723   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7724   struct breakpoint *other;
7725
7726   if (ws->kind == TARGET_WAITKIND_LOADED)
7727     return 1;
7728
7729   ALL_BREAKPOINTS (other)
7730   {
7731     struct bp_location *other_bl;
7732
7733     if (other == bl->owner)
7734       continue;
7735
7736     if (other->type != bp_shlib_event)
7737       continue;
7738
7739     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7740       continue;
7741
7742     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7743       {
7744         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7745           return 1;
7746       }
7747   }
7748
7749   return 0;
7750 }
7751
7752 static void
7753 check_status_catch_solib (struct bpstats *bs)
7754 {
7755   struct solib_catchpoint *self
7756     = (struct solib_catchpoint *) bs->breakpoint_at;
7757   int ix;
7758
7759   if (self->is_load)
7760     {
7761       struct so_list *iter;
7762
7763       for (ix = 0;
7764            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7765                         ix, iter);
7766            ++ix)
7767         {
7768           if (!self->regex
7769               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7770             return;
7771         }
7772     }
7773   else
7774     {
7775       char *iter;
7776
7777       for (ix = 0;
7778            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7779                         ix, iter);
7780            ++ix)
7781         {
7782           if (!self->regex
7783               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7784             return;
7785         }
7786     }
7787
7788   bs->stop = 0;
7789   bs->print_it = print_it_noop;
7790 }
7791
7792 static enum print_stop_action
7793 print_it_catch_solib (bpstat bs)
7794 {
7795   struct breakpoint *b = bs->breakpoint_at;
7796   struct ui_out *uiout = current_uiout;
7797
7798   annotate_catchpoint (b->number);
7799   if (b->disposition == disp_del)
7800     ui_out_text (uiout, "\nTemporary catchpoint ");
7801   else
7802     ui_out_text (uiout, "\nCatchpoint ");
7803   ui_out_field_int (uiout, "bkptno", b->number);
7804   ui_out_text (uiout, "\n");
7805   if (ui_out_is_mi_like_p (uiout))
7806     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7807   print_solib_event (1);
7808   return PRINT_SRC_AND_LOC;
7809 }
7810
7811 static void
7812 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7813 {
7814   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7815   struct value_print_options opts;
7816   struct ui_out *uiout = current_uiout;
7817   char *msg;
7818
7819   get_user_print_options (&opts);
7820   /* Field 4, the address, is omitted (which makes the columns not
7821      line up too nicely with the headers, but the effect is relatively
7822      readable).  */
7823   if (opts.addressprint)
7824     {
7825       annotate_field (4);
7826       ui_out_field_skip (uiout, "addr");
7827     }
7828
7829   annotate_field (5);
7830   if (self->is_load)
7831     {
7832       if (self->regex)
7833         msg = xstrprintf (_("load of library matching %s"), self->regex);
7834       else
7835         msg = xstrdup (_("load of library"));
7836     }
7837   else
7838     {
7839       if (self->regex)
7840         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7841       else
7842         msg = xstrdup (_("unload of library"));
7843     }
7844   ui_out_field_string (uiout, "what", msg);
7845   xfree (msg);
7846 }
7847
7848 static void
7849 print_mention_catch_solib (struct breakpoint *b)
7850 {
7851   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7852
7853   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7854                    self->is_load ? "load" : "unload");
7855 }
7856
7857 static void
7858 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7859 {
7860   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7861
7862   fprintf_unfiltered (fp, "%s %s",
7863                       b->disposition == disp_del ? "tcatch" : "catch",
7864                       self->is_load ? "load" : "unload");
7865   if (self->regex)
7866     fprintf_unfiltered (fp, " %s", self->regex);
7867   fprintf_unfiltered (fp, "\n");
7868 }
7869
7870 static struct breakpoint_ops catch_solib_breakpoint_ops;
7871
7872 /* Shared helper function (MI and CLI) for creating and installing
7873    a shared object event catchpoint.  If IS_LOAD is non-zero then
7874    the events to be caught are load events, otherwise they are
7875    unload events.  If IS_TEMP is non-zero the catchpoint is a
7876    temporary one.  If ENABLED is non-zero the catchpoint is
7877    created in an enabled state.  */
7878
7879 void
7880 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7881 {
7882   struct solib_catchpoint *c;
7883   struct gdbarch *gdbarch = get_current_arch ();
7884   struct cleanup *cleanup;
7885
7886   if (!arg)
7887     arg = "";
7888   arg = skip_spaces (arg);
7889
7890   c = XCNEW (struct solib_catchpoint);
7891   cleanup = make_cleanup (xfree, c);
7892
7893   if (*arg != '\0')
7894     {
7895       int errcode;
7896
7897       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7898       if (errcode != 0)
7899         {
7900           char *err = get_regcomp_error (errcode, &c->compiled);
7901
7902           make_cleanup (xfree, err);
7903           error (_("Invalid regexp (%s): %s"), err, arg);
7904         }
7905       c->regex = xstrdup (arg);
7906     }
7907
7908   c->is_load = is_load;
7909   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7910                    &catch_solib_breakpoint_ops);
7911
7912   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7913
7914   discard_cleanups (cleanup);
7915   install_breakpoint (0, &c->base, 1);
7916 }
7917
7918 /* A helper function that does all the work for "catch load" and
7919    "catch unload".  */
7920
7921 static void
7922 catch_load_or_unload (char *arg, int from_tty, int is_load,
7923                       struct cmd_list_element *command)
7924 {
7925   int tempflag;
7926   const int enabled = 1;
7927
7928   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7929
7930   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7931 }
7932
7933 static void
7934 catch_load_command_1 (char *arg, int from_tty,
7935                       struct cmd_list_element *command)
7936 {
7937   catch_load_or_unload (arg, from_tty, 1, command);
7938 }
7939
7940 static void
7941 catch_unload_command_1 (char *arg, int from_tty,
7942                         struct cmd_list_element *command)
7943 {
7944   catch_load_or_unload (arg, from_tty, 0, command);
7945 }
7946
7947 DEF_VEC_I(int);
7948
7949 /* An instance of this type is used to represent a syscall catchpoint.
7950    It includes a "struct breakpoint" as a kind of base class; users
7951    downcast to "struct breakpoint *" when needed.  A breakpoint is
7952    really of this type iff its ops pointer points to
7953    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7954
7955 struct syscall_catchpoint
7956 {
7957   /* The base class.  */
7958   struct breakpoint base;
7959
7960   /* Syscall numbers used for the 'catch syscall' feature.  If no
7961      syscall has been specified for filtering, its value is NULL.
7962      Otherwise, it holds a list of all syscalls to be caught.  The
7963      list elements are allocated with xmalloc.  */
7964   VEC(int) *syscalls_to_be_caught;
7965 };
7966
7967 /* Implement the "dtor" breakpoint_ops method for syscall
7968    catchpoints.  */
7969
7970 static void
7971 dtor_catch_syscall (struct breakpoint *b)
7972 {
7973   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7974
7975   VEC_free (int, c->syscalls_to_be_caught);
7976
7977   base_breakpoint_ops.dtor (b);
7978 }
7979
7980 static const struct inferior_data *catch_syscall_inferior_data = NULL;
7981
7982 struct catch_syscall_inferior_data
7983 {
7984   /* We keep a count of the number of times the user has requested a
7985      particular syscall to be tracked, and pass this information to the
7986      target.  This lets capable targets implement filtering directly.  */
7987
7988   /* Number of times that "any" syscall is requested.  */
7989   int any_syscall_count;
7990
7991   /* Count of each system call.  */
7992   VEC(int) *syscalls_counts;
7993
7994   /* This counts all syscall catch requests, so we can readily determine
7995      if any catching is necessary.  */
7996   int total_syscalls_count;
7997 };
7998
7999 static struct catch_syscall_inferior_data*
8000 get_catch_syscall_inferior_data (struct inferior *inf)
8001 {
8002   struct catch_syscall_inferior_data *inf_data;
8003
8004   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8005   if (inf_data == NULL)
8006     {
8007       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8008       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8009     }
8010
8011   return inf_data;
8012 }
8013
8014 static void
8015 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8016 {
8017   xfree (arg);
8018 }
8019
8020
8021 /* Implement the "insert" breakpoint_ops method for syscall
8022    catchpoints.  */
8023
8024 static int
8025 insert_catch_syscall (struct bp_location *bl)
8026 {
8027   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8028   struct inferior *inf = current_inferior ();
8029   struct catch_syscall_inferior_data *inf_data
8030     = get_catch_syscall_inferior_data (inf);
8031
8032   ++inf_data->total_syscalls_count;
8033   if (!c->syscalls_to_be_caught)
8034     ++inf_data->any_syscall_count;
8035   else
8036     {
8037       int i, iter;
8038
8039       for (i = 0;
8040            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8041            i++)
8042         {
8043           int elem;
8044
8045           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8046             {
8047               int old_size = VEC_length (int, inf_data->syscalls_counts);
8048               uintptr_t vec_addr_offset
8049                 = old_size * ((uintptr_t) sizeof (int));
8050               uintptr_t vec_addr;
8051               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8052               vec_addr = ((uintptr_t) VEC_address (int,
8053                                                   inf_data->syscalls_counts)
8054                           + vec_addr_offset);
8055               memset ((void *) vec_addr, 0,
8056                       (iter + 1 - old_size) * sizeof (int));
8057             }
8058           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8059           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8060         }
8061     }
8062
8063   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8064                                         inf_data->total_syscalls_count != 0,
8065                                         inf_data->any_syscall_count,
8066                                         VEC_length (int,
8067                                                     inf_data->syscalls_counts),
8068                                         VEC_address (int,
8069                                                      inf_data->syscalls_counts));
8070 }
8071
8072 /* Implement the "remove" breakpoint_ops method for syscall
8073    catchpoints.  */
8074
8075 static int
8076 remove_catch_syscall (struct bp_location *bl)
8077 {
8078   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8079   struct inferior *inf = current_inferior ();
8080   struct catch_syscall_inferior_data *inf_data
8081     = get_catch_syscall_inferior_data (inf);
8082
8083   --inf_data->total_syscalls_count;
8084   if (!c->syscalls_to_be_caught)
8085     --inf_data->any_syscall_count;
8086   else
8087     {
8088       int i, iter;
8089
8090       for (i = 0;
8091            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8092            i++)
8093         {
8094           int elem;
8095           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8096             /* Shouldn't happen.  */
8097             continue;
8098           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8099           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8100         }
8101     }
8102
8103   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8104                                         inf_data->total_syscalls_count != 0,
8105                                         inf_data->any_syscall_count,
8106                                         VEC_length (int,
8107                                                     inf_data->syscalls_counts),
8108                                         VEC_address (int,
8109                                                      inf_data->syscalls_counts));
8110 }
8111
8112 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8113    catchpoints.  */
8114
8115 static int
8116 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8117                               struct address_space *aspace, CORE_ADDR bp_addr,
8118                               const struct target_waitstatus *ws)
8119 {
8120   /* We must check if we are catching specific syscalls in this
8121      breakpoint.  If we are, then we must guarantee that the called
8122      syscall is the same syscall we are catching.  */
8123   int syscall_number = 0;
8124   const struct syscall_catchpoint *c
8125     = (const struct syscall_catchpoint *) bl->owner;
8126
8127   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8128       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8129     return 0;
8130
8131   syscall_number = ws->value.syscall_number;
8132
8133   /* Now, checking if the syscall is the same.  */
8134   if (c->syscalls_to_be_caught)
8135     {
8136       int i, iter;
8137
8138       for (i = 0;
8139            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8140            i++)
8141         if (syscall_number == iter)
8142           break;
8143       /* Not the same.  */
8144       if (!iter)
8145         return 0;
8146     }
8147
8148   return 1;
8149 }
8150
8151 /* Implement the "print_it" breakpoint_ops method for syscall
8152    catchpoints.  */
8153
8154 static enum print_stop_action
8155 print_it_catch_syscall (bpstat bs)
8156 {
8157   struct ui_out *uiout = current_uiout;
8158   struct breakpoint *b = bs->breakpoint_at;
8159   /* These are needed because we want to know in which state a
8160      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8161      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8162      must print "called syscall" or "returned from syscall".  */
8163   ptid_t ptid;
8164   struct target_waitstatus last;
8165   struct syscall s;
8166
8167   get_last_target_status (&ptid, &last);
8168
8169   get_syscall_by_number (last.value.syscall_number, &s);
8170
8171   annotate_catchpoint (b->number);
8172
8173   if (b->disposition == disp_del)
8174     ui_out_text (uiout, "\nTemporary catchpoint ");
8175   else
8176     ui_out_text (uiout, "\nCatchpoint ");
8177   if (ui_out_is_mi_like_p (uiout))
8178     {
8179       ui_out_field_string (uiout, "reason",
8180                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8181                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8182                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8183       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8184     }
8185   ui_out_field_int (uiout, "bkptno", b->number);
8186
8187   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8188     ui_out_text (uiout, " (call to syscall ");
8189   else
8190     ui_out_text (uiout, " (returned from syscall ");
8191
8192   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8193     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8194   if (s.name != NULL)
8195     ui_out_field_string (uiout, "syscall-name", s.name);
8196
8197   ui_out_text (uiout, "), ");
8198
8199   return PRINT_SRC_AND_LOC;
8200 }
8201
8202 /* Implement the "print_one" breakpoint_ops method for syscall
8203    catchpoints.  */
8204
8205 static void
8206 print_one_catch_syscall (struct breakpoint *b,
8207                          struct bp_location **last_loc)
8208 {
8209   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8210   struct value_print_options opts;
8211   struct ui_out *uiout = current_uiout;
8212
8213   get_user_print_options (&opts);
8214   /* Field 4, the address, is omitted (which makes the columns not
8215      line up too nicely with the headers, but the effect is relatively
8216      readable).  */
8217   if (opts.addressprint)
8218     ui_out_field_skip (uiout, "addr");
8219   annotate_field (5);
8220
8221   if (c->syscalls_to_be_caught
8222       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8223     ui_out_text (uiout, "syscalls \"");
8224   else
8225     ui_out_text (uiout, "syscall \"");
8226
8227   if (c->syscalls_to_be_caught)
8228     {
8229       int i, iter;
8230       char *text = xstrprintf ("%s", "");
8231
8232       for (i = 0;
8233            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8234            i++)
8235         {
8236           char *x = text;
8237           struct syscall s;
8238           get_syscall_by_number (iter, &s);
8239
8240           if (s.name != NULL)
8241             text = xstrprintf ("%s%s, ", text, s.name);
8242           else
8243             text = xstrprintf ("%s%d, ", text, iter);
8244
8245           /* We have to xfree the last 'text' (now stored at 'x')
8246              because xstrprintf dynamically allocates new space for it
8247              on every call.  */
8248           xfree (x);
8249         }
8250       /* Remove the last comma.  */
8251       text[strlen (text) - 2] = '\0';
8252       ui_out_field_string (uiout, "what", text);
8253     }
8254   else
8255     ui_out_field_string (uiout, "what", "<any syscall>");
8256   ui_out_text (uiout, "\" ");
8257 }
8258
8259 /* Implement the "print_mention" breakpoint_ops method for syscall
8260    catchpoints.  */
8261
8262 static void
8263 print_mention_catch_syscall (struct breakpoint *b)
8264 {
8265   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8266
8267   if (c->syscalls_to_be_caught)
8268     {
8269       int i, iter;
8270
8271       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8272         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8273       else
8274         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8275
8276       for (i = 0;
8277            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8278            i++)
8279         {
8280           struct syscall s;
8281           get_syscall_by_number (iter, &s);
8282
8283           if (s.name)
8284             printf_filtered (" '%s' [%d]", s.name, s.number);
8285           else
8286             printf_filtered (" %d", s.number);
8287         }
8288       printf_filtered (")");
8289     }
8290   else
8291     printf_filtered (_("Catchpoint %d (any syscall)"),
8292                      b->number);
8293 }
8294
8295 /* Implement the "print_recreate" breakpoint_ops method for syscall
8296    catchpoints.  */
8297
8298 static void
8299 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8300 {
8301   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8302
8303   fprintf_unfiltered (fp, "catch syscall");
8304
8305   if (c->syscalls_to_be_caught)
8306     {
8307       int i, iter;
8308
8309       for (i = 0;
8310            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8311            i++)
8312         {
8313           struct syscall s;
8314
8315           get_syscall_by_number (iter, &s);
8316           if (s.name)
8317             fprintf_unfiltered (fp, " %s", s.name);
8318           else
8319             fprintf_unfiltered (fp, " %d", s.number);
8320         }
8321     }
8322   print_recreate_thread (b, fp);
8323 }
8324
8325 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8326
8327 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8328
8329 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8330
8331 static int
8332 syscall_catchpoint_p (struct breakpoint *b)
8333 {
8334   return (b->ops == &catch_syscall_breakpoint_ops);
8335 }
8336
8337 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8338    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8339    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8340    the breakpoint_ops structure associated to the catchpoint.  */
8341
8342 static void
8343 init_catchpoint (struct breakpoint *b,
8344                  struct gdbarch *gdbarch, int tempflag,
8345                  char *cond_string,
8346                  const struct breakpoint_ops *ops)
8347 {
8348   struct symtab_and_line sal;
8349
8350   init_sal (&sal);
8351   sal.pspace = current_program_space;
8352
8353   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8354
8355   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8356   b->disposition = tempflag ? disp_del : disp_donttouch;
8357 }
8358
8359 void
8360 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8361 {
8362   add_to_breakpoint_chain (b);
8363   set_breakpoint_number (internal, b);
8364   if (is_tracepoint (b))
8365     set_tracepoint_count (breakpoint_count);
8366   if (!internal)
8367     mention (b);
8368   observer_notify_breakpoint_created (b);
8369
8370   if (update_gll)
8371     update_global_location_list (1);
8372 }
8373
8374 static void
8375 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8376                                     int tempflag, char *cond_string,
8377                                     const struct breakpoint_ops *ops)
8378 {
8379   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8380
8381   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8382
8383   c->forked_inferior_pid = null_ptid;
8384
8385   install_breakpoint (0, &c->base, 1);
8386 }
8387
8388 /* Exec catchpoints.  */
8389
8390 /* An instance of this type is used to represent an exec catchpoint.
8391    It includes a "struct breakpoint" as a kind of base class; users
8392    downcast to "struct breakpoint *" when needed.  A breakpoint is
8393    really of this type iff its ops pointer points to
8394    CATCH_EXEC_BREAKPOINT_OPS.  */
8395
8396 struct exec_catchpoint
8397 {
8398   /* The base class.  */
8399   struct breakpoint base;
8400
8401   /* Filename of a program whose exec triggered this catchpoint.
8402      This field is only valid immediately after this catchpoint has
8403      triggered.  */
8404   char *exec_pathname;
8405 };
8406
8407 /* Implement the "dtor" breakpoint_ops method for exec
8408    catchpoints.  */
8409
8410 static void
8411 dtor_catch_exec (struct breakpoint *b)
8412 {
8413   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8414
8415   xfree (c->exec_pathname);
8416
8417   base_breakpoint_ops.dtor (b);
8418 }
8419
8420 static int
8421 insert_catch_exec (struct bp_location *bl)
8422 {
8423   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8424 }
8425
8426 static int
8427 remove_catch_exec (struct bp_location *bl)
8428 {
8429   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8430 }
8431
8432 static int
8433 breakpoint_hit_catch_exec (const struct bp_location *bl,
8434                            struct address_space *aspace, CORE_ADDR bp_addr,
8435                            const struct target_waitstatus *ws)
8436 {
8437   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8438
8439   if (ws->kind != TARGET_WAITKIND_EXECD)
8440     return 0;
8441
8442   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8443   return 1;
8444 }
8445
8446 static enum print_stop_action
8447 print_it_catch_exec (bpstat bs)
8448 {
8449   struct ui_out *uiout = current_uiout;
8450   struct breakpoint *b = bs->breakpoint_at;
8451   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8452
8453   annotate_catchpoint (b->number);
8454   if (b->disposition == disp_del)
8455     ui_out_text (uiout, "\nTemporary catchpoint ");
8456   else
8457     ui_out_text (uiout, "\nCatchpoint ");
8458   if (ui_out_is_mi_like_p (uiout))
8459     {
8460       ui_out_field_string (uiout, "reason",
8461                            async_reason_lookup (EXEC_ASYNC_EXEC));
8462       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8463     }
8464   ui_out_field_int (uiout, "bkptno", b->number);
8465   ui_out_text (uiout, " (exec'd ");
8466   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8467   ui_out_text (uiout, "), ");
8468
8469   return PRINT_SRC_AND_LOC;
8470 }
8471
8472 static void
8473 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8474 {
8475   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8476   struct value_print_options opts;
8477   struct ui_out *uiout = current_uiout;
8478
8479   get_user_print_options (&opts);
8480
8481   /* Field 4, the address, is omitted (which makes the columns
8482      not line up too nicely with the headers, but the effect
8483      is relatively readable).  */
8484   if (opts.addressprint)
8485     ui_out_field_skip (uiout, "addr");
8486   annotate_field (5);
8487   ui_out_text (uiout, "exec");
8488   if (c->exec_pathname != NULL)
8489     {
8490       ui_out_text (uiout, ", program \"");
8491       ui_out_field_string (uiout, "what", c->exec_pathname);
8492       ui_out_text (uiout, "\" ");
8493     }
8494 }
8495
8496 static void
8497 print_mention_catch_exec (struct breakpoint *b)
8498 {
8499   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8500 }
8501
8502 /* Implement the "print_recreate" breakpoint_ops method for exec
8503    catchpoints.  */
8504
8505 static void
8506 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8507 {
8508   fprintf_unfiltered (fp, "catch exec");
8509   print_recreate_thread (b, fp);
8510 }
8511
8512 static struct breakpoint_ops catch_exec_breakpoint_ops;
8513
8514 static void
8515 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8516                                  const struct breakpoint_ops *ops)
8517 {
8518   struct syscall_catchpoint *c;
8519   struct gdbarch *gdbarch = get_current_arch ();
8520
8521   c = XNEW (struct syscall_catchpoint);
8522   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8523   c->syscalls_to_be_caught = filter;
8524
8525   install_breakpoint (0, &c->base, 1);
8526 }
8527
8528 static int
8529 hw_breakpoint_used_count (void)
8530 {
8531   int i = 0;
8532   struct breakpoint *b;
8533   struct bp_location *bl;
8534
8535   ALL_BREAKPOINTS (b)
8536   {
8537     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8538       for (bl = b->loc; bl; bl = bl->next)
8539         {
8540           /* Special types of hardware breakpoints may use more than
8541              one register.  */
8542           i += b->ops->resources_needed (bl);
8543         }
8544   }
8545
8546   return i;
8547 }
8548
8549 /* Returns the resources B would use if it were a hardware
8550    watchpoint.  */
8551
8552 static int
8553 hw_watchpoint_use_count (struct breakpoint *b)
8554 {
8555   int i = 0;
8556   struct bp_location *bl;
8557
8558   if (!breakpoint_enabled (b))
8559     return 0;
8560
8561   for (bl = b->loc; bl; bl = bl->next)
8562     {
8563       /* Special types of hardware watchpoints may use more than
8564          one register.  */
8565       i += b->ops->resources_needed (bl);
8566     }
8567
8568   return i;
8569 }
8570
8571 /* Returns the sum the used resources of all hardware watchpoints of
8572    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8573    the sum of the used resources of all hardware watchpoints of other
8574    types _not_ TYPE.  */
8575
8576 static int
8577 hw_watchpoint_used_count_others (struct breakpoint *except,
8578                                  enum bptype type, int *other_type_used)
8579 {
8580   int i = 0;
8581   struct breakpoint *b;
8582
8583   *other_type_used = 0;
8584   ALL_BREAKPOINTS (b)
8585     {
8586       if (b == except)
8587         continue;
8588       if (!breakpoint_enabled (b))
8589         continue;
8590
8591       if (b->type == type)
8592         i += hw_watchpoint_use_count (b);
8593       else if (is_hardware_watchpoint (b))
8594         *other_type_used = 1;
8595     }
8596
8597   return i;
8598 }
8599
8600 void
8601 disable_watchpoints_before_interactive_call_start (void)
8602 {
8603   struct breakpoint *b;
8604
8605   ALL_BREAKPOINTS (b)
8606   {
8607     if (is_watchpoint (b) && breakpoint_enabled (b))
8608       {
8609         b->enable_state = bp_call_disabled;
8610         update_global_location_list (0);
8611       }
8612   }
8613 }
8614
8615 void
8616 enable_watchpoints_after_interactive_call_stop (void)
8617 {
8618   struct breakpoint *b;
8619
8620   ALL_BREAKPOINTS (b)
8621   {
8622     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8623       {
8624         b->enable_state = bp_enabled;
8625         update_global_location_list (1);
8626       }
8627   }
8628 }
8629
8630 void
8631 disable_breakpoints_before_startup (void)
8632 {
8633   current_program_space->executing_startup = 1;
8634   update_global_location_list (0);
8635 }
8636
8637 void
8638 enable_breakpoints_after_startup (void)
8639 {
8640   current_program_space->executing_startup = 0;
8641   breakpoint_re_set ();
8642 }
8643
8644
8645 /* Set a breakpoint that will evaporate an end of command
8646    at address specified by SAL.
8647    Restrict it to frame FRAME if FRAME is nonzero.  */
8648
8649 struct breakpoint *
8650 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8651                           struct frame_id frame_id, enum bptype type)
8652 {
8653   struct breakpoint *b;
8654
8655   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8656      tail-called one.  */
8657   gdb_assert (!frame_id_artificial_p (frame_id));
8658
8659   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8660   b->enable_state = bp_enabled;
8661   b->disposition = disp_donttouch;
8662   b->frame_id = frame_id;
8663
8664   /* If we're debugging a multi-threaded program, then we want
8665      momentary breakpoints to be active in only a single thread of
8666      control.  */
8667   if (in_thread_list (inferior_ptid))
8668     b->thread = pid_to_thread_id (inferior_ptid);
8669
8670   update_global_location_list_nothrow (1);
8671
8672   return b;
8673 }
8674
8675 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8676    The new breakpoint will have type TYPE, and use OPS as it
8677    breakpoint_ops.  */
8678
8679 static struct breakpoint *
8680 momentary_breakpoint_from_master (struct breakpoint *orig,
8681                                   enum bptype type,
8682                                   const struct breakpoint_ops *ops)
8683 {
8684   struct breakpoint *copy;
8685
8686   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8687   copy->loc = allocate_bp_location (copy);
8688   set_breakpoint_location_function (copy->loc, 1);
8689
8690   copy->loc->gdbarch = orig->loc->gdbarch;
8691   copy->loc->requested_address = orig->loc->requested_address;
8692   copy->loc->address = orig->loc->address;
8693   copy->loc->section = orig->loc->section;
8694   copy->loc->pspace = orig->loc->pspace;
8695   copy->loc->probe = orig->loc->probe;
8696
8697   if (orig->loc->source_file != NULL)
8698     copy->loc->source_file = xstrdup (orig->loc->source_file);
8699
8700   copy->loc->line_number = orig->loc->line_number;
8701   copy->frame_id = orig->frame_id;
8702   copy->thread = orig->thread;
8703   copy->pspace = orig->pspace;
8704
8705   copy->enable_state = bp_enabled;
8706   copy->disposition = disp_donttouch;
8707   copy->number = internal_breakpoint_number--;
8708
8709   update_global_location_list_nothrow (0);
8710   return copy;
8711 }
8712
8713 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8714    ORIG is NULL.  */
8715
8716 struct breakpoint *
8717 clone_momentary_breakpoint (struct breakpoint *orig)
8718 {
8719   /* If there's nothing to clone, then return nothing.  */
8720   if (orig == NULL)
8721     return NULL;
8722
8723   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8724 }
8725
8726 struct breakpoint *
8727 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8728                                 enum bptype type)
8729 {
8730   struct symtab_and_line sal;
8731
8732   sal = find_pc_line (pc, 0);
8733   sal.pc = pc;
8734   sal.section = find_pc_overlay (pc);
8735   sal.explicit_pc = 1;
8736
8737   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8738 }
8739 \f
8740
8741 /* Tell the user we have just set a breakpoint B.  */
8742
8743 static void
8744 mention (struct breakpoint *b)
8745 {
8746   b->ops->print_mention (b);
8747   if (ui_out_is_mi_like_p (current_uiout))
8748     return;
8749   printf_filtered ("\n");
8750 }
8751 \f
8752
8753 static struct bp_location *
8754 add_location_to_breakpoint (struct breakpoint *b,
8755                             const struct symtab_and_line *sal)
8756 {
8757   struct bp_location *loc, **tmp;
8758   CORE_ADDR adjusted_address;
8759   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8760
8761   if (loc_gdbarch == NULL)
8762     loc_gdbarch = b->gdbarch;
8763
8764   /* Adjust the breakpoint's address prior to allocating a location.
8765      Once we call allocate_bp_location(), that mostly uninitialized
8766      location will be placed on the location chain.  Adjustment of the
8767      breakpoint may cause target_read_memory() to be called and we do
8768      not want its scan of the location chain to find a breakpoint and
8769      location that's only been partially initialized.  */
8770   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8771                                                 sal->pc, b->type);
8772
8773   loc = allocate_bp_location (b);
8774   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8775     ;
8776   *tmp = loc;
8777
8778   loc->requested_address = sal->pc;
8779   loc->address = adjusted_address;
8780   loc->pspace = sal->pspace;
8781   loc->probe = sal->probe;
8782   gdb_assert (loc->pspace != NULL);
8783   loc->section = sal->section;
8784   loc->gdbarch = loc_gdbarch;
8785
8786   if (sal->symtab != NULL)
8787     loc->source_file = xstrdup (sal->symtab->filename);
8788   loc->line_number = sal->line;
8789
8790   set_breakpoint_location_function (loc,
8791                                     sal->explicit_pc || sal->explicit_line);
8792   return loc;
8793 }
8794 \f
8795
8796 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8797    return 0 otherwise.  */
8798
8799 static int
8800 bp_loc_is_permanent (struct bp_location *loc)
8801 {
8802   int len;
8803   CORE_ADDR addr;
8804   const gdb_byte *bpoint;
8805   gdb_byte *target_mem;
8806   struct cleanup *cleanup;
8807   int retval = 0;
8808
8809   gdb_assert (loc != NULL);
8810
8811   addr = loc->address;
8812   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8813
8814   /* Software breakpoints unsupported?  */
8815   if (bpoint == NULL)
8816     return 0;
8817
8818   target_mem = alloca (len);
8819
8820   /* Enable the automatic memory restoration from breakpoints while
8821      we read the memory.  Otherwise we could say about our temporary
8822      breakpoints they are permanent.  */
8823   cleanup = save_current_space_and_thread ();
8824
8825   switch_to_program_space_and_thread (loc->pspace);
8826   make_show_memory_breakpoints_cleanup (0);
8827
8828   if (target_read_memory (loc->address, target_mem, len) == 0
8829       && memcmp (target_mem, bpoint, len) == 0)
8830     retval = 1;
8831
8832   do_cleanups (cleanup);
8833
8834   return retval;
8835 }
8836
8837 /* Build a command list for the dprintf corresponding to the current
8838    settings of the dprintf style options.  */
8839
8840 static void
8841 update_dprintf_command_list (struct breakpoint *b)
8842 {
8843   char *dprintf_args = b->extra_string;
8844   char *printf_line = NULL;
8845
8846   if (!dprintf_args)
8847     return;
8848
8849   dprintf_args = skip_spaces (dprintf_args);
8850
8851   /* Allow a comma, as it may have terminated a location, but don't
8852      insist on it.  */
8853   if (*dprintf_args == ',')
8854     ++dprintf_args;
8855   dprintf_args = skip_spaces (dprintf_args);
8856
8857   if (*dprintf_args != '"')
8858     error (_("Bad format string, missing '\"'."));
8859
8860   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8861     printf_line = xstrprintf ("printf %s", dprintf_args);
8862   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8863     {
8864       if (!dprintf_function)
8865         error (_("No function supplied for dprintf call"));
8866
8867       if (dprintf_channel && strlen (dprintf_channel) > 0)
8868         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8869                                   dprintf_function,
8870                                   dprintf_channel,
8871                                   dprintf_args);
8872       else
8873         printf_line = xstrprintf ("call (void) %s (%s)",
8874                                   dprintf_function,
8875                                   dprintf_args);
8876     }
8877   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8878     {
8879       if (target_can_run_breakpoint_commands ())
8880         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8881       else
8882         {
8883           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8884           printf_line = xstrprintf ("printf %s", dprintf_args);
8885         }
8886     }
8887   else
8888     internal_error (__FILE__, __LINE__,
8889                     _("Invalid dprintf style."));
8890
8891   /* Manufacture a printf/continue sequence.  */
8892   if (printf_line)
8893     {
8894       struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8895
8896       if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8897         {
8898           cont_cmd_line = xmalloc (sizeof (struct command_line));
8899           cont_cmd_line->control_type = simple_control;
8900           cont_cmd_line->body_count = 0;
8901           cont_cmd_line->body_list = NULL;
8902           cont_cmd_line->next = NULL;
8903           cont_cmd_line->line = xstrdup ("continue");
8904         }
8905
8906       printf_cmd_line = xmalloc (sizeof (struct command_line));
8907       printf_cmd_line->control_type = simple_control;
8908       printf_cmd_line->body_count = 0;
8909       printf_cmd_line->body_list = NULL;
8910       printf_cmd_line->next = cont_cmd_line;
8911       printf_cmd_line->line = printf_line;
8912
8913       breakpoint_set_commands (b, printf_cmd_line);
8914     }
8915 }
8916
8917 /* Update all dprintf commands, making their command lists reflect
8918    current style settings.  */
8919
8920 static void
8921 update_dprintf_commands (char *args, int from_tty,
8922                          struct cmd_list_element *c)
8923 {
8924   struct breakpoint *b;
8925
8926   ALL_BREAKPOINTS (b)
8927     {
8928       if (b->type == bp_dprintf)
8929         update_dprintf_command_list (b);
8930     }
8931 }
8932
8933 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8934    as textual description of the location, and COND_STRING
8935    as condition expression.  */
8936
8937 static void
8938 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8939                      struct symtabs_and_lines sals, char *addr_string,
8940                      char *filter, char *cond_string,
8941                      char *extra_string,
8942                      enum bptype type, enum bpdisp disposition,
8943                      int thread, int task, int ignore_count,
8944                      const struct breakpoint_ops *ops, int from_tty,
8945                      int enabled, int internal, unsigned flags,
8946                      int display_canonical)
8947 {
8948   int i;
8949
8950   if (type == bp_hardware_breakpoint)
8951     {
8952       int target_resources_ok;
8953
8954       i = hw_breakpoint_used_count ();
8955       target_resources_ok =
8956         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8957                                             i + 1, 0);
8958       if (target_resources_ok == 0)
8959         error (_("No hardware breakpoint support in the target."));
8960       else if (target_resources_ok < 0)
8961         error (_("Hardware breakpoints used exceeds limit."));
8962     }
8963
8964   gdb_assert (sals.nelts > 0);
8965
8966   for (i = 0; i < sals.nelts; ++i)
8967     {
8968       struct symtab_and_line sal = sals.sals[i];
8969       struct bp_location *loc;
8970
8971       if (from_tty)
8972         {
8973           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8974           if (!loc_gdbarch)
8975             loc_gdbarch = gdbarch;
8976
8977           describe_other_breakpoints (loc_gdbarch,
8978                                       sal.pspace, sal.pc, sal.section, thread);
8979         }
8980
8981       if (i == 0)
8982         {
8983           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8984           b->thread = thread;
8985           b->task = task;
8986
8987           b->cond_string = cond_string;
8988           b->extra_string = extra_string;
8989           b->ignore_count = ignore_count;
8990           b->enable_state = enabled ? bp_enabled : bp_disabled;
8991           b->disposition = disposition;
8992
8993           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8994             b->loc->inserted = 1;
8995
8996           if (type == bp_static_tracepoint)
8997             {
8998               struct tracepoint *t = (struct tracepoint *) b;
8999               struct static_tracepoint_marker marker;
9000
9001               if (strace_marker_p (b))
9002                 {
9003                   /* We already know the marker exists, otherwise, we
9004                      wouldn't see a sal for it.  */
9005                   char *p = &addr_string[3];
9006                   char *endp;
9007                   char *marker_str;
9008
9009                   p = skip_spaces (p);
9010
9011                   endp = skip_to_space (p);
9012
9013                   marker_str = savestring (p, endp - p);
9014                   t->static_trace_marker_id = marker_str;
9015
9016                   printf_filtered (_("Probed static tracepoint "
9017                                      "marker \"%s\"\n"),
9018                                    t->static_trace_marker_id);
9019                 }
9020               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9021                 {
9022                   t->static_trace_marker_id = xstrdup (marker.str_id);
9023                   release_static_tracepoint_marker (&marker);
9024
9025                   printf_filtered (_("Probed static tracepoint "
9026                                      "marker \"%s\"\n"),
9027                                    t->static_trace_marker_id);
9028                 }
9029               else
9030                 warning (_("Couldn't determine the static "
9031                            "tracepoint marker to probe"));
9032             }
9033
9034           loc = b->loc;
9035         }
9036       else
9037         {
9038           loc = add_location_to_breakpoint (b, &sal);
9039           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9040             loc->inserted = 1;
9041         }
9042
9043       if (bp_loc_is_permanent (loc))
9044         make_breakpoint_permanent (b);
9045
9046       if (b->cond_string)
9047         {
9048           char *arg = b->cond_string;
9049           loc->cond = parse_exp_1 (&arg, loc->address,
9050                                    block_for_pc (loc->address), 0);
9051           if (*arg)
9052               error (_("Garbage '%s' follows condition"), arg);
9053         }
9054
9055       /* Dynamic printf requires and uses additional arguments on the
9056          command line, otherwise it's an error.  */
9057       if (type == bp_dprintf)
9058         {
9059           if (b->extra_string)
9060             update_dprintf_command_list (b);
9061           else
9062             error (_("Format string required"));
9063         }
9064       else if (b->extra_string)
9065         error (_("Garbage '%s' at end of command"), b->extra_string);
9066     }
9067
9068   b->display_canonical = display_canonical;
9069   if (addr_string)
9070     b->addr_string = addr_string;
9071   else
9072     /* addr_string has to be used or breakpoint_re_set will delete
9073        me.  */
9074     b->addr_string
9075       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9076   b->filter = filter;
9077 }
9078
9079 static void
9080 create_breakpoint_sal (struct gdbarch *gdbarch,
9081                        struct symtabs_and_lines sals, char *addr_string,
9082                        char *filter, char *cond_string,
9083                        char *extra_string,
9084                        enum bptype type, enum bpdisp disposition,
9085                        int thread, int task, int ignore_count,
9086                        const struct breakpoint_ops *ops, int from_tty,
9087                        int enabled, int internal, unsigned flags,
9088                        int display_canonical)
9089 {
9090   struct breakpoint *b;
9091   struct cleanup *old_chain;
9092
9093   if (is_tracepoint_type (type))
9094     {
9095       struct tracepoint *t;
9096
9097       t = XCNEW (struct tracepoint);
9098       b = &t->base;
9099     }
9100   else
9101     b = XNEW (struct breakpoint);
9102
9103   old_chain = make_cleanup (xfree, b);
9104
9105   init_breakpoint_sal (b, gdbarch,
9106                        sals, addr_string,
9107                        filter, cond_string, extra_string,
9108                        type, disposition,
9109                        thread, task, ignore_count,
9110                        ops, from_tty,
9111                        enabled, internal, flags,
9112                        display_canonical);
9113   discard_cleanups (old_chain);
9114
9115   install_breakpoint (internal, b, 0);
9116 }
9117
9118 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9119    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9120    value.  COND_STRING, if not NULL, specified the condition to be
9121    used for all breakpoints.  Essentially the only case where
9122    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9123    function.  In that case, it's still not possible to specify
9124    separate conditions for different overloaded functions, so
9125    we take just a single condition string.
9126    
9127    NOTE: If the function succeeds, the caller is expected to cleanup
9128    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9129    array contents).  If the function fails (error() is called), the
9130    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9131    COND and SALS arrays and each of those arrays contents.  */
9132
9133 static void
9134 create_breakpoints_sal (struct gdbarch *gdbarch,
9135                         struct linespec_result *canonical,
9136                         char *cond_string, char *extra_string,
9137                         enum bptype type, enum bpdisp disposition,
9138                         int thread, int task, int ignore_count,
9139                         const struct breakpoint_ops *ops, int from_tty,
9140                         int enabled, int internal, unsigned flags)
9141 {
9142   int i;
9143   struct linespec_sals *lsal;
9144
9145   if (canonical->pre_expanded)
9146     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9147
9148   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9149     {
9150       /* Note that 'addr_string' can be NULL in the case of a plain
9151          'break', without arguments.  */
9152       char *addr_string = (canonical->addr_string
9153                            ? xstrdup (canonical->addr_string)
9154                            : NULL);
9155       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9156       struct cleanup *inner = make_cleanup (xfree, addr_string);
9157
9158       make_cleanup (xfree, filter_string);
9159       create_breakpoint_sal (gdbarch, lsal->sals,
9160                              addr_string,
9161                              filter_string,
9162                              cond_string, extra_string,
9163                              type, disposition,
9164                              thread, task, ignore_count, ops,
9165                              from_tty, enabled, internal, flags,
9166                              canonical->special_display);
9167       discard_cleanups (inner);
9168     }
9169 }
9170
9171 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9172    followed by conditionals.  On return, SALS contains an array of SAL
9173    addresses found.  ADDR_STRING contains a vector of (canonical)
9174    address strings.  ADDRESS points to the end of the SAL.
9175
9176    The array and the line spec strings are allocated on the heap, it is
9177    the caller's responsibility to free them.  */
9178
9179 static void
9180 parse_breakpoint_sals (char **address,
9181                        struct linespec_result *canonical)
9182 {
9183   /* If no arg given, or if first arg is 'if ', use the default
9184      breakpoint.  */
9185   if ((*address) == NULL
9186       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9187     {
9188       /* The last displayed codepoint, if it's valid, is our default breakpoint
9189          address.  */
9190       if (last_displayed_sal_is_valid ())
9191         {
9192           struct linespec_sals lsal;
9193           struct symtab_and_line sal;
9194           CORE_ADDR pc;
9195
9196           init_sal (&sal);              /* Initialize to zeroes.  */
9197           lsal.sals.sals = (struct symtab_and_line *)
9198             xmalloc (sizeof (struct symtab_and_line));
9199
9200           /* Set sal's pspace, pc, symtab, and line to the values
9201              corresponding to the last call to print_frame_info.
9202              Be sure to reinitialize LINE with NOTCURRENT == 0
9203              as the breakpoint line number is inappropriate otherwise.
9204              find_pc_line would adjust PC, re-set it back.  */
9205           get_last_displayed_sal (&sal);
9206           pc = sal.pc;
9207           sal = find_pc_line (pc, 0);
9208
9209           /* "break" without arguments is equivalent to "break *PC"
9210              where PC is the last displayed codepoint's address.  So
9211              make sure to set sal.explicit_pc to prevent GDB from
9212              trying to expand the list of sals to include all other
9213              instances with the same symtab and line.  */
9214           sal.pc = pc;
9215           sal.explicit_pc = 1;
9216
9217           lsal.sals.sals[0] = sal;
9218           lsal.sals.nelts = 1;
9219           lsal.canonical = NULL;
9220
9221           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9222         }
9223       else
9224         error (_("No default breakpoint address now."));
9225     }
9226   else
9227     {
9228       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9229
9230       /* Force almost all breakpoints to be in terms of the
9231          current_source_symtab (which is decode_line_1's default).
9232          This should produce the results we want almost all of the
9233          time while leaving default_breakpoint_* alone.
9234
9235          ObjC: However, don't match an Objective-C method name which
9236          may have a '+' or '-' succeeded by a '['.  */
9237       if (last_displayed_sal_is_valid ()
9238           && (!cursal.symtab
9239               || ((strchr ("+-", (*address)[0]) != NULL)
9240                   && ((*address)[1] != '['))))
9241         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9242                           get_last_displayed_symtab (),
9243                           get_last_displayed_line (),
9244                           canonical, NULL, NULL);
9245       else
9246         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9247                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9248     }
9249 }
9250
9251
9252 /* Convert each SAL into a real PC.  Verify that the PC can be
9253    inserted as a breakpoint.  If it can't throw an error.  */
9254
9255 static void
9256 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9257 {    
9258   int i;
9259
9260   for (i = 0; i < sals->nelts; i++)
9261     resolve_sal_pc (&sals->sals[i]);
9262 }
9263
9264 /* Fast tracepoints may have restrictions on valid locations.  For
9265    instance, a fast tracepoint using a jump instead of a trap will
9266    likely have to overwrite more bytes than a trap would, and so can
9267    only be placed where the instruction is longer than the jump, or a
9268    multi-instruction sequence does not have a jump into the middle of
9269    it, etc.  */
9270
9271 static void
9272 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9273                             struct symtabs_and_lines *sals)
9274 {
9275   int i, rslt;
9276   struct symtab_and_line *sal;
9277   char *msg;
9278   struct cleanup *old_chain;
9279
9280   for (i = 0; i < sals->nelts; i++)
9281     {
9282       struct gdbarch *sarch;
9283
9284       sal = &sals->sals[i];
9285
9286       sarch = get_sal_arch (*sal);
9287       /* We fall back to GDBARCH if there is no architecture
9288          associated with SAL.  */
9289       if (sarch == NULL)
9290         sarch = gdbarch;
9291       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9292                                                NULL, &msg);
9293       old_chain = make_cleanup (xfree, msg);
9294
9295       if (!rslt)
9296         error (_("May not have a fast tracepoint at 0x%s%s"),
9297                paddress (sarch, sal->pc), (msg ? msg : ""));
9298
9299       do_cleanups (old_chain);
9300     }
9301 }
9302
9303 /* Issue an invalid thread ID error.  */
9304
9305 static void ATTRIBUTE_NORETURN
9306 invalid_thread_id_error (int id)
9307 {
9308   error (_("Unknown thread %d."), id);
9309 }
9310
9311 /* Given TOK, a string specification of condition and thread, as
9312    accepted by the 'break' command, extract the condition
9313    string and thread number and set *COND_STRING and *THREAD.
9314    PC identifies the context at which the condition should be parsed.
9315    If no condition is found, *COND_STRING is set to NULL.
9316    If no thread is found, *THREAD is set to -1.  */
9317
9318 static void
9319 find_condition_and_thread (char *tok, CORE_ADDR pc,
9320                            char **cond_string, int *thread, int *task,
9321                            char **rest)
9322 {
9323   *cond_string = NULL;
9324   *thread = -1;
9325   *task = 0;
9326   *rest = NULL;
9327
9328   while (tok && *tok)
9329     {
9330       char *end_tok;
9331       int toklen;
9332       char *cond_start = NULL;
9333       char *cond_end = NULL;
9334
9335       tok = skip_spaces (tok);
9336
9337       if ((*tok == '"' || *tok == ',') && rest)
9338         {
9339           *rest = savestring (tok, strlen (tok));
9340           return;
9341         }
9342
9343       end_tok = skip_to_space (tok);
9344
9345       toklen = end_tok - tok;
9346
9347       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9348         {
9349           struct expression *expr;
9350
9351           tok = cond_start = end_tok + 1;
9352           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9353           xfree (expr);
9354           cond_end = tok;
9355           *cond_string = savestring (cond_start, cond_end - cond_start);
9356         }
9357       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9358         {
9359           char *tmptok;
9360
9361           tok = end_tok + 1;
9362           tmptok = tok;
9363           *thread = strtol (tok, &tok, 0);
9364           if (tok == tmptok)
9365             error (_("Junk after thread keyword."));
9366           if (!valid_thread_id (*thread))
9367             invalid_thread_id_error (*thread);
9368         }
9369       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9370         {
9371           char *tmptok;
9372
9373           tok = end_tok + 1;
9374           tmptok = tok;
9375           *task = strtol (tok, &tok, 0);
9376           if (tok == tmptok)
9377             error (_("Junk after task keyword."));
9378           if (!valid_task_id (*task))
9379             error (_("Unknown task %d."), *task);
9380         }
9381       else if (rest)
9382         {
9383           *rest = savestring (tok, strlen (tok));
9384           return;
9385         }
9386       else
9387         error (_("Junk at end of arguments."));
9388     }
9389 }
9390
9391 /* Decode a static tracepoint marker spec.  */
9392
9393 static struct symtabs_and_lines
9394 decode_static_tracepoint_spec (char **arg_p)
9395 {
9396   VEC(static_tracepoint_marker_p) *markers = NULL;
9397   struct symtabs_and_lines sals;
9398   struct cleanup *old_chain;
9399   char *p = &(*arg_p)[3];
9400   char *endp;
9401   char *marker_str;
9402   int i;
9403
9404   p = skip_spaces (p);
9405
9406   endp = skip_to_space (p);
9407
9408   marker_str = savestring (p, endp - p);
9409   old_chain = make_cleanup (xfree, marker_str);
9410
9411   markers = target_static_tracepoint_markers_by_strid (marker_str);
9412   if (VEC_empty(static_tracepoint_marker_p, markers))
9413     error (_("No known static tracepoint marker named %s"), marker_str);
9414
9415   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9416   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9417
9418   for (i = 0; i < sals.nelts; i++)
9419     {
9420       struct static_tracepoint_marker *marker;
9421
9422       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9423
9424       init_sal (&sals.sals[i]);
9425
9426       sals.sals[i] = find_pc_line (marker->address, 0);
9427       sals.sals[i].pc = marker->address;
9428
9429       release_static_tracepoint_marker (marker);
9430     }
9431
9432   do_cleanups (old_chain);
9433
9434   *arg_p = endp;
9435   return sals;
9436 }
9437
9438 /* Set a breakpoint.  This function is shared between CLI and MI
9439    functions for setting a breakpoint.  This function has two major
9440    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9441    parameter.  If non-zero, the function will parse arg, extracting
9442    breakpoint location, address and thread.  Otherwise, ARG is just
9443    the location of breakpoint, with condition and thread specified by
9444    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9445    the breakpoint number will be allocated from the internal
9446    breakpoint count.  Returns true if any breakpoint was created;
9447    false otherwise.  */
9448
9449 int
9450 create_breakpoint (struct gdbarch *gdbarch,
9451                    char *arg, char *cond_string,
9452                    int thread, char *extra_string,
9453                    int parse_condition_and_thread,
9454                    int tempflag, enum bptype type_wanted,
9455                    int ignore_count,
9456                    enum auto_boolean pending_break_support,
9457                    const struct breakpoint_ops *ops,
9458                    int from_tty, int enabled, int internal,
9459                    unsigned flags)
9460 {
9461   volatile struct gdb_exception e;
9462   char *copy_arg = NULL;
9463   char *addr_start = arg;
9464   struct linespec_result canonical;
9465   struct cleanup *old_chain;
9466   struct cleanup *bkpt_chain = NULL;
9467   int pending = 0;
9468   int task = 0;
9469   int prev_bkpt_count = breakpoint_count;
9470
9471   gdb_assert (ops != NULL);
9472
9473   init_linespec_result (&canonical);
9474
9475   TRY_CATCH (e, RETURN_MASK_ALL)
9476     {
9477       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9478                                      addr_start, &copy_arg);
9479     }
9480
9481   /* If caller is interested in rc value from parse, set value.  */
9482   switch (e.reason)
9483     {
9484     case GDB_NO_ERROR:
9485       if (VEC_empty (linespec_sals, canonical.sals))
9486         return 0;
9487       break;
9488     case RETURN_ERROR:
9489       switch (e.error)
9490         {
9491         case NOT_FOUND_ERROR:
9492
9493           /* If pending breakpoint support is turned off, throw
9494              error.  */
9495
9496           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9497             throw_exception (e);
9498
9499           exception_print (gdb_stderr, e);
9500
9501           /* If pending breakpoint support is auto query and the user
9502              selects no, then simply return the error code.  */
9503           if (pending_break_support == AUTO_BOOLEAN_AUTO
9504               && !nquery (_("Make %s pending on future shared library load? "),
9505                           bptype_string (type_wanted)))
9506             return 0;
9507
9508           /* At this point, either the user was queried about setting
9509              a pending breakpoint and selected yes, or pending
9510              breakpoint behavior is on and thus a pending breakpoint
9511              is defaulted on behalf of the user.  */
9512           {
9513             struct linespec_sals lsal;
9514
9515             copy_arg = xstrdup (addr_start);
9516             lsal.canonical = xstrdup (copy_arg);
9517             lsal.sals.nelts = 1;
9518             lsal.sals.sals = XNEW (struct symtab_and_line);
9519             init_sal (&lsal.sals.sals[0]);
9520             pending = 1;
9521             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9522           }
9523           break;
9524         default:
9525           throw_exception (e);
9526         }
9527       break;
9528     default:
9529       throw_exception (e);
9530     }
9531
9532   /* Create a chain of things that always need to be cleaned up.  */
9533   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9534
9535   /* ----------------------------- SNIP -----------------------------
9536      Anything added to the cleanup chain beyond this point is assumed
9537      to be part of a breakpoint.  If the breakpoint create succeeds
9538      then the memory is not reclaimed.  */
9539   bkpt_chain = make_cleanup (null_cleanup, 0);
9540
9541   /* Resolve all line numbers to PC's and verify that the addresses
9542      are ok for the target.  */
9543   if (!pending)
9544     {
9545       int ix;
9546       struct linespec_sals *iter;
9547
9548       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9549         breakpoint_sals_to_pc (&iter->sals);
9550     }
9551
9552   /* Fast tracepoints may have additional restrictions on location.  */
9553   if (!pending && type_wanted == bp_fast_tracepoint)
9554     {
9555       int ix;
9556       struct linespec_sals *iter;
9557
9558       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9559         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9560     }
9561
9562   /* Verify that condition can be parsed, before setting any
9563      breakpoints.  Allocate a separate condition expression for each
9564      breakpoint.  */
9565   if (!pending)
9566     {
9567       struct linespec_sals *lsal;
9568
9569       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9570
9571       if (parse_condition_and_thread)
9572         {
9573             char *rest;
9574             /* Here we only parse 'arg' to separate condition
9575                from thread number, so parsing in context of first
9576                sal is OK.  When setting the breakpoint we'll 
9577                re-parse it in context of each sal.  */
9578
9579             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9580                                        &thread, &task, &rest);
9581             if (cond_string)
9582                 make_cleanup (xfree, cond_string);
9583             if (rest)
9584               make_cleanup (xfree, rest);
9585             if (rest)
9586               extra_string = rest;
9587         }
9588       else
9589         {
9590             /* Create a private copy of condition string.  */
9591             if (cond_string)
9592             {
9593                 cond_string = xstrdup (cond_string);
9594                 make_cleanup (xfree, cond_string);
9595             }
9596             /* Create a private copy of any extra string.  */
9597             if (extra_string)
9598               {
9599                 extra_string = xstrdup (extra_string);
9600                 make_cleanup (xfree, extra_string);
9601               }
9602         }
9603
9604       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9605                                    cond_string, extra_string, type_wanted,
9606                                    tempflag ? disp_del : disp_donttouch,
9607                                    thread, task, ignore_count, ops,
9608                                    from_tty, enabled, internal, flags);
9609     }
9610   else
9611     {
9612       struct breakpoint *b;
9613
9614       make_cleanup (xfree, copy_arg);
9615
9616       if (is_tracepoint_type (type_wanted))
9617         {
9618           struct tracepoint *t;
9619
9620           t = XCNEW (struct tracepoint);
9621           b = &t->base;
9622         }
9623       else
9624         b = XNEW (struct breakpoint);
9625
9626       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9627
9628       b->addr_string = copy_arg;
9629       if (parse_condition_and_thread)
9630         b->cond_string = NULL;
9631       else
9632         {
9633           /* Create a private copy of condition string.  */
9634           if (cond_string)
9635             {
9636               cond_string = xstrdup (cond_string);
9637               make_cleanup (xfree, cond_string);
9638             }
9639           b->cond_string = cond_string;
9640         }
9641       b->extra_string = NULL;
9642       b->ignore_count = ignore_count;
9643       b->disposition = tempflag ? disp_del : disp_donttouch;
9644       b->condition_not_parsed = 1;
9645       b->enable_state = enabled ? bp_enabled : bp_disabled;
9646       if ((type_wanted != bp_breakpoint
9647            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9648         b->pspace = current_program_space;
9649
9650       install_breakpoint (internal, b, 0);
9651     }
9652   
9653   if (VEC_length (linespec_sals, canonical.sals) > 1)
9654     {
9655       warning (_("Multiple breakpoints were set.\nUse the "
9656                  "\"delete\" command to delete unwanted breakpoints."));
9657       prev_breakpoint_count = prev_bkpt_count;
9658     }
9659
9660   /* That's it.  Discard the cleanups for data inserted into the
9661      breakpoint.  */
9662   discard_cleanups (bkpt_chain);
9663   /* But cleanup everything else.  */
9664   do_cleanups (old_chain);
9665
9666   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9667   update_global_location_list (1);
9668
9669   return 1;
9670 }
9671
9672 /* Set a breakpoint.
9673    ARG is a string describing breakpoint address,
9674    condition, and thread.
9675    FLAG specifies if a breakpoint is hardware on,
9676    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9677    and BP_TEMPFLAG.  */
9678
9679 static void
9680 break_command_1 (char *arg, int flag, int from_tty)
9681 {
9682   int tempflag = flag & BP_TEMPFLAG;
9683   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9684                              ? bp_hardware_breakpoint
9685                              : bp_breakpoint);
9686   struct breakpoint_ops *ops;
9687   const char *arg_cp = arg;
9688
9689   /* Matching breakpoints on probes.  */
9690   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9691     ops = &bkpt_probe_breakpoint_ops;
9692   else
9693     ops = &bkpt_breakpoint_ops;
9694
9695   create_breakpoint (get_current_arch (),
9696                      arg,
9697                      NULL, 0, NULL, 1 /* parse arg */,
9698                      tempflag, type_wanted,
9699                      0 /* Ignore count */,
9700                      pending_break_support,
9701                      ops,
9702                      from_tty,
9703                      1 /* enabled */,
9704                      0 /* internal */,
9705                      0);
9706 }
9707
9708 /* Helper function for break_command_1 and disassemble_command.  */
9709
9710 void
9711 resolve_sal_pc (struct symtab_and_line *sal)
9712 {
9713   CORE_ADDR pc;
9714
9715   if (sal->pc == 0 && sal->symtab != NULL)
9716     {
9717       if (!find_line_pc (sal->symtab, sal->line, &pc))
9718         error (_("No line %d in file \"%s\"."),
9719                sal->line, sal->symtab->filename);
9720       sal->pc = pc;
9721
9722       /* If this SAL corresponds to a breakpoint inserted using a line
9723          number, then skip the function prologue if necessary.  */
9724       if (sal->explicit_line)
9725         skip_prologue_sal (sal);
9726     }
9727
9728   if (sal->section == 0 && sal->symtab != NULL)
9729     {
9730       struct blockvector *bv;
9731       struct block *b;
9732       struct symbol *sym;
9733
9734       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9735       if (bv != NULL)
9736         {
9737           sym = block_linkage_function (b);
9738           if (sym != NULL)
9739             {
9740               fixup_symbol_section (sym, sal->symtab->objfile);
9741               sal->section = SYMBOL_OBJ_SECTION (sym);
9742             }
9743           else
9744             {
9745               /* It really is worthwhile to have the section, so we'll
9746                  just have to look harder. This case can be executed
9747                  if we have line numbers but no functions (as can
9748                  happen in assembly source).  */
9749
9750               struct minimal_symbol *msym;
9751               struct cleanup *old_chain = save_current_space_and_thread ();
9752
9753               switch_to_program_space_and_thread (sal->pspace);
9754
9755               msym = lookup_minimal_symbol_by_pc (sal->pc);
9756               if (msym)
9757                 sal->section = SYMBOL_OBJ_SECTION (msym);
9758
9759               do_cleanups (old_chain);
9760             }
9761         }
9762     }
9763 }
9764
9765 void
9766 break_command (char *arg, int from_tty)
9767 {
9768   break_command_1 (arg, 0, from_tty);
9769 }
9770
9771 void
9772 tbreak_command (char *arg, int from_tty)
9773 {
9774   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9775 }
9776
9777 static void
9778 hbreak_command (char *arg, int from_tty)
9779 {
9780   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9781 }
9782
9783 static void
9784 thbreak_command (char *arg, int from_tty)
9785 {
9786   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9787 }
9788
9789 static void
9790 stop_command (char *arg, int from_tty)
9791 {
9792   printf_filtered (_("Specify the type of breakpoint to set.\n\
9793 Usage: stop in <function | address>\n\
9794        stop at <line>\n"));
9795 }
9796
9797 static void
9798 stopin_command (char *arg, int from_tty)
9799 {
9800   int badInput = 0;
9801
9802   if (arg == (char *) NULL)
9803     badInput = 1;
9804   else if (*arg != '*')
9805     {
9806       char *argptr = arg;
9807       int hasColon = 0;
9808
9809       /* Look for a ':'.  If this is a line number specification, then
9810          say it is bad, otherwise, it should be an address or
9811          function/method name.  */
9812       while (*argptr && !hasColon)
9813         {
9814           hasColon = (*argptr == ':');
9815           argptr++;
9816         }
9817
9818       if (hasColon)
9819         badInput = (*argptr != ':');    /* Not a class::method */
9820       else
9821         badInput = isdigit (*arg);      /* a simple line number */
9822     }
9823
9824   if (badInput)
9825     printf_filtered (_("Usage: stop in <function | address>\n"));
9826   else
9827     break_command_1 (arg, 0, from_tty);
9828 }
9829
9830 static void
9831 stopat_command (char *arg, int from_tty)
9832 {
9833   int badInput = 0;
9834
9835   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9836     badInput = 1;
9837   else
9838     {
9839       char *argptr = arg;
9840       int hasColon = 0;
9841
9842       /* Look for a ':'.  If there is a '::' then get out, otherwise
9843          it is probably a line number.  */
9844       while (*argptr && !hasColon)
9845         {
9846           hasColon = (*argptr == ':');
9847           argptr++;
9848         }
9849
9850       if (hasColon)
9851         badInput = (*argptr == ':');    /* we have class::method */
9852       else
9853         badInput = !isdigit (*arg);     /* not a line number */
9854     }
9855
9856   if (badInput)
9857     printf_filtered (_("Usage: stop at <line>\n"));
9858   else
9859     break_command_1 (arg, 0, from_tty);
9860 }
9861
9862 void dprintf_command (char *arg, int from_tty);
9863
9864 /* The dynamic printf command is mostly like a regular breakpoint, but
9865    with a prewired command list consisting of a single output command,
9866    built from extra arguments supplied on the dprintf command
9867    line.  */
9868
9869 void
9870 dprintf_command (char *arg, int from_tty)
9871 {
9872   create_breakpoint (get_current_arch (),
9873                      arg,
9874                      NULL, 0, NULL, 1 /* parse arg */,
9875                      0, bp_dprintf,
9876                      0 /* Ignore count */,
9877                      pending_break_support,
9878                      &dprintf_breakpoint_ops,
9879                      from_tty,
9880                      1 /* enabled */,
9881                      0 /* internal */,
9882                      0);
9883 }
9884
9885 static void
9886 agent_printf_command (char *arg, int from_tty)
9887 {
9888   error (_("May only run agent-printf on the target"));
9889 }
9890
9891 /* Implement the "breakpoint_hit" breakpoint_ops method for
9892    ranged breakpoints.  */
9893
9894 static int
9895 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9896                                   struct address_space *aspace,
9897                                   CORE_ADDR bp_addr,
9898                                   const struct target_waitstatus *ws)
9899 {
9900   if (ws->kind != TARGET_WAITKIND_STOPPED
9901       || ws->value.sig != GDB_SIGNAL_TRAP)
9902     return 0;
9903
9904   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9905                                          bl->length, aspace, bp_addr);
9906 }
9907
9908 /* Implement the "resources_needed" breakpoint_ops method for
9909    ranged breakpoints.  */
9910
9911 static int
9912 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9913 {
9914   return target_ranged_break_num_registers ();
9915 }
9916
9917 /* Implement the "print_it" breakpoint_ops method for
9918    ranged breakpoints.  */
9919
9920 static enum print_stop_action
9921 print_it_ranged_breakpoint (bpstat bs)
9922 {
9923   struct breakpoint *b = bs->breakpoint_at;
9924   struct bp_location *bl = b->loc;
9925   struct ui_out *uiout = current_uiout;
9926
9927   gdb_assert (b->type == bp_hardware_breakpoint);
9928
9929   /* Ranged breakpoints have only one location.  */
9930   gdb_assert (bl && bl->next == NULL);
9931
9932   annotate_breakpoint (b->number);
9933   if (b->disposition == disp_del)
9934     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9935   else
9936     ui_out_text (uiout, "\nRanged breakpoint ");
9937   if (ui_out_is_mi_like_p (uiout))
9938     {
9939       ui_out_field_string (uiout, "reason",
9940                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9941       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9942     }
9943   ui_out_field_int (uiout, "bkptno", b->number);
9944   ui_out_text (uiout, ", ");
9945
9946   return PRINT_SRC_AND_LOC;
9947 }
9948
9949 /* Implement the "print_one" breakpoint_ops method for
9950    ranged breakpoints.  */
9951
9952 static void
9953 print_one_ranged_breakpoint (struct breakpoint *b,
9954                              struct bp_location **last_loc)
9955 {
9956   struct bp_location *bl = b->loc;
9957   struct value_print_options opts;
9958   struct ui_out *uiout = current_uiout;
9959
9960   /* Ranged breakpoints have only one location.  */
9961   gdb_assert (bl && bl->next == NULL);
9962
9963   get_user_print_options (&opts);
9964
9965   if (opts.addressprint)
9966     /* We don't print the address range here, it will be printed later
9967        by print_one_detail_ranged_breakpoint.  */
9968     ui_out_field_skip (uiout, "addr");
9969   annotate_field (5);
9970   print_breakpoint_location (b, bl);
9971   *last_loc = bl;
9972 }
9973
9974 /* Implement the "print_one_detail" breakpoint_ops method for
9975    ranged breakpoints.  */
9976
9977 static void
9978 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9979                                     struct ui_out *uiout)
9980 {
9981   CORE_ADDR address_start, address_end;
9982   struct bp_location *bl = b->loc;
9983   struct ui_file *stb = mem_fileopen ();
9984   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
9985
9986   gdb_assert (bl);
9987
9988   address_start = bl->address;
9989   address_end = address_start + bl->length - 1;
9990
9991   ui_out_text (uiout, "\taddress range: ");
9992   fprintf_unfiltered (stb, "[%s, %s]",
9993                       print_core_address (bl->gdbarch, address_start),
9994                       print_core_address (bl->gdbarch, address_end));
9995   ui_out_field_stream (uiout, "addr", stb);
9996   ui_out_text (uiout, "\n");
9997
9998   do_cleanups (cleanup);
9999 }
10000
10001 /* Implement the "print_mention" breakpoint_ops method for
10002    ranged breakpoints.  */
10003
10004 static void
10005 print_mention_ranged_breakpoint (struct breakpoint *b)
10006 {
10007   struct bp_location *bl = b->loc;
10008   struct ui_out *uiout = current_uiout;
10009
10010   gdb_assert (bl);
10011   gdb_assert (b->type == bp_hardware_breakpoint);
10012
10013   if (ui_out_is_mi_like_p (uiout))
10014     return;
10015
10016   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10017                    b->number, paddress (bl->gdbarch, bl->address),
10018                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10019 }
10020
10021 /* Implement the "print_recreate" breakpoint_ops method for
10022    ranged breakpoints.  */
10023
10024 static void
10025 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10026 {
10027   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10028                       b->addr_string_range_end);
10029   print_recreate_thread (b, fp);
10030 }
10031
10032 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10033
10034 static struct breakpoint_ops ranged_breakpoint_ops;
10035
10036 /* Find the address where the end of the breakpoint range should be
10037    placed, given the SAL of the end of the range.  This is so that if
10038    the user provides a line number, the end of the range is set to the
10039    last instruction of the given line.  */
10040
10041 static CORE_ADDR
10042 find_breakpoint_range_end (struct symtab_and_line sal)
10043 {
10044   CORE_ADDR end;
10045
10046   /* If the user provided a PC value, use it.  Otherwise,
10047      find the address of the end of the given location.  */
10048   if (sal.explicit_pc)
10049     end = sal.pc;
10050   else
10051     {
10052       int ret;
10053       CORE_ADDR start;
10054
10055       ret = find_line_pc_range (sal, &start, &end);
10056       if (!ret)
10057         error (_("Could not find location of the end of the range."));
10058
10059       /* find_line_pc_range returns the start of the next line.  */
10060       end--;
10061     }
10062
10063   return end;
10064 }
10065
10066 /* Implement the "break-range" CLI command.  */
10067
10068 static void
10069 break_range_command (char *arg, int from_tty)
10070 {
10071   char *arg_start, *addr_string_start, *addr_string_end;
10072   struct linespec_result canonical_start, canonical_end;
10073   int bp_count, can_use_bp, length;
10074   CORE_ADDR end;
10075   struct breakpoint *b;
10076   struct symtab_and_line sal_start, sal_end;
10077   struct cleanup *cleanup_bkpt;
10078   struct linespec_sals *lsal_start, *lsal_end;
10079
10080   /* We don't support software ranged breakpoints.  */
10081   if (target_ranged_break_num_registers () < 0)
10082     error (_("This target does not support hardware ranged breakpoints."));
10083
10084   bp_count = hw_breakpoint_used_count ();
10085   bp_count += target_ranged_break_num_registers ();
10086   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10087                                                    bp_count, 0);
10088   if (can_use_bp < 0)
10089     error (_("Hardware breakpoints used exceeds limit."));
10090
10091   arg = skip_spaces (arg);
10092   if (arg == NULL || arg[0] == '\0')
10093     error(_("No address range specified."));
10094
10095   init_linespec_result (&canonical_start);
10096
10097   arg_start = arg;
10098   parse_breakpoint_sals (&arg, &canonical_start);
10099
10100   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10101
10102   if (arg[0] != ',')
10103     error (_("Too few arguments."));
10104   else if (VEC_empty (linespec_sals, canonical_start.sals))
10105     error (_("Could not find location of the beginning of the range."));
10106
10107   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10108
10109   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10110       || lsal_start->sals.nelts != 1)
10111     error (_("Cannot create a ranged breakpoint with multiple locations."));
10112
10113   sal_start = lsal_start->sals.sals[0];
10114   addr_string_start = savestring (arg_start, arg - arg_start);
10115   make_cleanup (xfree, addr_string_start);
10116
10117   arg++;        /* Skip the comma.  */
10118   arg = skip_spaces (arg);
10119
10120   /* Parse the end location.  */
10121
10122   init_linespec_result (&canonical_end);
10123   arg_start = arg;
10124
10125   /* We call decode_line_full directly here instead of using
10126      parse_breakpoint_sals because we need to specify the start location's
10127      symtab and line as the default symtab and line for the end of the
10128      range.  This makes it possible to have ranges like "foo.c:27, +14",
10129      where +14 means 14 lines from the start location.  */
10130   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10131                     sal_start.symtab, sal_start.line,
10132                     &canonical_end, NULL, NULL);
10133
10134   make_cleanup_destroy_linespec_result (&canonical_end);
10135
10136   if (VEC_empty (linespec_sals, canonical_end.sals))
10137     error (_("Could not find location of the end of the range."));
10138
10139   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10140   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10141       || lsal_end->sals.nelts != 1)
10142     error (_("Cannot create a ranged breakpoint with multiple locations."));
10143
10144   sal_end = lsal_end->sals.sals[0];
10145   addr_string_end = savestring (arg_start, arg - arg_start);
10146   make_cleanup (xfree, addr_string_end);
10147
10148   end = find_breakpoint_range_end (sal_end);
10149   if (sal_start.pc > end)
10150     error (_("Invalid address range, end precedes start."));
10151
10152   length = end - sal_start.pc + 1;
10153   if (length < 0)
10154     /* Length overflowed.  */
10155     error (_("Address range too large."));
10156   else if (length == 1)
10157     {
10158       /* This range is simple enough to be handled by
10159          the `hbreak' command.  */
10160       hbreak_command (addr_string_start, 1);
10161
10162       do_cleanups (cleanup_bkpt);
10163
10164       return;
10165     }
10166
10167   /* Now set up the breakpoint.  */
10168   b = set_raw_breakpoint (get_current_arch (), sal_start,
10169                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10170   set_breakpoint_count (breakpoint_count + 1);
10171   b->number = breakpoint_count;
10172   b->disposition = disp_donttouch;
10173   b->addr_string = xstrdup (addr_string_start);
10174   b->addr_string_range_end = xstrdup (addr_string_end);
10175   b->loc->length = length;
10176
10177   do_cleanups (cleanup_bkpt);
10178
10179   mention (b);
10180   observer_notify_breakpoint_created (b);
10181   update_global_location_list (1);
10182 }
10183
10184 /*  Return non-zero if EXP is verified as constant.  Returned zero
10185     means EXP is variable.  Also the constant detection may fail for
10186     some constant expressions and in such case still falsely return
10187     zero.  */
10188
10189 static int
10190 watchpoint_exp_is_const (const struct expression *exp)
10191 {
10192   int i = exp->nelts;
10193
10194   while (i > 0)
10195     {
10196       int oplenp, argsp;
10197
10198       /* We are only interested in the descriptor of each element.  */
10199       operator_length (exp, i, &oplenp, &argsp);
10200       i -= oplenp;
10201
10202       switch (exp->elts[i].opcode)
10203         {
10204         case BINOP_ADD:
10205         case BINOP_SUB:
10206         case BINOP_MUL:
10207         case BINOP_DIV:
10208         case BINOP_REM:
10209         case BINOP_MOD:
10210         case BINOP_LSH:
10211         case BINOP_RSH:
10212         case BINOP_LOGICAL_AND:
10213         case BINOP_LOGICAL_OR:
10214         case BINOP_BITWISE_AND:
10215         case BINOP_BITWISE_IOR:
10216         case BINOP_BITWISE_XOR:
10217         case BINOP_EQUAL:
10218         case BINOP_NOTEQUAL:
10219         case BINOP_LESS:
10220         case BINOP_GTR:
10221         case BINOP_LEQ:
10222         case BINOP_GEQ:
10223         case BINOP_REPEAT:
10224         case BINOP_COMMA:
10225         case BINOP_EXP:
10226         case BINOP_MIN:
10227         case BINOP_MAX:
10228         case BINOP_INTDIV:
10229         case BINOP_CONCAT:
10230         case BINOP_IN:
10231         case BINOP_RANGE:
10232         case TERNOP_COND:
10233         case TERNOP_SLICE:
10234
10235         case OP_LONG:
10236         case OP_DOUBLE:
10237         case OP_DECFLOAT:
10238         case OP_LAST:
10239         case OP_COMPLEX:
10240         case OP_STRING:
10241         case OP_ARRAY:
10242         case OP_TYPE:
10243         case OP_TYPEOF:
10244         case OP_DECLTYPE:
10245         case OP_NAME:
10246         case OP_OBJC_NSSTRING:
10247
10248         case UNOP_NEG:
10249         case UNOP_LOGICAL_NOT:
10250         case UNOP_COMPLEMENT:
10251         case UNOP_ADDR:
10252         case UNOP_HIGH:
10253         case UNOP_CAST:
10254
10255         case UNOP_CAST_TYPE:
10256         case UNOP_REINTERPRET_CAST:
10257         case UNOP_DYNAMIC_CAST:
10258           /* Unary, binary and ternary operators: We have to check
10259              their operands.  If they are constant, then so is the
10260              result of that operation.  For instance, if A and B are
10261              determined to be constants, then so is "A + B".
10262
10263              UNOP_IND is one exception to the rule above, because the
10264              value of *ADDR is not necessarily a constant, even when
10265              ADDR is.  */
10266           break;
10267
10268         case OP_VAR_VALUE:
10269           /* Check whether the associated symbol is a constant.
10270
10271              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10272              possible that a buggy compiler could mark a variable as
10273              constant even when it is not, and TYPE_CONST would return
10274              true in this case, while SYMBOL_CLASS wouldn't.
10275
10276              We also have to check for function symbols because they
10277              are always constant.  */
10278           {
10279             struct symbol *s = exp->elts[i + 2].symbol;
10280
10281             if (SYMBOL_CLASS (s) != LOC_BLOCK
10282                 && SYMBOL_CLASS (s) != LOC_CONST
10283                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10284               return 0;
10285             break;
10286           }
10287
10288         /* The default action is to return 0 because we are using
10289            the optimistic approach here: If we don't know something,
10290            then it is not a constant.  */
10291         default:
10292           return 0;
10293         }
10294     }
10295
10296   return 1;
10297 }
10298
10299 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10300
10301 static void
10302 dtor_watchpoint (struct breakpoint *self)
10303 {
10304   struct watchpoint *w = (struct watchpoint *) self;
10305
10306   xfree (w->cond_exp);
10307   xfree (w->exp);
10308   xfree (w->exp_string);
10309   xfree (w->exp_string_reparse);
10310   value_free (w->val);
10311
10312   base_breakpoint_ops.dtor (self);
10313 }
10314
10315 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10316
10317 static void
10318 re_set_watchpoint (struct breakpoint *b)
10319 {
10320   struct watchpoint *w = (struct watchpoint *) b;
10321
10322   /* Watchpoint can be either on expression using entirely global
10323      variables, or it can be on local variables.
10324
10325      Watchpoints of the first kind are never auto-deleted, and even
10326      persist across program restarts.  Since they can use variables
10327      from shared libraries, we need to reparse expression as libraries
10328      are loaded and unloaded.
10329
10330      Watchpoints on local variables can also change meaning as result
10331      of solib event.  For example, if a watchpoint uses both a local
10332      and a global variables in expression, it's a local watchpoint,
10333      but unloading of a shared library will make the expression
10334      invalid.  This is not a very common use case, but we still
10335      re-evaluate expression, to avoid surprises to the user.
10336
10337      Note that for local watchpoints, we re-evaluate it only if
10338      watchpoints frame id is still valid.  If it's not, it means the
10339      watchpoint is out of scope and will be deleted soon.  In fact,
10340      I'm not sure we'll ever be called in this case.
10341
10342      If a local watchpoint's frame id is still valid, then
10343      w->exp_valid_block is likewise valid, and we can safely use it.
10344
10345      Don't do anything about disabled watchpoints, since they will be
10346      reevaluated again when enabled.  */
10347   update_watchpoint (w, 1 /* reparse */);
10348 }
10349
10350 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10351
10352 static int
10353 insert_watchpoint (struct bp_location *bl)
10354 {
10355   struct watchpoint *w = (struct watchpoint *) bl->owner;
10356   int length = w->exact ? 1 : bl->length;
10357
10358   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10359                                    w->cond_exp);
10360 }
10361
10362 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10363
10364 static int
10365 remove_watchpoint (struct bp_location *bl)
10366 {
10367   struct watchpoint *w = (struct watchpoint *) bl->owner;
10368   int length = w->exact ? 1 : bl->length;
10369
10370   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10371                                    w->cond_exp);
10372 }
10373
10374 static int
10375 breakpoint_hit_watchpoint (const struct bp_location *bl,
10376                            struct address_space *aspace, CORE_ADDR bp_addr,
10377                            const struct target_waitstatus *ws)
10378 {
10379   struct breakpoint *b = bl->owner;
10380   struct watchpoint *w = (struct watchpoint *) b;
10381
10382   /* Continuable hardware watchpoints are treated as non-existent if the
10383      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10384      some data address).  Otherwise gdb won't stop on a break instruction
10385      in the code (not from a breakpoint) when a hardware watchpoint has
10386      been defined.  Also skip watchpoints which we know did not trigger
10387      (did not match the data address).  */
10388   if (is_hardware_watchpoint (b)
10389       && w->watchpoint_triggered == watch_triggered_no)
10390     return 0;
10391
10392   return 1;
10393 }
10394
10395 static void
10396 check_status_watchpoint (bpstat bs)
10397 {
10398   gdb_assert (is_watchpoint (bs->breakpoint_at));
10399
10400   bpstat_check_watchpoint (bs);
10401 }
10402
10403 /* Implement the "resources_needed" breakpoint_ops method for
10404    hardware watchpoints.  */
10405
10406 static int
10407 resources_needed_watchpoint (const struct bp_location *bl)
10408 {
10409   struct watchpoint *w = (struct watchpoint *) bl->owner;
10410   int length = w->exact? 1 : bl->length;
10411
10412   return target_region_ok_for_hw_watchpoint (bl->address, length);
10413 }
10414
10415 /* Implement the "works_in_software_mode" breakpoint_ops method for
10416    hardware watchpoints.  */
10417
10418 static int
10419 works_in_software_mode_watchpoint (const struct breakpoint *b)
10420 {
10421   /* Read and access watchpoints only work with hardware support.  */
10422   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10423 }
10424
10425 static enum print_stop_action
10426 print_it_watchpoint (bpstat bs)
10427 {
10428   struct cleanup *old_chain;
10429   struct breakpoint *b;
10430   const struct bp_location *bl;
10431   struct ui_file *stb;
10432   enum print_stop_action result;
10433   struct watchpoint *w;
10434   struct ui_out *uiout = current_uiout;
10435
10436   gdb_assert (bs->bp_location_at != NULL);
10437
10438   bl = bs->bp_location_at;
10439   b = bs->breakpoint_at;
10440   w = (struct watchpoint *) b;
10441
10442   stb = mem_fileopen ();
10443   old_chain = make_cleanup_ui_file_delete (stb);
10444
10445   switch (b->type)
10446     {
10447     case bp_watchpoint:
10448     case bp_hardware_watchpoint:
10449       annotate_watchpoint (b->number);
10450       if (ui_out_is_mi_like_p (uiout))
10451         ui_out_field_string
10452           (uiout, "reason",
10453            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10454       mention (b);
10455       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10456       ui_out_text (uiout, "\nOld value = ");
10457       watchpoint_value_print (bs->old_val, stb);
10458       ui_out_field_stream (uiout, "old", stb);
10459       ui_out_text (uiout, "\nNew value = ");
10460       watchpoint_value_print (w->val, stb);
10461       ui_out_field_stream (uiout, "new", stb);
10462       ui_out_text (uiout, "\n");
10463       /* More than one watchpoint may have been triggered.  */
10464       result = PRINT_UNKNOWN;
10465       break;
10466
10467     case bp_read_watchpoint:
10468       if (ui_out_is_mi_like_p (uiout))
10469         ui_out_field_string
10470           (uiout, "reason",
10471            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10472       mention (b);
10473       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10474       ui_out_text (uiout, "\nValue = ");
10475       watchpoint_value_print (w->val, stb);
10476       ui_out_field_stream (uiout, "value", stb);
10477       ui_out_text (uiout, "\n");
10478       result = PRINT_UNKNOWN;
10479       break;
10480
10481     case bp_access_watchpoint:
10482       if (bs->old_val != NULL)
10483         {
10484           annotate_watchpoint (b->number);
10485           if (ui_out_is_mi_like_p (uiout))
10486             ui_out_field_string
10487               (uiout, "reason",
10488                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10489           mention (b);
10490           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10491           ui_out_text (uiout, "\nOld value = ");
10492           watchpoint_value_print (bs->old_val, stb);
10493           ui_out_field_stream (uiout, "old", stb);
10494           ui_out_text (uiout, "\nNew value = ");
10495         }
10496       else
10497         {
10498           mention (b);
10499           if (ui_out_is_mi_like_p (uiout))
10500             ui_out_field_string
10501               (uiout, "reason",
10502                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10503           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10504           ui_out_text (uiout, "\nValue = ");
10505         }
10506       watchpoint_value_print (w->val, stb);
10507       ui_out_field_stream (uiout, "new", stb);
10508       ui_out_text (uiout, "\n");
10509       result = PRINT_UNKNOWN;
10510       break;
10511     default:
10512       result = PRINT_UNKNOWN;
10513     }
10514
10515   do_cleanups (old_chain);
10516   return result;
10517 }
10518
10519 /* Implement the "print_mention" breakpoint_ops method for hardware
10520    watchpoints.  */
10521
10522 static void
10523 print_mention_watchpoint (struct breakpoint *b)
10524 {
10525   struct cleanup *ui_out_chain;
10526   struct watchpoint *w = (struct watchpoint *) b;
10527   struct ui_out *uiout = current_uiout;
10528
10529   switch (b->type)
10530     {
10531     case bp_watchpoint:
10532       ui_out_text (uiout, "Watchpoint ");
10533       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10534       break;
10535     case bp_hardware_watchpoint:
10536       ui_out_text (uiout, "Hardware watchpoint ");
10537       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10538       break;
10539     case bp_read_watchpoint:
10540       ui_out_text (uiout, "Hardware read watchpoint ");
10541       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10542       break;
10543     case bp_access_watchpoint:
10544       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10545       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10546       break;
10547     default:
10548       internal_error (__FILE__, __LINE__,
10549                       _("Invalid hardware watchpoint type."));
10550     }
10551
10552   ui_out_field_int (uiout, "number", b->number);
10553   ui_out_text (uiout, ": ");
10554   ui_out_field_string (uiout, "exp", w->exp_string);
10555   do_cleanups (ui_out_chain);
10556 }
10557
10558 /* Implement the "print_recreate" breakpoint_ops method for
10559    watchpoints.  */
10560
10561 static void
10562 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10563 {
10564   struct watchpoint *w = (struct watchpoint *) b;
10565
10566   switch (b->type)
10567     {
10568     case bp_watchpoint:
10569     case bp_hardware_watchpoint:
10570       fprintf_unfiltered (fp, "watch");
10571       break;
10572     case bp_read_watchpoint:
10573       fprintf_unfiltered (fp, "rwatch");
10574       break;
10575     case bp_access_watchpoint:
10576       fprintf_unfiltered (fp, "awatch");
10577       break;
10578     default:
10579       internal_error (__FILE__, __LINE__,
10580                       _("Invalid watchpoint type."));
10581     }
10582
10583   fprintf_unfiltered (fp, " %s", w->exp_string);
10584   print_recreate_thread (b, fp);
10585 }
10586
10587 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10588
10589 static struct breakpoint_ops watchpoint_breakpoint_ops;
10590
10591 /* Implement the "insert" breakpoint_ops method for
10592    masked hardware watchpoints.  */
10593
10594 static int
10595 insert_masked_watchpoint (struct bp_location *bl)
10596 {
10597   struct watchpoint *w = (struct watchpoint *) bl->owner;
10598
10599   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10600                                         bl->watchpoint_type);
10601 }
10602
10603 /* Implement the "remove" breakpoint_ops method for
10604    masked hardware watchpoints.  */
10605
10606 static int
10607 remove_masked_watchpoint (struct bp_location *bl)
10608 {
10609   struct watchpoint *w = (struct watchpoint *) bl->owner;
10610
10611   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10612                                         bl->watchpoint_type);
10613 }
10614
10615 /* Implement the "resources_needed" breakpoint_ops method for
10616    masked hardware watchpoints.  */
10617
10618 static int
10619 resources_needed_masked_watchpoint (const struct bp_location *bl)
10620 {
10621   struct watchpoint *w = (struct watchpoint *) bl->owner;
10622
10623   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10624 }
10625
10626 /* Implement the "works_in_software_mode" breakpoint_ops method for
10627    masked hardware watchpoints.  */
10628
10629 static int
10630 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10631 {
10632   return 0;
10633 }
10634
10635 /* Implement the "print_it" breakpoint_ops method for
10636    masked hardware watchpoints.  */
10637
10638 static enum print_stop_action
10639 print_it_masked_watchpoint (bpstat bs)
10640 {
10641   struct breakpoint *b = bs->breakpoint_at;
10642   struct ui_out *uiout = current_uiout;
10643
10644   /* Masked watchpoints have only one location.  */
10645   gdb_assert (b->loc && b->loc->next == NULL);
10646
10647   switch (b->type)
10648     {
10649     case bp_hardware_watchpoint:
10650       annotate_watchpoint (b->number);
10651       if (ui_out_is_mi_like_p (uiout))
10652         ui_out_field_string
10653           (uiout, "reason",
10654            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10655       break;
10656
10657     case bp_read_watchpoint:
10658       if (ui_out_is_mi_like_p (uiout))
10659         ui_out_field_string
10660           (uiout, "reason",
10661            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10662       break;
10663
10664     case bp_access_watchpoint:
10665       if (ui_out_is_mi_like_p (uiout))
10666         ui_out_field_string
10667           (uiout, "reason",
10668            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10669       break;
10670     default:
10671       internal_error (__FILE__, __LINE__,
10672                       _("Invalid hardware watchpoint type."));
10673     }
10674
10675   mention (b);
10676   ui_out_text (uiout, _("\n\
10677 Check the underlying instruction at PC for the memory\n\
10678 address and value which triggered this watchpoint.\n"));
10679   ui_out_text (uiout, "\n");
10680
10681   /* More than one watchpoint may have been triggered.  */
10682   return PRINT_UNKNOWN;
10683 }
10684
10685 /* Implement the "print_one_detail" breakpoint_ops method for
10686    masked hardware watchpoints.  */
10687
10688 static void
10689 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10690                                     struct ui_out *uiout)
10691 {
10692   struct watchpoint *w = (struct watchpoint *) b;
10693
10694   /* Masked watchpoints have only one location.  */
10695   gdb_assert (b->loc && b->loc->next == NULL);
10696
10697   ui_out_text (uiout, "\tmask ");
10698   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10699   ui_out_text (uiout, "\n");
10700 }
10701
10702 /* Implement the "print_mention" breakpoint_ops method for
10703    masked hardware watchpoints.  */
10704
10705 static void
10706 print_mention_masked_watchpoint (struct breakpoint *b)
10707 {
10708   struct watchpoint *w = (struct watchpoint *) b;
10709   struct ui_out *uiout = current_uiout;
10710   struct cleanup *ui_out_chain;
10711
10712   switch (b->type)
10713     {
10714     case bp_hardware_watchpoint:
10715       ui_out_text (uiout, "Masked hardware watchpoint ");
10716       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10717       break;
10718     case bp_read_watchpoint:
10719       ui_out_text (uiout, "Masked hardware read watchpoint ");
10720       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10721       break;
10722     case bp_access_watchpoint:
10723       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10724       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10725       break;
10726     default:
10727       internal_error (__FILE__, __LINE__,
10728                       _("Invalid hardware watchpoint type."));
10729     }
10730
10731   ui_out_field_int (uiout, "number", b->number);
10732   ui_out_text (uiout, ": ");
10733   ui_out_field_string (uiout, "exp", w->exp_string);
10734   do_cleanups (ui_out_chain);
10735 }
10736
10737 /* Implement the "print_recreate" breakpoint_ops method for
10738    masked hardware watchpoints.  */
10739
10740 static void
10741 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10742 {
10743   struct watchpoint *w = (struct watchpoint *) b;
10744   char tmp[40];
10745
10746   switch (b->type)
10747     {
10748     case bp_hardware_watchpoint:
10749       fprintf_unfiltered (fp, "watch");
10750       break;
10751     case bp_read_watchpoint:
10752       fprintf_unfiltered (fp, "rwatch");
10753       break;
10754     case bp_access_watchpoint:
10755       fprintf_unfiltered (fp, "awatch");
10756       break;
10757     default:
10758       internal_error (__FILE__, __LINE__,
10759                       _("Invalid hardware watchpoint type."));
10760     }
10761
10762   sprintf_vma (tmp, w->hw_wp_mask);
10763   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10764   print_recreate_thread (b, fp);
10765 }
10766
10767 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10768
10769 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10770
10771 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10772
10773 static int
10774 is_masked_watchpoint (const struct breakpoint *b)
10775 {
10776   return b->ops == &masked_watchpoint_breakpoint_ops;
10777 }
10778
10779 /* accessflag:  hw_write:  watch write, 
10780                 hw_read:   watch read, 
10781                 hw_access: watch access (read or write) */
10782 static void
10783 watch_command_1 (char *arg, int accessflag, int from_tty,
10784                  int just_location, int internal)
10785 {
10786   volatile struct gdb_exception e;
10787   struct breakpoint *b, *scope_breakpoint = NULL;
10788   struct expression *exp;
10789   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10790   struct value *val, *mark, *result;
10791   struct frame_info *frame;
10792   char *exp_start = NULL;
10793   char *exp_end = NULL;
10794   char *tok, *end_tok;
10795   int toklen = -1;
10796   char *cond_start = NULL;
10797   char *cond_end = NULL;
10798   enum bptype bp_type;
10799   int thread = -1;
10800   int pc = 0;
10801   /* Flag to indicate whether we are going to use masks for
10802      the hardware watchpoint.  */
10803   int use_mask = 0;
10804   CORE_ADDR mask = 0;
10805   struct watchpoint *w;
10806
10807   /* Make sure that we actually have parameters to parse.  */
10808   if (arg != NULL && arg[0] != '\0')
10809     {
10810       char *value_start;
10811
10812       /* Look for "parameter value" pairs at the end
10813          of the arguments string.  */
10814       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10815         {
10816           /* Skip whitespace at the end of the argument list.  */
10817           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10818             tok--;
10819
10820           /* Find the beginning of the last token.
10821              This is the value of the parameter.  */
10822           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10823             tok--;
10824           value_start = tok + 1;
10825
10826           /* Skip whitespace.  */
10827           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10828             tok--;
10829
10830           end_tok = tok;
10831
10832           /* Find the beginning of the second to last token.
10833              This is the parameter itself.  */
10834           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10835             tok--;
10836           tok++;
10837           toklen = end_tok - tok + 1;
10838
10839           if (toklen == 6 && !strncmp (tok, "thread", 6))
10840             {
10841               /* At this point we've found a "thread" token, which means
10842                  the user is trying to set a watchpoint that triggers
10843                  only in a specific thread.  */
10844               char *endp;
10845
10846               if (thread != -1)
10847                 error(_("You can specify only one thread."));
10848
10849               /* Extract the thread ID from the next token.  */
10850               thread = strtol (value_start, &endp, 0);
10851
10852               /* Check if the user provided a valid numeric value for the
10853                  thread ID.  */
10854               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10855                 error (_("Invalid thread ID specification %s."), value_start);
10856
10857               /* Check if the thread actually exists.  */
10858               if (!valid_thread_id (thread))
10859                 invalid_thread_id_error (thread);
10860             }
10861           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10862             {
10863               /* We've found a "mask" token, which means the user wants to
10864                  create a hardware watchpoint that is going to have the mask
10865                  facility.  */
10866               struct value *mask_value, *mark;
10867
10868               if (use_mask)
10869                 error(_("You can specify only one mask."));
10870
10871               use_mask = just_location = 1;
10872
10873               mark = value_mark ();
10874               mask_value = parse_to_comma_and_eval (&value_start);
10875               mask = value_as_address (mask_value);
10876               value_free_to_mark (mark);
10877             }
10878           else
10879             /* We didn't recognize what we found.  We should stop here.  */
10880             break;
10881
10882           /* Truncate the string and get rid of the "parameter value" pair before
10883              the arguments string is parsed by the parse_exp_1 function.  */
10884           *tok = '\0';
10885         }
10886     }
10887
10888   /* Parse the rest of the arguments.  */
10889   innermost_block = NULL;
10890   exp_start = arg;
10891   exp = parse_exp_1 (&arg, 0, 0, 0);
10892   exp_end = arg;
10893   /* Remove trailing whitespace from the expression before saving it.
10894      This makes the eventual display of the expression string a bit
10895      prettier.  */
10896   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10897     --exp_end;
10898
10899   /* Checking if the expression is not constant.  */
10900   if (watchpoint_exp_is_const (exp))
10901     {
10902       int len;
10903
10904       len = exp_end - exp_start;
10905       while (len > 0 && isspace (exp_start[len - 1]))
10906         len--;
10907       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10908     }
10909
10910   exp_valid_block = innermost_block;
10911   mark = value_mark ();
10912   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10913
10914   if (just_location)
10915     {
10916       int ret;
10917
10918       exp_valid_block = NULL;
10919       val = value_addr (result);
10920       release_value (val);
10921       value_free_to_mark (mark);
10922
10923       if (use_mask)
10924         {
10925           ret = target_masked_watch_num_registers (value_as_address (val),
10926                                                    mask);
10927           if (ret == -1)
10928             error (_("This target does not support masked watchpoints."));
10929           else if (ret == -2)
10930             error (_("Invalid mask or memory region."));
10931         }
10932     }
10933   else if (val != NULL)
10934     release_value (val);
10935
10936   tok = skip_spaces (arg);
10937   end_tok = skip_to_space (tok);
10938
10939   toklen = end_tok - tok;
10940   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10941     {
10942       struct expression *cond;
10943
10944       innermost_block = NULL;
10945       tok = cond_start = end_tok + 1;
10946       cond = parse_exp_1 (&tok, 0, 0, 0);
10947
10948       /* The watchpoint expression may not be local, but the condition
10949          may still be.  E.g.: `watch global if local > 0'.  */
10950       cond_exp_valid_block = innermost_block;
10951
10952       xfree (cond);
10953       cond_end = tok;
10954     }
10955   if (*tok)
10956     error (_("Junk at end of command."));
10957
10958   if (accessflag == hw_read)
10959     bp_type = bp_read_watchpoint;
10960   else if (accessflag == hw_access)
10961     bp_type = bp_access_watchpoint;
10962   else
10963     bp_type = bp_hardware_watchpoint;
10964
10965   frame = block_innermost_frame (exp_valid_block);
10966
10967   /* If the expression is "local", then set up a "watchpoint scope"
10968      breakpoint at the point where we've left the scope of the watchpoint
10969      expression.  Create the scope breakpoint before the watchpoint, so
10970      that we will encounter it first in bpstat_stop_status.  */
10971   if (exp_valid_block && frame)
10972     {
10973       if (frame_id_p (frame_unwind_caller_id (frame)))
10974         {
10975           scope_breakpoint
10976             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10977                                           frame_unwind_caller_pc (frame),
10978                                           bp_watchpoint_scope,
10979                                           &momentary_breakpoint_ops);
10980
10981           scope_breakpoint->enable_state = bp_enabled;
10982
10983           /* Automatically delete the breakpoint when it hits.  */
10984           scope_breakpoint->disposition = disp_del;
10985
10986           /* Only break in the proper frame (help with recursion).  */
10987           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10988
10989           /* Set the address at which we will stop.  */
10990           scope_breakpoint->loc->gdbarch
10991             = frame_unwind_caller_arch (frame);
10992           scope_breakpoint->loc->requested_address
10993             = frame_unwind_caller_pc (frame);
10994           scope_breakpoint->loc->address
10995             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10996                                          scope_breakpoint->loc->requested_address,
10997                                          scope_breakpoint->type);
10998         }
10999     }
11000
11001   /* Now set up the breakpoint.  */
11002
11003   w = XCNEW (struct watchpoint);
11004   b = &w->base;
11005   if (use_mask)
11006     init_raw_breakpoint_without_location (b, NULL, bp_type,
11007                                           &masked_watchpoint_breakpoint_ops);
11008   else
11009     init_raw_breakpoint_without_location (b, NULL, bp_type,
11010                                           &watchpoint_breakpoint_ops);
11011   b->thread = thread;
11012   b->disposition = disp_donttouch;
11013   b->pspace = current_program_space;
11014   w->exp = exp;
11015   w->exp_valid_block = exp_valid_block;
11016   w->cond_exp_valid_block = cond_exp_valid_block;
11017   if (just_location)
11018     {
11019       struct type *t = value_type (val);
11020       CORE_ADDR addr = value_as_address (val);
11021       char *name;
11022
11023       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11024       name = type_to_string (t);
11025
11026       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11027                                           core_addr_to_string (addr));
11028       xfree (name);
11029
11030       w->exp_string = xstrprintf ("-location %.*s",
11031                                   (int) (exp_end - exp_start), exp_start);
11032
11033       /* The above expression is in C.  */
11034       b->language = language_c;
11035     }
11036   else
11037     w->exp_string = savestring (exp_start, exp_end - exp_start);
11038
11039   if (use_mask)
11040     {
11041       w->hw_wp_mask = mask;
11042     }
11043   else
11044     {
11045       w->val = val;
11046       w->val_valid = 1;
11047     }
11048
11049   if (cond_start)
11050     b->cond_string = savestring (cond_start, cond_end - cond_start);
11051   else
11052     b->cond_string = 0;
11053
11054   if (frame)
11055     {
11056       w->watchpoint_frame = get_frame_id (frame);
11057       w->watchpoint_thread = inferior_ptid;
11058     }
11059   else
11060     {
11061       w->watchpoint_frame = null_frame_id;
11062       w->watchpoint_thread = null_ptid;
11063     }
11064
11065   if (scope_breakpoint != NULL)
11066     {
11067       /* The scope breakpoint is related to the watchpoint.  We will
11068          need to act on them together.  */
11069       b->related_breakpoint = scope_breakpoint;
11070       scope_breakpoint->related_breakpoint = b;
11071     }
11072
11073   if (!just_location)
11074     value_free_to_mark (mark);
11075
11076   TRY_CATCH (e, RETURN_MASK_ALL)
11077     {
11078       /* Finally update the new watchpoint.  This creates the locations
11079          that should be inserted.  */
11080       update_watchpoint (w, 1);
11081     }
11082   if (e.reason < 0)
11083     {
11084       delete_breakpoint (b);
11085       throw_exception (e);
11086     }
11087
11088   install_breakpoint (internal, b, 1);
11089 }
11090
11091 /* Return count of debug registers needed to watch the given expression.
11092    If the watchpoint cannot be handled in hardware return zero.  */
11093
11094 static int
11095 can_use_hardware_watchpoint (struct value *v)
11096 {
11097   int found_memory_cnt = 0;
11098   struct value *head = v;
11099
11100   /* Did the user specifically forbid us to use hardware watchpoints? */
11101   if (!can_use_hw_watchpoints)
11102     return 0;
11103
11104   /* Make sure that the value of the expression depends only upon
11105      memory contents, and values computed from them within GDB.  If we
11106      find any register references or function calls, we can't use a
11107      hardware watchpoint.
11108
11109      The idea here is that evaluating an expression generates a series
11110      of values, one holding the value of every subexpression.  (The
11111      expression a*b+c has five subexpressions: a, b, a*b, c, and
11112      a*b+c.)  GDB's values hold almost enough information to establish
11113      the criteria given above --- they identify memory lvalues,
11114      register lvalues, computed values, etcetera.  So we can evaluate
11115      the expression, and then scan the chain of values that leaves
11116      behind to decide whether we can detect any possible change to the
11117      expression's final value using only hardware watchpoints.
11118
11119      However, I don't think that the values returned by inferior
11120      function calls are special in any way.  So this function may not
11121      notice that an expression involving an inferior function call
11122      can't be watched with hardware watchpoints.  FIXME.  */
11123   for (; v; v = value_next (v))
11124     {
11125       if (VALUE_LVAL (v) == lval_memory)
11126         {
11127           if (v != head && value_lazy (v))
11128             /* A lazy memory lvalue in the chain is one that GDB never
11129                needed to fetch; we either just used its address (e.g.,
11130                `a' in `a.b') or we never needed it at all (e.g., `a'
11131                in `a,b').  This doesn't apply to HEAD; if that is
11132                lazy then it was not readable, but watch it anyway.  */
11133             ;
11134           else
11135             {
11136               /* Ahh, memory we actually used!  Check if we can cover
11137                  it with hardware watchpoints.  */
11138               struct type *vtype = check_typedef (value_type (v));
11139
11140               /* We only watch structs and arrays if user asked for it
11141                  explicitly, never if they just happen to appear in a
11142                  middle of some value chain.  */
11143               if (v == head
11144                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11145                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11146                 {
11147                   CORE_ADDR vaddr = value_address (v);
11148                   int len;
11149                   int num_regs;
11150
11151                   len = (target_exact_watchpoints
11152                          && is_scalar_type_recursive (vtype))?
11153                     1 : TYPE_LENGTH (value_type (v));
11154
11155                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11156                   if (!num_regs)
11157                     return 0;
11158                   else
11159                     found_memory_cnt += num_regs;
11160                 }
11161             }
11162         }
11163       else if (VALUE_LVAL (v) != not_lval
11164                && deprecated_value_modifiable (v) == 0)
11165         return 0;       /* These are values from the history (e.g., $1).  */
11166       else if (VALUE_LVAL (v) == lval_register)
11167         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11168     }
11169
11170   /* The expression itself looks suitable for using a hardware
11171      watchpoint, but give the target machine a chance to reject it.  */
11172   return found_memory_cnt;
11173 }
11174
11175 void
11176 watch_command_wrapper (char *arg, int from_tty, int internal)
11177 {
11178   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11179 }
11180
11181 /* A helper function that looks for the "-location" argument and then
11182    calls watch_command_1.  */
11183
11184 static void
11185 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11186 {
11187   int just_location = 0;
11188
11189   if (arg
11190       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11191           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11192     {
11193       arg = skip_spaces (arg);
11194       just_location = 1;
11195     }
11196
11197   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11198 }
11199
11200 static void
11201 watch_command (char *arg, int from_tty)
11202 {
11203   watch_maybe_just_location (arg, hw_write, from_tty);
11204 }
11205
11206 void
11207 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11208 {
11209   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11210 }
11211
11212 static void
11213 rwatch_command (char *arg, int from_tty)
11214 {
11215   watch_maybe_just_location (arg, hw_read, from_tty);
11216 }
11217
11218 void
11219 awatch_command_wrapper (char *arg, int from_tty, int internal)
11220 {
11221   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11222 }
11223
11224 static void
11225 awatch_command (char *arg, int from_tty)
11226 {
11227   watch_maybe_just_location (arg, hw_access, from_tty);
11228 }
11229 \f
11230
11231 /* Helper routines for the until_command routine in infcmd.c.  Here
11232    because it uses the mechanisms of breakpoints.  */
11233
11234 struct until_break_command_continuation_args
11235 {
11236   struct breakpoint *breakpoint;
11237   struct breakpoint *breakpoint2;
11238   int thread_num;
11239 };
11240
11241 /* This function is called by fetch_inferior_event via the
11242    cmd_continuation pointer, to complete the until command.  It takes
11243    care of cleaning up the temporary breakpoints set up by the until
11244    command.  */
11245 static void
11246 until_break_command_continuation (void *arg, int err)
11247 {
11248   struct until_break_command_continuation_args *a = arg;
11249
11250   delete_breakpoint (a->breakpoint);
11251   if (a->breakpoint2)
11252     delete_breakpoint (a->breakpoint2);
11253   delete_longjmp_breakpoint (a->thread_num);
11254 }
11255
11256 void
11257 until_break_command (char *arg, int from_tty, int anywhere)
11258 {
11259   struct symtabs_and_lines sals;
11260   struct symtab_and_line sal;
11261   struct frame_info *frame;
11262   struct gdbarch *frame_gdbarch;
11263   struct frame_id stack_frame_id;
11264   struct frame_id caller_frame_id;
11265   struct breakpoint *breakpoint;
11266   struct breakpoint *breakpoint2 = NULL;
11267   struct cleanup *old_chain;
11268   int thread;
11269   struct thread_info *tp;
11270
11271   clear_proceed_status ();
11272
11273   /* Set a breakpoint where the user wants it and at return from
11274      this function.  */
11275
11276   if (last_displayed_sal_is_valid ())
11277     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11278                           get_last_displayed_symtab (),
11279                           get_last_displayed_line ());
11280   else
11281     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11282                           (struct symtab *) NULL, 0);
11283
11284   if (sals.nelts != 1)
11285     error (_("Couldn't get information on specified line."));
11286
11287   sal = sals.sals[0];
11288   xfree (sals.sals);    /* malloc'd, so freed.  */
11289
11290   if (*arg)
11291     error (_("Junk at end of arguments."));
11292
11293   resolve_sal_pc (&sal);
11294
11295   tp = inferior_thread ();
11296   thread = tp->num;
11297
11298   old_chain = make_cleanup (null_cleanup, NULL);
11299
11300   /* Note linespec handling above invalidates the frame chain.
11301      Installing a breakpoint also invalidates the frame chain (as it
11302      may need to switch threads), so do any frame handling before
11303      that.  */
11304
11305   frame = get_selected_frame (NULL);
11306   frame_gdbarch = get_frame_arch (frame);
11307   stack_frame_id = get_stack_frame_id (frame);
11308   caller_frame_id = frame_unwind_caller_id (frame);
11309
11310   /* Keep within the current frame, or in frames called by the current
11311      one.  */
11312
11313   if (frame_id_p (caller_frame_id))
11314     {
11315       struct symtab_and_line sal2;
11316
11317       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11318       sal2.pc = frame_unwind_caller_pc (frame);
11319       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11320                                               sal2,
11321                                               caller_frame_id,
11322                                               bp_until);
11323       make_cleanup_delete_breakpoint (breakpoint2);
11324
11325       set_longjmp_breakpoint (tp, caller_frame_id);
11326       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11327     }
11328
11329   /* set_momentary_breakpoint could invalidate FRAME.  */
11330   frame = NULL;
11331
11332   if (anywhere)
11333     /* If the user told us to continue until a specified location,
11334        we don't specify a frame at which we need to stop.  */
11335     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11336                                            null_frame_id, bp_until);
11337   else
11338     /* Otherwise, specify the selected frame, because we want to stop
11339        only at the very same frame.  */
11340     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11341                                            stack_frame_id, bp_until);
11342   make_cleanup_delete_breakpoint (breakpoint);
11343
11344   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11345
11346   /* If we are running asynchronously, and proceed call above has
11347      actually managed to start the target, arrange for breakpoints to
11348      be deleted when the target stops.  Otherwise, we're already
11349      stopped and delete breakpoints via cleanup chain.  */
11350
11351   if (target_can_async_p () && is_running (inferior_ptid))
11352     {
11353       struct until_break_command_continuation_args *args;
11354       args = xmalloc (sizeof (*args));
11355
11356       args->breakpoint = breakpoint;
11357       args->breakpoint2 = breakpoint2;
11358       args->thread_num = thread;
11359
11360       discard_cleanups (old_chain);
11361       add_continuation (inferior_thread (),
11362                         until_break_command_continuation, args,
11363                         xfree);
11364     }
11365   else
11366     do_cleanups (old_chain);
11367 }
11368
11369 /* This function attempts to parse an optional "if <cond>" clause
11370    from the arg string.  If one is not found, it returns NULL.
11371
11372    Else, it returns a pointer to the condition string.  (It does not
11373    attempt to evaluate the string against a particular block.)  And,
11374    it updates arg to point to the first character following the parsed
11375    if clause in the arg string.  */
11376
11377 static char *
11378 ep_parse_optional_if_clause (char **arg)
11379 {
11380   char *cond_string;
11381
11382   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11383     return NULL;
11384
11385   /* Skip the "if" keyword.  */
11386   (*arg) += 2;
11387
11388   /* Skip any extra leading whitespace, and record the start of the
11389      condition string.  */
11390   *arg = skip_spaces (*arg);
11391   cond_string = *arg;
11392
11393   /* Assume that the condition occupies the remainder of the arg
11394      string.  */
11395   (*arg) += strlen (cond_string);
11396
11397   return cond_string;
11398 }
11399
11400 /* Commands to deal with catching events, such as signals, exceptions,
11401    process start/exit, etc.  */
11402
11403 typedef enum
11404 {
11405   catch_fork_temporary, catch_vfork_temporary,
11406   catch_fork_permanent, catch_vfork_permanent
11407 }
11408 catch_fork_kind;
11409
11410 static void
11411 catch_fork_command_1 (char *arg, int from_tty, 
11412                       struct cmd_list_element *command)
11413 {
11414   struct gdbarch *gdbarch = get_current_arch ();
11415   char *cond_string = NULL;
11416   catch_fork_kind fork_kind;
11417   int tempflag;
11418
11419   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11420   tempflag = (fork_kind == catch_fork_temporary
11421               || fork_kind == catch_vfork_temporary);
11422
11423   if (!arg)
11424     arg = "";
11425   arg = skip_spaces (arg);
11426
11427   /* The allowed syntax is:
11428      catch [v]fork
11429      catch [v]fork if <cond>
11430
11431      First, check if there's an if clause.  */
11432   cond_string = ep_parse_optional_if_clause (&arg);
11433
11434   if ((*arg != '\0') && !isspace (*arg))
11435     error (_("Junk at end of arguments."));
11436
11437   /* If this target supports it, create a fork or vfork catchpoint
11438      and enable reporting of such events.  */
11439   switch (fork_kind)
11440     {
11441     case catch_fork_temporary:
11442     case catch_fork_permanent:
11443       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11444                                           &catch_fork_breakpoint_ops);
11445       break;
11446     case catch_vfork_temporary:
11447     case catch_vfork_permanent:
11448       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11449                                           &catch_vfork_breakpoint_ops);
11450       break;
11451     default:
11452       error (_("unsupported or unknown fork kind; cannot catch it"));
11453       break;
11454     }
11455 }
11456
11457 static void
11458 catch_exec_command_1 (char *arg, int from_tty, 
11459                       struct cmd_list_element *command)
11460 {
11461   struct exec_catchpoint *c;
11462   struct gdbarch *gdbarch = get_current_arch ();
11463   int tempflag;
11464   char *cond_string = NULL;
11465
11466   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11467
11468   if (!arg)
11469     arg = "";
11470   arg = skip_spaces (arg);
11471
11472   /* The allowed syntax is:
11473      catch exec
11474      catch exec if <cond>
11475
11476      First, check if there's an if clause.  */
11477   cond_string = ep_parse_optional_if_clause (&arg);
11478
11479   if ((*arg != '\0') && !isspace (*arg))
11480     error (_("Junk at end of arguments."));
11481
11482   c = XNEW (struct exec_catchpoint);
11483   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11484                    &catch_exec_breakpoint_ops);
11485   c->exec_pathname = NULL;
11486
11487   install_breakpoint (0, &c->base, 1);
11488 }
11489
11490 static enum print_stop_action
11491 print_it_exception_catchpoint (bpstat bs)
11492 {
11493   struct ui_out *uiout = current_uiout;
11494   struct breakpoint *b = bs->breakpoint_at;
11495   int bp_temp, bp_throw;
11496
11497   annotate_catchpoint (b->number);
11498
11499   bp_throw = strstr (b->addr_string, "throw") != NULL;
11500   if (b->loc->address != b->loc->requested_address)
11501     breakpoint_adjustment_warning (b->loc->requested_address,
11502                                    b->loc->address,
11503                                    b->number, 1);
11504   bp_temp = b->disposition == disp_del;
11505   ui_out_text (uiout, 
11506                bp_temp ? "Temporary catchpoint "
11507                        : "Catchpoint ");
11508   if (!ui_out_is_mi_like_p (uiout))
11509     ui_out_field_int (uiout, "bkptno", b->number);
11510   ui_out_text (uiout,
11511                bp_throw ? " (exception thrown), "
11512                         : " (exception caught), ");
11513   if (ui_out_is_mi_like_p (uiout))
11514     {
11515       ui_out_field_string (uiout, "reason", 
11516                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11517       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11518       ui_out_field_int (uiout, "bkptno", b->number);
11519     }
11520   return PRINT_SRC_AND_LOC;
11521 }
11522
11523 static void
11524 print_one_exception_catchpoint (struct breakpoint *b, 
11525                                 struct bp_location **last_loc)
11526 {
11527   struct value_print_options opts;
11528   struct ui_out *uiout = current_uiout;
11529
11530   get_user_print_options (&opts);
11531   if (opts.addressprint)
11532     {
11533       annotate_field (4);
11534       if (b->loc == NULL || b->loc->shlib_disabled)
11535         ui_out_field_string (uiout, "addr", "<PENDING>");
11536       else
11537         ui_out_field_core_addr (uiout, "addr",
11538                                 b->loc->gdbarch, b->loc->address);
11539     }
11540   annotate_field (5);
11541   if (b->loc)
11542     *last_loc = b->loc;
11543   if (strstr (b->addr_string, "throw") != NULL)
11544     ui_out_field_string (uiout, "what", "exception throw");
11545   else
11546     ui_out_field_string (uiout, "what", "exception catch");
11547 }
11548
11549 static void
11550 print_mention_exception_catchpoint (struct breakpoint *b)
11551 {
11552   struct ui_out *uiout = current_uiout;
11553   int bp_temp;
11554   int bp_throw;
11555
11556   bp_temp = b->disposition == disp_del;
11557   bp_throw = strstr (b->addr_string, "throw") != NULL;
11558   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11559                               : _("Catchpoint "));
11560   ui_out_field_int (uiout, "bkptno", b->number);
11561   ui_out_text (uiout, bp_throw ? _(" (throw)")
11562                                : _(" (catch)"));
11563 }
11564
11565 /* Implement the "print_recreate" breakpoint_ops method for throw and
11566    catch catchpoints.  */
11567
11568 static void
11569 print_recreate_exception_catchpoint (struct breakpoint *b, 
11570                                      struct ui_file *fp)
11571 {
11572   int bp_temp;
11573   int bp_throw;
11574
11575   bp_temp = b->disposition == disp_del;
11576   bp_throw = strstr (b->addr_string, "throw") != NULL;
11577   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11578   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11579   print_recreate_thread (b, fp);
11580 }
11581
11582 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11583
11584 static int
11585 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11586                           enum exception_event_kind ex_event, int from_tty)
11587 {
11588   char *trigger_func_name;
11589  
11590   if (ex_event == EX_EVENT_CATCH)
11591     trigger_func_name = "__cxa_begin_catch";
11592   else
11593     trigger_func_name = "__cxa_throw";
11594
11595   create_breakpoint (get_current_arch (),
11596                      trigger_func_name, cond_string, -1, NULL,
11597                      0 /* condition and thread are valid.  */,
11598                      tempflag, bp_breakpoint,
11599                      0,
11600                      AUTO_BOOLEAN_TRUE /* pending */,
11601                      &gnu_v3_exception_catchpoint_ops, from_tty,
11602                      1 /* enabled */,
11603                      0 /* internal */,
11604                      0);
11605
11606   return 1;
11607 }
11608
11609 /* Deal with "catch catch" and "catch throw" commands.  */
11610
11611 static void
11612 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11613                            int tempflag, int from_tty)
11614 {
11615   char *cond_string = NULL;
11616
11617   if (!arg)
11618     arg = "";
11619   arg = skip_spaces (arg);
11620
11621   cond_string = ep_parse_optional_if_clause (&arg);
11622
11623   if ((*arg != '\0') && !isspace (*arg))
11624     error (_("Junk at end of arguments."));
11625
11626   if (ex_event != EX_EVENT_THROW
11627       && ex_event != EX_EVENT_CATCH)
11628     error (_("Unsupported or unknown exception event; cannot catch it"));
11629
11630   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11631     return;
11632
11633   warning (_("Unsupported with this platform/compiler combination."));
11634 }
11635
11636 /* Implementation of "catch catch" command.  */
11637
11638 static void
11639 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11640 {
11641   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11642
11643   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11644 }
11645
11646 /* Implementation of "catch throw" command.  */
11647
11648 static void
11649 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11650 {
11651   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11652
11653   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11654 }
11655
11656 void
11657 init_ada_exception_breakpoint (struct breakpoint *b,
11658                                struct gdbarch *gdbarch,
11659                                struct symtab_and_line sal,
11660                                char *addr_string,
11661                                const struct breakpoint_ops *ops,
11662                                int tempflag,
11663                                int from_tty)
11664 {
11665   if (from_tty)
11666     {
11667       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11668       if (!loc_gdbarch)
11669         loc_gdbarch = gdbarch;
11670
11671       describe_other_breakpoints (loc_gdbarch,
11672                                   sal.pspace, sal.pc, sal.section, -1);
11673       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11674          version for exception catchpoints, because two catchpoints
11675          used for different exception names will use the same address.
11676          In this case, a "breakpoint ... also set at..." warning is
11677          unproductive.  Besides, the warning phrasing is also a bit
11678          inappropriate, we should use the word catchpoint, and tell
11679          the user what type of catchpoint it is.  The above is good
11680          enough for now, though.  */
11681     }
11682
11683   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11684
11685   b->enable_state = bp_enabled;
11686   b->disposition = tempflag ? disp_del : disp_donttouch;
11687   b->addr_string = addr_string;
11688   b->language = language_ada;
11689 }
11690
11691 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11692    filter list, or NULL if no filtering is required.  */
11693 static VEC(int) *
11694 catch_syscall_split_args (char *arg)
11695 {
11696   VEC(int) *result = NULL;
11697   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11698
11699   while (*arg != '\0')
11700     {
11701       int i, syscall_number;
11702       char *endptr;
11703       char cur_name[128];
11704       struct syscall s;
11705
11706       /* Skip whitespace.  */
11707       while (isspace (*arg))
11708         arg++;
11709
11710       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11711         cur_name[i] = arg[i];
11712       cur_name[i] = '\0';
11713       arg += i;
11714
11715       /* Check if the user provided a syscall name or a number.  */
11716       syscall_number = (int) strtol (cur_name, &endptr, 0);
11717       if (*endptr == '\0')
11718         get_syscall_by_number (syscall_number, &s);
11719       else
11720         {
11721           /* We have a name.  Let's check if it's valid and convert it
11722              to a number.  */
11723           get_syscall_by_name (cur_name, &s);
11724
11725           if (s.number == UNKNOWN_SYSCALL)
11726             /* Here we have to issue an error instead of a warning,
11727                because GDB cannot do anything useful if there's no
11728                syscall number to be caught.  */
11729             error (_("Unknown syscall name '%s'."), cur_name);
11730         }
11731
11732       /* Ok, it's valid.  */
11733       VEC_safe_push (int, result, s.number);
11734     }
11735
11736   discard_cleanups (cleanup);
11737   return result;
11738 }
11739
11740 /* Implement the "catch syscall" command.  */
11741
11742 static void
11743 catch_syscall_command_1 (char *arg, int from_tty, 
11744                          struct cmd_list_element *command)
11745 {
11746   int tempflag;
11747   VEC(int) *filter;
11748   struct syscall s;
11749   struct gdbarch *gdbarch = get_current_arch ();
11750
11751   /* Checking if the feature if supported.  */
11752   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11753     error (_("The feature 'catch syscall' is not supported on \
11754 this architecture yet."));
11755
11756   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11757
11758   arg = skip_spaces (arg);
11759
11760   /* We need to do this first "dummy" translation in order
11761      to get the syscall XML file loaded or, most important,
11762      to display a warning to the user if there's no XML file
11763      for his/her architecture.  */
11764   get_syscall_by_number (0, &s);
11765
11766   /* The allowed syntax is:
11767      catch syscall
11768      catch syscall <name | number> [<name | number> ... <name | number>]
11769
11770      Let's check if there's a syscall name.  */
11771
11772   if (arg != NULL)
11773     filter = catch_syscall_split_args (arg);
11774   else
11775     filter = NULL;
11776
11777   create_syscall_event_catchpoint (tempflag, filter,
11778                                    &catch_syscall_breakpoint_ops);
11779 }
11780
11781 static void
11782 catch_command (char *arg, int from_tty)
11783 {
11784   error (_("Catch requires an event name."));
11785 }
11786 \f
11787
11788 static void
11789 tcatch_command (char *arg, int from_tty)
11790 {
11791   error (_("Catch requires an event name."));
11792 }
11793
11794 /* A qsort comparison function that sorts breakpoints in order.  */
11795
11796 static int
11797 compare_breakpoints (const void *a, const void *b)
11798 {
11799   const breakpoint_p *ba = a;
11800   uintptr_t ua = (uintptr_t) *ba;
11801   const breakpoint_p *bb = b;
11802   uintptr_t ub = (uintptr_t) *bb;
11803
11804   if ((*ba)->number < (*bb)->number)
11805     return -1;
11806   else if ((*ba)->number > (*bb)->number)
11807     return 1;
11808
11809   /* Now sort by address, in case we see, e..g, two breakpoints with
11810      the number 0.  */
11811   if (ua < ub)
11812     return -1;
11813   return ua > ub ? 1 : 0;
11814 }
11815
11816 /* Delete breakpoints by address or line.  */
11817
11818 static void
11819 clear_command (char *arg, int from_tty)
11820 {
11821   struct breakpoint *b, *prev;
11822   VEC(breakpoint_p) *found = 0;
11823   int ix;
11824   int default_match;
11825   struct symtabs_and_lines sals;
11826   struct symtab_and_line sal;
11827   int i;
11828   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11829
11830   if (arg)
11831     {
11832       sals = decode_line_with_current_source (arg,
11833                                               (DECODE_LINE_FUNFIRSTLINE
11834                                                | DECODE_LINE_LIST_MODE));
11835       make_cleanup (xfree, sals.sals);
11836       default_match = 0;
11837     }
11838   else
11839     {
11840       sals.sals = (struct symtab_and_line *)
11841         xmalloc (sizeof (struct symtab_and_line));
11842       make_cleanup (xfree, sals.sals);
11843       init_sal (&sal);          /* Initialize to zeroes.  */
11844
11845       /* Set sal's line, symtab, pc, and pspace to the values
11846          corresponding to the last call to print_frame_info.  If the
11847          codepoint is not valid, this will set all the fields to 0.  */
11848       get_last_displayed_sal (&sal);
11849       if (sal.symtab == 0)
11850         error (_("No source file specified."));
11851
11852       sals.sals[0] = sal;
11853       sals.nelts = 1;
11854
11855       default_match = 1;
11856     }
11857
11858   /* We don't call resolve_sal_pc here.  That's not as bad as it
11859      seems, because all existing breakpoints typically have both
11860      file/line and pc set.  So, if clear is given file/line, we can
11861      match this to existing breakpoint without obtaining pc at all.
11862
11863      We only support clearing given the address explicitly 
11864      present in breakpoint table.  Say, we've set breakpoint 
11865      at file:line.  There were several PC values for that file:line,
11866      due to optimization, all in one block.
11867
11868      We've picked one PC value.  If "clear" is issued with another
11869      PC corresponding to the same file:line, the breakpoint won't
11870      be cleared.  We probably can still clear the breakpoint, but 
11871      since the other PC value is never presented to user, user
11872      can only find it by guessing, and it does not seem important
11873      to support that.  */
11874
11875   /* For each line spec given, delete bps which correspond to it.  Do
11876      it in two passes, solely to preserve the current behavior that
11877      from_tty is forced true if we delete more than one
11878      breakpoint.  */
11879
11880   found = NULL;
11881   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11882   for (i = 0; i < sals.nelts; i++)
11883     {
11884       int is_abs, sal_name_len;
11885
11886       /* If exact pc given, clear bpts at that pc.
11887          If line given (pc == 0), clear all bpts on specified line.
11888          If defaulting, clear all bpts on default line
11889          or at default pc.
11890
11891          defaulting    sal.pc != 0    tests to do
11892
11893          0              1             pc
11894          1              1             pc _and_ line
11895          0              0             line
11896          1              0             <can't happen> */
11897
11898       sal = sals.sals[i];
11899       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11900       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11901
11902       /* Find all matching breakpoints and add them to 'found'.  */
11903       ALL_BREAKPOINTS (b)
11904         {
11905           int match = 0;
11906           /* Are we going to delete b?  */
11907           if (b->type != bp_none && !is_watchpoint (b))
11908             {
11909               struct bp_location *loc = b->loc;
11910               for (; loc; loc = loc->next)
11911                 {
11912                   /* If the user specified file:line, don't allow a PC
11913                      match.  This matches historical gdb behavior.  */
11914                   int pc_match = (!sal.explicit_line
11915                                   && sal.pc
11916                                   && (loc->pspace == sal.pspace)
11917                                   && (loc->address == sal.pc)
11918                                   && (!section_is_overlay (loc->section)
11919                                       || loc->section == sal.section));
11920                   int line_match = 0;
11921
11922                   if ((default_match || sal.explicit_line)
11923                       && loc->source_file != NULL
11924                       && sal.symtab != NULL
11925                       && sal.pspace == loc->pspace
11926                       && loc->line_number == sal.line)
11927                     {
11928                       if (filename_cmp (loc->source_file,
11929                                         sal.symtab->filename) == 0)
11930                         line_match = 1;
11931                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11932                                && compare_filenames_for_search (loc->source_file,
11933                                                                 sal.symtab->filename,
11934                                                                 sal_name_len))
11935                         line_match = 1;
11936                     }
11937
11938                   if (pc_match || line_match)
11939                     {
11940                       match = 1;
11941                       break;
11942                     }
11943                 }
11944             }
11945
11946           if (match)
11947             VEC_safe_push(breakpoint_p, found, b);
11948         }
11949     }
11950
11951   /* Now go thru the 'found' chain and delete them.  */
11952   if (VEC_empty(breakpoint_p, found))
11953     {
11954       if (arg)
11955         error (_("No breakpoint at %s."), arg);
11956       else
11957         error (_("No breakpoint at this line."));
11958     }
11959
11960   /* Remove duplicates from the vec.  */
11961   qsort (VEC_address (breakpoint_p, found),
11962          VEC_length (breakpoint_p, found),
11963          sizeof (breakpoint_p),
11964          compare_breakpoints);
11965   prev = VEC_index (breakpoint_p, found, 0);
11966   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11967     {
11968       if (b == prev)
11969         {
11970           VEC_ordered_remove (breakpoint_p, found, ix);
11971           --ix;
11972         }
11973     }
11974
11975   if (VEC_length(breakpoint_p, found) > 1)
11976     from_tty = 1;       /* Always report if deleted more than one.  */
11977   if (from_tty)
11978     {
11979       if (VEC_length(breakpoint_p, found) == 1)
11980         printf_unfiltered (_("Deleted breakpoint "));
11981       else
11982         printf_unfiltered (_("Deleted breakpoints "));
11983     }
11984   annotate_breakpoints_changed ();
11985
11986   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11987     {
11988       if (from_tty)
11989         printf_unfiltered ("%d ", b->number);
11990       delete_breakpoint (b);
11991     }
11992   if (from_tty)
11993     putchar_unfiltered ('\n');
11994
11995   do_cleanups (cleanups);
11996 }
11997 \f
11998 /* Delete breakpoint in BS if they are `delete' breakpoints and
11999    all breakpoints that are marked for deletion, whether hit or not.
12000    This is called after any breakpoint is hit, or after errors.  */
12001
12002 void
12003 breakpoint_auto_delete (bpstat bs)
12004 {
12005   struct breakpoint *b, *b_tmp;
12006
12007   for (; bs; bs = bs->next)
12008     if (bs->breakpoint_at
12009         && bs->breakpoint_at->disposition == disp_del
12010         && bs->stop)
12011       delete_breakpoint (bs->breakpoint_at);
12012
12013   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12014   {
12015     if (b->disposition == disp_del_at_next_stop)
12016       delete_breakpoint (b);
12017   }
12018 }
12019
12020 /* A comparison function for bp_location AP and BP being interfaced to
12021    qsort.  Sort elements primarily by their ADDRESS (no matter what
12022    does breakpoint_address_is_meaningful say for its OWNER),
12023    secondarily by ordering first bp_permanent OWNERed elements and
12024    terciarily just ensuring the array is sorted stable way despite
12025    qsort being an unstable algorithm.  */
12026
12027 static int
12028 bp_location_compare (const void *ap, const void *bp)
12029 {
12030   struct bp_location *a = *(void **) ap;
12031   struct bp_location *b = *(void **) bp;
12032   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12033   int a_perm = a->owner->enable_state == bp_permanent;
12034   int b_perm = b->owner->enable_state == bp_permanent;
12035
12036   if (a->address != b->address)
12037     return (a->address > b->address) - (a->address < b->address);
12038
12039   /* Sort locations at the same address by their pspace number, keeping
12040      locations of the same inferior (in a multi-inferior environment)
12041      grouped.  */
12042
12043   if (a->pspace->num != b->pspace->num)
12044     return ((a->pspace->num > b->pspace->num)
12045             - (a->pspace->num < b->pspace->num));
12046
12047   /* Sort permanent breakpoints first.  */
12048   if (a_perm != b_perm)
12049     return (a_perm < b_perm) - (a_perm > b_perm);
12050
12051   /* Make the internal GDB representation stable across GDB runs
12052      where A and B memory inside GDB can differ.  Breakpoint locations of
12053      the same type at the same address can be sorted in arbitrary order.  */
12054
12055   if (a->owner->number != b->owner->number)
12056     return ((a->owner->number > b->owner->number)
12057             - (a->owner->number < b->owner->number));
12058
12059   return (a > b) - (a < b);
12060 }
12061
12062 /* Set bp_location_placed_address_before_address_max and
12063    bp_location_shadow_len_after_address_max according to the current
12064    content of the bp_location array.  */
12065
12066 static void
12067 bp_location_target_extensions_update (void)
12068 {
12069   struct bp_location *bl, **blp_tmp;
12070
12071   bp_location_placed_address_before_address_max = 0;
12072   bp_location_shadow_len_after_address_max = 0;
12073
12074   ALL_BP_LOCATIONS (bl, blp_tmp)
12075     {
12076       CORE_ADDR start, end, addr;
12077
12078       if (!bp_location_has_shadow (bl))
12079         continue;
12080
12081       start = bl->target_info.placed_address;
12082       end = start + bl->target_info.shadow_len;
12083
12084       gdb_assert (bl->address >= start);
12085       addr = bl->address - start;
12086       if (addr > bp_location_placed_address_before_address_max)
12087         bp_location_placed_address_before_address_max = addr;
12088
12089       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12090
12091       gdb_assert (bl->address < end);
12092       addr = end - bl->address;
12093       if (addr > bp_location_shadow_len_after_address_max)
12094         bp_location_shadow_len_after_address_max = addr;
12095     }
12096 }
12097
12098 /* Download tracepoint locations if they haven't been.  */
12099
12100 static void
12101 download_tracepoint_locations (void)
12102 {
12103   struct breakpoint *b;
12104   struct cleanup *old_chain;
12105
12106   if (!target_can_download_tracepoint ())
12107     return;
12108
12109   old_chain = save_current_space_and_thread ();
12110
12111   ALL_TRACEPOINTS (b)
12112     {
12113       struct bp_location *bl;
12114       struct tracepoint *t;
12115       int bp_location_downloaded = 0;
12116
12117       if ((b->type == bp_fast_tracepoint
12118            ? !may_insert_fast_tracepoints
12119            : !may_insert_tracepoints))
12120         continue;
12121
12122       for (bl = b->loc; bl; bl = bl->next)
12123         {
12124           /* In tracepoint, locations are _never_ duplicated, so
12125              should_be_inserted is equivalent to
12126              unduplicated_should_be_inserted.  */
12127           if (!should_be_inserted (bl) || bl->inserted)
12128             continue;
12129
12130           switch_to_program_space_and_thread (bl->pspace);
12131
12132           target_download_tracepoint (bl);
12133
12134           bl->inserted = 1;
12135           bp_location_downloaded = 1;
12136         }
12137       t = (struct tracepoint *) b;
12138       t->number_on_target = b->number;
12139       if (bp_location_downloaded)
12140         observer_notify_breakpoint_modified (b);
12141     }
12142
12143   do_cleanups (old_chain);
12144 }
12145
12146 /* Swap the insertion/duplication state between two locations.  */
12147
12148 static void
12149 swap_insertion (struct bp_location *left, struct bp_location *right)
12150 {
12151   const int left_inserted = left->inserted;
12152   const int left_duplicate = left->duplicate;
12153   const int left_needs_update = left->needs_update;
12154   const struct bp_target_info left_target_info = left->target_info;
12155
12156   /* Locations of tracepoints can never be duplicated.  */
12157   if (is_tracepoint (left->owner))
12158     gdb_assert (!left->duplicate);
12159   if (is_tracepoint (right->owner))
12160     gdb_assert (!right->duplicate);
12161
12162   left->inserted = right->inserted;
12163   left->duplicate = right->duplicate;
12164   left->needs_update = right->needs_update;
12165   left->target_info = right->target_info;
12166   right->inserted = left_inserted;
12167   right->duplicate = left_duplicate;
12168   right->needs_update = left_needs_update;
12169   right->target_info = left_target_info;
12170 }
12171
12172 /* Force the re-insertion of the locations at ADDRESS.  This is called
12173    once a new/deleted/modified duplicate location is found and we are evaluating
12174    conditions on the target's side.  Such conditions need to be updated on
12175    the target.  */
12176
12177 static void
12178 force_breakpoint_reinsertion (struct bp_location *bl)
12179 {
12180   struct bp_location **locp = NULL, **loc2p;
12181   struct bp_location *loc;
12182   CORE_ADDR address = 0;
12183   int pspace_num;
12184
12185   address = bl->address;
12186   pspace_num = bl->pspace->num;
12187
12188   /* This is only meaningful if the target is
12189      evaluating conditions and if the user has
12190      opted for condition evaluation on the target's
12191      side.  */
12192   if (gdb_evaluates_breakpoint_condition_p ()
12193       || !target_supports_evaluation_of_breakpoint_conditions ())
12194     return;
12195
12196   /* Flag all breakpoint locations with this address and
12197      the same program space as the location
12198      as "its condition has changed".  We need to
12199      update the conditions on the target's side.  */
12200   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12201     {
12202       loc = *loc2p;
12203
12204       if (!is_breakpoint (loc->owner)
12205           || pspace_num != loc->pspace->num)
12206         continue;
12207
12208       /* Flag the location appropriately.  We use a different state to
12209          let everyone know that we already updated the set of locations
12210          with addr bl->address and program space bl->pspace.  This is so
12211          we don't have to keep calling these functions just to mark locations
12212          that have already been marked.  */
12213       loc->condition_changed = condition_updated;
12214
12215       /* Free the agent expression bytecode as well.  We will compute
12216          it later on.  */
12217       if (loc->cond_bytecode)
12218         {
12219           free_agent_expr (loc->cond_bytecode);
12220           loc->cond_bytecode = NULL;
12221         }
12222     }
12223 }
12224
12225 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12226    into the inferior, only remove already-inserted locations that no
12227    longer should be inserted.  Functions that delete a breakpoint or
12228    breakpoints should pass false, so that deleting a breakpoint
12229    doesn't have the side effect of inserting the locations of other
12230    breakpoints that are marked not-inserted, but should_be_inserted
12231    returns true on them.
12232
12233    This behaviour is useful is situations close to tear-down -- e.g.,
12234    after an exec, while the target still has execution, but breakpoint
12235    shadows of the previous executable image should *NOT* be restored
12236    to the new image; or before detaching, where the target still has
12237    execution and wants to delete breakpoints from GDB's lists, and all
12238    breakpoints had already been removed from the inferior.  */
12239
12240 static void
12241 update_global_location_list (int should_insert)
12242 {
12243   struct breakpoint *b;
12244   struct bp_location **locp, *loc;
12245   struct cleanup *cleanups;
12246   /* Last breakpoint location address that was marked for update.  */
12247   CORE_ADDR last_addr = 0;
12248   /* Last breakpoint location program space that was marked for update.  */
12249   int last_pspace_num = -1;
12250
12251   /* Used in the duplicates detection below.  When iterating over all
12252      bp_locations, points to the first bp_location of a given address.
12253      Breakpoints and watchpoints of different types are never
12254      duplicates of each other.  Keep one pointer for each type of
12255      breakpoint/watchpoint, so we only need to loop over all locations
12256      once.  */
12257   struct bp_location *bp_loc_first;  /* breakpoint */
12258   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12259   struct bp_location *awp_loc_first; /* access watchpoint */
12260   struct bp_location *rwp_loc_first; /* read watchpoint */
12261
12262   /* Saved former bp_location array which we compare against the newly
12263      built bp_location from the current state of ALL_BREAKPOINTS.  */
12264   struct bp_location **old_location, **old_locp;
12265   unsigned old_location_count;
12266
12267   old_location = bp_location;
12268   old_location_count = bp_location_count;
12269   bp_location = NULL;
12270   bp_location_count = 0;
12271   cleanups = make_cleanup (xfree, old_location);
12272
12273   ALL_BREAKPOINTS (b)
12274     for (loc = b->loc; loc; loc = loc->next)
12275       bp_location_count++;
12276
12277   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12278   locp = bp_location;
12279   ALL_BREAKPOINTS (b)
12280     for (loc = b->loc; loc; loc = loc->next)
12281       *locp++ = loc;
12282   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12283          bp_location_compare);
12284
12285   bp_location_target_extensions_update ();
12286
12287   /* Identify bp_location instances that are no longer present in the
12288      new list, and therefore should be freed.  Note that it's not
12289      necessary that those locations should be removed from inferior --
12290      if there's another location at the same address (previously
12291      marked as duplicate), we don't need to remove/insert the
12292      location.
12293      
12294      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12295      and former bp_location array state respectively.  */
12296
12297   locp = bp_location;
12298   for (old_locp = old_location; old_locp < old_location + old_location_count;
12299        old_locp++)
12300     {
12301       struct bp_location *old_loc = *old_locp;
12302       struct bp_location **loc2p;
12303
12304       /* Tells if 'old_loc' is found among the new locations.  If
12305          not, we have to free it.  */
12306       int found_object = 0;
12307       /* Tells if the location should remain inserted in the target.  */
12308       int keep_in_target = 0;
12309       int removed = 0;
12310
12311       /* Skip LOCP entries which will definitely never be needed.
12312          Stop either at or being the one matching OLD_LOC.  */
12313       while (locp < bp_location + bp_location_count
12314              && (*locp)->address < old_loc->address)
12315         locp++;
12316
12317       for (loc2p = locp;
12318            (loc2p < bp_location + bp_location_count
12319             && (*loc2p)->address == old_loc->address);
12320            loc2p++)
12321         {
12322           /* Check if this is a new/duplicated location or a duplicated
12323              location that had its condition modified.  If so, we want to send
12324              its condition to the target if evaluation of conditions is taking
12325              place there.  */
12326           if ((*loc2p)->condition_changed == condition_modified
12327               && (last_addr != old_loc->address
12328                   || last_pspace_num != old_loc->pspace->num))
12329             {
12330               force_breakpoint_reinsertion (*loc2p);
12331               last_pspace_num = old_loc->pspace->num;
12332             }
12333
12334           if (*loc2p == old_loc)
12335             found_object = 1;
12336         }
12337
12338       /* We have already handled this address, update it so that we don't
12339          have to go through updates again.  */
12340       last_addr = old_loc->address;
12341
12342       /* Target-side condition evaluation: Handle deleted locations.  */
12343       if (!found_object)
12344         force_breakpoint_reinsertion (old_loc);
12345
12346       /* If this location is no longer present, and inserted, look if
12347          there's maybe a new location at the same address.  If so,
12348          mark that one inserted, and don't remove this one.  This is
12349          needed so that we don't have a time window where a breakpoint
12350          at certain location is not inserted.  */
12351
12352       if (old_loc->inserted)
12353         {
12354           /* If the location is inserted now, we might have to remove
12355              it.  */
12356
12357           if (found_object && should_be_inserted (old_loc))
12358             {
12359               /* The location is still present in the location list,
12360                  and still should be inserted.  Don't do anything.  */
12361               keep_in_target = 1;
12362             }
12363           else
12364             {
12365               /* This location still exists, but it won't be kept in the
12366                  target since it may have been disabled.  We proceed to
12367                  remove its target-side condition.  */
12368
12369               /* The location is either no longer present, or got
12370                  disabled.  See if there's another location at the
12371                  same address, in which case we don't need to remove
12372                  this one from the target.  */
12373
12374               /* OLD_LOC comes from existing struct breakpoint.  */
12375               if (breakpoint_address_is_meaningful (old_loc->owner))
12376                 {
12377                   for (loc2p = locp;
12378                        (loc2p < bp_location + bp_location_count
12379                         && (*loc2p)->address == old_loc->address);
12380                        loc2p++)
12381                     {
12382                       struct bp_location *loc2 = *loc2p;
12383
12384                       if (breakpoint_locations_match (loc2, old_loc))
12385                         {
12386                           /* Read watchpoint locations are switched to
12387                              access watchpoints, if the former are not
12388                              supported, but the latter are.  */
12389                           if (is_hardware_watchpoint (old_loc->owner))
12390                             {
12391                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12392                               loc2->watchpoint_type = old_loc->watchpoint_type;
12393                             }
12394
12395                           /* loc2 is a duplicated location. We need to check
12396                              if it should be inserted in case it will be
12397                              unduplicated.  */
12398                           if (loc2 != old_loc
12399                               && unduplicated_should_be_inserted (loc2))
12400                             {
12401                               swap_insertion (old_loc, loc2);
12402                               keep_in_target = 1;
12403                               break;
12404                             }
12405                         }
12406                     }
12407                 }
12408             }
12409
12410           if (!keep_in_target)
12411             {
12412               if (remove_breakpoint (old_loc, mark_uninserted))
12413                 {
12414                   /* This is just about all we can do.  We could keep
12415                      this location on the global list, and try to
12416                      remove it next time, but there's no particular
12417                      reason why we will succeed next time.
12418                      
12419                      Note that at this point, old_loc->owner is still
12420                      valid, as delete_breakpoint frees the breakpoint
12421                      only after calling us.  */
12422                   printf_filtered (_("warning: Error removing "
12423                                      "breakpoint %d\n"), 
12424                                    old_loc->owner->number);
12425                 }
12426               removed = 1;
12427             }
12428         }
12429
12430       if (!found_object)
12431         {
12432           if (removed && non_stop
12433               && breakpoint_address_is_meaningful (old_loc->owner)
12434               && !is_hardware_watchpoint (old_loc->owner))
12435             {
12436               /* This location was removed from the target.  In
12437                  non-stop mode, a race condition is possible where
12438                  we've removed a breakpoint, but stop events for that
12439                  breakpoint are already queued and will arrive later.
12440                  We apply an heuristic to be able to distinguish such
12441                  SIGTRAPs from other random SIGTRAPs: we keep this
12442                  breakpoint location for a bit, and will retire it
12443                  after we see some number of events.  The theory here
12444                  is that reporting of events should, "on the average",
12445                  be fair, so after a while we'll see events from all
12446                  threads that have anything of interest, and no longer
12447                  need to keep this breakpoint location around.  We
12448                  don't hold locations forever so to reduce chances of
12449                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12450                  SIGTRAP.
12451
12452                  The heuristic failing can be disastrous on
12453                  decr_pc_after_break targets.
12454
12455                  On decr_pc_after_break targets, like e.g., x86-linux,
12456                  if we fail to recognize a late breakpoint SIGTRAP,
12457                  because events_till_retirement has reached 0 too
12458                  soon, we'll fail to do the PC adjustment, and report
12459                  a random SIGTRAP to the user.  When the user resumes
12460                  the inferior, it will most likely immediately crash
12461                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12462                  corrupted, because of being resumed e.g., in the
12463                  middle of a multi-byte instruction, or skipped a
12464                  one-byte instruction.  This was actually seen happen
12465                  on native x86-linux, and should be less rare on
12466                  targets that do not support new thread events, like
12467                  remote, due to the heuristic depending on
12468                  thread_count.
12469
12470                  Mistaking a random SIGTRAP for a breakpoint trap
12471                  causes similar symptoms (PC adjustment applied when
12472                  it shouldn't), but then again, playing with SIGTRAPs
12473                  behind the debugger's back is asking for trouble.
12474
12475                  Since hardware watchpoint traps are always
12476                  distinguishable from other traps, so we don't need to
12477                  apply keep hardware watchpoint moribund locations
12478                  around.  We simply always ignore hardware watchpoint
12479                  traps we can no longer explain.  */
12480
12481               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12482               old_loc->owner = NULL;
12483
12484               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12485             }
12486           else
12487             {
12488               old_loc->owner = NULL;
12489               decref_bp_location (&old_loc);
12490             }
12491         }
12492     }
12493
12494   /* Rescan breakpoints at the same address and section, marking the
12495      first one as "first" and any others as "duplicates".  This is so
12496      that the bpt instruction is only inserted once.  If we have a
12497      permanent breakpoint at the same place as BPT, make that one the
12498      official one, and the rest as duplicates.  Permanent breakpoints
12499      are sorted first for the same address.
12500
12501      Do the same for hardware watchpoints, but also considering the
12502      watchpoint's type (regular/access/read) and length.  */
12503
12504   bp_loc_first = NULL;
12505   wp_loc_first = NULL;
12506   awp_loc_first = NULL;
12507   rwp_loc_first = NULL;
12508   ALL_BP_LOCATIONS (loc, locp)
12509     {
12510       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12511          non-NULL.  */
12512       struct bp_location **loc_first_p;
12513       b = loc->owner;
12514
12515       if (!unduplicated_should_be_inserted (loc)
12516           || !breakpoint_address_is_meaningful (b)
12517           /* Don't detect duplicate for tracepoint locations because they are
12518            never duplicated.  See the comments in field `duplicate' of
12519            `struct bp_location'.  */
12520           || is_tracepoint (b))
12521         {
12522           /* Clear the condition modification flag.  */
12523           loc->condition_changed = condition_unchanged;
12524           continue;
12525         }
12526
12527       /* Permanent breakpoint should always be inserted.  */
12528       if (b->enable_state == bp_permanent && ! loc->inserted)
12529         internal_error (__FILE__, __LINE__,
12530                         _("allegedly permanent breakpoint is not "
12531                         "actually inserted"));
12532
12533       if (b->type == bp_hardware_watchpoint)
12534         loc_first_p = &wp_loc_first;
12535       else if (b->type == bp_read_watchpoint)
12536         loc_first_p = &rwp_loc_first;
12537       else if (b->type == bp_access_watchpoint)
12538         loc_first_p = &awp_loc_first;
12539       else
12540         loc_first_p = &bp_loc_first;
12541
12542       if (*loc_first_p == NULL
12543           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12544           || !breakpoint_locations_match (loc, *loc_first_p))
12545         {
12546           *loc_first_p = loc;
12547           loc->duplicate = 0;
12548
12549           if (is_breakpoint (loc->owner) && loc->condition_changed)
12550             {
12551               loc->needs_update = 1;
12552               /* Clear the condition modification flag.  */
12553               loc->condition_changed = condition_unchanged;
12554             }
12555           continue;
12556         }
12557
12558
12559       /* This and the above ensure the invariant that the first location
12560          is not duplicated, and is the inserted one.
12561          All following are marked as duplicated, and are not inserted.  */
12562       if (loc->inserted)
12563         swap_insertion (loc, *loc_first_p);
12564       loc->duplicate = 1;
12565
12566       /* Clear the condition modification flag.  */
12567       loc->condition_changed = condition_unchanged;
12568
12569       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12570           && b->enable_state != bp_permanent)
12571         internal_error (__FILE__, __LINE__,
12572                         _("another breakpoint was inserted on top of "
12573                         "a permanent breakpoint"));
12574     }
12575
12576   if (breakpoints_always_inserted_mode ()
12577       && (have_live_inferiors ()
12578           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12579     {
12580       if (should_insert)
12581         insert_breakpoint_locations ();
12582       else
12583         {
12584           /* Though should_insert is false, we may need to update conditions
12585              on the target's side if it is evaluating such conditions.  We
12586              only update conditions for locations that are marked
12587              "needs_update".  */
12588           update_inserted_breakpoint_locations ();
12589         }
12590     }
12591
12592   if (should_insert)
12593     download_tracepoint_locations ();
12594
12595   do_cleanups (cleanups);
12596 }
12597
12598 void
12599 breakpoint_retire_moribund (void)
12600 {
12601   struct bp_location *loc;
12602   int ix;
12603
12604   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12605     if (--(loc->events_till_retirement) == 0)
12606       {
12607         decref_bp_location (&loc);
12608         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12609         --ix;
12610       }
12611 }
12612
12613 static void
12614 update_global_location_list_nothrow (int inserting)
12615 {
12616   volatile struct gdb_exception e;
12617
12618   TRY_CATCH (e, RETURN_MASK_ERROR)
12619     update_global_location_list (inserting);
12620 }
12621
12622 /* Clear BKP from a BPS.  */
12623
12624 static void
12625 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12626 {
12627   bpstat bs;
12628
12629   for (bs = bps; bs; bs = bs->next)
12630     if (bs->breakpoint_at == bpt)
12631       {
12632         bs->breakpoint_at = NULL;
12633         bs->old_val = NULL;
12634         /* bs->commands will be freed later.  */
12635       }
12636 }
12637
12638 /* Callback for iterate_over_threads.  */
12639 static int
12640 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12641 {
12642   struct breakpoint *bpt = data;
12643
12644   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12645   return 0;
12646 }
12647
12648 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12649    callbacks.  */
12650
12651 static void
12652 say_where (struct breakpoint *b)
12653 {
12654   struct ui_out *uiout = current_uiout;
12655   struct value_print_options opts;
12656
12657   get_user_print_options (&opts);
12658
12659   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12660      single string.  */
12661   if (b->loc == NULL)
12662     {
12663       printf_filtered (_(" (%s) pending."), b->addr_string);
12664     }
12665   else
12666     {
12667       if (opts.addressprint || b->loc->source_file == NULL)
12668         {
12669           printf_filtered (" at ");
12670           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12671                           gdb_stdout);
12672         }
12673       if (b->loc->source_file)
12674         {
12675           /* If there is a single location, we can print the location
12676              more nicely.  */
12677           if (b->loc->next == NULL)
12678             printf_filtered (": file %s, line %d.",
12679                              b->loc->source_file, b->loc->line_number);
12680           else
12681             /* This is not ideal, but each location may have a
12682                different file name, and this at least reflects the
12683                real situation somewhat.  */
12684             printf_filtered (": %s.", b->addr_string);
12685         }
12686
12687       if (b->loc->next)
12688         {
12689           struct bp_location *loc = b->loc;
12690           int n = 0;
12691           for (; loc; loc = loc->next)
12692             ++n;
12693           printf_filtered (" (%d locations)", n);
12694         }
12695     }
12696 }
12697
12698 /* Default bp_location_ops methods.  */
12699
12700 static void
12701 bp_location_dtor (struct bp_location *self)
12702 {
12703   xfree (self->cond);
12704   if (self->cond_bytecode)
12705     free_agent_expr (self->cond_bytecode);
12706   xfree (self->function_name);
12707   xfree (self->source_file);
12708 }
12709
12710 static const struct bp_location_ops bp_location_ops =
12711 {
12712   bp_location_dtor
12713 };
12714
12715 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12716    inherit from.  */
12717
12718 static void
12719 base_breakpoint_dtor (struct breakpoint *self)
12720 {
12721   decref_counted_command_line (&self->commands);
12722   xfree (self->cond_string);
12723   xfree (self->addr_string);
12724   xfree (self->filter);
12725   xfree (self->addr_string_range_end);
12726 }
12727
12728 static struct bp_location *
12729 base_breakpoint_allocate_location (struct breakpoint *self)
12730 {
12731   struct bp_location *loc;
12732
12733   loc = XNEW (struct bp_location);
12734   init_bp_location (loc, &bp_location_ops, self);
12735   return loc;
12736 }
12737
12738 static void
12739 base_breakpoint_re_set (struct breakpoint *b)
12740 {
12741   /* Nothing to re-set. */
12742 }
12743
12744 #define internal_error_pure_virtual_called() \
12745   gdb_assert_not_reached ("pure virtual function called")
12746
12747 static int
12748 base_breakpoint_insert_location (struct bp_location *bl)
12749 {
12750   internal_error_pure_virtual_called ();
12751 }
12752
12753 static int
12754 base_breakpoint_remove_location (struct bp_location *bl)
12755 {
12756   internal_error_pure_virtual_called ();
12757 }
12758
12759 static int
12760 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12761                                 struct address_space *aspace,
12762                                 CORE_ADDR bp_addr,
12763                                 const struct target_waitstatus *ws)
12764 {
12765   internal_error_pure_virtual_called ();
12766 }
12767
12768 static void
12769 base_breakpoint_check_status (bpstat bs)
12770 {
12771   /* Always stop.   */
12772 }
12773
12774 /* A "works_in_software_mode" breakpoint_ops method that just internal
12775    errors.  */
12776
12777 static int
12778 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12779 {
12780   internal_error_pure_virtual_called ();
12781 }
12782
12783 /* A "resources_needed" breakpoint_ops method that just internal
12784    errors.  */
12785
12786 static int
12787 base_breakpoint_resources_needed (const struct bp_location *bl)
12788 {
12789   internal_error_pure_virtual_called ();
12790 }
12791
12792 static enum print_stop_action
12793 base_breakpoint_print_it (bpstat bs)
12794 {
12795   internal_error_pure_virtual_called ();
12796 }
12797
12798 static void
12799 base_breakpoint_print_one_detail (const struct breakpoint *self,
12800                                   struct ui_out *uiout)
12801 {
12802   /* nothing */
12803 }
12804
12805 static void
12806 base_breakpoint_print_mention (struct breakpoint *b)
12807 {
12808   internal_error_pure_virtual_called ();
12809 }
12810
12811 static void
12812 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12813 {
12814   internal_error_pure_virtual_called ();
12815 }
12816
12817 static void
12818 base_breakpoint_create_sals_from_address (char **arg,
12819                                           struct linespec_result *canonical,
12820                                           enum bptype type_wanted,
12821                                           char *addr_start,
12822                                           char **copy_arg)
12823 {
12824   internal_error_pure_virtual_called ();
12825 }
12826
12827 static void
12828 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12829                                         struct linespec_result *c,
12830                                         struct linespec_sals *lsal,
12831                                         char *cond_string,
12832                                         char *extra_string,
12833                                         enum bptype type_wanted,
12834                                         enum bpdisp disposition,
12835                                         int thread,
12836                                         int task, int ignore_count,
12837                                         const struct breakpoint_ops *o,
12838                                         int from_tty, int enabled,
12839                                         int internal, unsigned flags)
12840 {
12841   internal_error_pure_virtual_called ();
12842 }
12843
12844 static void
12845 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12846                                  struct symtabs_and_lines *sals)
12847 {
12848   internal_error_pure_virtual_called ();
12849 }
12850
12851 static struct breakpoint_ops base_breakpoint_ops =
12852 {
12853   base_breakpoint_dtor,
12854   base_breakpoint_allocate_location,
12855   base_breakpoint_re_set,
12856   base_breakpoint_insert_location,
12857   base_breakpoint_remove_location,
12858   base_breakpoint_breakpoint_hit,
12859   base_breakpoint_check_status,
12860   base_breakpoint_resources_needed,
12861   base_breakpoint_works_in_software_mode,
12862   base_breakpoint_print_it,
12863   NULL,
12864   base_breakpoint_print_one_detail,
12865   base_breakpoint_print_mention,
12866   base_breakpoint_print_recreate,
12867   base_breakpoint_create_sals_from_address,
12868   base_breakpoint_create_breakpoints_sal,
12869   base_breakpoint_decode_linespec,
12870 };
12871
12872 /* Default breakpoint_ops methods.  */
12873
12874 static void
12875 bkpt_re_set (struct breakpoint *b)
12876 {
12877   /* FIXME: is this still reachable?  */
12878   if (b->addr_string == NULL)
12879     {
12880       /* Anything without a string can't be re-set.  */
12881       delete_breakpoint (b);
12882       return;
12883     }
12884
12885   breakpoint_re_set_default (b);
12886 }
12887
12888 static int
12889 bkpt_insert_location (struct bp_location *bl)
12890 {
12891   if (bl->loc_type == bp_loc_hardware_breakpoint)
12892     return target_insert_hw_breakpoint (bl->gdbarch,
12893                                         &bl->target_info);
12894   else
12895     return target_insert_breakpoint (bl->gdbarch,
12896                                      &bl->target_info);
12897 }
12898
12899 static int
12900 bkpt_remove_location (struct bp_location *bl)
12901 {
12902   if (bl->loc_type == bp_loc_hardware_breakpoint)
12903     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12904   else
12905     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12906 }
12907
12908 static int
12909 bkpt_breakpoint_hit (const struct bp_location *bl,
12910                      struct address_space *aspace, CORE_ADDR bp_addr,
12911                      const struct target_waitstatus *ws)
12912 {
12913   struct breakpoint *b = bl->owner;
12914
12915   if (ws->kind != TARGET_WAITKIND_STOPPED
12916       || ws->value.sig != GDB_SIGNAL_TRAP)
12917     return 0;
12918
12919   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12920                                  aspace, bp_addr))
12921     return 0;
12922
12923   if (overlay_debugging         /* unmapped overlay section */
12924       && section_is_overlay (bl->section)
12925       && !section_is_mapped (bl->section))
12926     return 0;
12927
12928   return 1;
12929 }
12930
12931 static int
12932 bkpt_resources_needed (const struct bp_location *bl)
12933 {
12934   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12935
12936   return 1;
12937 }
12938
12939 static enum print_stop_action
12940 bkpt_print_it (bpstat bs)
12941 {
12942   struct breakpoint *b;
12943   const struct bp_location *bl;
12944   int bp_temp;
12945   struct ui_out *uiout = current_uiout;
12946
12947   gdb_assert (bs->bp_location_at != NULL);
12948
12949   bl = bs->bp_location_at;
12950   b = bs->breakpoint_at;
12951
12952   bp_temp = b->disposition == disp_del;
12953   if (bl->address != bl->requested_address)
12954     breakpoint_adjustment_warning (bl->requested_address,
12955                                    bl->address,
12956                                    b->number, 1);
12957   annotate_breakpoint (b->number);
12958   if (bp_temp)
12959     ui_out_text (uiout, "\nTemporary breakpoint ");
12960   else
12961     ui_out_text (uiout, "\nBreakpoint ");
12962   if (ui_out_is_mi_like_p (uiout))
12963     {
12964       ui_out_field_string (uiout, "reason",
12965                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12966       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12967     }
12968   ui_out_field_int (uiout, "bkptno", b->number);
12969   ui_out_text (uiout, ", ");
12970
12971   return PRINT_SRC_AND_LOC;
12972 }
12973
12974 static void
12975 bkpt_print_mention (struct breakpoint *b)
12976 {
12977   if (ui_out_is_mi_like_p (current_uiout))
12978     return;
12979
12980   switch (b->type)
12981     {
12982     case bp_breakpoint:
12983     case bp_gnu_ifunc_resolver:
12984       if (b->disposition == disp_del)
12985         printf_filtered (_("Temporary breakpoint"));
12986       else
12987         printf_filtered (_("Breakpoint"));
12988       printf_filtered (_(" %d"), b->number);
12989       if (b->type == bp_gnu_ifunc_resolver)
12990         printf_filtered (_(" at gnu-indirect-function resolver"));
12991       break;
12992     case bp_hardware_breakpoint:
12993       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12994       break;
12995     case bp_dprintf:
12996       printf_filtered (_("Dprintf %d"), b->number);
12997       break;
12998     }
12999
13000   say_where (b);
13001 }
13002
13003 static void
13004 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13005 {
13006   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13007     fprintf_unfiltered (fp, "tbreak");
13008   else if (tp->type == bp_breakpoint)
13009     fprintf_unfiltered (fp, "break");
13010   else if (tp->type == bp_hardware_breakpoint
13011            && tp->disposition == disp_del)
13012     fprintf_unfiltered (fp, "thbreak");
13013   else if (tp->type == bp_hardware_breakpoint)
13014     fprintf_unfiltered (fp, "hbreak");
13015   else
13016     internal_error (__FILE__, __LINE__,
13017                     _("unhandled breakpoint type %d"), (int) tp->type);
13018
13019   fprintf_unfiltered (fp, " %s", tp->addr_string);
13020   print_recreate_thread (tp, fp);
13021 }
13022
13023 static void
13024 bkpt_create_sals_from_address (char **arg,
13025                                struct linespec_result *canonical,
13026                                enum bptype type_wanted,
13027                                char *addr_start, char **copy_arg)
13028 {
13029   create_sals_from_address_default (arg, canonical, type_wanted,
13030                                     addr_start, copy_arg);
13031 }
13032
13033 static void
13034 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13035                              struct linespec_result *canonical,
13036                              struct linespec_sals *lsal,
13037                              char *cond_string,
13038                              char *extra_string,
13039                              enum bptype type_wanted,
13040                              enum bpdisp disposition,
13041                              int thread,
13042                              int task, int ignore_count,
13043                              const struct breakpoint_ops *ops,
13044                              int from_tty, int enabled,
13045                              int internal, unsigned flags)
13046 {
13047   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13048                                   cond_string, extra_string,
13049                                   type_wanted,
13050                                   disposition, thread, task,
13051                                   ignore_count, ops, from_tty,
13052                                   enabled, internal, flags);
13053 }
13054
13055 static void
13056 bkpt_decode_linespec (struct breakpoint *b, char **s,
13057                       struct symtabs_and_lines *sals)
13058 {
13059   decode_linespec_default (b, s, sals);
13060 }
13061
13062 /* Virtual table for internal breakpoints.  */
13063
13064 static void
13065 internal_bkpt_re_set (struct breakpoint *b)
13066 {
13067   switch (b->type)
13068     {
13069       /* Delete overlay event and longjmp master breakpoints; they
13070          will be reset later by breakpoint_re_set.  */
13071     case bp_overlay_event:
13072     case bp_longjmp_master:
13073     case bp_std_terminate_master:
13074     case bp_exception_master:
13075       delete_breakpoint (b);
13076       break;
13077
13078       /* This breakpoint is special, it's set up when the inferior
13079          starts and we really don't want to touch it.  */
13080     case bp_shlib_event:
13081
13082       /* Like bp_shlib_event, this breakpoint type is special.  Once
13083          it is set up, we do not want to touch it.  */
13084     case bp_thread_event:
13085       break;
13086     }
13087 }
13088
13089 static void
13090 internal_bkpt_check_status (bpstat bs)
13091 {
13092   if (bs->breakpoint_at->type == bp_shlib_event)
13093     {
13094       /* If requested, stop when the dynamic linker notifies GDB of
13095          events.  This allows the user to get control and place
13096          breakpoints in initializer routines for dynamically loaded
13097          objects (among other things).  */
13098       bs->stop = stop_on_solib_events;
13099       bs->print = stop_on_solib_events;
13100     }
13101   else
13102     bs->stop = 0;
13103 }
13104
13105 static enum print_stop_action
13106 internal_bkpt_print_it (bpstat bs)
13107 {
13108   struct ui_out *uiout = current_uiout;
13109   struct breakpoint *b;
13110
13111   b = bs->breakpoint_at;
13112
13113   switch (b->type)
13114     {
13115     case bp_shlib_event:
13116       /* Did we stop because the user set the stop_on_solib_events
13117          variable?  (If so, we report this as a generic, "Stopped due
13118          to shlib event" message.) */
13119       print_solib_event (0);
13120       break;
13121
13122     case bp_thread_event:
13123       /* Not sure how we will get here.
13124          GDB should not stop for these breakpoints.  */
13125       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13126       break;
13127
13128     case bp_overlay_event:
13129       /* By analogy with the thread event, GDB should not stop for these.  */
13130       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13131       break;
13132
13133     case bp_longjmp_master:
13134       /* These should never be enabled.  */
13135       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13136       break;
13137
13138     case bp_std_terminate_master:
13139       /* These should never be enabled.  */
13140       printf_filtered (_("std::terminate Master Breakpoint: "
13141                          "gdb should not stop!\n"));
13142       break;
13143
13144     case bp_exception_master:
13145       /* These should never be enabled.  */
13146       printf_filtered (_("Exception Master Breakpoint: "
13147                          "gdb should not stop!\n"));
13148       break;
13149     }
13150
13151   return PRINT_NOTHING;
13152 }
13153
13154 static void
13155 internal_bkpt_print_mention (struct breakpoint *b)
13156 {
13157   /* Nothing to mention.  These breakpoints are internal.  */
13158 }
13159
13160 /* Virtual table for momentary breakpoints  */
13161
13162 static void
13163 momentary_bkpt_re_set (struct breakpoint *b)
13164 {
13165   /* Keep temporary breakpoints, which can be encountered when we step
13166      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13167      Otherwise these should have been blown away via the cleanup chain
13168      or by breakpoint_init_inferior when we rerun the executable.  */
13169 }
13170
13171 static void
13172 momentary_bkpt_check_status (bpstat bs)
13173 {
13174   /* Nothing.  The point of these breakpoints is causing a stop.  */
13175 }
13176
13177 static enum print_stop_action
13178 momentary_bkpt_print_it (bpstat bs)
13179 {
13180   struct ui_out *uiout = current_uiout;
13181
13182   if (ui_out_is_mi_like_p (uiout))
13183     {
13184       struct breakpoint *b = bs->breakpoint_at;
13185
13186       switch (b->type)
13187         {
13188         case bp_finish:
13189           ui_out_field_string
13190             (uiout, "reason",
13191              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13192           break;
13193
13194         case bp_until:
13195           ui_out_field_string
13196             (uiout, "reason",
13197              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13198           break;
13199         }
13200     }
13201
13202   return PRINT_UNKNOWN;
13203 }
13204
13205 static void
13206 momentary_bkpt_print_mention (struct breakpoint *b)
13207 {
13208   /* Nothing to mention.  These breakpoints are internal.  */
13209 }
13210
13211 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13212
13213    It gets cleared already on the removal of the first one of such placed
13214    breakpoints.  This is OK as they get all removed altogether.  */
13215
13216 static void
13217 longjmp_bkpt_dtor (struct breakpoint *self)
13218 {
13219   struct thread_info *tp = find_thread_id (self->thread);
13220
13221   if (tp)
13222     tp->initiating_frame = null_frame_id;
13223
13224   momentary_breakpoint_ops.dtor (self);
13225 }
13226
13227 /* Specific methods for probe breakpoints.  */
13228
13229 static int
13230 bkpt_probe_insert_location (struct bp_location *bl)
13231 {
13232   int v = bkpt_insert_location (bl);
13233
13234   if (v == 0)
13235     {
13236       /* The insertion was successful, now let's set the probe's semaphore
13237          if needed.  */
13238       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13239     }
13240
13241   return v;
13242 }
13243
13244 static int
13245 bkpt_probe_remove_location (struct bp_location *bl)
13246 {
13247   /* Let's clear the semaphore before removing the location.  */
13248   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13249
13250   return bkpt_remove_location (bl);
13251 }
13252
13253 static void
13254 bkpt_probe_create_sals_from_address (char **arg,
13255                                      struct linespec_result *canonical,
13256                                      enum bptype type_wanted,
13257                                      char *addr_start, char **copy_arg)
13258 {
13259   struct linespec_sals lsal;
13260
13261   lsal.sals = parse_probes (arg, canonical);
13262
13263   *copy_arg = xstrdup (canonical->addr_string);
13264   lsal.canonical = xstrdup (*copy_arg);
13265
13266   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13267 }
13268
13269 static void
13270 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13271                             struct symtabs_and_lines *sals)
13272 {
13273   *sals = parse_probes (s, NULL);
13274   if (!sals->sals)
13275     error (_("probe not found"));
13276 }
13277
13278 /* The breakpoint_ops structure to be used in tracepoints.  */
13279
13280 static void
13281 tracepoint_re_set (struct breakpoint *b)
13282 {
13283   breakpoint_re_set_default (b);
13284 }
13285
13286 static int
13287 tracepoint_breakpoint_hit (const struct bp_location *bl,
13288                            struct address_space *aspace, CORE_ADDR bp_addr,
13289                            const struct target_waitstatus *ws)
13290 {
13291   /* By definition, the inferior does not report stops at
13292      tracepoints.  */
13293   return 0;
13294 }
13295
13296 static void
13297 tracepoint_print_one_detail (const struct breakpoint *self,
13298                              struct ui_out *uiout)
13299 {
13300   struct tracepoint *tp = (struct tracepoint *) self;
13301   if (tp->static_trace_marker_id)
13302     {
13303       gdb_assert (self->type == bp_static_tracepoint);
13304
13305       ui_out_text (uiout, "\tmarker id is ");
13306       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13307                            tp->static_trace_marker_id);
13308       ui_out_text (uiout, "\n");
13309     }
13310 }
13311
13312 static void
13313 tracepoint_print_mention (struct breakpoint *b)
13314 {
13315   if (ui_out_is_mi_like_p (current_uiout))
13316     return;
13317
13318   switch (b->type)
13319     {
13320     case bp_tracepoint:
13321       printf_filtered (_("Tracepoint"));
13322       printf_filtered (_(" %d"), b->number);
13323       break;
13324     case bp_fast_tracepoint:
13325       printf_filtered (_("Fast tracepoint"));
13326       printf_filtered (_(" %d"), b->number);
13327       break;
13328     case bp_static_tracepoint:
13329       printf_filtered (_("Static tracepoint"));
13330       printf_filtered (_(" %d"), b->number);
13331       break;
13332     default:
13333       internal_error (__FILE__, __LINE__,
13334                       _("unhandled tracepoint type %d"), (int) b->type);
13335     }
13336
13337   say_where (b);
13338 }
13339
13340 static void
13341 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13342 {
13343   struct tracepoint *tp = (struct tracepoint *) self;
13344
13345   if (self->type == bp_fast_tracepoint)
13346     fprintf_unfiltered (fp, "ftrace");
13347   if (self->type == bp_static_tracepoint)
13348     fprintf_unfiltered (fp, "strace");
13349   else if (self->type == bp_tracepoint)
13350     fprintf_unfiltered (fp, "trace");
13351   else
13352     internal_error (__FILE__, __LINE__,
13353                     _("unhandled tracepoint type %d"), (int) self->type);
13354
13355   fprintf_unfiltered (fp, " %s", self->addr_string);
13356   print_recreate_thread (self, fp);
13357
13358   if (tp->pass_count)
13359     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13360 }
13361
13362 static void
13363 tracepoint_create_sals_from_address (char **arg,
13364                                      struct linespec_result *canonical,
13365                                      enum bptype type_wanted,
13366                                      char *addr_start, char **copy_arg)
13367 {
13368   create_sals_from_address_default (arg, canonical, type_wanted,
13369                                     addr_start, copy_arg);
13370 }
13371
13372 static void
13373 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13374                                    struct linespec_result *canonical,
13375                                    struct linespec_sals *lsal,
13376                                    char *cond_string,
13377                                    char *extra_string,
13378                                    enum bptype type_wanted,
13379                                    enum bpdisp disposition,
13380                                    int thread,
13381                                    int task, int ignore_count,
13382                                    const struct breakpoint_ops *ops,
13383                                    int from_tty, int enabled,
13384                                    int internal, unsigned flags)
13385 {
13386   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13387                                   cond_string, extra_string,
13388                                   type_wanted,
13389                                   disposition, thread, task,
13390                                   ignore_count, ops, from_tty,
13391                                   enabled, internal, flags);
13392 }
13393
13394 static void
13395 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13396                             struct symtabs_and_lines *sals)
13397 {
13398   decode_linespec_default (b, s, sals);
13399 }
13400
13401 struct breakpoint_ops tracepoint_breakpoint_ops;
13402
13403 /* The breakpoint_ops structure to be use on tracepoints placed in a
13404    static probe.  */
13405
13406 static void
13407 tracepoint_probe_create_sals_from_address (char **arg,
13408                                            struct linespec_result *canonical,
13409                                            enum bptype type_wanted,
13410                                            char *addr_start, char **copy_arg)
13411 {
13412   /* We use the same method for breakpoint on probes.  */
13413   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13414                                        addr_start, copy_arg);
13415 }
13416
13417 static void
13418 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13419                                   struct symtabs_and_lines *sals)
13420 {
13421   /* We use the same method for breakpoint on probes.  */
13422   bkpt_probe_decode_linespec (b, s, sals);
13423 }
13424
13425 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13426
13427 /* The breakpoint_ops structure to be used on static tracepoints with
13428    markers (`-m').  */
13429
13430 static void
13431 strace_marker_create_sals_from_address (char **arg,
13432                                         struct linespec_result *canonical,
13433                                         enum bptype type_wanted,
13434                                         char *addr_start, char **copy_arg)
13435 {
13436   struct linespec_sals lsal;
13437
13438   lsal.sals = decode_static_tracepoint_spec (arg);
13439
13440   *copy_arg = savestring (addr_start, *arg - addr_start);
13441
13442   canonical->addr_string = xstrdup (*copy_arg);
13443   lsal.canonical = xstrdup (*copy_arg);
13444   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13445 }
13446
13447 static void
13448 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13449                                       struct linespec_result *canonical,
13450                                       struct linespec_sals *lsal,
13451                                       char *cond_string,
13452                                       char *extra_string,
13453                                       enum bptype type_wanted,
13454                                       enum bpdisp disposition,
13455                                       int thread,
13456                                       int task, int ignore_count,
13457                                       const struct breakpoint_ops *ops,
13458                                       int from_tty, int enabled,
13459                                       int internal, unsigned flags)
13460 {
13461   int i;
13462
13463   /* If the user is creating a static tracepoint by marker id
13464      (strace -m MARKER_ID), then store the sals index, so that
13465      breakpoint_re_set can try to match up which of the newly
13466      found markers corresponds to this one, and, don't try to
13467      expand multiple locations for each sal, given than SALS
13468      already should contain all sals for MARKER_ID.  */
13469
13470   for (i = 0; i < lsal->sals.nelts; ++i)
13471     {
13472       struct symtabs_and_lines expanded;
13473       struct tracepoint *tp;
13474       struct cleanup *old_chain;
13475       char *addr_string;
13476
13477       expanded.nelts = 1;
13478       expanded.sals = &lsal->sals.sals[i];
13479
13480       addr_string = xstrdup (canonical->addr_string);
13481       old_chain = make_cleanup (xfree, addr_string);
13482
13483       tp = XCNEW (struct tracepoint);
13484       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13485                            addr_string, NULL,
13486                            cond_string, extra_string,
13487                            type_wanted, disposition,
13488                            thread, task, ignore_count, ops,
13489                            from_tty, enabled, internal, flags,
13490                            canonical->special_display);
13491       /* Given that its possible to have multiple markers with
13492          the same string id, if the user is creating a static
13493          tracepoint by marker id ("strace -m MARKER_ID"), then
13494          store the sals index, so that breakpoint_re_set can
13495          try to match up which of the newly found markers
13496          corresponds to this one  */
13497       tp->static_trace_marker_id_idx = i;
13498
13499       install_breakpoint (internal, &tp->base, 0);
13500
13501       discard_cleanups (old_chain);
13502     }
13503 }
13504
13505 static void
13506 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13507                                struct symtabs_and_lines *sals)
13508 {
13509   struct tracepoint *tp = (struct tracepoint *) b;
13510
13511   *sals = decode_static_tracepoint_spec (s);
13512   if (sals->nelts > tp->static_trace_marker_id_idx)
13513     {
13514       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13515       sals->nelts = 1;
13516     }
13517   else
13518     error (_("marker %s not found"), tp->static_trace_marker_id);
13519 }
13520
13521 static struct breakpoint_ops strace_marker_breakpoint_ops;
13522
13523 static int
13524 strace_marker_p (struct breakpoint *b)
13525 {
13526   return b->ops == &strace_marker_breakpoint_ops;
13527 }
13528
13529 /* Delete a breakpoint and clean up all traces of it in the data
13530    structures.  */
13531
13532 void
13533 delete_breakpoint (struct breakpoint *bpt)
13534 {
13535   struct breakpoint *b;
13536
13537   gdb_assert (bpt != NULL);
13538
13539   /* Has this bp already been deleted?  This can happen because
13540      multiple lists can hold pointers to bp's.  bpstat lists are
13541      especial culprits.
13542
13543      One example of this happening is a watchpoint's scope bp.  When
13544      the scope bp triggers, we notice that the watchpoint is out of
13545      scope, and delete it.  We also delete its scope bp.  But the
13546      scope bp is marked "auto-deleting", and is already on a bpstat.
13547      That bpstat is then checked for auto-deleting bp's, which are
13548      deleted.
13549
13550      A real solution to this problem might involve reference counts in
13551      bp's, and/or giving them pointers back to their referencing
13552      bpstat's, and teaching delete_breakpoint to only free a bp's
13553      storage when no more references were extent.  A cheaper bandaid
13554      was chosen.  */
13555   if (bpt->type == bp_none)
13556     return;
13557
13558   /* At least avoid this stale reference until the reference counting
13559      of breakpoints gets resolved.  */
13560   if (bpt->related_breakpoint != bpt)
13561     {
13562       struct breakpoint *related;
13563       struct watchpoint *w;
13564
13565       if (bpt->type == bp_watchpoint_scope)
13566         w = (struct watchpoint *) bpt->related_breakpoint;
13567       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13568         w = (struct watchpoint *) bpt;
13569       else
13570         w = NULL;
13571       if (w != NULL)
13572         watchpoint_del_at_next_stop (w);
13573
13574       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13575       for (related = bpt; related->related_breakpoint != bpt;
13576            related = related->related_breakpoint);
13577       related->related_breakpoint = bpt->related_breakpoint;
13578       bpt->related_breakpoint = bpt;
13579     }
13580
13581   /* watch_command_1 creates a watchpoint but only sets its number if
13582      update_watchpoint succeeds in creating its bp_locations.  If there's
13583      a problem in that process, we'll be asked to delete the half-created
13584      watchpoint.  In that case, don't announce the deletion.  */
13585   if (bpt->number)
13586     observer_notify_breakpoint_deleted (bpt);
13587
13588   if (breakpoint_chain == bpt)
13589     breakpoint_chain = bpt->next;
13590
13591   ALL_BREAKPOINTS (b)
13592     if (b->next == bpt)
13593     {
13594       b->next = bpt->next;
13595       break;
13596     }
13597
13598   /* Be sure no bpstat's are pointing at the breakpoint after it's
13599      been freed.  */
13600   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13601      in all threads for now.  Note that we cannot just remove bpstats
13602      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13603      commands are associated with the bpstat; if we remove it here,
13604      then the later call to bpstat_do_actions (&stop_bpstat); in
13605      event-top.c won't do anything, and temporary breakpoints with
13606      commands won't work.  */
13607
13608   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13609
13610   /* Now that breakpoint is removed from breakpoint list, update the
13611      global location list.  This will remove locations that used to
13612      belong to this breakpoint.  Do this before freeing the breakpoint
13613      itself, since remove_breakpoint looks at location's owner.  It
13614      might be better design to have location completely
13615      self-contained, but it's not the case now.  */
13616   update_global_location_list (0);
13617
13618   bpt->ops->dtor (bpt);
13619   /* On the chance that someone will soon try again to delete this
13620      same bp, we mark it as deleted before freeing its storage.  */
13621   bpt->type = bp_none;
13622   xfree (bpt);
13623 }
13624
13625 static void
13626 do_delete_breakpoint_cleanup (void *b)
13627 {
13628   delete_breakpoint (b);
13629 }
13630
13631 struct cleanup *
13632 make_cleanup_delete_breakpoint (struct breakpoint *b)
13633 {
13634   return make_cleanup (do_delete_breakpoint_cleanup, b);
13635 }
13636
13637 /* Iterator function to call a user-provided callback function once
13638    for each of B and its related breakpoints.  */
13639
13640 static void
13641 iterate_over_related_breakpoints (struct breakpoint *b,
13642                                   void (*function) (struct breakpoint *,
13643                                                     void *),
13644                                   void *data)
13645 {
13646   struct breakpoint *related;
13647
13648   related = b;
13649   do
13650     {
13651       struct breakpoint *next;
13652
13653       /* FUNCTION may delete RELATED.  */
13654       next = related->related_breakpoint;
13655
13656       if (next == related)
13657         {
13658           /* RELATED is the last ring entry.  */
13659           function (related, data);
13660
13661           /* FUNCTION may have deleted it, so we'd never reach back to
13662              B.  There's nothing left to do anyway, so just break
13663              out.  */
13664           break;
13665         }
13666       else
13667         function (related, data);
13668
13669       related = next;
13670     }
13671   while (related != b);
13672 }
13673
13674 static void
13675 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13676 {
13677   delete_breakpoint (b);
13678 }
13679
13680 /* A callback for map_breakpoint_numbers that calls
13681    delete_breakpoint.  */
13682
13683 static void
13684 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13685 {
13686   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13687 }
13688
13689 void
13690 delete_command (char *arg, int from_tty)
13691 {
13692   struct breakpoint *b, *b_tmp;
13693
13694   dont_repeat ();
13695
13696   if (arg == 0)
13697     {
13698       int breaks_to_delete = 0;
13699
13700       /* Delete all breakpoints if no argument.  Do not delete
13701          internal breakpoints, these have to be deleted with an
13702          explicit breakpoint number argument.  */
13703       ALL_BREAKPOINTS (b)
13704         if (user_breakpoint_p (b))
13705           {
13706             breaks_to_delete = 1;
13707             break;
13708           }
13709
13710       /* Ask user only if there are some breakpoints to delete.  */
13711       if (!from_tty
13712           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13713         {
13714           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13715             if (user_breakpoint_p (b))
13716               delete_breakpoint (b);
13717         }
13718     }
13719   else
13720     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13721 }
13722
13723 static int
13724 all_locations_are_pending (struct bp_location *loc)
13725 {
13726   for (; loc; loc = loc->next)
13727     if (!loc->shlib_disabled
13728         && !loc->pspace->executing_startup)
13729       return 0;
13730   return 1;
13731 }
13732
13733 /* Subroutine of update_breakpoint_locations to simplify it.
13734    Return non-zero if multiple fns in list LOC have the same name.
13735    Null names are ignored.  */
13736
13737 static int
13738 ambiguous_names_p (struct bp_location *loc)
13739 {
13740   struct bp_location *l;
13741   htab_t htab = htab_create_alloc (13, htab_hash_string,
13742                                    (int (*) (const void *, 
13743                                              const void *)) streq,
13744                                    NULL, xcalloc, xfree);
13745
13746   for (l = loc; l != NULL; l = l->next)
13747     {
13748       const char **slot;
13749       const char *name = l->function_name;
13750
13751       /* Allow for some names to be NULL, ignore them.  */
13752       if (name == NULL)
13753         continue;
13754
13755       slot = (const char **) htab_find_slot (htab, (const void *) name,
13756                                              INSERT);
13757       /* NOTE: We can assume slot != NULL here because xcalloc never
13758          returns NULL.  */
13759       if (*slot != NULL)
13760         {
13761           htab_delete (htab);
13762           return 1;
13763         }
13764       *slot = name;
13765     }
13766
13767   htab_delete (htab);
13768   return 0;
13769 }
13770
13771 /* When symbols change, it probably means the sources changed as well,
13772    and it might mean the static tracepoint markers are no longer at
13773    the same address or line numbers they used to be at last we
13774    checked.  Losing your static tracepoints whenever you rebuild is
13775    undesirable.  This function tries to resync/rematch gdb static
13776    tracepoints with the markers on the target, for static tracepoints
13777    that have not been set by marker id.  Static tracepoint that have
13778    been set by marker id are reset by marker id in breakpoint_re_set.
13779    The heuristic is:
13780
13781    1) For a tracepoint set at a specific address, look for a marker at
13782    the old PC.  If one is found there, assume to be the same marker.
13783    If the name / string id of the marker found is different from the
13784    previous known name, assume that means the user renamed the marker
13785    in the sources, and output a warning.
13786
13787    2) For a tracepoint set at a given line number, look for a marker
13788    at the new address of the old line number.  If one is found there,
13789    assume to be the same marker.  If the name / string id of the
13790    marker found is different from the previous known name, assume that
13791    means the user renamed the marker in the sources, and output a
13792    warning.
13793
13794    3) If a marker is no longer found at the same address or line, it
13795    may mean the marker no longer exists.  But it may also just mean
13796    the code changed a bit.  Maybe the user added a few lines of code
13797    that made the marker move up or down (in line number terms).  Ask
13798    the target for info about the marker with the string id as we knew
13799    it.  If found, update line number and address in the matching
13800    static tracepoint.  This will get confused if there's more than one
13801    marker with the same ID (possible in UST, although unadvised
13802    precisely because it confuses tools).  */
13803
13804 static struct symtab_and_line
13805 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13806 {
13807   struct tracepoint *tp = (struct tracepoint *) b;
13808   struct static_tracepoint_marker marker;
13809   CORE_ADDR pc;
13810
13811   pc = sal.pc;
13812   if (sal.line)
13813     find_line_pc (sal.symtab, sal.line, &pc);
13814
13815   if (target_static_tracepoint_marker_at (pc, &marker))
13816     {
13817       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13818         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13819                  b->number,
13820                  tp->static_trace_marker_id, marker.str_id);
13821
13822       xfree (tp->static_trace_marker_id);
13823       tp->static_trace_marker_id = xstrdup (marker.str_id);
13824       release_static_tracepoint_marker (&marker);
13825
13826       return sal;
13827     }
13828
13829   /* Old marker wasn't found on target at lineno.  Try looking it up
13830      by string ID.  */
13831   if (!sal.explicit_pc
13832       && sal.line != 0
13833       && sal.symtab != NULL
13834       && tp->static_trace_marker_id != NULL)
13835     {
13836       VEC(static_tracepoint_marker_p) *markers;
13837
13838       markers
13839         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13840
13841       if (!VEC_empty(static_tracepoint_marker_p, markers))
13842         {
13843           struct symtab_and_line sal2;
13844           struct symbol *sym;
13845           struct static_tracepoint_marker *tpmarker;
13846           struct ui_out *uiout = current_uiout;
13847
13848           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13849
13850           xfree (tp->static_trace_marker_id);
13851           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13852
13853           warning (_("marker for static tracepoint %d (%s) not "
13854                      "found at previous line number"),
13855                    b->number, tp->static_trace_marker_id);
13856
13857           init_sal (&sal2);
13858
13859           sal2.pc = tpmarker->address;
13860
13861           sal2 = find_pc_line (tpmarker->address, 0);
13862           sym = find_pc_sect_function (tpmarker->address, NULL);
13863           ui_out_text (uiout, "Now in ");
13864           if (sym)
13865             {
13866               ui_out_field_string (uiout, "func",
13867                                    SYMBOL_PRINT_NAME (sym));
13868               ui_out_text (uiout, " at ");
13869             }
13870           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13871           ui_out_text (uiout, ":");
13872
13873           if (ui_out_is_mi_like_p (uiout))
13874             {
13875               const char *fullname = symtab_to_fullname (sal2.symtab);
13876
13877               if (fullname)
13878                 ui_out_field_string (uiout, "fullname", fullname);
13879             }
13880
13881           ui_out_field_int (uiout, "line", sal2.line);
13882           ui_out_text (uiout, "\n");
13883
13884           b->loc->line_number = sal2.line;
13885
13886           xfree (b->loc->source_file);
13887           if (sym)
13888             b->loc->source_file = xstrdup (sal2.symtab->filename);
13889           else
13890             b->loc->source_file = NULL;
13891
13892           xfree (b->addr_string);
13893           b->addr_string = xstrprintf ("%s:%d",
13894                                        sal2.symtab->filename,
13895                                        b->loc->line_number);
13896
13897           /* Might be nice to check if function changed, and warn if
13898              so.  */
13899
13900           release_static_tracepoint_marker (tpmarker);
13901         }
13902     }
13903   return sal;
13904 }
13905
13906 /* Returns 1 iff locations A and B are sufficiently same that
13907    we don't need to report breakpoint as changed.  */
13908
13909 static int
13910 locations_are_equal (struct bp_location *a, struct bp_location *b)
13911 {
13912   while (a && b)
13913     {
13914       if (a->address != b->address)
13915         return 0;
13916
13917       if (a->shlib_disabled != b->shlib_disabled)
13918         return 0;
13919
13920       if (a->enabled != b->enabled)
13921         return 0;
13922
13923       a = a->next;
13924       b = b->next;
13925     }
13926
13927   if ((a == NULL) != (b == NULL))
13928     return 0;
13929
13930   return 1;
13931 }
13932
13933 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13934    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13935    a ranged breakpoint.  */
13936
13937 void
13938 update_breakpoint_locations (struct breakpoint *b,
13939                              struct symtabs_and_lines sals,
13940                              struct symtabs_and_lines sals_end)
13941 {
13942   int i;
13943   struct bp_location *existing_locations = b->loc;
13944
13945   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13946     {
13947       /* Ranged breakpoints have only one start location and one end
13948          location.  */
13949       b->enable_state = bp_disabled;
13950       update_global_location_list (1);
13951       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13952                            "multiple locations found\n"),
13953                          b->number);
13954       return;
13955     }
13956
13957   /* If there's no new locations, and all existing locations are
13958      pending, don't do anything.  This optimizes the common case where
13959      all locations are in the same shared library, that was unloaded.
13960      We'd like to retain the location, so that when the library is
13961      loaded again, we don't loose the enabled/disabled status of the
13962      individual locations.  */
13963   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13964     return;
13965
13966   b->loc = NULL;
13967
13968   for (i = 0; i < sals.nelts; ++i)
13969     {
13970       struct bp_location *new_loc;
13971
13972       switch_to_program_space_and_thread (sals.sals[i].pspace);
13973
13974       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13975
13976       /* Reparse conditions, they might contain references to the
13977          old symtab.  */
13978       if (b->cond_string != NULL)
13979         {
13980           char *s;
13981           volatile struct gdb_exception e;
13982
13983           s = b->cond_string;
13984           TRY_CATCH (e, RETURN_MASK_ERROR)
13985             {
13986               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13987                                            block_for_pc (sals.sals[i].pc), 
13988                                            0);
13989             }
13990           if (e.reason < 0)
13991             {
13992               warning (_("failed to reevaluate condition "
13993                          "for breakpoint %d: %s"), 
13994                        b->number, e.message);
13995               new_loc->enabled = 0;
13996             }
13997         }
13998
13999       if (sals_end.nelts)
14000         {
14001           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14002
14003           new_loc->length = end - sals.sals[0].pc + 1;
14004         }
14005     }
14006
14007   /* Update locations of permanent breakpoints.  */
14008   if (b->enable_state == bp_permanent)
14009     make_breakpoint_permanent (b);
14010
14011   /* If possible, carry over 'disable' status from existing
14012      breakpoints.  */
14013   {
14014     struct bp_location *e = existing_locations;
14015     /* If there are multiple breakpoints with the same function name,
14016        e.g. for inline functions, comparing function names won't work.
14017        Instead compare pc addresses; this is just a heuristic as things
14018        may have moved, but in practice it gives the correct answer
14019        often enough until a better solution is found.  */
14020     int have_ambiguous_names = ambiguous_names_p (b->loc);
14021
14022     for (; e; e = e->next)
14023       {
14024         if (!e->enabled && e->function_name)
14025           {
14026             struct bp_location *l = b->loc;
14027             if (have_ambiguous_names)
14028               {
14029                 for (; l; l = l->next)
14030                   if (breakpoint_locations_match (e, l))
14031                     {
14032                       l->enabled = 0;
14033                       break;
14034                     }
14035               }
14036             else
14037               {
14038                 for (; l; l = l->next)
14039                   if (l->function_name
14040                       && strcmp (e->function_name, l->function_name) == 0)
14041                     {
14042                       l->enabled = 0;
14043                       break;
14044                     }
14045               }
14046           }
14047       }
14048   }
14049
14050   if (!locations_are_equal (existing_locations, b->loc))
14051     observer_notify_breakpoint_modified (b);
14052
14053   update_global_location_list (1);
14054 }
14055
14056 /* Find the SaL locations corresponding to the given ADDR_STRING.
14057    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14058
14059 static struct symtabs_and_lines
14060 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14061 {
14062   char *s;
14063   struct symtabs_and_lines sals = {0};
14064   volatile struct gdb_exception e;
14065
14066   gdb_assert (b->ops != NULL);
14067   s = addr_string;
14068
14069   TRY_CATCH (e, RETURN_MASK_ERROR)
14070     {
14071       b->ops->decode_linespec (b, &s, &sals);
14072     }
14073   if (e.reason < 0)
14074     {
14075       int not_found_and_ok = 0;
14076       /* For pending breakpoints, it's expected that parsing will
14077          fail until the right shared library is loaded.  User has
14078          already told to create pending breakpoints and don't need
14079          extra messages.  If breakpoint is in bp_shlib_disabled
14080          state, then user already saw the message about that
14081          breakpoint being disabled, and don't want to see more
14082          errors.  */
14083       if (e.error == NOT_FOUND_ERROR
14084           && (b->condition_not_parsed 
14085               || (b->loc && b->loc->shlib_disabled)
14086               || (b->loc && b->loc->pspace->executing_startup)
14087               || b->enable_state == bp_disabled))
14088         not_found_and_ok = 1;
14089
14090       if (!not_found_and_ok)
14091         {
14092           /* We surely don't want to warn about the same breakpoint
14093              10 times.  One solution, implemented here, is disable
14094              the breakpoint on error.  Another solution would be to
14095              have separate 'warning emitted' flag.  Since this
14096              happens only when a binary has changed, I don't know
14097              which approach is better.  */
14098           b->enable_state = bp_disabled;
14099           throw_exception (e);
14100         }
14101     }
14102
14103   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14104     {
14105       int i;
14106
14107       for (i = 0; i < sals.nelts; ++i)
14108         resolve_sal_pc (&sals.sals[i]);
14109       if (b->condition_not_parsed && s && s[0])
14110         {
14111           char *cond_string, *extra_string;
14112           int thread, task;
14113
14114           find_condition_and_thread (s, sals.sals[0].pc,
14115                                      &cond_string, &thread, &task,
14116                                      &extra_string);
14117           if (cond_string)
14118             b->cond_string = cond_string;
14119           b->thread = thread;
14120           b->task = task;
14121           if (extra_string)
14122             b->extra_string = extra_string;
14123           b->condition_not_parsed = 0;
14124         }
14125
14126       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14127         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14128
14129       *found = 1;
14130     }
14131   else
14132     *found = 0;
14133
14134   return sals;
14135 }
14136
14137 /* The default re_set method, for typical hardware or software
14138    breakpoints.  Reevaluate the breakpoint and recreate its
14139    locations.  */
14140
14141 static void
14142 breakpoint_re_set_default (struct breakpoint *b)
14143 {
14144   int found;
14145   struct symtabs_and_lines sals, sals_end;
14146   struct symtabs_and_lines expanded = {0};
14147   struct symtabs_and_lines expanded_end = {0};
14148
14149   sals = addr_string_to_sals (b, b->addr_string, &found);
14150   if (found)
14151     {
14152       make_cleanup (xfree, sals.sals);
14153       expanded = sals;
14154     }
14155
14156   if (b->addr_string_range_end)
14157     {
14158       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14159       if (found)
14160         {
14161           make_cleanup (xfree, sals_end.sals);
14162           expanded_end = sals_end;
14163         }
14164     }
14165
14166   update_breakpoint_locations (b, expanded, expanded_end);
14167 }
14168
14169 /* Default method for creating SALs from an address string.  It basically
14170    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14171
14172 static void
14173 create_sals_from_address_default (char **arg,
14174                                   struct linespec_result *canonical,
14175                                   enum bptype type_wanted,
14176                                   char *addr_start, char **copy_arg)
14177 {
14178   parse_breakpoint_sals (arg, canonical);
14179 }
14180
14181 /* Call create_breakpoints_sal for the given arguments.  This is the default
14182    function for the `create_breakpoints_sal' method of
14183    breakpoint_ops.  */
14184
14185 static void
14186 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14187                                 struct linespec_result *canonical,
14188                                 struct linespec_sals *lsal,
14189                                 char *cond_string,
14190                                 char *extra_string,
14191                                 enum bptype type_wanted,
14192                                 enum bpdisp disposition,
14193                                 int thread,
14194                                 int task, int ignore_count,
14195                                 const struct breakpoint_ops *ops,
14196                                 int from_tty, int enabled,
14197                                 int internal, unsigned flags)
14198 {
14199   create_breakpoints_sal (gdbarch, canonical, cond_string,
14200                           extra_string,
14201                           type_wanted, disposition,
14202                           thread, task, ignore_count, ops, from_tty,
14203                           enabled, internal, flags);
14204 }
14205
14206 /* Decode the line represented by S by calling decode_line_full.  This is the
14207    default function for the `decode_linespec' method of breakpoint_ops.  */
14208
14209 static void
14210 decode_linespec_default (struct breakpoint *b, char **s,
14211                          struct symtabs_and_lines *sals)
14212 {
14213   struct linespec_result canonical;
14214
14215   init_linespec_result (&canonical);
14216   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14217                     (struct symtab *) NULL, 0,
14218                     &canonical, multiple_symbols_all,
14219                     b->filter);
14220
14221   /* We should get 0 or 1 resulting SALs.  */
14222   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14223
14224   if (VEC_length (linespec_sals, canonical.sals) > 0)
14225     {
14226       struct linespec_sals *lsal;
14227
14228       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14229       *sals = lsal->sals;
14230       /* Arrange it so the destructor does not free the
14231          contents.  */
14232       lsal->sals.sals = NULL;
14233     }
14234
14235   destroy_linespec_result (&canonical);
14236 }
14237
14238 /* Prepare the global context for a re-set of breakpoint B.  */
14239
14240 static struct cleanup *
14241 prepare_re_set_context (struct breakpoint *b)
14242 {
14243   struct cleanup *cleanups;
14244
14245   input_radix = b->input_radix;
14246   cleanups = save_current_space_and_thread ();
14247   if (b->pspace != NULL)
14248     switch_to_program_space_and_thread (b->pspace);
14249   set_language (b->language);
14250
14251   return cleanups;
14252 }
14253
14254 /* Reset a breakpoint given it's struct breakpoint * BINT.
14255    The value we return ends up being the return value from catch_errors.
14256    Unused in this case.  */
14257
14258 static int
14259 breakpoint_re_set_one (void *bint)
14260 {
14261   /* Get past catch_errs.  */
14262   struct breakpoint *b = (struct breakpoint *) bint;
14263   struct cleanup *cleanups;
14264
14265   cleanups = prepare_re_set_context (b);
14266   b->ops->re_set (b);
14267   do_cleanups (cleanups);
14268   return 0;
14269 }
14270
14271 /* Re-set all breakpoints after symbols have been re-loaded.  */
14272 void
14273 breakpoint_re_set (void)
14274 {
14275   struct breakpoint *b, *b_tmp;
14276   enum language save_language;
14277   int save_input_radix;
14278   struct cleanup *old_chain;
14279
14280   save_language = current_language->la_language;
14281   save_input_radix = input_radix;
14282   old_chain = save_current_program_space ();
14283
14284   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14285   {
14286     /* Format possible error msg.  */
14287     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14288                                 b->number);
14289     struct cleanup *cleanups = make_cleanup (xfree, message);
14290     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14291     do_cleanups (cleanups);
14292   }
14293   set_language (save_language);
14294   input_radix = save_input_radix;
14295
14296   jit_breakpoint_re_set ();
14297
14298   do_cleanups (old_chain);
14299
14300   create_overlay_event_breakpoint ();
14301   create_longjmp_master_breakpoint ();
14302   create_std_terminate_master_breakpoint ();
14303   create_exception_master_breakpoint ();
14304
14305   /* While we're at it, reset the skip list too.  */
14306   skip_re_set ();
14307 }
14308 \f
14309 /* Reset the thread number of this breakpoint:
14310
14311    - If the breakpoint is for all threads, leave it as-is.
14312    - Else, reset it to the current thread for inferior_ptid.  */
14313 void
14314 breakpoint_re_set_thread (struct breakpoint *b)
14315 {
14316   if (b->thread != -1)
14317     {
14318       if (in_thread_list (inferior_ptid))
14319         b->thread = pid_to_thread_id (inferior_ptid);
14320
14321       /* We're being called after following a fork.  The new fork is
14322          selected as current, and unless this was a vfork will have a
14323          different program space from the original thread.  Reset that
14324          as well.  */
14325       b->loc->pspace = current_program_space;
14326     }
14327 }
14328
14329 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14330    If from_tty is nonzero, it prints a message to that effect,
14331    which ends with a period (no newline).  */
14332
14333 void
14334 set_ignore_count (int bptnum, int count, int from_tty)
14335 {
14336   struct breakpoint *b;
14337
14338   if (count < 0)
14339     count = 0;
14340
14341   ALL_BREAKPOINTS (b)
14342     if (b->number == bptnum)
14343     {
14344       if (is_tracepoint (b))
14345         {
14346           if (from_tty && count != 0)
14347             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14348                              bptnum);
14349           return;
14350         }
14351       
14352       b->ignore_count = count;
14353       if (from_tty)
14354         {
14355           if (count == 0)
14356             printf_filtered (_("Will stop next time "
14357                                "breakpoint %d is reached."),
14358                              bptnum);
14359           else if (count == 1)
14360             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14361                              bptnum);
14362           else
14363             printf_filtered (_("Will ignore next %d "
14364                                "crossings of breakpoint %d."),
14365                              count, bptnum);
14366         }
14367       annotate_breakpoints_changed ();
14368       observer_notify_breakpoint_modified (b);
14369       return;
14370     }
14371
14372   error (_("No breakpoint number %d."), bptnum);
14373 }
14374
14375 /* Command to set ignore-count of breakpoint N to COUNT.  */
14376
14377 static void
14378 ignore_command (char *args, int from_tty)
14379 {
14380   char *p = args;
14381   int num;
14382
14383   if (p == 0)
14384     error_no_arg (_("a breakpoint number"));
14385
14386   num = get_number (&p);
14387   if (num == 0)
14388     error (_("bad breakpoint number: '%s'"), args);
14389   if (*p == 0)
14390     error (_("Second argument (specified ignore-count) is missing."));
14391
14392   set_ignore_count (num,
14393                     longest_to_int (value_as_long (parse_and_eval (p))),
14394                     from_tty);
14395   if (from_tty)
14396     printf_filtered ("\n");
14397 }
14398 \f
14399 /* Call FUNCTION on each of the breakpoints
14400    whose numbers are given in ARGS.  */
14401
14402 static void
14403 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14404                                                       void *),
14405                         void *data)
14406 {
14407   int num;
14408   struct breakpoint *b, *tmp;
14409   int match;
14410   struct get_number_or_range_state state;
14411
14412   if (args == 0)
14413     error_no_arg (_("one or more breakpoint numbers"));
14414
14415   init_number_or_range (&state, args);
14416
14417   while (!state.finished)
14418     {
14419       char *p = state.string;
14420
14421       match = 0;
14422
14423       num = get_number_or_range (&state);
14424       if (num == 0)
14425         {
14426           warning (_("bad breakpoint number at or near '%s'"), p);
14427         }
14428       else
14429         {
14430           ALL_BREAKPOINTS_SAFE (b, tmp)
14431             if (b->number == num)
14432               {
14433                 match = 1;
14434                 function (b, data);
14435                 break;
14436               }
14437           if (match == 0)
14438             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14439         }
14440     }
14441 }
14442
14443 static struct bp_location *
14444 find_location_by_number (char *number)
14445 {
14446   char *dot = strchr (number, '.');
14447   char *p1;
14448   int bp_num;
14449   int loc_num;
14450   struct breakpoint *b;
14451   struct bp_location *loc;  
14452
14453   *dot = '\0';
14454
14455   p1 = number;
14456   bp_num = get_number (&p1);
14457   if (bp_num == 0)
14458     error (_("Bad breakpoint number '%s'"), number);
14459
14460   ALL_BREAKPOINTS (b)
14461     if (b->number == bp_num)
14462       {
14463         break;
14464       }
14465
14466   if (!b || b->number != bp_num)
14467     error (_("Bad breakpoint number '%s'"), number);
14468   
14469   p1 = dot+1;
14470   loc_num = get_number (&p1);
14471   if (loc_num == 0)
14472     error (_("Bad breakpoint location number '%s'"), number);
14473
14474   --loc_num;
14475   loc = b->loc;
14476   for (;loc_num && loc; --loc_num, loc = loc->next)
14477     ;
14478   if (!loc)
14479     error (_("Bad breakpoint location number '%s'"), dot+1);
14480     
14481   return loc;  
14482 }
14483
14484
14485 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14486    If from_tty is nonzero, it prints a message to that effect,
14487    which ends with a period (no newline).  */
14488
14489 void
14490 disable_breakpoint (struct breakpoint *bpt)
14491 {
14492   /* Never disable a watchpoint scope breakpoint; we want to
14493      hit them when we leave scope so we can delete both the
14494      watchpoint and its scope breakpoint at that time.  */
14495   if (bpt->type == bp_watchpoint_scope)
14496     return;
14497
14498   /* You can't disable permanent breakpoints.  */
14499   if (bpt->enable_state == bp_permanent)
14500     return;
14501
14502   bpt->enable_state = bp_disabled;
14503
14504   /* Mark breakpoint locations modified.  */
14505   mark_breakpoint_modified (bpt);
14506
14507   if (target_supports_enable_disable_tracepoint ()
14508       && current_trace_status ()->running && is_tracepoint (bpt))
14509     {
14510       struct bp_location *location;
14511      
14512       for (location = bpt->loc; location; location = location->next)
14513         target_disable_tracepoint (location);
14514     }
14515
14516   update_global_location_list (0);
14517
14518   observer_notify_breakpoint_modified (bpt);
14519 }
14520
14521 /* A callback for iterate_over_related_breakpoints.  */
14522
14523 static void
14524 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14525 {
14526   disable_breakpoint (b);
14527 }
14528
14529 /* A callback for map_breakpoint_numbers that calls
14530    disable_breakpoint.  */
14531
14532 static void
14533 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14534 {
14535   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14536 }
14537
14538 static void
14539 disable_command (char *args, int from_tty)
14540 {
14541   if (args == 0)
14542     {
14543       struct breakpoint *bpt;
14544
14545       ALL_BREAKPOINTS (bpt)
14546         if (user_breakpoint_p (bpt))
14547           disable_breakpoint (bpt);
14548     }
14549   else if (strchr (args, '.'))
14550     {
14551       struct bp_location *loc = find_location_by_number (args);
14552       if (loc)
14553         {
14554           if (loc->enabled)
14555             {
14556               loc->enabled = 0;
14557               mark_breakpoint_location_modified (loc);
14558             }
14559           if (target_supports_enable_disable_tracepoint ()
14560               && current_trace_status ()->running && loc->owner
14561               && is_tracepoint (loc->owner))
14562             target_disable_tracepoint (loc);
14563         }
14564       update_global_location_list (0);
14565     }
14566   else
14567     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14568 }
14569
14570 static void
14571 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14572                         int count)
14573 {
14574   int target_resources_ok;
14575
14576   if (bpt->type == bp_hardware_breakpoint)
14577     {
14578       int i;
14579       i = hw_breakpoint_used_count ();
14580       target_resources_ok = 
14581         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14582                                             i + 1, 0);
14583       if (target_resources_ok == 0)
14584         error (_("No hardware breakpoint support in the target."));
14585       else if (target_resources_ok < 0)
14586         error (_("Hardware breakpoints used exceeds limit."));
14587     }
14588
14589   if (is_watchpoint (bpt))
14590     {
14591       /* Initialize it just to avoid a GCC false warning.  */
14592       enum enable_state orig_enable_state = 0;
14593       volatile struct gdb_exception e;
14594
14595       TRY_CATCH (e, RETURN_MASK_ALL)
14596         {
14597           struct watchpoint *w = (struct watchpoint *) bpt;
14598
14599           orig_enable_state = bpt->enable_state;
14600           bpt->enable_state = bp_enabled;
14601           update_watchpoint (w, 1 /* reparse */);
14602         }
14603       if (e.reason < 0)
14604         {
14605           bpt->enable_state = orig_enable_state;
14606           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14607                              bpt->number);
14608           return;
14609         }
14610     }
14611
14612   if (bpt->enable_state != bp_permanent)
14613     bpt->enable_state = bp_enabled;
14614
14615   bpt->enable_state = bp_enabled;
14616
14617   /* Mark breakpoint locations modified.  */
14618   mark_breakpoint_modified (bpt);
14619
14620   if (target_supports_enable_disable_tracepoint ()
14621       && current_trace_status ()->running && is_tracepoint (bpt))
14622     {
14623       struct bp_location *location;
14624
14625       for (location = bpt->loc; location; location = location->next)
14626         target_enable_tracepoint (location);
14627     }
14628
14629   bpt->disposition = disposition;
14630   bpt->enable_count = count;
14631   update_global_location_list (1);
14632   annotate_breakpoints_changed ();
14633   
14634   observer_notify_breakpoint_modified (bpt);
14635 }
14636
14637
14638 void
14639 enable_breakpoint (struct breakpoint *bpt)
14640 {
14641   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14642 }
14643
14644 static void
14645 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14646 {
14647   enable_breakpoint (bpt);
14648 }
14649
14650 /* A callback for map_breakpoint_numbers that calls
14651    enable_breakpoint.  */
14652
14653 static void
14654 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14655 {
14656   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14657 }
14658
14659 /* The enable command enables the specified breakpoints (or all defined
14660    breakpoints) so they once again become (or continue to be) effective
14661    in stopping the inferior.  */
14662
14663 static void
14664 enable_command (char *args, int from_tty)
14665 {
14666   if (args == 0)
14667     {
14668       struct breakpoint *bpt;
14669
14670       ALL_BREAKPOINTS (bpt)
14671         if (user_breakpoint_p (bpt))
14672           enable_breakpoint (bpt);
14673     }
14674   else if (strchr (args, '.'))
14675     {
14676       struct bp_location *loc = find_location_by_number (args);
14677       if (loc)
14678         {
14679           if (!loc->enabled)
14680             {
14681               loc->enabled = 1;
14682               mark_breakpoint_location_modified (loc);
14683             }
14684           if (target_supports_enable_disable_tracepoint ()
14685               && current_trace_status ()->running && loc->owner
14686               && is_tracepoint (loc->owner))
14687             target_enable_tracepoint (loc);
14688         }
14689       update_global_location_list (1);
14690     }
14691   else
14692     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14693 }
14694
14695 /* This struct packages up disposition data for application to multiple
14696    breakpoints.  */
14697
14698 struct disp_data
14699 {
14700   enum bpdisp disp;
14701   int count;
14702 };
14703
14704 static void
14705 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14706 {
14707   struct disp_data disp_data = *(struct disp_data *) arg;
14708
14709   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14710 }
14711
14712 static void
14713 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14714 {
14715   struct disp_data disp = { disp_disable, 1 };
14716
14717   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14718 }
14719
14720 static void
14721 enable_once_command (char *args, int from_tty)
14722 {
14723   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14724 }
14725
14726 static void
14727 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14728 {
14729   struct disp_data disp = { disp_disable, *(int *) countptr };
14730
14731   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14732 }
14733
14734 static void
14735 enable_count_command (char *args, int from_tty)
14736 {
14737   int count = get_number (&args);
14738
14739   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14740 }
14741
14742 static void
14743 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14744 {
14745   struct disp_data disp = { disp_del, 1 };
14746
14747   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14748 }
14749
14750 static void
14751 enable_delete_command (char *args, int from_tty)
14752 {
14753   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14754 }
14755 \f
14756 static void
14757 set_breakpoint_cmd (char *args, int from_tty)
14758 {
14759 }
14760
14761 static void
14762 show_breakpoint_cmd (char *args, int from_tty)
14763 {
14764 }
14765
14766 /* Invalidate last known value of any hardware watchpoint if
14767    the memory which that value represents has been written to by
14768    GDB itself.  */
14769
14770 static void
14771 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14772                                       CORE_ADDR addr, ssize_t len,
14773                                       const bfd_byte *data)
14774 {
14775   struct breakpoint *bp;
14776
14777   ALL_BREAKPOINTS (bp)
14778     if (bp->enable_state == bp_enabled
14779         && bp->type == bp_hardware_watchpoint)
14780       {
14781         struct watchpoint *wp = (struct watchpoint *) bp;
14782
14783         if (wp->val_valid && wp->val)
14784           {
14785             struct bp_location *loc;
14786
14787             for (loc = bp->loc; loc != NULL; loc = loc->next)
14788               if (loc->loc_type == bp_loc_hardware_watchpoint
14789                   && loc->address + loc->length > addr
14790                   && addr + len > loc->address)
14791                 {
14792                   value_free (wp->val);
14793                   wp->val = NULL;
14794                   wp->val_valid = 0;
14795                 }
14796           }
14797       }
14798 }
14799
14800 /* Create and insert a raw software breakpoint at PC.  Return an
14801    identifier, which should be used to remove the breakpoint later.
14802    In general, places which call this should be using something on the
14803    breakpoint chain instead; this function should be eliminated
14804    someday.  */
14805
14806 void *
14807 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14808                                   struct address_space *aspace, CORE_ADDR pc)
14809 {
14810   struct bp_target_info *bp_tgt;
14811
14812   bp_tgt = XZALLOC (struct bp_target_info);
14813
14814   bp_tgt->placed_address_space = aspace;
14815   bp_tgt->placed_address = pc;
14816
14817   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14818     {
14819       /* Could not insert the breakpoint.  */
14820       xfree (bp_tgt);
14821       return NULL;
14822     }
14823
14824   return bp_tgt;
14825 }
14826
14827 /* Remove a breakpoint BP inserted by
14828    deprecated_insert_raw_breakpoint.  */
14829
14830 int
14831 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14832 {
14833   struct bp_target_info *bp_tgt = bp;
14834   int ret;
14835
14836   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14837   xfree (bp_tgt);
14838
14839   return ret;
14840 }
14841
14842 /* One (or perhaps two) breakpoints used for software single
14843    stepping.  */
14844
14845 static void *single_step_breakpoints[2];
14846 static struct gdbarch *single_step_gdbarch[2];
14847
14848 /* Create and insert a breakpoint for software single step.  */
14849
14850 void
14851 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14852                                struct address_space *aspace, 
14853                                CORE_ADDR next_pc)
14854 {
14855   void **bpt_p;
14856
14857   if (single_step_breakpoints[0] == NULL)
14858     {
14859       bpt_p = &single_step_breakpoints[0];
14860       single_step_gdbarch[0] = gdbarch;
14861     }
14862   else
14863     {
14864       gdb_assert (single_step_breakpoints[1] == NULL);
14865       bpt_p = &single_step_breakpoints[1];
14866       single_step_gdbarch[1] = gdbarch;
14867     }
14868
14869   /* NOTE drow/2006-04-11: A future improvement to this function would
14870      be to only create the breakpoints once, and actually put them on
14871      the breakpoint chain.  That would let us use set_raw_breakpoint.
14872      We could adjust the addresses each time they were needed.  Doing
14873      this requires corresponding changes elsewhere where single step
14874      breakpoints are handled, however.  So, for now, we use this.  */
14875
14876   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14877   if (*bpt_p == NULL)
14878     error (_("Could not insert single-step breakpoint at %s"),
14879              paddress (gdbarch, next_pc));
14880 }
14881
14882 /* Check if the breakpoints used for software single stepping
14883    were inserted or not.  */
14884
14885 int
14886 single_step_breakpoints_inserted (void)
14887 {
14888   return (single_step_breakpoints[0] != NULL
14889           || single_step_breakpoints[1] != NULL);
14890 }
14891
14892 /* Remove and delete any breakpoints used for software single step.  */
14893
14894 void
14895 remove_single_step_breakpoints (void)
14896 {
14897   gdb_assert (single_step_breakpoints[0] != NULL);
14898
14899   /* See insert_single_step_breakpoint for more about this deprecated
14900      call.  */
14901   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14902                                     single_step_breakpoints[0]);
14903   single_step_gdbarch[0] = NULL;
14904   single_step_breakpoints[0] = NULL;
14905
14906   if (single_step_breakpoints[1] != NULL)
14907     {
14908       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14909                                         single_step_breakpoints[1]);
14910       single_step_gdbarch[1] = NULL;
14911       single_step_breakpoints[1] = NULL;
14912     }
14913 }
14914
14915 /* Delete software single step breakpoints without removing them from
14916    the inferior.  This is intended to be used if the inferior's address
14917    space where they were inserted is already gone, e.g. after exit or
14918    exec.  */
14919
14920 void
14921 cancel_single_step_breakpoints (void)
14922 {
14923   int i;
14924
14925   for (i = 0; i < 2; i++)
14926     if (single_step_breakpoints[i])
14927       {
14928         xfree (single_step_breakpoints[i]);
14929         single_step_breakpoints[i] = NULL;
14930         single_step_gdbarch[i] = NULL;
14931       }
14932 }
14933
14934 /* Detach software single-step breakpoints from INFERIOR_PTID without
14935    removing them.  */
14936
14937 static void
14938 detach_single_step_breakpoints (void)
14939 {
14940   int i;
14941
14942   for (i = 0; i < 2; i++)
14943     if (single_step_breakpoints[i])
14944       target_remove_breakpoint (single_step_gdbarch[i],
14945                                 single_step_breakpoints[i]);
14946 }
14947
14948 /* Check whether a software single-step breakpoint is inserted at
14949    PC.  */
14950
14951 static int
14952 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14953                                         CORE_ADDR pc)
14954 {
14955   int i;
14956
14957   for (i = 0; i < 2; i++)
14958     {
14959       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14960       if (bp_tgt
14961           && breakpoint_address_match (bp_tgt->placed_address_space,
14962                                        bp_tgt->placed_address,
14963                                        aspace, pc))
14964         return 1;
14965     }
14966
14967   return 0;
14968 }
14969
14970 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14971    non-zero otherwise.  */
14972 static int
14973 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14974 {
14975   if (syscall_catchpoint_p (bp)
14976       && bp->enable_state != bp_disabled
14977       && bp->enable_state != bp_call_disabled)
14978     return 1;
14979   else
14980     return 0;
14981 }
14982
14983 int
14984 catch_syscall_enabled (void)
14985 {
14986   struct catch_syscall_inferior_data *inf_data
14987     = get_catch_syscall_inferior_data (current_inferior ());
14988
14989   return inf_data->total_syscalls_count != 0;
14990 }
14991
14992 int
14993 catching_syscall_number (int syscall_number)
14994 {
14995   struct breakpoint *bp;
14996
14997   ALL_BREAKPOINTS (bp)
14998     if (is_syscall_catchpoint_enabled (bp))
14999       {
15000         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15001
15002         if (c->syscalls_to_be_caught)
15003           {
15004             int i, iter;
15005             for (i = 0;
15006                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15007                  i++)
15008               if (syscall_number == iter)
15009                 return 1;
15010           }
15011         else
15012           return 1;
15013       }
15014
15015   return 0;
15016 }
15017
15018 /* Complete syscall names.  Used by "catch syscall".  */
15019 static VEC (char_ptr) *
15020 catch_syscall_completer (struct cmd_list_element *cmd,
15021                          char *text, char *word)
15022 {
15023   const char **list = get_syscall_names ();
15024   VEC (char_ptr) *retlist
15025     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15026
15027   xfree (list);
15028   return retlist;
15029 }
15030
15031 /* Tracepoint-specific operations.  */
15032
15033 /* Set tracepoint count to NUM.  */
15034 static void
15035 set_tracepoint_count (int num)
15036 {
15037   tracepoint_count = num;
15038   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15039 }
15040
15041 static void
15042 trace_command (char *arg, int from_tty)
15043 {
15044   struct breakpoint_ops *ops;
15045   const char *arg_cp = arg;
15046
15047   if (arg && probe_linespec_to_ops (&arg_cp))
15048     ops = &tracepoint_probe_breakpoint_ops;
15049   else
15050     ops = &tracepoint_breakpoint_ops;
15051
15052   create_breakpoint (get_current_arch (),
15053                      arg,
15054                      NULL, 0, NULL, 1 /* parse arg */,
15055                      0 /* tempflag */,
15056                      bp_tracepoint /* type_wanted */,
15057                      0 /* Ignore count */,
15058                      pending_break_support,
15059                      ops,
15060                      from_tty,
15061                      1 /* enabled */,
15062                      0 /* internal */, 0);
15063 }
15064
15065 static void
15066 ftrace_command (char *arg, int from_tty)
15067 {
15068   create_breakpoint (get_current_arch (),
15069                      arg,
15070                      NULL, 0, NULL, 1 /* parse arg */,
15071                      0 /* tempflag */,
15072                      bp_fast_tracepoint /* type_wanted */,
15073                      0 /* Ignore count */,
15074                      pending_break_support,
15075                      &tracepoint_breakpoint_ops,
15076                      from_tty,
15077                      1 /* enabled */,
15078                      0 /* internal */, 0);
15079 }
15080
15081 /* strace command implementation.  Creates a static tracepoint.  */
15082
15083 static void
15084 strace_command (char *arg, int from_tty)
15085 {
15086   struct breakpoint_ops *ops;
15087
15088   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15089      or with a normal static tracepoint.  */
15090   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15091     ops = &strace_marker_breakpoint_ops;
15092   else
15093     ops = &tracepoint_breakpoint_ops;
15094
15095   create_breakpoint (get_current_arch (),
15096                      arg,
15097                      NULL, 0, NULL, 1 /* parse arg */,
15098                      0 /* tempflag */,
15099                      bp_static_tracepoint /* type_wanted */,
15100                      0 /* Ignore count */,
15101                      pending_break_support,
15102                      ops,
15103                      from_tty,
15104                      1 /* enabled */,
15105                      0 /* internal */, 0);
15106 }
15107
15108 /* Set up a fake reader function that gets command lines from a linked
15109    list that was acquired during tracepoint uploading.  */
15110
15111 static struct uploaded_tp *this_utp;
15112 static int next_cmd;
15113
15114 static char *
15115 read_uploaded_action (void)
15116 {
15117   char *rslt;
15118
15119   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15120
15121   next_cmd++;
15122
15123   return rslt;
15124 }
15125
15126 /* Given information about a tracepoint as recorded on a target (which
15127    can be either a live system or a trace file), attempt to create an
15128    equivalent GDB tracepoint.  This is not a reliable process, since
15129    the target does not necessarily have all the information used when
15130    the tracepoint was originally defined.  */
15131   
15132 struct tracepoint *
15133 create_tracepoint_from_upload (struct uploaded_tp *utp)
15134 {
15135   char *addr_str, small_buf[100];
15136   struct tracepoint *tp;
15137
15138   if (utp->at_string)
15139     addr_str = utp->at_string;
15140   else
15141     {
15142       /* In the absence of a source location, fall back to raw
15143          address.  Since there is no way to confirm that the address
15144          means the same thing as when the trace was started, warn the
15145          user.  */
15146       warning (_("Uploaded tracepoint %d has no "
15147                  "source location, using raw address"),
15148                utp->number);
15149       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15150       addr_str = small_buf;
15151     }
15152
15153   /* There's not much we can do with a sequence of bytecodes.  */
15154   if (utp->cond && !utp->cond_string)
15155     warning (_("Uploaded tracepoint %d condition "
15156                "has no source form, ignoring it"),
15157              utp->number);
15158
15159   if (!create_breakpoint (get_current_arch (),
15160                           addr_str,
15161                           utp->cond_string, -1, NULL,
15162                           0 /* parse cond/thread */,
15163                           0 /* tempflag */,
15164                           utp->type /* type_wanted */,
15165                           0 /* Ignore count */,
15166                           pending_break_support,
15167                           &tracepoint_breakpoint_ops,
15168                           0 /* from_tty */,
15169                           utp->enabled /* enabled */,
15170                           0 /* internal */,
15171                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15172     return NULL;
15173
15174   /* Get the tracepoint we just created.  */
15175   tp = get_tracepoint (tracepoint_count);
15176   gdb_assert (tp != NULL);
15177
15178   if (utp->pass > 0)
15179     {
15180       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15181                  tp->base.number);
15182
15183       trace_pass_command (small_buf, 0);
15184     }
15185
15186   /* If we have uploaded versions of the original commands, set up a
15187      special-purpose "reader" function and call the usual command line
15188      reader, then pass the result to the breakpoint command-setting
15189      function.  */
15190   if (!VEC_empty (char_ptr, utp->cmd_strings))
15191     {
15192       struct command_line *cmd_list;
15193
15194       this_utp = utp;
15195       next_cmd = 0;
15196
15197       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15198
15199       breakpoint_set_commands (&tp->base, cmd_list);
15200     }
15201   else if (!VEC_empty (char_ptr, utp->actions)
15202            || !VEC_empty (char_ptr, utp->step_actions))
15203     warning (_("Uploaded tracepoint %d actions "
15204                "have no source form, ignoring them"),
15205              utp->number);
15206
15207   /* Copy any status information that might be available.  */
15208   tp->base.hit_count = utp->hit_count;
15209   tp->traceframe_usage = utp->traceframe_usage;
15210
15211   return tp;
15212 }
15213   
15214 /* Print information on tracepoint number TPNUM_EXP, or all if
15215    omitted.  */
15216
15217 static void
15218 tracepoints_info (char *args, int from_tty)
15219 {
15220   struct ui_out *uiout = current_uiout;
15221   int num_printed;
15222
15223   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15224
15225   if (num_printed == 0)
15226     {
15227       if (args == NULL || *args == '\0')
15228         ui_out_message (uiout, 0, "No tracepoints.\n");
15229       else
15230         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15231     }
15232
15233   default_collect_info ();
15234 }
15235
15236 /* The 'enable trace' command enables tracepoints.
15237    Not supported by all targets.  */
15238 static void
15239 enable_trace_command (char *args, int from_tty)
15240 {
15241   enable_command (args, from_tty);
15242 }
15243
15244 /* The 'disable trace' command disables tracepoints.
15245    Not supported by all targets.  */
15246 static void
15247 disable_trace_command (char *args, int from_tty)
15248 {
15249   disable_command (args, from_tty);
15250 }
15251
15252 /* Remove a tracepoint (or all if no argument).  */
15253 static void
15254 delete_trace_command (char *arg, int from_tty)
15255 {
15256   struct breakpoint *b, *b_tmp;
15257
15258   dont_repeat ();
15259
15260   if (arg == 0)
15261     {
15262       int breaks_to_delete = 0;
15263
15264       /* Delete all breakpoints if no argument.
15265          Do not delete internal or call-dummy breakpoints, these
15266          have to be deleted with an explicit breakpoint number 
15267          argument.  */
15268       ALL_TRACEPOINTS (b)
15269         if (is_tracepoint (b) && user_breakpoint_p (b))
15270           {
15271             breaks_to_delete = 1;
15272             break;
15273           }
15274
15275       /* Ask user only if there are some breakpoints to delete.  */
15276       if (!from_tty
15277           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15278         {
15279           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15280             if (is_tracepoint (b) && user_breakpoint_p (b))
15281               delete_breakpoint (b);
15282         }
15283     }
15284   else
15285     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15286 }
15287
15288 /* Helper function for trace_pass_command.  */
15289
15290 static void
15291 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15292 {
15293   tp->pass_count = count;
15294   observer_notify_breakpoint_modified (&tp->base);
15295   if (from_tty)
15296     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15297                      tp->base.number, count);
15298 }
15299
15300 /* Set passcount for tracepoint.
15301
15302    First command argument is passcount, second is tracepoint number.
15303    If tracepoint number omitted, apply to most recently defined.
15304    Also accepts special argument "all".  */
15305
15306 static void
15307 trace_pass_command (char *args, int from_tty)
15308 {
15309   struct tracepoint *t1;
15310   unsigned int count;
15311
15312   if (args == 0 || *args == 0)
15313     error (_("passcount command requires an "
15314              "argument (count + optional TP num)"));
15315
15316   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15317
15318   while (*args && isspace ((int) *args))
15319     args++;
15320
15321   if (*args && strncasecmp (args, "all", 3) == 0)
15322     {
15323       struct breakpoint *b;
15324
15325       args += 3;                        /* Skip special argument "all".  */
15326       if (*args)
15327         error (_("Junk at end of arguments."));
15328
15329       ALL_TRACEPOINTS (b)
15330       {
15331         t1 = (struct tracepoint *) b;
15332         trace_pass_set_count (t1, count, from_tty);
15333       }
15334     }
15335   else if (*args == '\0')
15336     {
15337       t1 = get_tracepoint_by_number (&args, NULL, 1);
15338       if (t1)
15339         trace_pass_set_count (t1, count, from_tty);
15340     }
15341   else
15342     {
15343       struct get_number_or_range_state state;
15344
15345       init_number_or_range (&state, args);
15346       while (!state.finished)
15347         {
15348           t1 = get_tracepoint_by_number (&args, &state, 1);
15349           if (t1)
15350             trace_pass_set_count (t1, count, from_tty);
15351         }
15352     }
15353 }
15354
15355 struct tracepoint *
15356 get_tracepoint (int num)
15357 {
15358   struct breakpoint *t;
15359
15360   ALL_TRACEPOINTS (t)
15361     if (t->number == num)
15362       return (struct tracepoint *) t;
15363
15364   return NULL;
15365 }
15366
15367 /* Find the tracepoint with the given target-side number (which may be
15368    different from the tracepoint number after disconnecting and
15369    reconnecting).  */
15370
15371 struct tracepoint *
15372 get_tracepoint_by_number_on_target (int num)
15373 {
15374   struct breakpoint *b;
15375
15376   ALL_TRACEPOINTS (b)
15377     {
15378       struct tracepoint *t = (struct tracepoint *) b;
15379
15380       if (t->number_on_target == num)
15381         return t;
15382     }
15383
15384   return NULL;
15385 }
15386
15387 /* Utility: parse a tracepoint number and look it up in the list.
15388    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15389    If OPTIONAL_P is true, then if the argument is missing, the most
15390    recent tracepoint (tracepoint_count) is returned.  */
15391 struct tracepoint *
15392 get_tracepoint_by_number (char **arg,
15393                           struct get_number_or_range_state *state,
15394                           int optional_p)
15395 {
15396   struct breakpoint *t;
15397   int tpnum;
15398   char *instring = arg == NULL ? NULL : *arg;
15399
15400   if (state)
15401     {
15402       gdb_assert (!state->finished);
15403       tpnum = get_number_or_range (state);
15404     }
15405   else if (arg == NULL || *arg == NULL || ! **arg)
15406     {
15407       if (optional_p)
15408         tpnum = tracepoint_count;
15409       else
15410         error_no_arg (_("tracepoint number"));
15411     }
15412   else
15413     tpnum = get_number (arg);
15414
15415   if (tpnum <= 0)
15416     {
15417       if (instring && *instring)
15418         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15419                          instring);
15420       else
15421         printf_filtered (_("Tracepoint argument missing "
15422                            "and no previous tracepoint\n"));
15423       return NULL;
15424     }
15425
15426   ALL_TRACEPOINTS (t)
15427     if (t->number == tpnum)
15428     {
15429       return (struct tracepoint *) t;
15430     }
15431
15432   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15433   return NULL;
15434 }
15435
15436 void
15437 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15438 {
15439   if (b->thread != -1)
15440     fprintf_unfiltered (fp, " thread %d", b->thread);
15441
15442   if (b->task != 0)
15443     fprintf_unfiltered (fp, " task %d", b->task);
15444
15445   fprintf_unfiltered (fp, "\n");
15446 }
15447
15448 /* Save information on user settable breakpoints (watchpoints, etc) to
15449    a new script file named FILENAME.  If FILTER is non-NULL, call it
15450    on each breakpoint and only include the ones for which it returns
15451    non-zero.  */
15452
15453 static void
15454 save_breakpoints (char *filename, int from_tty,
15455                   int (*filter) (const struct breakpoint *))
15456 {
15457   struct breakpoint *tp;
15458   int any = 0;
15459   char *pathname;
15460   struct cleanup *cleanup;
15461   struct ui_file *fp;
15462   int extra_trace_bits = 0;
15463
15464   if (filename == 0 || *filename == 0)
15465     error (_("Argument required (file name in which to save)"));
15466
15467   /* See if we have anything to save.  */
15468   ALL_BREAKPOINTS (tp)
15469   {
15470     /* Skip internal and momentary breakpoints.  */
15471     if (!user_breakpoint_p (tp))
15472       continue;
15473
15474     /* If we have a filter, only save the breakpoints it accepts.  */
15475     if (filter && !filter (tp))
15476       continue;
15477
15478     any = 1;
15479
15480     if (is_tracepoint (tp))
15481       {
15482         extra_trace_bits = 1;
15483
15484         /* We can stop searching.  */
15485         break;
15486       }
15487   }
15488
15489   if (!any)
15490     {
15491       warning (_("Nothing to save."));
15492       return;
15493     }
15494
15495   pathname = tilde_expand (filename);
15496   cleanup = make_cleanup (xfree, pathname);
15497   fp = gdb_fopen (pathname, "w");
15498   if (!fp)
15499     error (_("Unable to open file '%s' for saving (%s)"),
15500            filename, safe_strerror (errno));
15501   make_cleanup_ui_file_delete (fp);
15502
15503   if (extra_trace_bits)
15504     save_trace_state_variables (fp);
15505
15506   ALL_BREAKPOINTS (tp)
15507   {
15508     /* Skip internal and momentary breakpoints.  */
15509     if (!user_breakpoint_p (tp))
15510       continue;
15511
15512     /* If we have a filter, only save the breakpoints it accepts.  */
15513     if (filter && !filter (tp))
15514       continue;
15515
15516     tp->ops->print_recreate (tp, fp);
15517
15518     /* Note, we can't rely on tp->number for anything, as we can't
15519        assume the recreated breakpoint numbers will match.  Use $bpnum
15520        instead.  */
15521
15522     if (tp->cond_string)
15523       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15524
15525     if (tp->ignore_count)
15526       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15527
15528     if (tp->commands)
15529       {
15530         volatile struct gdb_exception ex;       
15531
15532         fprintf_unfiltered (fp, "  commands\n");
15533         
15534         ui_out_redirect (current_uiout, fp);
15535         TRY_CATCH (ex, RETURN_MASK_ALL)
15536           {
15537             print_command_lines (current_uiout, tp->commands->commands, 2);
15538           }
15539         ui_out_redirect (current_uiout, NULL);
15540
15541         if (ex.reason < 0)
15542           throw_exception (ex);
15543
15544         fprintf_unfiltered (fp, "  end\n");
15545       }
15546
15547     if (tp->enable_state == bp_disabled)
15548       fprintf_unfiltered (fp, "disable\n");
15549
15550     /* If this is a multi-location breakpoint, check if the locations
15551        should be individually disabled.  Watchpoint locations are
15552        special, and not user visible.  */
15553     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15554       {
15555         struct bp_location *loc;
15556         int n = 1;
15557
15558         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15559           if (!loc->enabled)
15560             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15561       }
15562   }
15563
15564   if (extra_trace_bits && *default_collect)
15565     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15566
15567   do_cleanups (cleanup);
15568   if (from_tty)
15569     printf_filtered (_("Saved to file '%s'.\n"), filename);
15570 }
15571
15572 /* The `save breakpoints' command.  */
15573
15574 static void
15575 save_breakpoints_command (char *args, int from_tty)
15576 {
15577   save_breakpoints (args, from_tty, NULL);
15578 }
15579
15580 /* The `save tracepoints' command.  */
15581
15582 static void
15583 save_tracepoints_command (char *args, int from_tty)
15584 {
15585   save_breakpoints (args, from_tty, is_tracepoint);
15586 }
15587
15588 /* Create a vector of all tracepoints.  */
15589
15590 VEC(breakpoint_p) *
15591 all_tracepoints (void)
15592 {
15593   VEC(breakpoint_p) *tp_vec = 0;
15594   struct breakpoint *tp;
15595
15596   ALL_TRACEPOINTS (tp)
15597   {
15598     VEC_safe_push (breakpoint_p, tp_vec, tp);
15599   }
15600
15601   return tp_vec;
15602 }
15603
15604 \f
15605 /* This help string is used for the break, hbreak, tbreak and thbreak
15606    commands.  It is defined as a macro to prevent duplication.
15607    COMMAND should be a string constant containing the name of the
15608    command.  */
15609 #define BREAK_ARGS_HELP(command) \
15610 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15611 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15612 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15613 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15614 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15615 If a line number is specified, break at start of code for that line.\n\
15616 If a function is specified, break at start of code for that function.\n\
15617 If an address is specified, break at that exact address.\n\
15618 With no LOCATION, uses current execution address of the selected\n\
15619 stack frame.  This is useful for breaking on return to a stack frame.\n\
15620 \n\
15621 THREADNUM is the number from \"info threads\".\n\
15622 CONDITION is a boolean expression.\n\
15623 \n\
15624 Multiple breakpoints at one place are permitted, and useful if their\n\
15625 conditions are different.\n\
15626 \n\
15627 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15628
15629 /* List of subcommands for "catch".  */
15630 static struct cmd_list_element *catch_cmdlist;
15631
15632 /* List of subcommands for "tcatch".  */
15633 static struct cmd_list_element *tcatch_cmdlist;
15634
15635 void
15636 add_catch_command (char *name, char *docstring,
15637                    void (*sfunc) (char *args, int from_tty,
15638                                   struct cmd_list_element *command),
15639                    completer_ftype *completer,
15640                    void *user_data_catch,
15641                    void *user_data_tcatch)
15642 {
15643   struct cmd_list_element *command;
15644
15645   command = add_cmd (name, class_breakpoint, NULL, docstring,
15646                      &catch_cmdlist);
15647   set_cmd_sfunc (command, sfunc);
15648   set_cmd_context (command, user_data_catch);
15649   set_cmd_completer (command, completer);
15650
15651   command = add_cmd (name, class_breakpoint, NULL, docstring,
15652                      &tcatch_cmdlist);
15653   set_cmd_sfunc (command, sfunc);
15654   set_cmd_context (command, user_data_tcatch);
15655   set_cmd_completer (command, completer);
15656 }
15657
15658 static void
15659 clear_syscall_counts (struct inferior *inf)
15660 {
15661   struct catch_syscall_inferior_data *inf_data
15662     = get_catch_syscall_inferior_data (inf);
15663
15664   inf_data->total_syscalls_count = 0;
15665   inf_data->any_syscall_count = 0;
15666   VEC_free (int, inf_data->syscalls_counts);
15667 }
15668
15669 static void
15670 save_command (char *arg, int from_tty)
15671 {
15672   printf_unfiltered (_("\"save\" must be followed by "
15673                        "the name of a save subcommand.\n"));
15674   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15675 }
15676
15677 struct breakpoint *
15678 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15679                           void *data)
15680 {
15681   struct breakpoint *b, *b_tmp;
15682
15683   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15684     {
15685       if ((*callback) (b, data))
15686         return b;
15687     }
15688
15689   return NULL;
15690 }
15691
15692 /* Zero if any of the breakpoint's locations could be a location where
15693    functions have been inlined, nonzero otherwise.  */
15694
15695 static int
15696 is_non_inline_function (struct breakpoint *b)
15697 {
15698   /* The shared library event breakpoint is set on the address of a
15699      non-inline function.  */
15700   if (b->type == bp_shlib_event)
15701     return 1;
15702
15703   return 0;
15704 }
15705
15706 /* Nonzero if the specified PC cannot be a location where functions
15707    have been inlined.  */
15708
15709 int
15710 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15711                            const struct target_waitstatus *ws)
15712 {
15713   struct breakpoint *b;
15714   struct bp_location *bl;
15715
15716   ALL_BREAKPOINTS (b)
15717     {
15718       if (!is_non_inline_function (b))
15719         continue;
15720
15721       for (bl = b->loc; bl != NULL; bl = bl->next)
15722         {
15723           if (!bl->shlib_disabled
15724               && bpstat_check_location (bl, aspace, pc, ws))
15725             return 1;
15726         }
15727     }
15728
15729   return 0;
15730 }
15731
15732 void
15733 initialize_breakpoint_ops (void)
15734 {
15735   static int initialized = 0;
15736
15737   struct breakpoint_ops *ops;
15738
15739   if (initialized)
15740     return;
15741   initialized = 1;
15742
15743   /* The breakpoint_ops structure to be inherit by all kinds of
15744      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15745      internal and momentary breakpoints, etc.).  */
15746   ops = &bkpt_base_breakpoint_ops;
15747   *ops = base_breakpoint_ops;
15748   ops->re_set = bkpt_re_set;
15749   ops->insert_location = bkpt_insert_location;
15750   ops->remove_location = bkpt_remove_location;
15751   ops->breakpoint_hit = bkpt_breakpoint_hit;
15752   ops->create_sals_from_address = bkpt_create_sals_from_address;
15753   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15754   ops->decode_linespec = bkpt_decode_linespec;
15755
15756   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15757   ops = &bkpt_breakpoint_ops;
15758   *ops = bkpt_base_breakpoint_ops;
15759   ops->re_set = bkpt_re_set;
15760   ops->resources_needed = bkpt_resources_needed;
15761   ops->print_it = bkpt_print_it;
15762   ops->print_mention = bkpt_print_mention;
15763   ops->print_recreate = bkpt_print_recreate;
15764
15765   /* Ranged breakpoints.  */
15766   ops = &ranged_breakpoint_ops;
15767   *ops = bkpt_breakpoint_ops;
15768   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15769   ops->resources_needed = resources_needed_ranged_breakpoint;
15770   ops->print_it = print_it_ranged_breakpoint;
15771   ops->print_one = print_one_ranged_breakpoint;
15772   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15773   ops->print_mention = print_mention_ranged_breakpoint;
15774   ops->print_recreate = print_recreate_ranged_breakpoint;
15775
15776   /* Internal breakpoints.  */
15777   ops = &internal_breakpoint_ops;
15778   *ops = bkpt_base_breakpoint_ops;
15779   ops->re_set = internal_bkpt_re_set;
15780   ops->check_status = internal_bkpt_check_status;
15781   ops->print_it = internal_bkpt_print_it;
15782   ops->print_mention = internal_bkpt_print_mention;
15783
15784   /* Momentary breakpoints.  */
15785   ops = &momentary_breakpoint_ops;
15786   *ops = bkpt_base_breakpoint_ops;
15787   ops->re_set = momentary_bkpt_re_set;
15788   ops->check_status = momentary_bkpt_check_status;
15789   ops->print_it = momentary_bkpt_print_it;
15790   ops->print_mention = momentary_bkpt_print_mention;
15791
15792   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15793   ops = &longjmp_breakpoint_ops;
15794   *ops = momentary_breakpoint_ops;
15795   ops->dtor = longjmp_bkpt_dtor;
15796
15797   /* Probe breakpoints.  */
15798   ops = &bkpt_probe_breakpoint_ops;
15799   *ops = bkpt_breakpoint_ops;
15800   ops->insert_location = bkpt_probe_insert_location;
15801   ops->remove_location = bkpt_probe_remove_location;
15802   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15803   ops->decode_linespec = bkpt_probe_decode_linespec;
15804
15805   /* GNU v3 exception catchpoints.  */
15806   ops = &gnu_v3_exception_catchpoint_ops;
15807   *ops = bkpt_breakpoint_ops;
15808   ops->print_it = print_it_exception_catchpoint;
15809   ops->print_one = print_one_exception_catchpoint;
15810   ops->print_mention = print_mention_exception_catchpoint;
15811   ops->print_recreate = print_recreate_exception_catchpoint;
15812
15813   /* Watchpoints.  */
15814   ops = &watchpoint_breakpoint_ops;
15815   *ops = base_breakpoint_ops;
15816   ops->dtor = dtor_watchpoint;
15817   ops->re_set = re_set_watchpoint;
15818   ops->insert_location = insert_watchpoint;
15819   ops->remove_location = remove_watchpoint;
15820   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15821   ops->check_status = check_status_watchpoint;
15822   ops->resources_needed = resources_needed_watchpoint;
15823   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15824   ops->print_it = print_it_watchpoint;
15825   ops->print_mention = print_mention_watchpoint;
15826   ops->print_recreate = print_recreate_watchpoint;
15827
15828   /* Masked watchpoints.  */
15829   ops = &masked_watchpoint_breakpoint_ops;
15830   *ops = watchpoint_breakpoint_ops;
15831   ops->insert_location = insert_masked_watchpoint;
15832   ops->remove_location = remove_masked_watchpoint;
15833   ops->resources_needed = resources_needed_masked_watchpoint;
15834   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15835   ops->print_it = print_it_masked_watchpoint;
15836   ops->print_one_detail = print_one_detail_masked_watchpoint;
15837   ops->print_mention = print_mention_masked_watchpoint;
15838   ops->print_recreate = print_recreate_masked_watchpoint;
15839
15840   /* Tracepoints.  */
15841   ops = &tracepoint_breakpoint_ops;
15842   *ops = base_breakpoint_ops;
15843   ops->re_set = tracepoint_re_set;
15844   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15845   ops->print_one_detail = tracepoint_print_one_detail;
15846   ops->print_mention = tracepoint_print_mention;
15847   ops->print_recreate = tracepoint_print_recreate;
15848   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15849   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15850   ops->decode_linespec = tracepoint_decode_linespec;
15851
15852   /* Probe tracepoints.  */
15853   ops = &tracepoint_probe_breakpoint_ops;
15854   *ops = tracepoint_breakpoint_ops;
15855   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15856   ops->decode_linespec = tracepoint_probe_decode_linespec;
15857
15858   /* Static tracepoints with marker (`-m').  */
15859   ops = &strace_marker_breakpoint_ops;
15860   *ops = tracepoint_breakpoint_ops;
15861   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15862   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15863   ops->decode_linespec = strace_marker_decode_linespec;
15864
15865   /* Fork catchpoints.  */
15866   ops = &catch_fork_breakpoint_ops;
15867   *ops = base_breakpoint_ops;
15868   ops->insert_location = insert_catch_fork;
15869   ops->remove_location = remove_catch_fork;
15870   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15871   ops->print_it = print_it_catch_fork;
15872   ops->print_one = print_one_catch_fork;
15873   ops->print_mention = print_mention_catch_fork;
15874   ops->print_recreate = print_recreate_catch_fork;
15875
15876   /* Vfork catchpoints.  */
15877   ops = &catch_vfork_breakpoint_ops;
15878   *ops = base_breakpoint_ops;
15879   ops->insert_location = insert_catch_vfork;
15880   ops->remove_location = remove_catch_vfork;
15881   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15882   ops->print_it = print_it_catch_vfork;
15883   ops->print_one = print_one_catch_vfork;
15884   ops->print_mention = print_mention_catch_vfork;
15885   ops->print_recreate = print_recreate_catch_vfork;
15886
15887   /* Exec catchpoints.  */
15888   ops = &catch_exec_breakpoint_ops;
15889   *ops = base_breakpoint_ops;
15890   ops->dtor = dtor_catch_exec;
15891   ops->insert_location = insert_catch_exec;
15892   ops->remove_location = remove_catch_exec;
15893   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15894   ops->print_it = print_it_catch_exec;
15895   ops->print_one = print_one_catch_exec;
15896   ops->print_mention = print_mention_catch_exec;
15897   ops->print_recreate = print_recreate_catch_exec;
15898
15899   /* Syscall catchpoints.  */
15900   ops = &catch_syscall_breakpoint_ops;
15901   *ops = base_breakpoint_ops;
15902   ops->dtor = dtor_catch_syscall;
15903   ops->insert_location = insert_catch_syscall;
15904   ops->remove_location = remove_catch_syscall;
15905   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15906   ops->print_it = print_it_catch_syscall;
15907   ops->print_one = print_one_catch_syscall;
15908   ops->print_mention = print_mention_catch_syscall;
15909   ops->print_recreate = print_recreate_catch_syscall;
15910
15911   /* Solib-related catchpoints.  */
15912   ops = &catch_solib_breakpoint_ops;
15913   *ops = base_breakpoint_ops;
15914   ops->dtor = dtor_catch_solib;
15915   ops->insert_location = insert_catch_solib;
15916   ops->remove_location = remove_catch_solib;
15917   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15918   ops->check_status = check_status_catch_solib;
15919   ops->print_it = print_it_catch_solib;
15920   ops->print_one = print_one_catch_solib;
15921   ops->print_mention = print_mention_catch_solib;
15922   ops->print_recreate = print_recreate_catch_solib;
15923
15924   ops = &dprintf_breakpoint_ops;
15925   *ops = bkpt_base_breakpoint_ops;
15926   ops->re_set = bkpt_re_set;
15927   ops->resources_needed = bkpt_resources_needed;
15928   ops->print_it = bkpt_print_it;
15929   ops->print_mention = bkpt_print_mention;
15930   ops->print_recreate = bkpt_print_recreate;
15931 }
15932
15933 /* Chain containing all defined "enable breakpoint" subcommands.  */
15934
15935 static struct cmd_list_element *enablebreaklist = NULL;
15936
15937 void
15938 _initialize_breakpoint (void)
15939 {
15940   struct cmd_list_element *c;
15941
15942   initialize_breakpoint_ops ();
15943
15944   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15945   observer_attach_inferior_exit (clear_syscall_counts);
15946   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15947
15948   breakpoint_objfile_key
15949     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15950
15951   catch_syscall_inferior_data
15952     = register_inferior_data_with_cleanup (NULL,
15953                                            catch_syscall_inferior_data_cleanup);
15954
15955   breakpoint_chain = 0;
15956   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15957      before a breakpoint is set.  */
15958   breakpoint_count = 0;
15959
15960   tracepoint_count = 0;
15961
15962   add_com ("ignore", class_breakpoint, ignore_command, _("\
15963 Set ignore-count of breakpoint number N to COUNT.\n\
15964 Usage is `ignore N COUNT'."));
15965   if (xdb_commands)
15966     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15967
15968   add_com ("commands", class_breakpoint, commands_command, _("\
15969 Set commands to be executed when a breakpoint is hit.\n\
15970 Give breakpoint number as argument after \"commands\".\n\
15971 With no argument, the targeted breakpoint is the last one set.\n\
15972 The commands themselves follow starting on the next line.\n\
15973 Type a line containing \"end\" to indicate the end of them.\n\
15974 Give \"silent\" as the first line to make the breakpoint silent;\n\
15975 then no output is printed when it is hit, except what the commands print."));
15976
15977   c = add_com ("condition", class_breakpoint, condition_command, _("\
15978 Specify breakpoint number N to break only if COND is true.\n\
15979 Usage is `condition N COND', where N is an integer and COND is an\n\
15980 expression to be evaluated whenever breakpoint N is reached."));
15981   set_cmd_completer (c, condition_completer);
15982
15983   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15984 Set a temporary breakpoint.\n\
15985 Like \"break\" except the breakpoint is only temporary,\n\
15986 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15987 by using \"enable delete\" on the breakpoint number.\n\
15988 \n"
15989 BREAK_ARGS_HELP ("tbreak")));
15990   set_cmd_completer (c, location_completer);
15991
15992   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15993 Set a hardware assisted breakpoint.\n\
15994 Like \"break\" except the breakpoint requires hardware support,\n\
15995 some target hardware may not have this support.\n\
15996 \n"
15997 BREAK_ARGS_HELP ("hbreak")));
15998   set_cmd_completer (c, location_completer);
15999
16000   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16001 Set a temporary hardware assisted breakpoint.\n\
16002 Like \"hbreak\" except the breakpoint is only temporary,\n\
16003 so it will be deleted when hit.\n\
16004 \n"
16005 BREAK_ARGS_HELP ("thbreak")));
16006   set_cmd_completer (c, location_completer);
16007
16008   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16009 Enable some breakpoints.\n\
16010 Give breakpoint numbers (separated by spaces) as arguments.\n\
16011 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16012 This is used to cancel the effect of the \"disable\" command.\n\
16013 With a subcommand you can enable temporarily."),
16014                   &enablelist, "enable ", 1, &cmdlist);
16015   if (xdb_commands)
16016     add_com ("ab", class_breakpoint, enable_command, _("\
16017 Enable some breakpoints.\n\
16018 Give breakpoint numbers (separated by spaces) as arguments.\n\
16019 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16020 This is used to cancel the effect of the \"disable\" command.\n\
16021 With a subcommand you can enable temporarily."));
16022
16023   add_com_alias ("en", "enable", class_breakpoint, 1);
16024
16025   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16026 Enable some breakpoints.\n\
16027 Give breakpoint numbers (separated by spaces) as arguments.\n\
16028 This is used to cancel the effect of the \"disable\" command.\n\
16029 May be abbreviated to simply \"enable\".\n"),
16030                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16031
16032   add_cmd ("once", no_class, enable_once_command, _("\
16033 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16034 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16035            &enablebreaklist);
16036
16037   add_cmd ("delete", no_class, enable_delete_command, _("\
16038 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16039 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16040            &enablebreaklist);
16041
16042   add_cmd ("count", no_class, enable_count_command, _("\
16043 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16044 If a breakpoint is hit while enabled in this fashion,\n\
16045 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16046            &enablebreaklist);
16047
16048   add_cmd ("delete", no_class, enable_delete_command, _("\
16049 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16050 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16051            &enablelist);
16052
16053   add_cmd ("once", no_class, enable_once_command, _("\
16054 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16055 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16056            &enablelist);
16057
16058   add_cmd ("count", no_class, enable_count_command, _("\
16059 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16060 If a breakpoint is hit while enabled in this fashion,\n\
16061 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16062            &enablelist);
16063
16064   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16065 Disable some breakpoints.\n\
16066 Arguments are breakpoint numbers with spaces in between.\n\
16067 To disable all breakpoints, give no argument.\n\
16068 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16069                   &disablelist, "disable ", 1, &cmdlist);
16070   add_com_alias ("dis", "disable", class_breakpoint, 1);
16071   add_com_alias ("disa", "disable", class_breakpoint, 1);
16072   if (xdb_commands)
16073     add_com ("sb", class_breakpoint, disable_command, _("\
16074 Disable some breakpoints.\n\
16075 Arguments are breakpoint numbers with spaces in between.\n\
16076 To disable all breakpoints, give no argument.\n\
16077 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16078
16079   add_cmd ("breakpoints", class_alias, disable_command, _("\
16080 Disable some breakpoints.\n\
16081 Arguments are breakpoint numbers with spaces in between.\n\
16082 To disable all breakpoints, give no argument.\n\
16083 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16084 This command may be abbreviated \"disable\"."),
16085            &disablelist);
16086
16087   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16088 Delete some breakpoints or auto-display expressions.\n\
16089 Arguments are breakpoint numbers with spaces in between.\n\
16090 To delete all breakpoints, give no argument.\n\
16091 \n\
16092 Also a prefix command for deletion of other GDB objects.\n\
16093 The \"unset\" command is also an alias for \"delete\"."),
16094                   &deletelist, "delete ", 1, &cmdlist);
16095   add_com_alias ("d", "delete", class_breakpoint, 1);
16096   add_com_alias ("del", "delete", class_breakpoint, 1);
16097   if (xdb_commands)
16098     add_com ("db", class_breakpoint, delete_command, _("\
16099 Delete some breakpoints.\n\
16100 Arguments are breakpoint numbers with spaces in between.\n\
16101 To delete all breakpoints, give no argument.\n"));
16102
16103   add_cmd ("breakpoints", class_alias, delete_command, _("\
16104 Delete some breakpoints or auto-display expressions.\n\
16105 Arguments are breakpoint numbers with spaces in between.\n\
16106 To delete all breakpoints, give no argument.\n\
16107 This command may be abbreviated \"delete\"."),
16108            &deletelist);
16109
16110   add_com ("clear", class_breakpoint, clear_command, _("\
16111 Clear breakpoint at specified line or function.\n\
16112 Argument may be line number, function name, or \"*\" and an address.\n\
16113 If line number is specified, all breakpoints in that line are cleared.\n\
16114 If function is specified, breakpoints at beginning of function are cleared.\n\
16115 If an address is specified, breakpoints at that address are cleared.\n\
16116 \n\
16117 With no argument, clears all breakpoints in the line that the selected frame\n\
16118 is executing in.\n\
16119 \n\
16120 See also the \"delete\" command which clears breakpoints by number."));
16121   add_com_alias ("cl", "clear", class_breakpoint, 1);
16122
16123   c = add_com ("break", class_breakpoint, break_command, _("\
16124 Set breakpoint at specified line or function.\n"
16125 BREAK_ARGS_HELP ("break")));
16126   set_cmd_completer (c, location_completer);
16127
16128   add_com_alias ("b", "break", class_run, 1);
16129   add_com_alias ("br", "break", class_run, 1);
16130   add_com_alias ("bre", "break", class_run, 1);
16131   add_com_alias ("brea", "break", class_run, 1);
16132
16133   if (xdb_commands)
16134    add_com_alias ("ba", "break", class_breakpoint, 1);
16135
16136   if (dbx_commands)
16137     {
16138       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16139 Break in function/address or break at a line in the current file."),
16140                              &stoplist, "stop ", 1, &cmdlist);
16141       add_cmd ("in", class_breakpoint, stopin_command,
16142                _("Break in function or address."), &stoplist);
16143       add_cmd ("at", class_breakpoint, stopat_command,
16144                _("Break at a line in the current file."), &stoplist);
16145       add_com ("status", class_info, breakpoints_info, _("\
16146 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16147 The \"Type\" column indicates one of:\n\
16148 \tbreakpoint     - normal breakpoint\n\
16149 \twatchpoint     - watchpoint\n\
16150 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16151 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16152 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16153 address and file/line number respectively.\n\
16154 \n\
16155 Convenience variable \"$_\" and default examine address for \"x\"\n\
16156 are set to the address of the last breakpoint listed unless the command\n\
16157 is prefixed with \"server \".\n\n\
16158 Convenience variable \"$bpnum\" contains the number of the last\n\
16159 breakpoint set."));
16160     }
16161
16162   add_info ("breakpoints", breakpoints_info, _("\
16163 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16164 The \"Type\" column indicates one of:\n\
16165 \tbreakpoint     - normal breakpoint\n\
16166 \twatchpoint     - watchpoint\n\
16167 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16168 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16169 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16170 address and file/line number respectively.\n\
16171 \n\
16172 Convenience variable \"$_\" and default examine address for \"x\"\n\
16173 are set to the address of the last breakpoint listed unless the command\n\
16174 is prefixed with \"server \".\n\n\
16175 Convenience variable \"$bpnum\" contains the number of the last\n\
16176 breakpoint set."));
16177
16178   add_info_alias ("b", "breakpoints", 1);
16179
16180   if (xdb_commands)
16181     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16182 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16183 The \"Type\" column indicates one of:\n\
16184 \tbreakpoint     - normal breakpoint\n\
16185 \twatchpoint     - watchpoint\n\
16186 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16187 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16188 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16189 address and file/line number respectively.\n\
16190 \n\
16191 Convenience variable \"$_\" and default examine address for \"x\"\n\
16192 are set to the address of the last breakpoint listed unless the command\n\
16193 is prefixed with \"server \".\n\n\
16194 Convenience variable \"$bpnum\" contains the number of the last\n\
16195 breakpoint set."));
16196
16197   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16198 Status of all breakpoints, or breakpoint number NUMBER.\n\
16199 The \"Type\" column indicates one of:\n\
16200 \tbreakpoint     - normal breakpoint\n\
16201 \twatchpoint     - watchpoint\n\
16202 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16203 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16204 \tuntil          - internal breakpoint used by the \"until\" command\n\
16205 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16206 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16207 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16208 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16209 address and file/line number respectively.\n\
16210 \n\
16211 Convenience variable \"$_\" and default examine address for \"x\"\n\
16212 are set to the address of the last breakpoint listed unless the command\n\
16213 is prefixed with \"server \".\n\n\
16214 Convenience variable \"$bpnum\" contains the number of the last\n\
16215 breakpoint set."),
16216            &maintenanceinfolist);
16217
16218   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16219 Set catchpoints to catch events."),
16220                   &catch_cmdlist, "catch ",
16221                   0/*allow-unknown*/, &cmdlist);
16222
16223   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16224 Set temporary catchpoints to catch events."),
16225                   &tcatch_cmdlist, "tcatch ",
16226                   0/*allow-unknown*/, &cmdlist);
16227
16228   /* Add catch and tcatch sub-commands.  */
16229   add_catch_command ("catch", _("\
16230 Catch an exception, when caught."),
16231                      catch_catch_command,
16232                      NULL,
16233                      CATCH_PERMANENT,
16234                      CATCH_TEMPORARY);
16235   add_catch_command ("throw", _("\
16236 Catch an exception, when thrown."),
16237                      catch_throw_command,
16238                      NULL,
16239                      CATCH_PERMANENT,
16240                      CATCH_TEMPORARY);
16241   add_catch_command ("fork", _("Catch calls to fork."),
16242                      catch_fork_command_1,
16243                      NULL,
16244                      (void *) (uintptr_t) catch_fork_permanent,
16245                      (void *) (uintptr_t) catch_fork_temporary);
16246   add_catch_command ("vfork", _("Catch calls to vfork."),
16247                      catch_fork_command_1,
16248                      NULL,
16249                      (void *) (uintptr_t) catch_vfork_permanent,
16250                      (void *) (uintptr_t) catch_vfork_temporary);
16251   add_catch_command ("exec", _("Catch calls to exec."),
16252                      catch_exec_command_1,
16253                      NULL,
16254                      CATCH_PERMANENT,
16255                      CATCH_TEMPORARY);
16256   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16257 Usage: catch load [REGEX]\n\
16258 If REGEX is given, only stop for libraries matching the regular expression."),
16259                      catch_load_command_1,
16260                      NULL,
16261                      CATCH_PERMANENT,
16262                      CATCH_TEMPORARY);
16263   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16264 Usage: catch unload [REGEX]\n\
16265 If REGEX is given, only stop for libraries matching the regular expression."),
16266                      catch_unload_command_1,
16267                      NULL,
16268                      CATCH_PERMANENT,
16269                      CATCH_TEMPORARY);
16270   add_catch_command ("syscall", _("\
16271 Catch system calls by their names and/or numbers.\n\
16272 Arguments say which system calls to catch.  If no arguments\n\
16273 are given, every system call will be caught.\n\
16274 Arguments, if given, should be one or more system call names\n\
16275 (if your system supports that), or system call numbers."),
16276                      catch_syscall_command_1,
16277                      catch_syscall_completer,
16278                      CATCH_PERMANENT,
16279                      CATCH_TEMPORARY);
16280
16281   c = add_com ("watch", class_breakpoint, watch_command, _("\
16282 Set a watchpoint for an expression.\n\
16283 Usage: watch [-l|-location] EXPRESSION\n\
16284 A watchpoint stops execution of your program whenever the value of\n\
16285 an expression changes.\n\
16286 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16287 the memory to which it refers."));
16288   set_cmd_completer (c, expression_completer);
16289
16290   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16291 Set a read watchpoint for an expression.\n\
16292 Usage: rwatch [-l|-location] EXPRESSION\n\
16293 A watchpoint stops execution of your program whenever the value of\n\
16294 an expression is read.\n\
16295 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16296 the memory to which it refers."));
16297   set_cmd_completer (c, expression_completer);
16298
16299   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16300 Set a watchpoint for an expression.\n\
16301 Usage: awatch [-l|-location] EXPRESSION\n\
16302 A watchpoint stops execution of your program whenever the value of\n\
16303 an expression is either read or written.\n\
16304 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16305 the memory to which it refers."));
16306   set_cmd_completer (c, expression_completer);
16307
16308   add_info ("watchpoints", watchpoints_info, _("\
16309 Status of specified watchpoints (all watchpoints if no argument)."));
16310
16311   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16312      respond to changes - contrary to the description.  */
16313   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16314                             &can_use_hw_watchpoints, _("\
16315 Set debugger's willingness to use watchpoint hardware."), _("\
16316 Show debugger's willingness to use watchpoint hardware."), _("\
16317 If zero, gdb will not use hardware for new watchpoints, even if\n\
16318 such is available.  (However, any hardware watchpoints that were\n\
16319 created before setting this to nonzero, will continue to use watchpoint\n\
16320 hardware.)"),
16321                             NULL,
16322                             show_can_use_hw_watchpoints,
16323                             &setlist, &showlist);
16324
16325   can_use_hw_watchpoints = 1;
16326
16327   /* Tracepoint manipulation commands.  */
16328
16329   c = add_com ("trace", class_breakpoint, trace_command, _("\
16330 Set a tracepoint at specified line or function.\n\
16331 \n"
16332 BREAK_ARGS_HELP ("trace") "\n\
16333 Do \"help tracepoints\" for info on other tracepoint commands."));
16334   set_cmd_completer (c, location_completer);
16335
16336   add_com_alias ("tp", "trace", class_alias, 0);
16337   add_com_alias ("tr", "trace", class_alias, 1);
16338   add_com_alias ("tra", "trace", class_alias, 1);
16339   add_com_alias ("trac", "trace", class_alias, 1);
16340
16341   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16342 Set a fast tracepoint at specified line or function.\n\
16343 \n"
16344 BREAK_ARGS_HELP ("ftrace") "\n\
16345 Do \"help tracepoints\" for info on other tracepoint commands."));
16346   set_cmd_completer (c, location_completer);
16347
16348   c = add_com ("strace", class_breakpoint, strace_command, _("\
16349 Set a static tracepoint at specified line, function or marker.\n\
16350 \n\
16351 strace [LOCATION] [if CONDITION]\n\
16352 LOCATION may be a line number, function name, \"*\" and an address,\n\
16353 or -m MARKER_ID.\n\
16354 If a line number is specified, probe the marker at start of code\n\
16355 for that line.  If a function is specified, probe the marker at start\n\
16356 of code for that function.  If an address is specified, probe the marker\n\
16357 at that exact address.  If a marker id is specified, probe the marker\n\
16358 with that name.  With no LOCATION, uses current execution address of\n\
16359 the selected stack frame.\n\
16360 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16361 This collects arbitrary user data passed in the probe point call to the\n\
16362 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16363 by printing the $_sdata variable like any other convenience variable.\n\
16364 \n\
16365 CONDITION is a boolean expression.\n\
16366 \n\
16367 Multiple tracepoints at one place are permitted, and useful if their\n\
16368 conditions are different.\n\
16369 \n\
16370 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16371 Do \"help tracepoints\" for info on other tracepoint commands."));
16372   set_cmd_completer (c, location_completer);
16373
16374   add_info ("tracepoints", tracepoints_info, _("\
16375 Status of specified tracepoints (all tracepoints if no argument).\n\
16376 Convenience variable \"$tpnum\" contains the number of the\n\
16377 last tracepoint set."));
16378
16379   add_info_alias ("tp", "tracepoints", 1);
16380
16381   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16382 Delete specified tracepoints.\n\
16383 Arguments are tracepoint numbers, separated by spaces.\n\
16384 No argument means delete all tracepoints."),
16385            &deletelist);
16386   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16387
16388   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16389 Disable specified tracepoints.\n\
16390 Arguments are tracepoint numbers, separated by spaces.\n\
16391 No argument means disable all tracepoints."),
16392            &disablelist);
16393   deprecate_cmd (c, "disable");
16394
16395   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16396 Enable specified tracepoints.\n\
16397 Arguments are tracepoint numbers, separated by spaces.\n\
16398 No argument means enable all tracepoints."),
16399            &enablelist);
16400   deprecate_cmd (c, "enable");
16401
16402   add_com ("passcount", class_trace, trace_pass_command, _("\
16403 Set the passcount for a tracepoint.\n\
16404 The trace will end when the tracepoint has been passed 'count' times.\n\
16405 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16406 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16407
16408   add_prefix_cmd ("save", class_breakpoint, save_command,
16409                   _("Save breakpoint definitions as a script."),
16410                   &save_cmdlist, "save ",
16411                   0/*allow-unknown*/, &cmdlist);
16412
16413   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16414 Save current breakpoint definitions as a script.\n\
16415 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16416 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16417 session to restore them."),
16418                &save_cmdlist);
16419   set_cmd_completer (c, filename_completer);
16420
16421   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16422 Save current tracepoint definitions as a script.\n\
16423 Use the 'source' command in another debug session to restore them."),
16424                &save_cmdlist);
16425   set_cmd_completer (c, filename_completer);
16426
16427   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16428   deprecate_cmd (c, "save tracepoints");
16429
16430   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16431 Breakpoint specific settings\n\
16432 Configure various breakpoint-specific variables such as\n\
16433 pending breakpoint behavior"),
16434                   &breakpoint_set_cmdlist, "set breakpoint ",
16435                   0/*allow-unknown*/, &setlist);
16436   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16437 Breakpoint specific settings\n\
16438 Configure various breakpoint-specific variables such as\n\
16439 pending breakpoint behavior"),
16440                   &breakpoint_show_cmdlist, "show breakpoint ",
16441                   0/*allow-unknown*/, &showlist);
16442
16443   add_setshow_auto_boolean_cmd ("pending", no_class,
16444                                 &pending_break_support, _("\
16445 Set debugger's behavior regarding pending breakpoints."), _("\
16446 Show debugger's behavior regarding pending breakpoints."), _("\
16447 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16448 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16449 an error.  If auto, an unrecognized breakpoint location results in a\n\
16450 user-query to see if a pending breakpoint should be created."),
16451                                 NULL,
16452                                 show_pending_break_support,
16453                                 &breakpoint_set_cmdlist,
16454                                 &breakpoint_show_cmdlist);
16455
16456   pending_break_support = AUTO_BOOLEAN_AUTO;
16457
16458   add_setshow_boolean_cmd ("auto-hw", no_class,
16459                            &automatic_hardware_breakpoints, _("\
16460 Set automatic usage of hardware breakpoints."), _("\
16461 Show automatic usage of hardware breakpoints."), _("\
16462 If set, the debugger will automatically use hardware breakpoints for\n\
16463 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16464 a warning will be emitted for such breakpoints."),
16465                            NULL,
16466                            show_automatic_hardware_breakpoints,
16467                            &breakpoint_set_cmdlist,
16468                            &breakpoint_show_cmdlist);
16469
16470   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16471                                 &always_inserted_mode, _("\
16472 Set mode for inserting breakpoints."), _("\
16473 Show mode for inserting breakpoints."), _("\
16474 When this mode is off, breakpoints are inserted in inferior when it is\n\
16475 resumed, and removed when execution stops.  When this mode is on,\n\
16476 breakpoints are inserted immediately and removed only when the user\n\
16477 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16478 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16479 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16480 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16481 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16482                                 NULL,
16483                                 &show_always_inserted_mode,
16484                                 &breakpoint_set_cmdlist,
16485                                 &breakpoint_show_cmdlist);
16486
16487   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16488                         condition_evaluation_enums,
16489                         &condition_evaluation_mode_1, _("\
16490 Set mode of breakpoint condition evaluation."), _("\
16491 Show mode of breakpoint condition evaluation."), _("\
16492 When this is set to \"host\", breakpoint conditions will be\n\
16493 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16494 breakpoint conditions will be downloaded to the target (if the target\n\
16495 supports such feature) and conditions will be evaluated on the target's side.\n\
16496 If this is set to \"auto\" (default), this will be automatically set to\n\
16497 \"target\" if it supports condition evaluation, otherwise it will\n\
16498 be set to \"gdb\""),
16499                            &set_condition_evaluation_mode,
16500                            &show_condition_evaluation_mode,
16501                            &breakpoint_set_cmdlist,
16502                            &breakpoint_show_cmdlist);
16503
16504   add_com ("break-range", class_breakpoint, break_range_command, _("\
16505 Set a breakpoint for an address range.\n\
16506 break-range START-LOCATION, END-LOCATION\n\
16507 where START-LOCATION and END-LOCATION can be one of the following:\n\
16508   LINENUM, for that line in the current file,\n\
16509   FILE:LINENUM, for that line in that file,\n\
16510   +OFFSET, for that number of lines after the current line\n\
16511            or the start of the range\n\
16512   FUNCTION, for the first line in that function,\n\
16513   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16514   *ADDRESS, for the instruction at that address.\n\
16515 \n\
16516 The breakpoint will stop execution of the inferior whenever it executes\n\
16517 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16518 range (including START-LOCATION and END-LOCATION)."));
16519
16520   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16521 Set a dynamic printf at specified line or function.\n\
16522 dprintf location,format string,arg1,arg2,...\n\
16523 location may be a line number, function name, or \"*\" and an address.\n\
16524 If a line number is specified, break at start of code for that line.\n\
16525 If a function is specified, break at start of code for that function.\n\
16526 "));
16527   set_cmd_completer (c, location_completer);
16528
16529   add_setshow_enum_cmd ("dprintf-style", class_support,
16530                         dprintf_style_enums, &dprintf_style, _("\
16531 Set the style of usage for dynamic printf."), _("\
16532 Show the style of usage for dynamic printf."), _("\
16533 This setting chooses how GDB will do a dynamic printf.\n\
16534 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16535 console, as with the \"printf\" command.\n\
16536 If the value is \"call\", the print is done by calling a function in your\n\
16537 program; by default printf(), but you can choose a different function or\n\
16538 output stream by setting dprintf-function and dprintf-channel."),
16539                         update_dprintf_commands, NULL,
16540                         &setlist, &showlist);
16541
16542   dprintf_function = xstrdup ("printf");
16543   add_setshow_string_cmd ("dprintf-function", class_support,
16544                           &dprintf_function, _("\
16545 Set the function to use for dynamic printf"), _("\
16546 Show the function to use for dynamic printf"), NULL,
16547                           update_dprintf_commands, NULL,
16548                           &setlist, &showlist);
16549
16550   dprintf_channel = xstrdup ("");
16551   add_setshow_string_cmd ("dprintf-channel", class_support,
16552                           &dprintf_channel, _("\
16553 Set the channel to use for dynamic printf"), _("\
16554 Show the channel to use for dynamic printf"), NULL,
16555                           update_dprintf_commands, NULL,
16556                           &setlist, &showlist);
16557
16558   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16559                            &disconnected_dprintf, _("\
16560 Set whether dprintf continues after GDB disconnects."), _("\
16561 Show whether dprintf continues after GDB disconnects."), _("\
16562 Use this to let dprintf commands continue to hit and produce output\n\
16563 even if GDB disconnects or detaches from the target."),
16564                            NULL,
16565                            NULL,
16566                            &setlist, &showlist);
16567
16568   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16569 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16570 (target agent only) This is useful for formatted output in user-defined commands."));
16571
16572   automatic_hardware_breakpoints = 1;
16573
16574   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16575 }