gdb/
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_CATCH
90 };
91
92 /* Prototypes for local functions.  */
93
94 static void enable_delete_command (char *, int);
95
96 static void enable_once_command (char *, int);
97
98 static void enable_count_command (char *, int);
99
100 static void disable_command (char *, int);
101
102 static void enable_command (char *, int);
103
104 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
105                                                       void *),
106                                     void *);
107
108 static void ignore_command (char *, int);
109
110 static int breakpoint_re_set_one (void *);
111
112 static void breakpoint_re_set_default (struct breakpoint *);
113
114 static void create_sals_from_address_default (char **,
115                                               struct linespec_result *,
116                                               enum bptype, char *,
117                                               char **);
118
119 static void create_breakpoints_sal_default (struct gdbarch *,
120                                             struct linespec_result *,
121                                             struct linespec_sals *,
122                                             char *, char *, enum bptype,
123                                             enum bpdisp, int, int,
124                                             int,
125                                             const struct breakpoint_ops *,
126                                             int, int, int, unsigned);
127
128 static void decode_linespec_default (struct breakpoint *, char **,
129                                      struct symtabs_and_lines *);
130
131 static void clear_command (char *, int);
132
133 static void catch_command (char *, int);
134
135 static int can_use_hardware_watchpoint (struct value *);
136
137 static void break_command_1 (char *, int, int);
138
139 static void mention (struct breakpoint *);
140
141 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
142                                                                enum bptype,
143                                                                const struct breakpoint_ops *);
144 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
145                                                        const struct symtab_and_line *);
146
147 /* This function is used in gdbtk sources and thus can not be made
148    static.  */
149 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
150                                        struct symtab_and_line,
151                                        enum bptype,
152                                        const struct breakpoint_ops *);
153
154 static struct breakpoint *
155   momentary_breakpoint_from_master (struct breakpoint *orig,
156                                     enum bptype type,
157                                     const struct breakpoint_ops *ops);
158
159 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
160
161 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
162                                             CORE_ADDR bpaddr,
163                                             enum bptype bptype);
164
165 static void describe_other_breakpoints (struct gdbarch *,
166                                         struct program_space *, CORE_ADDR,
167                                         struct obj_section *, int);
168
169 static int breakpoint_address_match (struct address_space *aspace1,
170                                      CORE_ADDR addr1,
171                                      struct address_space *aspace2,
172                                      CORE_ADDR addr2);
173
174 static int watchpoint_locations_match (struct bp_location *loc1,
175                                        struct bp_location *loc2);
176
177 static int breakpoint_location_address_match (struct bp_location *bl,
178                                               struct address_space *aspace,
179                                               CORE_ADDR addr);
180
181 static void breakpoints_info (char *, int);
182
183 static void watchpoints_info (char *, int);
184
185 static int breakpoint_1 (char *, int, 
186                          int (*) (const struct breakpoint *));
187
188 static int breakpoint_cond_eval (void *);
189
190 static void cleanup_executing_breakpoints (void *);
191
192 static void commands_command (char *, int);
193
194 static void condition_command (char *, int);
195
196 typedef enum
197   {
198     mark_inserted,
199     mark_uninserted
200   }
201 insertion_state_t;
202
203 static int remove_breakpoint (struct bp_location *, insertion_state_t);
204 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
205
206 static enum print_stop_action print_bp_stop_message (bpstat bs);
207
208 static int watchpoint_check (void *);
209
210 static void maintenance_info_breakpoints (char *, int);
211
212 static int hw_breakpoint_used_count (void);
213
214 static int hw_watchpoint_use_count (struct breakpoint *);
215
216 static int hw_watchpoint_used_count_others (struct breakpoint *except,
217                                             enum bptype type,
218                                             int *other_type_used);
219
220 static void hbreak_command (char *, int);
221
222 static void thbreak_command (char *, int);
223
224 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
225                                     int count);
226
227 static void stop_command (char *arg, int from_tty);
228
229 static void stopin_command (char *arg, int from_tty);
230
231 static void stopat_command (char *arg, int from_tty);
232
233 static char *ep_parse_optional_if_clause (char **arg);
234
235 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
236                                        char *arg, int tempflag, int from_tty);
237
238 static void tcatch_command (char *arg, int from_tty);
239
240 static void detach_single_step_breakpoints (void);
241
242 static int single_step_breakpoint_inserted_here_p (struct address_space *,
243                                                    CORE_ADDR pc);
244
245 static void free_bp_location (struct bp_location *loc);
246 static void incref_bp_location (struct bp_location *loc);
247 static void decref_bp_location (struct bp_location **loc);
248
249 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
250
251 static void update_global_location_list (int);
252
253 static void update_global_location_list_nothrow (int);
254
255 static int is_hardware_watchpoint (const struct breakpoint *bpt);
256
257 static void insert_breakpoint_locations (void);
258
259 static int syscall_catchpoint_p (struct breakpoint *b);
260
261 static void tracepoints_info (char *, int);
262
263 static void delete_trace_command (char *, int);
264
265 static void enable_trace_command (char *, int);
266
267 static void disable_trace_command (char *, int);
268
269 static void trace_pass_command (char *, int);
270
271 static void set_tracepoint_count (int num);
272
273 static int is_masked_watchpoint (const struct breakpoint *b);
274
275 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
276
277 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
278    otherwise.  */
279
280 static int strace_marker_p (struct breakpoint *b);
281
282 /* The abstract base class all breakpoint_ops structures inherit
283    from.  */
284 struct breakpoint_ops base_breakpoint_ops;
285
286 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
287    that are implemented on top of software or hardware breakpoints
288    (user breakpoints, internal and momentary breakpoints, etc.).  */
289 static struct breakpoint_ops bkpt_base_breakpoint_ops;
290
291 /* Internal breakpoints class type.  */
292 static struct breakpoint_ops internal_breakpoint_ops;
293
294 /* Momentary breakpoints class type.  */
295 static struct breakpoint_ops momentary_breakpoint_ops;
296
297 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
298 static struct breakpoint_ops longjmp_breakpoint_ops;
299
300 /* The breakpoint_ops structure to be used in regular user created
301    breakpoints.  */
302 struct breakpoint_ops bkpt_breakpoint_ops;
303
304 /* Breakpoints set on probes.  */
305 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
306
307 /* Dynamic printf class type.  */
308 static struct breakpoint_ops dprintf_breakpoint_ops;
309
310 /* The style in which to perform a dynamic printf.  This is a user
311    option because different output options have different tradeoffs;
312    if GDB does the printing, there is better error handling if there
313    is a problem with any of the arguments, but using an inferior
314    function lets you have special-purpose printers and sending of
315    output to the same place as compiled-in print functions.  */
316
317 static const char dprintf_style_gdb[] = "gdb";
318 static const char dprintf_style_call[] = "call";
319 static const char dprintf_style_agent[] = "agent";
320 static const char *const dprintf_style_enums[] = {
321   dprintf_style_gdb,
322   dprintf_style_call,
323   dprintf_style_agent,
324   NULL
325 };
326 static const char *dprintf_style = dprintf_style_gdb;
327
328 /* The function to use for dynamic printf if the preferred style is to
329    call into the inferior.  The value is simply a string that is
330    copied into the command, so it can be anything that GDB can
331    evaluate to a callable address, not necessarily a function name.  */
332
333 static char *dprintf_function = "";
334
335 /* The channel to use for dynamic printf if the preferred style is to
336    call into the inferior; if a nonempty string, it will be passed to
337    the call as the first argument, with the format string as the
338    second.  As with the dprintf function, this can be anything that
339    GDB knows how to evaluate, so in addition to common choices like
340    "stderr", this could be an app-specific expression like
341    "mystreams[curlogger]".  */
342
343 static char *dprintf_channel = "";
344
345 /* True if dprintf commands should continue to operate even if GDB
346    has disconnected.  */
347 static int disconnected_dprintf = 1;
348
349 /* A reference-counted struct command_line.  This lets multiple
350    breakpoints share a single command list.  */
351 struct counted_command_line
352 {
353   /* The reference count.  */
354   int refc;
355
356   /* The command list.  */
357   struct command_line *commands;
358 };
359
360 struct command_line *
361 breakpoint_commands (struct breakpoint *b)
362 {
363   return b->commands ? b->commands->commands : NULL;
364 }
365
366 /* Flag indicating that a command has proceeded the inferior past the
367    current breakpoint.  */
368
369 static int breakpoint_proceeded;
370
371 const char *
372 bpdisp_text (enum bpdisp disp)
373 {
374   /* NOTE: the following values are a part of MI protocol and
375      represent values of 'disp' field returned when inferior stops at
376      a breakpoint.  */
377   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
378
379   return bpdisps[(int) disp];
380 }
381
382 /* Prototypes for exported functions.  */
383 /* If FALSE, gdb will not use hardware support for watchpoints, even
384    if such is available.  */
385 static int can_use_hw_watchpoints;
386
387 static void
388 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
389                              struct cmd_list_element *c,
390                              const char *value)
391 {
392   fprintf_filtered (file,
393                     _("Debugger's willingness to use "
394                       "watchpoint hardware is %s.\n"),
395                     value);
396 }
397
398 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
399    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
400    for unrecognized breakpoint locations.
401    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
402 static enum auto_boolean pending_break_support;
403 static void
404 show_pending_break_support (struct ui_file *file, int from_tty,
405                             struct cmd_list_element *c,
406                             const char *value)
407 {
408   fprintf_filtered (file,
409                     _("Debugger's behavior regarding "
410                       "pending breakpoints is %s.\n"),
411                     value);
412 }
413
414 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
415    set with "break" but falling in read-only memory.
416    If 0, gdb will warn about such breakpoints, but won't automatically
417    use hardware breakpoints.  */
418 static int automatic_hardware_breakpoints;
419 static void
420 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
421                                      struct cmd_list_element *c,
422                                      const char *value)
423 {
424   fprintf_filtered (file,
425                     _("Automatic usage of hardware breakpoints is %s.\n"),
426                     value);
427 }
428
429 /* If on, gdb will keep breakpoints inserted even as inferior is
430    stopped, and immediately insert any new breakpoints.  If off, gdb
431    will insert breakpoints into inferior only when resuming it, and
432    will remove breakpoints upon stop.  If auto, GDB will behave as ON
433    if in non-stop mode, and as OFF if all-stop mode.*/
434
435 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
436
437 static void
438 show_always_inserted_mode (struct ui_file *file, int from_tty,
439                      struct cmd_list_element *c, const char *value)
440 {
441   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
442     fprintf_filtered (file,
443                       _("Always inserted breakpoint "
444                         "mode is %s (currently %s).\n"),
445                       value,
446                       breakpoints_always_inserted_mode () ? "on" : "off");
447   else
448     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
449                       value);
450 }
451
452 int
453 breakpoints_always_inserted_mode (void)
454 {
455   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
456           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
457 }
458
459 static const char condition_evaluation_both[] = "host or target";
460
461 /* Modes for breakpoint condition evaluation.  */
462 static const char condition_evaluation_auto[] = "auto";
463 static const char condition_evaluation_host[] = "host";
464 static const char condition_evaluation_target[] = "target";
465 static const char *const condition_evaluation_enums[] = {
466   condition_evaluation_auto,
467   condition_evaluation_host,
468   condition_evaluation_target,
469   NULL
470 };
471
472 /* Global that holds the current mode for breakpoint condition evaluation.  */
473 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
474
475 /* Global that we use to display information to the user (gets its value from
476    condition_evaluation_mode_1.  */
477 static const char *condition_evaluation_mode = condition_evaluation_auto;
478
479 /* Translate a condition evaluation mode MODE into either "host"
480    or "target".  This is used mostly to translate from "auto" to the
481    real setting that is being used.  It returns the translated
482    evaluation mode.  */
483
484 static const char *
485 translate_condition_evaluation_mode (const char *mode)
486 {
487   if (mode == condition_evaluation_auto)
488     {
489       if (target_supports_evaluation_of_breakpoint_conditions ())
490         return condition_evaluation_target;
491       else
492         return condition_evaluation_host;
493     }
494   else
495     return mode;
496 }
497
498 /* Discovers what condition_evaluation_auto translates to.  */
499
500 static const char *
501 breakpoint_condition_evaluation_mode (void)
502 {
503   return translate_condition_evaluation_mode (condition_evaluation_mode);
504 }
505
506 /* Return true if GDB should evaluate breakpoint conditions or false
507    otherwise.  */
508
509 static int
510 gdb_evaluates_breakpoint_condition_p (void)
511 {
512   const char *mode = breakpoint_condition_evaluation_mode ();
513
514   return (mode == condition_evaluation_host);
515 }
516
517 void _initialize_breakpoint (void);
518
519 /* Are we executing breakpoint commands?  */
520 static int executing_breakpoint_commands;
521
522 /* Are overlay event breakpoints enabled? */
523 static int overlay_events_enabled;
524
525 /* See description in breakpoint.h. */
526 int target_exact_watchpoints = 0;
527
528 /* Walk the following statement or block through all breakpoints.
529    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
530    current breakpoint.  */
531
532 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
533
534 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
535         for (B = breakpoint_chain;      \
536              B ? (TMP=B->next, 1): 0;   \
537              B = TMP)
538
539 /* Similar iterator for the low-level breakpoints.  SAFE variant is
540    not provided so update_global_location_list must not be called
541    while executing the block of ALL_BP_LOCATIONS.  */
542
543 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
544         for (BP_TMP = bp_location;                                      \
545              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
546              BP_TMP++)
547
548 /* Iterates through locations with address ADDRESS for the currently selected
549    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
550    to where the loop should start from.
551    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
552    appropriate location to start with.  */
553
554 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
555         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
556              BP_LOCP_TMP = BP_LOCP_START;                               \
557              BP_LOCP_START                                              \
558              && (BP_LOCP_TMP < bp_location + bp_location_count          \
559              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
560              BP_LOCP_TMP++)
561
562 /* Iterator for tracepoints only.  */
563
564 #define ALL_TRACEPOINTS(B)  \
565   for (B = breakpoint_chain; B; B = B->next)  \
566     if (is_tracepoint (B))
567
568 /* Chains of all breakpoints defined.  */
569
570 struct breakpoint *breakpoint_chain;
571
572 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
573
574 static struct bp_location **bp_location;
575
576 /* Number of elements of BP_LOCATION.  */
577
578 static unsigned bp_location_count;
579
580 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
581    ADDRESS for the current elements of BP_LOCATION which get a valid
582    result from bp_location_has_shadow.  You can use it for roughly
583    limiting the subrange of BP_LOCATION to scan for shadow bytes for
584    an address you need to read.  */
585
586 static CORE_ADDR bp_location_placed_address_before_address_max;
587
588 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
589    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
590    BP_LOCATION which get a valid result from bp_location_has_shadow.
591    You can use it for roughly limiting the subrange of BP_LOCATION to
592    scan for shadow bytes for an address you need to read.  */
593
594 static CORE_ADDR bp_location_shadow_len_after_address_max;
595
596 /* The locations that no longer correspond to any breakpoint, unlinked
597    from bp_location array, but for which a hit may still be reported
598    by a target.  */
599 VEC(bp_location_p) *moribund_locations = NULL;
600
601 /* Number of last breakpoint made.  */
602
603 static int breakpoint_count;
604
605 /* The value of `breakpoint_count' before the last command that
606    created breakpoints.  If the last (break-like) command created more
607    than one breakpoint, then the difference between BREAKPOINT_COUNT
608    and PREV_BREAKPOINT_COUNT is more than one.  */
609 static int prev_breakpoint_count;
610
611 /* Number of last tracepoint made.  */
612
613 static int tracepoint_count;
614
615 static struct cmd_list_element *breakpoint_set_cmdlist;
616 static struct cmd_list_element *breakpoint_show_cmdlist;
617 struct cmd_list_element *save_cmdlist;
618
619 /* Return whether a breakpoint is an active enabled breakpoint.  */
620 static int
621 breakpoint_enabled (struct breakpoint *b)
622 {
623   return (b->enable_state == bp_enabled);
624 }
625
626 /* Set breakpoint count to NUM.  */
627
628 static void
629 set_breakpoint_count (int num)
630 {
631   prev_breakpoint_count = breakpoint_count;
632   breakpoint_count = num;
633   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
634 }
635
636 /* Used by `start_rbreak_breakpoints' below, to record the current
637    breakpoint count before "rbreak" creates any breakpoint.  */
638 static int rbreak_start_breakpoint_count;
639
640 /* Called at the start an "rbreak" command to record the first
641    breakpoint made.  */
642
643 void
644 start_rbreak_breakpoints (void)
645 {
646   rbreak_start_breakpoint_count = breakpoint_count;
647 }
648
649 /* Called at the end of an "rbreak" command to record the last
650    breakpoint made.  */
651
652 void
653 end_rbreak_breakpoints (void)
654 {
655   prev_breakpoint_count = rbreak_start_breakpoint_count;
656 }
657
658 /* Used in run_command to zero the hit count when a new run starts.  */
659
660 void
661 clear_breakpoint_hit_counts (void)
662 {
663   struct breakpoint *b;
664
665   ALL_BREAKPOINTS (b)
666     b->hit_count = 0;
667 }
668
669 /* Allocate a new counted_command_line with reference count of 1.
670    The new structure owns COMMANDS.  */
671
672 static struct counted_command_line *
673 alloc_counted_command_line (struct command_line *commands)
674 {
675   struct counted_command_line *result
676     = xmalloc (sizeof (struct counted_command_line));
677
678   result->refc = 1;
679   result->commands = commands;
680   return result;
681 }
682
683 /* Increment reference count.  This does nothing if CMD is NULL.  */
684
685 static void
686 incref_counted_command_line (struct counted_command_line *cmd)
687 {
688   if (cmd)
689     ++cmd->refc;
690 }
691
692 /* Decrement reference count.  If the reference count reaches 0,
693    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
694    nothing if *CMDP is NULL.  */
695
696 static void
697 decref_counted_command_line (struct counted_command_line **cmdp)
698 {
699   if (*cmdp)
700     {
701       if (--(*cmdp)->refc == 0)
702         {
703           free_command_lines (&(*cmdp)->commands);
704           xfree (*cmdp);
705         }
706       *cmdp = NULL;
707     }
708 }
709
710 /* A cleanup function that calls decref_counted_command_line.  */
711
712 static void
713 do_cleanup_counted_command_line (void *arg)
714 {
715   decref_counted_command_line (arg);
716 }
717
718 /* Create a cleanup that calls decref_counted_command_line on the
719    argument.  */
720
721 static struct cleanup *
722 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
723 {
724   return make_cleanup (do_cleanup_counted_command_line, cmdp);
725 }
726
727 \f
728 /* Return the breakpoint with the specified number, or NULL
729    if the number does not refer to an existing breakpoint.  */
730
731 struct breakpoint *
732 get_breakpoint (int num)
733 {
734   struct breakpoint *b;
735
736   ALL_BREAKPOINTS (b)
737     if (b->number == num)
738       return b;
739   
740   return NULL;
741 }
742
743 \f
744
745 /* Mark locations as "conditions have changed" in case the target supports
746    evaluating conditions on its side.  */
747
748 static void
749 mark_breakpoint_modified (struct breakpoint *b)
750 {
751   struct bp_location *loc;
752
753   /* This is only meaningful if the target is
754      evaluating conditions and if the user has
755      opted for condition evaluation on the target's
756      side.  */
757   if (gdb_evaluates_breakpoint_condition_p ()
758       || !target_supports_evaluation_of_breakpoint_conditions ())
759     return;
760
761   if (!is_breakpoint (b))
762     return;
763
764   for (loc = b->loc; loc; loc = loc->next)
765     loc->condition_changed = condition_modified;
766 }
767
768 /* Mark location as "conditions have changed" in case the target supports
769    evaluating conditions on its side.  */
770
771 static void
772 mark_breakpoint_location_modified (struct bp_location *loc)
773 {
774   /* This is only meaningful if the target is
775      evaluating conditions and if the user has
776      opted for condition evaluation on the target's
777      side.  */
778   if (gdb_evaluates_breakpoint_condition_p ()
779       || !target_supports_evaluation_of_breakpoint_conditions ())
780
781     return;
782
783   if (!is_breakpoint (loc->owner))
784     return;
785
786   loc->condition_changed = condition_modified;
787 }
788
789 /* Sets the condition-evaluation mode using the static global
790    condition_evaluation_mode.  */
791
792 static void
793 set_condition_evaluation_mode (char *args, int from_tty,
794                                struct cmd_list_element *c)
795 {
796   const char *old_mode, *new_mode;
797
798   if ((condition_evaluation_mode_1 == condition_evaluation_target)
799       && !target_supports_evaluation_of_breakpoint_conditions ())
800     {
801       condition_evaluation_mode_1 = condition_evaluation_mode;
802       warning (_("Target does not support breakpoint condition evaluation.\n"
803                  "Using host evaluation mode instead."));
804       return;
805     }
806
807   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
808   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
809
810   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
811      settings was "auto".  */
812   condition_evaluation_mode = condition_evaluation_mode_1;
813
814   /* Only update the mode if the user picked a different one.  */
815   if (new_mode != old_mode)
816     {
817       struct bp_location *loc, **loc_tmp;
818       /* If the user switched to a different evaluation mode, we
819          need to synch the changes with the target as follows:
820
821          "host" -> "target": Send all (valid) conditions to the target.
822          "target" -> "host": Remove all the conditions from the target.
823       */
824
825       if (new_mode == condition_evaluation_target)
826         {
827           /* Mark everything modified and synch conditions with the
828              target.  */
829           ALL_BP_LOCATIONS (loc, loc_tmp)
830             mark_breakpoint_location_modified (loc);
831         }
832       else
833         {
834           /* Manually mark non-duplicate locations to synch conditions
835              with the target.  We do this to remove all the conditions the
836              target knows about.  */
837           ALL_BP_LOCATIONS (loc, loc_tmp)
838             if (is_breakpoint (loc->owner) && loc->inserted)
839               loc->needs_update = 1;
840         }
841
842       /* Do the update.  */
843       update_global_location_list (1);
844     }
845
846   return;
847 }
848
849 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
850    what "auto" is translating to.  */
851
852 static void
853 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
854                                 struct cmd_list_element *c, const char *value)
855 {
856   if (condition_evaluation_mode == condition_evaluation_auto)
857     fprintf_filtered (file,
858                       _("Breakpoint condition evaluation "
859                         "mode is %s (currently %s).\n"),
860                       value,
861                       breakpoint_condition_evaluation_mode ());
862   else
863     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
864                       value);
865 }
866
867 /* A comparison function for bp_location AP and BP that is used by
868    bsearch.  This comparison function only cares about addresses, unlike
869    the more general bp_location_compare function.  */
870
871 static int
872 bp_location_compare_addrs (const void *ap, const void *bp)
873 {
874   struct bp_location *a = *(void **) ap;
875   struct bp_location *b = *(void **) bp;
876
877   if (a->address == b->address)
878     return 0;
879   else
880     return ((a->address > b->address) - (a->address < b->address));
881 }
882
883 /* Helper function to skip all bp_locations with addresses
884    less than ADDRESS.  It returns the first bp_location that
885    is greater than or equal to ADDRESS.  If none is found, just
886    return NULL.  */
887
888 static struct bp_location **
889 get_first_locp_gte_addr (CORE_ADDR address)
890 {
891   struct bp_location dummy_loc;
892   struct bp_location *dummy_locp = &dummy_loc;
893   struct bp_location **locp_found = NULL;
894
895   /* Initialize the dummy location's address field.  */
896   memset (&dummy_loc, 0, sizeof (struct bp_location));
897   dummy_loc.address = address;
898
899   /* Find a close match to the first location at ADDRESS.  */
900   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
901                         sizeof (struct bp_location **),
902                         bp_location_compare_addrs);
903
904   /* Nothing was found, nothing left to do.  */
905   if (locp_found == NULL)
906     return NULL;
907
908   /* We may have found a location that is at ADDRESS but is not the first in the
909      location's list.  Go backwards (if possible) and locate the first one.  */
910   while ((locp_found - 1) >= bp_location
911          && (*(locp_found - 1))->address == address)
912     locp_found--;
913
914   return locp_found;
915 }
916
917 void
918 set_breakpoint_condition (struct breakpoint *b, char *exp,
919                           int from_tty)
920 {
921   xfree (b->cond_string);
922   b->cond_string = NULL;
923
924   if (is_watchpoint (b))
925     {
926       struct watchpoint *w = (struct watchpoint *) b;
927
928       xfree (w->cond_exp);
929       w->cond_exp = NULL;
930     }
931   else
932     {
933       struct bp_location *loc;
934
935       for (loc = b->loc; loc; loc = loc->next)
936         {
937           xfree (loc->cond);
938           loc->cond = NULL;
939
940           /* No need to free the condition agent expression
941              bytecode (if we have one).  We will handle this
942              when we go through update_global_location_list.  */
943         }
944     }
945
946   if (*exp == 0)
947     {
948       if (from_tty)
949         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
950     }
951   else
952     {
953       char *arg = exp;
954
955       /* I don't know if it matters whether this is the string the user
956          typed in or the decompiled expression.  */
957       b->cond_string = xstrdup (arg);
958       b->condition_not_parsed = 0;
959
960       if (is_watchpoint (b))
961         {
962           struct watchpoint *w = (struct watchpoint *) b;
963
964           innermost_block = NULL;
965           arg = exp;
966           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
967           if (*arg)
968             error (_("Junk at end of expression"));
969           w->cond_exp_valid_block = innermost_block;
970         }
971       else
972         {
973           struct bp_location *loc;
974
975           for (loc = b->loc; loc; loc = loc->next)
976             {
977               arg = exp;
978               loc->cond =
979                 parse_exp_1 (&arg, loc->address,
980                              block_for_pc (loc->address), 0);
981               if (*arg)
982                 error (_("Junk at end of expression"));
983             }
984         }
985     }
986   mark_breakpoint_modified (b);
987
988   observer_notify_breakpoint_modified (b);
989 }
990
991 /* Completion for the "condition" command.  */
992
993 static VEC (char_ptr) *
994 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
995 {
996   char *space;
997
998   text = skip_spaces (text);
999   space = skip_to_space (text);
1000   if (*space == '\0')
1001     {
1002       int len;
1003       struct breakpoint *b;
1004       VEC (char_ptr) *result = NULL;
1005
1006       if (text[0] == '$')
1007         {
1008           /* We don't support completion of history indices.  */
1009           if (isdigit (text[1]))
1010             return NULL;
1011           return complete_internalvar (&text[1]);
1012         }
1013
1014       /* We're completing the breakpoint number.  */
1015       len = strlen (text);
1016
1017       ALL_BREAKPOINTS (b)
1018       {
1019         int single = b->loc->next == NULL;
1020         struct bp_location *loc;
1021         int count = 1;
1022
1023         for (loc = b->loc; loc; loc = loc->next)
1024           {
1025             char location[50];
1026
1027             if (single)
1028               xsnprintf (location, sizeof (location), "%d", b->number);
1029             else
1030               xsnprintf (location, sizeof (location),  "%d.%d", b->number,
1031                          count);
1032
1033             if (strncmp (location, text, len) == 0)
1034               VEC_safe_push (char_ptr, result, xstrdup (location));
1035
1036             ++count;
1037           }
1038       }
1039
1040       return result;
1041     }
1042
1043   /* We're completing the expression part.  */
1044   text = skip_spaces (space);
1045   return expression_completer (cmd, text, word);
1046 }
1047
1048 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1049
1050 static void
1051 condition_command (char *arg, int from_tty)
1052 {
1053   struct breakpoint *b;
1054   char *p;
1055   int bnum;
1056
1057   if (arg == 0)
1058     error_no_arg (_("breakpoint number"));
1059
1060   p = arg;
1061   bnum = get_number (&p);
1062   if (bnum == 0)
1063     error (_("Bad breakpoint argument: '%s'"), arg);
1064
1065   ALL_BREAKPOINTS (b)
1066     if (b->number == bnum)
1067       {
1068         /* Check if this breakpoint has a Python object assigned to
1069            it, and if it has a definition of the "stop"
1070            method.  This method and conditions entered into GDB from
1071            the CLI are mutually exclusive.  */
1072         if (b->py_bp_object
1073             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1074           error (_("Cannot set a condition where a Python 'stop' "
1075                    "method has been defined in the breakpoint."));
1076         set_breakpoint_condition (b, p, from_tty);
1077
1078         if (is_breakpoint (b))
1079           update_global_location_list (1);
1080
1081         return;
1082       }
1083
1084   error (_("No breakpoint number %d."), bnum);
1085 }
1086
1087 /* Check that COMMAND do not contain commands that are suitable
1088    only for tracepoints and not suitable for ordinary breakpoints.
1089    Throw if any such commands is found.  */
1090
1091 static void
1092 check_no_tracepoint_commands (struct command_line *commands)
1093 {
1094   struct command_line *c;
1095
1096   for (c = commands; c; c = c->next)
1097     {
1098       int i;
1099
1100       if (c->control_type == while_stepping_control)
1101         error (_("The 'while-stepping' command can "
1102                  "only be used for tracepoints"));
1103
1104       for (i = 0; i < c->body_count; ++i)
1105         check_no_tracepoint_commands ((c->body_list)[i]);
1106
1107       /* Not that command parsing removes leading whitespace and comment
1108          lines and also empty lines.  So, we only need to check for
1109          command directly.  */
1110       if (strstr (c->line, "collect ") == c->line)
1111         error (_("The 'collect' command can only be used for tracepoints"));
1112
1113       if (strstr (c->line, "teval ") == c->line)
1114         error (_("The 'teval' command can only be used for tracepoints"));
1115     }
1116 }
1117
1118 /* Encapsulate tests for different types of tracepoints.  */
1119
1120 static int
1121 is_tracepoint_type (enum bptype type)
1122 {
1123   return (type == bp_tracepoint
1124           || type == bp_fast_tracepoint
1125           || type == bp_static_tracepoint);
1126 }
1127
1128 int
1129 is_tracepoint (const struct breakpoint *b)
1130 {
1131   return is_tracepoint_type (b->type);
1132 }
1133
1134 /* A helper function that validates that COMMANDS are valid for a
1135    breakpoint.  This function will throw an exception if a problem is
1136    found.  */
1137
1138 static void
1139 validate_commands_for_breakpoint (struct breakpoint *b,
1140                                   struct command_line *commands)
1141 {
1142   if (is_tracepoint (b))
1143     {
1144       /* We need to verify that each top-level element of commands is
1145          valid for tracepoints, that there's at most one
1146          while-stepping element, and that while-stepping's body has
1147          valid tracing commands excluding nested while-stepping.  */
1148       struct command_line *c;
1149       struct command_line *while_stepping = 0;
1150       for (c = commands; c; c = c->next)
1151         {
1152           if (c->control_type == while_stepping_control)
1153             {
1154               if (b->type == bp_fast_tracepoint)
1155                 error (_("The 'while-stepping' command "
1156                          "cannot be used for fast tracepoint"));
1157               else if (b->type == bp_static_tracepoint)
1158                 error (_("The 'while-stepping' command "
1159                          "cannot be used for static tracepoint"));
1160
1161               if (while_stepping)
1162                 error (_("The 'while-stepping' command "
1163                          "can be used only once"));
1164               else
1165                 while_stepping = c;
1166             }
1167         }
1168       if (while_stepping)
1169         {
1170           struct command_line *c2;
1171
1172           gdb_assert (while_stepping->body_count == 1);
1173           c2 = while_stepping->body_list[0];
1174           for (; c2; c2 = c2->next)
1175             {
1176               if (c2->control_type == while_stepping_control)
1177                 error (_("The 'while-stepping' command cannot be nested"));
1178             }
1179         }
1180     }
1181   else
1182     {
1183       check_no_tracepoint_commands (commands);
1184     }
1185 }
1186
1187 /* Return a vector of all the static tracepoints set at ADDR.  The
1188    caller is responsible for releasing the vector.  */
1189
1190 VEC(breakpoint_p) *
1191 static_tracepoints_here (CORE_ADDR addr)
1192 {
1193   struct breakpoint *b;
1194   VEC(breakpoint_p) *found = 0;
1195   struct bp_location *loc;
1196
1197   ALL_BREAKPOINTS (b)
1198     if (b->type == bp_static_tracepoint)
1199       {
1200         for (loc = b->loc; loc; loc = loc->next)
1201           if (loc->address == addr)
1202             VEC_safe_push(breakpoint_p, found, b);
1203       }
1204
1205   return found;
1206 }
1207
1208 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1209    validate that only allowed commands are included.  */
1210
1211 void
1212 breakpoint_set_commands (struct breakpoint *b, 
1213                          struct command_line *commands)
1214 {
1215   validate_commands_for_breakpoint (b, commands);
1216
1217   decref_counted_command_line (&b->commands);
1218   b->commands = alloc_counted_command_line (commands);
1219   observer_notify_breakpoint_modified (b);
1220 }
1221
1222 /* Set the internal `silent' flag on the breakpoint.  Note that this
1223    is not the same as the "silent" that may appear in the breakpoint's
1224    commands.  */
1225
1226 void
1227 breakpoint_set_silent (struct breakpoint *b, int silent)
1228 {
1229   int old_silent = b->silent;
1230
1231   b->silent = silent;
1232   if (old_silent != silent)
1233     observer_notify_breakpoint_modified (b);
1234 }
1235
1236 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1237    breakpoint work for any thread.  */
1238
1239 void
1240 breakpoint_set_thread (struct breakpoint *b, int thread)
1241 {
1242   int old_thread = b->thread;
1243
1244   b->thread = thread;
1245   if (old_thread != thread)
1246     observer_notify_breakpoint_modified (b);
1247 }
1248
1249 /* Set the task for this breakpoint.  If TASK is 0, make the
1250    breakpoint work for any task.  */
1251
1252 void
1253 breakpoint_set_task (struct breakpoint *b, int task)
1254 {
1255   int old_task = b->task;
1256
1257   b->task = task;
1258   if (old_task != task)
1259     observer_notify_breakpoint_modified (b);
1260 }
1261
1262 void
1263 check_tracepoint_command (char *line, void *closure)
1264 {
1265   struct breakpoint *b = closure;
1266
1267   validate_actionline (&line, b);
1268 }
1269
1270 /* A structure used to pass information through
1271    map_breakpoint_numbers.  */
1272
1273 struct commands_info
1274 {
1275   /* True if the command was typed at a tty.  */
1276   int from_tty;
1277
1278   /* The breakpoint range spec.  */
1279   char *arg;
1280
1281   /* Non-NULL if the body of the commands are being read from this
1282      already-parsed command.  */
1283   struct command_line *control;
1284
1285   /* The command lines read from the user, or NULL if they have not
1286      yet been read.  */
1287   struct counted_command_line *cmd;
1288 };
1289
1290 /* A callback for map_breakpoint_numbers that sets the commands for
1291    commands_command.  */
1292
1293 static void
1294 do_map_commands_command (struct breakpoint *b, void *data)
1295 {
1296   struct commands_info *info = data;
1297
1298   if (info->cmd == NULL)
1299     {
1300       struct command_line *l;
1301
1302       if (info->control != NULL)
1303         l = copy_command_lines (info->control->body_list[0]);
1304       else
1305         {
1306           struct cleanup *old_chain;
1307           char *str;
1308
1309           str = xstrprintf (_("Type commands for breakpoint(s) "
1310                               "%s, one per line."),
1311                             info->arg);
1312
1313           old_chain = make_cleanup (xfree, str);
1314
1315           l = read_command_lines (str,
1316                                   info->from_tty, 1,
1317                                   (is_tracepoint (b)
1318                                    ? check_tracepoint_command : 0),
1319                                   b);
1320
1321           do_cleanups (old_chain);
1322         }
1323
1324       info->cmd = alloc_counted_command_line (l);
1325     }
1326
1327   /* If a breakpoint was on the list more than once, we don't need to
1328      do anything.  */
1329   if (b->commands != info->cmd)
1330     {
1331       validate_commands_for_breakpoint (b, info->cmd->commands);
1332       incref_counted_command_line (info->cmd);
1333       decref_counted_command_line (&b->commands);
1334       b->commands = info->cmd;
1335       observer_notify_breakpoint_modified (b);
1336     }
1337 }
1338
1339 static void
1340 commands_command_1 (char *arg, int from_tty, 
1341                     struct command_line *control)
1342 {
1343   struct cleanup *cleanups;
1344   struct commands_info info;
1345
1346   info.from_tty = from_tty;
1347   info.control = control;
1348   info.cmd = NULL;
1349   /* If we read command lines from the user, then `info' will hold an
1350      extra reference to the commands that we must clean up.  */
1351   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1352
1353   if (arg == NULL || !*arg)
1354     {
1355       if (breakpoint_count - prev_breakpoint_count > 1)
1356         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1357                           breakpoint_count);
1358       else if (breakpoint_count > 0)
1359         arg = xstrprintf ("%d", breakpoint_count);
1360       else
1361         {
1362           /* So that we don't try to free the incoming non-NULL
1363              argument in the cleanup below.  Mapping breakpoint
1364              numbers will fail in this case.  */
1365           arg = NULL;
1366         }
1367     }
1368   else
1369     /* The command loop has some static state, so we need to preserve
1370        our argument.  */
1371     arg = xstrdup (arg);
1372
1373   if (arg != NULL)
1374     make_cleanup (xfree, arg);
1375
1376   info.arg = arg;
1377
1378   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1379
1380   if (info.cmd == NULL)
1381     error (_("No breakpoints specified."));
1382
1383   do_cleanups (cleanups);
1384 }
1385
1386 static void
1387 commands_command (char *arg, int from_tty)
1388 {
1389   commands_command_1 (arg, from_tty, NULL);
1390 }
1391
1392 /* Like commands_command, but instead of reading the commands from
1393    input stream, takes them from an already parsed command structure.
1394
1395    This is used by cli-script.c to DTRT with breakpoint commands
1396    that are part of if and while bodies.  */
1397 enum command_control_type
1398 commands_from_control_command (char *arg, struct command_line *cmd)
1399 {
1400   commands_command_1 (arg, 0, cmd);
1401   return simple_control;
1402 }
1403
1404 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1405
1406 static int
1407 bp_location_has_shadow (struct bp_location *bl)
1408 {
1409   if (bl->loc_type != bp_loc_software_breakpoint)
1410     return 0;
1411   if (!bl->inserted)
1412     return 0;
1413   if (bl->target_info.shadow_len == 0)
1414     /* BL isn't valid, or doesn't shadow memory.  */
1415     return 0;
1416   return 1;
1417 }
1418
1419 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1420    by replacing any memory breakpoints with their shadowed contents.
1421
1422    If READBUF is not NULL, this buffer must not overlap with any of
1423    the breakpoint location's shadow_contents buffers.  Otherwise,
1424    a failed assertion internal error will be raised.
1425
1426    The range of shadowed area by each bp_location is:
1427      bl->address - bp_location_placed_address_before_address_max
1428      up to bl->address + bp_location_shadow_len_after_address_max
1429    The range we were requested to resolve shadows for is:
1430      memaddr ... memaddr + len
1431    Thus the safe cutoff boundaries for performance optimization are
1432      memaddr + len <= (bl->address
1433                        - bp_location_placed_address_before_address_max)
1434    and:
1435      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1436
1437 void
1438 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1439                         const gdb_byte *writebuf_org,
1440                         ULONGEST memaddr, LONGEST len)
1441 {
1442   /* Left boundary, right boundary and median element of our binary
1443      search.  */
1444   unsigned bc_l, bc_r, bc;
1445
1446   /* Find BC_L which is a leftmost element which may affect BUF
1447      content.  It is safe to report lower value but a failure to
1448      report higher one.  */
1449
1450   bc_l = 0;
1451   bc_r = bp_location_count;
1452   while (bc_l + 1 < bc_r)
1453     {
1454       struct bp_location *bl;
1455
1456       bc = (bc_l + bc_r) / 2;
1457       bl = bp_location[bc];
1458
1459       /* Check first BL->ADDRESS will not overflow due to the added
1460          constant.  Then advance the left boundary only if we are sure
1461          the BC element can in no way affect the BUF content (MEMADDR
1462          to MEMADDR + LEN range).
1463
1464          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1465          offset so that we cannot miss a breakpoint with its shadow
1466          range tail still reaching MEMADDR.  */
1467
1468       if ((bl->address + bp_location_shadow_len_after_address_max
1469            >= bl->address)
1470           && (bl->address + bp_location_shadow_len_after_address_max
1471               <= memaddr))
1472         bc_l = bc;
1473       else
1474         bc_r = bc;
1475     }
1476
1477   /* Due to the binary search above, we need to make sure we pick the
1478      first location that's at BC_L's address.  E.g., if there are
1479      multiple locations at the same address, BC_L may end up pointing
1480      at a duplicate location, and miss the "master"/"inserted"
1481      location.  Say, given locations L1, L2 and L3 at addresses A and
1482      B:
1483
1484       L1@A, L2@A, L3@B, ...
1485
1486      BC_L could end up pointing at location L2, while the "master"
1487      location could be L1.  Since the `loc->inserted' flag is only set
1488      on "master" locations, we'd forget to restore the shadow of L1
1489      and L2.  */
1490   while (bc_l > 0
1491          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1492     bc_l--;
1493
1494   /* Now do full processing of the found relevant range of elements.  */
1495
1496   for (bc = bc_l; bc < bp_location_count; bc++)
1497   {
1498     struct bp_location *bl = bp_location[bc];
1499     CORE_ADDR bp_addr = 0;
1500     int bp_size = 0;
1501     int bptoffset = 0;
1502
1503     /* bp_location array has BL->OWNER always non-NULL.  */
1504     if (bl->owner->type == bp_none)
1505       warning (_("reading through apparently deleted breakpoint #%d?"),
1506                bl->owner->number);
1507
1508     /* Performance optimization: any further element can no longer affect BUF
1509        content.  */
1510
1511     if (bl->address >= bp_location_placed_address_before_address_max
1512         && memaddr + len <= (bl->address
1513                              - bp_location_placed_address_before_address_max))
1514       break;
1515
1516     if (!bp_location_has_shadow (bl))
1517       continue;
1518     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1519                                    current_program_space->aspace, 0))
1520       continue;
1521
1522     /* Addresses and length of the part of the breakpoint that
1523        we need to copy.  */
1524     bp_addr = bl->target_info.placed_address;
1525     bp_size = bl->target_info.shadow_len;
1526
1527     if (bp_addr + bp_size <= memaddr)
1528       /* The breakpoint is entirely before the chunk of memory we
1529          are reading.  */
1530       continue;
1531
1532     if (bp_addr >= memaddr + len)
1533       /* The breakpoint is entirely after the chunk of memory we are
1534          reading.  */
1535       continue;
1536
1537     /* Offset within shadow_contents.  */
1538     if (bp_addr < memaddr)
1539       {
1540         /* Only copy the second part of the breakpoint.  */
1541         bp_size -= memaddr - bp_addr;
1542         bptoffset = memaddr - bp_addr;
1543         bp_addr = memaddr;
1544       }
1545
1546     if (bp_addr + bp_size > memaddr + len)
1547       {
1548         /* Only copy the first part of the breakpoint.  */
1549         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1550       }
1551
1552     if (readbuf != NULL)
1553       {
1554         /* Verify that the readbuf buffer does not overlap with
1555            the shadow_contents buffer.  */
1556         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1557                     || readbuf >= (bl->target_info.shadow_contents
1558                                    + bl->target_info.shadow_len));
1559
1560         /* Update the read buffer with this inserted breakpoint's
1561            shadow.  */
1562         memcpy (readbuf + bp_addr - memaddr,
1563                 bl->target_info.shadow_contents + bptoffset, bp_size);
1564       }
1565     else
1566       {
1567         struct gdbarch *gdbarch = bl->gdbarch;
1568         const unsigned char *bp;
1569         CORE_ADDR placed_address = bl->target_info.placed_address;
1570         unsigned placed_size = bl->target_info.placed_size;
1571
1572         /* Update the shadow with what we want to write to memory.  */
1573         memcpy (bl->target_info.shadow_contents + bptoffset,
1574                 writebuf_org + bp_addr - memaddr, bp_size);
1575
1576         /* Determine appropriate breakpoint contents and size for this
1577            address.  */
1578         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1579
1580         /* Update the final write buffer with this inserted
1581            breakpoint's INSN.  */
1582         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1583       }
1584   }
1585 }
1586 \f
1587
1588 /* Return true if BPT is either a software breakpoint or a hardware
1589    breakpoint.  */
1590
1591 int
1592 is_breakpoint (const struct breakpoint *bpt)
1593 {
1594   return (bpt->type == bp_breakpoint
1595           || bpt->type == bp_hardware_breakpoint
1596           || bpt->type == bp_dprintf);
1597 }
1598
1599 /* Return true if BPT is of any hardware watchpoint kind.  */
1600
1601 static int
1602 is_hardware_watchpoint (const struct breakpoint *bpt)
1603 {
1604   return (bpt->type == bp_hardware_watchpoint
1605           || bpt->type == bp_read_watchpoint
1606           || bpt->type == bp_access_watchpoint);
1607 }
1608
1609 /* Return true if BPT is of any watchpoint kind, hardware or
1610    software.  */
1611
1612 int
1613 is_watchpoint (const struct breakpoint *bpt)
1614 {
1615   return (is_hardware_watchpoint (bpt)
1616           || bpt->type == bp_watchpoint);
1617 }
1618
1619 /* Returns true if the current thread and its running state are safe
1620    to evaluate or update watchpoint B.  Watchpoints on local
1621    expressions need to be evaluated in the context of the thread that
1622    was current when the watchpoint was created, and, that thread needs
1623    to be stopped to be able to select the correct frame context.
1624    Watchpoints on global expressions can be evaluated on any thread,
1625    and in any state.  It is presently left to the target allowing
1626    memory accesses when threads are running.  */
1627
1628 static int
1629 watchpoint_in_thread_scope (struct watchpoint *b)
1630 {
1631   return (b->base.pspace == current_program_space
1632           && (ptid_equal (b->watchpoint_thread, null_ptid)
1633               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1634                   && !is_executing (inferior_ptid))));
1635 }
1636
1637 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1638    associated bp_watchpoint_scope breakpoint.  */
1639
1640 static void
1641 watchpoint_del_at_next_stop (struct watchpoint *w)
1642 {
1643   struct breakpoint *b = &w->base;
1644
1645   if (b->related_breakpoint != b)
1646     {
1647       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1648       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1649       b->related_breakpoint->disposition = disp_del_at_next_stop;
1650       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1651       b->related_breakpoint = b;
1652     }
1653   b->disposition = disp_del_at_next_stop;
1654 }
1655
1656 /* Assuming that B is a watchpoint:
1657    - Reparse watchpoint expression, if REPARSE is non-zero
1658    - Evaluate expression and store the result in B->val
1659    - Evaluate the condition if there is one, and store the result
1660      in b->loc->cond.
1661    - Update the list of values that must be watched in B->loc.
1662
1663    If the watchpoint disposition is disp_del_at_next_stop, then do
1664    nothing.  If this is local watchpoint that is out of scope, delete
1665    it.
1666
1667    Even with `set breakpoint always-inserted on' the watchpoints are
1668    removed + inserted on each stop here.  Normal breakpoints must
1669    never be removed because they might be missed by a running thread
1670    when debugging in non-stop mode.  On the other hand, hardware
1671    watchpoints (is_hardware_watchpoint; processed here) are specific
1672    to each LWP since they are stored in each LWP's hardware debug
1673    registers.  Therefore, such LWP must be stopped first in order to
1674    be able to modify its hardware watchpoints.
1675
1676    Hardware watchpoints must be reset exactly once after being
1677    presented to the user.  It cannot be done sooner, because it would
1678    reset the data used to present the watchpoint hit to the user.  And
1679    it must not be done later because it could display the same single
1680    watchpoint hit during multiple GDB stops.  Note that the latter is
1681    relevant only to the hardware watchpoint types bp_read_watchpoint
1682    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1683    not user-visible - its hit is suppressed if the memory content has
1684    not changed.
1685
1686    The following constraints influence the location where we can reset
1687    hardware watchpoints:
1688
1689    * target_stopped_by_watchpoint and target_stopped_data_address are
1690      called several times when GDB stops.
1691
1692    [linux] 
1693    * Multiple hardware watchpoints can be hit at the same time,
1694      causing GDB to stop.  GDB only presents one hardware watchpoint
1695      hit at a time as the reason for stopping, and all the other hits
1696      are presented later, one after the other, each time the user
1697      requests the execution to be resumed.  Execution is not resumed
1698      for the threads still having pending hit event stored in
1699      LWP_INFO->STATUS.  While the watchpoint is already removed from
1700      the inferior on the first stop the thread hit event is kept being
1701      reported from its cached value by linux_nat_stopped_data_address
1702      until the real thread resume happens after the watchpoint gets
1703      presented and thus its LWP_INFO->STATUS gets reset.
1704
1705    Therefore the hardware watchpoint hit can get safely reset on the
1706    watchpoint removal from inferior.  */
1707
1708 static void
1709 update_watchpoint (struct watchpoint *b, int reparse)
1710 {
1711   int within_current_scope;
1712   struct frame_id saved_frame_id;
1713   int frame_saved;
1714
1715   /* If this is a local watchpoint, we only want to check if the
1716      watchpoint frame is in scope if the current thread is the thread
1717      that was used to create the watchpoint.  */
1718   if (!watchpoint_in_thread_scope (b))
1719     return;
1720
1721   if (b->base.disposition == disp_del_at_next_stop)
1722     return;
1723  
1724   frame_saved = 0;
1725
1726   /* Determine if the watchpoint is within scope.  */
1727   if (b->exp_valid_block == NULL)
1728     within_current_scope = 1;
1729   else
1730     {
1731       struct frame_info *fi = get_current_frame ();
1732       struct gdbarch *frame_arch = get_frame_arch (fi);
1733       CORE_ADDR frame_pc = get_frame_pc (fi);
1734
1735       /* If we're in a function epilogue, unwinding may not work
1736          properly, so do not attempt to recreate locations at this
1737          point.  See similar comments in watchpoint_check.  */
1738       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1739         return;
1740
1741       /* Save the current frame's ID so we can restore it after
1742          evaluating the watchpoint expression on its own frame.  */
1743       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1744          took a frame parameter, so that we didn't have to change the
1745          selected frame.  */
1746       frame_saved = 1;
1747       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1748
1749       fi = frame_find_by_id (b->watchpoint_frame);
1750       within_current_scope = (fi != NULL);
1751       if (within_current_scope)
1752         select_frame (fi);
1753     }
1754
1755   /* We don't free locations.  They are stored in the bp_location array
1756      and update_global_location_list will eventually delete them and
1757      remove breakpoints if needed.  */
1758   b->base.loc = NULL;
1759
1760   if (within_current_scope && reparse)
1761     {
1762       char *s;
1763
1764       if (b->exp)
1765         {
1766           xfree (b->exp);
1767           b->exp = NULL;
1768         }
1769       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1770       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1771       /* If the meaning of expression itself changed, the old value is
1772          no longer relevant.  We don't want to report a watchpoint hit
1773          to the user when the old value and the new value may actually
1774          be completely different objects.  */
1775       value_free (b->val);
1776       b->val = NULL;
1777       b->val_valid = 0;
1778
1779       /* Note that unlike with breakpoints, the watchpoint's condition
1780          expression is stored in the breakpoint object, not in the
1781          locations (re)created below.  */
1782       if (b->base.cond_string != NULL)
1783         {
1784           if (b->cond_exp != NULL)
1785             {
1786               xfree (b->cond_exp);
1787               b->cond_exp = NULL;
1788             }
1789
1790           s = b->base.cond_string;
1791           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1792         }
1793     }
1794
1795   /* If we failed to parse the expression, for example because
1796      it refers to a global variable in a not-yet-loaded shared library,
1797      don't try to insert watchpoint.  We don't automatically delete
1798      such watchpoint, though, since failure to parse expression
1799      is different from out-of-scope watchpoint.  */
1800   if ( !target_has_execution)
1801     {
1802       /* Without execution, memory can't change.  No use to try and
1803          set watchpoint locations.  The watchpoint will be reset when
1804          the target gains execution, through breakpoint_re_set.  */
1805     }
1806   else if (within_current_scope && b->exp)
1807     {
1808       int pc = 0;
1809       struct value *val_chain, *v, *result, *next;
1810       struct program_space *frame_pspace;
1811
1812       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1813
1814       /* Avoid setting b->val if it's already set.  The meaning of
1815          b->val is 'the last value' user saw, and we should update
1816          it only if we reported that last value to user.  As it
1817          happens, the code that reports it updates b->val directly.
1818          We don't keep track of the memory value for masked
1819          watchpoints.  */
1820       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1821         {
1822           b->val = v;
1823           b->val_valid = 1;
1824         }
1825
1826       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1827
1828       /* Look at each value on the value chain.  */
1829       for (v = val_chain; v; v = value_next (v))
1830         {
1831           /* If it's a memory location, and GDB actually needed
1832              its contents to evaluate the expression, then we
1833              must watch it.  If the first value returned is
1834              still lazy, that means an error occurred reading it;
1835              watch it anyway in case it becomes readable.  */
1836           if (VALUE_LVAL (v) == lval_memory
1837               && (v == val_chain || ! value_lazy (v)))
1838             {
1839               struct type *vtype = check_typedef (value_type (v));
1840
1841               /* We only watch structs and arrays if user asked
1842                  for it explicitly, never if they just happen to
1843                  appear in the middle of some value chain.  */
1844               if (v == result
1845                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1846                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1847                 {
1848                   CORE_ADDR addr;
1849                   int type;
1850                   struct bp_location *loc, **tmp;
1851
1852                   addr = value_address (v);
1853                   type = hw_write;
1854                   if (b->base.type == bp_read_watchpoint)
1855                     type = hw_read;
1856                   else if (b->base.type == bp_access_watchpoint)
1857                     type = hw_access;
1858
1859                   loc = allocate_bp_location (&b->base);
1860                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1861                     ;
1862                   *tmp = loc;
1863                   loc->gdbarch = get_type_arch (value_type (v));
1864
1865                   loc->pspace = frame_pspace;
1866                   loc->address = addr;
1867                   loc->length = TYPE_LENGTH (value_type (v));
1868                   loc->watchpoint_type = type;
1869                 }
1870             }
1871         }
1872
1873       /* Change the type of breakpoint between hardware assisted or
1874          an ordinary watchpoint depending on the hardware support
1875          and free hardware slots.  REPARSE is set when the inferior
1876          is started.  */
1877       if (reparse)
1878         {
1879           int reg_cnt;
1880           enum bp_loc_type loc_type;
1881           struct bp_location *bl;
1882
1883           reg_cnt = can_use_hardware_watchpoint (val_chain);
1884
1885           if (reg_cnt)
1886             {
1887               int i, target_resources_ok, other_type_used;
1888               enum bptype type;
1889
1890               /* Use an exact watchpoint when there's only one memory region to be
1891                  watched, and only one debug register is needed to watch it.  */
1892               b->exact = target_exact_watchpoints && reg_cnt == 1;
1893
1894               /* We need to determine how many resources are already
1895                  used for all other hardware watchpoints plus this one
1896                  to see if we still have enough resources to also fit
1897                  this watchpoint in as well.  */
1898
1899               /* If this is a software watchpoint, we try to turn it
1900                  to a hardware one -- count resources as if B was of
1901                  hardware watchpoint type.  */
1902               type = b->base.type;
1903               if (type == bp_watchpoint)
1904                 type = bp_hardware_watchpoint;
1905
1906               /* This watchpoint may or may not have been placed on
1907                  the list yet at this point (it won't be in the list
1908                  if we're trying to create it for the first time,
1909                  through watch_command), so always account for it
1910                  manually.  */
1911
1912               /* Count resources used by all watchpoints except B.  */
1913               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1914
1915               /* Add in the resources needed for B.  */
1916               i += hw_watchpoint_use_count (&b->base);
1917
1918               target_resources_ok
1919                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1920               if (target_resources_ok <= 0)
1921                 {
1922                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1923
1924                   if (target_resources_ok == 0 && !sw_mode)
1925                     error (_("Target does not support this type of "
1926                              "hardware watchpoint."));
1927                   else if (target_resources_ok < 0 && !sw_mode)
1928                     error (_("There are not enough available hardware "
1929                              "resources for this watchpoint."));
1930
1931                   /* Downgrade to software watchpoint.  */
1932                   b->base.type = bp_watchpoint;
1933                 }
1934               else
1935                 {
1936                   /* If this was a software watchpoint, we've just
1937                      found we have enough resources to turn it to a
1938                      hardware watchpoint.  Otherwise, this is a
1939                      nop.  */
1940                   b->base.type = type;
1941                 }
1942             }
1943           else if (!b->base.ops->works_in_software_mode (&b->base))
1944             error (_("Expression cannot be implemented with "
1945                      "read/access watchpoint."));
1946           else
1947             b->base.type = bp_watchpoint;
1948
1949           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1950                       : bp_loc_hardware_watchpoint);
1951           for (bl = b->base.loc; bl; bl = bl->next)
1952             bl->loc_type = loc_type;
1953         }
1954
1955       for (v = val_chain; v; v = next)
1956         {
1957           next = value_next (v);
1958           if (v != b->val)
1959             value_free (v);
1960         }
1961
1962       /* If a software watchpoint is not watching any memory, then the
1963          above left it without any location set up.  But,
1964          bpstat_stop_status requires a location to be able to report
1965          stops, so make sure there's at least a dummy one.  */
1966       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1967         {
1968           struct breakpoint *base = &b->base;
1969           base->loc = allocate_bp_location (base);
1970           base->loc->pspace = frame_pspace;
1971           base->loc->address = -1;
1972           base->loc->length = -1;
1973           base->loc->watchpoint_type = -1;
1974         }
1975     }
1976   else if (!within_current_scope)
1977     {
1978       printf_filtered (_("\
1979 Watchpoint %d deleted because the program has left the block\n\
1980 in which its expression is valid.\n"),
1981                        b->base.number);
1982       watchpoint_del_at_next_stop (b);
1983     }
1984
1985   /* Restore the selected frame.  */
1986   if (frame_saved)
1987     select_frame (frame_find_by_id (saved_frame_id));
1988 }
1989
1990
1991 /* Returns 1 iff breakpoint location should be
1992    inserted in the inferior.  We don't differentiate the type of BL's owner
1993    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1994    breakpoint_ops is not defined, because in insert_bp_location,
1995    tracepoint's insert_location will not be called.  */
1996 static int
1997 should_be_inserted (struct bp_location *bl)
1998 {
1999   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2000     return 0;
2001
2002   if (bl->owner->disposition == disp_del_at_next_stop)
2003     return 0;
2004
2005   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2006     return 0;
2007
2008   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2009     return 0;
2010
2011   /* This is set for example, when we're attached to the parent of a
2012      vfork, and have detached from the child.  The child is running
2013      free, and we expect it to do an exec or exit, at which point the
2014      OS makes the parent schedulable again (and the target reports
2015      that the vfork is done).  Until the child is done with the shared
2016      memory region, do not insert breakpoints in the parent, otherwise
2017      the child could still trip on the parent's breakpoints.  Since
2018      the parent is blocked anyway, it won't miss any breakpoint.  */
2019   if (bl->pspace->breakpoints_not_allowed)
2020     return 0;
2021
2022   return 1;
2023 }
2024
2025 /* Same as should_be_inserted but does the check assuming
2026    that the location is not duplicated.  */
2027
2028 static int
2029 unduplicated_should_be_inserted (struct bp_location *bl)
2030 {
2031   int result;
2032   const int save_duplicate = bl->duplicate;
2033
2034   bl->duplicate = 0;
2035   result = should_be_inserted (bl);
2036   bl->duplicate = save_duplicate;
2037   return result;
2038 }
2039
2040 /* Parses a conditional described by an expression COND into an
2041    agent expression bytecode suitable for evaluation
2042    by the bytecode interpreter.  Return NULL if there was
2043    any error during parsing.  */
2044
2045 static struct agent_expr *
2046 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2047 {
2048   struct agent_expr *aexpr = NULL;
2049   struct cleanup *old_chain = NULL;
2050   volatile struct gdb_exception ex;
2051
2052   if (!cond)
2053     return NULL;
2054
2055   /* We don't want to stop processing, so catch any errors
2056      that may show up.  */
2057   TRY_CATCH (ex, RETURN_MASK_ERROR)
2058     {
2059       aexpr = gen_eval_for_expr (scope, cond);
2060     }
2061
2062   if (ex.reason < 0)
2063     {
2064       /* If we got here, it means the condition could not be parsed to a valid
2065          bytecode expression and thus can't be evaluated on the target's side.
2066          It's no use iterating through the conditions.  */
2067       return NULL;
2068     }
2069
2070   /* We have a valid agent expression.  */
2071   return aexpr;
2072 }
2073
2074 /* Based on location BL, create a list of breakpoint conditions to be
2075    passed on to the target.  If we have duplicated locations with different
2076    conditions, we will add such conditions to the list.  The idea is that the
2077    target will evaluate the list of conditions and will only notify GDB when
2078    one of them is true.  */
2079
2080 static void
2081 build_target_condition_list (struct bp_location *bl)
2082 {
2083   struct bp_location **locp = NULL, **loc2p;
2084   int null_condition_or_parse_error = 0;
2085   int modified = bl->needs_update;
2086   struct bp_location *loc;
2087
2088   /* This is only meaningful if the target is
2089      evaluating conditions and if the user has
2090      opted for condition evaluation on the target's
2091      side.  */
2092   if (gdb_evaluates_breakpoint_condition_p ()
2093       || !target_supports_evaluation_of_breakpoint_conditions ())
2094     return;
2095
2096   /* Do a first pass to check for locations with no assigned
2097      conditions or conditions that fail to parse to a valid agent expression
2098      bytecode.  If any of these happen, then it's no use to send conditions
2099      to the target since this location will always trigger and generate a
2100      response back to GDB.  */
2101   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2102     {
2103       loc = (*loc2p);
2104       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2105         {
2106           if (modified)
2107             {
2108               struct agent_expr *aexpr;
2109
2110               /* Re-parse the conditions since something changed.  In that
2111                  case we already freed the condition bytecodes (see
2112                  force_breakpoint_reinsertion).  We just
2113                  need to parse the condition to bytecodes again.  */
2114               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2115               loc->cond_bytecode = aexpr;
2116
2117               /* Check if we managed to parse the conditional expression
2118                  correctly.  If not, we will not send this condition
2119                  to the target.  */
2120               if (aexpr)
2121                 continue;
2122             }
2123
2124           /* If we have a NULL bytecode expression, it means something
2125              went wrong or we have a null condition expression.  */
2126           if (!loc->cond_bytecode)
2127             {
2128               null_condition_or_parse_error = 1;
2129               break;
2130             }
2131         }
2132     }
2133
2134   /* If any of these happened, it means we will have to evaluate the conditions
2135      for the location's address on gdb's side.  It is no use keeping bytecodes
2136      for all the other duplicate locations, thus we free all of them here.
2137
2138      This is so we have a finer control over which locations' conditions are
2139      being evaluated by GDB or the remote stub.  */
2140   if (null_condition_or_parse_error)
2141     {
2142       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2143         {
2144           loc = (*loc2p);
2145           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2146             {
2147               /* Only go as far as the first NULL bytecode is
2148                  located.  */
2149               if (!loc->cond_bytecode)
2150                 return;
2151
2152               free_agent_expr (loc->cond_bytecode);
2153               loc->cond_bytecode = NULL;
2154             }
2155         }
2156     }
2157
2158   /* No NULL conditions or failed bytecode generation.  Build a condition list
2159      for this location's address.  */
2160   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2161     {
2162       loc = (*loc2p);
2163       if (loc->cond
2164           && is_breakpoint (loc->owner)
2165           && loc->pspace->num == bl->pspace->num
2166           && loc->owner->enable_state == bp_enabled
2167           && loc->enabled)
2168         /* Add the condition to the vector.  This will be used later to send the
2169            conditions to the target.  */
2170         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2171                        loc->cond_bytecode);
2172     }
2173
2174   return;
2175 }
2176
2177 /* Parses a command described by string CMD into an agent expression
2178    bytecode suitable for evaluation by the bytecode interpreter.
2179    Return NULL if there was any error during parsing.  */
2180
2181 static struct agent_expr *
2182 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2183 {
2184   struct cleanup *old_cleanups = 0;
2185   struct expression *expr, **argvec;
2186   struct agent_expr *aexpr = NULL;
2187   struct cleanup *old_chain = NULL;
2188   volatile struct gdb_exception ex;
2189   char *cmdrest;
2190   char *format_start, *format_end;
2191   struct format_piece *fpieces;
2192   int nargs;
2193   struct gdbarch *gdbarch = get_current_arch ();
2194
2195   if (!cmd)
2196     return NULL;
2197
2198   cmdrest = cmd;
2199
2200   if (*cmdrest == ',')
2201     ++cmdrest;
2202   cmdrest = skip_spaces (cmdrest);
2203
2204   if (*cmdrest++ != '"')
2205     error (_("No format string following the location"));
2206
2207   format_start = cmdrest;
2208
2209   fpieces = parse_format_string (&cmdrest);
2210
2211   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2212
2213   format_end = cmdrest;
2214
2215   if (*cmdrest++ != '"')
2216     error (_("Bad format string, non-terminated '\"'."));
2217   
2218   cmdrest = skip_spaces (cmdrest);
2219
2220   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2221     error (_("Invalid argument syntax"));
2222
2223   if (*cmdrest == ',')
2224     cmdrest++;
2225   cmdrest = skip_spaces (cmdrest);
2226
2227   /* For each argument, make an expression.  */
2228
2229   argvec = (struct expression **) alloca (strlen (cmd)
2230                                          * sizeof (struct expression *));
2231
2232   nargs = 0;
2233   while (*cmdrest != '\0')
2234     {
2235       char *cmd1;
2236
2237       cmd1 = cmdrest;
2238       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2239       argvec[nargs++] = expr;
2240       cmdrest = cmd1;
2241       if (*cmdrest == ',')
2242         ++cmdrest;
2243     }
2244
2245   /* We don't want to stop processing, so catch any errors
2246      that may show up.  */
2247   TRY_CATCH (ex, RETURN_MASK_ERROR)
2248     {
2249       aexpr = gen_printf (scope, gdbarch, 0, 0,
2250                           format_start, format_end - format_start,
2251                           fpieces, nargs, argvec);
2252     }
2253
2254   if (ex.reason < 0)
2255     {
2256       /* If we got here, it means the command could not be parsed to a valid
2257          bytecode expression and thus can't be evaluated on the target's side.
2258          It's no use iterating through the other commands.  */
2259       return NULL;
2260     }
2261
2262   do_cleanups (old_cleanups);
2263
2264   /* We have a valid agent expression, return it.  */
2265   return aexpr;
2266 }
2267
2268 /* Based on location BL, create a list of breakpoint commands to be
2269    passed on to the target.  If we have duplicated locations with
2270    different commands, we will add any such to the list.  */
2271
2272 static void
2273 build_target_command_list (struct bp_location *bl)
2274 {
2275   struct bp_location **locp = NULL, **loc2p;
2276   int null_command_or_parse_error = 0;
2277   int modified = bl->needs_update;
2278   struct bp_location *loc;
2279
2280   /* For now, limit to agent-style dprintf breakpoints.  */
2281   if (bl->owner->type != bp_dprintf
2282       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2283     return;
2284
2285   if (!target_can_run_breakpoint_commands ())
2286     return;
2287
2288   /* Do a first pass to check for locations with no assigned
2289      conditions or conditions that fail to parse to a valid agent expression
2290      bytecode.  If any of these happen, then it's no use to send conditions
2291      to the target since this location will always trigger and generate a
2292      response back to GDB.  */
2293   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2294     {
2295       loc = (*loc2p);
2296       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2297         {
2298           if (modified)
2299             {
2300               struct agent_expr *aexpr;
2301
2302               /* Re-parse the commands since something changed.  In that
2303                  case we already freed the command bytecodes (see
2304                  force_breakpoint_reinsertion).  We just
2305                  need to parse the command to bytecodes again.  */
2306               aexpr = parse_cmd_to_aexpr (bl->address,
2307                                           loc->owner->extra_string);
2308               loc->cmd_bytecode = aexpr;
2309
2310               if (!aexpr)
2311                 continue;
2312             }
2313
2314           /* If we have a NULL bytecode expression, it means something
2315              went wrong or we have a null command expression.  */
2316           if (!loc->cmd_bytecode)
2317             {
2318               null_command_or_parse_error = 1;
2319               break;
2320             }
2321         }
2322     }
2323
2324   /* If anything failed, then we're not doing target-side commands,
2325      and so clean up.  */
2326   if (null_command_or_parse_error)
2327     {
2328       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2329         {
2330           loc = (*loc2p);
2331           if (is_breakpoint (loc->owner)
2332               && loc->pspace->num == bl->pspace->num)
2333             {
2334               /* Only go as far as the first NULL bytecode is
2335                  located.  */
2336               if (!loc->cond_bytecode)
2337                 return;
2338
2339               free_agent_expr (loc->cond_bytecode);
2340               loc->cond_bytecode = NULL;
2341             }
2342         }
2343     }
2344
2345   /* No NULL commands or failed bytecode generation.  Build a command list
2346      for this location's address.  */
2347   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2348     {
2349       loc = (*loc2p);
2350       if (loc->owner->extra_string
2351           && is_breakpoint (loc->owner)
2352           && loc->pspace->num == bl->pspace->num
2353           && loc->owner->enable_state == bp_enabled
2354           && loc->enabled)
2355         /* Add the command to the vector.  This will be used later
2356            to send the commands to the target.  */
2357         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2358                        loc->cmd_bytecode);
2359     }
2360
2361   bl->target_info.persist = 0;
2362   /* Maybe flag this location as persistent.  */
2363   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2364     bl->target_info.persist = 1;
2365 }
2366
2367 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2368    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2369    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2370    Returns 0 for success, 1 if the bp_location type is not supported or
2371    -1 for failure.
2372
2373    NOTE drow/2003-09-09: This routine could be broken down to an
2374    object-style method for each breakpoint or catchpoint type.  */
2375 static int
2376 insert_bp_location (struct bp_location *bl,
2377                     struct ui_file *tmp_error_stream,
2378                     int *disabled_breaks,
2379                     int *hw_breakpoint_error,
2380                     int *hw_bp_error_explained_already)
2381 {
2382   int val = 0;
2383   char *hw_bp_err_string = NULL;
2384   struct gdb_exception e;
2385
2386   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2387     return 0;
2388
2389   /* Note we don't initialize bl->target_info, as that wipes out
2390      the breakpoint location's shadow_contents if the breakpoint
2391      is still inserted at that location.  This in turn breaks
2392      target_read_memory which depends on these buffers when
2393      a memory read is requested at the breakpoint location:
2394      Once the target_info has been wiped, we fail to see that
2395      we have a breakpoint inserted at that address and thus
2396      read the breakpoint instead of returning the data saved in
2397      the breakpoint location's shadow contents.  */
2398   bl->target_info.placed_address = bl->address;
2399   bl->target_info.placed_address_space = bl->pspace->aspace;
2400   bl->target_info.length = bl->length;
2401
2402   /* When working with target-side conditions, we must pass all the conditions
2403      for the same breakpoint address down to the target since GDB will not
2404      insert those locations.  With a list of breakpoint conditions, the target
2405      can decide when to stop and notify GDB.  */
2406
2407   if (is_breakpoint (bl->owner))
2408     {
2409       build_target_condition_list (bl);
2410       build_target_command_list (bl);
2411       /* Reset the modification marker.  */
2412       bl->needs_update = 0;
2413     }
2414
2415   if (bl->loc_type == bp_loc_software_breakpoint
2416       || bl->loc_type == bp_loc_hardware_breakpoint)
2417     {
2418       if (bl->owner->type != bp_hardware_breakpoint)
2419         {
2420           /* If the explicitly specified breakpoint type
2421              is not hardware breakpoint, check the memory map to see
2422              if the breakpoint address is in read only memory or not.
2423
2424              Two important cases are:
2425              - location type is not hardware breakpoint, memory
2426              is readonly.  We change the type of the location to
2427              hardware breakpoint.
2428              - location type is hardware breakpoint, memory is
2429              read-write.  This means we've previously made the
2430              location hardware one, but then the memory map changed,
2431              so we undo.
2432              
2433              When breakpoints are removed, remove_breakpoints will use
2434              location types we've just set here, the only possible
2435              problem is that memory map has changed during running
2436              program, but it's not going to work anyway with current
2437              gdb.  */
2438           struct mem_region *mr 
2439             = lookup_mem_region (bl->target_info.placed_address);
2440           
2441           if (mr)
2442             {
2443               if (automatic_hardware_breakpoints)
2444                 {
2445                   enum bp_loc_type new_type;
2446                   
2447                   if (mr->attrib.mode != MEM_RW)
2448                     new_type = bp_loc_hardware_breakpoint;
2449                   else 
2450                     new_type = bp_loc_software_breakpoint;
2451                   
2452                   if (new_type != bl->loc_type)
2453                     {
2454                       static int said = 0;
2455
2456                       bl->loc_type = new_type;
2457                       if (!said)
2458                         {
2459                           fprintf_filtered (gdb_stdout,
2460                                             _("Note: automatically using "
2461                                               "hardware breakpoints for "
2462                                               "read-only addresses.\n"));
2463                           said = 1;
2464                         }
2465                     }
2466                 }
2467               else if (bl->loc_type == bp_loc_software_breakpoint
2468                        && mr->attrib.mode != MEM_RW)        
2469                 warning (_("cannot set software breakpoint "
2470                            "at readonly address %s"),
2471                          paddress (bl->gdbarch, bl->address));
2472             }
2473         }
2474         
2475       /* First check to see if we have to handle an overlay.  */
2476       if (overlay_debugging == ovly_off
2477           || bl->section == NULL
2478           || !(section_is_overlay (bl->section)))
2479         {
2480           /* No overlay handling: just set the breakpoint.  */
2481           TRY_CATCH (e, RETURN_MASK_ALL)
2482             {
2483               val = bl->owner->ops->insert_location (bl);
2484             }
2485           if (e.reason < 0)
2486             {
2487               val = 1;
2488               hw_bp_err_string = (char *) e.message;
2489             }
2490         }
2491       else
2492         {
2493           /* This breakpoint is in an overlay section.
2494              Shall we set a breakpoint at the LMA?  */
2495           if (!overlay_events_enabled)
2496             {
2497               /* Yes -- overlay event support is not active, 
2498                  so we must try to set a breakpoint at the LMA.
2499                  This will not work for a hardware breakpoint.  */
2500               if (bl->loc_type == bp_loc_hardware_breakpoint)
2501                 warning (_("hardware breakpoint %d not supported in overlay!"),
2502                          bl->owner->number);
2503               else
2504                 {
2505                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2506                                                              bl->section);
2507                   /* Set a software (trap) breakpoint at the LMA.  */
2508                   bl->overlay_target_info = bl->target_info;
2509                   bl->overlay_target_info.placed_address = addr;
2510                   val = target_insert_breakpoint (bl->gdbarch,
2511                                                   &bl->overlay_target_info);
2512                   if (val != 0)
2513                     fprintf_unfiltered (tmp_error_stream,
2514                                         "Overlay breakpoint %d "
2515                                         "failed: in ROM?\n",
2516                                         bl->owner->number);
2517                 }
2518             }
2519           /* Shall we set a breakpoint at the VMA? */
2520           if (section_is_mapped (bl->section))
2521             {
2522               /* Yes.  This overlay section is mapped into memory.  */
2523               TRY_CATCH (e, RETURN_MASK_ALL)
2524                 {
2525                   val = bl->owner->ops->insert_location (bl);
2526                 }
2527               if (e.reason < 0)
2528                 {
2529                   val = 1;
2530                   hw_bp_err_string = (char *) e.message;
2531                 }
2532             }
2533           else
2534             {
2535               /* No.  This breakpoint will not be inserted.  
2536                  No error, but do not mark the bp as 'inserted'.  */
2537               return 0;
2538             }
2539         }
2540
2541       if (val)
2542         {
2543           /* Can't set the breakpoint.  */
2544           if (solib_name_from_address (bl->pspace, bl->address))
2545             {
2546               /* See also: disable_breakpoints_in_shlibs.  */
2547               val = 0;
2548               bl->shlib_disabled = 1;
2549               observer_notify_breakpoint_modified (bl->owner);
2550               if (!*disabled_breaks)
2551                 {
2552                   fprintf_unfiltered (tmp_error_stream, 
2553                                       "Cannot insert breakpoint %d.\n", 
2554                                       bl->owner->number);
2555                   fprintf_unfiltered (tmp_error_stream, 
2556                                       "Temporarily disabling shared "
2557                                       "library breakpoints:\n");
2558                 }
2559               *disabled_breaks = 1;
2560               fprintf_unfiltered (tmp_error_stream,
2561                                   "breakpoint #%d\n", bl->owner->number);
2562             }
2563           else
2564             {
2565               if (bl->loc_type == bp_loc_hardware_breakpoint)
2566                 {
2567                   *hw_breakpoint_error = 1;
2568                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2569                   fprintf_unfiltered (tmp_error_stream,
2570                                       "Cannot insert hardware breakpoint %d%s",
2571                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2572                   if (hw_bp_err_string)
2573                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2574                 }
2575               else
2576                 {
2577                   fprintf_unfiltered (tmp_error_stream, 
2578                                       "Cannot insert breakpoint %d.\n", 
2579                                       bl->owner->number);
2580                   fprintf_filtered (tmp_error_stream, 
2581                                     "Error accessing memory address ");
2582                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2583                                   tmp_error_stream);
2584                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2585                                     safe_strerror (val));
2586                 }
2587
2588             }
2589         }
2590       else
2591         bl->inserted = 1;
2592
2593       return val;
2594     }
2595
2596   else if (bl->loc_type == bp_loc_hardware_watchpoint
2597            /* NOTE drow/2003-09-08: This state only exists for removing
2598               watchpoints.  It's not clear that it's necessary...  */
2599            && bl->owner->disposition != disp_del_at_next_stop)
2600     {
2601       gdb_assert (bl->owner->ops != NULL
2602                   && bl->owner->ops->insert_location != NULL);
2603
2604       val = bl->owner->ops->insert_location (bl);
2605
2606       /* If trying to set a read-watchpoint, and it turns out it's not
2607          supported, try emulating one with an access watchpoint.  */
2608       if (val == 1 && bl->watchpoint_type == hw_read)
2609         {
2610           struct bp_location *loc, **loc_temp;
2611
2612           /* But don't try to insert it, if there's already another
2613              hw_access location that would be considered a duplicate
2614              of this one.  */
2615           ALL_BP_LOCATIONS (loc, loc_temp)
2616             if (loc != bl
2617                 && loc->watchpoint_type == hw_access
2618                 && watchpoint_locations_match (bl, loc))
2619               {
2620                 bl->duplicate = 1;
2621                 bl->inserted = 1;
2622                 bl->target_info = loc->target_info;
2623                 bl->watchpoint_type = hw_access;
2624                 val = 0;
2625                 break;
2626               }
2627
2628           if (val == 1)
2629             {
2630               bl->watchpoint_type = hw_access;
2631               val = bl->owner->ops->insert_location (bl);
2632
2633               if (val)
2634                 /* Back to the original value.  */
2635                 bl->watchpoint_type = hw_read;
2636             }
2637         }
2638
2639       bl->inserted = (val == 0);
2640     }
2641
2642   else if (bl->owner->type == bp_catchpoint)
2643     {
2644       gdb_assert (bl->owner->ops != NULL
2645                   && bl->owner->ops->insert_location != NULL);
2646
2647       val = bl->owner->ops->insert_location (bl);
2648       if (val)
2649         {
2650           bl->owner->enable_state = bp_disabled;
2651
2652           if (val == 1)
2653             warning (_("\
2654 Error inserting catchpoint %d: Your system does not support this type\n\
2655 of catchpoint."), bl->owner->number);
2656           else
2657             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2658         }
2659
2660       bl->inserted = (val == 0);
2661
2662       /* We've already printed an error message if there was a problem
2663          inserting this catchpoint, and we've disabled the catchpoint,
2664          so just return success.  */
2665       return 0;
2666     }
2667
2668   return 0;
2669 }
2670
2671 /* This function is called when program space PSPACE is about to be
2672    deleted.  It takes care of updating breakpoints to not reference
2673    PSPACE anymore.  */
2674
2675 void
2676 breakpoint_program_space_exit (struct program_space *pspace)
2677 {
2678   struct breakpoint *b, *b_temp;
2679   struct bp_location *loc, **loc_temp;
2680
2681   /* Remove any breakpoint that was set through this program space.  */
2682   ALL_BREAKPOINTS_SAFE (b, b_temp)
2683     {
2684       if (b->pspace == pspace)
2685         delete_breakpoint (b);
2686     }
2687
2688   /* Breakpoints set through other program spaces could have locations
2689      bound to PSPACE as well.  Remove those.  */
2690   ALL_BP_LOCATIONS (loc, loc_temp)
2691     {
2692       struct bp_location *tmp;
2693
2694       if (loc->pspace == pspace)
2695         {
2696           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2697           if (loc->owner->loc == loc)
2698             loc->owner->loc = loc->next;
2699           else
2700             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2701               if (tmp->next == loc)
2702                 {
2703                   tmp->next = loc->next;
2704                   break;
2705                 }
2706         }
2707     }
2708
2709   /* Now update the global location list to permanently delete the
2710      removed locations above.  */
2711   update_global_location_list (0);
2712 }
2713
2714 /* Make sure all breakpoints are inserted in inferior.
2715    Throws exception on any error.
2716    A breakpoint that is already inserted won't be inserted
2717    again, so calling this function twice is safe.  */
2718 void
2719 insert_breakpoints (void)
2720 {
2721   struct breakpoint *bpt;
2722
2723   ALL_BREAKPOINTS (bpt)
2724     if (is_hardware_watchpoint (bpt))
2725       {
2726         struct watchpoint *w = (struct watchpoint *) bpt;
2727
2728         update_watchpoint (w, 0 /* don't reparse.  */);
2729       }
2730
2731   update_global_location_list (1);
2732
2733   /* update_global_location_list does not insert breakpoints when
2734      always_inserted_mode is not enabled.  Explicitly insert them
2735      now.  */
2736   if (!breakpoints_always_inserted_mode ())
2737     insert_breakpoint_locations ();
2738 }
2739
2740 /* Invoke CALLBACK for each of bp_location.  */
2741
2742 void
2743 iterate_over_bp_locations (walk_bp_location_callback callback)
2744 {
2745   struct bp_location *loc, **loc_tmp;
2746
2747   ALL_BP_LOCATIONS (loc, loc_tmp)
2748     {
2749       callback (loc, NULL);
2750     }
2751 }
2752
2753 /* This is used when we need to synch breakpoint conditions between GDB and the
2754    target.  It is the case with deleting and disabling of breakpoints when using
2755    always-inserted mode.  */
2756
2757 static void
2758 update_inserted_breakpoint_locations (void)
2759 {
2760   struct bp_location *bl, **blp_tmp;
2761   int error_flag = 0;
2762   int val = 0;
2763   int disabled_breaks = 0;
2764   int hw_breakpoint_error = 0;
2765   int hw_bp_details_reported = 0;
2766
2767   struct ui_file *tmp_error_stream = mem_fileopen ();
2768   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2769
2770   /* Explicitly mark the warning -- this will only be printed if
2771      there was an error.  */
2772   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2773
2774   save_current_space_and_thread ();
2775
2776   ALL_BP_LOCATIONS (bl, blp_tmp)
2777     {
2778       /* We only want to update software breakpoints and hardware
2779          breakpoints.  */
2780       if (!is_breakpoint (bl->owner))
2781         continue;
2782
2783       /* We only want to update locations that are already inserted
2784          and need updating.  This is to avoid unwanted insertion during
2785          deletion of breakpoints.  */
2786       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2787         continue;
2788
2789       switch_to_program_space_and_thread (bl->pspace);
2790
2791       /* For targets that support global breakpoints, there's no need
2792          to select an inferior to insert breakpoint to.  In fact, even
2793          if we aren't attached to any process yet, we should still
2794          insert breakpoints.  */
2795       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2796           && ptid_equal (inferior_ptid, null_ptid))
2797         continue;
2798
2799       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2800                                     &hw_breakpoint_error, &hw_bp_details_reported);
2801       if (val)
2802         error_flag = val;
2803     }
2804
2805   if (error_flag)
2806     {
2807       target_terminal_ours_for_output ();
2808       error_stream (tmp_error_stream);
2809     }
2810
2811   do_cleanups (cleanups);
2812 }
2813
2814 /* Used when starting or continuing the program.  */
2815
2816 static void
2817 insert_breakpoint_locations (void)
2818 {
2819   struct breakpoint *bpt;
2820   struct bp_location *bl, **blp_tmp;
2821   int error_flag = 0;
2822   int val = 0;
2823   int disabled_breaks = 0;
2824   int hw_breakpoint_error = 0;
2825   int hw_bp_error_explained_already = 0;
2826
2827   struct ui_file *tmp_error_stream = mem_fileopen ();
2828   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2829   
2830   /* Explicitly mark the warning -- this will only be printed if
2831      there was an error.  */
2832   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2833
2834   save_current_space_and_thread ();
2835
2836   ALL_BP_LOCATIONS (bl, blp_tmp)
2837     {
2838       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2839         continue;
2840
2841       /* There is no point inserting thread-specific breakpoints if
2842          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2843          has BL->OWNER always non-NULL.  */
2844       if (bl->owner->thread != -1
2845           && !valid_thread_id (bl->owner->thread))
2846         continue;
2847
2848       switch_to_program_space_and_thread (bl->pspace);
2849
2850       /* For targets that support global breakpoints, there's no need
2851          to select an inferior to insert breakpoint to.  In fact, even
2852          if we aren't attached to any process yet, we should still
2853          insert breakpoints.  */
2854       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2855           && ptid_equal (inferior_ptid, null_ptid))
2856         continue;
2857
2858       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2859                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2860       if (val)
2861         error_flag = val;
2862     }
2863
2864   /* If we failed to insert all locations of a watchpoint, remove
2865      them, as half-inserted watchpoint is of limited use.  */
2866   ALL_BREAKPOINTS (bpt)  
2867     {
2868       int some_failed = 0;
2869       struct bp_location *loc;
2870
2871       if (!is_hardware_watchpoint (bpt))
2872         continue;
2873
2874       if (!breakpoint_enabled (bpt))
2875         continue;
2876
2877       if (bpt->disposition == disp_del_at_next_stop)
2878         continue;
2879       
2880       for (loc = bpt->loc; loc; loc = loc->next)
2881         if (!loc->inserted && should_be_inserted (loc))
2882           {
2883             some_failed = 1;
2884             break;
2885           }
2886       if (some_failed)
2887         {
2888           for (loc = bpt->loc; loc; loc = loc->next)
2889             if (loc->inserted)
2890               remove_breakpoint (loc, mark_uninserted);
2891
2892           hw_breakpoint_error = 1;
2893           fprintf_unfiltered (tmp_error_stream,
2894                               "Could not insert hardware watchpoint %d.\n", 
2895                               bpt->number);
2896           error_flag = -1;
2897         }
2898     }
2899
2900   if (error_flag)
2901     {
2902       /* If a hardware breakpoint or watchpoint was inserted, add a
2903          message about possibly exhausted resources.  */
2904       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2905         {
2906           fprintf_unfiltered (tmp_error_stream, 
2907                               "Could not insert hardware breakpoints:\n\
2908 You may have requested too many hardware breakpoints/watchpoints.\n");
2909         }
2910       target_terminal_ours_for_output ();
2911       error_stream (tmp_error_stream);
2912     }
2913
2914   do_cleanups (cleanups);
2915 }
2916
2917 /* Used when the program stops.
2918    Returns zero if successful, or non-zero if there was a problem
2919    removing a breakpoint location.  */
2920
2921 int
2922 remove_breakpoints (void)
2923 {
2924   struct bp_location *bl, **blp_tmp;
2925   int val = 0;
2926
2927   ALL_BP_LOCATIONS (bl, blp_tmp)
2928   {
2929     if (bl->inserted && !is_tracepoint (bl->owner))
2930       val |= remove_breakpoint (bl, mark_uninserted);
2931   }
2932   return val;
2933 }
2934
2935 /* Remove breakpoints of process PID.  */
2936
2937 int
2938 remove_breakpoints_pid (int pid)
2939 {
2940   struct bp_location *bl, **blp_tmp;
2941   int val;
2942   struct inferior *inf = find_inferior_pid (pid);
2943
2944   ALL_BP_LOCATIONS (bl, blp_tmp)
2945   {
2946     if (bl->pspace != inf->pspace)
2947       continue;
2948
2949     if (bl->owner->type == bp_dprintf)
2950       continue;
2951
2952     if (bl->inserted)
2953       {
2954         val = remove_breakpoint (bl, mark_uninserted);
2955         if (val != 0)
2956           return val;
2957       }
2958   }
2959   return 0;
2960 }
2961
2962 int
2963 reattach_breakpoints (int pid)
2964 {
2965   struct cleanup *old_chain;
2966   struct bp_location *bl, **blp_tmp;
2967   int val;
2968   struct ui_file *tmp_error_stream;
2969   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2970   struct inferior *inf;
2971   struct thread_info *tp;
2972
2973   tp = any_live_thread_of_process (pid);
2974   if (tp == NULL)
2975     return 1;
2976
2977   inf = find_inferior_pid (pid);
2978   old_chain = save_inferior_ptid ();
2979
2980   inferior_ptid = tp->ptid;
2981
2982   tmp_error_stream = mem_fileopen ();
2983   make_cleanup_ui_file_delete (tmp_error_stream);
2984
2985   ALL_BP_LOCATIONS (bl, blp_tmp)
2986   {
2987     if (bl->pspace != inf->pspace)
2988       continue;
2989
2990     if (bl->inserted)
2991       {
2992         bl->inserted = 0;
2993         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2994         if (val != 0)
2995           {
2996             do_cleanups (old_chain);
2997             return val;
2998           }
2999       }
3000   }
3001   do_cleanups (old_chain);
3002   return 0;
3003 }
3004
3005 static int internal_breakpoint_number = -1;
3006
3007 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3008    If INTERNAL is non-zero, the breakpoint number will be populated
3009    from internal_breakpoint_number and that variable decremented.
3010    Otherwise the breakpoint number will be populated from
3011    breakpoint_count and that value incremented.  Internal breakpoints
3012    do not set the internal var bpnum.  */
3013 static void
3014 set_breakpoint_number (int internal, struct breakpoint *b)
3015 {
3016   if (internal)
3017     b->number = internal_breakpoint_number--;
3018   else
3019     {
3020       set_breakpoint_count (breakpoint_count + 1);
3021       b->number = breakpoint_count;
3022     }
3023 }
3024
3025 static struct breakpoint *
3026 create_internal_breakpoint (struct gdbarch *gdbarch,
3027                             CORE_ADDR address, enum bptype type,
3028                             const struct breakpoint_ops *ops)
3029 {
3030   struct symtab_and_line sal;
3031   struct breakpoint *b;
3032
3033   init_sal (&sal);              /* Initialize to zeroes.  */
3034
3035   sal.pc = address;
3036   sal.section = find_pc_overlay (sal.pc);
3037   sal.pspace = current_program_space;
3038
3039   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3040   b->number = internal_breakpoint_number--;
3041   b->disposition = disp_donttouch;
3042
3043   return b;
3044 }
3045
3046 static const char *const longjmp_names[] =
3047   {
3048     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3049   };
3050 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3051
3052 /* Per-objfile data private to breakpoint.c.  */
3053 struct breakpoint_objfile_data
3054 {
3055   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3056   struct minimal_symbol *overlay_msym;
3057
3058   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3059   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3060
3061   /* True if we have looked for longjmp probes.  */
3062   int longjmp_searched;
3063
3064   /* SystemTap probe points for longjmp (if any).  */
3065   VEC (probe_p) *longjmp_probes;
3066
3067   /* Minimal symbol for "std::terminate()" (if any).  */
3068   struct minimal_symbol *terminate_msym;
3069
3070   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3071   struct minimal_symbol *exception_msym;
3072
3073   /* True if we have looked for exception probes.  */
3074   int exception_searched;
3075
3076   /* SystemTap probe points for unwinding (if any).  */
3077   VEC (probe_p) *exception_probes;
3078 };
3079
3080 static const struct objfile_data *breakpoint_objfile_key;
3081
3082 /* Minimal symbol not found sentinel.  */
3083 static struct minimal_symbol msym_not_found;
3084
3085 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3086
3087 static int
3088 msym_not_found_p (const struct minimal_symbol *msym)
3089 {
3090   return msym == &msym_not_found;
3091 }
3092
3093 /* Return per-objfile data needed by breakpoint.c.
3094    Allocate the data if necessary.  */
3095
3096 static struct breakpoint_objfile_data *
3097 get_breakpoint_objfile_data (struct objfile *objfile)
3098 {
3099   struct breakpoint_objfile_data *bp_objfile_data;
3100
3101   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3102   if (bp_objfile_data == NULL)
3103     {
3104       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3105                                        sizeof (*bp_objfile_data));
3106
3107       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3108       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3109     }
3110   return bp_objfile_data;
3111 }
3112
3113 static void
3114 free_breakpoint_probes (struct objfile *obj, void *data)
3115 {
3116   struct breakpoint_objfile_data *bp_objfile_data = data;
3117
3118   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3119   VEC_free (probe_p, bp_objfile_data->exception_probes);
3120 }
3121
3122 static void
3123 create_overlay_event_breakpoint (void)
3124 {
3125   struct objfile *objfile;
3126   const char *const func_name = "_ovly_debug_event";
3127
3128   ALL_OBJFILES (objfile)
3129     {
3130       struct breakpoint *b;
3131       struct breakpoint_objfile_data *bp_objfile_data;
3132       CORE_ADDR addr;
3133
3134       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3135
3136       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3137         continue;
3138
3139       if (bp_objfile_data->overlay_msym == NULL)
3140         {
3141           struct minimal_symbol *m;
3142
3143           m = lookup_minimal_symbol_text (func_name, objfile);
3144           if (m == NULL)
3145             {
3146               /* Avoid future lookups in this objfile.  */
3147               bp_objfile_data->overlay_msym = &msym_not_found;
3148               continue;
3149             }
3150           bp_objfile_data->overlay_msym = m;
3151         }
3152
3153       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3154       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3155                                       bp_overlay_event,
3156                                       &internal_breakpoint_ops);
3157       b->addr_string = xstrdup (func_name);
3158
3159       if (overlay_debugging == ovly_auto)
3160         {
3161           b->enable_state = bp_enabled;
3162           overlay_events_enabled = 1;
3163         }
3164       else
3165        {
3166          b->enable_state = bp_disabled;
3167          overlay_events_enabled = 0;
3168        }
3169     }
3170   update_global_location_list (1);
3171 }
3172
3173 static void
3174 create_longjmp_master_breakpoint (void)
3175 {
3176   struct program_space *pspace;
3177   struct cleanup *old_chain;
3178
3179   old_chain = save_current_program_space ();
3180
3181   ALL_PSPACES (pspace)
3182   {
3183     struct objfile *objfile;
3184
3185     set_current_program_space (pspace);
3186
3187     ALL_OBJFILES (objfile)
3188     {
3189       int i;
3190       struct gdbarch *gdbarch;
3191       struct breakpoint_objfile_data *bp_objfile_data;
3192
3193       gdbarch = get_objfile_arch (objfile);
3194       if (!gdbarch_get_longjmp_target_p (gdbarch))
3195         continue;
3196
3197       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3198
3199       if (!bp_objfile_data->longjmp_searched)
3200         {
3201           bp_objfile_data->longjmp_probes
3202             = find_probes_in_objfile (objfile, "libc", "longjmp");
3203           bp_objfile_data->longjmp_searched = 1;
3204         }
3205
3206       if (bp_objfile_data->longjmp_probes != NULL)
3207         {
3208           int i;
3209           struct probe *probe;
3210           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3211
3212           for (i = 0;
3213                VEC_iterate (probe_p,
3214                             bp_objfile_data->longjmp_probes,
3215                             i, probe);
3216                ++i)
3217             {
3218               struct breakpoint *b;
3219
3220               b = create_internal_breakpoint (gdbarch, probe->address,
3221                                               bp_longjmp_master,
3222                                               &internal_breakpoint_ops);
3223               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3224               b->enable_state = bp_disabled;
3225             }
3226
3227           continue;
3228         }
3229
3230       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3231         {
3232           struct breakpoint *b;
3233           const char *func_name;
3234           CORE_ADDR addr;
3235
3236           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3237             continue;
3238
3239           func_name = longjmp_names[i];
3240           if (bp_objfile_data->longjmp_msym[i] == NULL)
3241             {
3242               struct minimal_symbol *m;
3243
3244               m = lookup_minimal_symbol_text (func_name, objfile);
3245               if (m == NULL)
3246                 {
3247                   /* Prevent future lookups in this objfile.  */
3248                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3249                   continue;
3250                 }
3251               bp_objfile_data->longjmp_msym[i] = m;
3252             }
3253
3254           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3255           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3256                                           &internal_breakpoint_ops);
3257           b->addr_string = xstrdup (func_name);
3258           b->enable_state = bp_disabled;
3259         }
3260     }
3261   }
3262   update_global_location_list (1);
3263
3264   do_cleanups (old_chain);
3265 }
3266
3267 /* Create a master std::terminate breakpoint.  */
3268 static void
3269 create_std_terminate_master_breakpoint (void)
3270 {
3271   struct program_space *pspace;
3272   struct cleanup *old_chain;
3273   const char *const func_name = "std::terminate()";
3274
3275   old_chain = save_current_program_space ();
3276
3277   ALL_PSPACES (pspace)
3278   {
3279     struct objfile *objfile;
3280     CORE_ADDR addr;
3281
3282     set_current_program_space (pspace);
3283
3284     ALL_OBJFILES (objfile)
3285     {
3286       struct breakpoint *b;
3287       struct breakpoint_objfile_data *bp_objfile_data;
3288
3289       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3290
3291       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3292         continue;
3293
3294       if (bp_objfile_data->terminate_msym == NULL)
3295         {
3296           struct minimal_symbol *m;
3297
3298           m = lookup_minimal_symbol (func_name, NULL, objfile);
3299           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3300                             && MSYMBOL_TYPE (m) != mst_file_text))
3301             {
3302               /* Prevent future lookups in this objfile.  */
3303               bp_objfile_data->terminate_msym = &msym_not_found;
3304               continue;
3305             }
3306           bp_objfile_data->terminate_msym = m;
3307         }
3308
3309       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3310       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3311                                       bp_std_terminate_master,
3312                                       &internal_breakpoint_ops);
3313       b->addr_string = xstrdup (func_name);
3314       b->enable_state = bp_disabled;
3315     }
3316   }
3317
3318   update_global_location_list (1);
3319
3320   do_cleanups (old_chain);
3321 }
3322
3323 /* Install a master breakpoint on the unwinder's debug hook.  */
3324
3325 static void
3326 create_exception_master_breakpoint (void)
3327 {
3328   struct objfile *objfile;
3329   const char *const func_name = "_Unwind_DebugHook";
3330
3331   ALL_OBJFILES (objfile)
3332     {
3333       struct breakpoint *b;
3334       struct gdbarch *gdbarch;
3335       struct breakpoint_objfile_data *bp_objfile_data;
3336       CORE_ADDR addr;
3337
3338       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3339
3340       /* We prefer the SystemTap probe point if it exists.  */
3341       if (!bp_objfile_data->exception_searched)
3342         {
3343           bp_objfile_data->exception_probes
3344             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3345           bp_objfile_data->exception_searched = 1;
3346         }
3347
3348       if (bp_objfile_data->exception_probes != NULL)
3349         {
3350           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3351           int i;
3352           struct probe *probe;
3353
3354           for (i = 0;
3355                VEC_iterate (probe_p,
3356                             bp_objfile_data->exception_probes,
3357                             i, probe);
3358                ++i)
3359             {
3360               struct breakpoint *b;
3361
3362               b = create_internal_breakpoint (gdbarch, probe->address,
3363                                               bp_exception_master,
3364                                               &internal_breakpoint_ops);
3365               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3366               b->enable_state = bp_disabled;
3367             }
3368
3369           continue;
3370         }
3371
3372       /* Otherwise, try the hook function.  */
3373
3374       if (msym_not_found_p (bp_objfile_data->exception_msym))
3375         continue;
3376
3377       gdbarch = get_objfile_arch (objfile);
3378
3379       if (bp_objfile_data->exception_msym == NULL)
3380         {
3381           struct minimal_symbol *debug_hook;
3382
3383           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3384           if (debug_hook == NULL)
3385             {
3386               bp_objfile_data->exception_msym = &msym_not_found;
3387               continue;
3388             }
3389
3390           bp_objfile_data->exception_msym = debug_hook;
3391         }
3392
3393       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3394       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3395                                                  &current_target);
3396       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3397                                       &internal_breakpoint_ops);
3398       b->addr_string = xstrdup (func_name);
3399       b->enable_state = bp_disabled;
3400     }
3401
3402   update_global_location_list (1);
3403 }
3404
3405 void
3406 update_breakpoints_after_exec (void)
3407 {
3408   struct breakpoint *b, *b_tmp;
3409   struct bp_location *bploc, **bplocp_tmp;
3410
3411   /* We're about to delete breakpoints from GDB's lists.  If the
3412      INSERTED flag is true, GDB will try to lift the breakpoints by
3413      writing the breakpoints' "shadow contents" back into memory.  The
3414      "shadow contents" are NOT valid after an exec, so GDB should not
3415      do that.  Instead, the target is responsible from marking
3416      breakpoints out as soon as it detects an exec.  We don't do that
3417      here instead, because there may be other attempts to delete
3418      breakpoints after detecting an exec and before reaching here.  */
3419   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3420     if (bploc->pspace == current_program_space)
3421       gdb_assert (!bploc->inserted);
3422
3423   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3424   {
3425     if (b->pspace != current_program_space)
3426       continue;
3427
3428     /* Solib breakpoints must be explicitly reset after an exec().  */
3429     if (b->type == bp_shlib_event)
3430       {
3431         delete_breakpoint (b);
3432         continue;
3433       }
3434
3435     /* JIT breakpoints must be explicitly reset after an exec().  */
3436     if (b->type == bp_jit_event)
3437       {
3438         delete_breakpoint (b);
3439         continue;
3440       }
3441
3442     /* Thread event breakpoints must be set anew after an exec(),
3443        as must overlay event and longjmp master breakpoints.  */
3444     if (b->type == bp_thread_event || b->type == bp_overlay_event
3445         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3446         || b->type == bp_exception_master)
3447       {
3448         delete_breakpoint (b);
3449         continue;
3450       }
3451
3452     /* Step-resume breakpoints are meaningless after an exec().  */
3453     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3454       {
3455         delete_breakpoint (b);
3456         continue;
3457       }
3458
3459     /* Longjmp and longjmp-resume breakpoints are also meaningless
3460        after an exec.  */
3461     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3462         || b->type == bp_longjmp_call_dummy
3463         || b->type == bp_exception || b->type == bp_exception_resume)
3464       {
3465         delete_breakpoint (b);
3466         continue;
3467       }
3468
3469     if (b->type == bp_catchpoint)
3470       {
3471         /* For now, none of the bp_catchpoint breakpoints need to
3472            do anything at this point.  In the future, if some of
3473            the catchpoints need to something, we will need to add
3474            a new method, and call this method from here.  */
3475         continue;
3476       }
3477
3478     /* bp_finish is a special case.  The only way we ought to be able
3479        to see one of these when an exec() has happened, is if the user
3480        caught a vfork, and then said "finish".  Ordinarily a finish just
3481        carries them to the call-site of the current callee, by setting
3482        a temporary bp there and resuming.  But in this case, the finish
3483        will carry them entirely through the vfork & exec.
3484
3485        We don't want to allow a bp_finish to remain inserted now.  But
3486        we can't safely delete it, 'cause finish_command has a handle to
3487        the bp on a bpstat, and will later want to delete it.  There's a
3488        chance (and I've seen it happen) that if we delete the bp_finish
3489        here, that its storage will get reused by the time finish_command
3490        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3491        We really must allow finish_command to delete a bp_finish.
3492
3493        In the absence of a general solution for the "how do we know
3494        it's safe to delete something others may have handles to?"
3495        problem, what we'll do here is just uninsert the bp_finish, and
3496        let finish_command delete it.
3497
3498        (We know the bp_finish is "doomed" in the sense that it's
3499        momentary, and will be deleted as soon as finish_command sees
3500        the inferior stopped.  So it doesn't matter that the bp's
3501        address is probably bogus in the new a.out, unlike e.g., the
3502        solib breakpoints.)  */
3503
3504     if (b->type == bp_finish)
3505       {
3506         continue;
3507       }
3508
3509     /* Without a symbolic address, we have little hope of the
3510        pre-exec() address meaning the same thing in the post-exec()
3511        a.out.  */
3512     if (b->addr_string == NULL)
3513       {
3514         delete_breakpoint (b);
3515         continue;
3516       }
3517   }
3518   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3519   create_overlay_event_breakpoint ();
3520   create_longjmp_master_breakpoint ();
3521   create_std_terminate_master_breakpoint ();
3522   create_exception_master_breakpoint ();
3523 }
3524
3525 int
3526 detach_breakpoints (ptid_t ptid)
3527 {
3528   struct bp_location *bl, **blp_tmp;
3529   int val = 0;
3530   struct cleanup *old_chain = save_inferior_ptid ();
3531   struct inferior *inf = current_inferior ();
3532
3533   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3534     error (_("Cannot detach breakpoints of inferior_ptid"));
3535
3536   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3537   inferior_ptid = ptid;
3538   ALL_BP_LOCATIONS (bl, blp_tmp)
3539   {
3540     if (bl->pspace != inf->pspace)
3541       continue;
3542
3543     if (bl->inserted)
3544       val |= remove_breakpoint_1 (bl, mark_inserted);
3545   }
3546
3547   /* Detach single-step breakpoints as well.  */
3548   detach_single_step_breakpoints ();
3549
3550   do_cleanups (old_chain);
3551   return val;
3552 }
3553
3554 /* Remove the breakpoint location BL from the current address space.
3555    Note that this is used to detach breakpoints from a child fork.
3556    When we get here, the child isn't in the inferior list, and neither
3557    do we have objects to represent its address space --- we should
3558    *not* look at bl->pspace->aspace here.  */
3559
3560 static int
3561 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3562 {
3563   int val;
3564
3565   /* BL is never in moribund_locations by our callers.  */
3566   gdb_assert (bl->owner != NULL);
3567
3568   if (bl->owner->enable_state == bp_permanent)
3569     /* Permanent breakpoints cannot be inserted or removed.  */
3570     return 0;
3571
3572   /* The type of none suggests that owner is actually deleted.
3573      This should not ever happen.  */
3574   gdb_assert (bl->owner->type != bp_none);
3575
3576   if (bl->loc_type == bp_loc_software_breakpoint
3577       || bl->loc_type == bp_loc_hardware_breakpoint)
3578     {
3579       /* "Normal" instruction breakpoint: either the standard
3580          trap-instruction bp (bp_breakpoint), or a
3581          bp_hardware_breakpoint.  */
3582
3583       /* First check to see if we have to handle an overlay.  */
3584       if (overlay_debugging == ovly_off
3585           || bl->section == NULL
3586           || !(section_is_overlay (bl->section)))
3587         {
3588           /* No overlay handling: just remove the breakpoint.  */
3589           val = bl->owner->ops->remove_location (bl);
3590         }
3591       else
3592         {
3593           /* This breakpoint is in an overlay section.
3594              Did we set a breakpoint at the LMA?  */
3595           if (!overlay_events_enabled)
3596               {
3597                 /* Yes -- overlay event support is not active, so we
3598                    should have set a breakpoint at the LMA.  Remove it.  
3599                 */
3600                 /* Ignore any failures: if the LMA is in ROM, we will
3601                    have already warned when we failed to insert it.  */
3602                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3603                   target_remove_hw_breakpoint (bl->gdbarch,
3604                                                &bl->overlay_target_info);
3605                 else
3606                   target_remove_breakpoint (bl->gdbarch,
3607                                             &bl->overlay_target_info);
3608               }
3609           /* Did we set a breakpoint at the VMA? 
3610              If so, we will have marked the breakpoint 'inserted'.  */
3611           if (bl->inserted)
3612             {
3613               /* Yes -- remove it.  Previously we did not bother to
3614                  remove the breakpoint if the section had been
3615                  unmapped, but let's not rely on that being safe.  We
3616                  don't know what the overlay manager might do.  */
3617
3618               /* However, we should remove *software* breakpoints only
3619                  if the section is still mapped, or else we overwrite
3620                  wrong code with the saved shadow contents.  */
3621               if (bl->loc_type == bp_loc_hardware_breakpoint
3622                   || section_is_mapped (bl->section))
3623                 val = bl->owner->ops->remove_location (bl);
3624               else
3625                 val = 0;
3626             }
3627           else
3628             {
3629               /* No -- not inserted, so no need to remove.  No error.  */
3630               val = 0;
3631             }
3632         }
3633
3634       /* In some cases, we might not be able to remove a breakpoint
3635          in a shared library that has already been removed, but we
3636          have not yet processed the shlib unload event.  */
3637       if (val && solib_name_from_address (bl->pspace, bl->address))
3638         val = 0;
3639
3640       if (val)
3641         return val;
3642       bl->inserted = (is == mark_inserted);
3643     }
3644   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3645     {
3646       gdb_assert (bl->owner->ops != NULL
3647                   && bl->owner->ops->remove_location != NULL);
3648
3649       bl->inserted = (is == mark_inserted);
3650       bl->owner->ops->remove_location (bl);
3651
3652       /* Failure to remove any of the hardware watchpoints comes here.  */
3653       if ((is == mark_uninserted) && (bl->inserted))
3654         warning (_("Could not remove hardware watchpoint %d."),
3655                  bl->owner->number);
3656     }
3657   else if (bl->owner->type == bp_catchpoint
3658            && breakpoint_enabled (bl->owner)
3659            && !bl->duplicate)
3660     {
3661       gdb_assert (bl->owner->ops != NULL
3662                   && bl->owner->ops->remove_location != NULL);
3663
3664       val = bl->owner->ops->remove_location (bl);
3665       if (val)
3666         return val;
3667
3668       bl->inserted = (is == mark_inserted);
3669     }
3670
3671   return 0;
3672 }
3673
3674 static int
3675 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3676 {
3677   int ret;
3678   struct cleanup *old_chain;
3679
3680   /* BL is never in moribund_locations by our callers.  */
3681   gdb_assert (bl->owner != NULL);
3682
3683   if (bl->owner->enable_state == bp_permanent)
3684     /* Permanent breakpoints cannot be inserted or removed.  */
3685     return 0;
3686
3687   /* The type of none suggests that owner is actually deleted.
3688      This should not ever happen.  */
3689   gdb_assert (bl->owner->type != bp_none);
3690
3691   old_chain = save_current_space_and_thread ();
3692
3693   switch_to_program_space_and_thread (bl->pspace);
3694
3695   ret = remove_breakpoint_1 (bl, is);
3696
3697   do_cleanups (old_chain);
3698   return ret;
3699 }
3700
3701 /* Clear the "inserted" flag in all breakpoints.  */
3702
3703 void
3704 mark_breakpoints_out (void)
3705 {
3706   struct bp_location *bl, **blp_tmp;
3707
3708   ALL_BP_LOCATIONS (bl, blp_tmp)
3709     if (bl->pspace == current_program_space)
3710       bl->inserted = 0;
3711 }
3712
3713 /* Clear the "inserted" flag in all breakpoints and delete any
3714    breakpoints which should go away between runs of the program.
3715
3716    Plus other such housekeeping that has to be done for breakpoints
3717    between runs.
3718
3719    Note: this function gets called at the end of a run (by
3720    generic_mourn_inferior) and when a run begins (by
3721    init_wait_for_inferior).  */
3722
3723
3724
3725 void
3726 breakpoint_init_inferior (enum inf_context context)
3727 {
3728   struct breakpoint *b, *b_tmp;
3729   struct bp_location *bl, **blp_tmp;
3730   int ix;
3731   struct program_space *pspace = current_program_space;
3732
3733   /* If breakpoint locations are shared across processes, then there's
3734      nothing to do.  */
3735   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3736     return;
3737
3738   ALL_BP_LOCATIONS (bl, blp_tmp)
3739   {
3740     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3741     if (bl->pspace == pspace
3742         && bl->owner->enable_state != bp_permanent)
3743       bl->inserted = 0;
3744   }
3745
3746   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3747   {
3748     if (b->loc && b->loc->pspace != pspace)
3749       continue;
3750
3751     switch (b->type)
3752       {
3753       case bp_call_dummy:
3754       case bp_longjmp_call_dummy:
3755
3756         /* If the call dummy breakpoint is at the entry point it will
3757            cause problems when the inferior is rerun, so we better get
3758            rid of it.  */
3759
3760       case bp_watchpoint_scope:
3761
3762         /* Also get rid of scope breakpoints.  */
3763
3764       case bp_shlib_event:
3765
3766         /* Also remove solib event breakpoints.  Their addresses may
3767            have changed since the last time we ran the program.
3768            Actually we may now be debugging against different target;
3769            and so the solib backend that installed this breakpoint may
3770            not be used in by the target.  E.g.,
3771
3772            (gdb) file prog-linux
3773            (gdb) run               # native linux target
3774            ...
3775            (gdb) kill
3776            (gdb) file prog-win.exe
3777            (gdb) tar rem :9999     # remote Windows gdbserver.
3778         */
3779
3780       case bp_step_resume:
3781
3782         /* Also remove step-resume breakpoints.  */
3783
3784         delete_breakpoint (b);
3785         break;
3786
3787       case bp_watchpoint:
3788       case bp_hardware_watchpoint:
3789       case bp_read_watchpoint:
3790       case bp_access_watchpoint:
3791         {
3792           struct watchpoint *w = (struct watchpoint *) b;
3793
3794           /* Likewise for watchpoints on local expressions.  */
3795           if (w->exp_valid_block != NULL)
3796             delete_breakpoint (b);
3797           else if (context == inf_starting)
3798             {
3799               /* Reset val field to force reread of starting value in
3800                  insert_breakpoints.  */
3801               if (w->val)
3802                 value_free (w->val);
3803               w->val = NULL;
3804               w->val_valid = 0;
3805           }
3806         }
3807         break;
3808       default:
3809         break;
3810       }
3811   }
3812
3813   /* Get rid of the moribund locations.  */
3814   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3815     decref_bp_location (&bl);
3816   VEC_free (bp_location_p, moribund_locations);
3817 }
3818
3819 /* These functions concern about actual breakpoints inserted in the
3820    target --- to e.g. check if we need to do decr_pc adjustment or if
3821    we need to hop over the bkpt --- so we check for address space
3822    match, not program space.  */
3823
3824 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3825    exists at PC.  It returns ordinary_breakpoint_here if it's an
3826    ordinary breakpoint, or permanent_breakpoint_here if it's a
3827    permanent breakpoint.
3828    - When continuing from a location with an ordinary breakpoint, we
3829      actually single step once before calling insert_breakpoints.
3830    - When continuing from a location with a permanent breakpoint, we
3831      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3832      the target, to advance the PC past the breakpoint.  */
3833
3834 enum breakpoint_here
3835 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3836 {
3837   struct bp_location *bl, **blp_tmp;
3838   int any_breakpoint_here = 0;
3839
3840   ALL_BP_LOCATIONS (bl, blp_tmp)
3841     {
3842       if (bl->loc_type != bp_loc_software_breakpoint
3843           && bl->loc_type != bp_loc_hardware_breakpoint)
3844         continue;
3845
3846       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3847       if ((breakpoint_enabled (bl->owner)
3848            || bl->owner->enable_state == bp_permanent)
3849           && breakpoint_location_address_match (bl, aspace, pc))
3850         {
3851           if (overlay_debugging 
3852               && section_is_overlay (bl->section)
3853               && !section_is_mapped (bl->section))
3854             continue;           /* unmapped overlay -- can't be a match */
3855           else if (bl->owner->enable_state == bp_permanent)
3856             return permanent_breakpoint_here;
3857           else
3858             any_breakpoint_here = 1;
3859         }
3860     }
3861
3862   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3863 }
3864
3865 /* Return true if there's a moribund breakpoint at PC.  */
3866
3867 int
3868 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3869 {
3870   struct bp_location *loc;
3871   int ix;
3872
3873   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3874     if (breakpoint_location_address_match (loc, aspace, pc))
3875       return 1;
3876
3877   return 0;
3878 }
3879
3880 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3881    inserted using regular breakpoint_chain / bp_location array
3882    mechanism.  This does not check for single-step breakpoints, which
3883    are inserted and removed using direct target manipulation.  */
3884
3885 int
3886 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3887                                     CORE_ADDR pc)
3888 {
3889   struct bp_location *bl, **blp_tmp;
3890
3891   ALL_BP_LOCATIONS (bl, blp_tmp)
3892     {
3893       if (bl->loc_type != bp_loc_software_breakpoint
3894           && bl->loc_type != bp_loc_hardware_breakpoint)
3895         continue;
3896
3897       if (bl->inserted
3898           && breakpoint_location_address_match (bl, aspace, pc))
3899         {
3900           if (overlay_debugging 
3901               && section_is_overlay (bl->section)
3902               && !section_is_mapped (bl->section))
3903             continue;           /* unmapped overlay -- can't be a match */
3904           else
3905             return 1;
3906         }
3907     }
3908   return 0;
3909 }
3910
3911 /* Returns non-zero iff there's either regular breakpoint
3912    or a single step breakpoint inserted at PC.  */
3913
3914 int
3915 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3916 {
3917   if (regular_breakpoint_inserted_here_p (aspace, pc))
3918     return 1;
3919
3920   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3921     return 1;
3922
3923   return 0;
3924 }
3925
3926 /* This function returns non-zero iff there is a software breakpoint
3927    inserted at PC.  */
3928
3929 int
3930 software_breakpoint_inserted_here_p (struct address_space *aspace,
3931                                      CORE_ADDR pc)
3932 {
3933   struct bp_location *bl, **blp_tmp;
3934
3935   ALL_BP_LOCATIONS (bl, blp_tmp)
3936     {
3937       if (bl->loc_type != bp_loc_software_breakpoint)
3938         continue;
3939
3940       if (bl->inserted
3941           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3942                                        aspace, pc))
3943         {
3944           if (overlay_debugging 
3945               && section_is_overlay (bl->section)
3946               && !section_is_mapped (bl->section))
3947             continue;           /* unmapped overlay -- can't be a match */
3948           else
3949             return 1;
3950         }
3951     }
3952
3953   /* Also check for software single-step breakpoints.  */
3954   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3955     return 1;
3956
3957   return 0;
3958 }
3959
3960 int
3961 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3962                                        CORE_ADDR addr, ULONGEST len)
3963 {
3964   struct breakpoint *bpt;
3965
3966   ALL_BREAKPOINTS (bpt)
3967     {
3968       struct bp_location *loc;
3969
3970       if (bpt->type != bp_hardware_watchpoint
3971           && bpt->type != bp_access_watchpoint)
3972         continue;
3973
3974       if (!breakpoint_enabled (bpt))
3975         continue;
3976
3977       for (loc = bpt->loc; loc; loc = loc->next)
3978         if (loc->pspace->aspace == aspace && loc->inserted)
3979           {
3980             CORE_ADDR l, h;
3981
3982             /* Check for intersection.  */
3983             l = max (loc->address, addr);
3984             h = min (loc->address + loc->length, addr + len);
3985             if (l < h)
3986               return 1;
3987           }
3988     }
3989   return 0;
3990 }
3991
3992 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3993    PC is valid for process/thread PTID.  */
3994
3995 int
3996 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3997                          ptid_t ptid)
3998 {
3999   struct bp_location *bl, **blp_tmp;
4000   /* The thread and task IDs associated to PTID, computed lazily.  */
4001   int thread = -1;
4002   int task = 0;
4003   
4004   ALL_BP_LOCATIONS (bl, blp_tmp)
4005     {
4006       if (bl->loc_type != bp_loc_software_breakpoint
4007           && bl->loc_type != bp_loc_hardware_breakpoint)
4008         continue;
4009
4010       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4011       if (!breakpoint_enabled (bl->owner)
4012           && bl->owner->enable_state != bp_permanent)
4013         continue;
4014
4015       if (!breakpoint_location_address_match (bl, aspace, pc))
4016         continue;
4017
4018       if (bl->owner->thread != -1)
4019         {
4020           /* This is a thread-specific breakpoint.  Check that ptid
4021              matches that thread.  If thread hasn't been computed yet,
4022              it is now time to do so.  */
4023           if (thread == -1)
4024             thread = pid_to_thread_id (ptid);
4025           if (bl->owner->thread != thread)
4026             continue;
4027         }
4028
4029       if (bl->owner->task != 0)
4030         {
4031           /* This is a task-specific breakpoint.  Check that ptid
4032              matches that task.  If task hasn't been computed yet,
4033              it is now time to do so.  */
4034           if (task == 0)
4035             task = ada_get_task_number (ptid);
4036           if (bl->owner->task != task)
4037             continue;
4038         }
4039
4040       if (overlay_debugging 
4041           && section_is_overlay (bl->section)
4042           && !section_is_mapped (bl->section))
4043         continue;           /* unmapped overlay -- can't be a match */
4044
4045       return 1;
4046     }
4047
4048   return 0;
4049 }
4050 \f
4051
4052 /* bpstat stuff.  External routines' interfaces are documented
4053    in breakpoint.h.  */
4054
4055 int
4056 is_catchpoint (struct breakpoint *ep)
4057 {
4058   return (ep->type == bp_catchpoint);
4059 }
4060
4061 /* Frees any storage that is part of a bpstat.  Does not walk the
4062    'next' chain.  */
4063
4064 static void
4065 bpstat_free (bpstat bs)
4066 {
4067   if (bs->old_val != NULL)
4068     value_free (bs->old_val);
4069   decref_counted_command_line (&bs->commands);
4070   decref_bp_location (&bs->bp_location_at);
4071   xfree (bs);
4072 }
4073
4074 /* Clear a bpstat so that it says we are not at any breakpoint.
4075    Also free any storage that is part of a bpstat.  */
4076
4077 void
4078 bpstat_clear (bpstat *bsp)
4079 {
4080   bpstat p;
4081   bpstat q;
4082
4083   if (bsp == 0)
4084     return;
4085   p = *bsp;
4086   while (p != NULL)
4087     {
4088       q = p->next;
4089       bpstat_free (p);
4090       p = q;
4091     }
4092   *bsp = NULL;
4093 }
4094
4095 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4096    is part of the bpstat is copied as well.  */
4097
4098 bpstat
4099 bpstat_copy (bpstat bs)
4100 {
4101   bpstat p = NULL;
4102   bpstat tmp;
4103   bpstat retval = NULL;
4104
4105   if (bs == NULL)
4106     return bs;
4107
4108   for (; bs != NULL; bs = bs->next)
4109     {
4110       tmp = (bpstat) xmalloc (sizeof (*tmp));
4111       memcpy (tmp, bs, sizeof (*tmp));
4112       incref_counted_command_line (tmp->commands);
4113       incref_bp_location (tmp->bp_location_at);
4114       if (bs->old_val != NULL)
4115         {
4116           tmp->old_val = value_copy (bs->old_val);
4117           release_value (tmp->old_val);
4118         }
4119
4120       if (p == NULL)
4121         /* This is the first thing in the chain.  */
4122         retval = tmp;
4123       else
4124         p->next = tmp;
4125       p = tmp;
4126     }
4127   p->next = NULL;
4128   return retval;
4129 }
4130
4131 /* Find the bpstat associated with this breakpoint.  */
4132
4133 bpstat
4134 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4135 {
4136   if (bsp == NULL)
4137     return NULL;
4138
4139   for (; bsp != NULL; bsp = bsp->next)
4140     {
4141       if (bsp->breakpoint_at == breakpoint)
4142         return bsp;
4143     }
4144   return NULL;
4145 }
4146
4147 /* See breakpoint.h.  */
4148
4149 enum bpstat_signal_value
4150 bpstat_explains_signal (bpstat bsp)
4151 {
4152   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4153
4154   for (; bsp != NULL; bsp = bsp->next)
4155     {
4156       /* Ensure that, if we ever entered this loop, then we at least
4157          return BPSTAT_SIGNAL_HIDE.  */
4158       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4159
4160       if (bsp->breakpoint_at != NULL)
4161         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4162
4163       if (newval > result)
4164         result = newval;
4165     }
4166
4167   return result;
4168 }
4169
4170 /* Put in *NUM the breakpoint number of the first breakpoint we are
4171    stopped at.  *BSP upon return is a bpstat which points to the
4172    remaining breakpoints stopped at (but which is not guaranteed to be
4173    good for anything but further calls to bpstat_num).
4174
4175    Return 0 if passed a bpstat which does not indicate any breakpoints.
4176    Return -1 if stopped at a breakpoint that has been deleted since
4177    we set it.
4178    Return 1 otherwise.  */
4179
4180 int
4181 bpstat_num (bpstat *bsp, int *num)
4182 {
4183   struct breakpoint *b;
4184
4185   if ((*bsp) == NULL)
4186     return 0;                   /* No more breakpoint values */
4187
4188   /* We assume we'll never have several bpstats that correspond to a
4189      single breakpoint -- otherwise, this function might return the
4190      same number more than once and this will look ugly.  */
4191   b = (*bsp)->breakpoint_at;
4192   *bsp = (*bsp)->next;
4193   if (b == NULL)
4194     return -1;                  /* breakpoint that's been deleted since */
4195
4196   *num = b->number;             /* We have its number */
4197   return 1;
4198 }
4199
4200 /* See breakpoint.h.  */
4201
4202 void
4203 bpstat_clear_actions (void)
4204 {
4205   struct thread_info *tp;
4206   bpstat bs;
4207
4208   if (ptid_equal (inferior_ptid, null_ptid))
4209     return;
4210
4211   tp = find_thread_ptid (inferior_ptid);
4212   if (tp == NULL)
4213     return;
4214
4215   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4216     {
4217       decref_counted_command_line (&bs->commands);
4218
4219       if (bs->old_val != NULL)
4220         {
4221           value_free (bs->old_val);
4222           bs->old_val = NULL;
4223         }
4224     }
4225 }
4226
4227 /* Called when a command is about to proceed the inferior.  */
4228
4229 static void
4230 breakpoint_about_to_proceed (void)
4231 {
4232   if (!ptid_equal (inferior_ptid, null_ptid))
4233     {
4234       struct thread_info *tp = inferior_thread ();
4235
4236       /* Allow inferior function calls in breakpoint commands to not
4237          interrupt the command list.  When the call finishes
4238          successfully, the inferior will be standing at the same
4239          breakpoint as if nothing happened.  */
4240       if (tp->control.in_infcall)
4241         return;
4242     }
4243
4244   breakpoint_proceeded = 1;
4245 }
4246
4247 /* Stub for cleaning up our state if we error-out of a breakpoint
4248    command.  */
4249 static void
4250 cleanup_executing_breakpoints (void *ignore)
4251 {
4252   executing_breakpoint_commands = 0;
4253 }
4254
4255 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4256    or its equivalent.  */
4257
4258 static int
4259 command_line_is_silent (struct command_line *cmd)
4260 {
4261   return cmd && (strcmp ("silent", cmd->line) == 0
4262                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4263 }
4264
4265 /* Execute all the commands associated with all the breakpoints at
4266    this location.  Any of these commands could cause the process to
4267    proceed beyond this point, etc.  We look out for such changes by
4268    checking the global "breakpoint_proceeded" after each command.
4269
4270    Returns true if a breakpoint command resumed the inferior.  In that
4271    case, it is the caller's responsibility to recall it again with the
4272    bpstat of the current thread.  */
4273
4274 static int
4275 bpstat_do_actions_1 (bpstat *bsp)
4276 {
4277   bpstat bs;
4278   struct cleanup *old_chain;
4279   int again = 0;
4280
4281   /* Avoid endless recursion if a `source' command is contained
4282      in bs->commands.  */
4283   if (executing_breakpoint_commands)
4284     return 0;
4285
4286   executing_breakpoint_commands = 1;
4287   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4288
4289   prevent_dont_repeat ();
4290
4291   /* This pointer will iterate over the list of bpstat's.  */
4292   bs = *bsp;
4293
4294   breakpoint_proceeded = 0;
4295   for (; bs != NULL; bs = bs->next)
4296     {
4297       struct counted_command_line *ccmd;
4298       struct command_line *cmd;
4299       struct cleanup *this_cmd_tree_chain;
4300
4301       /* Take ownership of the BSP's command tree, if it has one.
4302
4303          The command tree could legitimately contain commands like
4304          'step' and 'next', which call clear_proceed_status, which
4305          frees stop_bpstat's command tree.  To make sure this doesn't
4306          free the tree we're executing out from under us, we need to
4307          take ownership of the tree ourselves.  Since a given bpstat's
4308          commands are only executed once, we don't need to copy it; we
4309          can clear the pointer in the bpstat, and make sure we free
4310          the tree when we're done.  */
4311       ccmd = bs->commands;
4312       bs->commands = NULL;
4313       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4314       cmd = ccmd ? ccmd->commands : NULL;
4315       if (command_line_is_silent (cmd))
4316         {
4317           /* The action has been already done by bpstat_stop_status.  */
4318           cmd = cmd->next;
4319         }
4320
4321       while (cmd != NULL)
4322         {
4323           execute_control_command (cmd);
4324
4325           if (breakpoint_proceeded)
4326             break;
4327           else
4328             cmd = cmd->next;
4329         }
4330
4331       /* We can free this command tree now.  */
4332       do_cleanups (this_cmd_tree_chain);
4333
4334       if (breakpoint_proceeded)
4335         {
4336           if (target_can_async_p ())
4337             /* If we are in async mode, then the target might be still
4338                running, not stopped at any breakpoint, so nothing for
4339                us to do here -- just return to the event loop.  */
4340             ;
4341           else
4342             /* In sync mode, when execute_control_command returns
4343                we're already standing on the next breakpoint.
4344                Breakpoint commands for that stop were not run, since
4345                execute_command does not run breakpoint commands --
4346                only command_line_handler does, but that one is not
4347                involved in execution of breakpoint commands.  So, we
4348                can now execute breakpoint commands.  It should be
4349                noted that making execute_command do bpstat actions is
4350                not an option -- in this case we'll have recursive
4351                invocation of bpstat for each breakpoint with a
4352                command, and can easily blow up GDB stack.  Instead, we
4353                return true, which will trigger the caller to recall us
4354                with the new stop_bpstat.  */
4355             again = 1;
4356           break;
4357         }
4358     }
4359   do_cleanups (old_chain);
4360   return again;
4361 }
4362
4363 void
4364 bpstat_do_actions (void)
4365 {
4366   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4367
4368   /* Do any commands attached to breakpoint we are stopped at.  */
4369   while (!ptid_equal (inferior_ptid, null_ptid)
4370          && target_has_execution
4371          && !is_exited (inferior_ptid)
4372          && !is_executing (inferior_ptid))
4373     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4374        and only return when it is stopped at the next breakpoint, we
4375        keep doing breakpoint actions until it returns false to
4376        indicate the inferior was not resumed.  */
4377     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4378       break;
4379
4380   discard_cleanups (cleanup_if_error);
4381 }
4382
4383 /* Print out the (old or new) value associated with a watchpoint.  */
4384
4385 static void
4386 watchpoint_value_print (struct value *val, struct ui_file *stream)
4387 {
4388   if (val == NULL)
4389     fprintf_unfiltered (stream, _("<unreadable>"));
4390   else
4391     {
4392       struct value_print_options opts;
4393       get_user_print_options (&opts);
4394       value_print (val, stream, &opts);
4395     }
4396 }
4397
4398 /* Generic routine for printing messages indicating why we
4399    stopped.  The behavior of this function depends on the value
4400    'print_it' in the bpstat structure.  Under some circumstances we
4401    may decide not to print anything here and delegate the task to
4402    normal_stop().  */
4403
4404 static enum print_stop_action
4405 print_bp_stop_message (bpstat bs)
4406 {
4407   switch (bs->print_it)
4408     {
4409     case print_it_noop:
4410       /* Nothing should be printed for this bpstat entry.  */
4411       return PRINT_UNKNOWN;
4412       break;
4413
4414     case print_it_done:
4415       /* We still want to print the frame, but we already printed the
4416          relevant messages.  */
4417       return PRINT_SRC_AND_LOC;
4418       break;
4419
4420     case print_it_normal:
4421       {
4422         struct breakpoint *b = bs->breakpoint_at;
4423
4424         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4425            which has since been deleted.  */
4426         if (b == NULL)
4427           return PRINT_UNKNOWN;
4428
4429         /* Normal case.  Call the breakpoint's print_it method.  */
4430         return b->ops->print_it (bs);
4431       }
4432       break;
4433
4434     default:
4435       internal_error (__FILE__, __LINE__,
4436                       _("print_bp_stop_message: unrecognized enum value"));
4437       break;
4438     }
4439 }
4440
4441 /* A helper function that prints a shared library stopped event.  */
4442
4443 static void
4444 print_solib_event (int is_catchpoint)
4445 {
4446   int any_deleted
4447     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4448   int any_added
4449     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4450
4451   if (!is_catchpoint)
4452     {
4453       if (any_added || any_deleted)
4454         ui_out_text (current_uiout,
4455                      _("Stopped due to shared library event:\n"));
4456       else
4457         ui_out_text (current_uiout,
4458                      _("Stopped due to shared library event (no "
4459                        "libraries added or removed)\n"));
4460     }
4461
4462   if (ui_out_is_mi_like_p (current_uiout))
4463     ui_out_field_string (current_uiout, "reason",
4464                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4465
4466   if (any_deleted)
4467     {
4468       struct cleanup *cleanup;
4469       char *name;
4470       int ix;
4471
4472       ui_out_text (current_uiout, _("  Inferior unloaded "));
4473       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4474                                                     "removed");
4475       for (ix = 0;
4476            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4477                         ix, name);
4478            ++ix)
4479         {
4480           if (ix > 0)
4481             ui_out_text (current_uiout, "    ");
4482           ui_out_field_string (current_uiout, "library", name);
4483           ui_out_text (current_uiout, "\n");
4484         }
4485
4486       do_cleanups (cleanup);
4487     }
4488
4489   if (any_added)
4490     {
4491       struct so_list *iter;
4492       int ix;
4493       struct cleanup *cleanup;
4494
4495       ui_out_text (current_uiout, _("  Inferior loaded "));
4496       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4497                                                     "added");
4498       for (ix = 0;
4499            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4500                         ix, iter);
4501            ++ix)
4502         {
4503           if (ix > 0)
4504             ui_out_text (current_uiout, "    ");
4505           ui_out_field_string (current_uiout, "library", iter->so_name);
4506           ui_out_text (current_uiout, "\n");
4507         }
4508
4509       do_cleanups (cleanup);
4510     }
4511 }
4512
4513 /* Print a message indicating what happened.  This is called from
4514    normal_stop().  The input to this routine is the head of the bpstat
4515    list - a list of the eventpoints that caused this stop.  KIND is
4516    the target_waitkind for the stopping event.  This
4517    routine calls the generic print routine for printing a message
4518    about reasons for stopping.  This will print (for example) the
4519    "Breakpoint n," part of the output.  The return value of this
4520    routine is one of:
4521
4522    PRINT_UNKNOWN: Means we printed nothing.
4523    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4524    code to print the location.  An example is 
4525    "Breakpoint 1, " which should be followed by
4526    the location.
4527    PRINT_SRC_ONLY: Means we printed something, but there is no need
4528    to also print the location part of the message.
4529    An example is the catch/throw messages, which
4530    don't require a location appended to the end.
4531    PRINT_NOTHING: We have done some printing and we don't need any 
4532    further info to be printed.  */
4533
4534 enum print_stop_action
4535 bpstat_print (bpstat bs, int kind)
4536 {
4537   int val;
4538
4539   /* Maybe another breakpoint in the chain caused us to stop.
4540      (Currently all watchpoints go on the bpstat whether hit or not.
4541      That probably could (should) be changed, provided care is taken
4542      with respect to bpstat_explains_signal).  */
4543   for (; bs; bs = bs->next)
4544     {
4545       val = print_bp_stop_message (bs);
4546       if (val == PRINT_SRC_ONLY 
4547           || val == PRINT_SRC_AND_LOC 
4548           || val == PRINT_NOTHING)
4549         return val;
4550     }
4551
4552   /* If we had hit a shared library event breakpoint,
4553      print_bp_stop_message would print out this message.  If we hit an
4554      OS-level shared library event, do the same thing.  */
4555   if (kind == TARGET_WAITKIND_LOADED)
4556     {
4557       print_solib_event (0);
4558       return PRINT_NOTHING;
4559     }
4560
4561   /* We reached the end of the chain, or we got a null BS to start
4562      with and nothing was printed.  */
4563   return PRINT_UNKNOWN;
4564 }
4565
4566 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4567    used inside a catch_errors to evaluate the breakpoint condition.
4568    The argument is a "struct expression *" that has been cast to a
4569    "char *" to make it pass through catch_errors.  */
4570
4571 static int
4572 breakpoint_cond_eval (void *exp)
4573 {
4574   struct value *mark = value_mark ();
4575   int i = !value_true (evaluate_expression ((struct expression *) exp));
4576
4577   value_free_to_mark (mark);
4578   return i;
4579 }
4580
4581 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4582
4583 static bpstat
4584 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4585 {
4586   bpstat bs;
4587
4588   bs = (bpstat) xmalloc (sizeof (*bs));
4589   bs->next = NULL;
4590   **bs_link_pointer = bs;
4591   *bs_link_pointer = &bs->next;
4592   bs->breakpoint_at = bl->owner;
4593   bs->bp_location_at = bl;
4594   incref_bp_location (bl);
4595   /* If the condition is false, etc., don't do the commands.  */
4596   bs->commands = NULL;
4597   bs->old_val = NULL;
4598   bs->print_it = print_it_normal;
4599   return bs;
4600 }
4601 \f
4602 /* The target has stopped with waitstatus WS.  Check if any hardware
4603    watchpoints have triggered, according to the target.  */
4604
4605 int
4606 watchpoints_triggered (struct target_waitstatus *ws)
4607 {
4608   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4609   CORE_ADDR addr;
4610   struct breakpoint *b;
4611
4612   if (!stopped_by_watchpoint)
4613     {
4614       /* We were not stopped by a watchpoint.  Mark all watchpoints
4615          as not triggered.  */
4616       ALL_BREAKPOINTS (b)
4617         if (is_hardware_watchpoint (b))
4618           {
4619             struct watchpoint *w = (struct watchpoint *) b;
4620
4621             w->watchpoint_triggered = watch_triggered_no;
4622           }
4623
4624       return 0;
4625     }
4626
4627   if (!target_stopped_data_address (&current_target, &addr))
4628     {
4629       /* We were stopped by a watchpoint, but we don't know where.
4630          Mark all watchpoints as unknown.  */
4631       ALL_BREAKPOINTS (b)
4632         if (is_hardware_watchpoint (b))
4633           {
4634             struct watchpoint *w = (struct watchpoint *) b;
4635
4636             w->watchpoint_triggered = watch_triggered_unknown;
4637           }
4638
4639       return stopped_by_watchpoint;
4640     }
4641
4642   /* The target could report the data address.  Mark watchpoints
4643      affected by this data address as triggered, and all others as not
4644      triggered.  */
4645
4646   ALL_BREAKPOINTS (b)
4647     if (is_hardware_watchpoint (b))
4648       {
4649         struct watchpoint *w = (struct watchpoint *) b;
4650         struct bp_location *loc;
4651
4652         w->watchpoint_triggered = watch_triggered_no;
4653         for (loc = b->loc; loc; loc = loc->next)
4654           {
4655             if (is_masked_watchpoint (b))
4656               {
4657                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4658                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4659
4660                 if (newaddr == start)
4661                   {
4662                     w->watchpoint_triggered = watch_triggered_yes;
4663                     break;
4664                   }
4665               }
4666             /* Exact match not required.  Within range is sufficient.  */
4667             else if (target_watchpoint_addr_within_range (&current_target,
4668                                                          addr, loc->address,
4669                                                          loc->length))
4670               {
4671                 w->watchpoint_triggered = watch_triggered_yes;
4672                 break;
4673               }
4674           }
4675       }
4676
4677   return 1;
4678 }
4679
4680 /* Possible return values for watchpoint_check (this can't be an enum
4681    because of check_errors).  */
4682 /* The watchpoint has been deleted.  */
4683 #define WP_DELETED 1
4684 /* The value has changed.  */
4685 #define WP_VALUE_CHANGED 2
4686 /* The value has not changed.  */
4687 #define WP_VALUE_NOT_CHANGED 3
4688 /* Ignore this watchpoint, no matter if the value changed or not.  */
4689 #define WP_IGNORE 4
4690
4691 #define BP_TEMPFLAG 1
4692 #define BP_HARDWAREFLAG 2
4693
4694 /* Evaluate watchpoint condition expression and check if its value
4695    changed.
4696
4697    P should be a pointer to struct bpstat, but is defined as a void *
4698    in order for this function to be usable with catch_errors.  */
4699
4700 static int
4701 watchpoint_check (void *p)
4702 {
4703   bpstat bs = (bpstat) p;
4704   struct watchpoint *b;
4705   struct frame_info *fr;
4706   int within_current_scope;
4707
4708   /* BS is built from an existing struct breakpoint.  */
4709   gdb_assert (bs->breakpoint_at != NULL);
4710   b = (struct watchpoint *) bs->breakpoint_at;
4711
4712   /* If this is a local watchpoint, we only want to check if the
4713      watchpoint frame is in scope if the current thread is the thread
4714      that was used to create the watchpoint.  */
4715   if (!watchpoint_in_thread_scope (b))
4716     return WP_IGNORE;
4717
4718   if (b->exp_valid_block == NULL)
4719     within_current_scope = 1;
4720   else
4721     {
4722       struct frame_info *frame = get_current_frame ();
4723       struct gdbarch *frame_arch = get_frame_arch (frame);
4724       CORE_ADDR frame_pc = get_frame_pc (frame);
4725
4726       /* in_function_epilogue_p() returns a non-zero value if we're
4727          still in the function but the stack frame has already been
4728          invalidated.  Since we can't rely on the values of local
4729          variables after the stack has been destroyed, we are treating
4730          the watchpoint in that state as `not changed' without further
4731          checking.  Don't mark watchpoints as changed if the current
4732          frame is in an epilogue - even if they are in some other
4733          frame, our view of the stack is likely to be wrong and
4734          frame_find_by_id could error out.  */
4735       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4736         return WP_IGNORE;
4737
4738       fr = frame_find_by_id (b->watchpoint_frame);
4739       within_current_scope = (fr != NULL);
4740
4741       /* If we've gotten confused in the unwinder, we might have
4742          returned a frame that can't describe this variable.  */
4743       if (within_current_scope)
4744         {
4745           struct symbol *function;
4746
4747           function = get_frame_function (fr);
4748           if (function == NULL
4749               || !contained_in (b->exp_valid_block,
4750                                 SYMBOL_BLOCK_VALUE (function)))
4751             within_current_scope = 0;
4752         }
4753
4754       if (within_current_scope)
4755         /* If we end up stopping, the current frame will get selected
4756            in normal_stop.  So this call to select_frame won't affect
4757            the user.  */
4758         select_frame (fr);
4759     }
4760
4761   if (within_current_scope)
4762     {
4763       /* We use value_{,free_to_}mark because it could be a *long*
4764          time before we return to the command level and call
4765          free_all_values.  We can't call free_all_values because we
4766          might be in the middle of evaluating a function call.  */
4767
4768       int pc = 0;
4769       struct value *mark;
4770       struct value *new_val;
4771
4772       if (is_masked_watchpoint (&b->base))
4773         /* Since we don't know the exact trigger address (from
4774            stopped_data_address), just tell the user we've triggered
4775            a mask watchpoint.  */
4776         return WP_VALUE_CHANGED;
4777
4778       mark = value_mark ();
4779       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4780
4781       /* We use value_equal_contents instead of value_equal because
4782          the latter coerces an array to a pointer, thus comparing just
4783          the address of the array instead of its contents.  This is
4784          not what we want.  */
4785       if ((b->val != NULL) != (new_val != NULL)
4786           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4787         {
4788           if (new_val != NULL)
4789             {
4790               release_value (new_val);
4791               value_free_to_mark (mark);
4792             }
4793           bs->old_val = b->val;
4794           b->val = new_val;
4795           b->val_valid = 1;
4796           return WP_VALUE_CHANGED;
4797         }
4798       else
4799         {
4800           /* Nothing changed.  */
4801           value_free_to_mark (mark);
4802           return WP_VALUE_NOT_CHANGED;
4803         }
4804     }
4805   else
4806     {
4807       struct ui_out *uiout = current_uiout;
4808
4809       /* This seems like the only logical thing to do because
4810          if we temporarily ignored the watchpoint, then when
4811          we reenter the block in which it is valid it contains
4812          garbage (in the case of a function, it may have two
4813          garbage values, one before and one after the prologue).
4814          So we can't even detect the first assignment to it and
4815          watch after that (since the garbage may or may not equal
4816          the first value assigned).  */
4817       /* We print all the stop information in
4818          breakpoint_ops->print_it, but in this case, by the time we
4819          call breakpoint_ops->print_it this bp will be deleted
4820          already.  So we have no choice but print the information
4821          here.  */
4822       if (ui_out_is_mi_like_p (uiout))
4823         ui_out_field_string
4824           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4825       ui_out_text (uiout, "\nWatchpoint ");
4826       ui_out_field_int (uiout, "wpnum", b->base.number);
4827       ui_out_text (uiout,
4828                    " deleted because the program has left the block in\n\
4829 which its expression is valid.\n");     
4830
4831       /* Make sure the watchpoint's commands aren't executed.  */
4832       decref_counted_command_line (&b->base.commands);
4833       watchpoint_del_at_next_stop (b);
4834
4835       return WP_DELETED;
4836     }
4837 }
4838
4839 /* Return true if it looks like target has stopped due to hitting
4840    breakpoint location BL.  This function does not check if we should
4841    stop, only if BL explains the stop.  */
4842
4843 static int
4844 bpstat_check_location (const struct bp_location *bl,
4845                        struct address_space *aspace, CORE_ADDR bp_addr,
4846                        const struct target_waitstatus *ws)
4847 {
4848   struct breakpoint *b = bl->owner;
4849
4850   /* BL is from an existing breakpoint.  */
4851   gdb_assert (b != NULL);
4852
4853   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4854 }
4855
4856 /* Determine if the watched values have actually changed, and we
4857    should stop.  If not, set BS->stop to 0.  */
4858
4859 static void
4860 bpstat_check_watchpoint (bpstat bs)
4861 {
4862   const struct bp_location *bl;
4863   struct watchpoint *b;
4864
4865   /* BS is built for existing struct breakpoint.  */
4866   bl = bs->bp_location_at;
4867   gdb_assert (bl != NULL);
4868   b = (struct watchpoint *) bs->breakpoint_at;
4869   gdb_assert (b != NULL);
4870
4871     {
4872       int must_check_value = 0;
4873       
4874       if (b->base.type == bp_watchpoint)
4875         /* For a software watchpoint, we must always check the
4876            watched value.  */
4877         must_check_value = 1;
4878       else if (b->watchpoint_triggered == watch_triggered_yes)
4879         /* We have a hardware watchpoint (read, write, or access)
4880            and the target earlier reported an address watched by
4881            this watchpoint.  */
4882         must_check_value = 1;
4883       else if (b->watchpoint_triggered == watch_triggered_unknown
4884                && b->base.type == bp_hardware_watchpoint)
4885         /* We were stopped by a hardware watchpoint, but the target could
4886            not report the data address.  We must check the watchpoint's
4887            value.  Access and read watchpoints are out of luck; without
4888            a data address, we can't figure it out.  */
4889         must_check_value = 1;
4890
4891       if (must_check_value)
4892         {
4893           char *message
4894             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4895                           b->base.number);
4896           struct cleanup *cleanups = make_cleanup (xfree, message);
4897           int e = catch_errors (watchpoint_check, bs, message,
4898                                 RETURN_MASK_ALL);
4899           do_cleanups (cleanups);
4900           switch (e)
4901             {
4902             case WP_DELETED:
4903               /* We've already printed what needs to be printed.  */
4904               bs->print_it = print_it_done;
4905               /* Stop.  */
4906               break;
4907             case WP_IGNORE:
4908               bs->print_it = print_it_noop;
4909               bs->stop = 0;
4910               break;
4911             case WP_VALUE_CHANGED:
4912               if (b->base.type == bp_read_watchpoint)
4913                 {
4914                   /* There are two cases to consider here:
4915
4916                      1. We're watching the triggered memory for reads.
4917                      In that case, trust the target, and always report
4918                      the watchpoint hit to the user.  Even though
4919                      reads don't cause value changes, the value may
4920                      have changed since the last time it was read, and
4921                      since we're not trapping writes, we will not see
4922                      those, and as such we should ignore our notion of
4923                      old value.
4924
4925                      2. We're watching the triggered memory for both
4926                      reads and writes.  There are two ways this may
4927                      happen:
4928
4929                      2.1. This is a target that can't break on data
4930                      reads only, but can break on accesses (reads or
4931                      writes), such as e.g., x86.  We detect this case
4932                      at the time we try to insert read watchpoints.
4933
4934                      2.2. Otherwise, the target supports read
4935                      watchpoints, but, the user set an access or write
4936                      watchpoint watching the same memory as this read
4937                      watchpoint.
4938
4939                      If we're watching memory writes as well as reads,
4940                      ignore watchpoint hits when we find that the
4941                      value hasn't changed, as reads don't cause
4942                      changes.  This still gives false positives when
4943                      the program writes the same value to memory as
4944                      what there was already in memory (we will confuse
4945                      it for a read), but it's much better than
4946                      nothing.  */
4947
4948                   int other_write_watchpoint = 0;
4949
4950                   if (bl->watchpoint_type == hw_read)
4951                     {
4952                       struct breakpoint *other_b;
4953
4954                       ALL_BREAKPOINTS (other_b)
4955                         if (other_b->type == bp_hardware_watchpoint
4956                             || other_b->type == bp_access_watchpoint)
4957                           {
4958                             struct watchpoint *other_w =
4959                               (struct watchpoint *) other_b;
4960
4961                             if (other_w->watchpoint_triggered
4962                                 == watch_triggered_yes)
4963                               {
4964                                 other_write_watchpoint = 1;
4965                                 break;
4966                               }
4967                           }
4968                     }
4969
4970                   if (other_write_watchpoint
4971                       || bl->watchpoint_type == hw_access)
4972                     {
4973                       /* We're watching the same memory for writes,
4974                          and the value changed since the last time we
4975                          updated it, so this trap must be for a write.
4976                          Ignore it.  */
4977                       bs->print_it = print_it_noop;
4978                       bs->stop = 0;
4979                     }
4980                 }
4981               break;
4982             case WP_VALUE_NOT_CHANGED:
4983               if (b->base.type == bp_hardware_watchpoint
4984                   || b->base.type == bp_watchpoint)
4985                 {
4986                   /* Don't stop: write watchpoints shouldn't fire if
4987                      the value hasn't changed.  */
4988                   bs->print_it = print_it_noop;
4989                   bs->stop = 0;
4990                 }
4991               /* Stop.  */
4992               break;
4993             default:
4994               /* Can't happen.  */
4995             case 0:
4996               /* Error from catch_errors.  */
4997               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4998               watchpoint_del_at_next_stop (b);
4999               /* We've already printed what needs to be printed.  */
5000               bs->print_it = print_it_done;
5001               break;
5002             }
5003         }
5004       else      /* must_check_value == 0 */
5005         {
5006           /* This is a case where some watchpoint(s) triggered, but
5007              not at the address of this watchpoint, or else no
5008              watchpoint triggered after all.  So don't print
5009              anything for this watchpoint.  */
5010           bs->print_it = print_it_noop;
5011           bs->stop = 0;
5012         }
5013     }
5014 }
5015
5016
5017 /* Check conditions (condition proper, frame, thread and ignore count)
5018    of breakpoint referred to by BS.  If we should not stop for this
5019    breakpoint, set BS->stop to 0.  */
5020
5021 static void
5022 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5023 {
5024   int thread_id = pid_to_thread_id (ptid);
5025   const struct bp_location *bl;
5026   struct breakpoint *b;
5027
5028   /* BS is built for existing struct breakpoint.  */
5029   bl = bs->bp_location_at;
5030   gdb_assert (bl != NULL);
5031   b = bs->breakpoint_at;
5032   gdb_assert (b != NULL);
5033
5034   /* Even if the target evaluated the condition on its end and notified GDB, we
5035      need to do so again since GDB does not know if we stopped due to a
5036      breakpoint or a single step breakpoint.  */
5037
5038   if (frame_id_p (b->frame_id)
5039       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5040     bs->stop = 0;
5041   else if (bs->stop)
5042     {
5043       int value_is_zero = 0;
5044       struct expression *cond;
5045
5046       /* Evaluate Python breakpoints that have a "stop"
5047          method implemented.  */
5048       if (b->py_bp_object)
5049         bs->stop = gdbpy_should_stop (b->py_bp_object);
5050
5051       if (is_watchpoint (b))
5052         {
5053           struct watchpoint *w = (struct watchpoint *) b;
5054
5055           cond = w->cond_exp;
5056         }
5057       else
5058         cond = bl->cond;
5059
5060       if (cond && b->disposition != disp_del_at_next_stop)
5061         {
5062           int within_current_scope = 1;
5063           struct watchpoint * w;
5064
5065           /* We use value_mark and value_free_to_mark because it could
5066              be a long time before we return to the command level and
5067              call free_all_values.  We can't call free_all_values
5068              because we might be in the middle of evaluating a
5069              function call.  */
5070           struct value *mark = value_mark ();
5071
5072           if (is_watchpoint (b))
5073             w = (struct watchpoint *) b;
5074           else
5075             w = NULL;
5076
5077           /* Need to select the frame, with all that implies so that
5078              the conditions will have the right context.  Because we
5079              use the frame, we will not see an inlined function's
5080              variables when we arrive at a breakpoint at the start
5081              of the inlined function; the current frame will be the
5082              call site.  */
5083           if (w == NULL || w->cond_exp_valid_block == NULL)
5084             select_frame (get_current_frame ());
5085           else
5086             {
5087               struct frame_info *frame;
5088
5089               /* For local watchpoint expressions, which particular
5090                  instance of a local is being watched matters, so we
5091                  keep track of the frame to evaluate the expression
5092                  in.  To evaluate the condition however, it doesn't
5093                  really matter which instantiation of the function
5094                  where the condition makes sense triggers the
5095                  watchpoint.  This allows an expression like "watch
5096                  global if q > 10" set in `func', catch writes to
5097                  global on all threads that call `func', or catch
5098                  writes on all recursive calls of `func' by a single
5099                  thread.  We simply always evaluate the condition in
5100                  the innermost frame that's executing where it makes
5101                  sense to evaluate the condition.  It seems
5102                  intuitive.  */
5103               frame = block_innermost_frame (w->cond_exp_valid_block);
5104               if (frame != NULL)
5105                 select_frame (frame);
5106               else
5107                 within_current_scope = 0;
5108             }
5109           if (within_current_scope)
5110             value_is_zero
5111               = catch_errors (breakpoint_cond_eval, cond,
5112                               "Error in testing breakpoint condition:\n",
5113                               RETURN_MASK_ALL);
5114           else
5115             {
5116               warning (_("Watchpoint condition cannot be tested "
5117                          "in the current scope"));
5118               /* If we failed to set the right context for this
5119                  watchpoint, unconditionally report it.  */
5120               value_is_zero = 0;
5121             }
5122           /* FIXME-someday, should give breakpoint #.  */
5123           value_free_to_mark (mark);
5124         }
5125
5126       if (cond && value_is_zero)
5127         {
5128           bs->stop = 0;
5129         }
5130       else if (b->thread != -1 && b->thread != thread_id)
5131         {
5132           bs->stop = 0;
5133         }
5134       else if (b->ignore_count > 0)
5135         {
5136           b->ignore_count--;
5137           bs->stop = 0;
5138           /* Increase the hit count even though we don't stop.  */
5139           ++(b->hit_count);
5140           observer_notify_breakpoint_modified (b);
5141         }       
5142     }
5143 }
5144
5145
5146 /* Get a bpstat associated with having just stopped at address
5147    BP_ADDR in thread PTID.
5148
5149    Determine whether we stopped at a breakpoint, etc, or whether we
5150    don't understand this stop.  Result is a chain of bpstat's such
5151    that:
5152
5153    if we don't understand the stop, the result is a null pointer.
5154
5155    if we understand why we stopped, the result is not null.
5156
5157    Each element of the chain refers to a particular breakpoint or
5158    watchpoint at which we have stopped.  (We may have stopped for
5159    several reasons concurrently.)
5160
5161    Each element of the chain has valid next, breakpoint_at,
5162    commands, FIXME??? fields.  */
5163
5164 bpstat
5165 bpstat_stop_status (struct address_space *aspace,
5166                     CORE_ADDR bp_addr, ptid_t ptid,
5167                     const struct target_waitstatus *ws)
5168 {
5169   struct breakpoint *b = NULL;
5170   struct bp_location *bl;
5171   struct bp_location *loc;
5172   /* First item of allocated bpstat's.  */
5173   bpstat bs_head = NULL, *bs_link = &bs_head;
5174   /* Pointer to the last thing in the chain currently.  */
5175   bpstat bs;
5176   int ix;
5177   int need_remove_insert;
5178   int removed_any;
5179
5180   /* First, build the bpstat chain with locations that explain a
5181      target stop, while being careful to not set the target running,
5182      as that may invalidate locations (in particular watchpoint
5183      locations are recreated).  Resuming will happen here with
5184      breakpoint conditions or watchpoint expressions that include
5185      inferior function calls.  */
5186
5187   ALL_BREAKPOINTS (b)
5188     {
5189       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5190         continue;
5191
5192       for (bl = b->loc; bl != NULL; bl = bl->next)
5193         {
5194           /* For hardware watchpoints, we look only at the first
5195              location.  The watchpoint_check function will work on the
5196              entire expression, not the individual locations.  For
5197              read watchpoints, the watchpoints_triggered function has
5198              checked all locations already.  */
5199           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5200             break;
5201
5202           if (!bl->enabled || bl->shlib_disabled)
5203             continue;
5204
5205           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5206             continue;
5207
5208           /* Come here if it's a watchpoint, or if the break address
5209              matches.  */
5210
5211           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5212                                                    explain stop.  */
5213
5214           /* Assume we stop.  Should we find a watchpoint that is not
5215              actually triggered, or if the condition of the breakpoint
5216              evaluates as false, we'll reset 'stop' to 0.  */
5217           bs->stop = 1;
5218           bs->print = 1;
5219
5220           /* If this is a scope breakpoint, mark the associated
5221              watchpoint as triggered so that we will handle the
5222              out-of-scope event.  We'll get to the watchpoint next
5223              iteration.  */
5224           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5225             {
5226               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5227
5228               w->watchpoint_triggered = watch_triggered_yes;
5229             }
5230         }
5231     }
5232
5233   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5234     {
5235       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5236         {
5237           bs = bpstat_alloc (loc, &bs_link);
5238           /* For hits of moribund locations, we should just proceed.  */
5239           bs->stop = 0;
5240           bs->print = 0;
5241           bs->print_it = print_it_noop;
5242         }
5243     }
5244
5245   /* A bit of special processing for shlib breakpoints.  We need to
5246      process solib loading here, so that the lists of loaded and
5247      unloaded libraries are correct before we handle "catch load" and
5248      "catch unload".  */
5249   for (bs = bs_head; bs != NULL; bs = bs->next)
5250     {
5251       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5252         {
5253           handle_solib_event ();
5254           break;
5255         }
5256     }
5257
5258   /* Now go through the locations that caused the target to stop, and
5259      check whether we're interested in reporting this stop to higher
5260      layers, or whether we should resume the target transparently.  */
5261
5262   removed_any = 0;
5263
5264   for (bs = bs_head; bs != NULL; bs = bs->next)
5265     {
5266       if (!bs->stop)
5267         continue;
5268
5269       b = bs->breakpoint_at;
5270       b->ops->check_status (bs);
5271       if (bs->stop)
5272         {
5273           bpstat_check_breakpoint_conditions (bs, ptid);
5274
5275           if (bs->stop)
5276             {
5277               ++(b->hit_count);
5278               observer_notify_breakpoint_modified (b);
5279
5280               /* We will stop here.  */
5281               if (b->disposition == disp_disable)
5282                 {
5283                   --(b->enable_count);
5284                   if (b->enable_count <= 0
5285                       && b->enable_state != bp_permanent)
5286                     b->enable_state = bp_disabled;
5287                   removed_any = 1;
5288                 }
5289               if (b->silent)
5290                 bs->print = 0;
5291               bs->commands = b->commands;
5292               incref_counted_command_line (bs->commands);
5293               if (command_line_is_silent (bs->commands
5294                                           ? bs->commands->commands : NULL))
5295                 bs->print = 0;
5296             }
5297
5298         }
5299
5300       /* Print nothing for this entry if we don't stop or don't
5301          print.  */
5302       if (!bs->stop || !bs->print)
5303         bs->print_it = print_it_noop;
5304     }
5305
5306   /* If we aren't stopping, the value of some hardware watchpoint may
5307      not have changed, but the intermediate memory locations we are
5308      watching may have.  Don't bother if we're stopping; this will get
5309      done later.  */
5310   need_remove_insert = 0;
5311   if (! bpstat_causes_stop (bs_head))
5312     for (bs = bs_head; bs != NULL; bs = bs->next)
5313       if (!bs->stop
5314           && bs->breakpoint_at
5315           && is_hardware_watchpoint (bs->breakpoint_at))
5316         {
5317           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5318
5319           update_watchpoint (w, 0 /* don't reparse.  */);
5320           need_remove_insert = 1;
5321         }
5322
5323   if (need_remove_insert)
5324     update_global_location_list (1);
5325   else if (removed_any)
5326     update_global_location_list (0);
5327
5328   return bs_head;
5329 }
5330
5331 static void
5332 handle_jit_event (void)
5333 {
5334   struct frame_info *frame;
5335   struct gdbarch *gdbarch;
5336
5337   /* Switch terminal for any messages produced by
5338      breakpoint_re_set.  */
5339   target_terminal_ours_for_output ();
5340
5341   frame = get_current_frame ();
5342   gdbarch = get_frame_arch (frame);
5343
5344   jit_event_handler (gdbarch);
5345
5346   target_terminal_inferior ();
5347 }
5348
5349 /* Handle an solib event by calling solib_add.  */
5350
5351 void
5352 handle_solib_event (void)
5353 {
5354   clear_program_space_solib_cache (current_inferior ()->pspace);
5355
5356   /* Check for any newly added shared libraries if we're supposed to
5357      be adding them automatically.  Switch terminal for any messages
5358      produced by breakpoint_re_set.  */
5359   target_terminal_ours_for_output ();
5360 #ifdef SOLIB_ADD
5361   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5362 #else
5363   solib_add (NULL, 0, &current_target, auto_solib_add);
5364 #endif
5365   target_terminal_inferior ();
5366 }
5367
5368 /* Prepare WHAT final decision for infrun.  */
5369
5370 /* Decide what infrun needs to do with this bpstat.  */
5371
5372 struct bpstat_what
5373 bpstat_what (bpstat bs_head)
5374 {
5375   struct bpstat_what retval;
5376   int jit_event = 0;
5377   bpstat bs;
5378
5379   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5380   retval.call_dummy = STOP_NONE;
5381   retval.is_longjmp = 0;
5382
5383   for (bs = bs_head; bs != NULL; bs = bs->next)
5384     {
5385       /* Extract this BS's action.  After processing each BS, we check
5386          if its action overrides all we've seem so far.  */
5387       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5388       enum bptype bptype;
5389
5390       if (bs->breakpoint_at == NULL)
5391         {
5392           /* I suspect this can happen if it was a momentary
5393              breakpoint which has since been deleted.  */
5394           bptype = bp_none;
5395         }
5396       else
5397         bptype = bs->breakpoint_at->type;
5398
5399       switch (bptype)
5400         {
5401         case bp_none:
5402           break;
5403         case bp_breakpoint:
5404         case bp_hardware_breakpoint:
5405         case bp_until:
5406         case bp_finish:
5407         case bp_shlib_event:
5408           if (bs->stop)
5409             {
5410               if (bs->print)
5411                 this_action = BPSTAT_WHAT_STOP_NOISY;
5412               else
5413                 this_action = BPSTAT_WHAT_STOP_SILENT;
5414             }
5415           else
5416             this_action = BPSTAT_WHAT_SINGLE;
5417           break;
5418         case bp_watchpoint:
5419         case bp_hardware_watchpoint:
5420         case bp_read_watchpoint:
5421         case bp_access_watchpoint:
5422           if (bs->stop)
5423             {
5424               if (bs->print)
5425                 this_action = BPSTAT_WHAT_STOP_NOISY;
5426               else
5427                 this_action = BPSTAT_WHAT_STOP_SILENT;
5428             }
5429           else
5430             {
5431               /* There was a watchpoint, but we're not stopping.
5432                  This requires no further action.  */
5433             }
5434           break;
5435         case bp_longjmp:
5436         case bp_longjmp_call_dummy:
5437         case bp_exception:
5438           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5439           retval.is_longjmp = bptype != bp_exception;
5440           break;
5441         case bp_longjmp_resume:
5442         case bp_exception_resume:
5443           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5444           retval.is_longjmp = bptype == bp_longjmp_resume;
5445           break;
5446         case bp_step_resume:
5447           if (bs->stop)
5448             this_action = BPSTAT_WHAT_STEP_RESUME;
5449           else
5450             {
5451               /* It is for the wrong frame.  */
5452               this_action = BPSTAT_WHAT_SINGLE;
5453             }
5454           break;
5455         case bp_hp_step_resume:
5456           if (bs->stop)
5457             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5458           else
5459             {
5460               /* It is for the wrong frame.  */
5461               this_action = BPSTAT_WHAT_SINGLE;
5462             }
5463           break;
5464         case bp_watchpoint_scope:
5465         case bp_thread_event:
5466         case bp_overlay_event:
5467         case bp_longjmp_master:
5468         case bp_std_terminate_master:
5469         case bp_exception_master:
5470           this_action = BPSTAT_WHAT_SINGLE;
5471           break;
5472         case bp_catchpoint:
5473           if (bs->stop)
5474             {
5475               if (bs->print)
5476                 this_action = BPSTAT_WHAT_STOP_NOISY;
5477               else
5478                 this_action = BPSTAT_WHAT_STOP_SILENT;
5479             }
5480           else
5481             {
5482               /* There was a catchpoint, but we're not stopping.
5483                  This requires no further action.  */
5484             }
5485           break;
5486         case bp_jit_event:
5487           jit_event = 1;
5488           this_action = BPSTAT_WHAT_SINGLE;
5489           break;
5490         case bp_call_dummy:
5491           /* Make sure the action is stop (silent or noisy),
5492              so infrun.c pops the dummy frame.  */
5493           retval.call_dummy = STOP_STACK_DUMMY;
5494           this_action = BPSTAT_WHAT_STOP_SILENT;
5495           break;
5496         case bp_std_terminate:
5497           /* Make sure the action is stop (silent or noisy),
5498              so infrun.c pops the dummy frame.  */
5499           retval.call_dummy = STOP_STD_TERMINATE;
5500           this_action = BPSTAT_WHAT_STOP_SILENT;
5501           break;
5502         case bp_tracepoint:
5503         case bp_fast_tracepoint:
5504         case bp_static_tracepoint:
5505           /* Tracepoint hits should not be reported back to GDB, and
5506              if one got through somehow, it should have been filtered
5507              out already.  */
5508           internal_error (__FILE__, __LINE__,
5509                           _("bpstat_what: tracepoint encountered"));
5510           break;
5511         case bp_gnu_ifunc_resolver:
5512           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5513           this_action = BPSTAT_WHAT_SINGLE;
5514           break;
5515         case bp_gnu_ifunc_resolver_return:
5516           /* The breakpoint will be removed, execution will restart from the
5517              PC of the former breakpoint.  */
5518           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5519           break;
5520
5521         case bp_dprintf:
5522           this_action = BPSTAT_WHAT_STOP_SILENT;
5523           break;
5524
5525         default:
5526           internal_error (__FILE__, __LINE__,
5527                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5528         }
5529
5530       retval.main_action = max (retval.main_action, this_action);
5531     }
5532
5533   /* These operations may affect the bs->breakpoint_at state so they are
5534      delayed after MAIN_ACTION is decided above.  */
5535
5536   if (jit_event)
5537     {
5538       if (debug_infrun)
5539         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5540
5541       handle_jit_event ();
5542     }
5543
5544   for (bs = bs_head; bs != NULL; bs = bs->next)
5545     {
5546       struct breakpoint *b = bs->breakpoint_at;
5547
5548       if (b == NULL)
5549         continue;
5550       switch (b->type)
5551         {
5552         case bp_gnu_ifunc_resolver:
5553           gnu_ifunc_resolver_stop (b);
5554           break;
5555         case bp_gnu_ifunc_resolver_return:
5556           gnu_ifunc_resolver_return_stop (b);
5557           break;
5558         }
5559     }
5560
5561   return retval;
5562 }
5563
5564 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5565    without hardware support).  This isn't related to a specific bpstat,
5566    just to things like whether watchpoints are set.  */
5567
5568 int
5569 bpstat_should_step (void)
5570 {
5571   struct breakpoint *b;
5572
5573   ALL_BREAKPOINTS (b)
5574     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5575       return 1;
5576   return 0;
5577 }
5578
5579 int
5580 bpstat_causes_stop (bpstat bs)
5581 {
5582   for (; bs != NULL; bs = bs->next)
5583     if (bs->stop)
5584       return 1;
5585
5586   return 0;
5587 }
5588
5589 \f
5590
5591 /* Compute a string of spaces suitable to indent the next line
5592    so it starts at the position corresponding to the table column
5593    named COL_NAME in the currently active table of UIOUT.  */
5594
5595 static char *
5596 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5597 {
5598   static char wrap_indent[80];
5599   int i, total_width, width, align;
5600   char *text;
5601
5602   total_width = 0;
5603   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5604     {
5605       if (strcmp (text, col_name) == 0)
5606         {
5607           gdb_assert (total_width < sizeof wrap_indent);
5608           memset (wrap_indent, ' ', total_width);
5609           wrap_indent[total_width] = 0;
5610
5611           return wrap_indent;
5612         }
5613
5614       total_width += width + 1;
5615     }
5616
5617   return NULL;
5618 }
5619
5620 /* Determine if the locations of this breakpoint will have their conditions
5621    evaluated by the target, host or a mix of both.  Returns the following:
5622
5623     "host": Host evals condition.
5624     "host or target": Host or Target evals condition.
5625     "target": Target evals condition.
5626 */
5627
5628 static const char *
5629 bp_condition_evaluator (struct breakpoint *b)
5630 {
5631   struct bp_location *bl;
5632   char host_evals = 0;
5633   char target_evals = 0;
5634
5635   if (!b)
5636     return NULL;
5637
5638   if (!is_breakpoint (b))
5639     return NULL;
5640
5641   if (gdb_evaluates_breakpoint_condition_p ()
5642       || !target_supports_evaluation_of_breakpoint_conditions ())
5643     return condition_evaluation_host;
5644
5645   for (bl = b->loc; bl; bl = bl->next)
5646     {
5647       if (bl->cond_bytecode)
5648         target_evals++;
5649       else
5650         host_evals++;
5651     }
5652
5653   if (host_evals && target_evals)
5654     return condition_evaluation_both;
5655   else if (target_evals)
5656     return condition_evaluation_target;
5657   else
5658     return condition_evaluation_host;
5659 }
5660
5661 /* Determine the breakpoint location's condition evaluator.  This is
5662    similar to bp_condition_evaluator, but for locations.  */
5663
5664 static const char *
5665 bp_location_condition_evaluator (struct bp_location *bl)
5666 {
5667   if (bl && !is_breakpoint (bl->owner))
5668     return NULL;
5669
5670   if (gdb_evaluates_breakpoint_condition_p ()
5671       || !target_supports_evaluation_of_breakpoint_conditions ())
5672     return condition_evaluation_host;
5673
5674   if (bl && bl->cond_bytecode)
5675     return condition_evaluation_target;
5676   else
5677     return condition_evaluation_host;
5678 }
5679
5680 /* Print the LOC location out of the list of B->LOC locations.  */
5681
5682 static void
5683 print_breakpoint_location (struct breakpoint *b,
5684                            struct bp_location *loc)
5685 {
5686   struct ui_out *uiout = current_uiout;
5687   struct cleanup *old_chain = save_current_program_space ();
5688
5689   if (loc != NULL && loc->shlib_disabled)
5690     loc = NULL;
5691
5692   if (loc != NULL)
5693     set_current_program_space (loc->pspace);
5694
5695   if (b->display_canonical)
5696     ui_out_field_string (uiout, "what", b->addr_string);
5697   else if (loc && loc->symtab)
5698     {
5699       struct symbol *sym 
5700         = find_pc_sect_function (loc->address, loc->section);
5701       if (sym)
5702         {
5703           ui_out_text (uiout, "in ");
5704           ui_out_field_string (uiout, "func",
5705                                SYMBOL_PRINT_NAME (sym));
5706           ui_out_text (uiout, " ");
5707           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5708           ui_out_text (uiout, "at ");
5709         }
5710       ui_out_field_string (uiout, "file", loc->symtab->filename);
5711       ui_out_text (uiout, ":");
5712       
5713       if (ui_out_is_mi_like_p (uiout))
5714         ui_out_field_string (uiout, "fullname",
5715                              symtab_to_fullname (loc->symtab));
5716       
5717       ui_out_field_int (uiout, "line", loc->line_number);
5718     }
5719   else if (loc)
5720     {
5721       struct ui_file *stb = mem_fileopen ();
5722       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5723
5724       print_address_symbolic (loc->gdbarch, loc->address, stb,
5725                               demangle, "");
5726       ui_out_field_stream (uiout, "at", stb);
5727
5728       do_cleanups (stb_chain);
5729     }
5730   else
5731     ui_out_field_string (uiout, "pending", b->addr_string);
5732
5733   if (loc && is_breakpoint (b)
5734       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5735       && bp_condition_evaluator (b) == condition_evaluation_both)
5736     {
5737       ui_out_text (uiout, " (");
5738       ui_out_field_string (uiout, "evaluated-by",
5739                            bp_location_condition_evaluator (loc));
5740       ui_out_text (uiout, ")");
5741     }
5742
5743   do_cleanups (old_chain);
5744 }
5745
5746 static const char *
5747 bptype_string (enum bptype type)
5748 {
5749   struct ep_type_description
5750     {
5751       enum bptype type;
5752       char *description;
5753     };
5754   static struct ep_type_description bptypes[] =
5755   {
5756     {bp_none, "?deleted?"},
5757     {bp_breakpoint, "breakpoint"},
5758     {bp_hardware_breakpoint, "hw breakpoint"},
5759     {bp_until, "until"},
5760     {bp_finish, "finish"},
5761     {bp_watchpoint, "watchpoint"},
5762     {bp_hardware_watchpoint, "hw watchpoint"},
5763     {bp_read_watchpoint, "read watchpoint"},
5764     {bp_access_watchpoint, "acc watchpoint"},
5765     {bp_longjmp, "longjmp"},
5766     {bp_longjmp_resume, "longjmp resume"},
5767     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5768     {bp_exception, "exception"},
5769     {bp_exception_resume, "exception resume"},
5770     {bp_step_resume, "step resume"},
5771     {bp_hp_step_resume, "high-priority step resume"},
5772     {bp_watchpoint_scope, "watchpoint scope"},
5773     {bp_call_dummy, "call dummy"},
5774     {bp_std_terminate, "std::terminate"},
5775     {bp_shlib_event, "shlib events"},
5776     {bp_thread_event, "thread events"},
5777     {bp_overlay_event, "overlay events"},
5778     {bp_longjmp_master, "longjmp master"},
5779     {bp_std_terminate_master, "std::terminate master"},
5780     {bp_exception_master, "exception master"},
5781     {bp_catchpoint, "catchpoint"},
5782     {bp_tracepoint, "tracepoint"},
5783     {bp_fast_tracepoint, "fast tracepoint"},
5784     {bp_static_tracepoint, "static tracepoint"},
5785     {bp_dprintf, "dprintf"},
5786     {bp_jit_event, "jit events"},
5787     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5788     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5789   };
5790
5791   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5792       || ((int) type != bptypes[(int) type].type))
5793     internal_error (__FILE__, __LINE__,
5794                     _("bptypes table does not describe type #%d."),
5795                     (int) type);
5796
5797   return bptypes[(int) type].description;
5798 }
5799
5800 DEF_VEC_I(int);
5801
5802 /* For MI, output a field named 'thread-groups' with a list as the value.
5803    For CLI, prefix the list with the string 'inf'. */
5804
5805 static void
5806 output_thread_groups (struct ui_out *uiout,
5807                       const char *field_name,
5808                       VEC(int) *inf_num,
5809                       int mi_only)
5810 {
5811   struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
5812                                                                 field_name);
5813   int is_mi = ui_out_is_mi_like_p (uiout);
5814   int inf;
5815   int i;
5816
5817   /* For backward compatibility, don't display inferiors in CLI unless
5818      there are several.  Always display them for MI. */
5819   if (!is_mi && mi_only)
5820     return;
5821
5822   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5823     {
5824       if (is_mi)
5825         {
5826           char mi_group[10];
5827
5828           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5829           ui_out_field_string (uiout, NULL, mi_group);
5830         }
5831       else
5832         {
5833           if (i == 0)
5834             ui_out_text (uiout, " inf ");
5835           else
5836             ui_out_text (uiout, ", ");
5837         
5838           ui_out_text (uiout, plongest (inf));
5839         }
5840     }
5841
5842   do_cleanups (back_to);
5843 }
5844
5845 /* Print B to gdb_stdout.  */
5846
5847 static void
5848 print_one_breakpoint_location (struct breakpoint *b,
5849                                struct bp_location *loc,
5850                                int loc_number,
5851                                struct bp_location **last_loc,
5852                                int allflag)
5853 {
5854   struct command_line *l;
5855   static char bpenables[] = "nynny";
5856
5857   struct ui_out *uiout = current_uiout;
5858   int header_of_multiple = 0;
5859   int part_of_multiple = (loc != NULL);
5860   struct value_print_options opts;
5861
5862   get_user_print_options (&opts);
5863
5864   gdb_assert (!loc || loc_number != 0);
5865   /* See comment in print_one_breakpoint concerning treatment of
5866      breakpoints with single disabled location.  */
5867   if (loc == NULL 
5868       && (b->loc != NULL 
5869           && (b->loc->next != NULL || !b->loc->enabled)))
5870     header_of_multiple = 1;
5871   if (loc == NULL)
5872     loc = b->loc;
5873
5874   annotate_record ();
5875
5876   /* 1 */
5877   annotate_field (0);
5878   if (part_of_multiple)
5879     {
5880       char *formatted;
5881       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5882       ui_out_field_string (uiout, "number", formatted);
5883       xfree (formatted);
5884     }
5885   else
5886     {
5887       ui_out_field_int (uiout, "number", b->number);
5888     }
5889
5890   /* 2 */
5891   annotate_field (1);
5892   if (part_of_multiple)
5893     ui_out_field_skip (uiout, "type");
5894   else
5895     ui_out_field_string (uiout, "type", bptype_string (b->type));
5896
5897   /* 3 */
5898   annotate_field (2);
5899   if (part_of_multiple)
5900     ui_out_field_skip (uiout, "disp");
5901   else
5902     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5903
5904
5905   /* 4 */
5906   annotate_field (3);
5907   if (part_of_multiple)
5908     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5909   else
5910     ui_out_field_fmt (uiout, "enabled", "%c", 
5911                       bpenables[(int) b->enable_state]);
5912   ui_out_spaces (uiout, 2);
5913
5914   
5915   /* 5 and 6 */
5916   if (b->ops != NULL && b->ops->print_one != NULL)
5917     {
5918       /* Although the print_one can possibly print all locations,
5919          calling it here is not likely to get any nice result.  So,
5920          make sure there's just one location.  */
5921       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5922       b->ops->print_one (b, last_loc);
5923     }
5924   else
5925     switch (b->type)
5926       {
5927       case bp_none:
5928         internal_error (__FILE__, __LINE__,
5929                         _("print_one_breakpoint: bp_none encountered\n"));
5930         break;
5931
5932       case bp_watchpoint:
5933       case bp_hardware_watchpoint:
5934       case bp_read_watchpoint:
5935       case bp_access_watchpoint:
5936         {
5937           struct watchpoint *w = (struct watchpoint *) b;
5938
5939           /* Field 4, the address, is omitted (which makes the columns
5940              not line up too nicely with the headers, but the effect
5941              is relatively readable).  */
5942           if (opts.addressprint)
5943             ui_out_field_skip (uiout, "addr");
5944           annotate_field (5);
5945           ui_out_field_string (uiout, "what", w->exp_string);
5946         }
5947         break;
5948
5949       case bp_breakpoint:
5950       case bp_hardware_breakpoint:
5951       case bp_until:
5952       case bp_finish:
5953       case bp_longjmp:
5954       case bp_longjmp_resume:
5955       case bp_longjmp_call_dummy:
5956       case bp_exception:
5957       case bp_exception_resume:
5958       case bp_step_resume:
5959       case bp_hp_step_resume:
5960       case bp_watchpoint_scope:
5961       case bp_call_dummy:
5962       case bp_std_terminate:
5963       case bp_shlib_event:
5964       case bp_thread_event:
5965       case bp_overlay_event:
5966       case bp_longjmp_master:
5967       case bp_std_terminate_master:
5968       case bp_exception_master:
5969       case bp_tracepoint:
5970       case bp_fast_tracepoint:
5971       case bp_static_tracepoint:
5972       case bp_dprintf:
5973       case bp_jit_event:
5974       case bp_gnu_ifunc_resolver:
5975       case bp_gnu_ifunc_resolver_return:
5976         if (opts.addressprint)
5977           {
5978             annotate_field (4);
5979             if (header_of_multiple)
5980               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5981             else if (b->loc == NULL || loc->shlib_disabled)
5982               ui_out_field_string (uiout, "addr", "<PENDING>");
5983             else
5984               ui_out_field_core_addr (uiout, "addr",
5985                                       loc->gdbarch, loc->address);
5986           }
5987         annotate_field (5);
5988         if (!header_of_multiple)
5989           print_breakpoint_location (b, loc);
5990         if (b->loc)
5991           *last_loc = b->loc;
5992         break;
5993       }
5994
5995
5996   if (loc != NULL && !header_of_multiple)
5997     {
5998       struct inferior *inf;
5999       VEC(int) *inf_num = NULL;
6000       int mi_only = 1;
6001
6002       ALL_INFERIORS (inf)
6003         {
6004           if (inf->pspace == loc->pspace)
6005             VEC_safe_push (int, inf_num, inf->num);
6006         }
6007
6008         /* For backward compatibility, don't display inferiors in CLI unless
6009            there are several.  Always display for MI. */
6010         if (allflag
6011             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6012                 && (number_of_program_spaces () > 1
6013                     || number_of_inferiors () > 1)
6014                 /* LOC is for existing B, it cannot be in
6015                    moribund_locations and thus having NULL OWNER.  */
6016                 && loc->owner->type != bp_catchpoint))
6017         mi_only = 0;
6018       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6019       VEC_free (int, inf_num);
6020     }
6021
6022   if (!part_of_multiple)
6023     {
6024       if (b->thread != -1)
6025         {
6026           /* FIXME: This seems to be redundant and lost here; see the
6027              "stop only in" line a little further down.  */
6028           ui_out_text (uiout, " thread ");
6029           ui_out_field_int (uiout, "thread", b->thread);
6030         }
6031       else if (b->task != 0)
6032         {
6033           ui_out_text (uiout, " task ");
6034           ui_out_field_int (uiout, "task", b->task);
6035         }
6036     }
6037
6038   ui_out_text (uiout, "\n");
6039
6040   if (!part_of_multiple)
6041     b->ops->print_one_detail (b, uiout);
6042
6043   if (part_of_multiple && frame_id_p (b->frame_id))
6044     {
6045       annotate_field (6);
6046       ui_out_text (uiout, "\tstop only in stack frame at ");
6047       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6048          the frame ID.  */
6049       ui_out_field_core_addr (uiout, "frame",
6050                               b->gdbarch, b->frame_id.stack_addr);
6051       ui_out_text (uiout, "\n");
6052     }
6053   
6054   if (!part_of_multiple && b->cond_string)
6055     {
6056       annotate_field (7);
6057       if (is_tracepoint (b))
6058         ui_out_text (uiout, "\ttrace only if ");
6059       else
6060         ui_out_text (uiout, "\tstop only if ");
6061       ui_out_field_string (uiout, "cond", b->cond_string);
6062
6063       /* Print whether the target is doing the breakpoint's condition
6064          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6065       if (is_breakpoint (b)
6066           && breakpoint_condition_evaluation_mode ()
6067           == condition_evaluation_target)
6068         {
6069           ui_out_text (uiout, " (");
6070           ui_out_field_string (uiout, "evaluated-by",
6071                                bp_condition_evaluator (b));
6072           ui_out_text (uiout, " evals)");
6073         }
6074       ui_out_text (uiout, "\n");
6075     }
6076
6077   if (!part_of_multiple && b->thread != -1)
6078     {
6079       /* FIXME should make an annotation for this.  */
6080       ui_out_text (uiout, "\tstop only in thread ");
6081       ui_out_field_int (uiout, "thread", b->thread);
6082       ui_out_text (uiout, "\n");
6083     }
6084   
6085   if (!part_of_multiple)
6086     {
6087       if (b->hit_count)
6088         {
6089           /* FIXME should make an annotation for this.  */
6090           if (is_catchpoint (b))
6091             ui_out_text (uiout, "\tcatchpoint");
6092           else if (is_tracepoint (b))
6093             ui_out_text (uiout, "\ttracepoint");
6094           else
6095             ui_out_text (uiout, "\tbreakpoint");
6096           ui_out_text (uiout, " already hit ");
6097           ui_out_field_int (uiout, "times", b->hit_count);
6098           if (b->hit_count == 1)
6099             ui_out_text (uiout, " time\n");
6100           else
6101             ui_out_text (uiout, " times\n");
6102         }
6103       else
6104         {
6105           /* Output the count also if it is zero, but only if this is mi.  */
6106           if (ui_out_is_mi_like_p (uiout))
6107             ui_out_field_int (uiout, "times", b->hit_count);
6108         }
6109     }
6110
6111   if (!part_of_multiple && b->ignore_count)
6112     {
6113       annotate_field (8);
6114       ui_out_text (uiout, "\tignore next ");
6115       ui_out_field_int (uiout, "ignore", b->ignore_count);
6116       ui_out_text (uiout, " hits\n");
6117     }
6118
6119   /* Note that an enable count of 1 corresponds to "enable once"
6120      behavior, which is reported by the combination of enablement and
6121      disposition, so we don't need to mention it here.  */
6122   if (!part_of_multiple && b->enable_count > 1)
6123     {
6124       annotate_field (8);
6125       ui_out_text (uiout, "\tdisable after ");
6126       /* Tweak the wording to clarify that ignore and enable counts
6127          are distinct, and have additive effect.  */
6128       if (b->ignore_count)
6129         ui_out_text (uiout, "additional ");
6130       else
6131         ui_out_text (uiout, "next ");
6132       ui_out_field_int (uiout, "enable", b->enable_count);
6133       ui_out_text (uiout, " hits\n");
6134     }
6135
6136   if (!part_of_multiple && is_tracepoint (b))
6137     {
6138       struct tracepoint *tp = (struct tracepoint *) b;
6139
6140       if (tp->traceframe_usage)
6141         {
6142           ui_out_text (uiout, "\ttrace buffer usage ");
6143           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6144           ui_out_text (uiout, " bytes\n");
6145         }
6146     }
6147
6148   l = b->commands ? b->commands->commands : NULL;
6149   if (!part_of_multiple && l)
6150     {
6151       struct cleanup *script_chain;
6152
6153       annotate_field (9);
6154       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6155       print_command_lines (uiout, l, 4);
6156       do_cleanups (script_chain);
6157     }
6158
6159   if (is_tracepoint (b))
6160     {
6161       struct tracepoint *t = (struct tracepoint *) b;
6162
6163       if (!part_of_multiple && t->pass_count)
6164         {
6165           annotate_field (10);
6166           ui_out_text (uiout, "\tpass count ");
6167           ui_out_field_int (uiout, "pass", t->pass_count);
6168           ui_out_text (uiout, " \n");
6169         }
6170
6171       /* Don't display it when tracepoint or tracepoint location is
6172          pending.   */
6173       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6174         {
6175           annotate_field (11);
6176
6177           if (ui_out_is_mi_like_p (uiout))
6178             ui_out_field_string (uiout, "installed",
6179                                  loc->inserted ? "y" : "n");
6180           else
6181             {
6182               if (loc->inserted)
6183                 ui_out_text (uiout, "\t");
6184               else
6185                 ui_out_text (uiout, "\tnot ");
6186               ui_out_text (uiout, "installed on target\n");
6187             }
6188         }
6189     }
6190
6191   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6192     {
6193       if (is_watchpoint (b))
6194         {
6195           struct watchpoint *w = (struct watchpoint *) b;
6196
6197           ui_out_field_string (uiout, "original-location", w->exp_string);
6198         }
6199       else if (b->addr_string)
6200         ui_out_field_string (uiout, "original-location", b->addr_string);
6201     }
6202 }
6203
6204 static void
6205 print_one_breakpoint (struct breakpoint *b,
6206                       struct bp_location **last_loc, 
6207                       int allflag)
6208 {
6209   struct cleanup *bkpt_chain;
6210   struct ui_out *uiout = current_uiout;
6211
6212   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6213
6214   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6215   do_cleanups (bkpt_chain);
6216
6217   /* If this breakpoint has custom print function,
6218      it's already printed.  Otherwise, print individual
6219      locations, if any.  */
6220   if (b->ops == NULL || b->ops->print_one == NULL)
6221     {
6222       /* If breakpoint has a single location that is disabled, we
6223          print it as if it had several locations, since otherwise it's
6224          hard to represent "breakpoint enabled, location disabled"
6225          situation.
6226
6227          Note that while hardware watchpoints have several locations
6228          internally, that's not a property exposed to user.  */
6229       if (b->loc 
6230           && !is_hardware_watchpoint (b)
6231           && (b->loc->next || !b->loc->enabled))
6232         {
6233           struct bp_location *loc;
6234           int n = 1;
6235
6236           for (loc = b->loc; loc; loc = loc->next, ++n)
6237             {
6238               struct cleanup *inner2 =
6239                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6240               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6241               do_cleanups (inner2);
6242             }
6243         }
6244     }
6245 }
6246
6247 static int
6248 breakpoint_address_bits (struct breakpoint *b)
6249 {
6250   int print_address_bits = 0;
6251   struct bp_location *loc;
6252
6253   for (loc = b->loc; loc; loc = loc->next)
6254     {
6255       int addr_bit;
6256
6257       /* Software watchpoints that aren't watching memory don't have
6258          an address to print.  */
6259       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6260         continue;
6261
6262       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6263       if (addr_bit > print_address_bits)
6264         print_address_bits = addr_bit;
6265     }
6266
6267   return print_address_bits;
6268 }
6269
6270 struct captured_breakpoint_query_args
6271   {
6272     int bnum;
6273   };
6274
6275 static int
6276 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6277 {
6278   struct captured_breakpoint_query_args *args = data;
6279   struct breakpoint *b;
6280   struct bp_location *dummy_loc = NULL;
6281
6282   ALL_BREAKPOINTS (b)
6283     {
6284       if (args->bnum == b->number)
6285         {
6286           print_one_breakpoint (b, &dummy_loc, 0);
6287           return GDB_RC_OK;
6288         }
6289     }
6290   return GDB_RC_NONE;
6291 }
6292
6293 enum gdb_rc
6294 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6295                       char **error_message)
6296 {
6297   struct captured_breakpoint_query_args args;
6298
6299   args.bnum = bnum;
6300   /* For the moment we don't trust print_one_breakpoint() to not throw
6301      an error.  */
6302   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6303                                  error_message, RETURN_MASK_ALL) < 0)
6304     return GDB_RC_FAIL;
6305   else
6306     return GDB_RC_OK;
6307 }
6308
6309 /* Return true if this breakpoint was set by the user, false if it is
6310    internal or momentary.  */
6311
6312 int
6313 user_breakpoint_p (struct breakpoint *b)
6314 {
6315   return b->number > 0;
6316 }
6317
6318 /* Print information on user settable breakpoint (watchpoint, etc)
6319    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6320    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6321    FILTER is non-NULL, call it on each breakpoint and only include the
6322    ones for which it returns non-zero.  Return the total number of
6323    breakpoints listed.  */
6324
6325 static int
6326 breakpoint_1 (char *args, int allflag, 
6327               int (*filter) (const struct breakpoint *))
6328 {
6329   struct breakpoint *b;
6330   struct bp_location *last_loc = NULL;
6331   int nr_printable_breakpoints;
6332   struct cleanup *bkpttbl_chain;
6333   struct value_print_options opts;
6334   int print_address_bits = 0;
6335   int print_type_col_width = 14;
6336   struct ui_out *uiout = current_uiout;
6337
6338   get_user_print_options (&opts);
6339
6340   /* Compute the number of rows in the table, as well as the size
6341      required for address fields.  */
6342   nr_printable_breakpoints = 0;
6343   ALL_BREAKPOINTS (b)
6344     {
6345       /* If we have a filter, only list the breakpoints it accepts.  */
6346       if (filter && !filter (b))
6347         continue;
6348
6349       /* If we have an "args" string, it is a list of breakpoints to 
6350          accept.  Skip the others.  */
6351       if (args != NULL && *args != '\0')
6352         {
6353           if (allflag && parse_and_eval_long (args) != b->number)
6354             continue;
6355           if (!allflag && !number_is_in_list (args, b->number))
6356             continue;
6357         }
6358
6359       if (allflag || user_breakpoint_p (b))
6360         {
6361           int addr_bit, type_len;
6362
6363           addr_bit = breakpoint_address_bits (b);
6364           if (addr_bit > print_address_bits)
6365             print_address_bits = addr_bit;
6366
6367           type_len = strlen (bptype_string (b->type));
6368           if (type_len > print_type_col_width)
6369             print_type_col_width = type_len;
6370
6371           nr_printable_breakpoints++;
6372         }
6373     }
6374
6375   if (opts.addressprint)
6376     bkpttbl_chain 
6377       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6378                                              nr_printable_breakpoints,
6379                                              "BreakpointTable");
6380   else
6381     bkpttbl_chain 
6382       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6383                                              nr_printable_breakpoints,
6384                                              "BreakpointTable");
6385
6386   if (nr_printable_breakpoints > 0)
6387     annotate_breakpoints_headers ();
6388   if (nr_printable_breakpoints > 0)
6389     annotate_field (0);
6390   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6391   if (nr_printable_breakpoints > 0)
6392     annotate_field (1);
6393   ui_out_table_header (uiout, print_type_col_width, ui_left,
6394                        "type", "Type");                         /* 2 */
6395   if (nr_printable_breakpoints > 0)
6396     annotate_field (2);
6397   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6398   if (nr_printable_breakpoints > 0)
6399     annotate_field (3);
6400   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6401   if (opts.addressprint)
6402     {
6403       if (nr_printable_breakpoints > 0)
6404         annotate_field (4);
6405       if (print_address_bits <= 32)
6406         ui_out_table_header (uiout, 10, ui_left, 
6407                              "addr", "Address");                /* 5 */
6408       else
6409         ui_out_table_header (uiout, 18, ui_left, 
6410                              "addr", "Address");                /* 5 */
6411     }
6412   if (nr_printable_breakpoints > 0)
6413     annotate_field (5);
6414   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6415   ui_out_table_body (uiout);
6416   if (nr_printable_breakpoints > 0)
6417     annotate_breakpoints_table ();
6418
6419   ALL_BREAKPOINTS (b)
6420     {
6421       QUIT;
6422       /* If we have a filter, only list the breakpoints it accepts.  */
6423       if (filter && !filter (b))
6424         continue;
6425
6426       /* If we have an "args" string, it is a list of breakpoints to 
6427          accept.  Skip the others.  */
6428
6429       if (args != NULL && *args != '\0')
6430         {
6431           if (allflag)  /* maintenance info breakpoint */
6432             {
6433               if (parse_and_eval_long (args) != b->number)
6434                 continue;
6435             }
6436           else          /* all others */
6437             {
6438               if (!number_is_in_list (args, b->number))
6439                 continue;
6440             }
6441         }
6442       /* We only print out user settable breakpoints unless the
6443          allflag is set.  */
6444       if (allflag || user_breakpoint_p (b))
6445         print_one_breakpoint (b, &last_loc, allflag);
6446     }
6447
6448   do_cleanups (bkpttbl_chain);
6449
6450   if (nr_printable_breakpoints == 0)
6451     {
6452       /* If there's a filter, let the caller decide how to report
6453          empty list.  */
6454       if (!filter)
6455         {
6456           if (args == NULL || *args == '\0')
6457             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6458           else
6459             ui_out_message (uiout, 0, 
6460                             "No breakpoint or watchpoint matching '%s'.\n",
6461                             args);
6462         }
6463     }
6464   else
6465     {
6466       if (last_loc && !server_command)
6467         set_next_address (last_loc->gdbarch, last_loc->address);
6468     }
6469
6470   /* FIXME?  Should this be moved up so that it is only called when
6471      there have been breakpoints? */
6472   annotate_breakpoints_table_end ();
6473
6474   return nr_printable_breakpoints;
6475 }
6476
6477 /* Display the value of default-collect in a way that is generally
6478    compatible with the breakpoint list.  */
6479
6480 static void
6481 default_collect_info (void)
6482 {
6483   struct ui_out *uiout = current_uiout;
6484
6485   /* If it has no value (which is frequently the case), say nothing; a
6486      message like "No default-collect." gets in user's face when it's
6487      not wanted.  */
6488   if (!*default_collect)
6489     return;
6490
6491   /* The following phrase lines up nicely with per-tracepoint collect
6492      actions.  */
6493   ui_out_text (uiout, "default collect ");
6494   ui_out_field_string (uiout, "default-collect", default_collect);
6495   ui_out_text (uiout, " \n");
6496 }
6497   
6498 static void
6499 breakpoints_info (char *args, int from_tty)
6500 {
6501   breakpoint_1 (args, 0, NULL);
6502
6503   default_collect_info ();
6504 }
6505
6506 static void
6507 watchpoints_info (char *args, int from_tty)
6508 {
6509   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6510   struct ui_out *uiout = current_uiout;
6511
6512   if (num_printed == 0)
6513     {
6514       if (args == NULL || *args == '\0')
6515         ui_out_message (uiout, 0, "No watchpoints.\n");
6516       else
6517         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6518     }
6519 }
6520
6521 static void
6522 maintenance_info_breakpoints (char *args, int from_tty)
6523 {
6524   breakpoint_1 (args, 1, NULL);
6525
6526   default_collect_info ();
6527 }
6528
6529 static int
6530 breakpoint_has_pc (struct breakpoint *b,
6531                    struct program_space *pspace,
6532                    CORE_ADDR pc, struct obj_section *section)
6533 {
6534   struct bp_location *bl = b->loc;
6535
6536   for (; bl; bl = bl->next)
6537     {
6538       if (bl->pspace == pspace
6539           && bl->address == pc
6540           && (!overlay_debugging || bl->section == section))
6541         return 1;         
6542     }
6543   return 0;
6544 }
6545
6546 /* Print a message describing any user-breakpoints set at PC.  This
6547    concerns with logical breakpoints, so we match program spaces, not
6548    address spaces.  */
6549
6550 static void
6551 describe_other_breakpoints (struct gdbarch *gdbarch,
6552                             struct program_space *pspace, CORE_ADDR pc,
6553                             struct obj_section *section, int thread)
6554 {
6555   int others = 0;
6556   struct breakpoint *b;
6557
6558   ALL_BREAKPOINTS (b)
6559     others += (user_breakpoint_p (b)
6560                && breakpoint_has_pc (b, pspace, pc, section));
6561   if (others > 0)
6562     {
6563       if (others == 1)
6564         printf_filtered (_("Note: breakpoint "));
6565       else /* if (others == ???) */
6566         printf_filtered (_("Note: breakpoints "));
6567       ALL_BREAKPOINTS (b)
6568         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6569           {
6570             others--;
6571             printf_filtered ("%d", b->number);
6572             if (b->thread == -1 && thread != -1)
6573               printf_filtered (" (all threads)");
6574             else if (b->thread != -1)
6575               printf_filtered (" (thread %d)", b->thread);
6576             printf_filtered ("%s%s ",
6577                              ((b->enable_state == bp_disabled
6578                                || b->enable_state == bp_call_disabled)
6579                               ? " (disabled)"
6580                               : b->enable_state == bp_permanent 
6581                               ? " (permanent)"
6582                               : ""),
6583                              (others > 1) ? "," 
6584                              : ((others == 1) ? " and" : ""));
6585           }
6586       printf_filtered (_("also set at pc "));
6587       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6588       printf_filtered (".\n");
6589     }
6590 }
6591 \f
6592
6593 /* Return true iff it is meaningful to use the address member of
6594    BPT.  For some breakpoint types, the address member is irrelevant
6595    and it makes no sense to attempt to compare it to other addresses
6596    (or use it for any other purpose either).
6597
6598    More specifically, each of the following breakpoint types will
6599    always have a zero valued address and we don't want to mark
6600    breakpoints of any of these types to be a duplicate of an actual
6601    breakpoint at address zero:
6602
6603       bp_watchpoint
6604       bp_catchpoint
6605
6606 */
6607
6608 static int
6609 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6610 {
6611   enum bptype type = bpt->type;
6612
6613   return (type != bp_watchpoint && type != bp_catchpoint);
6614 }
6615
6616 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6617    true if LOC1 and LOC2 represent the same watchpoint location.  */
6618
6619 static int
6620 watchpoint_locations_match (struct bp_location *loc1, 
6621                             struct bp_location *loc2)
6622 {
6623   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6624   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6625
6626   /* Both of them must exist.  */
6627   gdb_assert (w1 != NULL);
6628   gdb_assert (w2 != NULL);
6629
6630   /* If the target can evaluate the condition expression in hardware,
6631      then we we need to insert both watchpoints even if they are at
6632      the same place.  Otherwise the watchpoint will only trigger when
6633      the condition of whichever watchpoint was inserted evaluates to
6634      true, not giving a chance for GDB to check the condition of the
6635      other watchpoint.  */
6636   if ((w1->cond_exp
6637        && target_can_accel_watchpoint_condition (loc1->address, 
6638                                                  loc1->length,
6639                                                  loc1->watchpoint_type,
6640                                                  w1->cond_exp))
6641       || (w2->cond_exp
6642           && target_can_accel_watchpoint_condition (loc2->address, 
6643                                                     loc2->length,
6644                                                     loc2->watchpoint_type,
6645                                                     w2->cond_exp)))
6646     return 0;
6647
6648   /* Note that this checks the owner's type, not the location's.  In
6649      case the target does not support read watchpoints, but does
6650      support access watchpoints, we'll have bp_read_watchpoint
6651      watchpoints with hw_access locations.  Those should be considered
6652      duplicates of hw_read locations.  The hw_read locations will
6653      become hw_access locations later.  */
6654   return (loc1->owner->type == loc2->owner->type
6655           && loc1->pspace->aspace == loc2->pspace->aspace
6656           && loc1->address == loc2->address
6657           && loc1->length == loc2->length);
6658 }
6659
6660 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6661    same breakpoint location.  In most targets, this can only be true
6662    if ASPACE1 matches ASPACE2.  On targets that have global
6663    breakpoints, the address space doesn't really matter.  */
6664
6665 static int
6666 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6667                           struct address_space *aspace2, CORE_ADDR addr2)
6668 {
6669   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6670            || aspace1 == aspace2)
6671           && addr1 == addr2);
6672 }
6673
6674 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6675    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6676    matches ASPACE2.  On targets that have global breakpoints, the address
6677    space doesn't really matter.  */
6678
6679 static int
6680 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6681                                 int len1, struct address_space *aspace2,
6682                                 CORE_ADDR addr2)
6683 {
6684   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6685            || aspace1 == aspace2)
6686           && addr2 >= addr1 && addr2 < addr1 + len1);
6687 }
6688
6689 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6690    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6691    matches the breakpoint's address space.  On targets that have global
6692    breakpoints, the address space doesn't really matter.  */
6693
6694 static int
6695 breakpoint_location_address_match (struct bp_location *bl,
6696                                    struct address_space *aspace,
6697                                    CORE_ADDR addr)
6698 {
6699   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6700                                     aspace, addr)
6701           || (bl->length
6702               && breakpoint_address_match_range (bl->pspace->aspace,
6703                                                  bl->address, bl->length,
6704                                                  aspace, addr)));
6705 }
6706
6707 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6708    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6709    true, otherwise returns false.  */
6710
6711 static int
6712 tracepoint_locations_match (struct bp_location *loc1,
6713                             struct bp_location *loc2)
6714 {
6715   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6716     /* Since tracepoint locations are never duplicated with others', tracepoint
6717        locations at the same address of different tracepoints are regarded as
6718        different locations.  */
6719     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6720   else
6721     return 0;
6722 }
6723
6724 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6725    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6726    represent the same location.  */
6727
6728 static int
6729 breakpoint_locations_match (struct bp_location *loc1, 
6730                             struct bp_location *loc2)
6731 {
6732   int hw_point1, hw_point2;
6733
6734   /* Both of them must not be in moribund_locations.  */
6735   gdb_assert (loc1->owner != NULL);
6736   gdb_assert (loc2->owner != NULL);
6737
6738   hw_point1 = is_hardware_watchpoint (loc1->owner);
6739   hw_point2 = is_hardware_watchpoint (loc2->owner);
6740
6741   if (hw_point1 != hw_point2)
6742     return 0;
6743   else if (hw_point1)
6744     return watchpoint_locations_match (loc1, loc2);
6745   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6746     return tracepoint_locations_match (loc1, loc2);
6747   else
6748     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6749     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6750                                      loc2->pspace->aspace, loc2->address)
6751             && loc1->length == loc2->length);
6752 }
6753
6754 static void
6755 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6756                                int bnum, int have_bnum)
6757 {
6758   /* The longest string possibly returned by hex_string_custom
6759      is 50 chars.  These must be at least that big for safety.  */
6760   char astr1[64];
6761   char astr2[64];
6762
6763   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6764   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6765   if (have_bnum)
6766     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6767              bnum, astr1, astr2);
6768   else
6769     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6770 }
6771
6772 /* Adjust a breakpoint's address to account for architectural
6773    constraints on breakpoint placement.  Return the adjusted address.
6774    Note: Very few targets require this kind of adjustment.  For most
6775    targets, this function is simply the identity function.  */
6776
6777 static CORE_ADDR
6778 adjust_breakpoint_address (struct gdbarch *gdbarch,
6779                            CORE_ADDR bpaddr, enum bptype bptype)
6780 {
6781   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6782     {
6783       /* Very few targets need any kind of breakpoint adjustment.  */
6784       return bpaddr;
6785     }
6786   else if (bptype == bp_watchpoint
6787            || bptype == bp_hardware_watchpoint
6788            || bptype == bp_read_watchpoint
6789            || bptype == bp_access_watchpoint
6790            || bptype == bp_catchpoint)
6791     {
6792       /* Watchpoints and the various bp_catch_* eventpoints should not
6793          have their addresses modified.  */
6794       return bpaddr;
6795     }
6796   else
6797     {
6798       CORE_ADDR adjusted_bpaddr;
6799
6800       /* Some targets have architectural constraints on the placement
6801          of breakpoint instructions.  Obtain the adjusted address.  */
6802       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6803
6804       /* An adjusted breakpoint address can significantly alter
6805          a user's expectations.  Print a warning if an adjustment
6806          is required.  */
6807       if (adjusted_bpaddr != bpaddr)
6808         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6809
6810       return adjusted_bpaddr;
6811     }
6812 }
6813
6814 void
6815 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6816                   struct breakpoint *owner)
6817 {
6818   memset (loc, 0, sizeof (*loc));
6819
6820   gdb_assert (ops != NULL);
6821
6822   loc->ops = ops;
6823   loc->owner = owner;
6824   loc->cond = NULL;
6825   loc->cond_bytecode = NULL;
6826   loc->shlib_disabled = 0;
6827   loc->enabled = 1;
6828
6829   switch (owner->type)
6830     {
6831     case bp_breakpoint:
6832     case bp_until:
6833     case bp_finish:
6834     case bp_longjmp:
6835     case bp_longjmp_resume:
6836     case bp_longjmp_call_dummy:
6837     case bp_exception:
6838     case bp_exception_resume:
6839     case bp_step_resume:
6840     case bp_hp_step_resume:
6841     case bp_watchpoint_scope:
6842     case bp_call_dummy:
6843     case bp_std_terminate:
6844     case bp_shlib_event:
6845     case bp_thread_event:
6846     case bp_overlay_event:
6847     case bp_jit_event:
6848     case bp_longjmp_master:
6849     case bp_std_terminate_master:
6850     case bp_exception_master:
6851     case bp_gnu_ifunc_resolver:
6852     case bp_gnu_ifunc_resolver_return:
6853     case bp_dprintf:
6854       loc->loc_type = bp_loc_software_breakpoint;
6855       mark_breakpoint_location_modified (loc);
6856       break;
6857     case bp_hardware_breakpoint:
6858       loc->loc_type = bp_loc_hardware_breakpoint;
6859       mark_breakpoint_location_modified (loc);
6860       break;
6861     case bp_hardware_watchpoint:
6862     case bp_read_watchpoint:
6863     case bp_access_watchpoint:
6864       loc->loc_type = bp_loc_hardware_watchpoint;
6865       break;
6866     case bp_watchpoint:
6867     case bp_catchpoint:
6868     case bp_tracepoint:
6869     case bp_fast_tracepoint:
6870     case bp_static_tracepoint:
6871       loc->loc_type = bp_loc_other;
6872       break;
6873     default:
6874       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6875     }
6876
6877   loc->refc = 1;
6878 }
6879
6880 /* Allocate a struct bp_location.  */
6881
6882 static struct bp_location *
6883 allocate_bp_location (struct breakpoint *bpt)
6884 {
6885   return bpt->ops->allocate_location (bpt);
6886 }
6887
6888 static void
6889 free_bp_location (struct bp_location *loc)
6890 {
6891   loc->ops->dtor (loc);
6892   xfree (loc);
6893 }
6894
6895 /* Increment reference count.  */
6896
6897 static void
6898 incref_bp_location (struct bp_location *bl)
6899 {
6900   ++bl->refc;
6901 }
6902
6903 /* Decrement reference count.  If the reference count reaches 0,
6904    destroy the bp_location.  Sets *BLP to NULL.  */
6905
6906 static void
6907 decref_bp_location (struct bp_location **blp)
6908 {
6909   gdb_assert ((*blp)->refc > 0);
6910
6911   if (--(*blp)->refc == 0)
6912     free_bp_location (*blp);
6913   *blp = NULL;
6914 }
6915
6916 /* Add breakpoint B at the end of the global breakpoint chain.  */
6917
6918 static void
6919 add_to_breakpoint_chain (struct breakpoint *b)
6920 {
6921   struct breakpoint *b1;
6922
6923   /* Add this breakpoint to the end of the chain so that a list of
6924      breakpoints will come out in order of increasing numbers.  */
6925
6926   b1 = breakpoint_chain;
6927   if (b1 == 0)
6928     breakpoint_chain = b;
6929   else
6930     {
6931       while (b1->next)
6932         b1 = b1->next;
6933       b1->next = b;
6934     }
6935 }
6936
6937 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6938
6939 static void
6940 init_raw_breakpoint_without_location (struct breakpoint *b,
6941                                       struct gdbarch *gdbarch,
6942                                       enum bptype bptype,
6943                                       const struct breakpoint_ops *ops)
6944 {
6945   memset (b, 0, sizeof (*b));
6946
6947   gdb_assert (ops != NULL);
6948
6949   b->ops = ops;
6950   b->type = bptype;
6951   b->gdbarch = gdbarch;
6952   b->language = current_language->la_language;
6953   b->input_radix = input_radix;
6954   b->thread = -1;
6955   b->enable_state = bp_enabled;
6956   b->next = 0;
6957   b->silent = 0;
6958   b->ignore_count = 0;
6959   b->commands = NULL;
6960   b->frame_id = null_frame_id;
6961   b->condition_not_parsed = 0;
6962   b->py_bp_object = NULL;
6963   b->related_breakpoint = b;
6964 }
6965
6966 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6967    that has type BPTYPE and has no locations as yet.  */
6968
6969 static struct breakpoint *
6970 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6971                                      enum bptype bptype,
6972                                      const struct breakpoint_ops *ops)
6973 {
6974   struct breakpoint *b = XNEW (struct breakpoint);
6975
6976   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6977   add_to_breakpoint_chain (b);
6978   return b;
6979 }
6980
6981 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6982    resolutions should be made as the user specified the location explicitly
6983    enough.  */
6984
6985 static void
6986 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6987 {
6988   gdb_assert (loc->owner != NULL);
6989
6990   if (loc->owner->type == bp_breakpoint
6991       || loc->owner->type == bp_hardware_breakpoint
6992       || is_tracepoint (loc->owner))
6993     {
6994       int is_gnu_ifunc;
6995       const char *function_name;
6996       CORE_ADDR func_addr;
6997
6998       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6999                                           &func_addr, NULL, &is_gnu_ifunc);
7000
7001       if (is_gnu_ifunc && !explicit_loc)
7002         {
7003           struct breakpoint *b = loc->owner;
7004
7005           gdb_assert (loc->pspace == current_program_space);
7006           if (gnu_ifunc_resolve_name (function_name,
7007                                       &loc->requested_address))
7008             {
7009               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7010               loc->address = adjust_breakpoint_address (loc->gdbarch,
7011                                                         loc->requested_address,
7012                                                         b->type);
7013             }
7014           else if (b->type == bp_breakpoint && b->loc == loc
7015                    && loc->next == NULL && b->related_breakpoint == b)
7016             {
7017               /* Create only the whole new breakpoint of this type but do not
7018                  mess more complicated breakpoints with multiple locations.  */
7019               b->type = bp_gnu_ifunc_resolver;
7020               /* Remember the resolver's address for use by the return
7021                  breakpoint.  */
7022               loc->related_address = func_addr;
7023             }
7024         }
7025
7026       if (function_name)
7027         loc->function_name = xstrdup (function_name);
7028     }
7029 }
7030
7031 /* Attempt to determine architecture of location identified by SAL.  */
7032 struct gdbarch *
7033 get_sal_arch (struct symtab_and_line sal)
7034 {
7035   if (sal.section)
7036     return get_objfile_arch (sal.section->objfile);
7037   if (sal.symtab)
7038     return get_objfile_arch (sal.symtab->objfile);
7039
7040   return NULL;
7041 }
7042
7043 /* Low level routine for partially initializing a breakpoint of type
7044    BPTYPE.  The newly created breakpoint's address, section, source
7045    file name, and line number are provided by SAL.
7046
7047    It is expected that the caller will complete the initialization of
7048    the newly created breakpoint struct as well as output any status
7049    information regarding the creation of a new breakpoint.  */
7050
7051 static void
7052 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7053                      struct symtab_and_line sal, enum bptype bptype,
7054                      const struct breakpoint_ops *ops)
7055 {
7056   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7057
7058   add_location_to_breakpoint (b, &sal);
7059
7060   if (bptype != bp_catchpoint)
7061     gdb_assert (sal.pspace != NULL);
7062
7063   /* Store the program space that was used to set the breakpoint,
7064      except for ordinary breakpoints, which are independent of the
7065      program space.  */
7066   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7067     b->pspace = sal.pspace;
7068 }
7069
7070 /* set_raw_breakpoint is a low level routine for allocating and
7071    partially initializing a breakpoint of type BPTYPE.  The newly
7072    created breakpoint's address, section, source file name, and line
7073    number are provided by SAL.  The newly created and partially
7074    initialized breakpoint is added to the breakpoint chain and
7075    is also returned as the value of this function.
7076
7077    It is expected that the caller will complete the initialization of
7078    the newly created breakpoint struct as well as output any status
7079    information regarding the creation of a new breakpoint.  In
7080    particular, set_raw_breakpoint does NOT set the breakpoint
7081    number!  Care should be taken to not allow an error to occur
7082    prior to completing the initialization of the breakpoint.  If this
7083    should happen, a bogus breakpoint will be left on the chain.  */
7084
7085 struct breakpoint *
7086 set_raw_breakpoint (struct gdbarch *gdbarch,
7087                     struct symtab_and_line sal, enum bptype bptype,
7088                     const struct breakpoint_ops *ops)
7089 {
7090   struct breakpoint *b = XNEW (struct breakpoint);
7091
7092   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7093   add_to_breakpoint_chain (b);
7094   return b;
7095 }
7096
7097
7098 /* Note that the breakpoint object B describes a permanent breakpoint
7099    instruction, hard-wired into the inferior's code.  */
7100 void
7101 make_breakpoint_permanent (struct breakpoint *b)
7102 {
7103   struct bp_location *bl;
7104
7105   b->enable_state = bp_permanent;
7106
7107   /* By definition, permanent breakpoints are already present in the
7108      code.  Mark all locations as inserted.  For now,
7109      make_breakpoint_permanent is called in just one place, so it's
7110      hard to say if it's reasonable to have permanent breakpoint with
7111      multiple locations or not, but it's easy to implement.  */
7112   for (bl = b->loc; bl; bl = bl->next)
7113     bl->inserted = 1;
7114 }
7115
7116 /* Call this routine when stepping and nexting to enable a breakpoint
7117    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7118    initiated the operation.  */
7119
7120 void
7121 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7122 {
7123   struct breakpoint *b, *b_tmp;
7124   int thread = tp->num;
7125
7126   /* To avoid having to rescan all objfile symbols at every step,
7127      we maintain a list of continually-inserted but always disabled
7128      longjmp "master" breakpoints.  Here, we simply create momentary
7129      clones of those and enable them for the requested thread.  */
7130   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7131     if (b->pspace == current_program_space
7132         && (b->type == bp_longjmp_master
7133             || b->type == bp_exception_master))
7134       {
7135         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7136         struct breakpoint *clone;
7137
7138         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7139            after their removal.  */
7140         clone = momentary_breakpoint_from_master (b, type,
7141                                                   &longjmp_breakpoint_ops);
7142         clone->thread = thread;
7143       }
7144
7145   tp->initiating_frame = frame;
7146 }
7147
7148 /* Delete all longjmp breakpoints from THREAD.  */
7149 void
7150 delete_longjmp_breakpoint (int thread)
7151 {
7152   struct breakpoint *b, *b_tmp;
7153
7154   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7155     if (b->type == bp_longjmp || b->type == bp_exception)
7156       {
7157         if (b->thread == thread)
7158           delete_breakpoint (b);
7159       }
7160 }
7161
7162 void
7163 delete_longjmp_breakpoint_at_next_stop (int thread)
7164 {
7165   struct breakpoint *b, *b_tmp;
7166
7167   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7168     if (b->type == bp_longjmp || b->type == bp_exception)
7169       {
7170         if (b->thread == thread)
7171           b->disposition = disp_del_at_next_stop;
7172       }
7173 }
7174
7175 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7176    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7177    pointer to any of them.  Return NULL if this system cannot place longjmp
7178    breakpoints.  */
7179
7180 struct breakpoint *
7181 set_longjmp_breakpoint_for_call_dummy (void)
7182 {
7183   struct breakpoint *b, *retval = NULL;
7184
7185   ALL_BREAKPOINTS (b)
7186     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7187       {
7188         struct breakpoint *new_b;
7189
7190         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7191                                                   &momentary_breakpoint_ops);
7192         new_b->thread = pid_to_thread_id (inferior_ptid);
7193
7194         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7195
7196         gdb_assert (new_b->related_breakpoint == new_b);
7197         if (retval == NULL)
7198           retval = new_b;
7199         new_b->related_breakpoint = retval;
7200         while (retval->related_breakpoint != new_b->related_breakpoint)
7201           retval = retval->related_breakpoint;
7202         retval->related_breakpoint = new_b;
7203       }
7204
7205   return retval;
7206 }
7207
7208 /* Verify all existing dummy frames and their associated breakpoints for
7209    THREAD.  Remove those which can no longer be found in the current frame
7210    stack.
7211
7212    You should call this function only at places where it is safe to currently
7213    unwind the whole stack.  Failed stack unwind would discard live dummy
7214    frames.  */
7215
7216 void
7217 check_longjmp_breakpoint_for_call_dummy (int thread)
7218 {
7219   struct breakpoint *b, *b_tmp;
7220
7221   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7222     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7223       {
7224         struct breakpoint *dummy_b = b->related_breakpoint;
7225
7226         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7227           dummy_b = dummy_b->related_breakpoint;
7228         if (dummy_b->type != bp_call_dummy
7229             || frame_find_by_id (dummy_b->frame_id) != NULL)
7230           continue;
7231         
7232         dummy_frame_discard (dummy_b->frame_id);
7233
7234         while (b->related_breakpoint != b)
7235           {
7236             if (b_tmp == b->related_breakpoint)
7237               b_tmp = b->related_breakpoint->next;
7238             delete_breakpoint (b->related_breakpoint);
7239           }
7240         delete_breakpoint (b);
7241       }
7242 }
7243
7244 void
7245 enable_overlay_breakpoints (void)
7246 {
7247   struct breakpoint *b;
7248
7249   ALL_BREAKPOINTS (b)
7250     if (b->type == bp_overlay_event)
7251     {
7252       b->enable_state = bp_enabled;
7253       update_global_location_list (1);
7254       overlay_events_enabled = 1;
7255     }
7256 }
7257
7258 void
7259 disable_overlay_breakpoints (void)
7260 {
7261   struct breakpoint *b;
7262
7263   ALL_BREAKPOINTS (b)
7264     if (b->type == bp_overlay_event)
7265     {
7266       b->enable_state = bp_disabled;
7267       update_global_location_list (0);
7268       overlay_events_enabled = 0;
7269     }
7270 }
7271
7272 /* Set an active std::terminate breakpoint for each std::terminate
7273    master breakpoint.  */
7274 void
7275 set_std_terminate_breakpoint (void)
7276 {
7277   struct breakpoint *b, *b_tmp;
7278
7279   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7280     if (b->pspace == current_program_space
7281         && b->type == bp_std_terminate_master)
7282       {
7283         momentary_breakpoint_from_master (b, bp_std_terminate,
7284                                           &momentary_breakpoint_ops);
7285       }
7286 }
7287
7288 /* Delete all the std::terminate breakpoints.  */
7289 void
7290 delete_std_terminate_breakpoint (void)
7291 {
7292   struct breakpoint *b, *b_tmp;
7293
7294   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7295     if (b->type == bp_std_terminate)
7296       delete_breakpoint (b);
7297 }
7298
7299 struct breakpoint *
7300 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7301 {
7302   struct breakpoint *b;
7303
7304   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7305                                   &internal_breakpoint_ops);
7306
7307   b->enable_state = bp_enabled;
7308   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7309   b->addr_string
7310     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7311
7312   update_global_location_list_nothrow (1);
7313
7314   return b;
7315 }
7316
7317 void
7318 remove_thread_event_breakpoints (void)
7319 {
7320   struct breakpoint *b, *b_tmp;
7321
7322   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7323     if (b->type == bp_thread_event
7324         && b->loc->pspace == current_program_space)
7325       delete_breakpoint (b);
7326 }
7327
7328 struct lang_and_radix
7329   {
7330     enum language lang;
7331     int radix;
7332   };
7333
7334 /* Create a breakpoint for JIT code registration and unregistration.  */
7335
7336 struct breakpoint *
7337 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7338 {
7339   struct breakpoint *b;
7340
7341   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7342                                   &internal_breakpoint_ops);
7343   update_global_location_list_nothrow (1);
7344   return b;
7345 }
7346
7347 /* Remove JIT code registration and unregistration breakpoint(s).  */
7348
7349 void
7350 remove_jit_event_breakpoints (void)
7351 {
7352   struct breakpoint *b, *b_tmp;
7353
7354   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7355     if (b->type == bp_jit_event
7356         && b->loc->pspace == current_program_space)
7357       delete_breakpoint (b);
7358 }
7359
7360 void
7361 remove_solib_event_breakpoints (void)
7362 {
7363   struct breakpoint *b, *b_tmp;
7364
7365   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7366     if (b->type == bp_shlib_event
7367         && b->loc->pspace == current_program_space)
7368       delete_breakpoint (b);
7369 }
7370
7371 struct breakpoint *
7372 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7373 {
7374   struct breakpoint *b;
7375
7376   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7377                                   &internal_breakpoint_ops);
7378   update_global_location_list_nothrow (1);
7379   return b;
7380 }
7381
7382 /* Disable any breakpoints that are on code in shared libraries.  Only
7383    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7384
7385 void
7386 disable_breakpoints_in_shlibs (void)
7387 {
7388   struct bp_location *loc, **locp_tmp;
7389
7390   ALL_BP_LOCATIONS (loc, locp_tmp)
7391   {
7392     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7393     struct breakpoint *b = loc->owner;
7394
7395     /* We apply the check to all breakpoints, including disabled for
7396        those with loc->duplicate set.  This is so that when breakpoint
7397        becomes enabled, or the duplicate is removed, gdb will try to
7398        insert all breakpoints.  If we don't set shlib_disabled here,
7399        we'll try to insert those breakpoints and fail.  */
7400     if (((b->type == bp_breakpoint)
7401          || (b->type == bp_jit_event)
7402          || (b->type == bp_hardware_breakpoint)
7403          || (is_tracepoint (b)))
7404         && loc->pspace == current_program_space
7405         && !loc->shlib_disabled
7406 #ifdef PC_SOLIB
7407         && PC_SOLIB (loc->address)
7408 #else
7409         && solib_name_from_address (loc->pspace, loc->address)
7410 #endif
7411         )
7412       {
7413         loc->shlib_disabled = 1;
7414       }
7415   }
7416 }
7417
7418 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7419    library.  Only apply to enabled breakpoints, disabled ones can just stay
7420    disabled.  */
7421
7422 static void
7423 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7424 {
7425   struct bp_location *loc, **locp_tmp;
7426   int disabled_shlib_breaks = 0;
7427
7428   /* SunOS a.out shared libraries are always mapped, so do not
7429      disable breakpoints; they will only be reported as unloaded
7430      through clear_solib when GDB discards its shared library
7431      list.  See clear_solib for more information.  */
7432   if (exec_bfd != NULL
7433       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7434     return;
7435
7436   ALL_BP_LOCATIONS (loc, locp_tmp)
7437   {
7438     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7439     struct breakpoint *b = loc->owner;
7440
7441     if (solib->pspace == loc->pspace
7442         && !loc->shlib_disabled
7443         && (((b->type == bp_breakpoint
7444               || b->type == bp_jit_event
7445               || b->type == bp_hardware_breakpoint)
7446              && (loc->loc_type == bp_loc_hardware_breakpoint
7447                  || loc->loc_type == bp_loc_software_breakpoint))
7448             || is_tracepoint (b))
7449         && solib_contains_address_p (solib, loc->address))
7450       {
7451         loc->shlib_disabled = 1;
7452         /* At this point, we cannot rely on remove_breakpoint
7453            succeeding so we must mark the breakpoint as not inserted
7454            to prevent future errors occurring in remove_breakpoints.  */
7455         loc->inserted = 0;
7456
7457         /* This may cause duplicate notifications for the same breakpoint.  */
7458         observer_notify_breakpoint_modified (b);
7459
7460         if (!disabled_shlib_breaks)
7461           {
7462             target_terminal_ours_for_output ();
7463             warning (_("Temporarily disabling breakpoints "
7464                        "for unloaded shared library \"%s\""),
7465                      solib->so_name);
7466           }
7467         disabled_shlib_breaks = 1;
7468       }
7469   }
7470 }
7471
7472 /* FORK & VFORK catchpoints.  */
7473
7474 /* An instance of this type is used to represent a fork or vfork
7475    catchpoint.  It includes a "struct breakpoint" as a kind of base
7476    class; users downcast to "struct breakpoint *" when needed.  A
7477    breakpoint is really of this type iff its ops pointer points to
7478    CATCH_FORK_BREAKPOINT_OPS.  */
7479
7480 struct fork_catchpoint
7481 {
7482   /* The base class.  */
7483   struct breakpoint base;
7484
7485   /* Process id of a child process whose forking triggered this
7486      catchpoint.  This field is only valid immediately after this
7487      catchpoint has triggered.  */
7488   ptid_t forked_inferior_pid;
7489 };
7490
7491 /* Implement the "insert" breakpoint_ops method for fork
7492    catchpoints.  */
7493
7494 static int
7495 insert_catch_fork (struct bp_location *bl)
7496 {
7497   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7498 }
7499
7500 /* Implement the "remove" breakpoint_ops method for fork
7501    catchpoints.  */
7502
7503 static int
7504 remove_catch_fork (struct bp_location *bl)
7505 {
7506   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7507 }
7508
7509 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7510    catchpoints.  */
7511
7512 static int
7513 breakpoint_hit_catch_fork (const struct bp_location *bl,
7514                            struct address_space *aspace, CORE_ADDR bp_addr,
7515                            const struct target_waitstatus *ws)
7516 {
7517   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7518
7519   if (ws->kind != TARGET_WAITKIND_FORKED)
7520     return 0;
7521
7522   c->forked_inferior_pid = ws->value.related_pid;
7523   return 1;
7524 }
7525
7526 /* Implement the "print_it" breakpoint_ops method for fork
7527    catchpoints.  */
7528
7529 static enum print_stop_action
7530 print_it_catch_fork (bpstat bs)
7531 {
7532   struct ui_out *uiout = current_uiout;
7533   struct breakpoint *b = bs->breakpoint_at;
7534   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7535
7536   annotate_catchpoint (b->number);
7537   if (b->disposition == disp_del)
7538     ui_out_text (uiout, "\nTemporary catchpoint ");
7539   else
7540     ui_out_text (uiout, "\nCatchpoint ");
7541   if (ui_out_is_mi_like_p (uiout))
7542     {
7543       ui_out_field_string (uiout, "reason",
7544                            async_reason_lookup (EXEC_ASYNC_FORK));
7545       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7546     }
7547   ui_out_field_int (uiout, "bkptno", b->number);
7548   ui_out_text (uiout, " (forked process ");
7549   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7550   ui_out_text (uiout, "), ");
7551   return PRINT_SRC_AND_LOC;
7552 }
7553
7554 /* Implement the "print_one" breakpoint_ops method for fork
7555    catchpoints.  */
7556
7557 static void
7558 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7559 {
7560   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7561   struct value_print_options opts;
7562   struct ui_out *uiout = current_uiout;
7563
7564   get_user_print_options (&opts);
7565
7566   /* Field 4, the address, is omitted (which makes the columns not
7567      line up too nicely with the headers, but the effect is relatively
7568      readable).  */
7569   if (opts.addressprint)
7570     ui_out_field_skip (uiout, "addr");
7571   annotate_field (5);
7572   ui_out_text (uiout, "fork");
7573   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7574     {
7575       ui_out_text (uiout, ", process ");
7576       ui_out_field_int (uiout, "what",
7577                         ptid_get_pid (c->forked_inferior_pid));
7578       ui_out_spaces (uiout, 1);
7579     }
7580
7581   if (ui_out_is_mi_like_p (uiout))
7582     ui_out_field_string (uiout, "catch-type", "fork");
7583 }
7584
7585 /* Implement the "print_mention" breakpoint_ops method for fork
7586    catchpoints.  */
7587
7588 static void
7589 print_mention_catch_fork (struct breakpoint *b)
7590 {
7591   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7592 }
7593
7594 /* Implement the "print_recreate" breakpoint_ops method for fork
7595    catchpoints.  */
7596
7597 static void
7598 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7599 {
7600   fprintf_unfiltered (fp, "catch fork");
7601   print_recreate_thread (b, fp);
7602 }
7603
7604 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7605
7606 static struct breakpoint_ops catch_fork_breakpoint_ops;
7607
7608 /* Implement the "insert" breakpoint_ops method for vfork
7609    catchpoints.  */
7610
7611 static int
7612 insert_catch_vfork (struct bp_location *bl)
7613 {
7614   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7615 }
7616
7617 /* Implement the "remove" breakpoint_ops method for vfork
7618    catchpoints.  */
7619
7620 static int
7621 remove_catch_vfork (struct bp_location *bl)
7622 {
7623   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7624 }
7625
7626 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7627    catchpoints.  */
7628
7629 static int
7630 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7631                             struct address_space *aspace, CORE_ADDR bp_addr,
7632                             const struct target_waitstatus *ws)
7633 {
7634   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7635
7636   if (ws->kind != TARGET_WAITKIND_VFORKED)
7637     return 0;
7638
7639   c->forked_inferior_pid = ws->value.related_pid;
7640   return 1;
7641 }
7642
7643 /* Implement the "print_it" breakpoint_ops method for vfork
7644    catchpoints.  */
7645
7646 static enum print_stop_action
7647 print_it_catch_vfork (bpstat bs)
7648 {
7649   struct ui_out *uiout = current_uiout;
7650   struct breakpoint *b = bs->breakpoint_at;
7651   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7652
7653   annotate_catchpoint (b->number);
7654   if (b->disposition == disp_del)
7655     ui_out_text (uiout, "\nTemporary catchpoint ");
7656   else
7657     ui_out_text (uiout, "\nCatchpoint ");
7658   if (ui_out_is_mi_like_p (uiout))
7659     {
7660       ui_out_field_string (uiout, "reason",
7661                            async_reason_lookup (EXEC_ASYNC_VFORK));
7662       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7663     }
7664   ui_out_field_int (uiout, "bkptno", b->number);
7665   ui_out_text (uiout, " (vforked process ");
7666   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7667   ui_out_text (uiout, "), ");
7668   return PRINT_SRC_AND_LOC;
7669 }
7670
7671 /* Implement the "print_one" breakpoint_ops method for vfork
7672    catchpoints.  */
7673
7674 static void
7675 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7676 {
7677   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7678   struct value_print_options opts;
7679   struct ui_out *uiout = current_uiout;
7680
7681   get_user_print_options (&opts);
7682   /* Field 4, the address, is omitted (which makes the columns not
7683      line up too nicely with the headers, but the effect is relatively
7684      readable).  */
7685   if (opts.addressprint)
7686     ui_out_field_skip (uiout, "addr");
7687   annotate_field (5);
7688   ui_out_text (uiout, "vfork");
7689   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7690     {
7691       ui_out_text (uiout, ", process ");
7692       ui_out_field_int (uiout, "what",
7693                         ptid_get_pid (c->forked_inferior_pid));
7694       ui_out_spaces (uiout, 1);
7695     }
7696
7697   if (ui_out_is_mi_like_p (uiout))
7698     ui_out_field_string (uiout, "catch-type", "vfork");
7699 }
7700
7701 /* Implement the "print_mention" breakpoint_ops method for vfork
7702    catchpoints.  */
7703
7704 static void
7705 print_mention_catch_vfork (struct breakpoint *b)
7706 {
7707   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7708 }
7709
7710 /* Implement the "print_recreate" breakpoint_ops method for vfork
7711    catchpoints.  */
7712
7713 static void
7714 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7715 {
7716   fprintf_unfiltered (fp, "catch vfork");
7717   print_recreate_thread (b, fp);
7718 }
7719
7720 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7721
7722 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7723
7724 /* An instance of this type is used to represent an solib catchpoint.
7725    It includes a "struct breakpoint" as a kind of base class; users
7726    downcast to "struct breakpoint *" when needed.  A breakpoint is
7727    really of this type iff its ops pointer points to
7728    CATCH_SOLIB_BREAKPOINT_OPS.  */
7729
7730 struct solib_catchpoint
7731 {
7732   /* The base class.  */
7733   struct breakpoint base;
7734
7735   /* True for "catch load", false for "catch unload".  */
7736   unsigned char is_load;
7737
7738   /* Regular expression to match, if any.  COMPILED is only valid when
7739      REGEX is non-NULL.  */
7740   char *regex;
7741   regex_t compiled;
7742 };
7743
7744 static void
7745 dtor_catch_solib (struct breakpoint *b)
7746 {
7747   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7748
7749   if (self->regex)
7750     regfree (&self->compiled);
7751   xfree (self->regex);
7752
7753   base_breakpoint_ops.dtor (b);
7754 }
7755
7756 static int
7757 insert_catch_solib (struct bp_location *ignore)
7758 {
7759   return 0;
7760 }
7761
7762 static int
7763 remove_catch_solib (struct bp_location *ignore)
7764 {
7765   return 0;
7766 }
7767
7768 static int
7769 breakpoint_hit_catch_solib (const struct bp_location *bl,
7770                             struct address_space *aspace,
7771                             CORE_ADDR bp_addr,
7772                             const struct target_waitstatus *ws)
7773 {
7774   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7775   struct breakpoint *other;
7776
7777   if (ws->kind == TARGET_WAITKIND_LOADED)
7778     return 1;
7779
7780   ALL_BREAKPOINTS (other)
7781   {
7782     struct bp_location *other_bl;
7783
7784     if (other == bl->owner)
7785       continue;
7786
7787     if (other->type != bp_shlib_event)
7788       continue;
7789
7790     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7791       continue;
7792
7793     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7794       {
7795         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7796           return 1;
7797       }
7798   }
7799
7800   return 0;
7801 }
7802
7803 static void
7804 check_status_catch_solib (struct bpstats *bs)
7805 {
7806   struct solib_catchpoint *self
7807     = (struct solib_catchpoint *) bs->breakpoint_at;
7808   int ix;
7809
7810   if (self->is_load)
7811     {
7812       struct so_list *iter;
7813
7814       for (ix = 0;
7815            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7816                         ix, iter);
7817            ++ix)
7818         {
7819           if (!self->regex
7820               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7821             return;
7822         }
7823     }
7824   else
7825     {
7826       char *iter;
7827
7828       for (ix = 0;
7829            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7830                         ix, iter);
7831            ++ix)
7832         {
7833           if (!self->regex
7834               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7835             return;
7836         }
7837     }
7838
7839   bs->stop = 0;
7840   bs->print_it = print_it_noop;
7841 }
7842
7843 static enum print_stop_action
7844 print_it_catch_solib (bpstat bs)
7845 {
7846   struct breakpoint *b = bs->breakpoint_at;
7847   struct ui_out *uiout = current_uiout;
7848
7849   annotate_catchpoint (b->number);
7850   if (b->disposition == disp_del)
7851     ui_out_text (uiout, "\nTemporary catchpoint ");
7852   else
7853     ui_out_text (uiout, "\nCatchpoint ");
7854   ui_out_field_int (uiout, "bkptno", b->number);
7855   ui_out_text (uiout, "\n");
7856   if (ui_out_is_mi_like_p (uiout))
7857     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7858   print_solib_event (1);
7859   return PRINT_SRC_AND_LOC;
7860 }
7861
7862 static void
7863 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7864 {
7865   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7866   struct value_print_options opts;
7867   struct ui_out *uiout = current_uiout;
7868   char *msg;
7869
7870   get_user_print_options (&opts);
7871   /* Field 4, the address, is omitted (which makes the columns not
7872      line up too nicely with the headers, but the effect is relatively
7873      readable).  */
7874   if (opts.addressprint)
7875     {
7876       annotate_field (4);
7877       ui_out_field_skip (uiout, "addr");
7878     }
7879
7880   annotate_field (5);
7881   if (self->is_load)
7882     {
7883       if (self->regex)
7884         msg = xstrprintf (_("load of library matching %s"), self->regex);
7885       else
7886         msg = xstrdup (_("load of library"));
7887     }
7888   else
7889     {
7890       if (self->regex)
7891         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7892       else
7893         msg = xstrdup (_("unload of library"));
7894     }
7895   ui_out_field_string (uiout, "what", msg);
7896   xfree (msg);
7897
7898   if (ui_out_is_mi_like_p (uiout))
7899     ui_out_field_string (uiout, "catch-type",
7900                          self->is_load ? "load" : "unload");
7901 }
7902
7903 static void
7904 print_mention_catch_solib (struct breakpoint *b)
7905 {
7906   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7907
7908   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7909                    self->is_load ? "load" : "unload");
7910 }
7911
7912 static void
7913 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7914 {
7915   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7916
7917   fprintf_unfiltered (fp, "%s %s",
7918                       b->disposition == disp_del ? "tcatch" : "catch",
7919                       self->is_load ? "load" : "unload");
7920   if (self->regex)
7921     fprintf_unfiltered (fp, " %s", self->regex);
7922   fprintf_unfiltered (fp, "\n");
7923 }
7924
7925 static struct breakpoint_ops catch_solib_breakpoint_ops;
7926
7927 /* Shared helper function (MI and CLI) for creating and installing
7928    a shared object event catchpoint.  If IS_LOAD is non-zero then
7929    the events to be caught are load events, otherwise they are
7930    unload events.  If IS_TEMP is non-zero the catchpoint is a
7931    temporary one.  If ENABLED is non-zero the catchpoint is
7932    created in an enabled state.  */
7933
7934 void
7935 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7936 {
7937   struct solib_catchpoint *c;
7938   struct gdbarch *gdbarch = get_current_arch ();
7939   struct cleanup *cleanup;
7940
7941   if (!arg)
7942     arg = "";
7943   arg = skip_spaces (arg);
7944
7945   c = XCNEW (struct solib_catchpoint);
7946   cleanup = make_cleanup (xfree, c);
7947
7948   if (*arg != '\0')
7949     {
7950       int errcode;
7951
7952       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7953       if (errcode != 0)
7954         {
7955           char *err = get_regcomp_error (errcode, &c->compiled);
7956
7957           make_cleanup (xfree, err);
7958           error (_("Invalid regexp (%s): %s"), err, arg);
7959         }
7960       c->regex = xstrdup (arg);
7961     }
7962
7963   c->is_load = is_load;
7964   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7965                    &catch_solib_breakpoint_ops);
7966
7967   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7968
7969   discard_cleanups (cleanup);
7970   install_breakpoint (0, &c->base, 1);
7971 }
7972
7973 /* A helper function that does all the work for "catch load" and
7974    "catch unload".  */
7975
7976 static void
7977 catch_load_or_unload (char *arg, int from_tty, int is_load,
7978                       struct cmd_list_element *command)
7979 {
7980   int tempflag;
7981   const int enabled = 1;
7982
7983   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7984
7985   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7986 }
7987
7988 static void
7989 catch_load_command_1 (char *arg, int from_tty,
7990                       struct cmd_list_element *command)
7991 {
7992   catch_load_or_unload (arg, from_tty, 1, command);
7993 }
7994
7995 static void
7996 catch_unload_command_1 (char *arg, int from_tty,
7997                         struct cmd_list_element *command)
7998 {
7999   catch_load_or_unload (arg, from_tty, 0, command);
8000 }
8001
8002 /* An instance of this type is used to represent a syscall catchpoint.
8003    It includes a "struct breakpoint" as a kind of base class; users
8004    downcast to "struct breakpoint *" when needed.  A breakpoint is
8005    really of this type iff its ops pointer points to
8006    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8007
8008 struct syscall_catchpoint
8009 {
8010   /* The base class.  */
8011   struct breakpoint base;
8012
8013   /* Syscall numbers used for the 'catch syscall' feature.  If no
8014      syscall has been specified for filtering, its value is NULL.
8015      Otherwise, it holds a list of all syscalls to be caught.  The
8016      list elements are allocated with xmalloc.  */
8017   VEC(int) *syscalls_to_be_caught;
8018 };
8019
8020 /* Implement the "dtor" breakpoint_ops method for syscall
8021    catchpoints.  */
8022
8023 static void
8024 dtor_catch_syscall (struct breakpoint *b)
8025 {
8026   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8027
8028   VEC_free (int, c->syscalls_to_be_caught);
8029
8030   base_breakpoint_ops.dtor (b);
8031 }
8032
8033 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8034
8035 struct catch_syscall_inferior_data
8036 {
8037   /* We keep a count of the number of times the user has requested a
8038      particular syscall to be tracked, and pass this information to the
8039      target.  This lets capable targets implement filtering directly.  */
8040
8041   /* Number of times that "any" syscall is requested.  */
8042   int any_syscall_count;
8043
8044   /* Count of each system call.  */
8045   VEC(int) *syscalls_counts;
8046
8047   /* This counts all syscall catch requests, so we can readily determine
8048      if any catching is necessary.  */
8049   int total_syscalls_count;
8050 };
8051
8052 static struct catch_syscall_inferior_data*
8053 get_catch_syscall_inferior_data (struct inferior *inf)
8054 {
8055   struct catch_syscall_inferior_data *inf_data;
8056
8057   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8058   if (inf_data == NULL)
8059     {
8060       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8061       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8062     }
8063
8064   return inf_data;
8065 }
8066
8067 static void
8068 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8069 {
8070   xfree (arg);
8071 }
8072
8073
8074 /* Implement the "insert" breakpoint_ops method for syscall
8075    catchpoints.  */
8076
8077 static int
8078 insert_catch_syscall (struct bp_location *bl)
8079 {
8080   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8081   struct inferior *inf = current_inferior ();
8082   struct catch_syscall_inferior_data *inf_data
8083     = get_catch_syscall_inferior_data (inf);
8084
8085   ++inf_data->total_syscalls_count;
8086   if (!c->syscalls_to_be_caught)
8087     ++inf_data->any_syscall_count;
8088   else
8089     {
8090       int i, iter;
8091
8092       for (i = 0;
8093            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8094            i++)
8095         {
8096           int elem;
8097
8098           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8099             {
8100               int old_size = VEC_length (int, inf_data->syscalls_counts);
8101               uintptr_t vec_addr_offset
8102                 = old_size * ((uintptr_t) sizeof (int));
8103               uintptr_t vec_addr;
8104               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8105               vec_addr = ((uintptr_t) VEC_address (int,
8106                                                   inf_data->syscalls_counts)
8107                           + vec_addr_offset);
8108               memset ((void *) vec_addr, 0,
8109                       (iter + 1 - old_size) * sizeof (int));
8110             }
8111           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8112           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8113         }
8114     }
8115
8116   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8117                                         inf_data->total_syscalls_count != 0,
8118                                         inf_data->any_syscall_count,
8119                                         VEC_length (int,
8120                                                     inf_data->syscalls_counts),
8121                                         VEC_address (int,
8122                                                      inf_data->syscalls_counts));
8123 }
8124
8125 /* Implement the "remove" breakpoint_ops method for syscall
8126    catchpoints.  */
8127
8128 static int
8129 remove_catch_syscall (struct bp_location *bl)
8130 {
8131   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8132   struct inferior *inf = current_inferior ();
8133   struct catch_syscall_inferior_data *inf_data
8134     = get_catch_syscall_inferior_data (inf);
8135
8136   --inf_data->total_syscalls_count;
8137   if (!c->syscalls_to_be_caught)
8138     --inf_data->any_syscall_count;
8139   else
8140     {
8141       int i, iter;
8142
8143       for (i = 0;
8144            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8145            i++)
8146         {
8147           int elem;
8148           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8149             /* Shouldn't happen.  */
8150             continue;
8151           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8152           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8153         }
8154     }
8155
8156   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8157                                         inf_data->total_syscalls_count != 0,
8158                                         inf_data->any_syscall_count,
8159                                         VEC_length (int,
8160                                                     inf_data->syscalls_counts),
8161                                         VEC_address (int,
8162                                                      inf_data->syscalls_counts));
8163 }
8164
8165 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8166    catchpoints.  */
8167
8168 static int
8169 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8170                               struct address_space *aspace, CORE_ADDR bp_addr,
8171                               const struct target_waitstatus *ws)
8172 {
8173   /* We must check if we are catching specific syscalls in this
8174      breakpoint.  If we are, then we must guarantee that the called
8175      syscall is the same syscall we are catching.  */
8176   int syscall_number = 0;
8177   const struct syscall_catchpoint *c
8178     = (const struct syscall_catchpoint *) bl->owner;
8179
8180   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8181       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8182     return 0;
8183
8184   syscall_number = ws->value.syscall_number;
8185
8186   /* Now, checking if the syscall is the same.  */
8187   if (c->syscalls_to_be_caught)
8188     {
8189       int i, iter;
8190
8191       for (i = 0;
8192            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8193            i++)
8194         if (syscall_number == iter)
8195           break;
8196       /* Not the same.  */
8197       if (!iter)
8198         return 0;
8199     }
8200
8201   return 1;
8202 }
8203
8204 /* Implement the "print_it" breakpoint_ops method for syscall
8205    catchpoints.  */
8206
8207 static enum print_stop_action
8208 print_it_catch_syscall (bpstat bs)
8209 {
8210   struct ui_out *uiout = current_uiout;
8211   struct breakpoint *b = bs->breakpoint_at;
8212   /* These are needed because we want to know in which state a
8213      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8214      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8215      must print "called syscall" or "returned from syscall".  */
8216   ptid_t ptid;
8217   struct target_waitstatus last;
8218   struct syscall s;
8219
8220   get_last_target_status (&ptid, &last);
8221
8222   get_syscall_by_number (last.value.syscall_number, &s);
8223
8224   annotate_catchpoint (b->number);
8225
8226   if (b->disposition == disp_del)
8227     ui_out_text (uiout, "\nTemporary catchpoint ");
8228   else
8229     ui_out_text (uiout, "\nCatchpoint ");
8230   if (ui_out_is_mi_like_p (uiout))
8231     {
8232       ui_out_field_string (uiout, "reason",
8233                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8234                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8235                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8236       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8237     }
8238   ui_out_field_int (uiout, "bkptno", b->number);
8239
8240   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8241     ui_out_text (uiout, " (call to syscall ");
8242   else
8243     ui_out_text (uiout, " (returned from syscall ");
8244
8245   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8246     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8247   if (s.name != NULL)
8248     ui_out_field_string (uiout, "syscall-name", s.name);
8249
8250   ui_out_text (uiout, "), ");
8251
8252   return PRINT_SRC_AND_LOC;
8253 }
8254
8255 /* Implement the "print_one" breakpoint_ops method for syscall
8256    catchpoints.  */
8257
8258 static void
8259 print_one_catch_syscall (struct breakpoint *b,
8260                          struct bp_location **last_loc)
8261 {
8262   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8263   struct value_print_options opts;
8264   struct ui_out *uiout = current_uiout;
8265
8266   get_user_print_options (&opts);
8267   /* Field 4, the address, is omitted (which makes the columns not
8268      line up too nicely with the headers, but the effect is relatively
8269      readable).  */
8270   if (opts.addressprint)
8271     ui_out_field_skip (uiout, "addr");
8272   annotate_field (5);
8273
8274   if (c->syscalls_to_be_caught
8275       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8276     ui_out_text (uiout, "syscalls \"");
8277   else
8278     ui_out_text (uiout, "syscall \"");
8279
8280   if (c->syscalls_to_be_caught)
8281     {
8282       int i, iter;
8283       char *text = xstrprintf ("%s", "");
8284
8285       for (i = 0;
8286            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8287            i++)
8288         {
8289           char *x = text;
8290           struct syscall s;
8291           get_syscall_by_number (iter, &s);
8292
8293           if (s.name != NULL)
8294             text = xstrprintf ("%s%s, ", text, s.name);
8295           else
8296             text = xstrprintf ("%s%d, ", text, iter);
8297
8298           /* We have to xfree the last 'text' (now stored at 'x')
8299              because xstrprintf dynamically allocates new space for it
8300              on every call.  */
8301           xfree (x);
8302         }
8303       /* Remove the last comma.  */
8304       text[strlen (text) - 2] = '\0';
8305       ui_out_field_string (uiout, "what", text);
8306     }
8307   else
8308     ui_out_field_string (uiout, "what", "<any syscall>");
8309   ui_out_text (uiout, "\" ");
8310
8311   if (ui_out_is_mi_like_p (uiout))
8312     ui_out_field_string (uiout, "catch-type", "syscall");
8313 }
8314
8315 /* Implement the "print_mention" breakpoint_ops method for syscall
8316    catchpoints.  */
8317
8318 static void
8319 print_mention_catch_syscall (struct breakpoint *b)
8320 {
8321   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8322
8323   if (c->syscalls_to_be_caught)
8324     {
8325       int i, iter;
8326
8327       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8328         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8329       else
8330         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8331
8332       for (i = 0;
8333            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8334            i++)
8335         {
8336           struct syscall s;
8337           get_syscall_by_number (iter, &s);
8338
8339           if (s.name)
8340             printf_filtered (" '%s' [%d]", s.name, s.number);
8341           else
8342             printf_filtered (" %d", s.number);
8343         }
8344       printf_filtered (")");
8345     }
8346   else
8347     printf_filtered (_("Catchpoint %d (any syscall)"),
8348                      b->number);
8349 }
8350
8351 /* Implement the "print_recreate" breakpoint_ops method for syscall
8352    catchpoints.  */
8353
8354 static void
8355 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8356 {
8357   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8358
8359   fprintf_unfiltered (fp, "catch syscall");
8360
8361   if (c->syscalls_to_be_caught)
8362     {
8363       int i, iter;
8364
8365       for (i = 0;
8366            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8367            i++)
8368         {
8369           struct syscall s;
8370
8371           get_syscall_by_number (iter, &s);
8372           if (s.name)
8373             fprintf_unfiltered (fp, " %s", s.name);
8374           else
8375             fprintf_unfiltered (fp, " %d", s.number);
8376         }
8377     }
8378   print_recreate_thread (b, fp);
8379 }
8380
8381 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8382
8383 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8384
8385 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8386
8387 static int
8388 syscall_catchpoint_p (struct breakpoint *b)
8389 {
8390   return (b->ops == &catch_syscall_breakpoint_ops);
8391 }
8392
8393 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8394    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8395    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8396    the breakpoint_ops structure associated to the catchpoint.  */
8397
8398 void
8399 init_catchpoint (struct breakpoint *b,
8400                  struct gdbarch *gdbarch, int tempflag,
8401                  char *cond_string,
8402                  const struct breakpoint_ops *ops)
8403 {
8404   struct symtab_and_line sal;
8405
8406   init_sal (&sal);
8407   sal.pspace = current_program_space;
8408
8409   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8410
8411   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8412   b->disposition = tempflag ? disp_del : disp_donttouch;
8413 }
8414
8415 void
8416 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8417 {
8418   add_to_breakpoint_chain (b);
8419   set_breakpoint_number (internal, b);
8420   if (is_tracepoint (b))
8421     set_tracepoint_count (breakpoint_count);
8422   if (!internal)
8423     mention (b);
8424   observer_notify_breakpoint_created (b);
8425
8426   if (update_gll)
8427     update_global_location_list (1);
8428 }
8429
8430 static void
8431 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8432                                     int tempflag, char *cond_string,
8433                                     const struct breakpoint_ops *ops)
8434 {
8435   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8436
8437   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8438
8439   c->forked_inferior_pid = null_ptid;
8440
8441   install_breakpoint (0, &c->base, 1);
8442 }
8443
8444 /* Exec catchpoints.  */
8445
8446 /* An instance of this type is used to represent an exec catchpoint.
8447    It includes a "struct breakpoint" as a kind of base class; users
8448    downcast to "struct breakpoint *" when needed.  A breakpoint is
8449    really of this type iff its ops pointer points to
8450    CATCH_EXEC_BREAKPOINT_OPS.  */
8451
8452 struct exec_catchpoint
8453 {
8454   /* The base class.  */
8455   struct breakpoint base;
8456
8457   /* Filename of a program whose exec triggered this catchpoint.
8458      This field is only valid immediately after this catchpoint has
8459      triggered.  */
8460   char *exec_pathname;
8461 };
8462
8463 /* Implement the "dtor" breakpoint_ops method for exec
8464    catchpoints.  */
8465
8466 static void
8467 dtor_catch_exec (struct breakpoint *b)
8468 {
8469   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8470
8471   xfree (c->exec_pathname);
8472
8473   base_breakpoint_ops.dtor (b);
8474 }
8475
8476 static int
8477 insert_catch_exec (struct bp_location *bl)
8478 {
8479   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8480 }
8481
8482 static int
8483 remove_catch_exec (struct bp_location *bl)
8484 {
8485   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8486 }
8487
8488 static int
8489 breakpoint_hit_catch_exec (const struct bp_location *bl,
8490                            struct address_space *aspace, CORE_ADDR bp_addr,
8491                            const struct target_waitstatus *ws)
8492 {
8493   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8494
8495   if (ws->kind != TARGET_WAITKIND_EXECD)
8496     return 0;
8497
8498   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8499   return 1;
8500 }
8501
8502 static enum print_stop_action
8503 print_it_catch_exec (bpstat bs)
8504 {
8505   struct ui_out *uiout = current_uiout;
8506   struct breakpoint *b = bs->breakpoint_at;
8507   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8508
8509   annotate_catchpoint (b->number);
8510   if (b->disposition == disp_del)
8511     ui_out_text (uiout, "\nTemporary catchpoint ");
8512   else
8513     ui_out_text (uiout, "\nCatchpoint ");
8514   if (ui_out_is_mi_like_p (uiout))
8515     {
8516       ui_out_field_string (uiout, "reason",
8517                            async_reason_lookup (EXEC_ASYNC_EXEC));
8518       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8519     }
8520   ui_out_field_int (uiout, "bkptno", b->number);
8521   ui_out_text (uiout, " (exec'd ");
8522   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8523   ui_out_text (uiout, "), ");
8524
8525   return PRINT_SRC_AND_LOC;
8526 }
8527
8528 static void
8529 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8530 {
8531   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8532   struct value_print_options opts;
8533   struct ui_out *uiout = current_uiout;
8534
8535   get_user_print_options (&opts);
8536
8537   /* Field 4, the address, is omitted (which makes the columns
8538      not line up too nicely with the headers, but the effect
8539      is relatively readable).  */
8540   if (opts.addressprint)
8541     ui_out_field_skip (uiout, "addr");
8542   annotate_field (5);
8543   ui_out_text (uiout, "exec");
8544   if (c->exec_pathname != NULL)
8545     {
8546       ui_out_text (uiout, ", program \"");
8547       ui_out_field_string (uiout, "what", c->exec_pathname);
8548       ui_out_text (uiout, "\" ");
8549     }
8550
8551   if (ui_out_is_mi_like_p (uiout))
8552     ui_out_field_string (uiout, "catch-type", "exec");
8553 }
8554
8555 static void
8556 print_mention_catch_exec (struct breakpoint *b)
8557 {
8558   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8559 }
8560
8561 /* Implement the "print_recreate" breakpoint_ops method for exec
8562    catchpoints.  */
8563
8564 static void
8565 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8566 {
8567   fprintf_unfiltered (fp, "catch exec");
8568   print_recreate_thread (b, fp);
8569 }
8570
8571 static struct breakpoint_ops catch_exec_breakpoint_ops;
8572
8573 static void
8574 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8575                                  const struct breakpoint_ops *ops)
8576 {
8577   struct syscall_catchpoint *c;
8578   struct gdbarch *gdbarch = get_current_arch ();
8579
8580   c = XNEW (struct syscall_catchpoint);
8581   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8582   c->syscalls_to_be_caught = filter;
8583
8584   install_breakpoint (0, &c->base, 1);
8585 }
8586
8587 static int
8588 hw_breakpoint_used_count (void)
8589 {
8590   int i = 0;
8591   struct breakpoint *b;
8592   struct bp_location *bl;
8593
8594   ALL_BREAKPOINTS (b)
8595   {
8596     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8597       for (bl = b->loc; bl; bl = bl->next)
8598         {
8599           /* Special types of hardware breakpoints may use more than
8600              one register.  */
8601           i += b->ops->resources_needed (bl);
8602         }
8603   }
8604
8605   return i;
8606 }
8607
8608 /* Returns the resources B would use if it were a hardware
8609    watchpoint.  */
8610
8611 static int
8612 hw_watchpoint_use_count (struct breakpoint *b)
8613 {
8614   int i = 0;
8615   struct bp_location *bl;
8616
8617   if (!breakpoint_enabled (b))
8618     return 0;
8619
8620   for (bl = b->loc; bl; bl = bl->next)
8621     {
8622       /* Special types of hardware watchpoints may use more than
8623          one register.  */
8624       i += b->ops->resources_needed (bl);
8625     }
8626
8627   return i;
8628 }
8629
8630 /* Returns the sum the used resources of all hardware watchpoints of
8631    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8632    the sum of the used resources of all hardware watchpoints of other
8633    types _not_ TYPE.  */
8634
8635 static int
8636 hw_watchpoint_used_count_others (struct breakpoint *except,
8637                                  enum bptype type, int *other_type_used)
8638 {
8639   int i = 0;
8640   struct breakpoint *b;
8641
8642   *other_type_used = 0;
8643   ALL_BREAKPOINTS (b)
8644     {
8645       if (b == except)
8646         continue;
8647       if (!breakpoint_enabled (b))
8648         continue;
8649
8650       if (b->type == type)
8651         i += hw_watchpoint_use_count (b);
8652       else if (is_hardware_watchpoint (b))
8653         *other_type_used = 1;
8654     }
8655
8656   return i;
8657 }
8658
8659 void
8660 disable_watchpoints_before_interactive_call_start (void)
8661 {
8662   struct breakpoint *b;
8663
8664   ALL_BREAKPOINTS (b)
8665   {
8666     if (is_watchpoint (b) && breakpoint_enabled (b))
8667       {
8668         b->enable_state = bp_call_disabled;
8669         update_global_location_list (0);
8670       }
8671   }
8672 }
8673
8674 void
8675 enable_watchpoints_after_interactive_call_stop (void)
8676 {
8677   struct breakpoint *b;
8678
8679   ALL_BREAKPOINTS (b)
8680   {
8681     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8682       {
8683         b->enable_state = bp_enabled;
8684         update_global_location_list (1);
8685       }
8686   }
8687 }
8688
8689 void
8690 disable_breakpoints_before_startup (void)
8691 {
8692   current_program_space->executing_startup = 1;
8693   update_global_location_list (0);
8694 }
8695
8696 void
8697 enable_breakpoints_after_startup (void)
8698 {
8699   current_program_space->executing_startup = 0;
8700   breakpoint_re_set ();
8701 }
8702
8703
8704 /* Set a breakpoint that will evaporate an end of command
8705    at address specified by SAL.
8706    Restrict it to frame FRAME if FRAME is nonzero.  */
8707
8708 struct breakpoint *
8709 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8710                           struct frame_id frame_id, enum bptype type)
8711 {
8712   struct breakpoint *b;
8713
8714   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8715      tail-called one.  */
8716   gdb_assert (!frame_id_artificial_p (frame_id));
8717
8718   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8719   b->enable_state = bp_enabled;
8720   b->disposition = disp_donttouch;
8721   b->frame_id = frame_id;
8722
8723   /* If we're debugging a multi-threaded program, then we want
8724      momentary breakpoints to be active in only a single thread of
8725      control.  */
8726   if (in_thread_list (inferior_ptid))
8727     b->thread = pid_to_thread_id (inferior_ptid);
8728
8729   update_global_location_list_nothrow (1);
8730
8731   return b;
8732 }
8733
8734 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8735    The new breakpoint will have type TYPE, and use OPS as it
8736    breakpoint_ops.  */
8737
8738 static struct breakpoint *
8739 momentary_breakpoint_from_master (struct breakpoint *orig,
8740                                   enum bptype type,
8741                                   const struct breakpoint_ops *ops)
8742 {
8743   struct breakpoint *copy;
8744
8745   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8746   copy->loc = allocate_bp_location (copy);
8747   set_breakpoint_location_function (copy->loc, 1);
8748
8749   copy->loc->gdbarch = orig->loc->gdbarch;
8750   copy->loc->requested_address = orig->loc->requested_address;
8751   copy->loc->address = orig->loc->address;
8752   copy->loc->section = orig->loc->section;
8753   copy->loc->pspace = orig->loc->pspace;
8754   copy->loc->probe = orig->loc->probe;
8755   copy->loc->line_number = orig->loc->line_number;
8756   copy->loc->symtab = orig->loc->symtab;
8757   copy->frame_id = orig->frame_id;
8758   copy->thread = orig->thread;
8759   copy->pspace = orig->pspace;
8760
8761   copy->enable_state = bp_enabled;
8762   copy->disposition = disp_donttouch;
8763   copy->number = internal_breakpoint_number--;
8764
8765   update_global_location_list_nothrow (0);
8766   return copy;
8767 }
8768
8769 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8770    ORIG is NULL.  */
8771
8772 struct breakpoint *
8773 clone_momentary_breakpoint (struct breakpoint *orig)
8774 {
8775   /* If there's nothing to clone, then return nothing.  */
8776   if (orig == NULL)
8777     return NULL;
8778
8779   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8780 }
8781
8782 struct breakpoint *
8783 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8784                                 enum bptype type)
8785 {
8786   struct symtab_and_line sal;
8787
8788   sal = find_pc_line (pc, 0);
8789   sal.pc = pc;
8790   sal.section = find_pc_overlay (pc);
8791   sal.explicit_pc = 1;
8792
8793   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8794 }
8795 \f
8796
8797 /* Tell the user we have just set a breakpoint B.  */
8798
8799 static void
8800 mention (struct breakpoint *b)
8801 {
8802   b->ops->print_mention (b);
8803   if (ui_out_is_mi_like_p (current_uiout))
8804     return;
8805   printf_filtered ("\n");
8806 }
8807 \f
8808
8809 static struct bp_location *
8810 add_location_to_breakpoint (struct breakpoint *b,
8811                             const struct symtab_and_line *sal)
8812 {
8813   struct bp_location *loc, **tmp;
8814   CORE_ADDR adjusted_address;
8815   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8816
8817   if (loc_gdbarch == NULL)
8818     loc_gdbarch = b->gdbarch;
8819
8820   /* Adjust the breakpoint's address prior to allocating a location.
8821      Once we call allocate_bp_location(), that mostly uninitialized
8822      location will be placed on the location chain.  Adjustment of the
8823      breakpoint may cause target_read_memory() to be called and we do
8824      not want its scan of the location chain to find a breakpoint and
8825      location that's only been partially initialized.  */
8826   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8827                                                 sal->pc, b->type);
8828
8829   loc = allocate_bp_location (b);
8830   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8831     ;
8832   *tmp = loc;
8833
8834   loc->requested_address = sal->pc;
8835   loc->address = adjusted_address;
8836   loc->pspace = sal->pspace;
8837   loc->probe = sal->probe;
8838   gdb_assert (loc->pspace != NULL);
8839   loc->section = sal->section;
8840   loc->gdbarch = loc_gdbarch;
8841   loc->line_number = sal->line;
8842   loc->symtab = sal->symtab;
8843
8844   set_breakpoint_location_function (loc,
8845                                     sal->explicit_pc || sal->explicit_line);
8846   return loc;
8847 }
8848 \f
8849
8850 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8851    return 0 otherwise.  */
8852
8853 static int
8854 bp_loc_is_permanent (struct bp_location *loc)
8855 {
8856   int len;
8857   CORE_ADDR addr;
8858   const gdb_byte *bpoint;
8859   gdb_byte *target_mem;
8860   struct cleanup *cleanup;
8861   int retval = 0;
8862
8863   gdb_assert (loc != NULL);
8864
8865   addr = loc->address;
8866   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8867
8868   /* Software breakpoints unsupported?  */
8869   if (bpoint == NULL)
8870     return 0;
8871
8872   target_mem = alloca (len);
8873
8874   /* Enable the automatic memory restoration from breakpoints while
8875      we read the memory.  Otherwise we could say about our temporary
8876      breakpoints they are permanent.  */
8877   cleanup = save_current_space_and_thread ();
8878
8879   switch_to_program_space_and_thread (loc->pspace);
8880   make_show_memory_breakpoints_cleanup (0);
8881
8882   if (target_read_memory (loc->address, target_mem, len) == 0
8883       && memcmp (target_mem, bpoint, len) == 0)
8884     retval = 1;
8885
8886   do_cleanups (cleanup);
8887
8888   return retval;
8889 }
8890
8891 /* Build a command list for the dprintf corresponding to the current
8892    settings of the dprintf style options.  */
8893
8894 static void
8895 update_dprintf_command_list (struct breakpoint *b)
8896 {
8897   char *dprintf_args = b->extra_string;
8898   char *printf_line = NULL;
8899
8900   if (!dprintf_args)
8901     return;
8902
8903   dprintf_args = skip_spaces (dprintf_args);
8904
8905   /* Allow a comma, as it may have terminated a location, but don't
8906      insist on it.  */
8907   if (*dprintf_args == ',')
8908     ++dprintf_args;
8909   dprintf_args = skip_spaces (dprintf_args);
8910
8911   if (*dprintf_args != '"')
8912     error (_("Bad format string, missing '\"'."));
8913
8914   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8915     printf_line = xstrprintf ("printf %s", dprintf_args);
8916   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8917     {
8918       if (!dprintf_function)
8919         error (_("No function supplied for dprintf call"));
8920
8921       if (dprintf_channel && strlen (dprintf_channel) > 0)
8922         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8923                                   dprintf_function,
8924                                   dprintf_channel,
8925                                   dprintf_args);
8926       else
8927         printf_line = xstrprintf ("call (void) %s (%s)",
8928                                   dprintf_function,
8929                                   dprintf_args);
8930     }
8931   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8932     {
8933       if (target_can_run_breakpoint_commands ())
8934         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8935       else
8936         {
8937           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8938           printf_line = xstrprintf ("printf %s", dprintf_args);
8939         }
8940     }
8941   else
8942     internal_error (__FILE__, __LINE__,
8943                     _("Invalid dprintf style."));
8944
8945   gdb_assert (printf_line != NULL);
8946   /* Manufacture a printf/continue sequence.  */
8947   {
8948     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8949
8950     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8951       {
8952         cont_cmd_line = xmalloc (sizeof (struct command_line));
8953         cont_cmd_line->control_type = simple_control;
8954         cont_cmd_line->body_count = 0;
8955         cont_cmd_line->body_list = NULL;
8956         cont_cmd_line->next = NULL;
8957         cont_cmd_line->line = xstrdup ("continue");
8958       }
8959
8960     printf_cmd_line = xmalloc (sizeof (struct command_line));
8961     printf_cmd_line->control_type = simple_control;
8962     printf_cmd_line->body_count = 0;
8963     printf_cmd_line->body_list = NULL;
8964     printf_cmd_line->next = cont_cmd_line;
8965     printf_cmd_line->line = printf_line;
8966
8967     breakpoint_set_commands (b, printf_cmd_line);
8968   }
8969 }
8970
8971 /* Update all dprintf commands, making their command lists reflect
8972    current style settings.  */
8973
8974 static void
8975 update_dprintf_commands (char *args, int from_tty,
8976                          struct cmd_list_element *c)
8977 {
8978   struct breakpoint *b;
8979
8980   ALL_BREAKPOINTS (b)
8981     {
8982       if (b->type == bp_dprintf)
8983         update_dprintf_command_list (b);
8984     }
8985 }
8986
8987 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8988    as textual description of the location, and COND_STRING
8989    as condition expression.  */
8990
8991 static void
8992 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8993                      struct symtabs_and_lines sals, char *addr_string,
8994                      char *filter, char *cond_string,
8995                      char *extra_string,
8996                      enum bptype type, enum bpdisp disposition,
8997                      int thread, int task, int ignore_count,
8998                      const struct breakpoint_ops *ops, int from_tty,
8999                      int enabled, int internal, unsigned flags,
9000                      int display_canonical)
9001 {
9002   int i;
9003
9004   if (type == bp_hardware_breakpoint)
9005     {
9006       int target_resources_ok;
9007
9008       i = hw_breakpoint_used_count ();
9009       target_resources_ok =
9010         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9011                                             i + 1, 0);
9012       if (target_resources_ok == 0)
9013         error (_("No hardware breakpoint support in the target."));
9014       else if (target_resources_ok < 0)
9015         error (_("Hardware breakpoints used exceeds limit."));
9016     }
9017
9018   gdb_assert (sals.nelts > 0);
9019
9020   for (i = 0; i < sals.nelts; ++i)
9021     {
9022       struct symtab_and_line sal = sals.sals[i];
9023       struct bp_location *loc;
9024
9025       if (from_tty)
9026         {
9027           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9028           if (!loc_gdbarch)
9029             loc_gdbarch = gdbarch;
9030
9031           describe_other_breakpoints (loc_gdbarch,
9032                                       sal.pspace, sal.pc, sal.section, thread);
9033         }
9034
9035       if (i == 0)
9036         {
9037           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9038           b->thread = thread;
9039           b->task = task;
9040
9041           b->cond_string = cond_string;
9042           b->extra_string = extra_string;
9043           b->ignore_count = ignore_count;
9044           b->enable_state = enabled ? bp_enabled : bp_disabled;
9045           b->disposition = disposition;
9046
9047           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9048             b->loc->inserted = 1;
9049
9050           if (type == bp_static_tracepoint)
9051             {
9052               struct tracepoint *t = (struct tracepoint *) b;
9053               struct static_tracepoint_marker marker;
9054
9055               if (strace_marker_p (b))
9056                 {
9057                   /* We already know the marker exists, otherwise, we
9058                      wouldn't see a sal for it.  */
9059                   char *p = &addr_string[3];
9060                   char *endp;
9061                   char *marker_str;
9062
9063                   p = skip_spaces (p);
9064
9065                   endp = skip_to_space (p);
9066
9067                   marker_str = savestring (p, endp - p);
9068                   t->static_trace_marker_id = marker_str;
9069
9070                   printf_filtered (_("Probed static tracepoint "
9071                                      "marker \"%s\"\n"),
9072                                    t->static_trace_marker_id);
9073                 }
9074               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9075                 {
9076                   t->static_trace_marker_id = xstrdup (marker.str_id);
9077                   release_static_tracepoint_marker (&marker);
9078
9079                   printf_filtered (_("Probed static tracepoint "
9080                                      "marker \"%s\"\n"),
9081                                    t->static_trace_marker_id);
9082                 }
9083               else
9084                 warning (_("Couldn't determine the static "
9085                            "tracepoint marker to probe"));
9086             }
9087
9088           loc = b->loc;
9089         }
9090       else
9091         {
9092           loc = add_location_to_breakpoint (b, &sal);
9093           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9094             loc->inserted = 1;
9095         }
9096
9097       if (bp_loc_is_permanent (loc))
9098         make_breakpoint_permanent (b);
9099
9100       if (b->cond_string)
9101         {
9102           char *arg = b->cond_string;
9103           loc->cond = parse_exp_1 (&arg, loc->address,
9104                                    block_for_pc (loc->address), 0);
9105           if (*arg)
9106               error (_("Garbage '%s' follows condition"), arg);
9107         }
9108
9109       /* Dynamic printf requires and uses additional arguments on the
9110          command line, otherwise it's an error.  */
9111       if (type == bp_dprintf)
9112         {
9113           if (b->extra_string)
9114             update_dprintf_command_list (b);
9115           else
9116             error (_("Format string required"));
9117         }
9118       else if (b->extra_string)
9119         error (_("Garbage '%s' at end of command"), b->extra_string);
9120     }
9121
9122   b->display_canonical = display_canonical;
9123   if (addr_string)
9124     b->addr_string = addr_string;
9125   else
9126     /* addr_string has to be used or breakpoint_re_set will delete
9127        me.  */
9128     b->addr_string
9129       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9130   b->filter = filter;
9131 }
9132
9133 static void
9134 create_breakpoint_sal (struct gdbarch *gdbarch,
9135                        struct symtabs_and_lines sals, char *addr_string,
9136                        char *filter, char *cond_string,
9137                        char *extra_string,
9138                        enum bptype type, enum bpdisp disposition,
9139                        int thread, int task, int ignore_count,
9140                        const struct breakpoint_ops *ops, int from_tty,
9141                        int enabled, int internal, unsigned flags,
9142                        int display_canonical)
9143 {
9144   struct breakpoint *b;
9145   struct cleanup *old_chain;
9146
9147   if (is_tracepoint_type (type))
9148     {
9149       struct tracepoint *t;
9150
9151       t = XCNEW (struct tracepoint);
9152       b = &t->base;
9153     }
9154   else
9155     b = XNEW (struct breakpoint);
9156
9157   old_chain = make_cleanup (xfree, b);
9158
9159   init_breakpoint_sal (b, gdbarch,
9160                        sals, addr_string,
9161                        filter, cond_string, extra_string,
9162                        type, disposition,
9163                        thread, task, ignore_count,
9164                        ops, from_tty,
9165                        enabled, internal, flags,
9166                        display_canonical);
9167   discard_cleanups (old_chain);
9168
9169   install_breakpoint (internal, b, 0);
9170 }
9171
9172 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9173    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9174    value.  COND_STRING, if not NULL, specified the condition to be
9175    used for all breakpoints.  Essentially the only case where
9176    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9177    function.  In that case, it's still not possible to specify
9178    separate conditions for different overloaded functions, so
9179    we take just a single condition string.
9180    
9181    NOTE: If the function succeeds, the caller is expected to cleanup
9182    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9183    array contents).  If the function fails (error() is called), the
9184    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9185    COND and SALS arrays and each of those arrays contents.  */
9186
9187 static void
9188 create_breakpoints_sal (struct gdbarch *gdbarch,
9189                         struct linespec_result *canonical,
9190                         char *cond_string, char *extra_string,
9191                         enum bptype type, enum bpdisp disposition,
9192                         int thread, int task, int ignore_count,
9193                         const struct breakpoint_ops *ops, int from_tty,
9194                         int enabled, int internal, unsigned flags)
9195 {
9196   int i;
9197   struct linespec_sals *lsal;
9198
9199   if (canonical->pre_expanded)
9200     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9201
9202   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9203     {
9204       /* Note that 'addr_string' can be NULL in the case of a plain
9205          'break', without arguments.  */
9206       char *addr_string = (canonical->addr_string
9207                            ? xstrdup (canonical->addr_string)
9208                            : NULL);
9209       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9210       struct cleanup *inner = make_cleanup (xfree, addr_string);
9211
9212       make_cleanup (xfree, filter_string);
9213       create_breakpoint_sal (gdbarch, lsal->sals,
9214                              addr_string,
9215                              filter_string,
9216                              cond_string, extra_string,
9217                              type, disposition,
9218                              thread, task, ignore_count, ops,
9219                              from_tty, enabled, internal, flags,
9220                              canonical->special_display);
9221       discard_cleanups (inner);
9222     }
9223 }
9224
9225 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9226    followed by conditionals.  On return, SALS contains an array of SAL
9227    addresses found.  ADDR_STRING contains a vector of (canonical)
9228    address strings.  ADDRESS points to the end of the SAL.
9229
9230    The array and the line spec strings are allocated on the heap, it is
9231    the caller's responsibility to free them.  */
9232
9233 static void
9234 parse_breakpoint_sals (char **address,
9235                        struct linespec_result *canonical)
9236 {
9237   /* If no arg given, or if first arg is 'if ', use the default
9238      breakpoint.  */
9239   if ((*address) == NULL
9240       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9241     {
9242       /* The last displayed codepoint, if it's valid, is our default breakpoint
9243          address.  */
9244       if (last_displayed_sal_is_valid ())
9245         {
9246           struct linespec_sals lsal;
9247           struct symtab_and_line sal;
9248           CORE_ADDR pc;
9249
9250           init_sal (&sal);              /* Initialize to zeroes.  */
9251           lsal.sals.sals = (struct symtab_and_line *)
9252             xmalloc (sizeof (struct symtab_and_line));
9253
9254           /* Set sal's pspace, pc, symtab, and line to the values
9255              corresponding to the last call to print_frame_info.
9256              Be sure to reinitialize LINE with NOTCURRENT == 0
9257              as the breakpoint line number is inappropriate otherwise.
9258              find_pc_line would adjust PC, re-set it back.  */
9259           get_last_displayed_sal (&sal);
9260           pc = sal.pc;
9261           sal = find_pc_line (pc, 0);
9262
9263           /* "break" without arguments is equivalent to "break *PC"
9264              where PC is the last displayed codepoint's address.  So
9265              make sure to set sal.explicit_pc to prevent GDB from
9266              trying to expand the list of sals to include all other
9267              instances with the same symtab and line.  */
9268           sal.pc = pc;
9269           sal.explicit_pc = 1;
9270
9271           lsal.sals.sals[0] = sal;
9272           lsal.sals.nelts = 1;
9273           lsal.canonical = NULL;
9274
9275           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9276         }
9277       else
9278         error (_("No default breakpoint address now."));
9279     }
9280   else
9281     {
9282       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9283
9284       /* Force almost all breakpoints to be in terms of the
9285          current_source_symtab (which is decode_line_1's default).
9286          This should produce the results we want almost all of the
9287          time while leaving default_breakpoint_* alone.
9288
9289          ObjC: However, don't match an Objective-C method name which
9290          may have a '+' or '-' succeeded by a '['.  */
9291       if (last_displayed_sal_is_valid ()
9292           && (!cursal.symtab
9293               || ((strchr ("+-", (*address)[0]) != NULL)
9294                   && ((*address)[1] != '['))))
9295         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9296                           get_last_displayed_symtab (),
9297                           get_last_displayed_line (),
9298                           canonical, NULL, NULL);
9299       else
9300         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9301                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9302     }
9303 }
9304
9305
9306 /* Convert each SAL into a real PC.  Verify that the PC can be
9307    inserted as a breakpoint.  If it can't throw an error.  */
9308
9309 static void
9310 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9311 {    
9312   int i;
9313
9314   for (i = 0; i < sals->nelts; i++)
9315     resolve_sal_pc (&sals->sals[i]);
9316 }
9317
9318 /* Fast tracepoints may have restrictions on valid locations.  For
9319    instance, a fast tracepoint using a jump instead of a trap will
9320    likely have to overwrite more bytes than a trap would, and so can
9321    only be placed where the instruction is longer than the jump, or a
9322    multi-instruction sequence does not have a jump into the middle of
9323    it, etc.  */
9324
9325 static void
9326 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9327                             struct symtabs_and_lines *sals)
9328 {
9329   int i, rslt;
9330   struct symtab_and_line *sal;
9331   char *msg;
9332   struct cleanup *old_chain;
9333
9334   for (i = 0; i < sals->nelts; i++)
9335     {
9336       struct gdbarch *sarch;
9337
9338       sal = &sals->sals[i];
9339
9340       sarch = get_sal_arch (*sal);
9341       /* We fall back to GDBARCH if there is no architecture
9342          associated with SAL.  */
9343       if (sarch == NULL)
9344         sarch = gdbarch;
9345       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9346                                                NULL, &msg);
9347       old_chain = make_cleanup (xfree, msg);
9348
9349       if (!rslt)
9350         error (_("May not have a fast tracepoint at 0x%s%s"),
9351                paddress (sarch, sal->pc), (msg ? msg : ""));
9352
9353       do_cleanups (old_chain);
9354     }
9355 }
9356
9357 /* Issue an invalid thread ID error.  */
9358
9359 static void ATTRIBUTE_NORETURN
9360 invalid_thread_id_error (int id)
9361 {
9362   error (_("Unknown thread %d."), id);
9363 }
9364
9365 /* Given TOK, a string specification of condition and thread, as
9366    accepted by the 'break' command, extract the condition
9367    string and thread number and set *COND_STRING and *THREAD.
9368    PC identifies the context at which the condition should be parsed.
9369    If no condition is found, *COND_STRING is set to NULL.
9370    If no thread is found, *THREAD is set to -1.  */
9371
9372 static void
9373 find_condition_and_thread (char *tok, CORE_ADDR pc,
9374                            char **cond_string, int *thread, int *task,
9375                            char **rest)
9376 {
9377   *cond_string = NULL;
9378   *thread = -1;
9379   *task = 0;
9380   *rest = NULL;
9381
9382   while (tok && *tok)
9383     {
9384       char *end_tok;
9385       int toklen;
9386       char *cond_start = NULL;
9387       char *cond_end = NULL;
9388
9389       tok = skip_spaces (tok);
9390
9391       if ((*tok == '"' || *tok == ',') && rest)
9392         {
9393           *rest = savestring (tok, strlen (tok));
9394           return;
9395         }
9396
9397       end_tok = skip_to_space (tok);
9398
9399       toklen = end_tok - tok;
9400
9401       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9402         {
9403           struct expression *expr;
9404
9405           tok = cond_start = end_tok + 1;
9406           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9407           xfree (expr);
9408           cond_end = tok;
9409           *cond_string = savestring (cond_start, cond_end - cond_start);
9410         }
9411       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9412         {
9413           char *tmptok;
9414
9415           tok = end_tok + 1;
9416           tmptok = tok;
9417           *thread = strtol (tok, &tok, 0);
9418           if (tok == tmptok)
9419             error (_("Junk after thread keyword."));
9420           if (!valid_thread_id (*thread))
9421             invalid_thread_id_error (*thread);
9422         }
9423       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9424         {
9425           char *tmptok;
9426
9427           tok = end_tok + 1;
9428           tmptok = tok;
9429           *task = strtol (tok, &tok, 0);
9430           if (tok == tmptok)
9431             error (_("Junk after task keyword."));
9432           if (!valid_task_id (*task))
9433             error (_("Unknown task %d."), *task);
9434         }
9435       else if (rest)
9436         {
9437           *rest = savestring (tok, strlen (tok));
9438           return;
9439         }
9440       else
9441         error (_("Junk at end of arguments."));
9442     }
9443 }
9444
9445 /* Decode a static tracepoint marker spec.  */
9446
9447 static struct symtabs_and_lines
9448 decode_static_tracepoint_spec (char **arg_p)
9449 {
9450   VEC(static_tracepoint_marker_p) *markers = NULL;
9451   struct symtabs_and_lines sals;
9452   struct cleanup *old_chain;
9453   char *p = &(*arg_p)[3];
9454   char *endp;
9455   char *marker_str;
9456   int i;
9457
9458   p = skip_spaces (p);
9459
9460   endp = skip_to_space (p);
9461
9462   marker_str = savestring (p, endp - p);
9463   old_chain = make_cleanup (xfree, marker_str);
9464
9465   markers = target_static_tracepoint_markers_by_strid (marker_str);
9466   if (VEC_empty(static_tracepoint_marker_p, markers))
9467     error (_("No known static tracepoint marker named %s"), marker_str);
9468
9469   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9470   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9471
9472   for (i = 0; i < sals.nelts; i++)
9473     {
9474       struct static_tracepoint_marker *marker;
9475
9476       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9477
9478       init_sal (&sals.sals[i]);
9479
9480       sals.sals[i] = find_pc_line (marker->address, 0);
9481       sals.sals[i].pc = marker->address;
9482
9483       release_static_tracepoint_marker (marker);
9484     }
9485
9486   do_cleanups (old_chain);
9487
9488   *arg_p = endp;
9489   return sals;
9490 }
9491
9492 /* Set a breakpoint.  This function is shared between CLI and MI
9493    functions for setting a breakpoint.  This function has two major
9494    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9495    parameter.  If non-zero, the function will parse arg, extracting
9496    breakpoint location, address and thread.  Otherwise, ARG is just
9497    the location of breakpoint, with condition and thread specified by
9498    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9499    the breakpoint number will be allocated from the internal
9500    breakpoint count.  Returns true if any breakpoint was created;
9501    false otherwise.  */
9502
9503 int
9504 create_breakpoint (struct gdbarch *gdbarch,
9505                    char *arg, char *cond_string,
9506                    int thread, char *extra_string,
9507                    int parse_condition_and_thread,
9508                    int tempflag, enum bptype type_wanted,
9509                    int ignore_count,
9510                    enum auto_boolean pending_break_support,
9511                    const struct breakpoint_ops *ops,
9512                    int from_tty, int enabled, int internal,
9513                    unsigned flags)
9514 {
9515   volatile struct gdb_exception e;
9516   char *copy_arg = NULL;
9517   char *addr_start = arg;
9518   struct linespec_result canonical;
9519   struct cleanup *old_chain;
9520   struct cleanup *bkpt_chain = NULL;
9521   int pending = 0;
9522   int task = 0;
9523   int prev_bkpt_count = breakpoint_count;
9524
9525   gdb_assert (ops != NULL);
9526
9527   init_linespec_result (&canonical);
9528
9529   TRY_CATCH (e, RETURN_MASK_ALL)
9530     {
9531       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9532                                      addr_start, &copy_arg);
9533     }
9534
9535   /* If caller is interested in rc value from parse, set value.  */
9536   switch (e.reason)
9537     {
9538     case GDB_NO_ERROR:
9539       if (VEC_empty (linespec_sals, canonical.sals))
9540         return 0;
9541       break;
9542     case RETURN_ERROR:
9543       switch (e.error)
9544         {
9545         case NOT_FOUND_ERROR:
9546
9547           /* If pending breakpoint support is turned off, throw
9548              error.  */
9549
9550           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9551             throw_exception (e);
9552
9553           exception_print (gdb_stderr, e);
9554
9555           /* If pending breakpoint support is auto query and the user
9556              selects no, then simply return the error code.  */
9557           if (pending_break_support == AUTO_BOOLEAN_AUTO
9558               && !nquery (_("Make %s pending on future shared library load? "),
9559                           bptype_string (type_wanted)))
9560             return 0;
9561
9562           /* At this point, either the user was queried about setting
9563              a pending breakpoint and selected yes, or pending
9564              breakpoint behavior is on and thus a pending breakpoint
9565              is defaulted on behalf of the user.  */
9566           {
9567             struct linespec_sals lsal;
9568
9569             copy_arg = xstrdup (addr_start);
9570             lsal.canonical = xstrdup (copy_arg);
9571             lsal.sals.nelts = 1;
9572             lsal.sals.sals = XNEW (struct symtab_and_line);
9573             init_sal (&lsal.sals.sals[0]);
9574             pending = 1;
9575             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9576           }
9577           break;
9578         default:
9579           throw_exception (e);
9580         }
9581       break;
9582     default:
9583       throw_exception (e);
9584     }
9585
9586   /* Create a chain of things that always need to be cleaned up.  */
9587   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9588
9589   /* ----------------------------- SNIP -----------------------------
9590      Anything added to the cleanup chain beyond this point is assumed
9591      to be part of a breakpoint.  If the breakpoint create succeeds
9592      then the memory is not reclaimed.  */
9593   bkpt_chain = make_cleanup (null_cleanup, 0);
9594
9595   /* Resolve all line numbers to PC's and verify that the addresses
9596      are ok for the target.  */
9597   if (!pending)
9598     {
9599       int ix;
9600       struct linespec_sals *iter;
9601
9602       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9603         breakpoint_sals_to_pc (&iter->sals);
9604     }
9605
9606   /* Fast tracepoints may have additional restrictions on location.  */
9607   if (!pending && type_wanted == bp_fast_tracepoint)
9608     {
9609       int ix;
9610       struct linespec_sals *iter;
9611
9612       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9613         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9614     }
9615
9616   /* Verify that condition can be parsed, before setting any
9617      breakpoints.  Allocate a separate condition expression for each
9618      breakpoint.  */
9619   if (!pending)
9620     {
9621       struct linespec_sals *lsal;
9622
9623       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9624
9625       if (parse_condition_and_thread)
9626         {
9627             char *rest;
9628             /* Here we only parse 'arg' to separate condition
9629                from thread number, so parsing in context of first
9630                sal is OK.  When setting the breakpoint we'll 
9631                re-parse it in context of each sal.  */
9632
9633             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9634                                        &thread, &task, &rest);
9635             if (cond_string)
9636                 make_cleanup (xfree, cond_string);
9637             if (rest)
9638               make_cleanup (xfree, rest);
9639             if (rest)
9640               extra_string = rest;
9641         }
9642       else
9643         {
9644             /* Create a private copy of condition string.  */
9645             if (cond_string)
9646             {
9647                 cond_string = xstrdup (cond_string);
9648                 make_cleanup (xfree, cond_string);
9649             }
9650             /* Create a private copy of any extra string.  */
9651             if (extra_string)
9652               {
9653                 extra_string = xstrdup (extra_string);
9654                 make_cleanup (xfree, extra_string);
9655               }
9656         }
9657
9658       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9659                                    cond_string, extra_string, type_wanted,
9660                                    tempflag ? disp_del : disp_donttouch,
9661                                    thread, task, ignore_count, ops,
9662                                    from_tty, enabled, internal, flags);
9663     }
9664   else
9665     {
9666       struct breakpoint *b;
9667
9668       make_cleanup (xfree, copy_arg);
9669
9670       if (is_tracepoint_type (type_wanted))
9671         {
9672           struct tracepoint *t;
9673
9674           t = XCNEW (struct tracepoint);
9675           b = &t->base;
9676         }
9677       else
9678         b = XNEW (struct breakpoint);
9679
9680       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9681
9682       b->addr_string = copy_arg;
9683       if (parse_condition_and_thread)
9684         b->cond_string = NULL;
9685       else
9686         {
9687           /* Create a private copy of condition string.  */
9688           if (cond_string)
9689             {
9690               cond_string = xstrdup (cond_string);
9691               make_cleanup (xfree, cond_string);
9692             }
9693           b->cond_string = cond_string;
9694         }
9695       b->extra_string = NULL;
9696       b->ignore_count = ignore_count;
9697       b->disposition = tempflag ? disp_del : disp_donttouch;
9698       b->condition_not_parsed = 1;
9699       b->enable_state = enabled ? bp_enabled : bp_disabled;
9700       if ((type_wanted != bp_breakpoint
9701            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9702         b->pspace = current_program_space;
9703
9704       install_breakpoint (internal, b, 0);
9705     }
9706   
9707   if (VEC_length (linespec_sals, canonical.sals) > 1)
9708     {
9709       warning (_("Multiple breakpoints were set.\nUse the "
9710                  "\"delete\" command to delete unwanted breakpoints."));
9711       prev_breakpoint_count = prev_bkpt_count;
9712     }
9713
9714   /* That's it.  Discard the cleanups for data inserted into the
9715      breakpoint.  */
9716   discard_cleanups (bkpt_chain);
9717   /* But cleanup everything else.  */
9718   do_cleanups (old_chain);
9719
9720   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9721   update_global_location_list (1);
9722
9723   return 1;
9724 }
9725
9726 /* Set a breakpoint.
9727    ARG is a string describing breakpoint address,
9728    condition, and thread.
9729    FLAG specifies if a breakpoint is hardware on,
9730    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9731    and BP_TEMPFLAG.  */
9732
9733 static void
9734 break_command_1 (char *arg, int flag, int from_tty)
9735 {
9736   int tempflag = flag & BP_TEMPFLAG;
9737   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9738                              ? bp_hardware_breakpoint
9739                              : bp_breakpoint);
9740   struct breakpoint_ops *ops;
9741   const char *arg_cp = arg;
9742
9743   /* Matching breakpoints on probes.  */
9744   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9745     ops = &bkpt_probe_breakpoint_ops;
9746   else
9747     ops = &bkpt_breakpoint_ops;
9748
9749   create_breakpoint (get_current_arch (),
9750                      arg,
9751                      NULL, 0, NULL, 1 /* parse arg */,
9752                      tempflag, type_wanted,
9753                      0 /* Ignore count */,
9754                      pending_break_support,
9755                      ops,
9756                      from_tty,
9757                      1 /* enabled */,
9758                      0 /* internal */,
9759                      0);
9760 }
9761
9762 /* Helper function for break_command_1 and disassemble_command.  */
9763
9764 void
9765 resolve_sal_pc (struct symtab_and_line *sal)
9766 {
9767   CORE_ADDR pc;
9768
9769   if (sal->pc == 0 && sal->symtab != NULL)
9770     {
9771       if (!find_line_pc (sal->symtab, sal->line, &pc))
9772         error (_("No line %d in file \"%s\"."),
9773                sal->line, sal->symtab->filename);
9774       sal->pc = pc;
9775
9776       /* If this SAL corresponds to a breakpoint inserted using a line
9777          number, then skip the function prologue if necessary.  */
9778       if (sal->explicit_line)
9779         skip_prologue_sal (sal);
9780     }
9781
9782   if (sal->section == 0 && sal->symtab != NULL)
9783     {
9784       struct blockvector *bv;
9785       struct block *b;
9786       struct symbol *sym;
9787
9788       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9789       if (bv != NULL)
9790         {
9791           sym = block_linkage_function (b);
9792           if (sym != NULL)
9793             {
9794               fixup_symbol_section (sym, sal->symtab->objfile);
9795               sal->section = SYMBOL_OBJ_SECTION (sym);
9796             }
9797           else
9798             {
9799               /* It really is worthwhile to have the section, so we'll
9800                  just have to look harder. This case can be executed
9801                  if we have line numbers but no functions (as can
9802                  happen in assembly source).  */
9803
9804               struct minimal_symbol *msym;
9805               struct cleanup *old_chain = save_current_space_and_thread ();
9806
9807               switch_to_program_space_and_thread (sal->pspace);
9808
9809               msym = lookup_minimal_symbol_by_pc (sal->pc);
9810               if (msym)
9811                 sal->section = SYMBOL_OBJ_SECTION (msym);
9812
9813               do_cleanups (old_chain);
9814             }
9815         }
9816     }
9817 }
9818
9819 void
9820 break_command (char *arg, int from_tty)
9821 {
9822   break_command_1 (arg, 0, from_tty);
9823 }
9824
9825 void
9826 tbreak_command (char *arg, int from_tty)
9827 {
9828   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9829 }
9830
9831 static void
9832 hbreak_command (char *arg, int from_tty)
9833 {
9834   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9835 }
9836
9837 static void
9838 thbreak_command (char *arg, int from_tty)
9839 {
9840   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9841 }
9842
9843 static void
9844 stop_command (char *arg, int from_tty)
9845 {
9846   printf_filtered (_("Specify the type of breakpoint to set.\n\
9847 Usage: stop in <function | address>\n\
9848        stop at <line>\n"));
9849 }
9850
9851 static void
9852 stopin_command (char *arg, int from_tty)
9853 {
9854   int badInput = 0;
9855
9856   if (arg == (char *) NULL)
9857     badInput = 1;
9858   else if (*arg != '*')
9859     {
9860       char *argptr = arg;
9861       int hasColon = 0;
9862
9863       /* Look for a ':'.  If this is a line number specification, then
9864          say it is bad, otherwise, it should be an address or
9865          function/method name.  */
9866       while (*argptr && !hasColon)
9867         {
9868           hasColon = (*argptr == ':');
9869           argptr++;
9870         }
9871
9872       if (hasColon)
9873         badInput = (*argptr != ':');    /* Not a class::method */
9874       else
9875         badInput = isdigit (*arg);      /* a simple line number */
9876     }
9877
9878   if (badInput)
9879     printf_filtered (_("Usage: stop in <function | address>\n"));
9880   else
9881     break_command_1 (arg, 0, from_tty);
9882 }
9883
9884 static void
9885 stopat_command (char *arg, int from_tty)
9886 {
9887   int badInput = 0;
9888
9889   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9890     badInput = 1;
9891   else
9892     {
9893       char *argptr = arg;
9894       int hasColon = 0;
9895
9896       /* Look for a ':'.  If there is a '::' then get out, otherwise
9897          it is probably a line number.  */
9898       while (*argptr && !hasColon)
9899         {
9900           hasColon = (*argptr == ':');
9901           argptr++;
9902         }
9903
9904       if (hasColon)
9905         badInput = (*argptr == ':');    /* we have class::method */
9906       else
9907         badInput = !isdigit (*arg);     /* not a line number */
9908     }
9909
9910   if (badInput)
9911     printf_filtered (_("Usage: stop at <line>\n"));
9912   else
9913     break_command_1 (arg, 0, from_tty);
9914 }
9915
9916 /* The dynamic printf command is mostly like a regular breakpoint, but
9917    with a prewired command list consisting of a single output command,
9918    built from extra arguments supplied on the dprintf command
9919    line.  */
9920
9921 static void
9922 dprintf_command (char *arg, int from_tty)
9923 {
9924   create_breakpoint (get_current_arch (),
9925                      arg,
9926                      NULL, 0, NULL, 1 /* parse arg */,
9927                      0, bp_dprintf,
9928                      0 /* Ignore count */,
9929                      pending_break_support,
9930                      &dprintf_breakpoint_ops,
9931                      from_tty,
9932                      1 /* enabled */,
9933                      0 /* internal */,
9934                      0);
9935 }
9936
9937 static void
9938 agent_printf_command (char *arg, int from_tty)
9939 {
9940   error (_("May only run agent-printf on the target"));
9941 }
9942
9943 /* Implement the "breakpoint_hit" breakpoint_ops method for
9944    ranged breakpoints.  */
9945
9946 static int
9947 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9948                                   struct address_space *aspace,
9949                                   CORE_ADDR bp_addr,
9950                                   const struct target_waitstatus *ws)
9951 {
9952   if (ws->kind != TARGET_WAITKIND_STOPPED
9953       || ws->value.sig != GDB_SIGNAL_TRAP)
9954     return 0;
9955
9956   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9957                                          bl->length, aspace, bp_addr);
9958 }
9959
9960 /* Implement the "resources_needed" breakpoint_ops method for
9961    ranged breakpoints.  */
9962
9963 static int
9964 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9965 {
9966   return target_ranged_break_num_registers ();
9967 }
9968
9969 /* Implement the "print_it" breakpoint_ops method for
9970    ranged breakpoints.  */
9971
9972 static enum print_stop_action
9973 print_it_ranged_breakpoint (bpstat bs)
9974 {
9975   struct breakpoint *b = bs->breakpoint_at;
9976   struct bp_location *bl = b->loc;
9977   struct ui_out *uiout = current_uiout;
9978
9979   gdb_assert (b->type == bp_hardware_breakpoint);
9980
9981   /* Ranged breakpoints have only one location.  */
9982   gdb_assert (bl && bl->next == NULL);
9983
9984   annotate_breakpoint (b->number);
9985   if (b->disposition == disp_del)
9986     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9987   else
9988     ui_out_text (uiout, "\nRanged breakpoint ");
9989   if (ui_out_is_mi_like_p (uiout))
9990     {
9991       ui_out_field_string (uiout, "reason",
9992                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9993       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9994     }
9995   ui_out_field_int (uiout, "bkptno", b->number);
9996   ui_out_text (uiout, ", ");
9997
9998   return PRINT_SRC_AND_LOC;
9999 }
10000
10001 /* Implement the "print_one" breakpoint_ops method for
10002    ranged breakpoints.  */
10003
10004 static void
10005 print_one_ranged_breakpoint (struct breakpoint *b,
10006                              struct bp_location **last_loc)
10007 {
10008   struct bp_location *bl = b->loc;
10009   struct value_print_options opts;
10010   struct ui_out *uiout = current_uiout;
10011
10012   /* Ranged breakpoints have only one location.  */
10013   gdb_assert (bl && bl->next == NULL);
10014
10015   get_user_print_options (&opts);
10016
10017   if (opts.addressprint)
10018     /* We don't print the address range here, it will be printed later
10019        by print_one_detail_ranged_breakpoint.  */
10020     ui_out_field_skip (uiout, "addr");
10021   annotate_field (5);
10022   print_breakpoint_location (b, bl);
10023   *last_loc = bl;
10024 }
10025
10026 /* Implement the "print_one_detail" breakpoint_ops method for
10027    ranged breakpoints.  */
10028
10029 static void
10030 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10031                                     struct ui_out *uiout)
10032 {
10033   CORE_ADDR address_start, address_end;
10034   struct bp_location *bl = b->loc;
10035   struct ui_file *stb = mem_fileopen ();
10036   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10037
10038   gdb_assert (bl);
10039
10040   address_start = bl->address;
10041   address_end = address_start + bl->length - 1;
10042
10043   ui_out_text (uiout, "\taddress range: ");
10044   fprintf_unfiltered (stb, "[%s, %s]",
10045                       print_core_address (bl->gdbarch, address_start),
10046                       print_core_address (bl->gdbarch, address_end));
10047   ui_out_field_stream (uiout, "addr", stb);
10048   ui_out_text (uiout, "\n");
10049
10050   do_cleanups (cleanup);
10051 }
10052
10053 /* Implement the "print_mention" breakpoint_ops method for
10054    ranged breakpoints.  */
10055
10056 static void
10057 print_mention_ranged_breakpoint (struct breakpoint *b)
10058 {
10059   struct bp_location *bl = b->loc;
10060   struct ui_out *uiout = current_uiout;
10061
10062   gdb_assert (bl);
10063   gdb_assert (b->type == bp_hardware_breakpoint);
10064
10065   if (ui_out_is_mi_like_p (uiout))
10066     return;
10067
10068   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10069                    b->number, paddress (bl->gdbarch, bl->address),
10070                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10071 }
10072
10073 /* Implement the "print_recreate" breakpoint_ops method for
10074    ranged breakpoints.  */
10075
10076 static void
10077 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10078 {
10079   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10080                       b->addr_string_range_end);
10081   print_recreate_thread (b, fp);
10082 }
10083
10084 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10085
10086 static struct breakpoint_ops ranged_breakpoint_ops;
10087
10088 /* Find the address where the end of the breakpoint range should be
10089    placed, given the SAL of the end of the range.  This is so that if
10090    the user provides a line number, the end of the range is set to the
10091    last instruction of the given line.  */
10092
10093 static CORE_ADDR
10094 find_breakpoint_range_end (struct symtab_and_line sal)
10095 {
10096   CORE_ADDR end;
10097
10098   /* If the user provided a PC value, use it.  Otherwise,
10099      find the address of the end of the given location.  */
10100   if (sal.explicit_pc)
10101     end = sal.pc;
10102   else
10103     {
10104       int ret;
10105       CORE_ADDR start;
10106
10107       ret = find_line_pc_range (sal, &start, &end);
10108       if (!ret)
10109         error (_("Could not find location of the end of the range."));
10110
10111       /* find_line_pc_range returns the start of the next line.  */
10112       end--;
10113     }
10114
10115   return end;
10116 }
10117
10118 /* Implement the "break-range" CLI command.  */
10119
10120 static void
10121 break_range_command (char *arg, int from_tty)
10122 {
10123   char *arg_start, *addr_string_start, *addr_string_end;
10124   struct linespec_result canonical_start, canonical_end;
10125   int bp_count, can_use_bp, length;
10126   CORE_ADDR end;
10127   struct breakpoint *b;
10128   struct symtab_and_line sal_start, sal_end;
10129   struct cleanup *cleanup_bkpt;
10130   struct linespec_sals *lsal_start, *lsal_end;
10131
10132   /* We don't support software ranged breakpoints.  */
10133   if (target_ranged_break_num_registers () < 0)
10134     error (_("This target does not support hardware ranged breakpoints."));
10135
10136   bp_count = hw_breakpoint_used_count ();
10137   bp_count += target_ranged_break_num_registers ();
10138   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10139                                                    bp_count, 0);
10140   if (can_use_bp < 0)
10141     error (_("Hardware breakpoints used exceeds limit."));
10142
10143   arg = skip_spaces (arg);
10144   if (arg == NULL || arg[0] == '\0')
10145     error(_("No address range specified."));
10146
10147   init_linespec_result (&canonical_start);
10148
10149   arg_start = arg;
10150   parse_breakpoint_sals (&arg, &canonical_start);
10151
10152   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10153
10154   if (arg[0] != ',')
10155     error (_("Too few arguments."));
10156   else if (VEC_empty (linespec_sals, canonical_start.sals))
10157     error (_("Could not find location of the beginning of the range."));
10158
10159   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10160
10161   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10162       || lsal_start->sals.nelts != 1)
10163     error (_("Cannot create a ranged breakpoint with multiple locations."));
10164
10165   sal_start = lsal_start->sals.sals[0];
10166   addr_string_start = savestring (arg_start, arg - arg_start);
10167   make_cleanup (xfree, addr_string_start);
10168
10169   arg++;        /* Skip the comma.  */
10170   arg = skip_spaces (arg);
10171
10172   /* Parse the end location.  */
10173
10174   init_linespec_result (&canonical_end);
10175   arg_start = arg;
10176
10177   /* We call decode_line_full directly here instead of using
10178      parse_breakpoint_sals because we need to specify the start location's
10179      symtab and line as the default symtab and line for the end of the
10180      range.  This makes it possible to have ranges like "foo.c:27, +14",
10181      where +14 means 14 lines from the start location.  */
10182   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10183                     sal_start.symtab, sal_start.line,
10184                     &canonical_end, NULL, NULL);
10185
10186   make_cleanup_destroy_linespec_result (&canonical_end);
10187
10188   if (VEC_empty (linespec_sals, canonical_end.sals))
10189     error (_("Could not find location of the end of the range."));
10190
10191   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10192   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10193       || lsal_end->sals.nelts != 1)
10194     error (_("Cannot create a ranged breakpoint with multiple locations."));
10195
10196   sal_end = lsal_end->sals.sals[0];
10197   addr_string_end = savestring (arg_start, arg - arg_start);
10198   make_cleanup (xfree, addr_string_end);
10199
10200   end = find_breakpoint_range_end (sal_end);
10201   if (sal_start.pc > end)
10202     error (_("Invalid address range, end precedes start."));
10203
10204   length = end - sal_start.pc + 1;
10205   if (length < 0)
10206     /* Length overflowed.  */
10207     error (_("Address range too large."));
10208   else if (length == 1)
10209     {
10210       /* This range is simple enough to be handled by
10211          the `hbreak' command.  */
10212       hbreak_command (addr_string_start, 1);
10213
10214       do_cleanups (cleanup_bkpt);
10215
10216       return;
10217     }
10218
10219   /* Now set up the breakpoint.  */
10220   b = set_raw_breakpoint (get_current_arch (), sal_start,
10221                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10222   set_breakpoint_count (breakpoint_count + 1);
10223   b->number = breakpoint_count;
10224   b->disposition = disp_donttouch;
10225   b->addr_string = xstrdup (addr_string_start);
10226   b->addr_string_range_end = xstrdup (addr_string_end);
10227   b->loc->length = length;
10228
10229   do_cleanups (cleanup_bkpt);
10230
10231   mention (b);
10232   observer_notify_breakpoint_created (b);
10233   update_global_location_list (1);
10234 }
10235
10236 /*  Return non-zero if EXP is verified as constant.  Returned zero
10237     means EXP is variable.  Also the constant detection may fail for
10238     some constant expressions and in such case still falsely return
10239     zero.  */
10240
10241 static int
10242 watchpoint_exp_is_const (const struct expression *exp)
10243 {
10244   int i = exp->nelts;
10245
10246   while (i > 0)
10247     {
10248       int oplenp, argsp;
10249
10250       /* We are only interested in the descriptor of each element.  */
10251       operator_length (exp, i, &oplenp, &argsp);
10252       i -= oplenp;
10253
10254       switch (exp->elts[i].opcode)
10255         {
10256         case BINOP_ADD:
10257         case BINOP_SUB:
10258         case BINOP_MUL:
10259         case BINOP_DIV:
10260         case BINOP_REM:
10261         case BINOP_MOD:
10262         case BINOP_LSH:
10263         case BINOP_RSH:
10264         case BINOP_LOGICAL_AND:
10265         case BINOP_LOGICAL_OR:
10266         case BINOP_BITWISE_AND:
10267         case BINOP_BITWISE_IOR:
10268         case BINOP_BITWISE_XOR:
10269         case BINOP_EQUAL:
10270         case BINOP_NOTEQUAL:
10271         case BINOP_LESS:
10272         case BINOP_GTR:
10273         case BINOP_LEQ:
10274         case BINOP_GEQ:
10275         case BINOP_REPEAT:
10276         case BINOP_COMMA:
10277         case BINOP_EXP:
10278         case BINOP_MIN:
10279         case BINOP_MAX:
10280         case BINOP_INTDIV:
10281         case BINOP_CONCAT:
10282         case BINOP_IN:
10283         case BINOP_RANGE:
10284         case TERNOP_COND:
10285         case TERNOP_SLICE:
10286
10287         case OP_LONG:
10288         case OP_DOUBLE:
10289         case OP_DECFLOAT:
10290         case OP_LAST:
10291         case OP_COMPLEX:
10292         case OP_STRING:
10293         case OP_ARRAY:
10294         case OP_TYPE:
10295         case OP_TYPEOF:
10296         case OP_DECLTYPE:
10297         case OP_NAME:
10298         case OP_OBJC_NSSTRING:
10299
10300         case UNOP_NEG:
10301         case UNOP_LOGICAL_NOT:
10302         case UNOP_COMPLEMENT:
10303         case UNOP_ADDR:
10304         case UNOP_HIGH:
10305         case UNOP_CAST:
10306
10307         case UNOP_CAST_TYPE:
10308         case UNOP_REINTERPRET_CAST:
10309         case UNOP_DYNAMIC_CAST:
10310           /* Unary, binary and ternary operators: We have to check
10311              their operands.  If they are constant, then so is the
10312              result of that operation.  For instance, if A and B are
10313              determined to be constants, then so is "A + B".
10314
10315              UNOP_IND is one exception to the rule above, because the
10316              value of *ADDR is not necessarily a constant, even when
10317              ADDR is.  */
10318           break;
10319
10320         case OP_VAR_VALUE:
10321           /* Check whether the associated symbol is a constant.
10322
10323              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10324              possible that a buggy compiler could mark a variable as
10325              constant even when it is not, and TYPE_CONST would return
10326              true in this case, while SYMBOL_CLASS wouldn't.
10327
10328              We also have to check for function symbols because they
10329              are always constant.  */
10330           {
10331             struct symbol *s = exp->elts[i + 2].symbol;
10332
10333             if (SYMBOL_CLASS (s) != LOC_BLOCK
10334                 && SYMBOL_CLASS (s) != LOC_CONST
10335                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10336               return 0;
10337             break;
10338           }
10339
10340         /* The default action is to return 0 because we are using
10341            the optimistic approach here: If we don't know something,
10342            then it is not a constant.  */
10343         default:
10344           return 0;
10345         }
10346     }
10347
10348   return 1;
10349 }
10350
10351 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10352
10353 static void
10354 dtor_watchpoint (struct breakpoint *self)
10355 {
10356   struct watchpoint *w = (struct watchpoint *) self;
10357
10358   xfree (w->cond_exp);
10359   xfree (w->exp);
10360   xfree (w->exp_string);
10361   xfree (w->exp_string_reparse);
10362   value_free (w->val);
10363
10364   base_breakpoint_ops.dtor (self);
10365 }
10366
10367 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10368
10369 static void
10370 re_set_watchpoint (struct breakpoint *b)
10371 {
10372   struct watchpoint *w = (struct watchpoint *) b;
10373
10374   /* Watchpoint can be either on expression using entirely global
10375      variables, or it can be on local variables.
10376
10377      Watchpoints of the first kind are never auto-deleted, and even
10378      persist across program restarts.  Since they can use variables
10379      from shared libraries, we need to reparse expression as libraries
10380      are loaded and unloaded.
10381
10382      Watchpoints on local variables can also change meaning as result
10383      of solib event.  For example, if a watchpoint uses both a local
10384      and a global variables in expression, it's a local watchpoint,
10385      but unloading of a shared library will make the expression
10386      invalid.  This is not a very common use case, but we still
10387      re-evaluate expression, to avoid surprises to the user.
10388
10389      Note that for local watchpoints, we re-evaluate it only if
10390      watchpoints frame id is still valid.  If it's not, it means the
10391      watchpoint is out of scope and will be deleted soon.  In fact,
10392      I'm not sure we'll ever be called in this case.
10393
10394      If a local watchpoint's frame id is still valid, then
10395      w->exp_valid_block is likewise valid, and we can safely use it.
10396
10397      Don't do anything about disabled watchpoints, since they will be
10398      reevaluated again when enabled.  */
10399   update_watchpoint (w, 1 /* reparse */);
10400 }
10401
10402 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10403
10404 static int
10405 insert_watchpoint (struct bp_location *bl)
10406 {
10407   struct watchpoint *w = (struct watchpoint *) bl->owner;
10408   int length = w->exact ? 1 : bl->length;
10409
10410   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10411                                    w->cond_exp);
10412 }
10413
10414 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10415
10416 static int
10417 remove_watchpoint (struct bp_location *bl)
10418 {
10419   struct watchpoint *w = (struct watchpoint *) bl->owner;
10420   int length = w->exact ? 1 : bl->length;
10421
10422   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10423                                    w->cond_exp);
10424 }
10425
10426 static int
10427 breakpoint_hit_watchpoint (const struct bp_location *bl,
10428                            struct address_space *aspace, CORE_ADDR bp_addr,
10429                            const struct target_waitstatus *ws)
10430 {
10431   struct breakpoint *b = bl->owner;
10432   struct watchpoint *w = (struct watchpoint *) b;
10433
10434   /* Continuable hardware watchpoints are treated as non-existent if the
10435      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10436      some data address).  Otherwise gdb won't stop on a break instruction
10437      in the code (not from a breakpoint) when a hardware watchpoint has
10438      been defined.  Also skip watchpoints which we know did not trigger
10439      (did not match the data address).  */
10440   if (is_hardware_watchpoint (b)
10441       && w->watchpoint_triggered == watch_triggered_no)
10442     return 0;
10443
10444   return 1;
10445 }
10446
10447 static void
10448 check_status_watchpoint (bpstat bs)
10449 {
10450   gdb_assert (is_watchpoint (bs->breakpoint_at));
10451
10452   bpstat_check_watchpoint (bs);
10453 }
10454
10455 /* Implement the "resources_needed" breakpoint_ops method for
10456    hardware watchpoints.  */
10457
10458 static int
10459 resources_needed_watchpoint (const struct bp_location *bl)
10460 {
10461   struct watchpoint *w = (struct watchpoint *) bl->owner;
10462   int length = w->exact? 1 : bl->length;
10463
10464   return target_region_ok_for_hw_watchpoint (bl->address, length);
10465 }
10466
10467 /* Implement the "works_in_software_mode" breakpoint_ops method for
10468    hardware watchpoints.  */
10469
10470 static int
10471 works_in_software_mode_watchpoint (const struct breakpoint *b)
10472 {
10473   /* Read and access watchpoints only work with hardware support.  */
10474   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10475 }
10476
10477 static enum print_stop_action
10478 print_it_watchpoint (bpstat bs)
10479 {
10480   struct cleanup *old_chain;
10481   struct breakpoint *b;
10482   const struct bp_location *bl;
10483   struct ui_file *stb;
10484   enum print_stop_action result;
10485   struct watchpoint *w;
10486   struct ui_out *uiout = current_uiout;
10487
10488   gdb_assert (bs->bp_location_at != NULL);
10489
10490   bl = bs->bp_location_at;
10491   b = bs->breakpoint_at;
10492   w = (struct watchpoint *) b;
10493
10494   stb = mem_fileopen ();
10495   old_chain = make_cleanup_ui_file_delete (stb);
10496
10497   switch (b->type)
10498     {
10499     case bp_watchpoint:
10500     case bp_hardware_watchpoint:
10501       annotate_watchpoint (b->number);
10502       if (ui_out_is_mi_like_p (uiout))
10503         ui_out_field_string
10504           (uiout, "reason",
10505            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10506       mention (b);
10507       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10508       ui_out_text (uiout, "\nOld value = ");
10509       watchpoint_value_print (bs->old_val, stb);
10510       ui_out_field_stream (uiout, "old", stb);
10511       ui_out_text (uiout, "\nNew value = ");
10512       watchpoint_value_print (w->val, stb);
10513       ui_out_field_stream (uiout, "new", stb);
10514       ui_out_text (uiout, "\n");
10515       /* More than one watchpoint may have been triggered.  */
10516       result = PRINT_UNKNOWN;
10517       break;
10518
10519     case bp_read_watchpoint:
10520       if (ui_out_is_mi_like_p (uiout))
10521         ui_out_field_string
10522           (uiout, "reason",
10523            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10524       mention (b);
10525       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10526       ui_out_text (uiout, "\nValue = ");
10527       watchpoint_value_print (w->val, stb);
10528       ui_out_field_stream (uiout, "value", stb);
10529       ui_out_text (uiout, "\n");
10530       result = PRINT_UNKNOWN;
10531       break;
10532
10533     case bp_access_watchpoint:
10534       if (bs->old_val != NULL)
10535         {
10536           annotate_watchpoint (b->number);
10537           if (ui_out_is_mi_like_p (uiout))
10538             ui_out_field_string
10539               (uiout, "reason",
10540                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10541           mention (b);
10542           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10543           ui_out_text (uiout, "\nOld value = ");
10544           watchpoint_value_print (bs->old_val, stb);
10545           ui_out_field_stream (uiout, "old", stb);
10546           ui_out_text (uiout, "\nNew value = ");
10547         }
10548       else
10549         {
10550           mention (b);
10551           if (ui_out_is_mi_like_p (uiout))
10552             ui_out_field_string
10553               (uiout, "reason",
10554                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10555           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10556           ui_out_text (uiout, "\nValue = ");
10557         }
10558       watchpoint_value_print (w->val, stb);
10559       ui_out_field_stream (uiout, "new", stb);
10560       ui_out_text (uiout, "\n");
10561       result = PRINT_UNKNOWN;
10562       break;
10563     default:
10564       result = PRINT_UNKNOWN;
10565     }
10566
10567   do_cleanups (old_chain);
10568   return result;
10569 }
10570
10571 /* Implement the "print_mention" breakpoint_ops method for hardware
10572    watchpoints.  */
10573
10574 static void
10575 print_mention_watchpoint (struct breakpoint *b)
10576 {
10577   struct cleanup *ui_out_chain;
10578   struct watchpoint *w = (struct watchpoint *) b;
10579   struct ui_out *uiout = current_uiout;
10580
10581   switch (b->type)
10582     {
10583     case bp_watchpoint:
10584       ui_out_text (uiout, "Watchpoint ");
10585       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10586       break;
10587     case bp_hardware_watchpoint:
10588       ui_out_text (uiout, "Hardware watchpoint ");
10589       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10590       break;
10591     case bp_read_watchpoint:
10592       ui_out_text (uiout, "Hardware read watchpoint ");
10593       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10594       break;
10595     case bp_access_watchpoint:
10596       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10597       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10598       break;
10599     default:
10600       internal_error (__FILE__, __LINE__,
10601                       _("Invalid hardware watchpoint type."));
10602     }
10603
10604   ui_out_field_int (uiout, "number", b->number);
10605   ui_out_text (uiout, ": ");
10606   ui_out_field_string (uiout, "exp", w->exp_string);
10607   do_cleanups (ui_out_chain);
10608 }
10609
10610 /* Implement the "print_recreate" breakpoint_ops method for
10611    watchpoints.  */
10612
10613 static void
10614 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10615 {
10616   struct watchpoint *w = (struct watchpoint *) b;
10617
10618   switch (b->type)
10619     {
10620     case bp_watchpoint:
10621     case bp_hardware_watchpoint:
10622       fprintf_unfiltered (fp, "watch");
10623       break;
10624     case bp_read_watchpoint:
10625       fprintf_unfiltered (fp, "rwatch");
10626       break;
10627     case bp_access_watchpoint:
10628       fprintf_unfiltered (fp, "awatch");
10629       break;
10630     default:
10631       internal_error (__FILE__, __LINE__,
10632                       _("Invalid watchpoint type."));
10633     }
10634
10635   fprintf_unfiltered (fp, " %s", w->exp_string);
10636   print_recreate_thread (b, fp);
10637 }
10638
10639 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10640
10641 static struct breakpoint_ops watchpoint_breakpoint_ops;
10642
10643 /* Implement the "insert" breakpoint_ops method for
10644    masked hardware watchpoints.  */
10645
10646 static int
10647 insert_masked_watchpoint (struct bp_location *bl)
10648 {
10649   struct watchpoint *w = (struct watchpoint *) bl->owner;
10650
10651   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10652                                         bl->watchpoint_type);
10653 }
10654
10655 /* Implement the "remove" breakpoint_ops method for
10656    masked hardware watchpoints.  */
10657
10658 static int
10659 remove_masked_watchpoint (struct bp_location *bl)
10660 {
10661   struct watchpoint *w = (struct watchpoint *) bl->owner;
10662
10663   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10664                                         bl->watchpoint_type);
10665 }
10666
10667 /* Implement the "resources_needed" breakpoint_ops method for
10668    masked hardware watchpoints.  */
10669
10670 static int
10671 resources_needed_masked_watchpoint (const struct bp_location *bl)
10672 {
10673   struct watchpoint *w = (struct watchpoint *) bl->owner;
10674
10675   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10676 }
10677
10678 /* Implement the "works_in_software_mode" breakpoint_ops method for
10679    masked hardware watchpoints.  */
10680
10681 static int
10682 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10683 {
10684   return 0;
10685 }
10686
10687 /* Implement the "print_it" breakpoint_ops method for
10688    masked hardware watchpoints.  */
10689
10690 static enum print_stop_action
10691 print_it_masked_watchpoint (bpstat bs)
10692 {
10693   struct breakpoint *b = bs->breakpoint_at;
10694   struct ui_out *uiout = current_uiout;
10695
10696   /* Masked watchpoints have only one location.  */
10697   gdb_assert (b->loc && b->loc->next == NULL);
10698
10699   switch (b->type)
10700     {
10701     case bp_hardware_watchpoint:
10702       annotate_watchpoint (b->number);
10703       if (ui_out_is_mi_like_p (uiout))
10704         ui_out_field_string
10705           (uiout, "reason",
10706            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10707       break;
10708
10709     case bp_read_watchpoint:
10710       if (ui_out_is_mi_like_p (uiout))
10711         ui_out_field_string
10712           (uiout, "reason",
10713            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10714       break;
10715
10716     case bp_access_watchpoint:
10717       if (ui_out_is_mi_like_p (uiout))
10718         ui_out_field_string
10719           (uiout, "reason",
10720            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10721       break;
10722     default:
10723       internal_error (__FILE__, __LINE__,
10724                       _("Invalid hardware watchpoint type."));
10725     }
10726
10727   mention (b);
10728   ui_out_text (uiout, _("\n\
10729 Check the underlying instruction at PC for the memory\n\
10730 address and value which triggered this watchpoint.\n"));
10731   ui_out_text (uiout, "\n");
10732
10733   /* More than one watchpoint may have been triggered.  */
10734   return PRINT_UNKNOWN;
10735 }
10736
10737 /* Implement the "print_one_detail" breakpoint_ops method for
10738    masked hardware watchpoints.  */
10739
10740 static void
10741 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10742                                     struct ui_out *uiout)
10743 {
10744   struct watchpoint *w = (struct watchpoint *) b;
10745
10746   /* Masked watchpoints have only one location.  */
10747   gdb_assert (b->loc && b->loc->next == NULL);
10748
10749   ui_out_text (uiout, "\tmask ");
10750   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10751   ui_out_text (uiout, "\n");
10752 }
10753
10754 /* Implement the "print_mention" breakpoint_ops method for
10755    masked hardware watchpoints.  */
10756
10757 static void
10758 print_mention_masked_watchpoint (struct breakpoint *b)
10759 {
10760   struct watchpoint *w = (struct watchpoint *) b;
10761   struct ui_out *uiout = current_uiout;
10762   struct cleanup *ui_out_chain;
10763
10764   switch (b->type)
10765     {
10766     case bp_hardware_watchpoint:
10767       ui_out_text (uiout, "Masked hardware watchpoint ");
10768       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10769       break;
10770     case bp_read_watchpoint:
10771       ui_out_text (uiout, "Masked hardware read watchpoint ");
10772       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10773       break;
10774     case bp_access_watchpoint:
10775       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10776       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10777       break;
10778     default:
10779       internal_error (__FILE__, __LINE__,
10780                       _("Invalid hardware watchpoint type."));
10781     }
10782
10783   ui_out_field_int (uiout, "number", b->number);
10784   ui_out_text (uiout, ": ");
10785   ui_out_field_string (uiout, "exp", w->exp_string);
10786   do_cleanups (ui_out_chain);
10787 }
10788
10789 /* Implement the "print_recreate" breakpoint_ops method for
10790    masked hardware watchpoints.  */
10791
10792 static void
10793 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10794 {
10795   struct watchpoint *w = (struct watchpoint *) b;
10796   char tmp[40];
10797
10798   switch (b->type)
10799     {
10800     case bp_hardware_watchpoint:
10801       fprintf_unfiltered (fp, "watch");
10802       break;
10803     case bp_read_watchpoint:
10804       fprintf_unfiltered (fp, "rwatch");
10805       break;
10806     case bp_access_watchpoint:
10807       fprintf_unfiltered (fp, "awatch");
10808       break;
10809     default:
10810       internal_error (__FILE__, __LINE__,
10811                       _("Invalid hardware watchpoint type."));
10812     }
10813
10814   sprintf_vma (tmp, w->hw_wp_mask);
10815   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10816   print_recreate_thread (b, fp);
10817 }
10818
10819 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10820
10821 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10822
10823 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10824
10825 static int
10826 is_masked_watchpoint (const struct breakpoint *b)
10827 {
10828   return b->ops == &masked_watchpoint_breakpoint_ops;
10829 }
10830
10831 /* accessflag:  hw_write:  watch write, 
10832                 hw_read:   watch read, 
10833                 hw_access: watch access (read or write) */
10834 static void
10835 watch_command_1 (char *arg, int accessflag, int from_tty,
10836                  int just_location, int internal)
10837 {
10838   volatile struct gdb_exception e;
10839   struct breakpoint *b, *scope_breakpoint = NULL;
10840   struct expression *exp;
10841   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10842   struct value *val, *mark, *result;
10843   struct frame_info *frame;
10844   char *exp_start = NULL;
10845   char *exp_end = NULL;
10846   char *tok, *end_tok;
10847   int toklen = -1;
10848   char *cond_start = NULL;
10849   char *cond_end = NULL;
10850   enum bptype bp_type;
10851   int thread = -1;
10852   int pc = 0;
10853   /* Flag to indicate whether we are going to use masks for
10854      the hardware watchpoint.  */
10855   int use_mask = 0;
10856   CORE_ADDR mask = 0;
10857   struct watchpoint *w;
10858
10859   /* Make sure that we actually have parameters to parse.  */
10860   if (arg != NULL && arg[0] != '\0')
10861     {
10862       char *value_start;
10863
10864       /* Look for "parameter value" pairs at the end
10865          of the arguments string.  */
10866       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10867         {
10868           /* Skip whitespace at the end of the argument list.  */
10869           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10870             tok--;
10871
10872           /* Find the beginning of the last token.
10873              This is the value of the parameter.  */
10874           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10875             tok--;
10876           value_start = tok + 1;
10877
10878           /* Skip whitespace.  */
10879           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10880             tok--;
10881
10882           end_tok = tok;
10883
10884           /* Find the beginning of the second to last token.
10885              This is the parameter itself.  */
10886           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10887             tok--;
10888           tok++;
10889           toklen = end_tok - tok + 1;
10890
10891           if (toklen == 6 && !strncmp (tok, "thread", 6))
10892             {
10893               /* At this point we've found a "thread" token, which means
10894                  the user is trying to set a watchpoint that triggers
10895                  only in a specific thread.  */
10896               char *endp;
10897
10898               if (thread != -1)
10899                 error(_("You can specify only one thread."));
10900
10901               /* Extract the thread ID from the next token.  */
10902               thread = strtol (value_start, &endp, 0);
10903
10904               /* Check if the user provided a valid numeric value for the
10905                  thread ID.  */
10906               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10907                 error (_("Invalid thread ID specification %s."), value_start);
10908
10909               /* Check if the thread actually exists.  */
10910               if (!valid_thread_id (thread))
10911                 invalid_thread_id_error (thread);
10912             }
10913           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10914             {
10915               /* We've found a "mask" token, which means the user wants to
10916                  create a hardware watchpoint that is going to have the mask
10917                  facility.  */
10918               struct value *mask_value, *mark;
10919
10920               if (use_mask)
10921                 error(_("You can specify only one mask."));
10922
10923               use_mask = just_location = 1;
10924
10925               mark = value_mark ();
10926               mask_value = parse_to_comma_and_eval (&value_start);
10927               mask = value_as_address (mask_value);
10928               value_free_to_mark (mark);
10929             }
10930           else
10931             /* We didn't recognize what we found.  We should stop here.  */
10932             break;
10933
10934           /* Truncate the string and get rid of the "parameter value" pair before
10935              the arguments string is parsed by the parse_exp_1 function.  */
10936           *tok = '\0';
10937         }
10938     }
10939
10940   /* Parse the rest of the arguments.  */
10941   innermost_block = NULL;
10942   exp_start = arg;
10943   exp = parse_exp_1 (&arg, 0, 0, 0);
10944   exp_end = arg;
10945   /* Remove trailing whitespace from the expression before saving it.
10946      This makes the eventual display of the expression string a bit
10947      prettier.  */
10948   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10949     --exp_end;
10950
10951   /* Checking if the expression is not constant.  */
10952   if (watchpoint_exp_is_const (exp))
10953     {
10954       int len;
10955
10956       len = exp_end - exp_start;
10957       while (len > 0 && isspace (exp_start[len - 1]))
10958         len--;
10959       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10960     }
10961
10962   exp_valid_block = innermost_block;
10963   mark = value_mark ();
10964   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10965
10966   if (just_location)
10967     {
10968       int ret;
10969
10970       exp_valid_block = NULL;
10971       val = value_addr (result);
10972       release_value (val);
10973       value_free_to_mark (mark);
10974
10975       if (use_mask)
10976         {
10977           ret = target_masked_watch_num_registers (value_as_address (val),
10978                                                    mask);
10979           if (ret == -1)
10980             error (_("This target does not support masked watchpoints."));
10981           else if (ret == -2)
10982             error (_("Invalid mask or memory region."));
10983         }
10984     }
10985   else if (val != NULL)
10986     release_value (val);
10987
10988   tok = skip_spaces (arg);
10989   end_tok = skip_to_space (tok);
10990
10991   toklen = end_tok - tok;
10992   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10993     {
10994       struct expression *cond;
10995
10996       innermost_block = NULL;
10997       tok = cond_start = end_tok + 1;
10998       cond = parse_exp_1 (&tok, 0, 0, 0);
10999
11000       /* The watchpoint expression may not be local, but the condition
11001          may still be.  E.g.: `watch global if local > 0'.  */
11002       cond_exp_valid_block = innermost_block;
11003
11004       xfree (cond);
11005       cond_end = tok;
11006     }
11007   if (*tok)
11008     error (_("Junk at end of command."));
11009
11010   if (accessflag == hw_read)
11011     bp_type = bp_read_watchpoint;
11012   else if (accessflag == hw_access)
11013     bp_type = bp_access_watchpoint;
11014   else
11015     bp_type = bp_hardware_watchpoint;
11016
11017   frame = block_innermost_frame (exp_valid_block);
11018
11019   /* If the expression is "local", then set up a "watchpoint scope"
11020      breakpoint at the point where we've left the scope of the watchpoint
11021      expression.  Create the scope breakpoint before the watchpoint, so
11022      that we will encounter it first in bpstat_stop_status.  */
11023   if (exp_valid_block && frame)
11024     {
11025       if (frame_id_p (frame_unwind_caller_id (frame)))
11026         {
11027           scope_breakpoint
11028             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11029                                           frame_unwind_caller_pc (frame),
11030                                           bp_watchpoint_scope,
11031                                           &momentary_breakpoint_ops);
11032
11033           scope_breakpoint->enable_state = bp_enabled;
11034
11035           /* Automatically delete the breakpoint when it hits.  */
11036           scope_breakpoint->disposition = disp_del;
11037
11038           /* Only break in the proper frame (help with recursion).  */
11039           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11040
11041           /* Set the address at which we will stop.  */
11042           scope_breakpoint->loc->gdbarch
11043             = frame_unwind_caller_arch (frame);
11044           scope_breakpoint->loc->requested_address
11045             = frame_unwind_caller_pc (frame);
11046           scope_breakpoint->loc->address
11047             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11048                                          scope_breakpoint->loc->requested_address,
11049                                          scope_breakpoint->type);
11050         }
11051     }
11052
11053   /* Now set up the breakpoint.  */
11054
11055   w = XCNEW (struct watchpoint);
11056   b = &w->base;
11057   if (use_mask)
11058     init_raw_breakpoint_without_location (b, NULL, bp_type,
11059                                           &masked_watchpoint_breakpoint_ops);
11060   else
11061     init_raw_breakpoint_without_location (b, NULL, bp_type,
11062                                           &watchpoint_breakpoint_ops);
11063   b->thread = thread;
11064   b->disposition = disp_donttouch;
11065   b->pspace = current_program_space;
11066   w->exp = exp;
11067   w->exp_valid_block = exp_valid_block;
11068   w->cond_exp_valid_block = cond_exp_valid_block;
11069   if (just_location)
11070     {
11071       struct type *t = value_type (val);
11072       CORE_ADDR addr = value_as_address (val);
11073       char *name;
11074
11075       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11076       name = type_to_string (t);
11077
11078       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11079                                           core_addr_to_string (addr));
11080       xfree (name);
11081
11082       w->exp_string = xstrprintf ("-location %.*s",
11083                                   (int) (exp_end - exp_start), exp_start);
11084
11085       /* The above expression is in C.  */
11086       b->language = language_c;
11087     }
11088   else
11089     w->exp_string = savestring (exp_start, exp_end - exp_start);
11090
11091   if (use_mask)
11092     {
11093       w->hw_wp_mask = mask;
11094     }
11095   else
11096     {
11097       w->val = val;
11098       w->val_valid = 1;
11099     }
11100
11101   if (cond_start)
11102     b->cond_string = savestring (cond_start, cond_end - cond_start);
11103   else
11104     b->cond_string = 0;
11105
11106   if (frame)
11107     {
11108       w->watchpoint_frame = get_frame_id (frame);
11109       w->watchpoint_thread = inferior_ptid;
11110     }
11111   else
11112     {
11113       w->watchpoint_frame = null_frame_id;
11114       w->watchpoint_thread = null_ptid;
11115     }
11116
11117   if (scope_breakpoint != NULL)
11118     {
11119       /* The scope breakpoint is related to the watchpoint.  We will
11120          need to act on them together.  */
11121       b->related_breakpoint = scope_breakpoint;
11122       scope_breakpoint->related_breakpoint = b;
11123     }
11124
11125   if (!just_location)
11126     value_free_to_mark (mark);
11127
11128   TRY_CATCH (e, RETURN_MASK_ALL)
11129     {
11130       /* Finally update the new watchpoint.  This creates the locations
11131          that should be inserted.  */
11132       update_watchpoint (w, 1);
11133     }
11134   if (e.reason < 0)
11135     {
11136       delete_breakpoint (b);
11137       throw_exception (e);
11138     }
11139
11140   install_breakpoint (internal, b, 1);
11141 }
11142
11143 /* Return count of debug registers needed to watch the given expression.
11144    If the watchpoint cannot be handled in hardware return zero.  */
11145
11146 static int
11147 can_use_hardware_watchpoint (struct value *v)
11148 {
11149   int found_memory_cnt = 0;
11150   struct value *head = v;
11151
11152   /* Did the user specifically forbid us to use hardware watchpoints? */
11153   if (!can_use_hw_watchpoints)
11154     return 0;
11155
11156   /* Make sure that the value of the expression depends only upon
11157      memory contents, and values computed from them within GDB.  If we
11158      find any register references or function calls, we can't use a
11159      hardware watchpoint.
11160
11161      The idea here is that evaluating an expression generates a series
11162      of values, one holding the value of every subexpression.  (The
11163      expression a*b+c has five subexpressions: a, b, a*b, c, and
11164      a*b+c.)  GDB's values hold almost enough information to establish
11165      the criteria given above --- they identify memory lvalues,
11166      register lvalues, computed values, etcetera.  So we can evaluate
11167      the expression, and then scan the chain of values that leaves
11168      behind to decide whether we can detect any possible change to the
11169      expression's final value using only hardware watchpoints.
11170
11171      However, I don't think that the values returned by inferior
11172      function calls are special in any way.  So this function may not
11173      notice that an expression involving an inferior function call
11174      can't be watched with hardware watchpoints.  FIXME.  */
11175   for (; v; v = value_next (v))
11176     {
11177       if (VALUE_LVAL (v) == lval_memory)
11178         {
11179           if (v != head && value_lazy (v))
11180             /* A lazy memory lvalue in the chain is one that GDB never
11181                needed to fetch; we either just used its address (e.g.,
11182                `a' in `a.b') or we never needed it at all (e.g., `a'
11183                in `a,b').  This doesn't apply to HEAD; if that is
11184                lazy then it was not readable, but watch it anyway.  */
11185             ;
11186           else
11187             {
11188               /* Ahh, memory we actually used!  Check if we can cover
11189                  it with hardware watchpoints.  */
11190               struct type *vtype = check_typedef (value_type (v));
11191
11192               /* We only watch structs and arrays if user asked for it
11193                  explicitly, never if they just happen to appear in a
11194                  middle of some value chain.  */
11195               if (v == head
11196                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11197                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11198                 {
11199                   CORE_ADDR vaddr = value_address (v);
11200                   int len;
11201                   int num_regs;
11202
11203                   len = (target_exact_watchpoints
11204                          && is_scalar_type_recursive (vtype))?
11205                     1 : TYPE_LENGTH (value_type (v));
11206
11207                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11208                   if (!num_regs)
11209                     return 0;
11210                   else
11211                     found_memory_cnt += num_regs;
11212                 }
11213             }
11214         }
11215       else if (VALUE_LVAL (v) != not_lval
11216                && deprecated_value_modifiable (v) == 0)
11217         return 0;       /* These are values from the history (e.g., $1).  */
11218       else if (VALUE_LVAL (v) == lval_register)
11219         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11220     }
11221
11222   /* The expression itself looks suitable for using a hardware
11223      watchpoint, but give the target machine a chance to reject it.  */
11224   return found_memory_cnt;
11225 }
11226
11227 void
11228 watch_command_wrapper (char *arg, int from_tty, int internal)
11229 {
11230   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11231 }
11232
11233 /* A helper function that looks for the "-location" argument and then
11234    calls watch_command_1.  */
11235
11236 static void
11237 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11238 {
11239   int just_location = 0;
11240
11241   if (arg
11242       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11243           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11244     {
11245       arg = skip_spaces (arg);
11246       just_location = 1;
11247     }
11248
11249   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11250 }
11251
11252 static void
11253 watch_command (char *arg, int from_tty)
11254 {
11255   watch_maybe_just_location (arg, hw_write, from_tty);
11256 }
11257
11258 void
11259 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11260 {
11261   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11262 }
11263
11264 static void
11265 rwatch_command (char *arg, int from_tty)
11266 {
11267   watch_maybe_just_location (arg, hw_read, from_tty);
11268 }
11269
11270 void
11271 awatch_command_wrapper (char *arg, int from_tty, int internal)
11272 {
11273   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11274 }
11275
11276 static void
11277 awatch_command (char *arg, int from_tty)
11278 {
11279   watch_maybe_just_location (arg, hw_access, from_tty);
11280 }
11281 \f
11282
11283 /* Helper routines for the until_command routine in infcmd.c.  Here
11284    because it uses the mechanisms of breakpoints.  */
11285
11286 struct until_break_command_continuation_args
11287 {
11288   struct breakpoint *breakpoint;
11289   struct breakpoint *breakpoint2;
11290   int thread_num;
11291 };
11292
11293 /* This function is called by fetch_inferior_event via the
11294    cmd_continuation pointer, to complete the until command.  It takes
11295    care of cleaning up the temporary breakpoints set up by the until
11296    command.  */
11297 static void
11298 until_break_command_continuation (void *arg, int err)
11299 {
11300   struct until_break_command_continuation_args *a = arg;
11301
11302   delete_breakpoint (a->breakpoint);
11303   if (a->breakpoint2)
11304     delete_breakpoint (a->breakpoint2);
11305   delete_longjmp_breakpoint (a->thread_num);
11306 }
11307
11308 void
11309 until_break_command (char *arg, int from_tty, int anywhere)
11310 {
11311   struct symtabs_and_lines sals;
11312   struct symtab_and_line sal;
11313   struct frame_info *frame;
11314   struct gdbarch *frame_gdbarch;
11315   struct frame_id stack_frame_id;
11316   struct frame_id caller_frame_id;
11317   struct breakpoint *breakpoint;
11318   struct breakpoint *breakpoint2 = NULL;
11319   struct cleanup *old_chain;
11320   int thread;
11321   struct thread_info *tp;
11322
11323   clear_proceed_status ();
11324
11325   /* Set a breakpoint where the user wants it and at return from
11326      this function.  */
11327
11328   if (last_displayed_sal_is_valid ())
11329     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11330                           get_last_displayed_symtab (),
11331                           get_last_displayed_line ());
11332   else
11333     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11334                           (struct symtab *) NULL, 0);
11335
11336   if (sals.nelts != 1)
11337     error (_("Couldn't get information on specified line."));
11338
11339   sal = sals.sals[0];
11340   xfree (sals.sals);    /* malloc'd, so freed.  */
11341
11342   if (*arg)
11343     error (_("Junk at end of arguments."));
11344
11345   resolve_sal_pc (&sal);
11346
11347   tp = inferior_thread ();
11348   thread = tp->num;
11349
11350   old_chain = make_cleanup (null_cleanup, NULL);
11351
11352   /* Note linespec handling above invalidates the frame chain.
11353      Installing a breakpoint also invalidates the frame chain (as it
11354      may need to switch threads), so do any frame handling before
11355      that.  */
11356
11357   frame = get_selected_frame (NULL);
11358   frame_gdbarch = get_frame_arch (frame);
11359   stack_frame_id = get_stack_frame_id (frame);
11360   caller_frame_id = frame_unwind_caller_id (frame);
11361
11362   /* Keep within the current frame, or in frames called by the current
11363      one.  */
11364
11365   if (frame_id_p (caller_frame_id))
11366     {
11367       struct symtab_and_line sal2;
11368
11369       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11370       sal2.pc = frame_unwind_caller_pc (frame);
11371       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11372                                               sal2,
11373                                               caller_frame_id,
11374                                               bp_until);
11375       make_cleanup_delete_breakpoint (breakpoint2);
11376
11377       set_longjmp_breakpoint (tp, caller_frame_id);
11378       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11379     }
11380
11381   /* set_momentary_breakpoint could invalidate FRAME.  */
11382   frame = NULL;
11383
11384   if (anywhere)
11385     /* If the user told us to continue until a specified location,
11386        we don't specify a frame at which we need to stop.  */
11387     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11388                                            null_frame_id, bp_until);
11389   else
11390     /* Otherwise, specify the selected frame, because we want to stop
11391        only at the very same frame.  */
11392     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11393                                            stack_frame_id, bp_until);
11394   make_cleanup_delete_breakpoint (breakpoint);
11395
11396   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11397
11398   /* If we are running asynchronously, and proceed call above has
11399      actually managed to start the target, arrange for breakpoints to
11400      be deleted when the target stops.  Otherwise, we're already
11401      stopped and delete breakpoints via cleanup chain.  */
11402
11403   if (target_can_async_p () && is_running (inferior_ptid))
11404     {
11405       struct until_break_command_continuation_args *args;
11406       args = xmalloc (sizeof (*args));
11407
11408       args->breakpoint = breakpoint;
11409       args->breakpoint2 = breakpoint2;
11410       args->thread_num = thread;
11411
11412       discard_cleanups (old_chain);
11413       add_continuation (inferior_thread (),
11414                         until_break_command_continuation, args,
11415                         xfree);
11416     }
11417   else
11418     do_cleanups (old_chain);
11419 }
11420
11421 /* This function attempts to parse an optional "if <cond>" clause
11422    from the arg string.  If one is not found, it returns NULL.
11423
11424    Else, it returns a pointer to the condition string.  (It does not
11425    attempt to evaluate the string against a particular block.)  And,
11426    it updates arg to point to the first character following the parsed
11427    if clause in the arg string.  */
11428
11429 static char *
11430 ep_parse_optional_if_clause (char **arg)
11431 {
11432   char *cond_string;
11433
11434   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11435     return NULL;
11436
11437   /* Skip the "if" keyword.  */
11438   (*arg) += 2;
11439
11440   /* Skip any extra leading whitespace, and record the start of the
11441      condition string.  */
11442   *arg = skip_spaces (*arg);
11443   cond_string = *arg;
11444
11445   /* Assume that the condition occupies the remainder of the arg
11446      string.  */
11447   (*arg) += strlen (cond_string);
11448
11449   return cond_string;
11450 }
11451
11452 /* Commands to deal with catching events, such as signals, exceptions,
11453    process start/exit, etc.  */
11454
11455 typedef enum
11456 {
11457   catch_fork_temporary, catch_vfork_temporary,
11458   catch_fork_permanent, catch_vfork_permanent
11459 }
11460 catch_fork_kind;
11461
11462 static void
11463 catch_fork_command_1 (char *arg, int from_tty, 
11464                       struct cmd_list_element *command)
11465 {
11466   struct gdbarch *gdbarch = get_current_arch ();
11467   char *cond_string = NULL;
11468   catch_fork_kind fork_kind;
11469   int tempflag;
11470
11471   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11472   tempflag = (fork_kind == catch_fork_temporary
11473               || fork_kind == catch_vfork_temporary);
11474
11475   if (!arg)
11476     arg = "";
11477   arg = skip_spaces (arg);
11478
11479   /* The allowed syntax is:
11480      catch [v]fork
11481      catch [v]fork if <cond>
11482
11483      First, check if there's an if clause.  */
11484   cond_string = ep_parse_optional_if_clause (&arg);
11485
11486   if ((*arg != '\0') && !isspace (*arg))
11487     error (_("Junk at end of arguments."));
11488
11489   /* If this target supports it, create a fork or vfork catchpoint
11490      and enable reporting of such events.  */
11491   switch (fork_kind)
11492     {
11493     case catch_fork_temporary:
11494     case catch_fork_permanent:
11495       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11496                                           &catch_fork_breakpoint_ops);
11497       break;
11498     case catch_vfork_temporary:
11499     case catch_vfork_permanent:
11500       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11501                                           &catch_vfork_breakpoint_ops);
11502       break;
11503     default:
11504       error (_("unsupported or unknown fork kind; cannot catch it"));
11505       break;
11506     }
11507 }
11508
11509 static void
11510 catch_exec_command_1 (char *arg, int from_tty, 
11511                       struct cmd_list_element *command)
11512 {
11513   struct exec_catchpoint *c;
11514   struct gdbarch *gdbarch = get_current_arch ();
11515   int tempflag;
11516   char *cond_string = NULL;
11517
11518   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11519
11520   if (!arg)
11521     arg = "";
11522   arg = skip_spaces (arg);
11523
11524   /* The allowed syntax is:
11525      catch exec
11526      catch exec if <cond>
11527
11528      First, check if there's an if clause.  */
11529   cond_string = ep_parse_optional_if_clause (&arg);
11530
11531   if ((*arg != '\0') && !isspace (*arg))
11532     error (_("Junk at end of arguments."));
11533
11534   c = XNEW (struct exec_catchpoint);
11535   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11536                    &catch_exec_breakpoint_ops);
11537   c->exec_pathname = NULL;
11538
11539   install_breakpoint (0, &c->base, 1);
11540 }
11541
11542 static enum print_stop_action
11543 print_it_exception_catchpoint (bpstat bs)
11544 {
11545   struct ui_out *uiout = current_uiout;
11546   struct breakpoint *b = bs->breakpoint_at;
11547   int bp_temp, bp_throw;
11548
11549   annotate_catchpoint (b->number);
11550
11551   bp_throw = strstr (b->addr_string, "throw") != NULL;
11552   if (b->loc->address != b->loc->requested_address)
11553     breakpoint_adjustment_warning (b->loc->requested_address,
11554                                    b->loc->address,
11555                                    b->number, 1);
11556   bp_temp = b->disposition == disp_del;
11557   ui_out_text (uiout, 
11558                bp_temp ? "Temporary catchpoint "
11559                        : "Catchpoint ");
11560   if (!ui_out_is_mi_like_p (uiout))
11561     ui_out_field_int (uiout, "bkptno", b->number);
11562   ui_out_text (uiout,
11563                bp_throw ? " (exception thrown), "
11564                         : " (exception caught), ");
11565   if (ui_out_is_mi_like_p (uiout))
11566     {
11567       ui_out_field_string (uiout, "reason", 
11568                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11569       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11570       ui_out_field_int (uiout, "bkptno", b->number);
11571     }
11572   return PRINT_SRC_AND_LOC;
11573 }
11574
11575 static void
11576 print_one_exception_catchpoint (struct breakpoint *b, 
11577                                 struct bp_location **last_loc)
11578 {
11579   struct value_print_options opts;
11580   struct ui_out *uiout = current_uiout;
11581
11582   get_user_print_options (&opts);
11583   if (opts.addressprint)
11584     {
11585       annotate_field (4);
11586       if (b->loc == NULL || b->loc->shlib_disabled)
11587         ui_out_field_string (uiout, "addr", "<PENDING>");
11588       else
11589         ui_out_field_core_addr (uiout, "addr",
11590                                 b->loc->gdbarch, b->loc->address);
11591     }
11592   annotate_field (5);
11593   if (b->loc)
11594     *last_loc = b->loc;
11595   if (strstr (b->addr_string, "throw") != NULL)
11596     {
11597       ui_out_field_string (uiout, "what", "exception throw");
11598       if (ui_out_is_mi_like_p (uiout))
11599         ui_out_field_string (uiout, "catch-type", "throw");
11600     }
11601   else
11602     {
11603       ui_out_field_string (uiout, "what", "exception catch");
11604       if (ui_out_is_mi_like_p (uiout))
11605         ui_out_field_string (uiout, "catch-type", "catch");
11606     }
11607 }
11608
11609 static void
11610 print_mention_exception_catchpoint (struct breakpoint *b)
11611 {
11612   struct ui_out *uiout = current_uiout;
11613   int bp_temp;
11614   int bp_throw;
11615
11616   bp_temp = b->disposition == disp_del;
11617   bp_throw = strstr (b->addr_string, "throw") != NULL;
11618   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11619                               : _("Catchpoint "));
11620   ui_out_field_int (uiout, "bkptno", b->number);
11621   ui_out_text (uiout, bp_throw ? _(" (throw)")
11622                                : _(" (catch)"));
11623 }
11624
11625 /* Implement the "print_recreate" breakpoint_ops method for throw and
11626    catch catchpoints.  */
11627
11628 static void
11629 print_recreate_exception_catchpoint (struct breakpoint *b, 
11630                                      struct ui_file *fp)
11631 {
11632   int bp_temp;
11633   int bp_throw;
11634
11635   bp_temp = b->disposition == disp_del;
11636   bp_throw = strstr (b->addr_string, "throw") != NULL;
11637   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11638   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11639   print_recreate_thread (b, fp);
11640 }
11641
11642 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11643
11644 static int
11645 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11646                           enum exception_event_kind ex_event, int from_tty)
11647 {
11648   char *trigger_func_name;
11649  
11650   if (ex_event == EX_EVENT_CATCH)
11651     trigger_func_name = "__cxa_begin_catch";
11652   else
11653     trigger_func_name = "__cxa_throw";
11654
11655   create_breakpoint (get_current_arch (),
11656                      trigger_func_name, cond_string, -1, NULL,
11657                      0 /* condition and thread are valid.  */,
11658                      tempflag, bp_breakpoint,
11659                      0,
11660                      AUTO_BOOLEAN_TRUE /* pending */,
11661                      &gnu_v3_exception_catchpoint_ops, from_tty,
11662                      1 /* enabled */,
11663                      0 /* internal */,
11664                      0);
11665
11666   return 1;
11667 }
11668
11669 /* Deal with "catch catch" and "catch throw" commands.  */
11670
11671 static void
11672 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11673                            int tempflag, int from_tty)
11674 {
11675   char *cond_string = NULL;
11676
11677   if (!arg)
11678     arg = "";
11679   arg = skip_spaces (arg);
11680
11681   cond_string = ep_parse_optional_if_clause (&arg);
11682
11683   if ((*arg != '\0') && !isspace (*arg))
11684     error (_("Junk at end of arguments."));
11685
11686   if (ex_event != EX_EVENT_THROW
11687       && ex_event != EX_EVENT_CATCH)
11688     error (_("Unsupported or unknown exception event; cannot catch it"));
11689
11690   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11691     return;
11692
11693   warning (_("Unsupported with this platform/compiler combination."));
11694 }
11695
11696 /* Implementation of "catch catch" command.  */
11697
11698 static void
11699 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11700 {
11701   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11702
11703   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11704 }
11705
11706 /* Implementation of "catch throw" command.  */
11707
11708 static void
11709 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11710 {
11711   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11712
11713   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11714 }
11715
11716 void
11717 init_ada_exception_breakpoint (struct breakpoint *b,
11718                                struct gdbarch *gdbarch,
11719                                struct symtab_and_line sal,
11720                                char *addr_string,
11721                                const struct breakpoint_ops *ops,
11722                                int tempflag,
11723                                int from_tty)
11724 {
11725   if (from_tty)
11726     {
11727       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11728       if (!loc_gdbarch)
11729         loc_gdbarch = gdbarch;
11730
11731       describe_other_breakpoints (loc_gdbarch,
11732                                   sal.pspace, sal.pc, sal.section, -1);
11733       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11734          version for exception catchpoints, because two catchpoints
11735          used for different exception names will use the same address.
11736          In this case, a "breakpoint ... also set at..." warning is
11737          unproductive.  Besides, the warning phrasing is also a bit
11738          inappropriate, we should use the word catchpoint, and tell
11739          the user what type of catchpoint it is.  The above is good
11740          enough for now, though.  */
11741     }
11742
11743   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11744
11745   b->enable_state = bp_enabled;
11746   b->disposition = tempflag ? disp_del : disp_donttouch;
11747   b->addr_string = addr_string;
11748   b->language = language_ada;
11749 }
11750
11751 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11752    filter list, or NULL if no filtering is required.  */
11753 static VEC(int) *
11754 catch_syscall_split_args (char *arg)
11755 {
11756   VEC(int) *result = NULL;
11757   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11758
11759   while (*arg != '\0')
11760     {
11761       int i, syscall_number;
11762       char *endptr;
11763       char cur_name[128];
11764       struct syscall s;
11765
11766       /* Skip whitespace.  */
11767       while (isspace (*arg))
11768         arg++;
11769
11770       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11771         cur_name[i] = arg[i];
11772       cur_name[i] = '\0';
11773       arg += i;
11774
11775       /* Check if the user provided a syscall name or a number.  */
11776       syscall_number = (int) strtol (cur_name, &endptr, 0);
11777       if (*endptr == '\0')
11778         get_syscall_by_number (syscall_number, &s);
11779       else
11780         {
11781           /* We have a name.  Let's check if it's valid and convert it
11782              to a number.  */
11783           get_syscall_by_name (cur_name, &s);
11784
11785           if (s.number == UNKNOWN_SYSCALL)
11786             /* Here we have to issue an error instead of a warning,
11787                because GDB cannot do anything useful if there's no
11788                syscall number to be caught.  */
11789             error (_("Unknown syscall name '%s'."), cur_name);
11790         }
11791
11792       /* Ok, it's valid.  */
11793       VEC_safe_push (int, result, s.number);
11794     }
11795
11796   discard_cleanups (cleanup);
11797   return result;
11798 }
11799
11800 /* Implement the "catch syscall" command.  */
11801
11802 static void
11803 catch_syscall_command_1 (char *arg, int from_tty, 
11804                          struct cmd_list_element *command)
11805 {
11806   int tempflag;
11807   VEC(int) *filter;
11808   struct syscall s;
11809   struct gdbarch *gdbarch = get_current_arch ();
11810
11811   /* Checking if the feature if supported.  */
11812   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11813     error (_("The feature 'catch syscall' is not supported on \
11814 this architecture yet."));
11815
11816   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11817
11818   arg = skip_spaces (arg);
11819
11820   /* We need to do this first "dummy" translation in order
11821      to get the syscall XML file loaded or, most important,
11822      to display a warning to the user if there's no XML file
11823      for his/her architecture.  */
11824   get_syscall_by_number (0, &s);
11825
11826   /* The allowed syntax is:
11827      catch syscall
11828      catch syscall <name | number> [<name | number> ... <name | number>]
11829
11830      Let's check if there's a syscall name.  */
11831
11832   if (arg != NULL)
11833     filter = catch_syscall_split_args (arg);
11834   else
11835     filter = NULL;
11836
11837   create_syscall_event_catchpoint (tempflag, filter,
11838                                    &catch_syscall_breakpoint_ops);
11839 }
11840
11841 static void
11842 catch_command (char *arg, int from_tty)
11843 {
11844   error (_("Catch requires an event name."));
11845 }
11846 \f
11847
11848 static void
11849 tcatch_command (char *arg, int from_tty)
11850 {
11851   error (_("Catch requires an event name."));
11852 }
11853
11854 /* A qsort comparison function that sorts breakpoints in order.  */
11855
11856 static int
11857 compare_breakpoints (const void *a, const void *b)
11858 {
11859   const breakpoint_p *ba = a;
11860   uintptr_t ua = (uintptr_t) *ba;
11861   const breakpoint_p *bb = b;
11862   uintptr_t ub = (uintptr_t) *bb;
11863
11864   if ((*ba)->number < (*bb)->number)
11865     return -1;
11866   else if ((*ba)->number > (*bb)->number)
11867     return 1;
11868
11869   /* Now sort by address, in case we see, e..g, two breakpoints with
11870      the number 0.  */
11871   if (ua < ub)
11872     return -1;
11873   return ua > ub ? 1 : 0;
11874 }
11875
11876 /* Delete breakpoints by address or line.  */
11877
11878 static void
11879 clear_command (char *arg, int from_tty)
11880 {
11881   struct breakpoint *b, *prev;
11882   VEC(breakpoint_p) *found = 0;
11883   int ix;
11884   int default_match;
11885   struct symtabs_and_lines sals;
11886   struct symtab_and_line sal;
11887   int i;
11888   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11889
11890   if (arg)
11891     {
11892       sals = decode_line_with_current_source (arg,
11893                                               (DECODE_LINE_FUNFIRSTLINE
11894                                                | DECODE_LINE_LIST_MODE));
11895       make_cleanup (xfree, sals.sals);
11896       default_match = 0;
11897     }
11898   else
11899     {
11900       sals.sals = (struct symtab_and_line *)
11901         xmalloc (sizeof (struct symtab_and_line));
11902       make_cleanup (xfree, sals.sals);
11903       init_sal (&sal);          /* Initialize to zeroes.  */
11904
11905       /* Set sal's line, symtab, pc, and pspace to the values
11906          corresponding to the last call to print_frame_info.  If the
11907          codepoint is not valid, this will set all the fields to 0.  */
11908       get_last_displayed_sal (&sal);
11909       if (sal.symtab == 0)
11910         error (_("No source file specified."));
11911
11912       sals.sals[0] = sal;
11913       sals.nelts = 1;
11914
11915       default_match = 1;
11916     }
11917
11918   /* We don't call resolve_sal_pc here.  That's not as bad as it
11919      seems, because all existing breakpoints typically have both
11920      file/line and pc set.  So, if clear is given file/line, we can
11921      match this to existing breakpoint without obtaining pc at all.
11922
11923      We only support clearing given the address explicitly 
11924      present in breakpoint table.  Say, we've set breakpoint 
11925      at file:line.  There were several PC values for that file:line,
11926      due to optimization, all in one block.
11927
11928      We've picked one PC value.  If "clear" is issued with another
11929      PC corresponding to the same file:line, the breakpoint won't
11930      be cleared.  We probably can still clear the breakpoint, but 
11931      since the other PC value is never presented to user, user
11932      can only find it by guessing, and it does not seem important
11933      to support that.  */
11934
11935   /* For each line spec given, delete bps which correspond to it.  Do
11936      it in two passes, solely to preserve the current behavior that
11937      from_tty is forced true if we delete more than one
11938      breakpoint.  */
11939
11940   found = NULL;
11941   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11942   for (i = 0; i < sals.nelts; i++)
11943     {
11944       /* If exact pc given, clear bpts at that pc.
11945          If line given (pc == 0), clear all bpts on specified line.
11946          If defaulting, clear all bpts on default line
11947          or at default pc.
11948
11949          defaulting    sal.pc != 0    tests to do
11950
11951          0              1             pc
11952          1              1             pc _and_ line
11953          0              0             line
11954          1              0             <can't happen> */
11955
11956       sal = sals.sals[i];
11957
11958       /* Find all matching breakpoints and add them to 'found'.  */
11959       ALL_BREAKPOINTS (b)
11960         {
11961           int match = 0;
11962           /* Are we going to delete b?  */
11963           if (b->type != bp_none && !is_watchpoint (b))
11964             {
11965               struct bp_location *loc = b->loc;
11966               for (; loc; loc = loc->next)
11967                 {
11968                   /* If the user specified file:line, don't allow a PC
11969                      match.  This matches historical gdb behavior.  */
11970                   int pc_match = (!sal.explicit_line
11971                                   && sal.pc
11972                                   && (loc->pspace == sal.pspace)
11973                                   && (loc->address == sal.pc)
11974                                   && (!section_is_overlay (loc->section)
11975                                       || loc->section == sal.section));
11976                   int line_match = 0;
11977
11978                   if ((default_match || sal.explicit_line)
11979                       && loc->symtab != NULL
11980                       && sal.symtab != NULL
11981                       && sal.pspace == loc->pspace
11982                       && loc->line_number == sal.line)
11983                     {
11984                       if (compare_filenames_for_search (loc->symtab->filename,
11985                                                         sal.symtab->filename))
11986                         line_match = 1;
11987                     }
11988
11989                   if (pc_match || line_match)
11990                     {
11991                       match = 1;
11992                       break;
11993                     }
11994                 }
11995             }
11996
11997           if (match)
11998             VEC_safe_push(breakpoint_p, found, b);
11999         }
12000     }
12001
12002   /* Now go thru the 'found' chain and delete them.  */
12003   if (VEC_empty(breakpoint_p, found))
12004     {
12005       if (arg)
12006         error (_("No breakpoint at %s."), arg);
12007       else
12008         error (_("No breakpoint at this line."));
12009     }
12010
12011   /* Remove duplicates from the vec.  */
12012   qsort (VEC_address (breakpoint_p, found),
12013          VEC_length (breakpoint_p, found),
12014          sizeof (breakpoint_p),
12015          compare_breakpoints);
12016   prev = VEC_index (breakpoint_p, found, 0);
12017   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12018     {
12019       if (b == prev)
12020         {
12021           VEC_ordered_remove (breakpoint_p, found, ix);
12022           --ix;
12023         }
12024     }
12025
12026   if (VEC_length(breakpoint_p, found) > 1)
12027     from_tty = 1;       /* Always report if deleted more than one.  */
12028   if (from_tty)
12029     {
12030       if (VEC_length(breakpoint_p, found) == 1)
12031         printf_unfiltered (_("Deleted breakpoint "));
12032       else
12033         printf_unfiltered (_("Deleted breakpoints "));
12034     }
12035
12036   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12037     {
12038       if (from_tty)
12039         printf_unfiltered ("%d ", b->number);
12040       delete_breakpoint (b);
12041     }
12042   if (from_tty)
12043     putchar_unfiltered ('\n');
12044
12045   do_cleanups (cleanups);
12046 }
12047 \f
12048 /* Delete breakpoint in BS if they are `delete' breakpoints and
12049    all breakpoints that are marked for deletion, whether hit or not.
12050    This is called after any breakpoint is hit, or after errors.  */
12051
12052 void
12053 breakpoint_auto_delete (bpstat bs)
12054 {
12055   struct breakpoint *b, *b_tmp;
12056
12057   for (; bs; bs = bs->next)
12058     if (bs->breakpoint_at
12059         && bs->breakpoint_at->disposition == disp_del
12060         && bs->stop)
12061       delete_breakpoint (bs->breakpoint_at);
12062
12063   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12064   {
12065     if (b->disposition == disp_del_at_next_stop)
12066       delete_breakpoint (b);
12067   }
12068 }
12069
12070 /* A comparison function for bp_location AP and BP being interfaced to
12071    qsort.  Sort elements primarily by their ADDRESS (no matter what
12072    does breakpoint_address_is_meaningful say for its OWNER),
12073    secondarily by ordering first bp_permanent OWNERed elements and
12074    terciarily just ensuring the array is sorted stable way despite
12075    qsort being an unstable algorithm.  */
12076
12077 static int
12078 bp_location_compare (const void *ap, const void *bp)
12079 {
12080   struct bp_location *a = *(void **) ap;
12081   struct bp_location *b = *(void **) bp;
12082   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12083   int a_perm = a->owner->enable_state == bp_permanent;
12084   int b_perm = b->owner->enable_state == bp_permanent;
12085
12086   if (a->address != b->address)
12087     return (a->address > b->address) - (a->address < b->address);
12088
12089   /* Sort locations at the same address by their pspace number, keeping
12090      locations of the same inferior (in a multi-inferior environment)
12091      grouped.  */
12092
12093   if (a->pspace->num != b->pspace->num)
12094     return ((a->pspace->num > b->pspace->num)
12095             - (a->pspace->num < b->pspace->num));
12096
12097   /* Sort permanent breakpoints first.  */
12098   if (a_perm != b_perm)
12099     return (a_perm < b_perm) - (a_perm > b_perm);
12100
12101   /* Make the internal GDB representation stable across GDB runs
12102      where A and B memory inside GDB can differ.  Breakpoint locations of
12103      the same type at the same address can be sorted in arbitrary order.  */
12104
12105   if (a->owner->number != b->owner->number)
12106     return ((a->owner->number > b->owner->number)
12107             - (a->owner->number < b->owner->number));
12108
12109   return (a > b) - (a < b);
12110 }
12111
12112 /* Set bp_location_placed_address_before_address_max and
12113    bp_location_shadow_len_after_address_max according to the current
12114    content of the bp_location array.  */
12115
12116 static void
12117 bp_location_target_extensions_update (void)
12118 {
12119   struct bp_location *bl, **blp_tmp;
12120
12121   bp_location_placed_address_before_address_max = 0;
12122   bp_location_shadow_len_after_address_max = 0;
12123
12124   ALL_BP_LOCATIONS (bl, blp_tmp)
12125     {
12126       CORE_ADDR start, end, addr;
12127
12128       if (!bp_location_has_shadow (bl))
12129         continue;
12130
12131       start = bl->target_info.placed_address;
12132       end = start + bl->target_info.shadow_len;
12133
12134       gdb_assert (bl->address >= start);
12135       addr = bl->address - start;
12136       if (addr > bp_location_placed_address_before_address_max)
12137         bp_location_placed_address_before_address_max = addr;
12138
12139       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12140
12141       gdb_assert (bl->address < end);
12142       addr = end - bl->address;
12143       if (addr > bp_location_shadow_len_after_address_max)
12144         bp_location_shadow_len_after_address_max = addr;
12145     }
12146 }
12147
12148 /* Download tracepoint locations if they haven't been.  */
12149
12150 static void
12151 download_tracepoint_locations (void)
12152 {
12153   struct breakpoint *b;
12154   struct cleanup *old_chain;
12155
12156   if (!target_can_download_tracepoint ())
12157     return;
12158
12159   old_chain = save_current_space_and_thread ();
12160
12161   ALL_TRACEPOINTS (b)
12162     {
12163       struct bp_location *bl;
12164       struct tracepoint *t;
12165       int bp_location_downloaded = 0;
12166
12167       if ((b->type == bp_fast_tracepoint
12168            ? !may_insert_fast_tracepoints
12169            : !may_insert_tracepoints))
12170         continue;
12171
12172       for (bl = b->loc; bl; bl = bl->next)
12173         {
12174           /* In tracepoint, locations are _never_ duplicated, so
12175              should_be_inserted is equivalent to
12176              unduplicated_should_be_inserted.  */
12177           if (!should_be_inserted (bl) || bl->inserted)
12178             continue;
12179
12180           switch_to_program_space_and_thread (bl->pspace);
12181
12182           target_download_tracepoint (bl);
12183
12184           bl->inserted = 1;
12185           bp_location_downloaded = 1;
12186         }
12187       t = (struct tracepoint *) b;
12188       t->number_on_target = b->number;
12189       if (bp_location_downloaded)
12190         observer_notify_breakpoint_modified (b);
12191     }
12192
12193   do_cleanups (old_chain);
12194 }
12195
12196 /* Swap the insertion/duplication state between two locations.  */
12197
12198 static void
12199 swap_insertion (struct bp_location *left, struct bp_location *right)
12200 {
12201   const int left_inserted = left->inserted;
12202   const int left_duplicate = left->duplicate;
12203   const int left_needs_update = left->needs_update;
12204   const struct bp_target_info left_target_info = left->target_info;
12205
12206   /* Locations of tracepoints can never be duplicated.  */
12207   if (is_tracepoint (left->owner))
12208     gdb_assert (!left->duplicate);
12209   if (is_tracepoint (right->owner))
12210     gdb_assert (!right->duplicate);
12211
12212   left->inserted = right->inserted;
12213   left->duplicate = right->duplicate;
12214   left->needs_update = right->needs_update;
12215   left->target_info = right->target_info;
12216   right->inserted = left_inserted;
12217   right->duplicate = left_duplicate;
12218   right->needs_update = left_needs_update;
12219   right->target_info = left_target_info;
12220 }
12221
12222 /* Force the re-insertion of the locations at ADDRESS.  This is called
12223    once a new/deleted/modified duplicate location is found and we are evaluating
12224    conditions on the target's side.  Such conditions need to be updated on
12225    the target.  */
12226
12227 static void
12228 force_breakpoint_reinsertion (struct bp_location *bl)
12229 {
12230   struct bp_location **locp = NULL, **loc2p;
12231   struct bp_location *loc;
12232   CORE_ADDR address = 0;
12233   int pspace_num;
12234
12235   address = bl->address;
12236   pspace_num = bl->pspace->num;
12237
12238   /* This is only meaningful if the target is
12239      evaluating conditions and if the user has
12240      opted for condition evaluation on the target's
12241      side.  */
12242   if (gdb_evaluates_breakpoint_condition_p ()
12243       || !target_supports_evaluation_of_breakpoint_conditions ())
12244     return;
12245
12246   /* Flag all breakpoint locations with this address and
12247      the same program space as the location
12248      as "its condition has changed".  We need to
12249      update the conditions on the target's side.  */
12250   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12251     {
12252       loc = *loc2p;
12253
12254       if (!is_breakpoint (loc->owner)
12255           || pspace_num != loc->pspace->num)
12256         continue;
12257
12258       /* Flag the location appropriately.  We use a different state to
12259          let everyone know that we already updated the set of locations
12260          with addr bl->address and program space bl->pspace.  This is so
12261          we don't have to keep calling these functions just to mark locations
12262          that have already been marked.  */
12263       loc->condition_changed = condition_updated;
12264
12265       /* Free the agent expression bytecode as well.  We will compute
12266          it later on.  */
12267       if (loc->cond_bytecode)
12268         {
12269           free_agent_expr (loc->cond_bytecode);
12270           loc->cond_bytecode = NULL;
12271         }
12272     }
12273 }
12274
12275 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12276    into the inferior, only remove already-inserted locations that no
12277    longer should be inserted.  Functions that delete a breakpoint or
12278    breakpoints should pass false, so that deleting a breakpoint
12279    doesn't have the side effect of inserting the locations of other
12280    breakpoints that are marked not-inserted, but should_be_inserted
12281    returns true on them.
12282
12283    This behaviour is useful is situations close to tear-down -- e.g.,
12284    after an exec, while the target still has execution, but breakpoint
12285    shadows of the previous executable image should *NOT* be restored
12286    to the new image; or before detaching, where the target still has
12287    execution and wants to delete breakpoints from GDB's lists, and all
12288    breakpoints had already been removed from the inferior.  */
12289
12290 static void
12291 update_global_location_list (int should_insert)
12292 {
12293   struct breakpoint *b;
12294   struct bp_location **locp, *loc;
12295   struct cleanup *cleanups;
12296   /* Last breakpoint location address that was marked for update.  */
12297   CORE_ADDR last_addr = 0;
12298   /* Last breakpoint location program space that was marked for update.  */
12299   int last_pspace_num = -1;
12300
12301   /* Used in the duplicates detection below.  When iterating over all
12302      bp_locations, points to the first bp_location of a given address.
12303      Breakpoints and watchpoints of different types are never
12304      duplicates of each other.  Keep one pointer for each type of
12305      breakpoint/watchpoint, so we only need to loop over all locations
12306      once.  */
12307   struct bp_location *bp_loc_first;  /* breakpoint */
12308   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12309   struct bp_location *awp_loc_first; /* access watchpoint */
12310   struct bp_location *rwp_loc_first; /* read watchpoint */
12311
12312   /* Saved former bp_location array which we compare against the newly
12313      built bp_location from the current state of ALL_BREAKPOINTS.  */
12314   struct bp_location **old_location, **old_locp;
12315   unsigned old_location_count;
12316
12317   old_location = bp_location;
12318   old_location_count = bp_location_count;
12319   bp_location = NULL;
12320   bp_location_count = 0;
12321   cleanups = make_cleanup (xfree, old_location);
12322
12323   ALL_BREAKPOINTS (b)
12324     for (loc = b->loc; loc; loc = loc->next)
12325       bp_location_count++;
12326
12327   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12328   locp = bp_location;
12329   ALL_BREAKPOINTS (b)
12330     for (loc = b->loc; loc; loc = loc->next)
12331       *locp++ = loc;
12332   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12333          bp_location_compare);
12334
12335   bp_location_target_extensions_update ();
12336
12337   /* Identify bp_location instances that are no longer present in the
12338      new list, and therefore should be freed.  Note that it's not
12339      necessary that those locations should be removed from inferior --
12340      if there's another location at the same address (previously
12341      marked as duplicate), we don't need to remove/insert the
12342      location.
12343      
12344      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12345      and former bp_location array state respectively.  */
12346
12347   locp = bp_location;
12348   for (old_locp = old_location; old_locp < old_location + old_location_count;
12349        old_locp++)
12350     {
12351       struct bp_location *old_loc = *old_locp;
12352       struct bp_location **loc2p;
12353
12354       /* Tells if 'old_loc' is found among the new locations.  If
12355          not, we have to free it.  */
12356       int found_object = 0;
12357       /* Tells if the location should remain inserted in the target.  */
12358       int keep_in_target = 0;
12359       int removed = 0;
12360
12361       /* Skip LOCP entries which will definitely never be needed.
12362          Stop either at or being the one matching OLD_LOC.  */
12363       while (locp < bp_location + bp_location_count
12364              && (*locp)->address < old_loc->address)
12365         locp++;
12366
12367       for (loc2p = locp;
12368            (loc2p < bp_location + bp_location_count
12369             && (*loc2p)->address == old_loc->address);
12370            loc2p++)
12371         {
12372           /* Check if this is a new/duplicated location or a duplicated
12373              location that had its condition modified.  If so, we want to send
12374              its condition to the target if evaluation of conditions is taking
12375              place there.  */
12376           if ((*loc2p)->condition_changed == condition_modified
12377               && (last_addr != old_loc->address
12378                   || last_pspace_num != old_loc->pspace->num))
12379             {
12380               force_breakpoint_reinsertion (*loc2p);
12381               last_pspace_num = old_loc->pspace->num;
12382             }
12383
12384           if (*loc2p == old_loc)
12385             found_object = 1;
12386         }
12387
12388       /* We have already handled this address, update it so that we don't
12389          have to go through updates again.  */
12390       last_addr = old_loc->address;
12391
12392       /* Target-side condition evaluation: Handle deleted locations.  */
12393       if (!found_object)
12394         force_breakpoint_reinsertion (old_loc);
12395
12396       /* If this location is no longer present, and inserted, look if
12397          there's maybe a new location at the same address.  If so,
12398          mark that one inserted, and don't remove this one.  This is
12399          needed so that we don't have a time window where a breakpoint
12400          at certain location is not inserted.  */
12401
12402       if (old_loc->inserted)
12403         {
12404           /* If the location is inserted now, we might have to remove
12405              it.  */
12406
12407           if (found_object && should_be_inserted (old_loc))
12408             {
12409               /* The location is still present in the location list,
12410                  and still should be inserted.  Don't do anything.  */
12411               keep_in_target = 1;
12412             }
12413           else
12414             {
12415               /* This location still exists, but it won't be kept in the
12416                  target since it may have been disabled.  We proceed to
12417                  remove its target-side condition.  */
12418
12419               /* The location is either no longer present, or got
12420                  disabled.  See if there's another location at the
12421                  same address, in which case we don't need to remove
12422                  this one from the target.  */
12423
12424               /* OLD_LOC comes from existing struct breakpoint.  */
12425               if (breakpoint_address_is_meaningful (old_loc->owner))
12426                 {
12427                   for (loc2p = locp;
12428                        (loc2p < bp_location + bp_location_count
12429                         && (*loc2p)->address == old_loc->address);
12430                        loc2p++)
12431                     {
12432                       struct bp_location *loc2 = *loc2p;
12433
12434                       if (breakpoint_locations_match (loc2, old_loc))
12435                         {
12436                           /* Read watchpoint locations are switched to
12437                              access watchpoints, if the former are not
12438                              supported, but the latter are.  */
12439                           if (is_hardware_watchpoint (old_loc->owner))
12440                             {
12441                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12442                               loc2->watchpoint_type = old_loc->watchpoint_type;
12443                             }
12444
12445                           /* loc2 is a duplicated location. We need to check
12446                              if it should be inserted in case it will be
12447                              unduplicated.  */
12448                           if (loc2 != old_loc
12449                               && unduplicated_should_be_inserted (loc2))
12450                             {
12451                               swap_insertion (old_loc, loc2);
12452                               keep_in_target = 1;
12453                               break;
12454                             }
12455                         }
12456                     }
12457                 }
12458             }
12459
12460           if (!keep_in_target)
12461             {
12462               if (remove_breakpoint (old_loc, mark_uninserted))
12463                 {
12464                   /* This is just about all we can do.  We could keep
12465                      this location on the global list, and try to
12466                      remove it next time, but there's no particular
12467                      reason why we will succeed next time.
12468                      
12469                      Note that at this point, old_loc->owner is still
12470                      valid, as delete_breakpoint frees the breakpoint
12471                      only after calling us.  */
12472                   printf_filtered (_("warning: Error removing "
12473                                      "breakpoint %d\n"), 
12474                                    old_loc->owner->number);
12475                 }
12476               removed = 1;
12477             }
12478         }
12479
12480       if (!found_object)
12481         {
12482           if (removed && non_stop
12483               && breakpoint_address_is_meaningful (old_loc->owner)
12484               && !is_hardware_watchpoint (old_loc->owner))
12485             {
12486               /* This location was removed from the target.  In
12487                  non-stop mode, a race condition is possible where
12488                  we've removed a breakpoint, but stop events for that
12489                  breakpoint are already queued and will arrive later.
12490                  We apply an heuristic to be able to distinguish such
12491                  SIGTRAPs from other random SIGTRAPs: we keep this
12492                  breakpoint location for a bit, and will retire it
12493                  after we see some number of events.  The theory here
12494                  is that reporting of events should, "on the average",
12495                  be fair, so after a while we'll see events from all
12496                  threads that have anything of interest, and no longer
12497                  need to keep this breakpoint location around.  We
12498                  don't hold locations forever so to reduce chances of
12499                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12500                  SIGTRAP.
12501
12502                  The heuristic failing can be disastrous on
12503                  decr_pc_after_break targets.
12504
12505                  On decr_pc_after_break targets, like e.g., x86-linux,
12506                  if we fail to recognize a late breakpoint SIGTRAP,
12507                  because events_till_retirement has reached 0 too
12508                  soon, we'll fail to do the PC adjustment, and report
12509                  a random SIGTRAP to the user.  When the user resumes
12510                  the inferior, it will most likely immediately crash
12511                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12512                  corrupted, because of being resumed e.g., in the
12513                  middle of a multi-byte instruction, or skipped a
12514                  one-byte instruction.  This was actually seen happen
12515                  on native x86-linux, and should be less rare on
12516                  targets that do not support new thread events, like
12517                  remote, due to the heuristic depending on
12518                  thread_count.
12519
12520                  Mistaking a random SIGTRAP for a breakpoint trap
12521                  causes similar symptoms (PC adjustment applied when
12522                  it shouldn't), but then again, playing with SIGTRAPs
12523                  behind the debugger's back is asking for trouble.
12524
12525                  Since hardware watchpoint traps are always
12526                  distinguishable from other traps, so we don't need to
12527                  apply keep hardware watchpoint moribund locations
12528                  around.  We simply always ignore hardware watchpoint
12529                  traps we can no longer explain.  */
12530
12531               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12532               old_loc->owner = NULL;
12533
12534               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12535             }
12536           else
12537             {
12538               old_loc->owner = NULL;
12539               decref_bp_location (&old_loc);
12540             }
12541         }
12542     }
12543
12544   /* Rescan breakpoints at the same address and section, marking the
12545      first one as "first" and any others as "duplicates".  This is so
12546      that the bpt instruction is only inserted once.  If we have a
12547      permanent breakpoint at the same place as BPT, make that one the
12548      official one, and the rest as duplicates.  Permanent breakpoints
12549      are sorted first for the same address.
12550
12551      Do the same for hardware watchpoints, but also considering the
12552      watchpoint's type (regular/access/read) and length.  */
12553
12554   bp_loc_first = NULL;
12555   wp_loc_first = NULL;
12556   awp_loc_first = NULL;
12557   rwp_loc_first = NULL;
12558   ALL_BP_LOCATIONS (loc, locp)
12559     {
12560       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12561          non-NULL.  */
12562       struct bp_location **loc_first_p;
12563       b = loc->owner;
12564
12565       if (!unduplicated_should_be_inserted (loc)
12566           || !breakpoint_address_is_meaningful (b)
12567           /* Don't detect duplicate for tracepoint locations because they are
12568            never duplicated.  See the comments in field `duplicate' of
12569            `struct bp_location'.  */
12570           || is_tracepoint (b))
12571         {
12572           /* Clear the condition modification flag.  */
12573           loc->condition_changed = condition_unchanged;
12574           continue;
12575         }
12576
12577       /* Permanent breakpoint should always be inserted.  */
12578       if (b->enable_state == bp_permanent && ! loc->inserted)
12579         internal_error (__FILE__, __LINE__,
12580                         _("allegedly permanent breakpoint is not "
12581                         "actually inserted"));
12582
12583       if (b->type == bp_hardware_watchpoint)
12584         loc_first_p = &wp_loc_first;
12585       else if (b->type == bp_read_watchpoint)
12586         loc_first_p = &rwp_loc_first;
12587       else if (b->type == bp_access_watchpoint)
12588         loc_first_p = &awp_loc_first;
12589       else
12590         loc_first_p = &bp_loc_first;
12591
12592       if (*loc_first_p == NULL
12593           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12594           || !breakpoint_locations_match (loc, *loc_first_p))
12595         {
12596           *loc_first_p = loc;
12597           loc->duplicate = 0;
12598
12599           if (is_breakpoint (loc->owner) && loc->condition_changed)
12600             {
12601               loc->needs_update = 1;
12602               /* Clear the condition modification flag.  */
12603               loc->condition_changed = condition_unchanged;
12604             }
12605           continue;
12606         }
12607
12608
12609       /* This and the above ensure the invariant that the first location
12610          is not duplicated, and is the inserted one.
12611          All following are marked as duplicated, and are not inserted.  */
12612       if (loc->inserted)
12613         swap_insertion (loc, *loc_first_p);
12614       loc->duplicate = 1;
12615
12616       /* Clear the condition modification flag.  */
12617       loc->condition_changed = condition_unchanged;
12618
12619       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12620           && b->enable_state != bp_permanent)
12621         internal_error (__FILE__, __LINE__,
12622                         _("another breakpoint was inserted on top of "
12623                         "a permanent breakpoint"));
12624     }
12625
12626   if (breakpoints_always_inserted_mode ()
12627       && (have_live_inferiors ()
12628           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12629     {
12630       if (should_insert)
12631         insert_breakpoint_locations ();
12632       else
12633         {
12634           /* Though should_insert is false, we may need to update conditions
12635              on the target's side if it is evaluating such conditions.  We
12636              only update conditions for locations that are marked
12637              "needs_update".  */
12638           update_inserted_breakpoint_locations ();
12639         }
12640     }
12641
12642   if (should_insert)
12643     download_tracepoint_locations ();
12644
12645   do_cleanups (cleanups);
12646 }
12647
12648 void
12649 breakpoint_retire_moribund (void)
12650 {
12651   struct bp_location *loc;
12652   int ix;
12653
12654   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12655     if (--(loc->events_till_retirement) == 0)
12656       {
12657         decref_bp_location (&loc);
12658         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12659         --ix;
12660       }
12661 }
12662
12663 static void
12664 update_global_location_list_nothrow (int inserting)
12665 {
12666   volatile struct gdb_exception e;
12667
12668   TRY_CATCH (e, RETURN_MASK_ERROR)
12669     update_global_location_list (inserting);
12670 }
12671
12672 /* Clear BKP from a BPS.  */
12673
12674 static void
12675 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12676 {
12677   bpstat bs;
12678
12679   for (bs = bps; bs; bs = bs->next)
12680     if (bs->breakpoint_at == bpt)
12681       {
12682         bs->breakpoint_at = NULL;
12683         bs->old_val = NULL;
12684         /* bs->commands will be freed later.  */
12685       }
12686 }
12687
12688 /* Callback for iterate_over_threads.  */
12689 static int
12690 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12691 {
12692   struct breakpoint *bpt = data;
12693
12694   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12695   return 0;
12696 }
12697
12698 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12699    callbacks.  */
12700
12701 static void
12702 say_where (struct breakpoint *b)
12703 {
12704   struct ui_out *uiout = current_uiout;
12705   struct value_print_options opts;
12706
12707   get_user_print_options (&opts);
12708
12709   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12710      single string.  */
12711   if (b->loc == NULL)
12712     {
12713       printf_filtered (_(" (%s) pending."), b->addr_string);
12714     }
12715   else
12716     {
12717       if (opts.addressprint || b->loc->symtab == NULL)
12718         {
12719           printf_filtered (" at ");
12720           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12721                           gdb_stdout);
12722         }
12723       if (b->loc->symtab != NULL)
12724         {
12725           /* If there is a single location, we can print the location
12726              more nicely.  */
12727           if (b->loc->next == NULL)
12728             printf_filtered (": file %s, line %d.",
12729                              b->loc->symtab->filename, b->loc->line_number);
12730           else
12731             /* This is not ideal, but each location may have a
12732                different file name, and this at least reflects the
12733                real situation somewhat.  */
12734             printf_filtered (": %s.", b->addr_string);
12735         }
12736
12737       if (b->loc->next)
12738         {
12739           struct bp_location *loc = b->loc;
12740           int n = 0;
12741           for (; loc; loc = loc->next)
12742             ++n;
12743           printf_filtered (" (%d locations)", n);
12744         }
12745     }
12746 }
12747
12748 /* Default bp_location_ops methods.  */
12749
12750 static void
12751 bp_location_dtor (struct bp_location *self)
12752 {
12753   xfree (self->cond);
12754   if (self->cond_bytecode)
12755     free_agent_expr (self->cond_bytecode);
12756   xfree (self->function_name);
12757 }
12758
12759 static const struct bp_location_ops bp_location_ops =
12760 {
12761   bp_location_dtor
12762 };
12763
12764 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12765    inherit from.  */
12766
12767 static void
12768 base_breakpoint_dtor (struct breakpoint *self)
12769 {
12770   decref_counted_command_line (&self->commands);
12771   xfree (self->cond_string);
12772   xfree (self->addr_string);
12773   xfree (self->filter);
12774   xfree (self->addr_string_range_end);
12775 }
12776
12777 static struct bp_location *
12778 base_breakpoint_allocate_location (struct breakpoint *self)
12779 {
12780   struct bp_location *loc;
12781
12782   loc = XNEW (struct bp_location);
12783   init_bp_location (loc, &bp_location_ops, self);
12784   return loc;
12785 }
12786
12787 static void
12788 base_breakpoint_re_set (struct breakpoint *b)
12789 {
12790   /* Nothing to re-set. */
12791 }
12792
12793 #define internal_error_pure_virtual_called() \
12794   gdb_assert_not_reached ("pure virtual function called")
12795
12796 static int
12797 base_breakpoint_insert_location (struct bp_location *bl)
12798 {
12799   internal_error_pure_virtual_called ();
12800 }
12801
12802 static int
12803 base_breakpoint_remove_location (struct bp_location *bl)
12804 {
12805   internal_error_pure_virtual_called ();
12806 }
12807
12808 static int
12809 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12810                                 struct address_space *aspace,
12811                                 CORE_ADDR bp_addr,
12812                                 const struct target_waitstatus *ws)
12813 {
12814   internal_error_pure_virtual_called ();
12815 }
12816
12817 static void
12818 base_breakpoint_check_status (bpstat bs)
12819 {
12820   /* Always stop.   */
12821 }
12822
12823 /* A "works_in_software_mode" breakpoint_ops method that just internal
12824    errors.  */
12825
12826 static int
12827 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12828 {
12829   internal_error_pure_virtual_called ();
12830 }
12831
12832 /* A "resources_needed" breakpoint_ops method that just internal
12833    errors.  */
12834
12835 static int
12836 base_breakpoint_resources_needed (const struct bp_location *bl)
12837 {
12838   internal_error_pure_virtual_called ();
12839 }
12840
12841 static enum print_stop_action
12842 base_breakpoint_print_it (bpstat bs)
12843 {
12844   internal_error_pure_virtual_called ();
12845 }
12846
12847 static void
12848 base_breakpoint_print_one_detail (const struct breakpoint *self,
12849                                   struct ui_out *uiout)
12850 {
12851   /* nothing */
12852 }
12853
12854 static void
12855 base_breakpoint_print_mention (struct breakpoint *b)
12856 {
12857   internal_error_pure_virtual_called ();
12858 }
12859
12860 static void
12861 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12862 {
12863   internal_error_pure_virtual_called ();
12864 }
12865
12866 static void
12867 base_breakpoint_create_sals_from_address (char **arg,
12868                                           struct linespec_result *canonical,
12869                                           enum bptype type_wanted,
12870                                           char *addr_start,
12871                                           char **copy_arg)
12872 {
12873   internal_error_pure_virtual_called ();
12874 }
12875
12876 static void
12877 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12878                                         struct linespec_result *c,
12879                                         struct linespec_sals *lsal,
12880                                         char *cond_string,
12881                                         char *extra_string,
12882                                         enum bptype type_wanted,
12883                                         enum bpdisp disposition,
12884                                         int thread,
12885                                         int task, int ignore_count,
12886                                         const struct breakpoint_ops *o,
12887                                         int from_tty, int enabled,
12888                                         int internal, unsigned flags)
12889 {
12890   internal_error_pure_virtual_called ();
12891 }
12892
12893 static void
12894 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12895                                  struct symtabs_and_lines *sals)
12896 {
12897   internal_error_pure_virtual_called ();
12898 }
12899
12900 /* The default 'explains_signal' method.  */
12901
12902 static enum bpstat_signal_value
12903 base_breakpoint_explains_signal (struct breakpoint *b)
12904 {
12905   return BPSTAT_SIGNAL_HIDE;
12906 }
12907
12908 struct breakpoint_ops base_breakpoint_ops =
12909 {
12910   base_breakpoint_dtor,
12911   base_breakpoint_allocate_location,
12912   base_breakpoint_re_set,
12913   base_breakpoint_insert_location,
12914   base_breakpoint_remove_location,
12915   base_breakpoint_breakpoint_hit,
12916   base_breakpoint_check_status,
12917   base_breakpoint_resources_needed,
12918   base_breakpoint_works_in_software_mode,
12919   base_breakpoint_print_it,
12920   NULL,
12921   base_breakpoint_print_one_detail,
12922   base_breakpoint_print_mention,
12923   base_breakpoint_print_recreate,
12924   base_breakpoint_create_sals_from_address,
12925   base_breakpoint_create_breakpoints_sal,
12926   base_breakpoint_decode_linespec,
12927   base_breakpoint_explains_signal
12928 };
12929
12930 /* Default breakpoint_ops methods.  */
12931
12932 static void
12933 bkpt_re_set (struct breakpoint *b)
12934 {
12935   /* FIXME: is this still reachable?  */
12936   if (b->addr_string == NULL)
12937     {
12938       /* Anything without a string can't be re-set.  */
12939       delete_breakpoint (b);
12940       return;
12941     }
12942
12943   breakpoint_re_set_default (b);
12944 }
12945
12946 static int
12947 bkpt_insert_location (struct bp_location *bl)
12948 {
12949   if (bl->loc_type == bp_loc_hardware_breakpoint)
12950     return target_insert_hw_breakpoint (bl->gdbarch,
12951                                         &bl->target_info);
12952   else
12953     return target_insert_breakpoint (bl->gdbarch,
12954                                      &bl->target_info);
12955 }
12956
12957 static int
12958 bkpt_remove_location (struct bp_location *bl)
12959 {
12960   if (bl->loc_type == bp_loc_hardware_breakpoint)
12961     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12962   else
12963     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12964 }
12965
12966 static int
12967 bkpt_breakpoint_hit (const struct bp_location *bl,
12968                      struct address_space *aspace, CORE_ADDR bp_addr,
12969                      const struct target_waitstatus *ws)
12970 {
12971   struct breakpoint *b = bl->owner;
12972
12973   if (ws->kind != TARGET_WAITKIND_STOPPED
12974       || ws->value.sig != GDB_SIGNAL_TRAP)
12975     return 0;
12976
12977   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12978                                  aspace, bp_addr))
12979     return 0;
12980
12981   if (overlay_debugging         /* unmapped overlay section */
12982       && section_is_overlay (bl->section)
12983       && !section_is_mapped (bl->section))
12984     return 0;
12985
12986   return 1;
12987 }
12988
12989 static int
12990 bkpt_resources_needed (const struct bp_location *bl)
12991 {
12992   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12993
12994   return 1;
12995 }
12996
12997 static enum print_stop_action
12998 bkpt_print_it (bpstat bs)
12999 {
13000   struct breakpoint *b;
13001   const struct bp_location *bl;
13002   int bp_temp;
13003   struct ui_out *uiout = current_uiout;
13004
13005   gdb_assert (bs->bp_location_at != NULL);
13006
13007   bl = bs->bp_location_at;
13008   b = bs->breakpoint_at;
13009
13010   bp_temp = b->disposition == disp_del;
13011   if (bl->address != bl->requested_address)
13012     breakpoint_adjustment_warning (bl->requested_address,
13013                                    bl->address,
13014                                    b->number, 1);
13015   annotate_breakpoint (b->number);
13016   if (bp_temp)
13017     ui_out_text (uiout, "\nTemporary breakpoint ");
13018   else
13019     ui_out_text (uiout, "\nBreakpoint ");
13020   if (ui_out_is_mi_like_p (uiout))
13021     {
13022       ui_out_field_string (uiout, "reason",
13023                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13024       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13025     }
13026   ui_out_field_int (uiout, "bkptno", b->number);
13027   ui_out_text (uiout, ", ");
13028
13029   return PRINT_SRC_AND_LOC;
13030 }
13031
13032 static void
13033 bkpt_print_mention (struct breakpoint *b)
13034 {
13035   if (ui_out_is_mi_like_p (current_uiout))
13036     return;
13037
13038   switch (b->type)
13039     {
13040     case bp_breakpoint:
13041     case bp_gnu_ifunc_resolver:
13042       if (b->disposition == disp_del)
13043         printf_filtered (_("Temporary breakpoint"));
13044       else
13045         printf_filtered (_("Breakpoint"));
13046       printf_filtered (_(" %d"), b->number);
13047       if (b->type == bp_gnu_ifunc_resolver)
13048         printf_filtered (_(" at gnu-indirect-function resolver"));
13049       break;
13050     case bp_hardware_breakpoint:
13051       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13052       break;
13053     case bp_dprintf:
13054       printf_filtered (_("Dprintf %d"), b->number);
13055       break;
13056     }
13057
13058   say_where (b);
13059 }
13060
13061 static void
13062 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13063 {
13064   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13065     fprintf_unfiltered (fp, "tbreak");
13066   else if (tp->type == bp_breakpoint)
13067     fprintf_unfiltered (fp, "break");
13068   else if (tp->type == bp_hardware_breakpoint
13069            && tp->disposition == disp_del)
13070     fprintf_unfiltered (fp, "thbreak");
13071   else if (tp->type == bp_hardware_breakpoint)
13072     fprintf_unfiltered (fp, "hbreak");
13073   else
13074     internal_error (__FILE__, __LINE__,
13075                     _("unhandled breakpoint type %d"), (int) tp->type);
13076
13077   fprintf_unfiltered (fp, " %s", tp->addr_string);
13078   print_recreate_thread (tp, fp);
13079 }
13080
13081 static void
13082 bkpt_create_sals_from_address (char **arg,
13083                                struct linespec_result *canonical,
13084                                enum bptype type_wanted,
13085                                char *addr_start, char **copy_arg)
13086 {
13087   create_sals_from_address_default (arg, canonical, type_wanted,
13088                                     addr_start, copy_arg);
13089 }
13090
13091 static void
13092 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13093                              struct linespec_result *canonical,
13094                              struct linespec_sals *lsal,
13095                              char *cond_string,
13096                              char *extra_string,
13097                              enum bptype type_wanted,
13098                              enum bpdisp disposition,
13099                              int thread,
13100                              int task, int ignore_count,
13101                              const struct breakpoint_ops *ops,
13102                              int from_tty, int enabled,
13103                              int internal, unsigned flags)
13104 {
13105   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13106                                   cond_string, extra_string,
13107                                   type_wanted,
13108                                   disposition, thread, task,
13109                                   ignore_count, ops, from_tty,
13110                                   enabled, internal, flags);
13111 }
13112
13113 static void
13114 bkpt_decode_linespec (struct breakpoint *b, char **s,
13115                       struct symtabs_and_lines *sals)
13116 {
13117   decode_linespec_default (b, s, sals);
13118 }
13119
13120 /* Virtual table for internal breakpoints.  */
13121
13122 static void
13123 internal_bkpt_re_set (struct breakpoint *b)
13124 {
13125   switch (b->type)
13126     {
13127       /* Delete overlay event and longjmp master breakpoints; they
13128          will be reset later by breakpoint_re_set.  */
13129     case bp_overlay_event:
13130     case bp_longjmp_master:
13131     case bp_std_terminate_master:
13132     case bp_exception_master:
13133       delete_breakpoint (b);
13134       break;
13135
13136       /* This breakpoint is special, it's set up when the inferior
13137          starts and we really don't want to touch it.  */
13138     case bp_shlib_event:
13139
13140       /* Like bp_shlib_event, this breakpoint type is special.  Once
13141          it is set up, we do not want to touch it.  */
13142     case bp_thread_event:
13143       break;
13144     }
13145 }
13146
13147 static void
13148 internal_bkpt_check_status (bpstat bs)
13149 {
13150   if (bs->breakpoint_at->type == bp_shlib_event)
13151     {
13152       /* If requested, stop when the dynamic linker notifies GDB of
13153          events.  This allows the user to get control and place
13154          breakpoints in initializer routines for dynamically loaded
13155          objects (among other things).  */
13156       bs->stop = stop_on_solib_events;
13157       bs->print = stop_on_solib_events;
13158     }
13159   else
13160     bs->stop = 0;
13161 }
13162
13163 static enum print_stop_action
13164 internal_bkpt_print_it (bpstat bs)
13165 {
13166   struct ui_out *uiout = current_uiout;
13167   struct breakpoint *b;
13168
13169   b = bs->breakpoint_at;
13170
13171   switch (b->type)
13172     {
13173     case bp_shlib_event:
13174       /* Did we stop because the user set the stop_on_solib_events
13175          variable?  (If so, we report this as a generic, "Stopped due
13176          to shlib event" message.) */
13177       print_solib_event (0);
13178       break;
13179
13180     case bp_thread_event:
13181       /* Not sure how we will get here.
13182          GDB should not stop for these breakpoints.  */
13183       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13184       break;
13185
13186     case bp_overlay_event:
13187       /* By analogy with the thread event, GDB should not stop for these.  */
13188       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13189       break;
13190
13191     case bp_longjmp_master:
13192       /* These should never be enabled.  */
13193       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13194       break;
13195
13196     case bp_std_terminate_master:
13197       /* These should never be enabled.  */
13198       printf_filtered (_("std::terminate Master Breakpoint: "
13199                          "gdb should not stop!\n"));
13200       break;
13201
13202     case bp_exception_master:
13203       /* These should never be enabled.  */
13204       printf_filtered (_("Exception Master Breakpoint: "
13205                          "gdb should not stop!\n"));
13206       break;
13207     }
13208
13209   return PRINT_NOTHING;
13210 }
13211
13212 static void
13213 internal_bkpt_print_mention (struct breakpoint *b)
13214 {
13215   /* Nothing to mention.  These breakpoints are internal.  */
13216 }
13217
13218 /* Virtual table for momentary breakpoints  */
13219
13220 static void
13221 momentary_bkpt_re_set (struct breakpoint *b)
13222 {
13223   /* Keep temporary breakpoints, which can be encountered when we step
13224      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13225      Otherwise these should have been blown away via the cleanup chain
13226      or by breakpoint_init_inferior when we rerun the executable.  */
13227 }
13228
13229 static void
13230 momentary_bkpt_check_status (bpstat bs)
13231 {
13232   /* Nothing.  The point of these breakpoints is causing a stop.  */
13233 }
13234
13235 static enum print_stop_action
13236 momentary_bkpt_print_it (bpstat bs)
13237 {
13238   struct ui_out *uiout = current_uiout;
13239
13240   if (ui_out_is_mi_like_p (uiout))
13241     {
13242       struct breakpoint *b = bs->breakpoint_at;
13243
13244       switch (b->type)
13245         {
13246         case bp_finish:
13247           ui_out_field_string
13248             (uiout, "reason",
13249              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13250           break;
13251
13252         case bp_until:
13253           ui_out_field_string
13254             (uiout, "reason",
13255              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13256           break;
13257         }
13258     }
13259
13260   return PRINT_UNKNOWN;
13261 }
13262
13263 static void
13264 momentary_bkpt_print_mention (struct breakpoint *b)
13265 {
13266   /* Nothing to mention.  These breakpoints are internal.  */
13267 }
13268
13269 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13270
13271    It gets cleared already on the removal of the first one of such placed
13272    breakpoints.  This is OK as they get all removed altogether.  */
13273
13274 static void
13275 longjmp_bkpt_dtor (struct breakpoint *self)
13276 {
13277   struct thread_info *tp = find_thread_id (self->thread);
13278
13279   if (tp)
13280     tp->initiating_frame = null_frame_id;
13281
13282   momentary_breakpoint_ops.dtor (self);
13283 }
13284
13285 /* Specific methods for probe breakpoints.  */
13286
13287 static int
13288 bkpt_probe_insert_location (struct bp_location *bl)
13289 {
13290   int v = bkpt_insert_location (bl);
13291
13292   if (v == 0)
13293     {
13294       /* The insertion was successful, now let's set the probe's semaphore
13295          if needed.  */
13296       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13297     }
13298
13299   return v;
13300 }
13301
13302 static int
13303 bkpt_probe_remove_location (struct bp_location *bl)
13304 {
13305   /* Let's clear the semaphore before removing the location.  */
13306   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13307
13308   return bkpt_remove_location (bl);
13309 }
13310
13311 static void
13312 bkpt_probe_create_sals_from_address (char **arg,
13313                                      struct linespec_result *canonical,
13314                                      enum bptype type_wanted,
13315                                      char *addr_start, char **copy_arg)
13316 {
13317   struct linespec_sals lsal;
13318
13319   lsal.sals = parse_probes (arg, canonical);
13320
13321   *copy_arg = xstrdup (canonical->addr_string);
13322   lsal.canonical = xstrdup (*copy_arg);
13323
13324   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13325 }
13326
13327 static void
13328 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13329                             struct symtabs_and_lines *sals)
13330 {
13331   *sals = parse_probes (s, NULL);
13332   if (!sals->sals)
13333     error (_("probe not found"));
13334 }
13335
13336 /* The breakpoint_ops structure to be used in tracepoints.  */
13337
13338 static void
13339 tracepoint_re_set (struct breakpoint *b)
13340 {
13341   breakpoint_re_set_default (b);
13342 }
13343
13344 static int
13345 tracepoint_breakpoint_hit (const struct bp_location *bl,
13346                            struct address_space *aspace, CORE_ADDR bp_addr,
13347                            const struct target_waitstatus *ws)
13348 {
13349   /* By definition, the inferior does not report stops at
13350      tracepoints.  */
13351   return 0;
13352 }
13353
13354 static void
13355 tracepoint_print_one_detail (const struct breakpoint *self,
13356                              struct ui_out *uiout)
13357 {
13358   struct tracepoint *tp = (struct tracepoint *) self;
13359   if (tp->static_trace_marker_id)
13360     {
13361       gdb_assert (self->type == bp_static_tracepoint);
13362
13363       ui_out_text (uiout, "\tmarker id is ");
13364       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13365                            tp->static_trace_marker_id);
13366       ui_out_text (uiout, "\n");
13367     }
13368 }
13369
13370 static void
13371 tracepoint_print_mention (struct breakpoint *b)
13372 {
13373   if (ui_out_is_mi_like_p (current_uiout))
13374     return;
13375
13376   switch (b->type)
13377     {
13378     case bp_tracepoint:
13379       printf_filtered (_("Tracepoint"));
13380       printf_filtered (_(" %d"), b->number);
13381       break;
13382     case bp_fast_tracepoint:
13383       printf_filtered (_("Fast tracepoint"));
13384       printf_filtered (_(" %d"), b->number);
13385       break;
13386     case bp_static_tracepoint:
13387       printf_filtered (_("Static tracepoint"));
13388       printf_filtered (_(" %d"), b->number);
13389       break;
13390     default:
13391       internal_error (__FILE__, __LINE__,
13392                       _("unhandled tracepoint type %d"), (int) b->type);
13393     }
13394
13395   say_where (b);
13396 }
13397
13398 static void
13399 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13400 {
13401   struct tracepoint *tp = (struct tracepoint *) self;
13402
13403   if (self->type == bp_fast_tracepoint)
13404     fprintf_unfiltered (fp, "ftrace");
13405   if (self->type == bp_static_tracepoint)
13406     fprintf_unfiltered (fp, "strace");
13407   else if (self->type == bp_tracepoint)
13408     fprintf_unfiltered (fp, "trace");
13409   else
13410     internal_error (__FILE__, __LINE__,
13411                     _("unhandled tracepoint type %d"), (int) self->type);
13412
13413   fprintf_unfiltered (fp, " %s", self->addr_string);
13414   print_recreate_thread (self, fp);
13415
13416   if (tp->pass_count)
13417     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13418 }
13419
13420 static void
13421 tracepoint_create_sals_from_address (char **arg,
13422                                      struct linespec_result *canonical,
13423                                      enum bptype type_wanted,
13424                                      char *addr_start, char **copy_arg)
13425 {
13426   create_sals_from_address_default (arg, canonical, type_wanted,
13427                                     addr_start, copy_arg);
13428 }
13429
13430 static void
13431 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13432                                    struct linespec_result *canonical,
13433                                    struct linespec_sals *lsal,
13434                                    char *cond_string,
13435                                    char *extra_string,
13436                                    enum bptype type_wanted,
13437                                    enum bpdisp disposition,
13438                                    int thread,
13439                                    int task, int ignore_count,
13440                                    const struct breakpoint_ops *ops,
13441                                    int from_tty, int enabled,
13442                                    int internal, unsigned flags)
13443 {
13444   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13445                                   cond_string, extra_string,
13446                                   type_wanted,
13447                                   disposition, thread, task,
13448                                   ignore_count, ops, from_tty,
13449                                   enabled, internal, flags);
13450 }
13451
13452 static void
13453 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13454                             struct symtabs_and_lines *sals)
13455 {
13456   decode_linespec_default (b, s, sals);
13457 }
13458
13459 struct breakpoint_ops tracepoint_breakpoint_ops;
13460
13461 /* The breakpoint_ops structure to be use on tracepoints placed in a
13462    static probe.  */
13463
13464 static void
13465 tracepoint_probe_create_sals_from_address (char **arg,
13466                                            struct linespec_result *canonical,
13467                                            enum bptype type_wanted,
13468                                            char *addr_start, char **copy_arg)
13469 {
13470   /* We use the same method for breakpoint on probes.  */
13471   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13472                                        addr_start, copy_arg);
13473 }
13474
13475 static void
13476 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13477                                   struct symtabs_and_lines *sals)
13478 {
13479   /* We use the same method for breakpoint on probes.  */
13480   bkpt_probe_decode_linespec (b, s, sals);
13481 }
13482
13483 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13484
13485 /* The breakpoint_ops structure to be used on static tracepoints with
13486    markers (`-m').  */
13487
13488 static void
13489 strace_marker_create_sals_from_address (char **arg,
13490                                         struct linespec_result *canonical,
13491                                         enum bptype type_wanted,
13492                                         char *addr_start, char **copy_arg)
13493 {
13494   struct linespec_sals lsal;
13495
13496   lsal.sals = decode_static_tracepoint_spec (arg);
13497
13498   *copy_arg = savestring (addr_start, *arg - addr_start);
13499
13500   canonical->addr_string = xstrdup (*copy_arg);
13501   lsal.canonical = xstrdup (*copy_arg);
13502   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13503 }
13504
13505 static void
13506 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13507                                       struct linespec_result *canonical,
13508                                       struct linespec_sals *lsal,
13509                                       char *cond_string,
13510                                       char *extra_string,
13511                                       enum bptype type_wanted,
13512                                       enum bpdisp disposition,
13513                                       int thread,
13514                                       int task, int ignore_count,
13515                                       const struct breakpoint_ops *ops,
13516                                       int from_tty, int enabled,
13517                                       int internal, unsigned flags)
13518 {
13519   int i;
13520
13521   /* If the user is creating a static tracepoint by marker id
13522      (strace -m MARKER_ID), then store the sals index, so that
13523      breakpoint_re_set can try to match up which of the newly
13524      found markers corresponds to this one, and, don't try to
13525      expand multiple locations for each sal, given than SALS
13526      already should contain all sals for MARKER_ID.  */
13527
13528   for (i = 0; i < lsal->sals.nelts; ++i)
13529     {
13530       struct symtabs_and_lines expanded;
13531       struct tracepoint *tp;
13532       struct cleanup *old_chain;
13533       char *addr_string;
13534
13535       expanded.nelts = 1;
13536       expanded.sals = &lsal->sals.sals[i];
13537
13538       addr_string = xstrdup (canonical->addr_string);
13539       old_chain = make_cleanup (xfree, addr_string);
13540
13541       tp = XCNEW (struct tracepoint);
13542       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13543                            addr_string, NULL,
13544                            cond_string, extra_string,
13545                            type_wanted, disposition,
13546                            thread, task, ignore_count, ops,
13547                            from_tty, enabled, internal, flags,
13548                            canonical->special_display);
13549       /* Given that its possible to have multiple markers with
13550          the same string id, if the user is creating a static
13551          tracepoint by marker id ("strace -m MARKER_ID"), then
13552          store the sals index, so that breakpoint_re_set can
13553          try to match up which of the newly found markers
13554          corresponds to this one  */
13555       tp->static_trace_marker_id_idx = i;
13556
13557       install_breakpoint (internal, &tp->base, 0);
13558
13559       discard_cleanups (old_chain);
13560     }
13561 }
13562
13563 static void
13564 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13565                                struct symtabs_and_lines *sals)
13566 {
13567   struct tracepoint *tp = (struct tracepoint *) b;
13568
13569   *sals = decode_static_tracepoint_spec (s);
13570   if (sals->nelts > tp->static_trace_marker_id_idx)
13571     {
13572       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13573       sals->nelts = 1;
13574     }
13575   else
13576     error (_("marker %s not found"), tp->static_trace_marker_id);
13577 }
13578
13579 static struct breakpoint_ops strace_marker_breakpoint_ops;
13580
13581 static int
13582 strace_marker_p (struct breakpoint *b)
13583 {
13584   return b->ops == &strace_marker_breakpoint_ops;
13585 }
13586
13587 /* Delete a breakpoint and clean up all traces of it in the data
13588    structures.  */
13589
13590 void
13591 delete_breakpoint (struct breakpoint *bpt)
13592 {
13593   struct breakpoint *b;
13594
13595   gdb_assert (bpt != NULL);
13596
13597   /* Has this bp already been deleted?  This can happen because
13598      multiple lists can hold pointers to bp's.  bpstat lists are
13599      especial culprits.
13600
13601      One example of this happening is a watchpoint's scope bp.  When
13602      the scope bp triggers, we notice that the watchpoint is out of
13603      scope, and delete it.  We also delete its scope bp.  But the
13604      scope bp is marked "auto-deleting", and is already on a bpstat.
13605      That bpstat is then checked for auto-deleting bp's, which are
13606      deleted.
13607
13608      A real solution to this problem might involve reference counts in
13609      bp's, and/or giving them pointers back to their referencing
13610      bpstat's, and teaching delete_breakpoint to only free a bp's
13611      storage when no more references were extent.  A cheaper bandaid
13612      was chosen.  */
13613   if (bpt->type == bp_none)
13614     return;
13615
13616   /* At least avoid this stale reference until the reference counting
13617      of breakpoints gets resolved.  */
13618   if (bpt->related_breakpoint != bpt)
13619     {
13620       struct breakpoint *related;
13621       struct watchpoint *w;
13622
13623       if (bpt->type == bp_watchpoint_scope)
13624         w = (struct watchpoint *) bpt->related_breakpoint;
13625       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13626         w = (struct watchpoint *) bpt;
13627       else
13628         w = NULL;
13629       if (w != NULL)
13630         watchpoint_del_at_next_stop (w);
13631
13632       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13633       for (related = bpt; related->related_breakpoint != bpt;
13634            related = related->related_breakpoint);
13635       related->related_breakpoint = bpt->related_breakpoint;
13636       bpt->related_breakpoint = bpt;
13637     }
13638
13639   /* watch_command_1 creates a watchpoint but only sets its number if
13640      update_watchpoint succeeds in creating its bp_locations.  If there's
13641      a problem in that process, we'll be asked to delete the half-created
13642      watchpoint.  In that case, don't announce the deletion.  */
13643   if (bpt->number)
13644     observer_notify_breakpoint_deleted (bpt);
13645
13646   if (breakpoint_chain == bpt)
13647     breakpoint_chain = bpt->next;
13648
13649   ALL_BREAKPOINTS (b)
13650     if (b->next == bpt)
13651     {
13652       b->next = bpt->next;
13653       break;
13654     }
13655
13656   /* Be sure no bpstat's are pointing at the breakpoint after it's
13657      been freed.  */
13658   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13659      in all threads for now.  Note that we cannot just remove bpstats
13660      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13661      commands are associated with the bpstat; if we remove it here,
13662      then the later call to bpstat_do_actions (&stop_bpstat); in
13663      event-top.c won't do anything, and temporary breakpoints with
13664      commands won't work.  */
13665
13666   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13667
13668   /* Now that breakpoint is removed from breakpoint list, update the
13669      global location list.  This will remove locations that used to
13670      belong to this breakpoint.  Do this before freeing the breakpoint
13671      itself, since remove_breakpoint looks at location's owner.  It
13672      might be better design to have location completely
13673      self-contained, but it's not the case now.  */
13674   update_global_location_list (0);
13675
13676   bpt->ops->dtor (bpt);
13677   /* On the chance that someone will soon try again to delete this
13678      same bp, we mark it as deleted before freeing its storage.  */
13679   bpt->type = bp_none;
13680   xfree (bpt);
13681 }
13682
13683 static void
13684 do_delete_breakpoint_cleanup (void *b)
13685 {
13686   delete_breakpoint (b);
13687 }
13688
13689 struct cleanup *
13690 make_cleanup_delete_breakpoint (struct breakpoint *b)
13691 {
13692   return make_cleanup (do_delete_breakpoint_cleanup, b);
13693 }
13694
13695 /* Iterator function to call a user-provided callback function once
13696    for each of B and its related breakpoints.  */
13697
13698 static void
13699 iterate_over_related_breakpoints (struct breakpoint *b,
13700                                   void (*function) (struct breakpoint *,
13701                                                     void *),
13702                                   void *data)
13703 {
13704   struct breakpoint *related;
13705
13706   related = b;
13707   do
13708     {
13709       struct breakpoint *next;
13710
13711       /* FUNCTION may delete RELATED.  */
13712       next = related->related_breakpoint;
13713
13714       if (next == related)
13715         {
13716           /* RELATED is the last ring entry.  */
13717           function (related, data);
13718
13719           /* FUNCTION may have deleted it, so we'd never reach back to
13720              B.  There's nothing left to do anyway, so just break
13721              out.  */
13722           break;
13723         }
13724       else
13725         function (related, data);
13726
13727       related = next;
13728     }
13729   while (related != b);
13730 }
13731
13732 static void
13733 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13734 {
13735   delete_breakpoint (b);
13736 }
13737
13738 /* A callback for map_breakpoint_numbers that calls
13739    delete_breakpoint.  */
13740
13741 static void
13742 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13743 {
13744   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13745 }
13746
13747 void
13748 delete_command (char *arg, int from_tty)
13749 {
13750   struct breakpoint *b, *b_tmp;
13751
13752   dont_repeat ();
13753
13754   if (arg == 0)
13755     {
13756       int breaks_to_delete = 0;
13757
13758       /* Delete all breakpoints if no argument.  Do not delete
13759          internal breakpoints, these have to be deleted with an
13760          explicit breakpoint number argument.  */
13761       ALL_BREAKPOINTS (b)
13762         if (user_breakpoint_p (b))
13763           {
13764             breaks_to_delete = 1;
13765             break;
13766           }
13767
13768       /* Ask user only if there are some breakpoints to delete.  */
13769       if (!from_tty
13770           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13771         {
13772           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13773             if (user_breakpoint_p (b))
13774               delete_breakpoint (b);
13775         }
13776     }
13777   else
13778     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13779 }
13780
13781 static int
13782 all_locations_are_pending (struct bp_location *loc)
13783 {
13784   for (; loc; loc = loc->next)
13785     if (!loc->shlib_disabled
13786         && !loc->pspace->executing_startup)
13787       return 0;
13788   return 1;
13789 }
13790
13791 /* Subroutine of update_breakpoint_locations to simplify it.
13792    Return non-zero if multiple fns in list LOC have the same name.
13793    Null names are ignored.  */
13794
13795 static int
13796 ambiguous_names_p (struct bp_location *loc)
13797 {
13798   struct bp_location *l;
13799   htab_t htab = htab_create_alloc (13, htab_hash_string,
13800                                    (int (*) (const void *, 
13801                                              const void *)) streq,
13802                                    NULL, xcalloc, xfree);
13803
13804   for (l = loc; l != NULL; l = l->next)
13805     {
13806       const char **slot;
13807       const char *name = l->function_name;
13808
13809       /* Allow for some names to be NULL, ignore them.  */
13810       if (name == NULL)
13811         continue;
13812
13813       slot = (const char **) htab_find_slot (htab, (const void *) name,
13814                                              INSERT);
13815       /* NOTE: We can assume slot != NULL here because xcalloc never
13816          returns NULL.  */
13817       if (*slot != NULL)
13818         {
13819           htab_delete (htab);
13820           return 1;
13821         }
13822       *slot = name;
13823     }
13824
13825   htab_delete (htab);
13826   return 0;
13827 }
13828
13829 /* When symbols change, it probably means the sources changed as well,
13830    and it might mean the static tracepoint markers are no longer at
13831    the same address or line numbers they used to be at last we
13832    checked.  Losing your static tracepoints whenever you rebuild is
13833    undesirable.  This function tries to resync/rematch gdb static
13834    tracepoints with the markers on the target, for static tracepoints
13835    that have not been set by marker id.  Static tracepoint that have
13836    been set by marker id are reset by marker id in breakpoint_re_set.
13837    The heuristic is:
13838
13839    1) For a tracepoint set at a specific address, look for a marker at
13840    the old PC.  If one is found there, assume to be the same marker.
13841    If the name / string id of the marker found is different from the
13842    previous known name, assume that means the user renamed the marker
13843    in the sources, and output a warning.
13844
13845    2) For a tracepoint set at a given line number, look for a marker
13846    at the new address of the old line number.  If one is found there,
13847    assume to be the same marker.  If the name / string id of the
13848    marker found is different from the previous known name, assume that
13849    means the user renamed the marker in the sources, and output a
13850    warning.
13851
13852    3) If a marker is no longer found at the same address or line, it
13853    may mean the marker no longer exists.  But it may also just mean
13854    the code changed a bit.  Maybe the user added a few lines of code
13855    that made the marker move up or down (in line number terms).  Ask
13856    the target for info about the marker with the string id as we knew
13857    it.  If found, update line number and address in the matching
13858    static tracepoint.  This will get confused if there's more than one
13859    marker with the same ID (possible in UST, although unadvised
13860    precisely because it confuses tools).  */
13861
13862 static struct symtab_and_line
13863 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13864 {
13865   struct tracepoint *tp = (struct tracepoint *) b;
13866   struct static_tracepoint_marker marker;
13867   CORE_ADDR pc;
13868
13869   pc = sal.pc;
13870   if (sal.line)
13871     find_line_pc (sal.symtab, sal.line, &pc);
13872
13873   if (target_static_tracepoint_marker_at (pc, &marker))
13874     {
13875       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13876         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13877                  b->number,
13878                  tp->static_trace_marker_id, marker.str_id);
13879
13880       xfree (tp->static_trace_marker_id);
13881       tp->static_trace_marker_id = xstrdup (marker.str_id);
13882       release_static_tracepoint_marker (&marker);
13883
13884       return sal;
13885     }
13886
13887   /* Old marker wasn't found on target at lineno.  Try looking it up
13888      by string ID.  */
13889   if (!sal.explicit_pc
13890       && sal.line != 0
13891       && sal.symtab != NULL
13892       && tp->static_trace_marker_id != NULL)
13893     {
13894       VEC(static_tracepoint_marker_p) *markers;
13895
13896       markers
13897         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13898
13899       if (!VEC_empty(static_tracepoint_marker_p, markers))
13900         {
13901           struct symtab_and_line sal2;
13902           struct symbol *sym;
13903           struct static_tracepoint_marker *tpmarker;
13904           struct ui_out *uiout = current_uiout;
13905
13906           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13907
13908           xfree (tp->static_trace_marker_id);
13909           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13910
13911           warning (_("marker for static tracepoint %d (%s) not "
13912                      "found at previous line number"),
13913                    b->number, tp->static_trace_marker_id);
13914
13915           init_sal (&sal2);
13916
13917           sal2.pc = tpmarker->address;
13918
13919           sal2 = find_pc_line (tpmarker->address, 0);
13920           sym = find_pc_sect_function (tpmarker->address, NULL);
13921           ui_out_text (uiout, "Now in ");
13922           if (sym)
13923             {
13924               ui_out_field_string (uiout, "func",
13925                                    SYMBOL_PRINT_NAME (sym));
13926               ui_out_text (uiout, " at ");
13927             }
13928           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13929           ui_out_text (uiout, ":");
13930
13931           if (ui_out_is_mi_like_p (uiout))
13932             {
13933               const char *fullname = symtab_to_fullname (sal2.symtab);
13934
13935               ui_out_field_string (uiout, "fullname", fullname);
13936             }
13937
13938           ui_out_field_int (uiout, "line", sal2.line);
13939           ui_out_text (uiout, "\n");
13940
13941           b->loc->line_number = sal2.line;
13942           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13943
13944           xfree (b->addr_string);
13945           b->addr_string = xstrprintf ("%s:%d",
13946                                        sal2.symtab->filename,
13947                                        b->loc->line_number);
13948
13949           /* Might be nice to check if function changed, and warn if
13950              so.  */
13951
13952           release_static_tracepoint_marker (tpmarker);
13953         }
13954     }
13955   return sal;
13956 }
13957
13958 /* Returns 1 iff locations A and B are sufficiently same that
13959    we don't need to report breakpoint as changed.  */
13960
13961 static int
13962 locations_are_equal (struct bp_location *a, struct bp_location *b)
13963 {
13964   while (a && b)
13965     {
13966       if (a->address != b->address)
13967         return 0;
13968
13969       if (a->shlib_disabled != b->shlib_disabled)
13970         return 0;
13971
13972       if (a->enabled != b->enabled)
13973         return 0;
13974
13975       a = a->next;
13976       b = b->next;
13977     }
13978
13979   if ((a == NULL) != (b == NULL))
13980     return 0;
13981
13982   return 1;
13983 }
13984
13985 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13986    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13987    a ranged breakpoint.  */
13988
13989 void
13990 update_breakpoint_locations (struct breakpoint *b,
13991                              struct symtabs_and_lines sals,
13992                              struct symtabs_and_lines sals_end)
13993 {
13994   int i;
13995   struct bp_location *existing_locations = b->loc;
13996
13997   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13998     {
13999       /* Ranged breakpoints have only one start location and one end
14000          location.  */
14001       b->enable_state = bp_disabled;
14002       update_global_location_list (1);
14003       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14004                            "multiple locations found\n"),
14005                          b->number);
14006       return;
14007     }
14008
14009   /* If there's no new locations, and all existing locations are
14010      pending, don't do anything.  This optimizes the common case where
14011      all locations are in the same shared library, that was unloaded.
14012      We'd like to retain the location, so that when the library is
14013      loaded again, we don't loose the enabled/disabled status of the
14014      individual locations.  */
14015   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14016     return;
14017
14018   b->loc = NULL;
14019
14020   for (i = 0; i < sals.nelts; ++i)
14021     {
14022       struct bp_location *new_loc;
14023
14024       switch_to_program_space_and_thread (sals.sals[i].pspace);
14025
14026       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14027
14028       /* Reparse conditions, they might contain references to the
14029          old symtab.  */
14030       if (b->cond_string != NULL)
14031         {
14032           char *s;
14033           volatile struct gdb_exception e;
14034
14035           s = b->cond_string;
14036           TRY_CATCH (e, RETURN_MASK_ERROR)
14037             {
14038               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14039                                            block_for_pc (sals.sals[i].pc), 
14040                                            0);
14041             }
14042           if (e.reason < 0)
14043             {
14044               warning (_("failed to reevaluate condition "
14045                          "for breakpoint %d: %s"), 
14046                        b->number, e.message);
14047               new_loc->enabled = 0;
14048             }
14049         }
14050
14051       if (sals_end.nelts)
14052         {
14053           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14054
14055           new_loc->length = end - sals.sals[0].pc + 1;
14056         }
14057     }
14058
14059   /* Update locations of permanent breakpoints.  */
14060   if (b->enable_state == bp_permanent)
14061     make_breakpoint_permanent (b);
14062
14063   /* If possible, carry over 'disable' status from existing
14064      breakpoints.  */
14065   {
14066     struct bp_location *e = existing_locations;
14067     /* If there are multiple breakpoints with the same function name,
14068        e.g. for inline functions, comparing function names won't work.
14069        Instead compare pc addresses; this is just a heuristic as things
14070        may have moved, but in practice it gives the correct answer
14071        often enough until a better solution is found.  */
14072     int have_ambiguous_names = ambiguous_names_p (b->loc);
14073
14074     for (; e; e = e->next)
14075       {
14076         if (!e->enabled && e->function_name)
14077           {
14078             struct bp_location *l = b->loc;
14079             if (have_ambiguous_names)
14080               {
14081                 for (; l; l = l->next)
14082                   if (breakpoint_locations_match (e, l))
14083                     {
14084                       l->enabled = 0;
14085                       break;
14086                     }
14087               }
14088             else
14089               {
14090                 for (; l; l = l->next)
14091                   if (l->function_name
14092                       && strcmp (e->function_name, l->function_name) == 0)
14093                     {
14094                       l->enabled = 0;
14095                       break;
14096                     }
14097               }
14098           }
14099       }
14100   }
14101
14102   if (!locations_are_equal (existing_locations, b->loc))
14103     observer_notify_breakpoint_modified (b);
14104
14105   update_global_location_list (1);
14106 }
14107
14108 /* Find the SaL locations corresponding to the given ADDR_STRING.
14109    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14110
14111 static struct symtabs_and_lines
14112 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14113 {
14114   char *s;
14115   struct symtabs_and_lines sals = {0};
14116   volatile struct gdb_exception e;
14117
14118   gdb_assert (b->ops != NULL);
14119   s = addr_string;
14120
14121   TRY_CATCH (e, RETURN_MASK_ERROR)
14122     {
14123       b->ops->decode_linespec (b, &s, &sals);
14124     }
14125   if (e.reason < 0)
14126     {
14127       int not_found_and_ok = 0;
14128       /* For pending breakpoints, it's expected that parsing will
14129          fail until the right shared library is loaded.  User has
14130          already told to create pending breakpoints and don't need
14131          extra messages.  If breakpoint is in bp_shlib_disabled
14132          state, then user already saw the message about that
14133          breakpoint being disabled, and don't want to see more
14134          errors.  */
14135       if (e.error == NOT_FOUND_ERROR
14136           && (b->condition_not_parsed 
14137               || (b->loc && b->loc->shlib_disabled)
14138               || (b->loc && b->loc->pspace->executing_startup)
14139               || b->enable_state == bp_disabled))
14140         not_found_and_ok = 1;
14141
14142       if (!not_found_and_ok)
14143         {
14144           /* We surely don't want to warn about the same breakpoint
14145              10 times.  One solution, implemented here, is disable
14146              the breakpoint on error.  Another solution would be to
14147              have separate 'warning emitted' flag.  Since this
14148              happens only when a binary has changed, I don't know
14149              which approach is better.  */
14150           b->enable_state = bp_disabled;
14151           throw_exception (e);
14152         }
14153     }
14154
14155   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14156     {
14157       int i;
14158
14159       for (i = 0; i < sals.nelts; ++i)
14160         resolve_sal_pc (&sals.sals[i]);
14161       if (b->condition_not_parsed && s && s[0])
14162         {
14163           char *cond_string, *extra_string;
14164           int thread, task;
14165
14166           find_condition_and_thread (s, sals.sals[0].pc,
14167                                      &cond_string, &thread, &task,
14168                                      &extra_string);
14169           if (cond_string)
14170             b->cond_string = cond_string;
14171           b->thread = thread;
14172           b->task = task;
14173           if (extra_string)
14174             b->extra_string = extra_string;
14175           b->condition_not_parsed = 0;
14176         }
14177
14178       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14179         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14180
14181       *found = 1;
14182     }
14183   else
14184     *found = 0;
14185
14186   return sals;
14187 }
14188
14189 /* The default re_set method, for typical hardware or software
14190    breakpoints.  Reevaluate the breakpoint and recreate its
14191    locations.  */
14192
14193 static void
14194 breakpoint_re_set_default (struct breakpoint *b)
14195 {
14196   int found;
14197   struct symtabs_and_lines sals, sals_end;
14198   struct symtabs_and_lines expanded = {0};
14199   struct symtabs_and_lines expanded_end = {0};
14200
14201   sals = addr_string_to_sals (b, b->addr_string, &found);
14202   if (found)
14203     {
14204       make_cleanup (xfree, sals.sals);
14205       expanded = sals;
14206     }
14207
14208   if (b->addr_string_range_end)
14209     {
14210       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14211       if (found)
14212         {
14213           make_cleanup (xfree, sals_end.sals);
14214           expanded_end = sals_end;
14215         }
14216     }
14217
14218   update_breakpoint_locations (b, expanded, expanded_end);
14219 }
14220
14221 /* Default method for creating SALs from an address string.  It basically
14222    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14223
14224 static void
14225 create_sals_from_address_default (char **arg,
14226                                   struct linespec_result *canonical,
14227                                   enum bptype type_wanted,
14228                                   char *addr_start, char **copy_arg)
14229 {
14230   parse_breakpoint_sals (arg, canonical);
14231 }
14232
14233 /* Call create_breakpoints_sal for the given arguments.  This is the default
14234    function for the `create_breakpoints_sal' method of
14235    breakpoint_ops.  */
14236
14237 static void
14238 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14239                                 struct linespec_result *canonical,
14240                                 struct linespec_sals *lsal,
14241                                 char *cond_string,
14242                                 char *extra_string,
14243                                 enum bptype type_wanted,
14244                                 enum bpdisp disposition,
14245                                 int thread,
14246                                 int task, int ignore_count,
14247                                 const struct breakpoint_ops *ops,
14248                                 int from_tty, int enabled,
14249                                 int internal, unsigned flags)
14250 {
14251   create_breakpoints_sal (gdbarch, canonical, cond_string,
14252                           extra_string,
14253                           type_wanted, disposition,
14254                           thread, task, ignore_count, ops, from_tty,
14255                           enabled, internal, flags);
14256 }
14257
14258 /* Decode the line represented by S by calling decode_line_full.  This is the
14259    default function for the `decode_linespec' method of breakpoint_ops.  */
14260
14261 static void
14262 decode_linespec_default (struct breakpoint *b, char **s,
14263                          struct symtabs_and_lines *sals)
14264 {
14265   struct linespec_result canonical;
14266
14267   init_linespec_result (&canonical);
14268   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14269                     (struct symtab *) NULL, 0,
14270                     &canonical, multiple_symbols_all,
14271                     b->filter);
14272
14273   /* We should get 0 or 1 resulting SALs.  */
14274   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14275
14276   if (VEC_length (linespec_sals, canonical.sals) > 0)
14277     {
14278       struct linespec_sals *lsal;
14279
14280       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14281       *sals = lsal->sals;
14282       /* Arrange it so the destructor does not free the
14283          contents.  */
14284       lsal->sals.sals = NULL;
14285     }
14286
14287   destroy_linespec_result (&canonical);
14288 }
14289
14290 /* Prepare the global context for a re-set of breakpoint B.  */
14291
14292 static struct cleanup *
14293 prepare_re_set_context (struct breakpoint *b)
14294 {
14295   struct cleanup *cleanups;
14296
14297   input_radix = b->input_radix;
14298   cleanups = save_current_space_and_thread ();
14299   if (b->pspace != NULL)
14300     switch_to_program_space_and_thread (b->pspace);
14301   set_language (b->language);
14302
14303   return cleanups;
14304 }
14305
14306 /* Reset a breakpoint given it's struct breakpoint * BINT.
14307    The value we return ends up being the return value from catch_errors.
14308    Unused in this case.  */
14309
14310 static int
14311 breakpoint_re_set_one (void *bint)
14312 {
14313   /* Get past catch_errs.  */
14314   struct breakpoint *b = (struct breakpoint *) bint;
14315   struct cleanup *cleanups;
14316
14317   cleanups = prepare_re_set_context (b);
14318   b->ops->re_set (b);
14319   do_cleanups (cleanups);
14320   return 0;
14321 }
14322
14323 /* Re-set all breakpoints after symbols have been re-loaded.  */
14324 void
14325 breakpoint_re_set (void)
14326 {
14327   struct breakpoint *b, *b_tmp;
14328   enum language save_language;
14329   int save_input_radix;
14330   struct cleanup *old_chain;
14331
14332   save_language = current_language->la_language;
14333   save_input_radix = input_radix;
14334   old_chain = save_current_program_space ();
14335
14336   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14337   {
14338     /* Format possible error msg.  */
14339     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14340                                 b->number);
14341     struct cleanup *cleanups = make_cleanup (xfree, message);
14342     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14343     do_cleanups (cleanups);
14344   }
14345   set_language (save_language);
14346   input_radix = save_input_radix;
14347
14348   jit_breakpoint_re_set ();
14349
14350   do_cleanups (old_chain);
14351
14352   create_overlay_event_breakpoint ();
14353   create_longjmp_master_breakpoint ();
14354   create_std_terminate_master_breakpoint ();
14355   create_exception_master_breakpoint ();
14356 }
14357 \f
14358 /* Reset the thread number of this breakpoint:
14359
14360    - If the breakpoint is for all threads, leave it as-is.
14361    - Else, reset it to the current thread for inferior_ptid.  */
14362 void
14363 breakpoint_re_set_thread (struct breakpoint *b)
14364 {
14365   if (b->thread != -1)
14366     {
14367       if (in_thread_list (inferior_ptid))
14368         b->thread = pid_to_thread_id (inferior_ptid);
14369
14370       /* We're being called after following a fork.  The new fork is
14371          selected as current, and unless this was a vfork will have a
14372          different program space from the original thread.  Reset that
14373          as well.  */
14374       b->loc->pspace = current_program_space;
14375     }
14376 }
14377
14378 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14379    If from_tty is nonzero, it prints a message to that effect,
14380    which ends with a period (no newline).  */
14381
14382 void
14383 set_ignore_count (int bptnum, int count, int from_tty)
14384 {
14385   struct breakpoint *b;
14386
14387   if (count < 0)
14388     count = 0;
14389
14390   ALL_BREAKPOINTS (b)
14391     if (b->number == bptnum)
14392     {
14393       if (is_tracepoint (b))
14394         {
14395           if (from_tty && count != 0)
14396             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14397                              bptnum);
14398           return;
14399         }
14400       
14401       b->ignore_count = count;
14402       if (from_tty)
14403         {
14404           if (count == 0)
14405             printf_filtered (_("Will stop next time "
14406                                "breakpoint %d is reached."),
14407                              bptnum);
14408           else if (count == 1)
14409             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14410                              bptnum);
14411           else
14412             printf_filtered (_("Will ignore next %d "
14413                                "crossings of breakpoint %d."),
14414                              count, bptnum);
14415         }
14416       observer_notify_breakpoint_modified (b);
14417       return;
14418     }
14419
14420   error (_("No breakpoint number %d."), bptnum);
14421 }
14422
14423 /* Command to set ignore-count of breakpoint N to COUNT.  */
14424
14425 static void
14426 ignore_command (char *args, int from_tty)
14427 {
14428   char *p = args;
14429   int num;
14430
14431   if (p == 0)
14432     error_no_arg (_("a breakpoint number"));
14433
14434   num = get_number (&p);
14435   if (num == 0)
14436     error (_("bad breakpoint number: '%s'"), args);
14437   if (*p == 0)
14438     error (_("Second argument (specified ignore-count) is missing."));
14439
14440   set_ignore_count (num,
14441                     longest_to_int (value_as_long (parse_and_eval (p))),
14442                     from_tty);
14443   if (from_tty)
14444     printf_filtered ("\n");
14445 }
14446 \f
14447 /* Call FUNCTION on each of the breakpoints
14448    whose numbers are given in ARGS.  */
14449
14450 static void
14451 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14452                                                       void *),
14453                         void *data)
14454 {
14455   int num;
14456   struct breakpoint *b, *tmp;
14457   int match;
14458   struct get_number_or_range_state state;
14459
14460   if (args == 0)
14461     error_no_arg (_("one or more breakpoint numbers"));
14462
14463   init_number_or_range (&state, args);
14464
14465   while (!state.finished)
14466     {
14467       char *p = state.string;
14468
14469       match = 0;
14470
14471       num = get_number_or_range (&state);
14472       if (num == 0)
14473         {
14474           warning (_("bad breakpoint number at or near '%s'"), p);
14475         }
14476       else
14477         {
14478           ALL_BREAKPOINTS_SAFE (b, tmp)
14479             if (b->number == num)
14480               {
14481                 match = 1;
14482                 function (b, data);
14483                 break;
14484               }
14485           if (match == 0)
14486             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14487         }
14488     }
14489 }
14490
14491 static struct bp_location *
14492 find_location_by_number (char *number)
14493 {
14494   char *dot = strchr (number, '.');
14495   char *p1;
14496   int bp_num;
14497   int loc_num;
14498   struct breakpoint *b;
14499   struct bp_location *loc;  
14500
14501   *dot = '\0';
14502
14503   p1 = number;
14504   bp_num = get_number (&p1);
14505   if (bp_num == 0)
14506     error (_("Bad breakpoint number '%s'"), number);
14507
14508   ALL_BREAKPOINTS (b)
14509     if (b->number == bp_num)
14510       {
14511         break;
14512       }
14513
14514   if (!b || b->number != bp_num)
14515     error (_("Bad breakpoint number '%s'"), number);
14516   
14517   p1 = dot+1;
14518   loc_num = get_number (&p1);
14519   if (loc_num == 0)
14520     error (_("Bad breakpoint location number '%s'"), number);
14521
14522   --loc_num;
14523   loc = b->loc;
14524   for (;loc_num && loc; --loc_num, loc = loc->next)
14525     ;
14526   if (!loc)
14527     error (_("Bad breakpoint location number '%s'"), dot+1);
14528     
14529   return loc;  
14530 }
14531
14532
14533 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14534    If from_tty is nonzero, it prints a message to that effect,
14535    which ends with a period (no newline).  */
14536
14537 void
14538 disable_breakpoint (struct breakpoint *bpt)
14539 {
14540   /* Never disable a watchpoint scope breakpoint; we want to
14541      hit them when we leave scope so we can delete both the
14542      watchpoint and its scope breakpoint at that time.  */
14543   if (bpt->type == bp_watchpoint_scope)
14544     return;
14545
14546   /* You can't disable permanent breakpoints.  */
14547   if (bpt->enable_state == bp_permanent)
14548     return;
14549
14550   bpt->enable_state = bp_disabled;
14551
14552   /* Mark breakpoint locations modified.  */
14553   mark_breakpoint_modified (bpt);
14554
14555   if (target_supports_enable_disable_tracepoint ()
14556       && current_trace_status ()->running && is_tracepoint (bpt))
14557     {
14558       struct bp_location *location;
14559      
14560       for (location = bpt->loc; location; location = location->next)
14561         target_disable_tracepoint (location);
14562     }
14563
14564   update_global_location_list (0);
14565
14566   observer_notify_breakpoint_modified (bpt);
14567 }
14568
14569 /* A callback for iterate_over_related_breakpoints.  */
14570
14571 static void
14572 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14573 {
14574   disable_breakpoint (b);
14575 }
14576
14577 /* A callback for map_breakpoint_numbers that calls
14578    disable_breakpoint.  */
14579
14580 static void
14581 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14582 {
14583   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14584 }
14585
14586 static void
14587 disable_command (char *args, int from_tty)
14588 {
14589   if (args == 0)
14590     {
14591       struct breakpoint *bpt;
14592
14593       ALL_BREAKPOINTS (bpt)
14594         if (user_breakpoint_p (bpt))
14595           disable_breakpoint (bpt);
14596     }
14597   else if (strchr (args, '.'))
14598     {
14599       struct bp_location *loc = find_location_by_number (args);
14600       if (loc)
14601         {
14602           if (loc->enabled)
14603             {
14604               loc->enabled = 0;
14605               mark_breakpoint_location_modified (loc);
14606             }
14607           if (target_supports_enable_disable_tracepoint ()
14608               && current_trace_status ()->running && loc->owner
14609               && is_tracepoint (loc->owner))
14610             target_disable_tracepoint (loc);
14611         }
14612       update_global_location_list (0);
14613     }
14614   else
14615     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14616 }
14617
14618 static void
14619 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14620                         int count)
14621 {
14622   int target_resources_ok;
14623
14624   if (bpt->type == bp_hardware_breakpoint)
14625     {
14626       int i;
14627       i = hw_breakpoint_used_count ();
14628       target_resources_ok = 
14629         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14630                                             i + 1, 0);
14631       if (target_resources_ok == 0)
14632         error (_("No hardware breakpoint support in the target."));
14633       else if (target_resources_ok < 0)
14634         error (_("Hardware breakpoints used exceeds limit."));
14635     }
14636
14637   if (is_watchpoint (bpt))
14638     {
14639       /* Initialize it just to avoid a GCC false warning.  */
14640       enum enable_state orig_enable_state = 0;
14641       volatile struct gdb_exception e;
14642
14643       TRY_CATCH (e, RETURN_MASK_ALL)
14644         {
14645           struct watchpoint *w = (struct watchpoint *) bpt;
14646
14647           orig_enable_state = bpt->enable_state;
14648           bpt->enable_state = bp_enabled;
14649           update_watchpoint (w, 1 /* reparse */);
14650         }
14651       if (e.reason < 0)
14652         {
14653           bpt->enable_state = orig_enable_state;
14654           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14655                              bpt->number);
14656           return;
14657         }
14658     }
14659
14660   if (bpt->enable_state != bp_permanent)
14661     bpt->enable_state = bp_enabled;
14662
14663   bpt->enable_state = bp_enabled;
14664
14665   /* Mark breakpoint locations modified.  */
14666   mark_breakpoint_modified (bpt);
14667
14668   if (target_supports_enable_disable_tracepoint ()
14669       && current_trace_status ()->running && is_tracepoint (bpt))
14670     {
14671       struct bp_location *location;
14672
14673       for (location = bpt->loc; location; location = location->next)
14674         target_enable_tracepoint (location);
14675     }
14676
14677   bpt->disposition = disposition;
14678   bpt->enable_count = count;
14679   update_global_location_list (1);
14680
14681   observer_notify_breakpoint_modified (bpt);
14682 }
14683
14684
14685 void
14686 enable_breakpoint (struct breakpoint *bpt)
14687 {
14688   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14689 }
14690
14691 static void
14692 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14693 {
14694   enable_breakpoint (bpt);
14695 }
14696
14697 /* A callback for map_breakpoint_numbers that calls
14698    enable_breakpoint.  */
14699
14700 static void
14701 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14702 {
14703   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14704 }
14705
14706 /* The enable command enables the specified breakpoints (or all defined
14707    breakpoints) so they once again become (or continue to be) effective
14708    in stopping the inferior.  */
14709
14710 static void
14711 enable_command (char *args, int from_tty)
14712 {
14713   if (args == 0)
14714     {
14715       struct breakpoint *bpt;
14716
14717       ALL_BREAKPOINTS (bpt)
14718         if (user_breakpoint_p (bpt))
14719           enable_breakpoint (bpt);
14720     }
14721   else if (strchr (args, '.'))
14722     {
14723       struct bp_location *loc = find_location_by_number (args);
14724       if (loc)
14725         {
14726           if (!loc->enabled)
14727             {
14728               loc->enabled = 1;
14729               mark_breakpoint_location_modified (loc);
14730             }
14731           if (target_supports_enable_disable_tracepoint ()
14732               && current_trace_status ()->running && loc->owner
14733               && is_tracepoint (loc->owner))
14734             target_enable_tracepoint (loc);
14735         }
14736       update_global_location_list (1);
14737     }
14738   else
14739     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14740 }
14741
14742 /* This struct packages up disposition data for application to multiple
14743    breakpoints.  */
14744
14745 struct disp_data
14746 {
14747   enum bpdisp disp;
14748   int count;
14749 };
14750
14751 static void
14752 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14753 {
14754   struct disp_data disp_data = *(struct disp_data *) arg;
14755
14756   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14757 }
14758
14759 static void
14760 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14761 {
14762   struct disp_data disp = { disp_disable, 1 };
14763
14764   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14765 }
14766
14767 static void
14768 enable_once_command (char *args, int from_tty)
14769 {
14770   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14771 }
14772
14773 static void
14774 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14775 {
14776   struct disp_data disp = { disp_disable, *(int *) countptr };
14777
14778   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14779 }
14780
14781 static void
14782 enable_count_command (char *args, int from_tty)
14783 {
14784   int count = get_number (&args);
14785
14786   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14787 }
14788
14789 static void
14790 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14791 {
14792   struct disp_data disp = { disp_del, 1 };
14793
14794   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14795 }
14796
14797 static void
14798 enable_delete_command (char *args, int from_tty)
14799 {
14800   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14801 }
14802 \f
14803 static void
14804 set_breakpoint_cmd (char *args, int from_tty)
14805 {
14806 }
14807
14808 static void
14809 show_breakpoint_cmd (char *args, int from_tty)
14810 {
14811 }
14812
14813 /* Invalidate last known value of any hardware watchpoint if
14814    the memory which that value represents has been written to by
14815    GDB itself.  */
14816
14817 static void
14818 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14819                                       CORE_ADDR addr, ssize_t len,
14820                                       const bfd_byte *data)
14821 {
14822   struct breakpoint *bp;
14823
14824   ALL_BREAKPOINTS (bp)
14825     if (bp->enable_state == bp_enabled
14826         && bp->type == bp_hardware_watchpoint)
14827       {
14828         struct watchpoint *wp = (struct watchpoint *) bp;
14829
14830         if (wp->val_valid && wp->val)
14831           {
14832             struct bp_location *loc;
14833
14834             for (loc = bp->loc; loc != NULL; loc = loc->next)
14835               if (loc->loc_type == bp_loc_hardware_watchpoint
14836                   && loc->address + loc->length > addr
14837                   && addr + len > loc->address)
14838                 {
14839                   value_free (wp->val);
14840                   wp->val = NULL;
14841                   wp->val_valid = 0;
14842                 }
14843           }
14844       }
14845 }
14846
14847 /* Create and insert a raw software breakpoint at PC.  Return an
14848    identifier, which should be used to remove the breakpoint later.
14849    In general, places which call this should be using something on the
14850    breakpoint chain instead; this function should be eliminated
14851    someday.  */
14852
14853 void *
14854 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14855                                   struct address_space *aspace, CORE_ADDR pc)
14856 {
14857   struct bp_target_info *bp_tgt;
14858
14859   bp_tgt = XZALLOC (struct bp_target_info);
14860
14861   bp_tgt->placed_address_space = aspace;
14862   bp_tgt->placed_address = pc;
14863
14864   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14865     {
14866       /* Could not insert the breakpoint.  */
14867       xfree (bp_tgt);
14868       return NULL;
14869     }
14870
14871   return bp_tgt;
14872 }
14873
14874 /* Remove a breakpoint BP inserted by
14875    deprecated_insert_raw_breakpoint.  */
14876
14877 int
14878 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14879 {
14880   struct bp_target_info *bp_tgt = bp;
14881   int ret;
14882
14883   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14884   xfree (bp_tgt);
14885
14886   return ret;
14887 }
14888
14889 /* One (or perhaps two) breakpoints used for software single
14890    stepping.  */
14891
14892 static void *single_step_breakpoints[2];
14893 static struct gdbarch *single_step_gdbarch[2];
14894
14895 /* Create and insert a breakpoint for software single step.  */
14896
14897 void
14898 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14899                                struct address_space *aspace, 
14900                                CORE_ADDR next_pc)
14901 {
14902   void **bpt_p;
14903
14904   if (single_step_breakpoints[0] == NULL)
14905     {
14906       bpt_p = &single_step_breakpoints[0];
14907       single_step_gdbarch[0] = gdbarch;
14908     }
14909   else
14910     {
14911       gdb_assert (single_step_breakpoints[1] == NULL);
14912       bpt_p = &single_step_breakpoints[1];
14913       single_step_gdbarch[1] = gdbarch;
14914     }
14915
14916   /* NOTE drow/2006-04-11: A future improvement to this function would
14917      be to only create the breakpoints once, and actually put them on
14918      the breakpoint chain.  That would let us use set_raw_breakpoint.
14919      We could adjust the addresses each time they were needed.  Doing
14920      this requires corresponding changes elsewhere where single step
14921      breakpoints are handled, however.  So, for now, we use this.  */
14922
14923   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14924   if (*bpt_p == NULL)
14925     error (_("Could not insert single-step breakpoint at %s"),
14926              paddress (gdbarch, next_pc));
14927 }
14928
14929 /* Check if the breakpoints used for software single stepping
14930    were inserted or not.  */
14931
14932 int
14933 single_step_breakpoints_inserted (void)
14934 {
14935   return (single_step_breakpoints[0] != NULL
14936           || single_step_breakpoints[1] != NULL);
14937 }
14938
14939 /* Remove and delete any breakpoints used for software single step.  */
14940
14941 void
14942 remove_single_step_breakpoints (void)
14943 {
14944   gdb_assert (single_step_breakpoints[0] != NULL);
14945
14946   /* See insert_single_step_breakpoint for more about this deprecated
14947      call.  */
14948   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14949                                     single_step_breakpoints[0]);
14950   single_step_gdbarch[0] = NULL;
14951   single_step_breakpoints[0] = NULL;
14952
14953   if (single_step_breakpoints[1] != NULL)
14954     {
14955       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14956                                         single_step_breakpoints[1]);
14957       single_step_gdbarch[1] = NULL;
14958       single_step_breakpoints[1] = NULL;
14959     }
14960 }
14961
14962 /* Delete software single step breakpoints without removing them from
14963    the inferior.  This is intended to be used if the inferior's address
14964    space where they were inserted is already gone, e.g. after exit or
14965    exec.  */
14966
14967 void
14968 cancel_single_step_breakpoints (void)
14969 {
14970   int i;
14971
14972   for (i = 0; i < 2; i++)
14973     if (single_step_breakpoints[i])
14974       {
14975         xfree (single_step_breakpoints[i]);
14976         single_step_breakpoints[i] = NULL;
14977         single_step_gdbarch[i] = NULL;
14978       }
14979 }
14980
14981 /* Detach software single-step breakpoints from INFERIOR_PTID without
14982    removing them.  */
14983
14984 static void
14985 detach_single_step_breakpoints (void)
14986 {
14987   int i;
14988
14989   for (i = 0; i < 2; i++)
14990     if (single_step_breakpoints[i])
14991       target_remove_breakpoint (single_step_gdbarch[i],
14992                                 single_step_breakpoints[i]);
14993 }
14994
14995 /* Check whether a software single-step breakpoint is inserted at
14996    PC.  */
14997
14998 static int
14999 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
15000                                         CORE_ADDR pc)
15001 {
15002   int i;
15003
15004   for (i = 0; i < 2; i++)
15005     {
15006       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15007       if (bp_tgt
15008           && breakpoint_address_match (bp_tgt->placed_address_space,
15009                                        bp_tgt->placed_address,
15010                                        aspace, pc))
15011         return 1;
15012     }
15013
15014   return 0;
15015 }
15016
15017 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15018    non-zero otherwise.  */
15019 static int
15020 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15021 {
15022   if (syscall_catchpoint_p (bp)
15023       && bp->enable_state != bp_disabled
15024       && bp->enable_state != bp_call_disabled)
15025     return 1;
15026   else
15027     return 0;
15028 }
15029
15030 int
15031 catch_syscall_enabled (void)
15032 {
15033   struct catch_syscall_inferior_data *inf_data
15034     = get_catch_syscall_inferior_data (current_inferior ());
15035
15036   return inf_data->total_syscalls_count != 0;
15037 }
15038
15039 int
15040 catching_syscall_number (int syscall_number)
15041 {
15042   struct breakpoint *bp;
15043
15044   ALL_BREAKPOINTS (bp)
15045     if (is_syscall_catchpoint_enabled (bp))
15046       {
15047         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15048
15049         if (c->syscalls_to_be_caught)
15050           {
15051             int i, iter;
15052             for (i = 0;
15053                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15054                  i++)
15055               if (syscall_number == iter)
15056                 return 1;
15057           }
15058         else
15059           return 1;
15060       }
15061
15062   return 0;
15063 }
15064
15065 /* Complete syscall names.  Used by "catch syscall".  */
15066 static VEC (char_ptr) *
15067 catch_syscall_completer (struct cmd_list_element *cmd,
15068                          char *text, char *word)
15069 {
15070   const char **list = get_syscall_names ();
15071   VEC (char_ptr) *retlist
15072     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15073
15074   xfree (list);
15075   return retlist;
15076 }
15077
15078 /* Tracepoint-specific operations.  */
15079
15080 /* Set tracepoint count to NUM.  */
15081 static void
15082 set_tracepoint_count (int num)
15083 {
15084   tracepoint_count = num;
15085   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15086 }
15087
15088 static void
15089 trace_command (char *arg, int from_tty)
15090 {
15091   struct breakpoint_ops *ops;
15092   const char *arg_cp = arg;
15093
15094   if (arg && probe_linespec_to_ops (&arg_cp))
15095     ops = &tracepoint_probe_breakpoint_ops;
15096   else
15097     ops = &tracepoint_breakpoint_ops;
15098
15099   create_breakpoint (get_current_arch (),
15100                      arg,
15101                      NULL, 0, NULL, 1 /* parse arg */,
15102                      0 /* tempflag */,
15103                      bp_tracepoint /* type_wanted */,
15104                      0 /* Ignore count */,
15105                      pending_break_support,
15106                      ops,
15107                      from_tty,
15108                      1 /* enabled */,
15109                      0 /* internal */, 0);
15110 }
15111
15112 static void
15113 ftrace_command (char *arg, int from_tty)
15114 {
15115   create_breakpoint (get_current_arch (),
15116                      arg,
15117                      NULL, 0, NULL, 1 /* parse arg */,
15118                      0 /* tempflag */,
15119                      bp_fast_tracepoint /* type_wanted */,
15120                      0 /* Ignore count */,
15121                      pending_break_support,
15122                      &tracepoint_breakpoint_ops,
15123                      from_tty,
15124                      1 /* enabled */,
15125                      0 /* internal */, 0);
15126 }
15127
15128 /* strace command implementation.  Creates a static tracepoint.  */
15129
15130 static void
15131 strace_command (char *arg, int from_tty)
15132 {
15133   struct breakpoint_ops *ops;
15134
15135   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15136      or with a normal static tracepoint.  */
15137   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15138     ops = &strace_marker_breakpoint_ops;
15139   else
15140     ops = &tracepoint_breakpoint_ops;
15141
15142   create_breakpoint (get_current_arch (),
15143                      arg,
15144                      NULL, 0, NULL, 1 /* parse arg */,
15145                      0 /* tempflag */,
15146                      bp_static_tracepoint /* type_wanted */,
15147                      0 /* Ignore count */,
15148                      pending_break_support,
15149                      ops,
15150                      from_tty,
15151                      1 /* enabled */,
15152                      0 /* internal */, 0);
15153 }
15154
15155 /* Set up a fake reader function that gets command lines from a linked
15156    list that was acquired during tracepoint uploading.  */
15157
15158 static struct uploaded_tp *this_utp;
15159 static int next_cmd;
15160
15161 static char *
15162 read_uploaded_action (void)
15163 {
15164   char *rslt;
15165
15166   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15167
15168   next_cmd++;
15169
15170   return rslt;
15171 }
15172
15173 /* Given information about a tracepoint as recorded on a target (which
15174    can be either a live system or a trace file), attempt to create an
15175    equivalent GDB tracepoint.  This is not a reliable process, since
15176    the target does not necessarily have all the information used when
15177    the tracepoint was originally defined.  */
15178   
15179 struct tracepoint *
15180 create_tracepoint_from_upload (struct uploaded_tp *utp)
15181 {
15182   char *addr_str, small_buf[100];
15183   struct tracepoint *tp;
15184
15185   if (utp->at_string)
15186     addr_str = utp->at_string;
15187   else
15188     {
15189       /* In the absence of a source location, fall back to raw
15190          address.  Since there is no way to confirm that the address
15191          means the same thing as when the trace was started, warn the
15192          user.  */
15193       warning (_("Uploaded tracepoint %d has no "
15194                  "source location, using raw address"),
15195                utp->number);
15196       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15197       addr_str = small_buf;
15198     }
15199
15200   /* There's not much we can do with a sequence of bytecodes.  */
15201   if (utp->cond && !utp->cond_string)
15202     warning (_("Uploaded tracepoint %d condition "
15203                "has no source form, ignoring it"),
15204              utp->number);
15205
15206   if (!create_breakpoint (get_current_arch (),
15207                           addr_str,
15208                           utp->cond_string, -1, NULL,
15209                           0 /* parse cond/thread */,
15210                           0 /* tempflag */,
15211                           utp->type /* type_wanted */,
15212                           0 /* Ignore count */,
15213                           pending_break_support,
15214                           &tracepoint_breakpoint_ops,
15215                           0 /* from_tty */,
15216                           utp->enabled /* enabled */,
15217                           0 /* internal */,
15218                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15219     return NULL;
15220
15221   /* Get the tracepoint we just created.  */
15222   tp = get_tracepoint (tracepoint_count);
15223   gdb_assert (tp != NULL);
15224
15225   if (utp->pass > 0)
15226     {
15227       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15228                  tp->base.number);
15229
15230       trace_pass_command (small_buf, 0);
15231     }
15232
15233   /* If we have uploaded versions of the original commands, set up a
15234      special-purpose "reader" function and call the usual command line
15235      reader, then pass the result to the breakpoint command-setting
15236      function.  */
15237   if (!VEC_empty (char_ptr, utp->cmd_strings))
15238     {
15239       struct command_line *cmd_list;
15240
15241       this_utp = utp;
15242       next_cmd = 0;
15243
15244       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15245
15246       breakpoint_set_commands (&tp->base, cmd_list);
15247     }
15248   else if (!VEC_empty (char_ptr, utp->actions)
15249            || !VEC_empty (char_ptr, utp->step_actions))
15250     warning (_("Uploaded tracepoint %d actions "
15251                "have no source form, ignoring them"),
15252              utp->number);
15253
15254   /* Copy any status information that might be available.  */
15255   tp->base.hit_count = utp->hit_count;
15256   tp->traceframe_usage = utp->traceframe_usage;
15257
15258   return tp;
15259 }
15260   
15261 /* Print information on tracepoint number TPNUM_EXP, or all if
15262    omitted.  */
15263
15264 static void
15265 tracepoints_info (char *args, int from_tty)
15266 {
15267   struct ui_out *uiout = current_uiout;
15268   int num_printed;
15269
15270   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15271
15272   if (num_printed == 0)
15273     {
15274       if (args == NULL || *args == '\0')
15275         ui_out_message (uiout, 0, "No tracepoints.\n");
15276       else
15277         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15278     }
15279
15280   default_collect_info ();
15281 }
15282
15283 /* The 'enable trace' command enables tracepoints.
15284    Not supported by all targets.  */
15285 static void
15286 enable_trace_command (char *args, int from_tty)
15287 {
15288   enable_command (args, from_tty);
15289 }
15290
15291 /* The 'disable trace' command disables tracepoints.
15292    Not supported by all targets.  */
15293 static void
15294 disable_trace_command (char *args, int from_tty)
15295 {
15296   disable_command (args, from_tty);
15297 }
15298
15299 /* Remove a tracepoint (or all if no argument).  */
15300 static void
15301 delete_trace_command (char *arg, int from_tty)
15302 {
15303   struct breakpoint *b, *b_tmp;
15304
15305   dont_repeat ();
15306
15307   if (arg == 0)
15308     {
15309       int breaks_to_delete = 0;
15310
15311       /* Delete all breakpoints if no argument.
15312          Do not delete internal or call-dummy breakpoints, these
15313          have to be deleted with an explicit breakpoint number 
15314          argument.  */
15315       ALL_TRACEPOINTS (b)
15316         if (is_tracepoint (b) && user_breakpoint_p (b))
15317           {
15318             breaks_to_delete = 1;
15319             break;
15320           }
15321
15322       /* Ask user only if there are some breakpoints to delete.  */
15323       if (!from_tty
15324           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15325         {
15326           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15327             if (is_tracepoint (b) && user_breakpoint_p (b))
15328               delete_breakpoint (b);
15329         }
15330     }
15331   else
15332     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15333 }
15334
15335 /* Helper function for trace_pass_command.  */
15336
15337 static void
15338 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15339 {
15340   tp->pass_count = count;
15341   observer_notify_breakpoint_modified (&tp->base);
15342   if (from_tty)
15343     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15344                      tp->base.number, count);
15345 }
15346
15347 /* Set passcount for tracepoint.
15348
15349    First command argument is passcount, second is tracepoint number.
15350    If tracepoint number omitted, apply to most recently defined.
15351    Also accepts special argument "all".  */
15352
15353 static void
15354 trace_pass_command (char *args, int from_tty)
15355 {
15356   struct tracepoint *t1;
15357   unsigned int count;
15358
15359   if (args == 0 || *args == 0)
15360     error (_("passcount command requires an "
15361              "argument (count + optional TP num)"));
15362
15363   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15364
15365   while (*args && isspace ((int) *args))
15366     args++;
15367
15368   if (*args && strncasecmp (args, "all", 3) == 0)
15369     {
15370       struct breakpoint *b;
15371
15372       args += 3;                        /* Skip special argument "all".  */
15373       if (*args)
15374         error (_("Junk at end of arguments."));
15375
15376       ALL_TRACEPOINTS (b)
15377       {
15378         t1 = (struct tracepoint *) b;
15379         trace_pass_set_count (t1, count, from_tty);
15380       }
15381     }
15382   else if (*args == '\0')
15383     {
15384       t1 = get_tracepoint_by_number (&args, NULL, 1);
15385       if (t1)
15386         trace_pass_set_count (t1, count, from_tty);
15387     }
15388   else
15389     {
15390       struct get_number_or_range_state state;
15391
15392       init_number_or_range (&state, args);
15393       while (!state.finished)
15394         {
15395           t1 = get_tracepoint_by_number (&args, &state, 1);
15396           if (t1)
15397             trace_pass_set_count (t1, count, from_tty);
15398         }
15399     }
15400 }
15401
15402 struct tracepoint *
15403 get_tracepoint (int num)
15404 {
15405   struct breakpoint *t;
15406
15407   ALL_TRACEPOINTS (t)
15408     if (t->number == num)
15409       return (struct tracepoint *) t;
15410
15411   return NULL;
15412 }
15413
15414 /* Find the tracepoint with the given target-side number (which may be
15415    different from the tracepoint number after disconnecting and
15416    reconnecting).  */
15417
15418 struct tracepoint *
15419 get_tracepoint_by_number_on_target (int num)
15420 {
15421   struct breakpoint *b;
15422
15423   ALL_TRACEPOINTS (b)
15424     {
15425       struct tracepoint *t = (struct tracepoint *) b;
15426
15427       if (t->number_on_target == num)
15428         return t;
15429     }
15430
15431   return NULL;
15432 }
15433
15434 /* Utility: parse a tracepoint number and look it up in the list.
15435    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15436    If OPTIONAL_P is true, then if the argument is missing, the most
15437    recent tracepoint (tracepoint_count) is returned.  */
15438 struct tracepoint *
15439 get_tracepoint_by_number (char **arg,
15440                           struct get_number_or_range_state *state,
15441                           int optional_p)
15442 {
15443   struct breakpoint *t;
15444   int tpnum;
15445   char *instring = arg == NULL ? NULL : *arg;
15446
15447   if (state)
15448     {
15449       gdb_assert (!state->finished);
15450       tpnum = get_number_or_range (state);
15451     }
15452   else if (arg == NULL || *arg == NULL || ! **arg)
15453     {
15454       if (optional_p)
15455         tpnum = tracepoint_count;
15456       else
15457         error_no_arg (_("tracepoint number"));
15458     }
15459   else
15460     tpnum = get_number (arg);
15461
15462   if (tpnum <= 0)
15463     {
15464       if (instring && *instring)
15465         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15466                          instring);
15467       else
15468         printf_filtered (_("Tracepoint argument missing "
15469                            "and no previous tracepoint\n"));
15470       return NULL;
15471     }
15472
15473   ALL_TRACEPOINTS (t)
15474     if (t->number == tpnum)
15475     {
15476       return (struct tracepoint *) t;
15477     }
15478
15479   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15480   return NULL;
15481 }
15482
15483 void
15484 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15485 {
15486   if (b->thread != -1)
15487     fprintf_unfiltered (fp, " thread %d", b->thread);
15488
15489   if (b->task != 0)
15490     fprintf_unfiltered (fp, " task %d", b->task);
15491
15492   fprintf_unfiltered (fp, "\n");
15493 }
15494
15495 /* Save information on user settable breakpoints (watchpoints, etc) to
15496    a new script file named FILENAME.  If FILTER is non-NULL, call it
15497    on each breakpoint and only include the ones for which it returns
15498    non-zero.  */
15499
15500 static void
15501 save_breakpoints (char *filename, int from_tty,
15502                   int (*filter) (const struct breakpoint *))
15503 {
15504   struct breakpoint *tp;
15505   int any = 0;
15506   char *pathname;
15507   struct cleanup *cleanup;
15508   struct ui_file *fp;
15509   int extra_trace_bits = 0;
15510
15511   if (filename == 0 || *filename == 0)
15512     error (_("Argument required (file name in which to save)"));
15513
15514   /* See if we have anything to save.  */
15515   ALL_BREAKPOINTS (tp)
15516   {
15517     /* Skip internal and momentary breakpoints.  */
15518     if (!user_breakpoint_p (tp))
15519       continue;
15520
15521     /* If we have a filter, only save the breakpoints it accepts.  */
15522     if (filter && !filter (tp))
15523       continue;
15524
15525     any = 1;
15526
15527     if (is_tracepoint (tp))
15528       {
15529         extra_trace_bits = 1;
15530
15531         /* We can stop searching.  */
15532         break;
15533       }
15534   }
15535
15536   if (!any)
15537     {
15538       warning (_("Nothing to save."));
15539       return;
15540     }
15541
15542   pathname = tilde_expand (filename);
15543   cleanup = make_cleanup (xfree, pathname);
15544   fp = gdb_fopen (pathname, "w");
15545   if (!fp)
15546     error (_("Unable to open file '%s' for saving (%s)"),
15547            filename, safe_strerror (errno));
15548   make_cleanup_ui_file_delete (fp);
15549
15550   if (extra_trace_bits)
15551     save_trace_state_variables (fp);
15552
15553   ALL_BREAKPOINTS (tp)
15554   {
15555     /* Skip internal and momentary breakpoints.  */
15556     if (!user_breakpoint_p (tp))
15557       continue;
15558
15559     /* If we have a filter, only save the breakpoints it accepts.  */
15560     if (filter && !filter (tp))
15561       continue;
15562
15563     tp->ops->print_recreate (tp, fp);
15564
15565     /* Note, we can't rely on tp->number for anything, as we can't
15566        assume the recreated breakpoint numbers will match.  Use $bpnum
15567        instead.  */
15568
15569     if (tp->cond_string)
15570       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15571
15572     if (tp->ignore_count)
15573       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15574
15575     if (tp->commands)
15576       {
15577         volatile struct gdb_exception ex;       
15578
15579         fprintf_unfiltered (fp, "  commands\n");
15580         
15581         ui_out_redirect (current_uiout, fp);
15582         TRY_CATCH (ex, RETURN_MASK_ALL)
15583           {
15584             print_command_lines (current_uiout, tp->commands->commands, 2);
15585           }
15586         ui_out_redirect (current_uiout, NULL);
15587
15588         if (ex.reason < 0)
15589           throw_exception (ex);
15590
15591         fprintf_unfiltered (fp, "  end\n");
15592       }
15593
15594     if (tp->enable_state == bp_disabled)
15595       fprintf_unfiltered (fp, "disable\n");
15596
15597     /* If this is a multi-location breakpoint, check if the locations
15598        should be individually disabled.  Watchpoint locations are
15599        special, and not user visible.  */
15600     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15601       {
15602         struct bp_location *loc;
15603         int n = 1;
15604
15605         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15606           if (!loc->enabled)
15607             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15608       }
15609   }
15610
15611   if (extra_trace_bits && *default_collect)
15612     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15613
15614   do_cleanups (cleanup);
15615   if (from_tty)
15616     printf_filtered (_("Saved to file '%s'.\n"), filename);
15617 }
15618
15619 /* The `save breakpoints' command.  */
15620
15621 static void
15622 save_breakpoints_command (char *args, int from_tty)
15623 {
15624   save_breakpoints (args, from_tty, NULL);
15625 }
15626
15627 /* The `save tracepoints' command.  */
15628
15629 static void
15630 save_tracepoints_command (char *args, int from_tty)
15631 {
15632   save_breakpoints (args, from_tty, is_tracepoint);
15633 }
15634
15635 /* Create a vector of all tracepoints.  */
15636
15637 VEC(breakpoint_p) *
15638 all_tracepoints (void)
15639 {
15640   VEC(breakpoint_p) *tp_vec = 0;
15641   struct breakpoint *tp;
15642
15643   ALL_TRACEPOINTS (tp)
15644   {
15645     VEC_safe_push (breakpoint_p, tp_vec, tp);
15646   }
15647
15648   return tp_vec;
15649 }
15650
15651 \f
15652 /* This help string is used for the break, hbreak, tbreak and thbreak
15653    commands.  It is defined as a macro to prevent duplication.
15654    COMMAND should be a string constant containing the name of the
15655    command.  */
15656 #define BREAK_ARGS_HELP(command) \
15657 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15658 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15659 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15660 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15661 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15662 If a line number is specified, break at start of code for that line.\n\
15663 If a function is specified, break at start of code for that function.\n\
15664 If an address is specified, break at that exact address.\n\
15665 With no LOCATION, uses current execution address of the selected\n\
15666 stack frame.  This is useful for breaking on return to a stack frame.\n\
15667 \n\
15668 THREADNUM is the number from \"info threads\".\n\
15669 CONDITION is a boolean expression.\n\
15670 \n\
15671 Multiple breakpoints at one place are permitted, and useful if their\n\
15672 conditions are different.\n\
15673 \n\
15674 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15675
15676 /* List of subcommands for "catch".  */
15677 static struct cmd_list_element *catch_cmdlist;
15678
15679 /* List of subcommands for "tcatch".  */
15680 static struct cmd_list_element *tcatch_cmdlist;
15681
15682 void
15683 add_catch_command (char *name, char *docstring,
15684                    void (*sfunc) (char *args, int from_tty,
15685                                   struct cmd_list_element *command),
15686                    completer_ftype *completer,
15687                    void *user_data_catch,
15688                    void *user_data_tcatch)
15689 {
15690   struct cmd_list_element *command;
15691
15692   command = add_cmd (name, class_breakpoint, NULL, docstring,
15693                      &catch_cmdlist);
15694   set_cmd_sfunc (command, sfunc);
15695   set_cmd_context (command, user_data_catch);
15696   set_cmd_completer (command, completer);
15697
15698   command = add_cmd (name, class_breakpoint, NULL, docstring,
15699                      &tcatch_cmdlist);
15700   set_cmd_sfunc (command, sfunc);
15701   set_cmd_context (command, user_data_tcatch);
15702   set_cmd_completer (command, completer);
15703 }
15704
15705 static void
15706 clear_syscall_counts (struct inferior *inf)
15707 {
15708   struct catch_syscall_inferior_data *inf_data
15709     = get_catch_syscall_inferior_data (inf);
15710
15711   inf_data->total_syscalls_count = 0;
15712   inf_data->any_syscall_count = 0;
15713   VEC_free (int, inf_data->syscalls_counts);
15714 }
15715
15716 static void
15717 save_command (char *arg, int from_tty)
15718 {
15719   printf_unfiltered (_("\"save\" must be followed by "
15720                        "the name of a save subcommand.\n"));
15721   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15722 }
15723
15724 struct breakpoint *
15725 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15726                           void *data)
15727 {
15728   struct breakpoint *b, *b_tmp;
15729
15730   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15731     {
15732       if ((*callback) (b, data))
15733         return b;
15734     }
15735
15736   return NULL;
15737 }
15738
15739 /* Zero if any of the breakpoint's locations could be a location where
15740    functions have been inlined, nonzero otherwise.  */
15741
15742 static int
15743 is_non_inline_function (struct breakpoint *b)
15744 {
15745   /* The shared library event breakpoint is set on the address of a
15746      non-inline function.  */
15747   if (b->type == bp_shlib_event)
15748     return 1;
15749
15750   return 0;
15751 }
15752
15753 /* Nonzero if the specified PC cannot be a location where functions
15754    have been inlined.  */
15755
15756 int
15757 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15758                            const struct target_waitstatus *ws)
15759 {
15760   struct breakpoint *b;
15761   struct bp_location *bl;
15762
15763   ALL_BREAKPOINTS (b)
15764     {
15765       if (!is_non_inline_function (b))
15766         continue;
15767
15768       for (bl = b->loc; bl != NULL; bl = bl->next)
15769         {
15770           if (!bl->shlib_disabled
15771               && bpstat_check_location (bl, aspace, pc, ws))
15772             return 1;
15773         }
15774     }
15775
15776   return 0;
15777 }
15778
15779 /* Remove any references to OBJFILE which is going to be freed.  */
15780
15781 void
15782 breakpoint_free_objfile (struct objfile *objfile)
15783 {
15784   struct bp_location **locp, *loc;
15785
15786   ALL_BP_LOCATIONS (loc, locp)
15787     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15788       loc->symtab = NULL;
15789 }
15790
15791 void
15792 initialize_breakpoint_ops (void)
15793 {
15794   static int initialized = 0;
15795
15796   struct breakpoint_ops *ops;
15797
15798   if (initialized)
15799     return;
15800   initialized = 1;
15801
15802   /* The breakpoint_ops structure to be inherit by all kinds of
15803      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15804      internal and momentary breakpoints, etc.).  */
15805   ops = &bkpt_base_breakpoint_ops;
15806   *ops = base_breakpoint_ops;
15807   ops->re_set = bkpt_re_set;
15808   ops->insert_location = bkpt_insert_location;
15809   ops->remove_location = bkpt_remove_location;
15810   ops->breakpoint_hit = bkpt_breakpoint_hit;
15811   ops->create_sals_from_address = bkpt_create_sals_from_address;
15812   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15813   ops->decode_linespec = bkpt_decode_linespec;
15814
15815   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15816   ops = &bkpt_breakpoint_ops;
15817   *ops = bkpt_base_breakpoint_ops;
15818   ops->re_set = bkpt_re_set;
15819   ops->resources_needed = bkpt_resources_needed;
15820   ops->print_it = bkpt_print_it;
15821   ops->print_mention = bkpt_print_mention;
15822   ops->print_recreate = bkpt_print_recreate;
15823
15824   /* Ranged breakpoints.  */
15825   ops = &ranged_breakpoint_ops;
15826   *ops = bkpt_breakpoint_ops;
15827   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15828   ops->resources_needed = resources_needed_ranged_breakpoint;
15829   ops->print_it = print_it_ranged_breakpoint;
15830   ops->print_one = print_one_ranged_breakpoint;
15831   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15832   ops->print_mention = print_mention_ranged_breakpoint;
15833   ops->print_recreate = print_recreate_ranged_breakpoint;
15834
15835   /* Internal breakpoints.  */
15836   ops = &internal_breakpoint_ops;
15837   *ops = bkpt_base_breakpoint_ops;
15838   ops->re_set = internal_bkpt_re_set;
15839   ops->check_status = internal_bkpt_check_status;
15840   ops->print_it = internal_bkpt_print_it;
15841   ops->print_mention = internal_bkpt_print_mention;
15842
15843   /* Momentary breakpoints.  */
15844   ops = &momentary_breakpoint_ops;
15845   *ops = bkpt_base_breakpoint_ops;
15846   ops->re_set = momentary_bkpt_re_set;
15847   ops->check_status = momentary_bkpt_check_status;
15848   ops->print_it = momentary_bkpt_print_it;
15849   ops->print_mention = momentary_bkpt_print_mention;
15850
15851   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15852   ops = &longjmp_breakpoint_ops;
15853   *ops = momentary_breakpoint_ops;
15854   ops->dtor = longjmp_bkpt_dtor;
15855
15856   /* Probe breakpoints.  */
15857   ops = &bkpt_probe_breakpoint_ops;
15858   *ops = bkpt_breakpoint_ops;
15859   ops->insert_location = bkpt_probe_insert_location;
15860   ops->remove_location = bkpt_probe_remove_location;
15861   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15862   ops->decode_linespec = bkpt_probe_decode_linespec;
15863
15864   /* GNU v3 exception catchpoints.  */
15865   ops = &gnu_v3_exception_catchpoint_ops;
15866   *ops = bkpt_breakpoint_ops;
15867   ops->print_it = print_it_exception_catchpoint;
15868   ops->print_one = print_one_exception_catchpoint;
15869   ops->print_mention = print_mention_exception_catchpoint;
15870   ops->print_recreate = print_recreate_exception_catchpoint;
15871
15872   /* Watchpoints.  */
15873   ops = &watchpoint_breakpoint_ops;
15874   *ops = base_breakpoint_ops;
15875   ops->dtor = dtor_watchpoint;
15876   ops->re_set = re_set_watchpoint;
15877   ops->insert_location = insert_watchpoint;
15878   ops->remove_location = remove_watchpoint;
15879   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15880   ops->check_status = check_status_watchpoint;
15881   ops->resources_needed = resources_needed_watchpoint;
15882   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15883   ops->print_it = print_it_watchpoint;
15884   ops->print_mention = print_mention_watchpoint;
15885   ops->print_recreate = print_recreate_watchpoint;
15886
15887   /* Masked watchpoints.  */
15888   ops = &masked_watchpoint_breakpoint_ops;
15889   *ops = watchpoint_breakpoint_ops;
15890   ops->insert_location = insert_masked_watchpoint;
15891   ops->remove_location = remove_masked_watchpoint;
15892   ops->resources_needed = resources_needed_masked_watchpoint;
15893   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15894   ops->print_it = print_it_masked_watchpoint;
15895   ops->print_one_detail = print_one_detail_masked_watchpoint;
15896   ops->print_mention = print_mention_masked_watchpoint;
15897   ops->print_recreate = print_recreate_masked_watchpoint;
15898
15899   /* Tracepoints.  */
15900   ops = &tracepoint_breakpoint_ops;
15901   *ops = base_breakpoint_ops;
15902   ops->re_set = tracepoint_re_set;
15903   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15904   ops->print_one_detail = tracepoint_print_one_detail;
15905   ops->print_mention = tracepoint_print_mention;
15906   ops->print_recreate = tracepoint_print_recreate;
15907   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15908   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15909   ops->decode_linespec = tracepoint_decode_linespec;
15910
15911   /* Probe tracepoints.  */
15912   ops = &tracepoint_probe_breakpoint_ops;
15913   *ops = tracepoint_breakpoint_ops;
15914   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15915   ops->decode_linespec = tracepoint_probe_decode_linespec;
15916
15917   /* Static tracepoints with marker (`-m').  */
15918   ops = &strace_marker_breakpoint_ops;
15919   *ops = tracepoint_breakpoint_ops;
15920   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15921   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15922   ops->decode_linespec = strace_marker_decode_linespec;
15923
15924   /* Fork catchpoints.  */
15925   ops = &catch_fork_breakpoint_ops;
15926   *ops = base_breakpoint_ops;
15927   ops->insert_location = insert_catch_fork;
15928   ops->remove_location = remove_catch_fork;
15929   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15930   ops->print_it = print_it_catch_fork;
15931   ops->print_one = print_one_catch_fork;
15932   ops->print_mention = print_mention_catch_fork;
15933   ops->print_recreate = print_recreate_catch_fork;
15934
15935   /* Vfork catchpoints.  */
15936   ops = &catch_vfork_breakpoint_ops;
15937   *ops = base_breakpoint_ops;
15938   ops->insert_location = insert_catch_vfork;
15939   ops->remove_location = remove_catch_vfork;
15940   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15941   ops->print_it = print_it_catch_vfork;
15942   ops->print_one = print_one_catch_vfork;
15943   ops->print_mention = print_mention_catch_vfork;
15944   ops->print_recreate = print_recreate_catch_vfork;
15945
15946   /* Exec catchpoints.  */
15947   ops = &catch_exec_breakpoint_ops;
15948   *ops = base_breakpoint_ops;
15949   ops->dtor = dtor_catch_exec;
15950   ops->insert_location = insert_catch_exec;
15951   ops->remove_location = remove_catch_exec;
15952   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15953   ops->print_it = print_it_catch_exec;
15954   ops->print_one = print_one_catch_exec;
15955   ops->print_mention = print_mention_catch_exec;
15956   ops->print_recreate = print_recreate_catch_exec;
15957
15958   /* Syscall catchpoints.  */
15959   ops = &catch_syscall_breakpoint_ops;
15960   *ops = base_breakpoint_ops;
15961   ops->dtor = dtor_catch_syscall;
15962   ops->insert_location = insert_catch_syscall;
15963   ops->remove_location = remove_catch_syscall;
15964   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15965   ops->print_it = print_it_catch_syscall;
15966   ops->print_one = print_one_catch_syscall;
15967   ops->print_mention = print_mention_catch_syscall;
15968   ops->print_recreate = print_recreate_catch_syscall;
15969
15970   /* Solib-related catchpoints.  */
15971   ops = &catch_solib_breakpoint_ops;
15972   *ops = base_breakpoint_ops;
15973   ops->dtor = dtor_catch_solib;
15974   ops->insert_location = insert_catch_solib;
15975   ops->remove_location = remove_catch_solib;
15976   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15977   ops->check_status = check_status_catch_solib;
15978   ops->print_it = print_it_catch_solib;
15979   ops->print_one = print_one_catch_solib;
15980   ops->print_mention = print_mention_catch_solib;
15981   ops->print_recreate = print_recreate_catch_solib;
15982
15983   ops = &dprintf_breakpoint_ops;
15984   *ops = bkpt_base_breakpoint_ops;
15985   ops->re_set = bkpt_re_set;
15986   ops->resources_needed = bkpt_resources_needed;
15987   ops->print_it = bkpt_print_it;
15988   ops->print_mention = bkpt_print_mention;
15989   ops->print_recreate = bkpt_print_recreate;
15990 }
15991
15992 /* Chain containing all defined "enable breakpoint" subcommands.  */
15993
15994 static struct cmd_list_element *enablebreaklist = NULL;
15995
15996 void
15997 _initialize_breakpoint (void)
15998 {
15999   struct cmd_list_element *c;
16000
16001   initialize_breakpoint_ops ();
16002
16003   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16004   observer_attach_inferior_exit (clear_syscall_counts);
16005   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16006
16007   breakpoint_objfile_key
16008     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16009
16010   catch_syscall_inferior_data
16011     = register_inferior_data_with_cleanup (NULL,
16012                                            catch_syscall_inferior_data_cleanup);
16013
16014   breakpoint_chain = 0;
16015   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16016      before a breakpoint is set.  */
16017   breakpoint_count = 0;
16018
16019   tracepoint_count = 0;
16020
16021   add_com ("ignore", class_breakpoint, ignore_command, _("\
16022 Set ignore-count of breakpoint number N to COUNT.\n\
16023 Usage is `ignore N COUNT'."));
16024   if (xdb_commands)
16025     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16026
16027   add_com ("commands", class_breakpoint, commands_command, _("\
16028 Set commands to be executed when a breakpoint is hit.\n\
16029 Give breakpoint number as argument after \"commands\".\n\
16030 With no argument, the targeted breakpoint is the last one set.\n\
16031 The commands themselves follow starting on the next line.\n\
16032 Type a line containing \"end\" to indicate the end of them.\n\
16033 Give \"silent\" as the first line to make the breakpoint silent;\n\
16034 then no output is printed when it is hit, except what the commands print."));
16035
16036   c = add_com ("condition", class_breakpoint, condition_command, _("\
16037 Specify breakpoint number N to break only if COND is true.\n\
16038 Usage is `condition N COND', where N is an integer and COND is an\n\
16039 expression to be evaluated whenever breakpoint N is reached."));
16040   set_cmd_completer (c, condition_completer);
16041
16042   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16043 Set a temporary breakpoint.\n\
16044 Like \"break\" except the breakpoint is only temporary,\n\
16045 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16046 by using \"enable delete\" on the breakpoint number.\n\
16047 \n"
16048 BREAK_ARGS_HELP ("tbreak")));
16049   set_cmd_completer (c, location_completer);
16050
16051   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16052 Set a hardware assisted breakpoint.\n\
16053 Like \"break\" except the breakpoint requires hardware support,\n\
16054 some target hardware may not have this support.\n\
16055 \n"
16056 BREAK_ARGS_HELP ("hbreak")));
16057   set_cmd_completer (c, location_completer);
16058
16059   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16060 Set a temporary hardware assisted breakpoint.\n\
16061 Like \"hbreak\" except the breakpoint is only temporary,\n\
16062 so it will be deleted when hit.\n\
16063 \n"
16064 BREAK_ARGS_HELP ("thbreak")));
16065   set_cmd_completer (c, location_completer);
16066
16067   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16068 Enable some breakpoints.\n\
16069 Give breakpoint numbers (separated by spaces) as arguments.\n\
16070 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16071 This is used to cancel the effect of the \"disable\" command.\n\
16072 With a subcommand you can enable temporarily."),
16073                   &enablelist, "enable ", 1, &cmdlist);
16074   if (xdb_commands)
16075     add_com ("ab", class_breakpoint, enable_command, _("\
16076 Enable some breakpoints.\n\
16077 Give breakpoint numbers (separated by spaces) as arguments.\n\
16078 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16079 This is used to cancel the effect of the \"disable\" command.\n\
16080 With a subcommand you can enable temporarily."));
16081
16082   add_com_alias ("en", "enable", class_breakpoint, 1);
16083
16084   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16085 Enable some breakpoints.\n\
16086 Give breakpoint numbers (separated by spaces) as arguments.\n\
16087 This is used to cancel the effect of the \"disable\" command.\n\
16088 May be abbreviated to simply \"enable\".\n"),
16089                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16090
16091   add_cmd ("once", no_class, enable_once_command, _("\
16092 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16093 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16094            &enablebreaklist);
16095
16096   add_cmd ("delete", no_class, enable_delete_command, _("\
16097 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16098 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16099            &enablebreaklist);
16100
16101   add_cmd ("count", no_class, enable_count_command, _("\
16102 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16103 If a breakpoint is hit while enabled in this fashion,\n\
16104 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16105            &enablebreaklist);
16106
16107   add_cmd ("delete", no_class, enable_delete_command, _("\
16108 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16109 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16110            &enablelist);
16111
16112   add_cmd ("once", no_class, enable_once_command, _("\
16113 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16114 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16115            &enablelist);
16116
16117   add_cmd ("count", no_class, enable_count_command, _("\
16118 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16119 If a breakpoint is hit while enabled in this fashion,\n\
16120 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16121            &enablelist);
16122
16123   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16124 Disable some breakpoints.\n\
16125 Arguments are breakpoint numbers with spaces in between.\n\
16126 To disable all breakpoints, give no argument.\n\
16127 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16128                   &disablelist, "disable ", 1, &cmdlist);
16129   add_com_alias ("dis", "disable", class_breakpoint, 1);
16130   add_com_alias ("disa", "disable", class_breakpoint, 1);
16131   if (xdb_commands)
16132     add_com ("sb", class_breakpoint, disable_command, _("\
16133 Disable some breakpoints.\n\
16134 Arguments are breakpoint numbers with spaces in between.\n\
16135 To disable all breakpoints, give no argument.\n\
16136 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16137
16138   add_cmd ("breakpoints", class_alias, disable_command, _("\
16139 Disable some breakpoints.\n\
16140 Arguments are breakpoint numbers with spaces in between.\n\
16141 To disable all breakpoints, give no argument.\n\
16142 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16143 This command may be abbreviated \"disable\"."),
16144            &disablelist);
16145
16146   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16147 Delete some breakpoints or auto-display expressions.\n\
16148 Arguments are breakpoint numbers with spaces in between.\n\
16149 To delete all breakpoints, give no argument.\n\
16150 \n\
16151 Also a prefix command for deletion of other GDB objects.\n\
16152 The \"unset\" command is also an alias for \"delete\"."),
16153                   &deletelist, "delete ", 1, &cmdlist);
16154   add_com_alias ("d", "delete", class_breakpoint, 1);
16155   add_com_alias ("del", "delete", class_breakpoint, 1);
16156   if (xdb_commands)
16157     add_com ("db", class_breakpoint, delete_command, _("\
16158 Delete some breakpoints.\n\
16159 Arguments are breakpoint numbers with spaces in between.\n\
16160 To delete all breakpoints, give no argument.\n"));
16161
16162   add_cmd ("breakpoints", class_alias, delete_command, _("\
16163 Delete some breakpoints or auto-display expressions.\n\
16164 Arguments are breakpoint numbers with spaces in between.\n\
16165 To delete all breakpoints, give no argument.\n\
16166 This command may be abbreviated \"delete\"."),
16167            &deletelist);
16168
16169   add_com ("clear", class_breakpoint, clear_command, _("\
16170 Clear breakpoint at specified line or function.\n\
16171 Argument may be line number, function name, or \"*\" and an address.\n\
16172 If line number is specified, all breakpoints in that line are cleared.\n\
16173 If function is specified, breakpoints at beginning of function are cleared.\n\
16174 If an address is specified, breakpoints at that address are cleared.\n\
16175 \n\
16176 With no argument, clears all breakpoints in the line that the selected frame\n\
16177 is executing in.\n\
16178 \n\
16179 See also the \"delete\" command which clears breakpoints by number."));
16180   add_com_alias ("cl", "clear", class_breakpoint, 1);
16181
16182   c = add_com ("break", class_breakpoint, break_command, _("\
16183 Set breakpoint at specified line or function.\n"
16184 BREAK_ARGS_HELP ("break")));
16185   set_cmd_completer (c, location_completer);
16186
16187   add_com_alias ("b", "break", class_run, 1);
16188   add_com_alias ("br", "break", class_run, 1);
16189   add_com_alias ("bre", "break", class_run, 1);
16190   add_com_alias ("brea", "break", class_run, 1);
16191
16192   if (xdb_commands)
16193    add_com_alias ("ba", "break", class_breakpoint, 1);
16194
16195   if (dbx_commands)
16196     {
16197       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16198 Break in function/address or break at a line in the current file."),
16199                              &stoplist, "stop ", 1, &cmdlist);
16200       add_cmd ("in", class_breakpoint, stopin_command,
16201                _("Break in function or address."), &stoplist);
16202       add_cmd ("at", class_breakpoint, stopat_command,
16203                _("Break at a line in the current file."), &stoplist);
16204       add_com ("status", class_info, breakpoints_info, _("\
16205 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16206 The \"Type\" column indicates one of:\n\
16207 \tbreakpoint     - normal breakpoint\n\
16208 \twatchpoint     - watchpoint\n\
16209 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16210 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16211 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16212 address and file/line number respectively.\n\
16213 \n\
16214 Convenience variable \"$_\" and default examine address for \"x\"\n\
16215 are set to the address of the last breakpoint listed unless the command\n\
16216 is prefixed with \"server \".\n\n\
16217 Convenience variable \"$bpnum\" contains the number of the last\n\
16218 breakpoint set."));
16219     }
16220
16221   add_info ("breakpoints", breakpoints_info, _("\
16222 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16223 The \"Type\" column indicates one of:\n\
16224 \tbreakpoint     - normal breakpoint\n\
16225 \twatchpoint     - watchpoint\n\
16226 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16227 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16228 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16229 address and file/line number respectively.\n\
16230 \n\
16231 Convenience variable \"$_\" and default examine address for \"x\"\n\
16232 are set to the address of the last breakpoint listed unless the command\n\
16233 is prefixed with \"server \".\n\n\
16234 Convenience variable \"$bpnum\" contains the number of the last\n\
16235 breakpoint set."));
16236
16237   add_info_alias ("b", "breakpoints", 1);
16238
16239   if (xdb_commands)
16240     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16241 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16242 The \"Type\" column indicates one of:\n\
16243 \tbreakpoint     - normal breakpoint\n\
16244 \twatchpoint     - watchpoint\n\
16245 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16246 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16247 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16248 address and file/line number respectively.\n\
16249 \n\
16250 Convenience variable \"$_\" and default examine address for \"x\"\n\
16251 are set to the address of the last breakpoint listed unless the command\n\
16252 is prefixed with \"server \".\n\n\
16253 Convenience variable \"$bpnum\" contains the number of the last\n\
16254 breakpoint set."));
16255
16256   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16257 Status of all breakpoints, or breakpoint number NUMBER.\n\
16258 The \"Type\" column indicates one of:\n\
16259 \tbreakpoint     - normal breakpoint\n\
16260 \twatchpoint     - watchpoint\n\
16261 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16262 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16263 \tuntil          - internal breakpoint used by the \"until\" command\n\
16264 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16265 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16266 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16267 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16268 address and file/line number respectively.\n\
16269 \n\
16270 Convenience variable \"$_\" and default examine address for \"x\"\n\
16271 are set to the address of the last breakpoint listed unless the command\n\
16272 is prefixed with \"server \".\n\n\
16273 Convenience variable \"$bpnum\" contains the number of the last\n\
16274 breakpoint set."),
16275            &maintenanceinfolist);
16276
16277   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16278 Set catchpoints to catch events."),
16279                   &catch_cmdlist, "catch ",
16280                   0/*allow-unknown*/, &cmdlist);
16281
16282   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16283 Set temporary catchpoints to catch events."),
16284                   &tcatch_cmdlist, "tcatch ",
16285                   0/*allow-unknown*/, &cmdlist);
16286
16287   /* Add catch and tcatch sub-commands.  */
16288   add_catch_command ("catch", _("\
16289 Catch an exception, when caught."),
16290                      catch_catch_command,
16291                      NULL,
16292                      CATCH_PERMANENT,
16293                      CATCH_TEMPORARY);
16294   add_catch_command ("throw", _("\
16295 Catch an exception, when thrown."),
16296                      catch_throw_command,
16297                      NULL,
16298                      CATCH_PERMANENT,
16299                      CATCH_TEMPORARY);
16300   add_catch_command ("fork", _("Catch calls to fork."),
16301                      catch_fork_command_1,
16302                      NULL,
16303                      (void *) (uintptr_t) catch_fork_permanent,
16304                      (void *) (uintptr_t) catch_fork_temporary);
16305   add_catch_command ("vfork", _("Catch calls to vfork."),
16306                      catch_fork_command_1,
16307                      NULL,
16308                      (void *) (uintptr_t) catch_vfork_permanent,
16309                      (void *) (uintptr_t) catch_vfork_temporary);
16310   add_catch_command ("exec", _("Catch calls to exec."),
16311                      catch_exec_command_1,
16312                      NULL,
16313                      CATCH_PERMANENT,
16314                      CATCH_TEMPORARY);
16315   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16316 Usage: catch load [REGEX]\n\
16317 If REGEX is given, only stop for libraries matching the regular expression."),
16318                      catch_load_command_1,
16319                      NULL,
16320                      CATCH_PERMANENT,
16321                      CATCH_TEMPORARY);
16322   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16323 Usage: catch unload [REGEX]\n\
16324 If REGEX is given, only stop for libraries matching the regular expression."),
16325                      catch_unload_command_1,
16326                      NULL,
16327                      CATCH_PERMANENT,
16328                      CATCH_TEMPORARY);
16329   add_catch_command ("syscall", _("\
16330 Catch system calls by their names and/or numbers.\n\
16331 Arguments say which system calls to catch.  If no arguments\n\
16332 are given, every system call will be caught.\n\
16333 Arguments, if given, should be one or more system call names\n\
16334 (if your system supports that), or system call numbers."),
16335                      catch_syscall_command_1,
16336                      catch_syscall_completer,
16337                      CATCH_PERMANENT,
16338                      CATCH_TEMPORARY);
16339
16340   c = add_com ("watch", class_breakpoint, watch_command, _("\
16341 Set a watchpoint for an expression.\n\
16342 Usage: watch [-l|-location] EXPRESSION\n\
16343 A watchpoint stops execution of your program whenever the value of\n\
16344 an expression changes.\n\
16345 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16346 the memory to which it refers."));
16347   set_cmd_completer (c, expression_completer);
16348
16349   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16350 Set a read watchpoint for an expression.\n\
16351 Usage: rwatch [-l|-location] EXPRESSION\n\
16352 A watchpoint stops execution of your program whenever the value of\n\
16353 an expression is read.\n\
16354 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16355 the memory to which it refers."));
16356   set_cmd_completer (c, expression_completer);
16357
16358   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16359 Set a watchpoint for an expression.\n\
16360 Usage: awatch [-l|-location] EXPRESSION\n\
16361 A watchpoint stops execution of your program whenever the value of\n\
16362 an expression is either read or written.\n\
16363 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16364 the memory to which it refers."));
16365   set_cmd_completer (c, expression_completer);
16366
16367   add_info ("watchpoints", watchpoints_info, _("\
16368 Status of specified watchpoints (all watchpoints if no argument)."));
16369
16370   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16371      respond to changes - contrary to the description.  */
16372   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16373                             &can_use_hw_watchpoints, _("\
16374 Set debugger's willingness to use watchpoint hardware."), _("\
16375 Show debugger's willingness to use watchpoint hardware."), _("\
16376 If zero, gdb will not use hardware for new watchpoints, even if\n\
16377 such is available.  (However, any hardware watchpoints that were\n\
16378 created before setting this to nonzero, will continue to use watchpoint\n\
16379 hardware.)"),
16380                             NULL,
16381                             show_can_use_hw_watchpoints,
16382                             &setlist, &showlist);
16383
16384   can_use_hw_watchpoints = 1;
16385
16386   /* Tracepoint manipulation commands.  */
16387
16388   c = add_com ("trace", class_breakpoint, trace_command, _("\
16389 Set a tracepoint at specified line or function.\n\
16390 \n"
16391 BREAK_ARGS_HELP ("trace") "\n\
16392 Do \"help tracepoints\" for info on other tracepoint commands."));
16393   set_cmd_completer (c, location_completer);
16394
16395   add_com_alias ("tp", "trace", class_alias, 0);
16396   add_com_alias ("tr", "trace", class_alias, 1);
16397   add_com_alias ("tra", "trace", class_alias, 1);
16398   add_com_alias ("trac", "trace", class_alias, 1);
16399
16400   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16401 Set a fast tracepoint at specified line or function.\n\
16402 \n"
16403 BREAK_ARGS_HELP ("ftrace") "\n\
16404 Do \"help tracepoints\" for info on other tracepoint commands."));
16405   set_cmd_completer (c, location_completer);
16406
16407   c = add_com ("strace", class_breakpoint, strace_command, _("\
16408 Set a static tracepoint at specified line, function or marker.\n\
16409 \n\
16410 strace [LOCATION] [if CONDITION]\n\
16411 LOCATION may be a line number, function name, \"*\" and an address,\n\
16412 or -m MARKER_ID.\n\
16413 If a line number is specified, probe the marker at start of code\n\
16414 for that line.  If a function is specified, probe the marker at start\n\
16415 of code for that function.  If an address is specified, probe the marker\n\
16416 at that exact address.  If a marker id is specified, probe the marker\n\
16417 with that name.  With no LOCATION, uses current execution address of\n\
16418 the selected stack frame.\n\
16419 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16420 This collects arbitrary user data passed in the probe point call to the\n\
16421 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16422 by printing the $_sdata variable like any other convenience variable.\n\
16423 \n\
16424 CONDITION is a boolean expression.\n\
16425 \n\
16426 Multiple tracepoints at one place are permitted, and useful if their\n\
16427 conditions are different.\n\
16428 \n\
16429 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16430 Do \"help tracepoints\" for info on other tracepoint commands."));
16431   set_cmd_completer (c, location_completer);
16432
16433   add_info ("tracepoints", tracepoints_info, _("\
16434 Status of specified tracepoints (all tracepoints if no argument).\n\
16435 Convenience variable \"$tpnum\" contains the number of the\n\
16436 last tracepoint set."));
16437
16438   add_info_alias ("tp", "tracepoints", 1);
16439
16440   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16441 Delete specified tracepoints.\n\
16442 Arguments are tracepoint numbers, separated by spaces.\n\
16443 No argument means delete all tracepoints."),
16444            &deletelist);
16445   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16446
16447   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16448 Disable specified tracepoints.\n\
16449 Arguments are tracepoint numbers, separated by spaces.\n\
16450 No argument means disable all tracepoints."),
16451            &disablelist);
16452   deprecate_cmd (c, "disable");
16453
16454   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16455 Enable specified tracepoints.\n\
16456 Arguments are tracepoint numbers, separated by spaces.\n\
16457 No argument means enable all tracepoints."),
16458            &enablelist);
16459   deprecate_cmd (c, "enable");
16460
16461   add_com ("passcount", class_trace, trace_pass_command, _("\
16462 Set the passcount for a tracepoint.\n\
16463 The trace will end when the tracepoint has been passed 'count' times.\n\
16464 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16465 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16466
16467   add_prefix_cmd ("save", class_breakpoint, save_command,
16468                   _("Save breakpoint definitions as a script."),
16469                   &save_cmdlist, "save ",
16470                   0/*allow-unknown*/, &cmdlist);
16471
16472   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16473 Save current breakpoint definitions as a script.\n\
16474 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16475 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16476 session to restore them."),
16477                &save_cmdlist);
16478   set_cmd_completer (c, filename_completer);
16479
16480   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16481 Save current tracepoint definitions as a script.\n\
16482 Use the 'source' command in another debug session to restore them."),
16483                &save_cmdlist);
16484   set_cmd_completer (c, filename_completer);
16485
16486   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16487   deprecate_cmd (c, "save tracepoints");
16488
16489   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16490 Breakpoint specific settings\n\
16491 Configure various breakpoint-specific variables such as\n\
16492 pending breakpoint behavior"),
16493                   &breakpoint_set_cmdlist, "set breakpoint ",
16494                   0/*allow-unknown*/, &setlist);
16495   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16496 Breakpoint specific settings\n\
16497 Configure various breakpoint-specific variables such as\n\
16498 pending breakpoint behavior"),
16499                   &breakpoint_show_cmdlist, "show breakpoint ",
16500                   0/*allow-unknown*/, &showlist);
16501
16502   add_setshow_auto_boolean_cmd ("pending", no_class,
16503                                 &pending_break_support, _("\
16504 Set debugger's behavior regarding pending breakpoints."), _("\
16505 Show debugger's behavior regarding pending breakpoints."), _("\
16506 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16507 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16508 an error.  If auto, an unrecognized breakpoint location results in a\n\
16509 user-query to see if a pending breakpoint should be created."),
16510                                 NULL,
16511                                 show_pending_break_support,
16512                                 &breakpoint_set_cmdlist,
16513                                 &breakpoint_show_cmdlist);
16514
16515   pending_break_support = AUTO_BOOLEAN_AUTO;
16516
16517   add_setshow_boolean_cmd ("auto-hw", no_class,
16518                            &automatic_hardware_breakpoints, _("\
16519 Set automatic usage of hardware breakpoints."), _("\
16520 Show automatic usage of hardware breakpoints."), _("\
16521 If set, the debugger will automatically use hardware breakpoints for\n\
16522 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16523 a warning will be emitted for such breakpoints."),
16524                            NULL,
16525                            show_automatic_hardware_breakpoints,
16526                            &breakpoint_set_cmdlist,
16527                            &breakpoint_show_cmdlist);
16528
16529   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16530                                 &always_inserted_mode, _("\
16531 Set mode for inserting breakpoints."), _("\
16532 Show mode for inserting breakpoints."), _("\
16533 When this mode is off, breakpoints are inserted in inferior when it is\n\
16534 resumed, and removed when execution stops.  When this mode is on,\n\
16535 breakpoints are inserted immediately and removed only when the user\n\
16536 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16537 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16538 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16539 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16540 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16541                                 NULL,
16542                                 &show_always_inserted_mode,
16543                                 &breakpoint_set_cmdlist,
16544                                 &breakpoint_show_cmdlist);
16545
16546   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16547                         condition_evaluation_enums,
16548                         &condition_evaluation_mode_1, _("\
16549 Set mode of breakpoint condition evaluation."), _("\
16550 Show mode of breakpoint condition evaluation."), _("\
16551 When this is set to \"host\", breakpoint conditions will be\n\
16552 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16553 breakpoint conditions will be downloaded to the target (if the target\n\
16554 supports such feature) and conditions will be evaluated on the target's side.\n\
16555 If this is set to \"auto\" (default), this will be automatically set to\n\
16556 \"target\" if it supports condition evaluation, otherwise it will\n\
16557 be set to \"gdb\""),
16558                            &set_condition_evaluation_mode,
16559                            &show_condition_evaluation_mode,
16560                            &breakpoint_set_cmdlist,
16561                            &breakpoint_show_cmdlist);
16562
16563   add_com ("break-range", class_breakpoint, break_range_command, _("\
16564 Set a breakpoint for an address range.\n\
16565 break-range START-LOCATION, END-LOCATION\n\
16566 where START-LOCATION and END-LOCATION can be one of the following:\n\
16567   LINENUM, for that line in the current file,\n\
16568   FILE:LINENUM, for that line in that file,\n\
16569   +OFFSET, for that number of lines after the current line\n\
16570            or the start of the range\n\
16571   FUNCTION, for the first line in that function,\n\
16572   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16573   *ADDRESS, for the instruction at that address.\n\
16574 \n\
16575 The breakpoint will stop execution of the inferior whenever it executes\n\
16576 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16577 range (including START-LOCATION and END-LOCATION)."));
16578
16579   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16580 Set a dynamic printf at specified line or function.\n\
16581 dprintf location,format string,arg1,arg2,...\n\
16582 location may be a line number, function name, or \"*\" and an address.\n\
16583 If a line number is specified, break at start of code for that line.\n\
16584 If a function is specified, break at start of code for that function.\n\
16585 "));
16586   set_cmd_completer (c, location_completer);
16587
16588   add_setshow_enum_cmd ("dprintf-style", class_support,
16589                         dprintf_style_enums, &dprintf_style, _("\
16590 Set the style of usage for dynamic printf."), _("\
16591 Show the style of usage for dynamic printf."), _("\
16592 This setting chooses how GDB will do a dynamic printf.\n\
16593 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16594 console, as with the \"printf\" command.\n\
16595 If the value is \"call\", the print is done by calling a function in your\n\
16596 program; by default printf(), but you can choose a different function or\n\
16597 output stream by setting dprintf-function and dprintf-channel."),
16598                         update_dprintf_commands, NULL,
16599                         &setlist, &showlist);
16600
16601   dprintf_function = xstrdup ("printf");
16602   add_setshow_string_cmd ("dprintf-function", class_support,
16603                           &dprintf_function, _("\
16604 Set the function to use for dynamic printf"), _("\
16605 Show the function to use for dynamic printf"), NULL,
16606                           update_dprintf_commands, NULL,
16607                           &setlist, &showlist);
16608
16609   dprintf_channel = xstrdup ("");
16610   add_setshow_string_cmd ("dprintf-channel", class_support,
16611                           &dprintf_channel, _("\
16612 Set the channel to use for dynamic printf"), _("\
16613 Show the channel to use for dynamic printf"), NULL,
16614                           update_dprintf_commands, NULL,
16615                           &setlist, &showlist);
16616
16617   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16618                            &disconnected_dprintf, _("\
16619 Set whether dprintf continues after GDB disconnects."), _("\
16620 Show whether dprintf continues after GDB disconnects."), _("\
16621 Use this to let dprintf commands continue to hit and produce output\n\
16622 even if GDB disconnects or detaches from the target."),
16623                            NULL,
16624                            NULL,
16625                            &setlist, &showlist);
16626
16627   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16628 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16629 (target agent only) This is useful for formatted output in user-defined commands."));
16630
16631   automatic_hardware_breakpoints = 1;
16632
16633   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16634 }