2013-01-03 Pedro Alves <palves@redhat.com>
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_CATCH
90 };
91
92 /* Prototypes for local functions.  */
93
94 static void enable_delete_command (char *, int);
95
96 static void enable_once_command (char *, int);
97
98 static void enable_count_command (char *, int);
99
100 static void disable_command (char *, int);
101
102 static void enable_command (char *, int);
103
104 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
105                                                       void *),
106                                     void *);
107
108 static void ignore_command (char *, int);
109
110 static int breakpoint_re_set_one (void *);
111
112 static void breakpoint_re_set_default (struct breakpoint *);
113
114 static void create_sals_from_address_default (char **,
115                                               struct linespec_result *,
116                                               enum bptype, char *,
117                                               char **);
118
119 static void create_breakpoints_sal_default (struct gdbarch *,
120                                             struct linespec_result *,
121                                             struct linespec_sals *,
122                                             char *, char *, enum bptype,
123                                             enum bpdisp, int, int,
124                                             int,
125                                             const struct breakpoint_ops *,
126                                             int, int, int, unsigned);
127
128 static void decode_linespec_default (struct breakpoint *, char **,
129                                      struct symtabs_and_lines *);
130
131 static void clear_command (char *, int);
132
133 static void catch_command (char *, int);
134
135 static int can_use_hardware_watchpoint (struct value *);
136
137 static void break_command_1 (char *, int, int);
138
139 static void mention (struct breakpoint *);
140
141 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
142                                                                enum bptype,
143                                                                const struct breakpoint_ops *);
144 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
145                                                        const struct symtab_and_line *);
146
147 /* This function is used in gdbtk sources and thus can not be made
148    static.  */
149 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
150                                        struct symtab_and_line,
151                                        enum bptype,
152                                        const struct breakpoint_ops *);
153
154 static struct breakpoint *
155   momentary_breakpoint_from_master (struct breakpoint *orig,
156                                     enum bptype type,
157                                     const struct breakpoint_ops *ops);
158
159 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
160
161 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
162                                             CORE_ADDR bpaddr,
163                                             enum bptype bptype);
164
165 static void describe_other_breakpoints (struct gdbarch *,
166                                         struct program_space *, CORE_ADDR,
167                                         struct obj_section *, int);
168
169 static int breakpoint_address_match (struct address_space *aspace1,
170                                      CORE_ADDR addr1,
171                                      struct address_space *aspace2,
172                                      CORE_ADDR addr2);
173
174 static int watchpoint_locations_match (struct bp_location *loc1,
175                                        struct bp_location *loc2);
176
177 static int breakpoint_location_address_match (struct bp_location *bl,
178                                               struct address_space *aspace,
179                                               CORE_ADDR addr);
180
181 static void breakpoints_info (char *, int);
182
183 static void watchpoints_info (char *, int);
184
185 static int breakpoint_1 (char *, int, 
186                          int (*) (const struct breakpoint *));
187
188 static int breakpoint_cond_eval (void *);
189
190 static void cleanup_executing_breakpoints (void *);
191
192 static void commands_command (char *, int);
193
194 static void condition_command (char *, int);
195
196 typedef enum
197   {
198     mark_inserted,
199     mark_uninserted
200   }
201 insertion_state_t;
202
203 static int remove_breakpoint (struct bp_location *, insertion_state_t);
204 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
205
206 static enum print_stop_action print_bp_stop_message (bpstat bs);
207
208 static int watchpoint_check (void *);
209
210 static void maintenance_info_breakpoints (char *, int);
211
212 static int hw_breakpoint_used_count (void);
213
214 static int hw_watchpoint_use_count (struct breakpoint *);
215
216 static int hw_watchpoint_used_count_others (struct breakpoint *except,
217                                             enum bptype type,
218                                             int *other_type_used);
219
220 static void hbreak_command (char *, int);
221
222 static void thbreak_command (char *, int);
223
224 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
225                                     int count);
226
227 static void stop_command (char *arg, int from_tty);
228
229 static void stopin_command (char *arg, int from_tty);
230
231 static void stopat_command (char *arg, int from_tty);
232
233 static char *ep_parse_optional_if_clause (char **arg);
234
235 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
236                                        char *arg, int tempflag, int from_tty);
237
238 static void tcatch_command (char *arg, int from_tty);
239
240 static void detach_single_step_breakpoints (void);
241
242 static int single_step_breakpoint_inserted_here_p (struct address_space *,
243                                                    CORE_ADDR pc);
244
245 static void free_bp_location (struct bp_location *loc);
246 static void incref_bp_location (struct bp_location *loc);
247 static void decref_bp_location (struct bp_location **loc);
248
249 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
250
251 static void update_global_location_list (int);
252
253 static void update_global_location_list_nothrow (int);
254
255 static int is_hardware_watchpoint (const struct breakpoint *bpt);
256
257 static void insert_breakpoint_locations (void);
258
259 static int syscall_catchpoint_p (struct breakpoint *b);
260
261 static void tracepoints_info (char *, int);
262
263 static void delete_trace_command (char *, int);
264
265 static void enable_trace_command (char *, int);
266
267 static void disable_trace_command (char *, int);
268
269 static void trace_pass_command (char *, int);
270
271 static void set_tracepoint_count (int num);
272
273 static int is_masked_watchpoint (const struct breakpoint *b);
274
275 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
276
277 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
278    otherwise.  */
279
280 static int strace_marker_p (struct breakpoint *b);
281
282 /* The abstract base class all breakpoint_ops structures inherit
283    from.  */
284 struct breakpoint_ops base_breakpoint_ops;
285
286 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
287    that are implemented on top of software or hardware breakpoints
288    (user breakpoints, internal and momentary breakpoints, etc.).  */
289 static struct breakpoint_ops bkpt_base_breakpoint_ops;
290
291 /* Internal breakpoints class type.  */
292 static struct breakpoint_ops internal_breakpoint_ops;
293
294 /* Momentary breakpoints class type.  */
295 static struct breakpoint_ops momentary_breakpoint_ops;
296
297 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
298 static struct breakpoint_ops longjmp_breakpoint_ops;
299
300 /* The breakpoint_ops structure to be used in regular user created
301    breakpoints.  */
302 struct breakpoint_ops bkpt_breakpoint_ops;
303
304 /* Breakpoints set on probes.  */
305 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
306
307 /* Dynamic printf class type.  */
308 static struct breakpoint_ops dprintf_breakpoint_ops;
309
310 /* The style in which to perform a dynamic printf.  This is a user
311    option because different output options have different tradeoffs;
312    if GDB does the printing, there is better error handling if there
313    is a problem with any of the arguments, but using an inferior
314    function lets you have special-purpose printers and sending of
315    output to the same place as compiled-in print functions.  */
316
317 static const char dprintf_style_gdb[] = "gdb";
318 static const char dprintf_style_call[] = "call";
319 static const char dprintf_style_agent[] = "agent";
320 static const char *const dprintf_style_enums[] = {
321   dprintf_style_gdb,
322   dprintf_style_call,
323   dprintf_style_agent,
324   NULL
325 };
326 static const char *dprintf_style = dprintf_style_gdb;
327
328 /* The function to use for dynamic printf if the preferred style is to
329    call into the inferior.  The value is simply a string that is
330    copied into the command, so it can be anything that GDB can
331    evaluate to a callable address, not necessarily a function name.  */
332
333 static char *dprintf_function = "";
334
335 /* The channel to use for dynamic printf if the preferred style is to
336    call into the inferior; if a nonempty string, it will be passed to
337    the call as the first argument, with the format string as the
338    second.  As with the dprintf function, this can be anything that
339    GDB knows how to evaluate, so in addition to common choices like
340    "stderr", this could be an app-specific expression like
341    "mystreams[curlogger]".  */
342
343 static char *dprintf_channel = "";
344
345 /* True if dprintf commands should continue to operate even if GDB
346    has disconnected.  */
347 static int disconnected_dprintf = 1;
348
349 /* A reference-counted struct command_line.  This lets multiple
350    breakpoints share a single command list.  */
351 struct counted_command_line
352 {
353   /* The reference count.  */
354   int refc;
355
356   /* The command list.  */
357   struct command_line *commands;
358 };
359
360 struct command_line *
361 breakpoint_commands (struct breakpoint *b)
362 {
363   return b->commands ? b->commands->commands : NULL;
364 }
365
366 /* Flag indicating that a command has proceeded the inferior past the
367    current breakpoint.  */
368
369 static int breakpoint_proceeded;
370
371 const char *
372 bpdisp_text (enum bpdisp disp)
373 {
374   /* NOTE: the following values are a part of MI protocol and
375      represent values of 'disp' field returned when inferior stops at
376      a breakpoint.  */
377   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
378
379   return bpdisps[(int) disp];
380 }
381
382 /* Prototypes for exported functions.  */
383 /* If FALSE, gdb will not use hardware support for watchpoints, even
384    if such is available.  */
385 static int can_use_hw_watchpoints;
386
387 static void
388 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
389                              struct cmd_list_element *c,
390                              const char *value)
391 {
392   fprintf_filtered (file,
393                     _("Debugger's willingness to use "
394                       "watchpoint hardware is %s.\n"),
395                     value);
396 }
397
398 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
399    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
400    for unrecognized breakpoint locations.
401    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
402 static enum auto_boolean pending_break_support;
403 static void
404 show_pending_break_support (struct ui_file *file, int from_tty,
405                             struct cmd_list_element *c,
406                             const char *value)
407 {
408   fprintf_filtered (file,
409                     _("Debugger's behavior regarding "
410                       "pending breakpoints is %s.\n"),
411                     value);
412 }
413
414 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
415    set with "break" but falling in read-only memory.
416    If 0, gdb will warn about such breakpoints, but won't automatically
417    use hardware breakpoints.  */
418 static int automatic_hardware_breakpoints;
419 static void
420 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
421                                      struct cmd_list_element *c,
422                                      const char *value)
423 {
424   fprintf_filtered (file,
425                     _("Automatic usage of hardware breakpoints is %s.\n"),
426                     value);
427 }
428
429 /* If on, gdb will keep breakpoints inserted even as inferior is
430    stopped, and immediately insert any new breakpoints.  If off, gdb
431    will insert breakpoints into inferior only when resuming it, and
432    will remove breakpoints upon stop.  If auto, GDB will behave as ON
433    if in non-stop mode, and as OFF if all-stop mode.*/
434
435 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
436
437 static void
438 show_always_inserted_mode (struct ui_file *file, int from_tty,
439                      struct cmd_list_element *c, const char *value)
440 {
441   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
442     fprintf_filtered (file,
443                       _("Always inserted breakpoint "
444                         "mode is %s (currently %s).\n"),
445                       value,
446                       breakpoints_always_inserted_mode () ? "on" : "off");
447   else
448     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
449                       value);
450 }
451
452 int
453 breakpoints_always_inserted_mode (void)
454 {
455   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
456           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
457 }
458
459 static const char condition_evaluation_both[] = "host or target";
460
461 /* Modes for breakpoint condition evaluation.  */
462 static const char condition_evaluation_auto[] = "auto";
463 static const char condition_evaluation_host[] = "host";
464 static const char condition_evaluation_target[] = "target";
465 static const char *const condition_evaluation_enums[] = {
466   condition_evaluation_auto,
467   condition_evaluation_host,
468   condition_evaluation_target,
469   NULL
470 };
471
472 /* Global that holds the current mode for breakpoint condition evaluation.  */
473 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
474
475 /* Global that we use to display information to the user (gets its value from
476    condition_evaluation_mode_1.  */
477 static const char *condition_evaluation_mode = condition_evaluation_auto;
478
479 /* Translate a condition evaluation mode MODE into either "host"
480    or "target".  This is used mostly to translate from "auto" to the
481    real setting that is being used.  It returns the translated
482    evaluation mode.  */
483
484 static const char *
485 translate_condition_evaluation_mode (const char *mode)
486 {
487   if (mode == condition_evaluation_auto)
488     {
489       if (target_supports_evaluation_of_breakpoint_conditions ())
490         return condition_evaluation_target;
491       else
492         return condition_evaluation_host;
493     }
494   else
495     return mode;
496 }
497
498 /* Discovers what condition_evaluation_auto translates to.  */
499
500 static const char *
501 breakpoint_condition_evaluation_mode (void)
502 {
503   return translate_condition_evaluation_mode (condition_evaluation_mode);
504 }
505
506 /* Return true if GDB should evaluate breakpoint conditions or false
507    otherwise.  */
508
509 static int
510 gdb_evaluates_breakpoint_condition_p (void)
511 {
512   const char *mode = breakpoint_condition_evaluation_mode ();
513
514   return (mode == condition_evaluation_host);
515 }
516
517 void _initialize_breakpoint (void);
518
519 /* Are we executing breakpoint commands?  */
520 static int executing_breakpoint_commands;
521
522 /* Are overlay event breakpoints enabled? */
523 static int overlay_events_enabled;
524
525 /* See description in breakpoint.h. */
526 int target_exact_watchpoints = 0;
527
528 /* Walk the following statement or block through all breakpoints.
529    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
530    current breakpoint.  */
531
532 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
533
534 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
535         for (B = breakpoint_chain;      \
536              B ? (TMP=B->next, 1): 0;   \
537              B = TMP)
538
539 /* Similar iterator for the low-level breakpoints.  SAFE variant is
540    not provided so update_global_location_list must not be called
541    while executing the block of ALL_BP_LOCATIONS.  */
542
543 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
544         for (BP_TMP = bp_location;                                      \
545              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
546              BP_TMP++)
547
548 /* Iterates through locations with address ADDRESS for the currently selected
549    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
550    to where the loop should start from.
551    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
552    appropriate location to start with.  */
553
554 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
555         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
556              BP_LOCP_TMP = BP_LOCP_START;                               \
557              BP_LOCP_START                                              \
558              && (BP_LOCP_TMP < bp_location + bp_location_count          \
559              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
560              BP_LOCP_TMP++)
561
562 /* Iterator for tracepoints only.  */
563
564 #define ALL_TRACEPOINTS(B)  \
565   for (B = breakpoint_chain; B; B = B->next)  \
566     if (is_tracepoint (B))
567
568 /* Chains of all breakpoints defined.  */
569
570 struct breakpoint *breakpoint_chain;
571
572 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
573
574 static struct bp_location **bp_location;
575
576 /* Number of elements of BP_LOCATION.  */
577
578 static unsigned bp_location_count;
579
580 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
581    ADDRESS for the current elements of BP_LOCATION which get a valid
582    result from bp_location_has_shadow.  You can use it for roughly
583    limiting the subrange of BP_LOCATION to scan for shadow bytes for
584    an address you need to read.  */
585
586 static CORE_ADDR bp_location_placed_address_before_address_max;
587
588 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
589    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
590    BP_LOCATION which get a valid result from bp_location_has_shadow.
591    You can use it for roughly limiting the subrange of BP_LOCATION to
592    scan for shadow bytes for an address you need to read.  */
593
594 static CORE_ADDR bp_location_shadow_len_after_address_max;
595
596 /* The locations that no longer correspond to any breakpoint, unlinked
597    from bp_location array, but for which a hit may still be reported
598    by a target.  */
599 VEC(bp_location_p) *moribund_locations = NULL;
600
601 /* Number of last breakpoint made.  */
602
603 static int breakpoint_count;
604
605 /* The value of `breakpoint_count' before the last command that
606    created breakpoints.  If the last (break-like) command created more
607    than one breakpoint, then the difference between BREAKPOINT_COUNT
608    and PREV_BREAKPOINT_COUNT is more than one.  */
609 static int prev_breakpoint_count;
610
611 /* Number of last tracepoint made.  */
612
613 static int tracepoint_count;
614
615 static struct cmd_list_element *breakpoint_set_cmdlist;
616 static struct cmd_list_element *breakpoint_show_cmdlist;
617 struct cmd_list_element *save_cmdlist;
618
619 /* Return whether a breakpoint is an active enabled breakpoint.  */
620 static int
621 breakpoint_enabled (struct breakpoint *b)
622 {
623   return (b->enable_state == bp_enabled);
624 }
625
626 /* Set breakpoint count to NUM.  */
627
628 static void
629 set_breakpoint_count (int num)
630 {
631   prev_breakpoint_count = breakpoint_count;
632   breakpoint_count = num;
633   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
634 }
635
636 /* Used by `start_rbreak_breakpoints' below, to record the current
637    breakpoint count before "rbreak" creates any breakpoint.  */
638 static int rbreak_start_breakpoint_count;
639
640 /* Called at the start an "rbreak" command to record the first
641    breakpoint made.  */
642
643 void
644 start_rbreak_breakpoints (void)
645 {
646   rbreak_start_breakpoint_count = breakpoint_count;
647 }
648
649 /* Called at the end of an "rbreak" command to record the last
650    breakpoint made.  */
651
652 void
653 end_rbreak_breakpoints (void)
654 {
655   prev_breakpoint_count = rbreak_start_breakpoint_count;
656 }
657
658 /* Used in run_command to zero the hit count when a new run starts.  */
659
660 void
661 clear_breakpoint_hit_counts (void)
662 {
663   struct breakpoint *b;
664
665   ALL_BREAKPOINTS (b)
666     b->hit_count = 0;
667 }
668
669 /* Allocate a new counted_command_line with reference count of 1.
670    The new structure owns COMMANDS.  */
671
672 static struct counted_command_line *
673 alloc_counted_command_line (struct command_line *commands)
674 {
675   struct counted_command_line *result
676     = xmalloc (sizeof (struct counted_command_line));
677
678   result->refc = 1;
679   result->commands = commands;
680   return result;
681 }
682
683 /* Increment reference count.  This does nothing if CMD is NULL.  */
684
685 static void
686 incref_counted_command_line (struct counted_command_line *cmd)
687 {
688   if (cmd)
689     ++cmd->refc;
690 }
691
692 /* Decrement reference count.  If the reference count reaches 0,
693    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
694    nothing if *CMDP is NULL.  */
695
696 static void
697 decref_counted_command_line (struct counted_command_line **cmdp)
698 {
699   if (*cmdp)
700     {
701       if (--(*cmdp)->refc == 0)
702         {
703           free_command_lines (&(*cmdp)->commands);
704           xfree (*cmdp);
705         }
706       *cmdp = NULL;
707     }
708 }
709
710 /* A cleanup function that calls decref_counted_command_line.  */
711
712 static void
713 do_cleanup_counted_command_line (void *arg)
714 {
715   decref_counted_command_line (arg);
716 }
717
718 /* Create a cleanup that calls decref_counted_command_line on the
719    argument.  */
720
721 static struct cleanup *
722 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
723 {
724   return make_cleanup (do_cleanup_counted_command_line, cmdp);
725 }
726
727 \f
728 /* Return the breakpoint with the specified number, or NULL
729    if the number does not refer to an existing breakpoint.  */
730
731 struct breakpoint *
732 get_breakpoint (int num)
733 {
734   struct breakpoint *b;
735
736   ALL_BREAKPOINTS (b)
737     if (b->number == num)
738       return b;
739   
740   return NULL;
741 }
742
743 \f
744
745 /* Mark locations as "conditions have changed" in case the target supports
746    evaluating conditions on its side.  */
747
748 static void
749 mark_breakpoint_modified (struct breakpoint *b)
750 {
751   struct bp_location *loc;
752
753   /* This is only meaningful if the target is
754      evaluating conditions and if the user has
755      opted for condition evaluation on the target's
756      side.  */
757   if (gdb_evaluates_breakpoint_condition_p ()
758       || !target_supports_evaluation_of_breakpoint_conditions ())
759     return;
760
761   if (!is_breakpoint (b))
762     return;
763
764   for (loc = b->loc; loc; loc = loc->next)
765     loc->condition_changed = condition_modified;
766 }
767
768 /* Mark location as "conditions have changed" in case the target supports
769    evaluating conditions on its side.  */
770
771 static void
772 mark_breakpoint_location_modified (struct bp_location *loc)
773 {
774   /* This is only meaningful if the target is
775      evaluating conditions and if the user has
776      opted for condition evaluation on the target's
777      side.  */
778   if (gdb_evaluates_breakpoint_condition_p ()
779       || !target_supports_evaluation_of_breakpoint_conditions ())
780
781     return;
782
783   if (!is_breakpoint (loc->owner))
784     return;
785
786   loc->condition_changed = condition_modified;
787 }
788
789 /* Sets the condition-evaluation mode using the static global
790    condition_evaluation_mode.  */
791
792 static void
793 set_condition_evaluation_mode (char *args, int from_tty,
794                                struct cmd_list_element *c)
795 {
796   const char *old_mode, *new_mode;
797
798   if ((condition_evaluation_mode_1 == condition_evaluation_target)
799       && !target_supports_evaluation_of_breakpoint_conditions ())
800     {
801       condition_evaluation_mode_1 = condition_evaluation_mode;
802       warning (_("Target does not support breakpoint condition evaluation.\n"
803                  "Using host evaluation mode instead."));
804       return;
805     }
806
807   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
808   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
809
810   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
811      settings was "auto".  */
812   condition_evaluation_mode = condition_evaluation_mode_1;
813
814   /* Only update the mode if the user picked a different one.  */
815   if (new_mode != old_mode)
816     {
817       struct bp_location *loc, **loc_tmp;
818       /* If the user switched to a different evaluation mode, we
819          need to synch the changes with the target as follows:
820
821          "host" -> "target": Send all (valid) conditions to the target.
822          "target" -> "host": Remove all the conditions from the target.
823       */
824
825       if (new_mode == condition_evaluation_target)
826         {
827           /* Mark everything modified and synch conditions with the
828              target.  */
829           ALL_BP_LOCATIONS (loc, loc_tmp)
830             mark_breakpoint_location_modified (loc);
831         }
832       else
833         {
834           /* Manually mark non-duplicate locations to synch conditions
835              with the target.  We do this to remove all the conditions the
836              target knows about.  */
837           ALL_BP_LOCATIONS (loc, loc_tmp)
838             if (is_breakpoint (loc->owner) && loc->inserted)
839               loc->needs_update = 1;
840         }
841
842       /* Do the update.  */
843       update_global_location_list (1);
844     }
845
846   return;
847 }
848
849 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
850    what "auto" is translating to.  */
851
852 static void
853 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
854                                 struct cmd_list_element *c, const char *value)
855 {
856   if (condition_evaluation_mode == condition_evaluation_auto)
857     fprintf_filtered (file,
858                       _("Breakpoint condition evaluation "
859                         "mode is %s (currently %s).\n"),
860                       value,
861                       breakpoint_condition_evaluation_mode ());
862   else
863     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
864                       value);
865 }
866
867 /* A comparison function for bp_location AP and BP that is used by
868    bsearch.  This comparison function only cares about addresses, unlike
869    the more general bp_location_compare function.  */
870
871 static int
872 bp_location_compare_addrs (const void *ap, const void *bp)
873 {
874   struct bp_location *a = *(void **) ap;
875   struct bp_location *b = *(void **) bp;
876
877   if (a->address == b->address)
878     return 0;
879   else
880     return ((a->address > b->address) - (a->address < b->address));
881 }
882
883 /* Helper function to skip all bp_locations with addresses
884    less than ADDRESS.  It returns the first bp_location that
885    is greater than or equal to ADDRESS.  If none is found, just
886    return NULL.  */
887
888 static struct bp_location **
889 get_first_locp_gte_addr (CORE_ADDR address)
890 {
891   struct bp_location dummy_loc;
892   struct bp_location *dummy_locp = &dummy_loc;
893   struct bp_location **locp_found = NULL;
894
895   /* Initialize the dummy location's address field.  */
896   memset (&dummy_loc, 0, sizeof (struct bp_location));
897   dummy_loc.address = address;
898
899   /* Find a close match to the first location at ADDRESS.  */
900   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
901                         sizeof (struct bp_location **),
902                         bp_location_compare_addrs);
903
904   /* Nothing was found, nothing left to do.  */
905   if (locp_found == NULL)
906     return NULL;
907
908   /* We may have found a location that is at ADDRESS but is not the first in the
909      location's list.  Go backwards (if possible) and locate the first one.  */
910   while ((locp_found - 1) >= bp_location
911          && (*(locp_found - 1))->address == address)
912     locp_found--;
913
914   return locp_found;
915 }
916
917 void
918 set_breakpoint_condition (struct breakpoint *b, char *exp,
919                           int from_tty)
920 {
921   xfree (b->cond_string);
922   b->cond_string = NULL;
923
924   if (is_watchpoint (b))
925     {
926       struct watchpoint *w = (struct watchpoint *) b;
927
928       xfree (w->cond_exp);
929       w->cond_exp = NULL;
930     }
931   else
932     {
933       struct bp_location *loc;
934
935       for (loc = b->loc; loc; loc = loc->next)
936         {
937           xfree (loc->cond);
938           loc->cond = NULL;
939
940           /* No need to free the condition agent expression
941              bytecode (if we have one).  We will handle this
942              when we go through update_global_location_list.  */
943         }
944     }
945
946   if (*exp == 0)
947     {
948       if (from_tty)
949         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
950     }
951   else
952     {
953       char *arg = exp;
954
955       /* I don't know if it matters whether this is the string the user
956          typed in or the decompiled expression.  */
957       b->cond_string = xstrdup (arg);
958       b->condition_not_parsed = 0;
959
960       if (is_watchpoint (b))
961         {
962           struct watchpoint *w = (struct watchpoint *) b;
963
964           innermost_block = NULL;
965           arg = exp;
966           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
967           if (*arg)
968             error (_("Junk at end of expression"));
969           w->cond_exp_valid_block = innermost_block;
970         }
971       else
972         {
973           struct bp_location *loc;
974
975           for (loc = b->loc; loc; loc = loc->next)
976             {
977               arg = exp;
978               loc->cond =
979                 parse_exp_1 (&arg, loc->address,
980                              block_for_pc (loc->address), 0);
981               if (*arg)
982                 error (_("Junk at end of expression"));
983             }
984         }
985     }
986   mark_breakpoint_modified (b);
987
988   annotate_breakpoints_changed ();
989   observer_notify_breakpoint_modified (b);
990 }
991
992 /* Completion for the "condition" command.  */
993
994 static VEC (char_ptr) *
995 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
996 {
997   char *space;
998
999   text = skip_spaces (text);
1000   space = skip_to_space (text);
1001   if (*space == '\0')
1002     {
1003       int len;
1004       struct breakpoint *b;
1005       VEC (char_ptr) *result = NULL;
1006
1007       if (text[0] == '$')
1008         {
1009           /* We don't support completion of history indices.  */
1010           if (isdigit (text[1]))
1011             return NULL;
1012           return complete_internalvar (&text[1]);
1013         }
1014
1015       /* We're completing the breakpoint number.  */
1016       len = strlen (text);
1017
1018       ALL_BREAKPOINTS (b)
1019       {
1020         int single = b->loc->next == NULL;
1021         struct bp_location *loc;
1022         int count = 1;
1023
1024         for (loc = b->loc; loc; loc = loc->next)
1025           {
1026             char location[50];
1027
1028             if (single)
1029               xsnprintf (location, sizeof (location), "%d", b->number);
1030             else
1031               xsnprintf (location, sizeof (location),  "%d.%d", b->number,
1032                          count);
1033
1034             if (strncmp (location, text, len) == 0)
1035               VEC_safe_push (char_ptr, result, xstrdup (location));
1036
1037             ++count;
1038           }
1039       }
1040
1041       return result;
1042     }
1043
1044   /* We're completing the expression part.  */
1045   text = skip_spaces (space);
1046   return expression_completer (cmd, text, word);
1047 }
1048
1049 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1050
1051 static void
1052 condition_command (char *arg, int from_tty)
1053 {
1054   struct breakpoint *b;
1055   char *p;
1056   int bnum;
1057
1058   if (arg == 0)
1059     error_no_arg (_("breakpoint number"));
1060
1061   p = arg;
1062   bnum = get_number (&p);
1063   if (bnum == 0)
1064     error (_("Bad breakpoint argument: '%s'"), arg);
1065
1066   ALL_BREAKPOINTS (b)
1067     if (b->number == bnum)
1068       {
1069         /* Check if this breakpoint has a Python object assigned to
1070            it, and if it has a definition of the "stop"
1071            method.  This method and conditions entered into GDB from
1072            the CLI are mutually exclusive.  */
1073         if (b->py_bp_object
1074             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1075           error (_("Cannot set a condition where a Python 'stop' "
1076                    "method has been defined in the breakpoint."));
1077         set_breakpoint_condition (b, p, from_tty);
1078
1079         if (is_breakpoint (b))
1080           update_global_location_list (1);
1081
1082         return;
1083       }
1084
1085   error (_("No breakpoint number %d."), bnum);
1086 }
1087
1088 /* Check that COMMAND do not contain commands that are suitable
1089    only for tracepoints and not suitable for ordinary breakpoints.
1090    Throw if any such commands is found.  */
1091
1092 static void
1093 check_no_tracepoint_commands (struct command_line *commands)
1094 {
1095   struct command_line *c;
1096
1097   for (c = commands; c; c = c->next)
1098     {
1099       int i;
1100
1101       if (c->control_type == while_stepping_control)
1102         error (_("The 'while-stepping' command can "
1103                  "only be used for tracepoints"));
1104
1105       for (i = 0; i < c->body_count; ++i)
1106         check_no_tracepoint_commands ((c->body_list)[i]);
1107
1108       /* Not that command parsing removes leading whitespace and comment
1109          lines and also empty lines.  So, we only need to check for
1110          command directly.  */
1111       if (strstr (c->line, "collect ") == c->line)
1112         error (_("The 'collect' command can only be used for tracepoints"));
1113
1114       if (strstr (c->line, "teval ") == c->line)
1115         error (_("The 'teval' command can only be used for tracepoints"));
1116     }
1117 }
1118
1119 /* Encapsulate tests for different types of tracepoints.  */
1120
1121 static int
1122 is_tracepoint_type (enum bptype type)
1123 {
1124   return (type == bp_tracepoint
1125           || type == bp_fast_tracepoint
1126           || type == bp_static_tracepoint);
1127 }
1128
1129 int
1130 is_tracepoint (const struct breakpoint *b)
1131 {
1132   return is_tracepoint_type (b->type);
1133 }
1134
1135 /* A helper function that validates that COMMANDS are valid for a
1136    breakpoint.  This function will throw an exception if a problem is
1137    found.  */
1138
1139 static void
1140 validate_commands_for_breakpoint (struct breakpoint *b,
1141                                   struct command_line *commands)
1142 {
1143   if (is_tracepoint (b))
1144     {
1145       /* We need to verify that each top-level element of commands is
1146          valid for tracepoints, that there's at most one
1147          while-stepping element, and that while-stepping's body has
1148          valid tracing commands excluding nested while-stepping.  */
1149       struct command_line *c;
1150       struct command_line *while_stepping = 0;
1151       for (c = commands; c; c = c->next)
1152         {
1153           if (c->control_type == while_stepping_control)
1154             {
1155               if (b->type == bp_fast_tracepoint)
1156                 error (_("The 'while-stepping' command "
1157                          "cannot be used for fast tracepoint"));
1158               else if (b->type == bp_static_tracepoint)
1159                 error (_("The 'while-stepping' command "
1160                          "cannot be used for static tracepoint"));
1161
1162               if (while_stepping)
1163                 error (_("The 'while-stepping' command "
1164                          "can be used only once"));
1165               else
1166                 while_stepping = c;
1167             }
1168         }
1169       if (while_stepping)
1170         {
1171           struct command_line *c2;
1172
1173           gdb_assert (while_stepping->body_count == 1);
1174           c2 = while_stepping->body_list[0];
1175           for (; c2; c2 = c2->next)
1176             {
1177               if (c2->control_type == while_stepping_control)
1178                 error (_("The 'while-stepping' command cannot be nested"));
1179             }
1180         }
1181     }
1182   else
1183     {
1184       check_no_tracepoint_commands (commands);
1185     }
1186 }
1187
1188 /* Return a vector of all the static tracepoints set at ADDR.  The
1189    caller is responsible for releasing the vector.  */
1190
1191 VEC(breakpoint_p) *
1192 static_tracepoints_here (CORE_ADDR addr)
1193 {
1194   struct breakpoint *b;
1195   VEC(breakpoint_p) *found = 0;
1196   struct bp_location *loc;
1197
1198   ALL_BREAKPOINTS (b)
1199     if (b->type == bp_static_tracepoint)
1200       {
1201         for (loc = b->loc; loc; loc = loc->next)
1202           if (loc->address == addr)
1203             VEC_safe_push(breakpoint_p, found, b);
1204       }
1205
1206   return found;
1207 }
1208
1209 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1210    validate that only allowed commands are included.  */
1211
1212 void
1213 breakpoint_set_commands (struct breakpoint *b, 
1214                          struct command_line *commands)
1215 {
1216   validate_commands_for_breakpoint (b, commands);
1217
1218   decref_counted_command_line (&b->commands);
1219   b->commands = alloc_counted_command_line (commands);
1220   annotate_breakpoints_changed ();
1221   observer_notify_breakpoint_modified (b);
1222 }
1223
1224 /* Set the internal `silent' flag on the breakpoint.  Note that this
1225    is not the same as the "silent" that may appear in the breakpoint's
1226    commands.  */
1227
1228 void
1229 breakpoint_set_silent (struct breakpoint *b, int silent)
1230 {
1231   int old_silent = b->silent;
1232
1233   b->silent = silent;
1234   if (old_silent != silent)
1235     observer_notify_breakpoint_modified (b);
1236 }
1237
1238 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1239    breakpoint work for any thread.  */
1240
1241 void
1242 breakpoint_set_thread (struct breakpoint *b, int thread)
1243 {
1244   int old_thread = b->thread;
1245
1246   b->thread = thread;
1247   if (old_thread != thread)
1248     observer_notify_breakpoint_modified (b);
1249 }
1250
1251 /* Set the task for this breakpoint.  If TASK is 0, make the
1252    breakpoint work for any task.  */
1253
1254 void
1255 breakpoint_set_task (struct breakpoint *b, int task)
1256 {
1257   int old_task = b->task;
1258
1259   b->task = task;
1260   if (old_task != task)
1261     observer_notify_breakpoint_modified (b);
1262 }
1263
1264 void
1265 check_tracepoint_command (char *line, void *closure)
1266 {
1267   struct breakpoint *b = closure;
1268
1269   validate_actionline (&line, b);
1270 }
1271
1272 /* A structure used to pass information through
1273    map_breakpoint_numbers.  */
1274
1275 struct commands_info
1276 {
1277   /* True if the command was typed at a tty.  */
1278   int from_tty;
1279
1280   /* The breakpoint range spec.  */
1281   char *arg;
1282
1283   /* Non-NULL if the body of the commands are being read from this
1284      already-parsed command.  */
1285   struct command_line *control;
1286
1287   /* The command lines read from the user, or NULL if they have not
1288      yet been read.  */
1289   struct counted_command_line *cmd;
1290 };
1291
1292 /* A callback for map_breakpoint_numbers that sets the commands for
1293    commands_command.  */
1294
1295 static void
1296 do_map_commands_command (struct breakpoint *b, void *data)
1297 {
1298   struct commands_info *info = data;
1299
1300   if (info->cmd == NULL)
1301     {
1302       struct command_line *l;
1303
1304       if (info->control != NULL)
1305         l = copy_command_lines (info->control->body_list[0]);
1306       else
1307         {
1308           struct cleanup *old_chain;
1309           char *str;
1310
1311           str = xstrprintf (_("Type commands for breakpoint(s) "
1312                               "%s, one per line."),
1313                             info->arg);
1314
1315           old_chain = make_cleanup (xfree, str);
1316
1317           l = read_command_lines (str,
1318                                   info->from_tty, 1,
1319                                   (is_tracepoint (b)
1320                                    ? check_tracepoint_command : 0),
1321                                   b);
1322
1323           do_cleanups (old_chain);
1324         }
1325
1326       info->cmd = alloc_counted_command_line (l);
1327     }
1328
1329   /* If a breakpoint was on the list more than once, we don't need to
1330      do anything.  */
1331   if (b->commands != info->cmd)
1332     {
1333       validate_commands_for_breakpoint (b, info->cmd->commands);
1334       incref_counted_command_line (info->cmd);
1335       decref_counted_command_line (&b->commands);
1336       b->commands = info->cmd;
1337       annotate_breakpoints_changed ();
1338       observer_notify_breakpoint_modified (b);
1339     }
1340 }
1341
1342 static void
1343 commands_command_1 (char *arg, int from_tty, 
1344                     struct command_line *control)
1345 {
1346   struct cleanup *cleanups;
1347   struct commands_info info;
1348
1349   info.from_tty = from_tty;
1350   info.control = control;
1351   info.cmd = NULL;
1352   /* If we read command lines from the user, then `info' will hold an
1353      extra reference to the commands that we must clean up.  */
1354   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1355
1356   if (arg == NULL || !*arg)
1357     {
1358       if (breakpoint_count - prev_breakpoint_count > 1)
1359         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1360                           breakpoint_count);
1361       else if (breakpoint_count > 0)
1362         arg = xstrprintf ("%d", breakpoint_count);
1363       else
1364         {
1365           /* So that we don't try to free the incoming non-NULL
1366              argument in the cleanup below.  Mapping breakpoint
1367              numbers will fail in this case.  */
1368           arg = NULL;
1369         }
1370     }
1371   else
1372     /* The command loop has some static state, so we need to preserve
1373        our argument.  */
1374     arg = xstrdup (arg);
1375
1376   if (arg != NULL)
1377     make_cleanup (xfree, arg);
1378
1379   info.arg = arg;
1380
1381   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1382
1383   if (info.cmd == NULL)
1384     error (_("No breakpoints specified."));
1385
1386   do_cleanups (cleanups);
1387 }
1388
1389 static void
1390 commands_command (char *arg, int from_tty)
1391 {
1392   commands_command_1 (arg, from_tty, NULL);
1393 }
1394
1395 /* Like commands_command, but instead of reading the commands from
1396    input stream, takes them from an already parsed command structure.
1397
1398    This is used by cli-script.c to DTRT with breakpoint commands
1399    that are part of if and while bodies.  */
1400 enum command_control_type
1401 commands_from_control_command (char *arg, struct command_line *cmd)
1402 {
1403   commands_command_1 (arg, 0, cmd);
1404   return simple_control;
1405 }
1406
1407 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1408
1409 static int
1410 bp_location_has_shadow (struct bp_location *bl)
1411 {
1412   if (bl->loc_type != bp_loc_software_breakpoint)
1413     return 0;
1414   if (!bl->inserted)
1415     return 0;
1416   if (bl->target_info.shadow_len == 0)
1417     /* BL isn't valid, or doesn't shadow memory.  */
1418     return 0;
1419   return 1;
1420 }
1421
1422 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1423    by replacing any memory breakpoints with their shadowed contents.
1424
1425    If READBUF is not NULL, this buffer must not overlap with any of
1426    the breakpoint location's shadow_contents buffers.  Otherwise,
1427    a failed assertion internal error will be raised.
1428
1429    The range of shadowed area by each bp_location is:
1430      bl->address - bp_location_placed_address_before_address_max
1431      up to bl->address + bp_location_shadow_len_after_address_max
1432    The range we were requested to resolve shadows for is:
1433      memaddr ... memaddr + len
1434    Thus the safe cutoff boundaries for performance optimization are
1435      memaddr + len <= (bl->address
1436                        - bp_location_placed_address_before_address_max)
1437    and:
1438      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1439
1440 void
1441 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1442                         const gdb_byte *writebuf_org,
1443                         ULONGEST memaddr, LONGEST len)
1444 {
1445   /* Left boundary, right boundary and median element of our binary
1446      search.  */
1447   unsigned bc_l, bc_r, bc;
1448
1449   /* Find BC_L which is a leftmost element which may affect BUF
1450      content.  It is safe to report lower value but a failure to
1451      report higher one.  */
1452
1453   bc_l = 0;
1454   bc_r = bp_location_count;
1455   while (bc_l + 1 < bc_r)
1456     {
1457       struct bp_location *bl;
1458
1459       bc = (bc_l + bc_r) / 2;
1460       bl = bp_location[bc];
1461
1462       /* Check first BL->ADDRESS will not overflow due to the added
1463          constant.  Then advance the left boundary only if we are sure
1464          the BC element can in no way affect the BUF content (MEMADDR
1465          to MEMADDR + LEN range).
1466
1467          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1468          offset so that we cannot miss a breakpoint with its shadow
1469          range tail still reaching MEMADDR.  */
1470
1471       if ((bl->address + bp_location_shadow_len_after_address_max
1472            >= bl->address)
1473           && (bl->address + bp_location_shadow_len_after_address_max
1474               <= memaddr))
1475         bc_l = bc;
1476       else
1477         bc_r = bc;
1478     }
1479
1480   /* Due to the binary search above, we need to make sure we pick the
1481      first location that's at BC_L's address.  E.g., if there are
1482      multiple locations at the same address, BC_L may end up pointing
1483      at a duplicate location, and miss the "master"/"inserted"
1484      location.  Say, given locations L1, L2 and L3 at addresses A and
1485      B:
1486
1487       L1@A, L2@A, L3@B, ...
1488
1489      BC_L could end up pointing at location L2, while the "master"
1490      location could be L1.  Since the `loc->inserted' flag is only set
1491      on "master" locations, we'd forget to restore the shadow of L1
1492      and L2.  */
1493   while (bc_l > 0
1494          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1495     bc_l--;
1496
1497   /* Now do full processing of the found relevant range of elements.  */
1498
1499   for (bc = bc_l; bc < bp_location_count; bc++)
1500   {
1501     struct bp_location *bl = bp_location[bc];
1502     CORE_ADDR bp_addr = 0;
1503     int bp_size = 0;
1504     int bptoffset = 0;
1505
1506     /* bp_location array has BL->OWNER always non-NULL.  */
1507     if (bl->owner->type == bp_none)
1508       warning (_("reading through apparently deleted breakpoint #%d?"),
1509                bl->owner->number);
1510
1511     /* Performance optimization: any further element can no longer affect BUF
1512        content.  */
1513
1514     if (bl->address >= bp_location_placed_address_before_address_max
1515         && memaddr + len <= (bl->address
1516                              - bp_location_placed_address_before_address_max))
1517       break;
1518
1519     if (!bp_location_has_shadow (bl))
1520       continue;
1521     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1522                                    current_program_space->aspace, 0))
1523       continue;
1524
1525     /* Addresses and length of the part of the breakpoint that
1526        we need to copy.  */
1527     bp_addr = bl->target_info.placed_address;
1528     bp_size = bl->target_info.shadow_len;
1529
1530     if (bp_addr + bp_size <= memaddr)
1531       /* The breakpoint is entirely before the chunk of memory we
1532          are reading.  */
1533       continue;
1534
1535     if (bp_addr >= memaddr + len)
1536       /* The breakpoint is entirely after the chunk of memory we are
1537          reading.  */
1538       continue;
1539
1540     /* Offset within shadow_contents.  */
1541     if (bp_addr < memaddr)
1542       {
1543         /* Only copy the second part of the breakpoint.  */
1544         bp_size -= memaddr - bp_addr;
1545         bptoffset = memaddr - bp_addr;
1546         bp_addr = memaddr;
1547       }
1548
1549     if (bp_addr + bp_size > memaddr + len)
1550       {
1551         /* Only copy the first part of the breakpoint.  */
1552         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1553       }
1554
1555     if (readbuf != NULL)
1556       {
1557         /* Verify that the readbuf buffer does not overlap with
1558            the shadow_contents buffer.  */
1559         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1560                     || readbuf >= (bl->target_info.shadow_contents
1561                                    + bl->target_info.shadow_len));
1562
1563         /* Update the read buffer with this inserted breakpoint's
1564            shadow.  */
1565         memcpy (readbuf + bp_addr - memaddr,
1566                 bl->target_info.shadow_contents + bptoffset, bp_size);
1567       }
1568     else
1569       {
1570         struct gdbarch *gdbarch = bl->gdbarch;
1571         const unsigned char *bp;
1572         CORE_ADDR placed_address = bl->target_info.placed_address;
1573         unsigned placed_size = bl->target_info.placed_size;
1574
1575         /* Update the shadow with what we want to write to memory.  */
1576         memcpy (bl->target_info.shadow_contents + bptoffset,
1577                 writebuf_org + bp_addr - memaddr, bp_size);
1578
1579         /* Determine appropriate breakpoint contents and size for this
1580            address.  */
1581         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1582
1583         /* Update the final write buffer with this inserted
1584            breakpoint's INSN.  */
1585         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1586       }
1587   }
1588 }
1589 \f
1590
1591 /* Return true if BPT is either a software breakpoint or a hardware
1592    breakpoint.  */
1593
1594 int
1595 is_breakpoint (const struct breakpoint *bpt)
1596 {
1597   return (bpt->type == bp_breakpoint
1598           || bpt->type == bp_hardware_breakpoint
1599           || bpt->type == bp_dprintf);
1600 }
1601
1602 /* Return true if BPT is of any hardware watchpoint kind.  */
1603
1604 static int
1605 is_hardware_watchpoint (const struct breakpoint *bpt)
1606 {
1607   return (bpt->type == bp_hardware_watchpoint
1608           || bpt->type == bp_read_watchpoint
1609           || bpt->type == bp_access_watchpoint);
1610 }
1611
1612 /* Return true if BPT is of any watchpoint kind, hardware or
1613    software.  */
1614
1615 int
1616 is_watchpoint (const struct breakpoint *bpt)
1617 {
1618   return (is_hardware_watchpoint (bpt)
1619           || bpt->type == bp_watchpoint);
1620 }
1621
1622 /* Returns true if the current thread and its running state are safe
1623    to evaluate or update watchpoint B.  Watchpoints on local
1624    expressions need to be evaluated in the context of the thread that
1625    was current when the watchpoint was created, and, that thread needs
1626    to be stopped to be able to select the correct frame context.
1627    Watchpoints on global expressions can be evaluated on any thread,
1628    and in any state.  It is presently left to the target allowing
1629    memory accesses when threads are running.  */
1630
1631 static int
1632 watchpoint_in_thread_scope (struct watchpoint *b)
1633 {
1634   return (b->base.pspace == current_program_space
1635           && (ptid_equal (b->watchpoint_thread, null_ptid)
1636               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1637                   && !is_executing (inferior_ptid))));
1638 }
1639
1640 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1641    associated bp_watchpoint_scope breakpoint.  */
1642
1643 static void
1644 watchpoint_del_at_next_stop (struct watchpoint *w)
1645 {
1646   struct breakpoint *b = &w->base;
1647
1648   if (b->related_breakpoint != b)
1649     {
1650       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1651       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1652       b->related_breakpoint->disposition = disp_del_at_next_stop;
1653       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1654       b->related_breakpoint = b;
1655     }
1656   b->disposition = disp_del_at_next_stop;
1657 }
1658
1659 /* Assuming that B is a watchpoint:
1660    - Reparse watchpoint expression, if REPARSE is non-zero
1661    - Evaluate expression and store the result in B->val
1662    - Evaluate the condition if there is one, and store the result
1663      in b->loc->cond.
1664    - Update the list of values that must be watched in B->loc.
1665
1666    If the watchpoint disposition is disp_del_at_next_stop, then do
1667    nothing.  If this is local watchpoint that is out of scope, delete
1668    it.
1669
1670    Even with `set breakpoint always-inserted on' the watchpoints are
1671    removed + inserted on each stop here.  Normal breakpoints must
1672    never be removed because they might be missed by a running thread
1673    when debugging in non-stop mode.  On the other hand, hardware
1674    watchpoints (is_hardware_watchpoint; processed here) are specific
1675    to each LWP since they are stored in each LWP's hardware debug
1676    registers.  Therefore, such LWP must be stopped first in order to
1677    be able to modify its hardware watchpoints.
1678
1679    Hardware watchpoints must be reset exactly once after being
1680    presented to the user.  It cannot be done sooner, because it would
1681    reset the data used to present the watchpoint hit to the user.  And
1682    it must not be done later because it could display the same single
1683    watchpoint hit during multiple GDB stops.  Note that the latter is
1684    relevant only to the hardware watchpoint types bp_read_watchpoint
1685    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1686    not user-visible - its hit is suppressed if the memory content has
1687    not changed.
1688
1689    The following constraints influence the location where we can reset
1690    hardware watchpoints:
1691
1692    * target_stopped_by_watchpoint and target_stopped_data_address are
1693      called several times when GDB stops.
1694
1695    [linux] 
1696    * Multiple hardware watchpoints can be hit at the same time,
1697      causing GDB to stop.  GDB only presents one hardware watchpoint
1698      hit at a time as the reason for stopping, and all the other hits
1699      are presented later, one after the other, each time the user
1700      requests the execution to be resumed.  Execution is not resumed
1701      for the threads still having pending hit event stored in
1702      LWP_INFO->STATUS.  While the watchpoint is already removed from
1703      the inferior on the first stop the thread hit event is kept being
1704      reported from its cached value by linux_nat_stopped_data_address
1705      until the real thread resume happens after the watchpoint gets
1706      presented and thus its LWP_INFO->STATUS gets reset.
1707
1708    Therefore the hardware watchpoint hit can get safely reset on the
1709    watchpoint removal from inferior.  */
1710
1711 static void
1712 update_watchpoint (struct watchpoint *b, int reparse)
1713 {
1714   int within_current_scope;
1715   struct frame_id saved_frame_id;
1716   int frame_saved;
1717
1718   /* If this is a local watchpoint, we only want to check if the
1719      watchpoint frame is in scope if the current thread is the thread
1720      that was used to create the watchpoint.  */
1721   if (!watchpoint_in_thread_scope (b))
1722     return;
1723
1724   if (b->base.disposition == disp_del_at_next_stop)
1725     return;
1726  
1727   frame_saved = 0;
1728
1729   /* Determine if the watchpoint is within scope.  */
1730   if (b->exp_valid_block == NULL)
1731     within_current_scope = 1;
1732   else
1733     {
1734       struct frame_info *fi = get_current_frame ();
1735       struct gdbarch *frame_arch = get_frame_arch (fi);
1736       CORE_ADDR frame_pc = get_frame_pc (fi);
1737
1738       /* If we're in a function epilogue, unwinding may not work
1739          properly, so do not attempt to recreate locations at this
1740          point.  See similar comments in watchpoint_check.  */
1741       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1742         return;
1743
1744       /* Save the current frame's ID so we can restore it after
1745          evaluating the watchpoint expression on its own frame.  */
1746       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1747          took a frame parameter, so that we didn't have to change the
1748          selected frame.  */
1749       frame_saved = 1;
1750       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1751
1752       fi = frame_find_by_id (b->watchpoint_frame);
1753       within_current_scope = (fi != NULL);
1754       if (within_current_scope)
1755         select_frame (fi);
1756     }
1757
1758   /* We don't free locations.  They are stored in the bp_location array
1759      and update_global_location_list will eventually delete them and
1760      remove breakpoints if needed.  */
1761   b->base.loc = NULL;
1762
1763   if (within_current_scope && reparse)
1764     {
1765       char *s;
1766
1767       if (b->exp)
1768         {
1769           xfree (b->exp);
1770           b->exp = NULL;
1771         }
1772       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1773       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1774       /* If the meaning of expression itself changed, the old value is
1775          no longer relevant.  We don't want to report a watchpoint hit
1776          to the user when the old value and the new value may actually
1777          be completely different objects.  */
1778       value_free (b->val);
1779       b->val = NULL;
1780       b->val_valid = 0;
1781
1782       /* Note that unlike with breakpoints, the watchpoint's condition
1783          expression is stored in the breakpoint object, not in the
1784          locations (re)created below.  */
1785       if (b->base.cond_string != NULL)
1786         {
1787           if (b->cond_exp != NULL)
1788             {
1789               xfree (b->cond_exp);
1790               b->cond_exp = NULL;
1791             }
1792
1793           s = b->base.cond_string;
1794           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1795         }
1796     }
1797
1798   /* If we failed to parse the expression, for example because
1799      it refers to a global variable in a not-yet-loaded shared library,
1800      don't try to insert watchpoint.  We don't automatically delete
1801      such watchpoint, though, since failure to parse expression
1802      is different from out-of-scope watchpoint.  */
1803   if ( !target_has_execution)
1804     {
1805       /* Without execution, memory can't change.  No use to try and
1806          set watchpoint locations.  The watchpoint will be reset when
1807          the target gains execution, through breakpoint_re_set.  */
1808     }
1809   else if (within_current_scope && b->exp)
1810     {
1811       int pc = 0;
1812       struct value *val_chain, *v, *result, *next;
1813       struct program_space *frame_pspace;
1814
1815       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1816
1817       /* Avoid setting b->val if it's already set.  The meaning of
1818          b->val is 'the last value' user saw, and we should update
1819          it only if we reported that last value to user.  As it
1820          happens, the code that reports it updates b->val directly.
1821          We don't keep track of the memory value for masked
1822          watchpoints.  */
1823       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1824         {
1825           b->val = v;
1826           b->val_valid = 1;
1827         }
1828
1829       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1830
1831       /* Look at each value on the value chain.  */
1832       for (v = val_chain; v; v = value_next (v))
1833         {
1834           /* If it's a memory location, and GDB actually needed
1835              its contents to evaluate the expression, then we
1836              must watch it.  If the first value returned is
1837              still lazy, that means an error occurred reading it;
1838              watch it anyway in case it becomes readable.  */
1839           if (VALUE_LVAL (v) == lval_memory
1840               && (v == val_chain || ! value_lazy (v)))
1841             {
1842               struct type *vtype = check_typedef (value_type (v));
1843
1844               /* We only watch structs and arrays if user asked
1845                  for it explicitly, never if they just happen to
1846                  appear in the middle of some value chain.  */
1847               if (v == result
1848                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1849                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1850                 {
1851                   CORE_ADDR addr;
1852                   int type;
1853                   struct bp_location *loc, **tmp;
1854
1855                   addr = value_address (v);
1856                   type = hw_write;
1857                   if (b->base.type == bp_read_watchpoint)
1858                     type = hw_read;
1859                   else if (b->base.type == bp_access_watchpoint)
1860                     type = hw_access;
1861
1862                   loc = allocate_bp_location (&b->base);
1863                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1864                     ;
1865                   *tmp = loc;
1866                   loc->gdbarch = get_type_arch (value_type (v));
1867
1868                   loc->pspace = frame_pspace;
1869                   loc->address = addr;
1870                   loc->length = TYPE_LENGTH (value_type (v));
1871                   loc->watchpoint_type = type;
1872                 }
1873             }
1874         }
1875
1876       /* Change the type of breakpoint between hardware assisted or
1877          an ordinary watchpoint depending on the hardware support
1878          and free hardware slots.  REPARSE is set when the inferior
1879          is started.  */
1880       if (reparse)
1881         {
1882           int reg_cnt;
1883           enum bp_loc_type loc_type;
1884           struct bp_location *bl;
1885
1886           reg_cnt = can_use_hardware_watchpoint (val_chain);
1887
1888           if (reg_cnt)
1889             {
1890               int i, target_resources_ok, other_type_used;
1891               enum bptype type;
1892
1893               /* Use an exact watchpoint when there's only one memory region to be
1894                  watched, and only one debug register is needed to watch it.  */
1895               b->exact = target_exact_watchpoints && reg_cnt == 1;
1896
1897               /* We need to determine how many resources are already
1898                  used for all other hardware watchpoints plus this one
1899                  to see if we still have enough resources to also fit
1900                  this watchpoint in as well.  */
1901
1902               /* If this is a software watchpoint, we try to turn it
1903                  to a hardware one -- count resources as if B was of
1904                  hardware watchpoint type.  */
1905               type = b->base.type;
1906               if (type == bp_watchpoint)
1907                 type = bp_hardware_watchpoint;
1908
1909               /* This watchpoint may or may not have been placed on
1910                  the list yet at this point (it won't be in the list
1911                  if we're trying to create it for the first time,
1912                  through watch_command), so always account for it
1913                  manually.  */
1914
1915               /* Count resources used by all watchpoints except B.  */
1916               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1917
1918               /* Add in the resources needed for B.  */
1919               i += hw_watchpoint_use_count (&b->base);
1920
1921               target_resources_ok
1922                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1923               if (target_resources_ok <= 0)
1924                 {
1925                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1926
1927                   if (target_resources_ok == 0 && !sw_mode)
1928                     error (_("Target does not support this type of "
1929                              "hardware watchpoint."));
1930                   else if (target_resources_ok < 0 && !sw_mode)
1931                     error (_("There are not enough available hardware "
1932                              "resources for this watchpoint."));
1933
1934                   /* Downgrade to software watchpoint.  */
1935                   b->base.type = bp_watchpoint;
1936                 }
1937               else
1938                 {
1939                   /* If this was a software watchpoint, we've just
1940                      found we have enough resources to turn it to a
1941                      hardware watchpoint.  Otherwise, this is a
1942                      nop.  */
1943                   b->base.type = type;
1944                 }
1945             }
1946           else if (!b->base.ops->works_in_software_mode (&b->base))
1947             error (_("Expression cannot be implemented with "
1948                      "read/access watchpoint."));
1949           else
1950             b->base.type = bp_watchpoint;
1951
1952           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1953                       : bp_loc_hardware_watchpoint);
1954           for (bl = b->base.loc; bl; bl = bl->next)
1955             bl->loc_type = loc_type;
1956         }
1957
1958       for (v = val_chain; v; v = next)
1959         {
1960           next = value_next (v);
1961           if (v != b->val)
1962             value_free (v);
1963         }
1964
1965       /* If a software watchpoint is not watching any memory, then the
1966          above left it without any location set up.  But,
1967          bpstat_stop_status requires a location to be able to report
1968          stops, so make sure there's at least a dummy one.  */
1969       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1970         {
1971           struct breakpoint *base = &b->base;
1972           base->loc = allocate_bp_location (base);
1973           base->loc->pspace = frame_pspace;
1974           base->loc->address = -1;
1975           base->loc->length = -1;
1976           base->loc->watchpoint_type = -1;
1977         }
1978     }
1979   else if (!within_current_scope)
1980     {
1981       printf_filtered (_("\
1982 Watchpoint %d deleted because the program has left the block\n\
1983 in which its expression is valid.\n"),
1984                        b->base.number);
1985       watchpoint_del_at_next_stop (b);
1986     }
1987
1988   /* Restore the selected frame.  */
1989   if (frame_saved)
1990     select_frame (frame_find_by_id (saved_frame_id));
1991 }
1992
1993
1994 /* Returns 1 iff breakpoint location should be
1995    inserted in the inferior.  We don't differentiate the type of BL's owner
1996    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1997    breakpoint_ops is not defined, because in insert_bp_location,
1998    tracepoint's insert_location will not be called.  */
1999 static int
2000 should_be_inserted (struct bp_location *bl)
2001 {
2002   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2003     return 0;
2004
2005   if (bl->owner->disposition == disp_del_at_next_stop)
2006     return 0;
2007
2008   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2009     return 0;
2010
2011   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2012     return 0;
2013
2014   /* This is set for example, when we're attached to the parent of a
2015      vfork, and have detached from the child.  The child is running
2016      free, and we expect it to do an exec or exit, at which point the
2017      OS makes the parent schedulable again (and the target reports
2018      that the vfork is done).  Until the child is done with the shared
2019      memory region, do not insert breakpoints in the parent, otherwise
2020      the child could still trip on the parent's breakpoints.  Since
2021      the parent is blocked anyway, it won't miss any breakpoint.  */
2022   if (bl->pspace->breakpoints_not_allowed)
2023     return 0;
2024
2025   return 1;
2026 }
2027
2028 /* Same as should_be_inserted but does the check assuming
2029    that the location is not duplicated.  */
2030
2031 static int
2032 unduplicated_should_be_inserted (struct bp_location *bl)
2033 {
2034   int result;
2035   const int save_duplicate = bl->duplicate;
2036
2037   bl->duplicate = 0;
2038   result = should_be_inserted (bl);
2039   bl->duplicate = save_duplicate;
2040   return result;
2041 }
2042
2043 /* Parses a conditional described by an expression COND into an
2044    agent expression bytecode suitable for evaluation
2045    by the bytecode interpreter.  Return NULL if there was
2046    any error during parsing.  */
2047
2048 static struct agent_expr *
2049 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2050 {
2051   struct agent_expr *aexpr = NULL;
2052   struct cleanup *old_chain = NULL;
2053   volatile struct gdb_exception ex;
2054
2055   if (!cond)
2056     return NULL;
2057
2058   /* We don't want to stop processing, so catch any errors
2059      that may show up.  */
2060   TRY_CATCH (ex, RETURN_MASK_ERROR)
2061     {
2062       aexpr = gen_eval_for_expr (scope, cond);
2063     }
2064
2065   if (ex.reason < 0)
2066     {
2067       /* If we got here, it means the condition could not be parsed to a valid
2068          bytecode expression and thus can't be evaluated on the target's side.
2069          It's no use iterating through the conditions.  */
2070       return NULL;
2071     }
2072
2073   /* We have a valid agent expression.  */
2074   return aexpr;
2075 }
2076
2077 /* Based on location BL, create a list of breakpoint conditions to be
2078    passed on to the target.  If we have duplicated locations with different
2079    conditions, we will add such conditions to the list.  The idea is that the
2080    target will evaluate the list of conditions and will only notify GDB when
2081    one of them is true.  */
2082
2083 static void
2084 build_target_condition_list (struct bp_location *bl)
2085 {
2086   struct bp_location **locp = NULL, **loc2p;
2087   int null_condition_or_parse_error = 0;
2088   int modified = bl->needs_update;
2089   struct bp_location *loc;
2090
2091   /* This is only meaningful if the target is
2092      evaluating conditions and if the user has
2093      opted for condition evaluation on the target's
2094      side.  */
2095   if (gdb_evaluates_breakpoint_condition_p ()
2096       || !target_supports_evaluation_of_breakpoint_conditions ())
2097     return;
2098
2099   /* Do a first pass to check for locations with no assigned
2100      conditions or conditions that fail to parse to a valid agent expression
2101      bytecode.  If any of these happen, then it's no use to send conditions
2102      to the target since this location will always trigger and generate a
2103      response back to GDB.  */
2104   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2105     {
2106       loc = (*loc2p);
2107       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2108         {
2109           if (modified)
2110             {
2111               struct agent_expr *aexpr;
2112
2113               /* Re-parse the conditions since something changed.  In that
2114                  case we already freed the condition bytecodes (see
2115                  force_breakpoint_reinsertion).  We just
2116                  need to parse the condition to bytecodes again.  */
2117               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2118               loc->cond_bytecode = aexpr;
2119
2120               /* Check if we managed to parse the conditional expression
2121                  correctly.  If not, we will not send this condition
2122                  to the target.  */
2123               if (aexpr)
2124                 continue;
2125             }
2126
2127           /* If we have a NULL bytecode expression, it means something
2128              went wrong or we have a null condition expression.  */
2129           if (!loc->cond_bytecode)
2130             {
2131               null_condition_or_parse_error = 1;
2132               break;
2133             }
2134         }
2135     }
2136
2137   /* If any of these happened, it means we will have to evaluate the conditions
2138      for the location's address on gdb's side.  It is no use keeping bytecodes
2139      for all the other duplicate locations, thus we free all of them here.
2140
2141      This is so we have a finer control over which locations' conditions are
2142      being evaluated by GDB or the remote stub.  */
2143   if (null_condition_or_parse_error)
2144     {
2145       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2146         {
2147           loc = (*loc2p);
2148           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2149             {
2150               /* Only go as far as the first NULL bytecode is
2151                  located.  */
2152               if (!loc->cond_bytecode)
2153                 return;
2154
2155               free_agent_expr (loc->cond_bytecode);
2156               loc->cond_bytecode = NULL;
2157             }
2158         }
2159     }
2160
2161   /* No NULL conditions or failed bytecode generation.  Build a condition list
2162      for this location's address.  */
2163   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2164     {
2165       loc = (*loc2p);
2166       if (loc->cond
2167           && is_breakpoint (loc->owner)
2168           && loc->pspace->num == bl->pspace->num
2169           && loc->owner->enable_state == bp_enabled
2170           && loc->enabled)
2171         /* Add the condition to the vector.  This will be used later to send the
2172            conditions to the target.  */
2173         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2174                        loc->cond_bytecode);
2175     }
2176
2177   return;
2178 }
2179
2180 /* Parses a command described by string CMD into an agent expression
2181    bytecode suitable for evaluation by the bytecode interpreter.
2182    Return NULL if there was any error during parsing.  */
2183
2184 static struct agent_expr *
2185 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2186 {
2187   struct cleanup *old_cleanups = 0;
2188   struct expression *expr, **argvec;
2189   struct agent_expr *aexpr = NULL;
2190   struct cleanup *old_chain = NULL;
2191   volatile struct gdb_exception ex;
2192   char *cmdrest;
2193   char *format_start, *format_end;
2194   struct format_piece *fpieces;
2195   int nargs;
2196   struct gdbarch *gdbarch = get_current_arch ();
2197
2198   if (!cmd)
2199     return NULL;
2200
2201   cmdrest = cmd;
2202
2203   if (*cmdrest == ',')
2204     ++cmdrest;
2205   cmdrest = skip_spaces (cmdrest);
2206
2207   if (*cmdrest++ != '"')
2208     error (_("No format string following the location"));
2209
2210   format_start = cmdrest;
2211
2212   fpieces = parse_format_string (&cmdrest);
2213
2214   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2215
2216   format_end = cmdrest;
2217
2218   if (*cmdrest++ != '"')
2219     error (_("Bad format string, non-terminated '\"'."));
2220   
2221   cmdrest = skip_spaces (cmdrest);
2222
2223   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2224     error (_("Invalid argument syntax"));
2225
2226   if (*cmdrest == ',')
2227     cmdrest++;
2228   cmdrest = skip_spaces (cmdrest);
2229
2230   /* For each argument, make an expression.  */
2231
2232   argvec = (struct expression **) alloca (strlen (cmd)
2233                                          * sizeof (struct expression *));
2234
2235   nargs = 0;
2236   while (*cmdrest != '\0')
2237     {
2238       char *cmd1;
2239
2240       cmd1 = cmdrest;
2241       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2242       argvec[nargs++] = expr;
2243       cmdrest = cmd1;
2244       if (*cmdrest == ',')
2245         ++cmdrest;
2246     }
2247
2248   /* We don't want to stop processing, so catch any errors
2249      that may show up.  */
2250   TRY_CATCH (ex, RETURN_MASK_ERROR)
2251     {
2252       aexpr = gen_printf (scope, gdbarch, 0, 0,
2253                           format_start, format_end - format_start,
2254                           fpieces, nargs, argvec);
2255     }
2256
2257   if (ex.reason < 0)
2258     {
2259       /* If we got here, it means the command could not be parsed to a valid
2260          bytecode expression and thus can't be evaluated on the target's side.
2261          It's no use iterating through the other commands.  */
2262       return NULL;
2263     }
2264
2265   do_cleanups (old_cleanups);
2266
2267   /* We have a valid agent expression, return it.  */
2268   return aexpr;
2269 }
2270
2271 /* Based on location BL, create a list of breakpoint commands to be
2272    passed on to the target.  If we have duplicated locations with
2273    different commands, we will add any such to the list.  */
2274
2275 static void
2276 build_target_command_list (struct bp_location *bl)
2277 {
2278   struct bp_location **locp = NULL, **loc2p;
2279   int null_command_or_parse_error = 0;
2280   int modified = bl->needs_update;
2281   struct bp_location *loc;
2282
2283   /* For now, limit to agent-style dprintf breakpoints.  */
2284   if (bl->owner->type != bp_dprintf
2285       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2286     return;
2287
2288   if (!target_can_run_breakpoint_commands ())
2289     return;
2290
2291   /* Do a first pass to check for locations with no assigned
2292      conditions or conditions that fail to parse to a valid agent expression
2293      bytecode.  If any of these happen, then it's no use to send conditions
2294      to the target since this location will always trigger and generate a
2295      response back to GDB.  */
2296   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2297     {
2298       loc = (*loc2p);
2299       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2300         {
2301           if (modified)
2302             {
2303               struct agent_expr *aexpr;
2304
2305               /* Re-parse the commands since something changed.  In that
2306                  case we already freed the command bytecodes (see
2307                  force_breakpoint_reinsertion).  We just
2308                  need to parse the command to bytecodes again.  */
2309               aexpr = parse_cmd_to_aexpr (bl->address,
2310                                           loc->owner->extra_string);
2311               loc->cmd_bytecode = aexpr;
2312
2313               if (!aexpr)
2314                 continue;
2315             }
2316
2317           /* If we have a NULL bytecode expression, it means something
2318              went wrong or we have a null command expression.  */
2319           if (!loc->cmd_bytecode)
2320             {
2321               null_command_or_parse_error = 1;
2322               break;
2323             }
2324         }
2325     }
2326
2327   /* If anything failed, then we're not doing target-side commands,
2328      and so clean up.  */
2329   if (null_command_or_parse_error)
2330     {
2331       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2332         {
2333           loc = (*loc2p);
2334           if (is_breakpoint (loc->owner)
2335               && loc->pspace->num == bl->pspace->num)
2336             {
2337               /* Only go as far as the first NULL bytecode is
2338                  located.  */
2339               if (!loc->cond_bytecode)
2340                 return;
2341
2342               free_agent_expr (loc->cond_bytecode);
2343               loc->cond_bytecode = NULL;
2344             }
2345         }
2346     }
2347
2348   /* No NULL commands or failed bytecode generation.  Build a command list
2349      for this location's address.  */
2350   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2351     {
2352       loc = (*loc2p);
2353       if (loc->owner->extra_string
2354           && is_breakpoint (loc->owner)
2355           && loc->pspace->num == bl->pspace->num
2356           && loc->owner->enable_state == bp_enabled
2357           && loc->enabled)
2358         /* Add the command to the vector.  This will be used later
2359            to send the commands to the target.  */
2360         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2361                        loc->cmd_bytecode);
2362     }
2363
2364   bl->target_info.persist = 0;
2365   /* Maybe flag this location as persistent.  */
2366   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2367     bl->target_info.persist = 1;
2368 }
2369
2370 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2371    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2372    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2373    Returns 0 for success, 1 if the bp_location type is not supported or
2374    -1 for failure.
2375
2376    NOTE drow/2003-09-09: This routine could be broken down to an
2377    object-style method for each breakpoint or catchpoint type.  */
2378 static int
2379 insert_bp_location (struct bp_location *bl,
2380                     struct ui_file *tmp_error_stream,
2381                     int *disabled_breaks,
2382                     int *hw_breakpoint_error,
2383                     int *hw_bp_error_explained_already)
2384 {
2385   int val = 0;
2386   char *hw_bp_err_string = NULL;
2387   struct gdb_exception e;
2388
2389   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2390     return 0;
2391
2392   /* Note we don't initialize bl->target_info, as that wipes out
2393      the breakpoint location's shadow_contents if the breakpoint
2394      is still inserted at that location.  This in turn breaks
2395      target_read_memory which depends on these buffers when
2396      a memory read is requested at the breakpoint location:
2397      Once the target_info has been wiped, we fail to see that
2398      we have a breakpoint inserted at that address and thus
2399      read the breakpoint instead of returning the data saved in
2400      the breakpoint location's shadow contents.  */
2401   bl->target_info.placed_address = bl->address;
2402   bl->target_info.placed_address_space = bl->pspace->aspace;
2403   bl->target_info.length = bl->length;
2404
2405   /* When working with target-side conditions, we must pass all the conditions
2406      for the same breakpoint address down to the target since GDB will not
2407      insert those locations.  With a list of breakpoint conditions, the target
2408      can decide when to stop and notify GDB.  */
2409
2410   if (is_breakpoint (bl->owner))
2411     {
2412       build_target_condition_list (bl);
2413       build_target_command_list (bl);
2414       /* Reset the modification marker.  */
2415       bl->needs_update = 0;
2416     }
2417
2418   if (bl->loc_type == bp_loc_software_breakpoint
2419       || bl->loc_type == bp_loc_hardware_breakpoint)
2420     {
2421       if (bl->owner->type != bp_hardware_breakpoint)
2422         {
2423           /* If the explicitly specified breakpoint type
2424              is not hardware breakpoint, check the memory map to see
2425              if the breakpoint address is in read only memory or not.
2426
2427              Two important cases are:
2428              - location type is not hardware breakpoint, memory
2429              is readonly.  We change the type of the location to
2430              hardware breakpoint.
2431              - location type is hardware breakpoint, memory is
2432              read-write.  This means we've previously made the
2433              location hardware one, but then the memory map changed,
2434              so we undo.
2435              
2436              When breakpoints are removed, remove_breakpoints will use
2437              location types we've just set here, the only possible
2438              problem is that memory map has changed during running
2439              program, but it's not going to work anyway with current
2440              gdb.  */
2441           struct mem_region *mr 
2442             = lookup_mem_region (bl->target_info.placed_address);
2443           
2444           if (mr)
2445             {
2446               if (automatic_hardware_breakpoints)
2447                 {
2448                   enum bp_loc_type new_type;
2449                   
2450                   if (mr->attrib.mode != MEM_RW)
2451                     new_type = bp_loc_hardware_breakpoint;
2452                   else 
2453                     new_type = bp_loc_software_breakpoint;
2454                   
2455                   if (new_type != bl->loc_type)
2456                     {
2457                       static int said = 0;
2458
2459                       bl->loc_type = new_type;
2460                       if (!said)
2461                         {
2462                           fprintf_filtered (gdb_stdout,
2463                                             _("Note: automatically using "
2464                                               "hardware breakpoints for "
2465                                               "read-only addresses.\n"));
2466                           said = 1;
2467                         }
2468                     }
2469                 }
2470               else if (bl->loc_type == bp_loc_software_breakpoint
2471                        && mr->attrib.mode != MEM_RW)        
2472                 warning (_("cannot set software breakpoint "
2473                            "at readonly address %s"),
2474                          paddress (bl->gdbarch, bl->address));
2475             }
2476         }
2477         
2478       /* First check to see if we have to handle an overlay.  */
2479       if (overlay_debugging == ovly_off
2480           || bl->section == NULL
2481           || !(section_is_overlay (bl->section)))
2482         {
2483           /* No overlay handling: just set the breakpoint.  */
2484           TRY_CATCH (e, RETURN_MASK_ALL)
2485             {
2486               val = bl->owner->ops->insert_location (bl);
2487             }
2488           if (e.reason < 0)
2489             {
2490               val = 1;
2491               hw_bp_err_string = (char *) e.message;
2492             }
2493         }
2494       else
2495         {
2496           /* This breakpoint is in an overlay section.
2497              Shall we set a breakpoint at the LMA?  */
2498           if (!overlay_events_enabled)
2499             {
2500               /* Yes -- overlay event support is not active, 
2501                  so we must try to set a breakpoint at the LMA.
2502                  This will not work for a hardware breakpoint.  */
2503               if (bl->loc_type == bp_loc_hardware_breakpoint)
2504                 warning (_("hardware breakpoint %d not supported in overlay!"),
2505                          bl->owner->number);
2506               else
2507                 {
2508                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2509                                                              bl->section);
2510                   /* Set a software (trap) breakpoint at the LMA.  */
2511                   bl->overlay_target_info = bl->target_info;
2512                   bl->overlay_target_info.placed_address = addr;
2513                   val = target_insert_breakpoint (bl->gdbarch,
2514                                                   &bl->overlay_target_info);
2515                   if (val != 0)
2516                     fprintf_unfiltered (tmp_error_stream,
2517                                         "Overlay breakpoint %d "
2518                                         "failed: in ROM?\n",
2519                                         bl->owner->number);
2520                 }
2521             }
2522           /* Shall we set a breakpoint at the VMA? */
2523           if (section_is_mapped (bl->section))
2524             {
2525               /* Yes.  This overlay section is mapped into memory.  */
2526               TRY_CATCH (e, RETURN_MASK_ALL)
2527                 {
2528                   val = bl->owner->ops->insert_location (bl);
2529                 }
2530               if (e.reason < 0)
2531                 {
2532                   val = 1;
2533                   hw_bp_err_string = (char *) e.message;
2534                 }
2535             }
2536           else
2537             {
2538               /* No.  This breakpoint will not be inserted.  
2539                  No error, but do not mark the bp as 'inserted'.  */
2540               return 0;
2541             }
2542         }
2543
2544       if (val)
2545         {
2546           /* Can't set the breakpoint.  */
2547           if (solib_name_from_address (bl->pspace, bl->address))
2548             {
2549               /* See also: disable_breakpoints_in_shlibs.  */
2550               val = 0;
2551               bl->shlib_disabled = 1;
2552               observer_notify_breakpoint_modified (bl->owner);
2553               if (!*disabled_breaks)
2554                 {
2555                   fprintf_unfiltered (tmp_error_stream, 
2556                                       "Cannot insert breakpoint %d.\n", 
2557                                       bl->owner->number);
2558                   fprintf_unfiltered (tmp_error_stream, 
2559                                       "Temporarily disabling shared "
2560                                       "library breakpoints:\n");
2561                 }
2562               *disabled_breaks = 1;
2563               fprintf_unfiltered (tmp_error_stream,
2564                                   "breakpoint #%d\n", bl->owner->number);
2565             }
2566           else
2567             {
2568               if (bl->loc_type == bp_loc_hardware_breakpoint)
2569                 {
2570                   *hw_breakpoint_error = 1;
2571                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2572                   fprintf_unfiltered (tmp_error_stream,
2573                                       "Cannot insert hardware breakpoint %d%s",
2574                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2575                   if (hw_bp_err_string)
2576                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2577                 }
2578               else
2579                 {
2580                   fprintf_unfiltered (tmp_error_stream, 
2581                                       "Cannot insert breakpoint %d.\n", 
2582                                       bl->owner->number);
2583                   fprintf_filtered (tmp_error_stream, 
2584                                     "Error accessing memory address ");
2585                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2586                                   tmp_error_stream);
2587                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2588                                     safe_strerror (val));
2589                 }
2590
2591             }
2592         }
2593       else
2594         bl->inserted = 1;
2595
2596       return val;
2597     }
2598
2599   else if (bl->loc_type == bp_loc_hardware_watchpoint
2600            /* NOTE drow/2003-09-08: This state only exists for removing
2601               watchpoints.  It's not clear that it's necessary...  */
2602            && bl->owner->disposition != disp_del_at_next_stop)
2603     {
2604       gdb_assert (bl->owner->ops != NULL
2605                   && bl->owner->ops->insert_location != NULL);
2606
2607       val = bl->owner->ops->insert_location (bl);
2608
2609       /* If trying to set a read-watchpoint, and it turns out it's not
2610          supported, try emulating one with an access watchpoint.  */
2611       if (val == 1 && bl->watchpoint_type == hw_read)
2612         {
2613           struct bp_location *loc, **loc_temp;
2614
2615           /* But don't try to insert it, if there's already another
2616              hw_access location that would be considered a duplicate
2617              of this one.  */
2618           ALL_BP_LOCATIONS (loc, loc_temp)
2619             if (loc != bl
2620                 && loc->watchpoint_type == hw_access
2621                 && watchpoint_locations_match (bl, loc))
2622               {
2623                 bl->duplicate = 1;
2624                 bl->inserted = 1;
2625                 bl->target_info = loc->target_info;
2626                 bl->watchpoint_type = hw_access;
2627                 val = 0;
2628                 break;
2629               }
2630
2631           if (val == 1)
2632             {
2633               bl->watchpoint_type = hw_access;
2634               val = bl->owner->ops->insert_location (bl);
2635
2636               if (val)
2637                 /* Back to the original value.  */
2638                 bl->watchpoint_type = hw_read;
2639             }
2640         }
2641
2642       bl->inserted = (val == 0);
2643     }
2644
2645   else if (bl->owner->type == bp_catchpoint)
2646     {
2647       gdb_assert (bl->owner->ops != NULL
2648                   && bl->owner->ops->insert_location != NULL);
2649
2650       val = bl->owner->ops->insert_location (bl);
2651       if (val)
2652         {
2653           bl->owner->enable_state = bp_disabled;
2654
2655           if (val == 1)
2656             warning (_("\
2657 Error inserting catchpoint %d: Your system does not support this type\n\
2658 of catchpoint."), bl->owner->number);
2659           else
2660             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2661         }
2662
2663       bl->inserted = (val == 0);
2664
2665       /* We've already printed an error message if there was a problem
2666          inserting this catchpoint, and we've disabled the catchpoint,
2667          so just return success.  */
2668       return 0;
2669     }
2670
2671   return 0;
2672 }
2673
2674 /* This function is called when program space PSPACE is about to be
2675    deleted.  It takes care of updating breakpoints to not reference
2676    PSPACE anymore.  */
2677
2678 void
2679 breakpoint_program_space_exit (struct program_space *pspace)
2680 {
2681   struct breakpoint *b, *b_temp;
2682   struct bp_location *loc, **loc_temp;
2683
2684   /* Remove any breakpoint that was set through this program space.  */
2685   ALL_BREAKPOINTS_SAFE (b, b_temp)
2686     {
2687       if (b->pspace == pspace)
2688         delete_breakpoint (b);
2689     }
2690
2691   /* Breakpoints set through other program spaces could have locations
2692      bound to PSPACE as well.  Remove those.  */
2693   ALL_BP_LOCATIONS (loc, loc_temp)
2694     {
2695       struct bp_location *tmp;
2696
2697       if (loc->pspace == pspace)
2698         {
2699           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2700           if (loc->owner->loc == loc)
2701             loc->owner->loc = loc->next;
2702           else
2703             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2704               if (tmp->next == loc)
2705                 {
2706                   tmp->next = loc->next;
2707                   break;
2708                 }
2709         }
2710     }
2711
2712   /* Now update the global location list to permanently delete the
2713      removed locations above.  */
2714   update_global_location_list (0);
2715 }
2716
2717 /* Make sure all breakpoints are inserted in inferior.
2718    Throws exception on any error.
2719    A breakpoint that is already inserted won't be inserted
2720    again, so calling this function twice is safe.  */
2721 void
2722 insert_breakpoints (void)
2723 {
2724   struct breakpoint *bpt;
2725
2726   ALL_BREAKPOINTS (bpt)
2727     if (is_hardware_watchpoint (bpt))
2728       {
2729         struct watchpoint *w = (struct watchpoint *) bpt;
2730
2731         update_watchpoint (w, 0 /* don't reparse.  */);
2732       }
2733
2734   update_global_location_list (1);
2735
2736   /* update_global_location_list does not insert breakpoints when
2737      always_inserted_mode is not enabled.  Explicitly insert them
2738      now.  */
2739   if (!breakpoints_always_inserted_mode ())
2740     insert_breakpoint_locations ();
2741 }
2742
2743 /* Invoke CALLBACK for each of bp_location.  */
2744
2745 void
2746 iterate_over_bp_locations (walk_bp_location_callback callback)
2747 {
2748   struct bp_location *loc, **loc_tmp;
2749
2750   ALL_BP_LOCATIONS (loc, loc_tmp)
2751     {
2752       callback (loc, NULL);
2753     }
2754 }
2755
2756 /* This is used when we need to synch breakpoint conditions between GDB and the
2757    target.  It is the case with deleting and disabling of breakpoints when using
2758    always-inserted mode.  */
2759
2760 static void
2761 update_inserted_breakpoint_locations (void)
2762 {
2763   struct bp_location *bl, **blp_tmp;
2764   int error_flag = 0;
2765   int val = 0;
2766   int disabled_breaks = 0;
2767   int hw_breakpoint_error = 0;
2768   int hw_bp_details_reported = 0;
2769
2770   struct ui_file *tmp_error_stream = mem_fileopen ();
2771   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2772
2773   /* Explicitly mark the warning -- this will only be printed if
2774      there was an error.  */
2775   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2776
2777   save_current_space_and_thread ();
2778
2779   ALL_BP_LOCATIONS (bl, blp_tmp)
2780     {
2781       /* We only want to update software breakpoints and hardware
2782          breakpoints.  */
2783       if (!is_breakpoint (bl->owner))
2784         continue;
2785
2786       /* We only want to update locations that are already inserted
2787          and need updating.  This is to avoid unwanted insertion during
2788          deletion of breakpoints.  */
2789       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2790         continue;
2791
2792       switch_to_program_space_and_thread (bl->pspace);
2793
2794       /* For targets that support global breakpoints, there's no need
2795          to select an inferior to insert breakpoint to.  In fact, even
2796          if we aren't attached to any process yet, we should still
2797          insert breakpoints.  */
2798       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2799           && ptid_equal (inferior_ptid, null_ptid))
2800         continue;
2801
2802       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2803                                     &hw_breakpoint_error, &hw_bp_details_reported);
2804       if (val)
2805         error_flag = val;
2806     }
2807
2808   if (error_flag)
2809     {
2810       target_terminal_ours_for_output ();
2811       error_stream (tmp_error_stream);
2812     }
2813
2814   do_cleanups (cleanups);
2815 }
2816
2817 /* Used when starting or continuing the program.  */
2818
2819 static void
2820 insert_breakpoint_locations (void)
2821 {
2822   struct breakpoint *bpt;
2823   struct bp_location *bl, **blp_tmp;
2824   int error_flag = 0;
2825   int val = 0;
2826   int disabled_breaks = 0;
2827   int hw_breakpoint_error = 0;
2828   int hw_bp_error_explained_already = 0;
2829
2830   struct ui_file *tmp_error_stream = mem_fileopen ();
2831   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2832   
2833   /* Explicitly mark the warning -- this will only be printed if
2834      there was an error.  */
2835   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2836
2837   save_current_space_and_thread ();
2838
2839   ALL_BP_LOCATIONS (bl, blp_tmp)
2840     {
2841       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2842         continue;
2843
2844       /* There is no point inserting thread-specific breakpoints if
2845          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2846          has BL->OWNER always non-NULL.  */
2847       if (bl->owner->thread != -1
2848           && !valid_thread_id (bl->owner->thread))
2849         continue;
2850
2851       switch_to_program_space_and_thread (bl->pspace);
2852
2853       /* For targets that support global breakpoints, there's no need
2854          to select an inferior to insert breakpoint to.  In fact, even
2855          if we aren't attached to any process yet, we should still
2856          insert breakpoints.  */
2857       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2858           && ptid_equal (inferior_ptid, null_ptid))
2859         continue;
2860
2861       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2862                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2863       if (val)
2864         error_flag = val;
2865     }
2866
2867   /* If we failed to insert all locations of a watchpoint, remove
2868      them, as half-inserted watchpoint is of limited use.  */
2869   ALL_BREAKPOINTS (bpt)  
2870     {
2871       int some_failed = 0;
2872       struct bp_location *loc;
2873
2874       if (!is_hardware_watchpoint (bpt))
2875         continue;
2876
2877       if (!breakpoint_enabled (bpt))
2878         continue;
2879
2880       if (bpt->disposition == disp_del_at_next_stop)
2881         continue;
2882       
2883       for (loc = bpt->loc; loc; loc = loc->next)
2884         if (!loc->inserted && should_be_inserted (loc))
2885           {
2886             some_failed = 1;
2887             break;
2888           }
2889       if (some_failed)
2890         {
2891           for (loc = bpt->loc; loc; loc = loc->next)
2892             if (loc->inserted)
2893               remove_breakpoint (loc, mark_uninserted);
2894
2895           hw_breakpoint_error = 1;
2896           fprintf_unfiltered (tmp_error_stream,
2897                               "Could not insert hardware watchpoint %d.\n", 
2898                               bpt->number);
2899           error_flag = -1;
2900         }
2901     }
2902
2903   if (error_flag)
2904     {
2905       /* If a hardware breakpoint or watchpoint was inserted, add a
2906          message about possibly exhausted resources.  */
2907       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2908         {
2909           fprintf_unfiltered (tmp_error_stream, 
2910                               "Could not insert hardware breakpoints:\n\
2911 You may have requested too many hardware breakpoints/watchpoints.\n");
2912         }
2913       target_terminal_ours_for_output ();
2914       error_stream (tmp_error_stream);
2915     }
2916
2917   do_cleanups (cleanups);
2918 }
2919
2920 /* Used when the program stops.
2921    Returns zero if successful, or non-zero if there was a problem
2922    removing a breakpoint location.  */
2923
2924 int
2925 remove_breakpoints (void)
2926 {
2927   struct bp_location *bl, **blp_tmp;
2928   int val = 0;
2929
2930   ALL_BP_LOCATIONS (bl, blp_tmp)
2931   {
2932     if (bl->inserted && !is_tracepoint (bl->owner))
2933       val |= remove_breakpoint (bl, mark_uninserted);
2934   }
2935   return val;
2936 }
2937
2938 /* Remove breakpoints of process PID.  */
2939
2940 int
2941 remove_breakpoints_pid (int pid)
2942 {
2943   struct bp_location *bl, **blp_tmp;
2944   int val;
2945   struct inferior *inf = find_inferior_pid (pid);
2946
2947   ALL_BP_LOCATIONS (bl, blp_tmp)
2948   {
2949     if (bl->pspace != inf->pspace)
2950       continue;
2951
2952     if (bl->owner->type == bp_dprintf)
2953       continue;
2954
2955     if (bl->inserted)
2956       {
2957         val = remove_breakpoint (bl, mark_uninserted);
2958         if (val != 0)
2959           return val;
2960       }
2961   }
2962   return 0;
2963 }
2964
2965 int
2966 reattach_breakpoints (int pid)
2967 {
2968   struct cleanup *old_chain;
2969   struct bp_location *bl, **blp_tmp;
2970   int val;
2971   struct ui_file *tmp_error_stream;
2972   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2973   struct inferior *inf;
2974   struct thread_info *tp;
2975
2976   tp = any_live_thread_of_process (pid);
2977   if (tp == NULL)
2978     return 1;
2979
2980   inf = find_inferior_pid (pid);
2981   old_chain = save_inferior_ptid ();
2982
2983   inferior_ptid = tp->ptid;
2984
2985   tmp_error_stream = mem_fileopen ();
2986   make_cleanup_ui_file_delete (tmp_error_stream);
2987
2988   ALL_BP_LOCATIONS (bl, blp_tmp)
2989   {
2990     if (bl->pspace != inf->pspace)
2991       continue;
2992
2993     if (bl->inserted)
2994       {
2995         bl->inserted = 0;
2996         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2997         if (val != 0)
2998           {
2999             do_cleanups (old_chain);
3000             return val;
3001           }
3002       }
3003   }
3004   do_cleanups (old_chain);
3005   return 0;
3006 }
3007
3008 static int internal_breakpoint_number = -1;
3009
3010 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3011    If INTERNAL is non-zero, the breakpoint number will be populated
3012    from internal_breakpoint_number and that variable decremented.
3013    Otherwise the breakpoint number will be populated from
3014    breakpoint_count and that value incremented.  Internal breakpoints
3015    do not set the internal var bpnum.  */
3016 static void
3017 set_breakpoint_number (int internal, struct breakpoint *b)
3018 {
3019   if (internal)
3020     b->number = internal_breakpoint_number--;
3021   else
3022     {
3023       set_breakpoint_count (breakpoint_count + 1);
3024       b->number = breakpoint_count;
3025     }
3026 }
3027
3028 static struct breakpoint *
3029 create_internal_breakpoint (struct gdbarch *gdbarch,
3030                             CORE_ADDR address, enum bptype type,
3031                             const struct breakpoint_ops *ops)
3032 {
3033   struct symtab_and_line sal;
3034   struct breakpoint *b;
3035
3036   init_sal (&sal);              /* Initialize to zeroes.  */
3037
3038   sal.pc = address;
3039   sal.section = find_pc_overlay (sal.pc);
3040   sal.pspace = current_program_space;
3041
3042   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3043   b->number = internal_breakpoint_number--;
3044   b->disposition = disp_donttouch;
3045
3046   return b;
3047 }
3048
3049 static const char *const longjmp_names[] =
3050   {
3051     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3052   };
3053 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3054
3055 /* Per-objfile data private to breakpoint.c.  */
3056 struct breakpoint_objfile_data
3057 {
3058   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3059   struct minimal_symbol *overlay_msym;
3060
3061   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3062   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3063
3064   /* True if we have looked for longjmp probes.  */
3065   int longjmp_searched;
3066
3067   /* SystemTap probe points for longjmp (if any).  */
3068   VEC (probe_p) *longjmp_probes;
3069
3070   /* Minimal symbol for "std::terminate()" (if any).  */
3071   struct minimal_symbol *terminate_msym;
3072
3073   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3074   struct minimal_symbol *exception_msym;
3075
3076   /* True if we have looked for exception probes.  */
3077   int exception_searched;
3078
3079   /* SystemTap probe points for unwinding (if any).  */
3080   VEC (probe_p) *exception_probes;
3081 };
3082
3083 static const struct objfile_data *breakpoint_objfile_key;
3084
3085 /* Minimal symbol not found sentinel.  */
3086 static struct minimal_symbol msym_not_found;
3087
3088 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3089
3090 static int
3091 msym_not_found_p (const struct minimal_symbol *msym)
3092 {
3093   return msym == &msym_not_found;
3094 }
3095
3096 /* Return per-objfile data needed by breakpoint.c.
3097    Allocate the data if necessary.  */
3098
3099 static struct breakpoint_objfile_data *
3100 get_breakpoint_objfile_data (struct objfile *objfile)
3101 {
3102   struct breakpoint_objfile_data *bp_objfile_data;
3103
3104   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3105   if (bp_objfile_data == NULL)
3106     {
3107       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3108                                        sizeof (*bp_objfile_data));
3109
3110       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3111       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3112     }
3113   return bp_objfile_data;
3114 }
3115
3116 static void
3117 free_breakpoint_probes (struct objfile *obj, void *data)
3118 {
3119   struct breakpoint_objfile_data *bp_objfile_data = data;
3120
3121   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3122   VEC_free (probe_p, bp_objfile_data->exception_probes);
3123 }
3124
3125 static void
3126 create_overlay_event_breakpoint (void)
3127 {
3128   struct objfile *objfile;
3129   const char *const func_name = "_ovly_debug_event";
3130
3131   ALL_OBJFILES (objfile)
3132     {
3133       struct breakpoint *b;
3134       struct breakpoint_objfile_data *bp_objfile_data;
3135       CORE_ADDR addr;
3136
3137       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3138
3139       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3140         continue;
3141
3142       if (bp_objfile_data->overlay_msym == NULL)
3143         {
3144           struct minimal_symbol *m;
3145
3146           m = lookup_minimal_symbol_text (func_name, objfile);
3147           if (m == NULL)
3148             {
3149               /* Avoid future lookups in this objfile.  */
3150               bp_objfile_data->overlay_msym = &msym_not_found;
3151               continue;
3152             }
3153           bp_objfile_data->overlay_msym = m;
3154         }
3155
3156       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3157       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3158                                       bp_overlay_event,
3159                                       &internal_breakpoint_ops);
3160       b->addr_string = xstrdup (func_name);
3161
3162       if (overlay_debugging == ovly_auto)
3163         {
3164           b->enable_state = bp_enabled;
3165           overlay_events_enabled = 1;
3166         }
3167       else
3168        {
3169          b->enable_state = bp_disabled;
3170          overlay_events_enabled = 0;
3171        }
3172     }
3173   update_global_location_list (1);
3174 }
3175
3176 static void
3177 create_longjmp_master_breakpoint (void)
3178 {
3179   struct program_space *pspace;
3180   struct cleanup *old_chain;
3181
3182   old_chain = save_current_program_space ();
3183
3184   ALL_PSPACES (pspace)
3185   {
3186     struct objfile *objfile;
3187
3188     set_current_program_space (pspace);
3189
3190     ALL_OBJFILES (objfile)
3191     {
3192       int i;
3193       struct gdbarch *gdbarch;
3194       struct breakpoint_objfile_data *bp_objfile_data;
3195
3196       gdbarch = get_objfile_arch (objfile);
3197       if (!gdbarch_get_longjmp_target_p (gdbarch))
3198         continue;
3199
3200       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3201
3202       if (!bp_objfile_data->longjmp_searched)
3203         {
3204           bp_objfile_data->longjmp_probes
3205             = find_probes_in_objfile (objfile, "libc", "longjmp");
3206           bp_objfile_data->longjmp_searched = 1;
3207         }
3208
3209       if (bp_objfile_data->longjmp_probes != NULL)
3210         {
3211           int i;
3212           struct probe *probe;
3213           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3214
3215           for (i = 0;
3216                VEC_iterate (probe_p,
3217                             bp_objfile_data->longjmp_probes,
3218                             i, probe);
3219                ++i)
3220             {
3221               struct breakpoint *b;
3222
3223               b = create_internal_breakpoint (gdbarch, probe->address,
3224                                               bp_longjmp_master,
3225                                               &internal_breakpoint_ops);
3226               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3227               b->enable_state = bp_disabled;
3228             }
3229
3230           continue;
3231         }
3232
3233       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3234         {
3235           struct breakpoint *b;
3236           const char *func_name;
3237           CORE_ADDR addr;
3238
3239           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3240             continue;
3241
3242           func_name = longjmp_names[i];
3243           if (bp_objfile_data->longjmp_msym[i] == NULL)
3244             {
3245               struct minimal_symbol *m;
3246
3247               m = lookup_minimal_symbol_text (func_name, objfile);
3248               if (m == NULL)
3249                 {
3250                   /* Prevent future lookups in this objfile.  */
3251                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3252                   continue;
3253                 }
3254               bp_objfile_data->longjmp_msym[i] = m;
3255             }
3256
3257           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3258           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3259                                           &internal_breakpoint_ops);
3260           b->addr_string = xstrdup (func_name);
3261           b->enable_state = bp_disabled;
3262         }
3263     }
3264   }
3265   update_global_location_list (1);
3266
3267   do_cleanups (old_chain);
3268 }
3269
3270 /* Create a master std::terminate breakpoint.  */
3271 static void
3272 create_std_terminate_master_breakpoint (void)
3273 {
3274   struct program_space *pspace;
3275   struct cleanup *old_chain;
3276   const char *const func_name = "std::terminate()";
3277
3278   old_chain = save_current_program_space ();
3279
3280   ALL_PSPACES (pspace)
3281   {
3282     struct objfile *objfile;
3283     CORE_ADDR addr;
3284
3285     set_current_program_space (pspace);
3286
3287     ALL_OBJFILES (objfile)
3288     {
3289       struct breakpoint *b;
3290       struct breakpoint_objfile_data *bp_objfile_data;
3291
3292       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3293
3294       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3295         continue;
3296
3297       if (bp_objfile_data->terminate_msym == NULL)
3298         {
3299           struct minimal_symbol *m;
3300
3301           m = lookup_minimal_symbol (func_name, NULL, objfile);
3302           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3303                             && MSYMBOL_TYPE (m) != mst_file_text))
3304             {
3305               /* Prevent future lookups in this objfile.  */
3306               bp_objfile_data->terminate_msym = &msym_not_found;
3307               continue;
3308             }
3309           bp_objfile_data->terminate_msym = m;
3310         }
3311
3312       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3313       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3314                                       bp_std_terminate_master,
3315                                       &internal_breakpoint_ops);
3316       b->addr_string = xstrdup (func_name);
3317       b->enable_state = bp_disabled;
3318     }
3319   }
3320
3321   update_global_location_list (1);
3322
3323   do_cleanups (old_chain);
3324 }
3325
3326 /* Install a master breakpoint on the unwinder's debug hook.  */
3327
3328 static void
3329 create_exception_master_breakpoint (void)
3330 {
3331   struct objfile *objfile;
3332   const char *const func_name = "_Unwind_DebugHook";
3333
3334   ALL_OBJFILES (objfile)
3335     {
3336       struct breakpoint *b;
3337       struct gdbarch *gdbarch;
3338       struct breakpoint_objfile_data *bp_objfile_data;
3339       CORE_ADDR addr;
3340
3341       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3342
3343       /* We prefer the SystemTap probe point if it exists.  */
3344       if (!bp_objfile_data->exception_searched)
3345         {
3346           bp_objfile_data->exception_probes
3347             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3348           bp_objfile_data->exception_searched = 1;
3349         }
3350
3351       if (bp_objfile_data->exception_probes != NULL)
3352         {
3353           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3354           int i;
3355           struct probe *probe;
3356
3357           for (i = 0;
3358                VEC_iterate (probe_p,
3359                             bp_objfile_data->exception_probes,
3360                             i, probe);
3361                ++i)
3362             {
3363               struct breakpoint *b;
3364
3365               b = create_internal_breakpoint (gdbarch, probe->address,
3366                                               bp_exception_master,
3367                                               &internal_breakpoint_ops);
3368               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3369               b->enable_state = bp_disabled;
3370             }
3371
3372           continue;
3373         }
3374
3375       /* Otherwise, try the hook function.  */
3376
3377       if (msym_not_found_p (bp_objfile_data->exception_msym))
3378         continue;
3379
3380       gdbarch = get_objfile_arch (objfile);
3381
3382       if (bp_objfile_data->exception_msym == NULL)
3383         {
3384           struct minimal_symbol *debug_hook;
3385
3386           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3387           if (debug_hook == NULL)
3388             {
3389               bp_objfile_data->exception_msym = &msym_not_found;
3390               continue;
3391             }
3392
3393           bp_objfile_data->exception_msym = debug_hook;
3394         }
3395
3396       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3397       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3398                                                  &current_target);
3399       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3400                                       &internal_breakpoint_ops);
3401       b->addr_string = xstrdup (func_name);
3402       b->enable_state = bp_disabled;
3403     }
3404
3405   update_global_location_list (1);
3406 }
3407
3408 void
3409 update_breakpoints_after_exec (void)
3410 {
3411   struct breakpoint *b, *b_tmp;
3412   struct bp_location *bploc, **bplocp_tmp;
3413
3414   /* We're about to delete breakpoints from GDB's lists.  If the
3415      INSERTED flag is true, GDB will try to lift the breakpoints by
3416      writing the breakpoints' "shadow contents" back into memory.  The
3417      "shadow contents" are NOT valid after an exec, so GDB should not
3418      do that.  Instead, the target is responsible from marking
3419      breakpoints out as soon as it detects an exec.  We don't do that
3420      here instead, because there may be other attempts to delete
3421      breakpoints after detecting an exec and before reaching here.  */
3422   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3423     if (bploc->pspace == current_program_space)
3424       gdb_assert (!bploc->inserted);
3425
3426   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3427   {
3428     if (b->pspace != current_program_space)
3429       continue;
3430
3431     /* Solib breakpoints must be explicitly reset after an exec().  */
3432     if (b->type == bp_shlib_event)
3433       {
3434         delete_breakpoint (b);
3435         continue;
3436       }
3437
3438     /* JIT breakpoints must be explicitly reset after an exec().  */
3439     if (b->type == bp_jit_event)
3440       {
3441         delete_breakpoint (b);
3442         continue;
3443       }
3444
3445     /* Thread event breakpoints must be set anew after an exec(),
3446        as must overlay event and longjmp master breakpoints.  */
3447     if (b->type == bp_thread_event || b->type == bp_overlay_event
3448         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3449         || b->type == bp_exception_master)
3450       {
3451         delete_breakpoint (b);
3452         continue;
3453       }
3454
3455     /* Step-resume breakpoints are meaningless after an exec().  */
3456     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3457       {
3458         delete_breakpoint (b);
3459         continue;
3460       }
3461
3462     /* Longjmp and longjmp-resume breakpoints are also meaningless
3463        after an exec.  */
3464     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3465         || b->type == bp_longjmp_call_dummy
3466         || b->type == bp_exception || b->type == bp_exception_resume)
3467       {
3468         delete_breakpoint (b);
3469         continue;
3470       }
3471
3472     if (b->type == bp_catchpoint)
3473       {
3474         /* For now, none of the bp_catchpoint breakpoints need to
3475            do anything at this point.  In the future, if some of
3476            the catchpoints need to something, we will need to add
3477            a new method, and call this method from here.  */
3478         continue;
3479       }
3480
3481     /* bp_finish is a special case.  The only way we ought to be able
3482        to see one of these when an exec() has happened, is if the user
3483        caught a vfork, and then said "finish".  Ordinarily a finish just
3484        carries them to the call-site of the current callee, by setting
3485        a temporary bp there and resuming.  But in this case, the finish
3486        will carry them entirely through the vfork & exec.
3487
3488        We don't want to allow a bp_finish to remain inserted now.  But
3489        we can't safely delete it, 'cause finish_command has a handle to
3490        the bp on a bpstat, and will later want to delete it.  There's a
3491        chance (and I've seen it happen) that if we delete the bp_finish
3492        here, that its storage will get reused by the time finish_command
3493        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3494        We really must allow finish_command to delete a bp_finish.
3495
3496        In the absence of a general solution for the "how do we know
3497        it's safe to delete something others may have handles to?"
3498        problem, what we'll do here is just uninsert the bp_finish, and
3499        let finish_command delete it.
3500
3501        (We know the bp_finish is "doomed" in the sense that it's
3502        momentary, and will be deleted as soon as finish_command sees
3503        the inferior stopped.  So it doesn't matter that the bp's
3504        address is probably bogus in the new a.out, unlike e.g., the
3505        solib breakpoints.)  */
3506
3507     if (b->type == bp_finish)
3508       {
3509         continue;
3510       }
3511
3512     /* Without a symbolic address, we have little hope of the
3513        pre-exec() address meaning the same thing in the post-exec()
3514        a.out.  */
3515     if (b->addr_string == NULL)
3516       {
3517         delete_breakpoint (b);
3518         continue;
3519       }
3520   }
3521   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3522   create_overlay_event_breakpoint ();
3523   create_longjmp_master_breakpoint ();
3524   create_std_terminate_master_breakpoint ();
3525   create_exception_master_breakpoint ();
3526 }
3527
3528 int
3529 detach_breakpoints (ptid_t ptid)
3530 {
3531   struct bp_location *bl, **blp_tmp;
3532   int val = 0;
3533   struct cleanup *old_chain = save_inferior_ptid ();
3534   struct inferior *inf = current_inferior ();
3535
3536   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3537     error (_("Cannot detach breakpoints of inferior_ptid"));
3538
3539   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3540   inferior_ptid = ptid;
3541   ALL_BP_LOCATIONS (bl, blp_tmp)
3542   {
3543     if (bl->pspace != inf->pspace)
3544       continue;
3545
3546     if (bl->inserted)
3547       val |= remove_breakpoint_1 (bl, mark_inserted);
3548   }
3549
3550   /* Detach single-step breakpoints as well.  */
3551   detach_single_step_breakpoints ();
3552
3553   do_cleanups (old_chain);
3554   return val;
3555 }
3556
3557 /* Remove the breakpoint location BL from the current address space.
3558    Note that this is used to detach breakpoints from a child fork.
3559    When we get here, the child isn't in the inferior list, and neither
3560    do we have objects to represent its address space --- we should
3561    *not* look at bl->pspace->aspace here.  */
3562
3563 static int
3564 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3565 {
3566   int val;
3567
3568   /* BL is never in moribund_locations by our callers.  */
3569   gdb_assert (bl->owner != NULL);
3570
3571   if (bl->owner->enable_state == bp_permanent)
3572     /* Permanent breakpoints cannot be inserted or removed.  */
3573     return 0;
3574
3575   /* The type of none suggests that owner is actually deleted.
3576      This should not ever happen.  */
3577   gdb_assert (bl->owner->type != bp_none);
3578
3579   if (bl->loc_type == bp_loc_software_breakpoint
3580       || bl->loc_type == bp_loc_hardware_breakpoint)
3581     {
3582       /* "Normal" instruction breakpoint: either the standard
3583          trap-instruction bp (bp_breakpoint), or a
3584          bp_hardware_breakpoint.  */
3585
3586       /* First check to see if we have to handle an overlay.  */
3587       if (overlay_debugging == ovly_off
3588           || bl->section == NULL
3589           || !(section_is_overlay (bl->section)))
3590         {
3591           /* No overlay handling: just remove the breakpoint.  */
3592           val = bl->owner->ops->remove_location (bl);
3593         }
3594       else
3595         {
3596           /* This breakpoint is in an overlay section.
3597              Did we set a breakpoint at the LMA?  */
3598           if (!overlay_events_enabled)
3599               {
3600                 /* Yes -- overlay event support is not active, so we
3601                    should have set a breakpoint at the LMA.  Remove it.  
3602                 */
3603                 /* Ignore any failures: if the LMA is in ROM, we will
3604                    have already warned when we failed to insert it.  */
3605                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3606                   target_remove_hw_breakpoint (bl->gdbarch,
3607                                                &bl->overlay_target_info);
3608                 else
3609                   target_remove_breakpoint (bl->gdbarch,
3610                                             &bl->overlay_target_info);
3611               }
3612           /* Did we set a breakpoint at the VMA? 
3613              If so, we will have marked the breakpoint 'inserted'.  */
3614           if (bl->inserted)
3615             {
3616               /* Yes -- remove it.  Previously we did not bother to
3617                  remove the breakpoint if the section had been
3618                  unmapped, but let's not rely on that being safe.  We
3619                  don't know what the overlay manager might do.  */
3620
3621               /* However, we should remove *software* breakpoints only
3622                  if the section is still mapped, or else we overwrite
3623                  wrong code with the saved shadow contents.  */
3624               if (bl->loc_type == bp_loc_hardware_breakpoint
3625                   || section_is_mapped (bl->section))
3626                 val = bl->owner->ops->remove_location (bl);
3627               else
3628                 val = 0;
3629             }
3630           else
3631             {
3632               /* No -- not inserted, so no need to remove.  No error.  */
3633               val = 0;
3634             }
3635         }
3636
3637       /* In some cases, we might not be able to remove a breakpoint
3638          in a shared library that has already been removed, but we
3639          have not yet processed the shlib unload event.  */
3640       if (val && solib_name_from_address (bl->pspace, bl->address))
3641         val = 0;
3642
3643       if (val)
3644         return val;
3645       bl->inserted = (is == mark_inserted);
3646     }
3647   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3648     {
3649       gdb_assert (bl->owner->ops != NULL
3650                   && bl->owner->ops->remove_location != NULL);
3651
3652       bl->inserted = (is == mark_inserted);
3653       bl->owner->ops->remove_location (bl);
3654
3655       /* Failure to remove any of the hardware watchpoints comes here.  */
3656       if ((is == mark_uninserted) && (bl->inserted))
3657         warning (_("Could not remove hardware watchpoint %d."),
3658                  bl->owner->number);
3659     }
3660   else if (bl->owner->type == bp_catchpoint
3661            && breakpoint_enabled (bl->owner)
3662            && !bl->duplicate)
3663     {
3664       gdb_assert (bl->owner->ops != NULL
3665                   && bl->owner->ops->remove_location != NULL);
3666
3667       val = bl->owner->ops->remove_location (bl);
3668       if (val)
3669         return val;
3670
3671       bl->inserted = (is == mark_inserted);
3672     }
3673
3674   return 0;
3675 }
3676
3677 static int
3678 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3679 {
3680   int ret;
3681   struct cleanup *old_chain;
3682
3683   /* BL is never in moribund_locations by our callers.  */
3684   gdb_assert (bl->owner != NULL);
3685
3686   if (bl->owner->enable_state == bp_permanent)
3687     /* Permanent breakpoints cannot be inserted or removed.  */
3688     return 0;
3689
3690   /* The type of none suggests that owner is actually deleted.
3691      This should not ever happen.  */
3692   gdb_assert (bl->owner->type != bp_none);
3693
3694   old_chain = save_current_space_and_thread ();
3695
3696   switch_to_program_space_and_thread (bl->pspace);
3697
3698   ret = remove_breakpoint_1 (bl, is);
3699
3700   do_cleanups (old_chain);
3701   return ret;
3702 }
3703
3704 /* Clear the "inserted" flag in all breakpoints.  */
3705
3706 void
3707 mark_breakpoints_out (void)
3708 {
3709   struct bp_location *bl, **blp_tmp;
3710
3711   ALL_BP_LOCATIONS (bl, blp_tmp)
3712     if (bl->pspace == current_program_space)
3713       bl->inserted = 0;
3714 }
3715
3716 /* Clear the "inserted" flag in all breakpoints and delete any
3717    breakpoints which should go away between runs of the program.
3718
3719    Plus other such housekeeping that has to be done for breakpoints
3720    between runs.
3721
3722    Note: this function gets called at the end of a run (by
3723    generic_mourn_inferior) and when a run begins (by
3724    init_wait_for_inferior).  */
3725
3726
3727
3728 void
3729 breakpoint_init_inferior (enum inf_context context)
3730 {
3731   struct breakpoint *b, *b_tmp;
3732   struct bp_location *bl, **blp_tmp;
3733   int ix;
3734   struct program_space *pspace = current_program_space;
3735
3736   /* If breakpoint locations are shared across processes, then there's
3737      nothing to do.  */
3738   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3739     return;
3740
3741   ALL_BP_LOCATIONS (bl, blp_tmp)
3742   {
3743     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3744     if (bl->pspace == pspace
3745         && bl->owner->enable_state != bp_permanent)
3746       bl->inserted = 0;
3747   }
3748
3749   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3750   {
3751     if (b->loc && b->loc->pspace != pspace)
3752       continue;
3753
3754     switch (b->type)
3755       {
3756       case bp_call_dummy:
3757       case bp_longjmp_call_dummy:
3758
3759         /* If the call dummy breakpoint is at the entry point it will
3760            cause problems when the inferior is rerun, so we better get
3761            rid of it.  */
3762
3763       case bp_watchpoint_scope:
3764
3765         /* Also get rid of scope breakpoints.  */
3766
3767       case bp_shlib_event:
3768
3769         /* Also remove solib event breakpoints.  Their addresses may
3770            have changed since the last time we ran the program.
3771            Actually we may now be debugging against different target;
3772            and so the solib backend that installed this breakpoint may
3773            not be used in by the target.  E.g.,
3774
3775            (gdb) file prog-linux
3776            (gdb) run               # native linux target
3777            ...
3778            (gdb) kill
3779            (gdb) file prog-win.exe
3780            (gdb) tar rem :9999     # remote Windows gdbserver.
3781         */
3782
3783       case bp_step_resume:
3784
3785         /* Also remove step-resume breakpoints.  */
3786
3787         delete_breakpoint (b);
3788         break;
3789
3790       case bp_watchpoint:
3791       case bp_hardware_watchpoint:
3792       case bp_read_watchpoint:
3793       case bp_access_watchpoint:
3794         {
3795           struct watchpoint *w = (struct watchpoint *) b;
3796
3797           /* Likewise for watchpoints on local expressions.  */
3798           if (w->exp_valid_block != NULL)
3799             delete_breakpoint (b);
3800           else if (context == inf_starting)
3801             {
3802               /* Reset val field to force reread of starting value in
3803                  insert_breakpoints.  */
3804               if (w->val)
3805                 value_free (w->val);
3806               w->val = NULL;
3807               w->val_valid = 0;
3808           }
3809         }
3810         break;
3811       default:
3812         break;
3813       }
3814   }
3815
3816   /* Get rid of the moribund locations.  */
3817   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3818     decref_bp_location (&bl);
3819   VEC_free (bp_location_p, moribund_locations);
3820 }
3821
3822 /* These functions concern about actual breakpoints inserted in the
3823    target --- to e.g. check if we need to do decr_pc adjustment or if
3824    we need to hop over the bkpt --- so we check for address space
3825    match, not program space.  */
3826
3827 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3828    exists at PC.  It returns ordinary_breakpoint_here if it's an
3829    ordinary breakpoint, or permanent_breakpoint_here if it's a
3830    permanent breakpoint.
3831    - When continuing from a location with an ordinary breakpoint, we
3832      actually single step once before calling insert_breakpoints.
3833    - When continuing from a location with a permanent breakpoint, we
3834      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3835      the target, to advance the PC past the breakpoint.  */
3836
3837 enum breakpoint_here
3838 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3839 {
3840   struct bp_location *bl, **blp_tmp;
3841   int any_breakpoint_here = 0;
3842
3843   ALL_BP_LOCATIONS (bl, blp_tmp)
3844     {
3845       if (bl->loc_type != bp_loc_software_breakpoint
3846           && bl->loc_type != bp_loc_hardware_breakpoint)
3847         continue;
3848
3849       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3850       if ((breakpoint_enabled (bl->owner)
3851            || bl->owner->enable_state == bp_permanent)
3852           && breakpoint_location_address_match (bl, aspace, pc))
3853         {
3854           if (overlay_debugging 
3855               && section_is_overlay (bl->section)
3856               && !section_is_mapped (bl->section))
3857             continue;           /* unmapped overlay -- can't be a match */
3858           else if (bl->owner->enable_state == bp_permanent)
3859             return permanent_breakpoint_here;
3860           else
3861             any_breakpoint_here = 1;
3862         }
3863     }
3864
3865   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3866 }
3867
3868 /* Return true if there's a moribund breakpoint at PC.  */
3869
3870 int
3871 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3872 {
3873   struct bp_location *loc;
3874   int ix;
3875
3876   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3877     if (breakpoint_location_address_match (loc, aspace, pc))
3878       return 1;
3879
3880   return 0;
3881 }
3882
3883 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3884    inserted using regular breakpoint_chain / bp_location array
3885    mechanism.  This does not check for single-step breakpoints, which
3886    are inserted and removed using direct target manipulation.  */
3887
3888 int
3889 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3890                                     CORE_ADDR pc)
3891 {
3892   struct bp_location *bl, **blp_tmp;
3893
3894   ALL_BP_LOCATIONS (bl, blp_tmp)
3895     {
3896       if (bl->loc_type != bp_loc_software_breakpoint
3897           && bl->loc_type != bp_loc_hardware_breakpoint)
3898         continue;
3899
3900       if (bl->inserted
3901           && breakpoint_location_address_match (bl, aspace, pc))
3902         {
3903           if (overlay_debugging 
3904               && section_is_overlay (bl->section)
3905               && !section_is_mapped (bl->section))
3906             continue;           /* unmapped overlay -- can't be a match */
3907           else
3908             return 1;
3909         }
3910     }
3911   return 0;
3912 }
3913
3914 /* Returns non-zero iff there's either regular breakpoint
3915    or a single step breakpoint inserted at PC.  */
3916
3917 int
3918 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3919 {
3920   if (regular_breakpoint_inserted_here_p (aspace, pc))
3921     return 1;
3922
3923   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3924     return 1;
3925
3926   return 0;
3927 }
3928
3929 /* This function returns non-zero iff there is a software breakpoint
3930    inserted at PC.  */
3931
3932 int
3933 software_breakpoint_inserted_here_p (struct address_space *aspace,
3934                                      CORE_ADDR pc)
3935 {
3936   struct bp_location *bl, **blp_tmp;
3937
3938   ALL_BP_LOCATIONS (bl, blp_tmp)
3939     {
3940       if (bl->loc_type != bp_loc_software_breakpoint)
3941         continue;
3942
3943       if (bl->inserted
3944           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3945                                        aspace, pc))
3946         {
3947           if (overlay_debugging 
3948               && section_is_overlay (bl->section)
3949               && !section_is_mapped (bl->section))
3950             continue;           /* unmapped overlay -- can't be a match */
3951           else
3952             return 1;
3953         }
3954     }
3955
3956   /* Also check for software single-step breakpoints.  */
3957   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3958     return 1;
3959
3960   return 0;
3961 }
3962
3963 int
3964 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3965                                        CORE_ADDR addr, ULONGEST len)
3966 {
3967   struct breakpoint *bpt;
3968
3969   ALL_BREAKPOINTS (bpt)
3970     {
3971       struct bp_location *loc;
3972
3973       if (bpt->type != bp_hardware_watchpoint
3974           && bpt->type != bp_access_watchpoint)
3975         continue;
3976
3977       if (!breakpoint_enabled (bpt))
3978         continue;
3979
3980       for (loc = bpt->loc; loc; loc = loc->next)
3981         if (loc->pspace->aspace == aspace && loc->inserted)
3982           {
3983             CORE_ADDR l, h;
3984
3985             /* Check for intersection.  */
3986             l = max (loc->address, addr);
3987             h = min (loc->address + loc->length, addr + len);
3988             if (l < h)
3989               return 1;
3990           }
3991     }
3992   return 0;
3993 }
3994
3995 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3996    PC is valid for process/thread PTID.  */
3997
3998 int
3999 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4000                          ptid_t ptid)
4001 {
4002   struct bp_location *bl, **blp_tmp;
4003   /* The thread and task IDs associated to PTID, computed lazily.  */
4004   int thread = -1;
4005   int task = 0;
4006   
4007   ALL_BP_LOCATIONS (bl, blp_tmp)
4008     {
4009       if (bl->loc_type != bp_loc_software_breakpoint
4010           && bl->loc_type != bp_loc_hardware_breakpoint)
4011         continue;
4012
4013       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4014       if (!breakpoint_enabled (bl->owner)
4015           && bl->owner->enable_state != bp_permanent)
4016         continue;
4017
4018       if (!breakpoint_location_address_match (bl, aspace, pc))
4019         continue;
4020
4021       if (bl->owner->thread != -1)
4022         {
4023           /* This is a thread-specific breakpoint.  Check that ptid
4024              matches that thread.  If thread hasn't been computed yet,
4025              it is now time to do so.  */
4026           if (thread == -1)
4027             thread = pid_to_thread_id (ptid);
4028           if (bl->owner->thread != thread)
4029             continue;
4030         }
4031
4032       if (bl->owner->task != 0)
4033         {
4034           /* This is a task-specific breakpoint.  Check that ptid
4035              matches that task.  If task hasn't been computed yet,
4036              it is now time to do so.  */
4037           if (task == 0)
4038             task = ada_get_task_number (ptid);
4039           if (bl->owner->task != task)
4040             continue;
4041         }
4042
4043       if (overlay_debugging 
4044           && section_is_overlay (bl->section)
4045           && !section_is_mapped (bl->section))
4046         continue;           /* unmapped overlay -- can't be a match */
4047
4048       return 1;
4049     }
4050
4051   return 0;
4052 }
4053 \f
4054
4055 /* bpstat stuff.  External routines' interfaces are documented
4056    in breakpoint.h.  */
4057
4058 int
4059 is_catchpoint (struct breakpoint *ep)
4060 {
4061   return (ep->type == bp_catchpoint);
4062 }
4063
4064 /* Frees any storage that is part of a bpstat.  Does not walk the
4065    'next' chain.  */
4066
4067 static void
4068 bpstat_free (bpstat bs)
4069 {
4070   if (bs->old_val != NULL)
4071     value_free (bs->old_val);
4072   decref_counted_command_line (&bs->commands);
4073   decref_bp_location (&bs->bp_location_at);
4074   xfree (bs);
4075 }
4076
4077 /* Clear a bpstat so that it says we are not at any breakpoint.
4078    Also free any storage that is part of a bpstat.  */
4079
4080 void
4081 bpstat_clear (bpstat *bsp)
4082 {
4083   bpstat p;
4084   bpstat q;
4085
4086   if (bsp == 0)
4087     return;
4088   p = *bsp;
4089   while (p != NULL)
4090     {
4091       q = p->next;
4092       bpstat_free (p);
4093       p = q;
4094     }
4095   *bsp = NULL;
4096 }
4097
4098 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4099    is part of the bpstat is copied as well.  */
4100
4101 bpstat
4102 bpstat_copy (bpstat bs)
4103 {
4104   bpstat p = NULL;
4105   bpstat tmp;
4106   bpstat retval = NULL;
4107
4108   if (bs == NULL)
4109     return bs;
4110
4111   for (; bs != NULL; bs = bs->next)
4112     {
4113       tmp = (bpstat) xmalloc (sizeof (*tmp));
4114       memcpy (tmp, bs, sizeof (*tmp));
4115       incref_counted_command_line (tmp->commands);
4116       incref_bp_location (tmp->bp_location_at);
4117       if (bs->old_val != NULL)
4118         {
4119           tmp->old_val = value_copy (bs->old_val);
4120           release_value (tmp->old_val);
4121         }
4122
4123       if (p == NULL)
4124         /* This is the first thing in the chain.  */
4125         retval = tmp;
4126       else
4127         p->next = tmp;
4128       p = tmp;
4129     }
4130   p->next = NULL;
4131   return retval;
4132 }
4133
4134 /* Find the bpstat associated with this breakpoint.  */
4135
4136 bpstat
4137 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4138 {
4139   if (bsp == NULL)
4140     return NULL;
4141
4142   for (; bsp != NULL; bsp = bsp->next)
4143     {
4144       if (bsp->breakpoint_at == breakpoint)
4145         return bsp;
4146     }
4147   return NULL;
4148 }
4149
4150 /* See breakpoint.h.  */
4151
4152 enum bpstat_signal_value
4153 bpstat_explains_signal (bpstat bsp)
4154 {
4155   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4156
4157   for (; bsp != NULL; bsp = bsp->next)
4158     {
4159       /* Ensure that, if we ever entered this loop, then we at least
4160          return BPSTAT_SIGNAL_HIDE.  */
4161       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4162
4163       if (bsp->breakpoint_at != NULL)
4164         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4165
4166       if (newval > result)
4167         result = newval;
4168     }
4169
4170   return result;
4171 }
4172
4173 /* Put in *NUM the breakpoint number of the first breakpoint we are
4174    stopped at.  *BSP upon return is a bpstat which points to the
4175    remaining breakpoints stopped at (but which is not guaranteed to be
4176    good for anything but further calls to bpstat_num).
4177
4178    Return 0 if passed a bpstat which does not indicate any breakpoints.
4179    Return -1 if stopped at a breakpoint that has been deleted since
4180    we set it.
4181    Return 1 otherwise.  */
4182
4183 int
4184 bpstat_num (bpstat *bsp, int *num)
4185 {
4186   struct breakpoint *b;
4187
4188   if ((*bsp) == NULL)
4189     return 0;                   /* No more breakpoint values */
4190
4191   /* We assume we'll never have several bpstats that correspond to a
4192      single breakpoint -- otherwise, this function might return the
4193      same number more than once and this will look ugly.  */
4194   b = (*bsp)->breakpoint_at;
4195   *bsp = (*bsp)->next;
4196   if (b == NULL)
4197     return -1;                  /* breakpoint that's been deleted since */
4198
4199   *num = b->number;             /* We have its number */
4200   return 1;
4201 }
4202
4203 /* See breakpoint.h.  */
4204
4205 void
4206 bpstat_clear_actions (void)
4207 {
4208   struct thread_info *tp;
4209   bpstat bs;
4210
4211   if (ptid_equal (inferior_ptid, null_ptid))
4212     return;
4213
4214   tp = find_thread_ptid (inferior_ptid);
4215   if (tp == NULL)
4216     return;
4217
4218   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4219     {
4220       decref_counted_command_line (&bs->commands);
4221
4222       if (bs->old_val != NULL)
4223         {
4224           value_free (bs->old_val);
4225           bs->old_val = NULL;
4226         }
4227     }
4228 }
4229
4230 /* Called when a command is about to proceed the inferior.  */
4231
4232 static void
4233 breakpoint_about_to_proceed (void)
4234 {
4235   if (!ptid_equal (inferior_ptid, null_ptid))
4236     {
4237       struct thread_info *tp = inferior_thread ();
4238
4239       /* Allow inferior function calls in breakpoint commands to not
4240          interrupt the command list.  When the call finishes
4241          successfully, the inferior will be standing at the same
4242          breakpoint as if nothing happened.  */
4243       if (tp->control.in_infcall)
4244         return;
4245     }
4246
4247   breakpoint_proceeded = 1;
4248 }
4249
4250 /* Stub for cleaning up our state if we error-out of a breakpoint
4251    command.  */
4252 static void
4253 cleanup_executing_breakpoints (void *ignore)
4254 {
4255   executing_breakpoint_commands = 0;
4256 }
4257
4258 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4259    or its equivalent.  */
4260
4261 static int
4262 command_line_is_silent (struct command_line *cmd)
4263 {
4264   return cmd && (strcmp ("silent", cmd->line) == 0
4265                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4266 }
4267
4268 /* Execute all the commands associated with all the breakpoints at
4269    this location.  Any of these commands could cause the process to
4270    proceed beyond this point, etc.  We look out for such changes by
4271    checking the global "breakpoint_proceeded" after each command.
4272
4273    Returns true if a breakpoint command resumed the inferior.  In that
4274    case, it is the caller's responsibility to recall it again with the
4275    bpstat of the current thread.  */
4276
4277 static int
4278 bpstat_do_actions_1 (bpstat *bsp)
4279 {
4280   bpstat bs;
4281   struct cleanup *old_chain;
4282   int again = 0;
4283
4284   /* Avoid endless recursion if a `source' command is contained
4285      in bs->commands.  */
4286   if (executing_breakpoint_commands)
4287     return 0;
4288
4289   executing_breakpoint_commands = 1;
4290   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4291
4292   prevent_dont_repeat ();
4293
4294   /* This pointer will iterate over the list of bpstat's.  */
4295   bs = *bsp;
4296
4297   breakpoint_proceeded = 0;
4298   for (; bs != NULL; bs = bs->next)
4299     {
4300       struct counted_command_line *ccmd;
4301       struct command_line *cmd;
4302       struct cleanup *this_cmd_tree_chain;
4303
4304       /* Take ownership of the BSP's command tree, if it has one.
4305
4306          The command tree could legitimately contain commands like
4307          'step' and 'next', which call clear_proceed_status, which
4308          frees stop_bpstat's command tree.  To make sure this doesn't
4309          free the tree we're executing out from under us, we need to
4310          take ownership of the tree ourselves.  Since a given bpstat's
4311          commands are only executed once, we don't need to copy it; we
4312          can clear the pointer in the bpstat, and make sure we free
4313          the tree when we're done.  */
4314       ccmd = bs->commands;
4315       bs->commands = NULL;
4316       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4317       cmd = ccmd ? ccmd->commands : NULL;
4318       if (command_line_is_silent (cmd))
4319         {
4320           /* The action has been already done by bpstat_stop_status.  */
4321           cmd = cmd->next;
4322         }
4323
4324       while (cmd != NULL)
4325         {
4326           execute_control_command (cmd);
4327
4328           if (breakpoint_proceeded)
4329             break;
4330           else
4331             cmd = cmd->next;
4332         }
4333
4334       /* We can free this command tree now.  */
4335       do_cleanups (this_cmd_tree_chain);
4336
4337       if (breakpoint_proceeded)
4338         {
4339           if (target_can_async_p ())
4340             /* If we are in async mode, then the target might be still
4341                running, not stopped at any breakpoint, so nothing for
4342                us to do here -- just return to the event loop.  */
4343             ;
4344           else
4345             /* In sync mode, when execute_control_command returns
4346                we're already standing on the next breakpoint.
4347                Breakpoint commands for that stop were not run, since
4348                execute_command does not run breakpoint commands --
4349                only command_line_handler does, but that one is not
4350                involved in execution of breakpoint commands.  So, we
4351                can now execute breakpoint commands.  It should be
4352                noted that making execute_command do bpstat actions is
4353                not an option -- in this case we'll have recursive
4354                invocation of bpstat for each breakpoint with a
4355                command, and can easily blow up GDB stack.  Instead, we
4356                return true, which will trigger the caller to recall us
4357                with the new stop_bpstat.  */
4358             again = 1;
4359           break;
4360         }
4361     }
4362   do_cleanups (old_chain);
4363   return again;
4364 }
4365
4366 void
4367 bpstat_do_actions (void)
4368 {
4369   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4370
4371   /* Do any commands attached to breakpoint we are stopped at.  */
4372   while (!ptid_equal (inferior_ptid, null_ptid)
4373          && target_has_execution
4374          && !is_exited (inferior_ptid)
4375          && !is_executing (inferior_ptid))
4376     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4377        and only return when it is stopped at the next breakpoint, we
4378        keep doing breakpoint actions until it returns false to
4379        indicate the inferior was not resumed.  */
4380     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4381       break;
4382
4383   discard_cleanups (cleanup_if_error);
4384 }
4385
4386 /* Print out the (old or new) value associated with a watchpoint.  */
4387
4388 static void
4389 watchpoint_value_print (struct value *val, struct ui_file *stream)
4390 {
4391   if (val == NULL)
4392     fprintf_unfiltered (stream, _("<unreadable>"));
4393   else
4394     {
4395       struct value_print_options opts;
4396       get_user_print_options (&opts);
4397       value_print (val, stream, &opts);
4398     }
4399 }
4400
4401 /* Generic routine for printing messages indicating why we
4402    stopped.  The behavior of this function depends on the value
4403    'print_it' in the bpstat structure.  Under some circumstances we
4404    may decide not to print anything here and delegate the task to
4405    normal_stop().  */
4406
4407 static enum print_stop_action
4408 print_bp_stop_message (bpstat bs)
4409 {
4410   switch (bs->print_it)
4411     {
4412     case print_it_noop:
4413       /* Nothing should be printed for this bpstat entry.  */
4414       return PRINT_UNKNOWN;
4415       break;
4416
4417     case print_it_done:
4418       /* We still want to print the frame, but we already printed the
4419          relevant messages.  */
4420       return PRINT_SRC_AND_LOC;
4421       break;
4422
4423     case print_it_normal:
4424       {
4425         struct breakpoint *b = bs->breakpoint_at;
4426
4427         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4428            which has since been deleted.  */
4429         if (b == NULL)
4430           return PRINT_UNKNOWN;
4431
4432         /* Normal case.  Call the breakpoint's print_it method.  */
4433         return b->ops->print_it (bs);
4434       }
4435       break;
4436
4437     default:
4438       internal_error (__FILE__, __LINE__,
4439                       _("print_bp_stop_message: unrecognized enum value"));
4440       break;
4441     }
4442 }
4443
4444 /* A helper function that prints a shared library stopped event.  */
4445
4446 static void
4447 print_solib_event (int is_catchpoint)
4448 {
4449   int any_deleted
4450     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4451   int any_added
4452     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4453
4454   if (!is_catchpoint)
4455     {
4456       if (any_added || any_deleted)
4457         ui_out_text (current_uiout,
4458                      _("Stopped due to shared library event:\n"));
4459       else
4460         ui_out_text (current_uiout,
4461                      _("Stopped due to shared library event (no "
4462                        "libraries added or removed)\n"));
4463     }
4464
4465   if (ui_out_is_mi_like_p (current_uiout))
4466     ui_out_field_string (current_uiout, "reason",
4467                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4468
4469   if (any_deleted)
4470     {
4471       struct cleanup *cleanup;
4472       char *name;
4473       int ix;
4474
4475       ui_out_text (current_uiout, _("  Inferior unloaded "));
4476       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4477                                                     "removed");
4478       for (ix = 0;
4479            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4480                         ix, name);
4481            ++ix)
4482         {
4483           if (ix > 0)
4484             ui_out_text (current_uiout, "    ");
4485           ui_out_field_string (current_uiout, "library", name);
4486           ui_out_text (current_uiout, "\n");
4487         }
4488
4489       do_cleanups (cleanup);
4490     }
4491
4492   if (any_added)
4493     {
4494       struct so_list *iter;
4495       int ix;
4496       struct cleanup *cleanup;
4497
4498       ui_out_text (current_uiout, _("  Inferior loaded "));
4499       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4500                                                     "added");
4501       for (ix = 0;
4502            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4503                         ix, iter);
4504            ++ix)
4505         {
4506           if (ix > 0)
4507             ui_out_text (current_uiout, "    ");
4508           ui_out_field_string (current_uiout, "library", iter->so_name);
4509           ui_out_text (current_uiout, "\n");
4510         }
4511
4512       do_cleanups (cleanup);
4513     }
4514 }
4515
4516 /* Print a message indicating what happened.  This is called from
4517    normal_stop().  The input to this routine is the head of the bpstat
4518    list - a list of the eventpoints that caused this stop.  KIND is
4519    the target_waitkind for the stopping event.  This
4520    routine calls the generic print routine for printing a message
4521    about reasons for stopping.  This will print (for example) the
4522    "Breakpoint n," part of the output.  The return value of this
4523    routine is one of:
4524
4525    PRINT_UNKNOWN: Means we printed nothing.
4526    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4527    code to print the location.  An example is 
4528    "Breakpoint 1, " which should be followed by
4529    the location.
4530    PRINT_SRC_ONLY: Means we printed something, but there is no need
4531    to also print the location part of the message.
4532    An example is the catch/throw messages, which
4533    don't require a location appended to the end.
4534    PRINT_NOTHING: We have done some printing and we don't need any 
4535    further info to be printed.  */
4536
4537 enum print_stop_action
4538 bpstat_print (bpstat bs, int kind)
4539 {
4540   int val;
4541
4542   /* Maybe another breakpoint in the chain caused us to stop.
4543      (Currently all watchpoints go on the bpstat whether hit or not.
4544      That probably could (should) be changed, provided care is taken
4545      with respect to bpstat_explains_signal).  */
4546   for (; bs; bs = bs->next)
4547     {
4548       val = print_bp_stop_message (bs);
4549       if (val == PRINT_SRC_ONLY 
4550           || val == PRINT_SRC_AND_LOC 
4551           || val == PRINT_NOTHING)
4552         return val;
4553     }
4554
4555   /* If we had hit a shared library event breakpoint,
4556      print_bp_stop_message would print out this message.  If we hit an
4557      OS-level shared library event, do the same thing.  */
4558   if (kind == TARGET_WAITKIND_LOADED)
4559     {
4560       print_solib_event (0);
4561       return PRINT_NOTHING;
4562     }
4563
4564   /* We reached the end of the chain, or we got a null BS to start
4565      with and nothing was printed.  */
4566   return PRINT_UNKNOWN;
4567 }
4568
4569 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4570    used inside a catch_errors to evaluate the breakpoint condition.
4571    The argument is a "struct expression *" that has been cast to a
4572    "char *" to make it pass through catch_errors.  */
4573
4574 static int
4575 breakpoint_cond_eval (void *exp)
4576 {
4577   struct value *mark = value_mark ();
4578   int i = !value_true (evaluate_expression ((struct expression *) exp));
4579
4580   value_free_to_mark (mark);
4581   return i;
4582 }
4583
4584 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4585
4586 static bpstat
4587 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4588 {
4589   bpstat bs;
4590
4591   bs = (bpstat) xmalloc (sizeof (*bs));
4592   bs->next = NULL;
4593   **bs_link_pointer = bs;
4594   *bs_link_pointer = &bs->next;
4595   bs->breakpoint_at = bl->owner;
4596   bs->bp_location_at = bl;
4597   incref_bp_location (bl);
4598   /* If the condition is false, etc., don't do the commands.  */
4599   bs->commands = NULL;
4600   bs->old_val = NULL;
4601   bs->print_it = print_it_normal;
4602   return bs;
4603 }
4604 \f
4605 /* The target has stopped with waitstatus WS.  Check if any hardware
4606    watchpoints have triggered, according to the target.  */
4607
4608 int
4609 watchpoints_triggered (struct target_waitstatus *ws)
4610 {
4611   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4612   CORE_ADDR addr;
4613   struct breakpoint *b;
4614
4615   if (!stopped_by_watchpoint)
4616     {
4617       /* We were not stopped by a watchpoint.  Mark all watchpoints
4618          as not triggered.  */
4619       ALL_BREAKPOINTS (b)
4620         if (is_hardware_watchpoint (b))
4621           {
4622             struct watchpoint *w = (struct watchpoint *) b;
4623
4624             w->watchpoint_triggered = watch_triggered_no;
4625           }
4626
4627       return 0;
4628     }
4629
4630   if (!target_stopped_data_address (&current_target, &addr))
4631     {
4632       /* We were stopped by a watchpoint, but we don't know where.
4633          Mark all watchpoints as unknown.  */
4634       ALL_BREAKPOINTS (b)
4635         if (is_hardware_watchpoint (b))
4636           {
4637             struct watchpoint *w = (struct watchpoint *) b;
4638
4639             w->watchpoint_triggered = watch_triggered_unknown;
4640           }
4641
4642       return stopped_by_watchpoint;
4643     }
4644
4645   /* The target could report the data address.  Mark watchpoints
4646      affected by this data address as triggered, and all others as not
4647      triggered.  */
4648
4649   ALL_BREAKPOINTS (b)
4650     if (is_hardware_watchpoint (b))
4651       {
4652         struct watchpoint *w = (struct watchpoint *) b;
4653         struct bp_location *loc;
4654
4655         w->watchpoint_triggered = watch_triggered_no;
4656         for (loc = b->loc; loc; loc = loc->next)
4657           {
4658             if (is_masked_watchpoint (b))
4659               {
4660                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4661                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4662
4663                 if (newaddr == start)
4664                   {
4665                     w->watchpoint_triggered = watch_triggered_yes;
4666                     break;
4667                   }
4668               }
4669             /* Exact match not required.  Within range is sufficient.  */
4670             else if (target_watchpoint_addr_within_range (&current_target,
4671                                                          addr, loc->address,
4672                                                          loc->length))
4673               {
4674                 w->watchpoint_triggered = watch_triggered_yes;
4675                 break;
4676               }
4677           }
4678       }
4679
4680   return 1;
4681 }
4682
4683 /* Possible return values for watchpoint_check (this can't be an enum
4684    because of check_errors).  */
4685 /* The watchpoint has been deleted.  */
4686 #define WP_DELETED 1
4687 /* The value has changed.  */
4688 #define WP_VALUE_CHANGED 2
4689 /* The value has not changed.  */
4690 #define WP_VALUE_NOT_CHANGED 3
4691 /* Ignore this watchpoint, no matter if the value changed or not.  */
4692 #define WP_IGNORE 4
4693
4694 #define BP_TEMPFLAG 1
4695 #define BP_HARDWAREFLAG 2
4696
4697 /* Evaluate watchpoint condition expression and check if its value
4698    changed.
4699
4700    P should be a pointer to struct bpstat, but is defined as a void *
4701    in order for this function to be usable with catch_errors.  */
4702
4703 static int
4704 watchpoint_check (void *p)
4705 {
4706   bpstat bs = (bpstat) p;
4707   struct watchpoint *b;
4708   struct frame_info *fr;
4709   int within_current_scope;
4710
4711   /* BS is built from an existing struct breakpoint.  */
4712   gdb_assert (bs->breakpoint_at != NULL);
4713   b = (struct watchpoint *) bs->breakpoint_at;
4714
4715   /* If this is a local watchpoint, we only want to check if the
4716      watchpoint frame is in scope if the current thread is the thread
4717      that was used to create the watchpoint.  */
4718   if (!watchpoint_in_thread_scope (b))
4719     return WP_IGNORE;
4720
4721   if (b->exp_valid_block == NULL)
4722     within_current_scope = 1;
4723   else
4724     {
4725       struct frame_info *frame = get_current_frame ();
4726       struct gdbarch *frame_arch = get_frame_arch (frame);
4727       CORE_ADDR frame_pc = get_frame_pc (frame);
4728
4729       /* in_function_epilogue_p() returns a non-zero value if we're
4730          still in the function but the stack frame has already been
4731          invalidated.  Since we can't rely on the values of local
4732          variables after the stack has been destroyed, we are treating
4733          the watchpoint in that state as `not changed' without further
4734          checking.  Don't mark watchpoints as changed if the current
4735          frame is in an epilogue - even if they are in some other
4736          frame, our view of the stack is likely to be wrong and
4737          frame_find_by_id could error out.  */
4738       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4739         return WP_IGNORE;
4740
4741       fr = frame_find_by_id (b->watchpoint_frame);
4742       within_current_scope = (fr != NULL);
4743
4744       /* If we've gotten confused in the unwinder, we might have
4745          returned a frame that can't describe this variable.  */
4746       if (within_current_scope)
4747         {
4748           struct symbol *function;
4749
4750           function = get_frame_function (fr);
4751           if (function == NULL
4752               || !contained_in (b->exp_valid_block,
4753                                 SYMBOL_BLOCK_VALUE (function)))
4754             within_current_scope = 0;
4755         }
4756
4757       if (within_current_scope)
4758         /* If we end up stopping, the current frame will get selected
4759            in normal_stop.  So this call to select_frame won't affect
4760            the user.  */
4761         select_frame (fr);
4762     }
4763
4764   if (within_current_scope)
4765     {
4766       /* We use value_{,free_to_}mark because it could be a *long*
4767          time before we return to the command level and call
4768          free_all_values.  We can't call free_all_values because we
4769          might be in the middle of evaluating a function call.  */
4770
4771       int pc = 0;
4772       struct value *mark;
4773       struct value *new_val;
4774
4775       if (is_masked_watchpoint (&b->base))
4776         /* Since we don't know the exact trigger address (from
4777            stopped_data_address), just tell the user we've triggered
4778            a mask watchpoint.  */
4779         return WP_VALUE_CHANGED;
4780
4781       mark = value_mark ();
4782       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4783
4784       /* We use value_equal_contents instead of value_equal because
4785          the latter coerces an array to a pointer, thus comparing just
4786          the address of the array instead of its contents.  This is
4787          not what we want.  */
4788       if ((b->val != NULL) != (new_val != NULL)
4789           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4790         {
4791           if (new_val != NULL)
4792             {
4793               release_value (new_val);
4794               value_free_to_mark (mark);
4795             }
4796           bs->old_val = b->val;
4797           b->val = new_val;
4798           b->val_valid = 1;
4799           return WP_VALUE_CHANGED;
4800         }
4801       else
4802         {
4803           /* Nothing changed.  */
4804           value_free_to_mark (mark);
4805           return WP_VALUE_NOT_CHANGED;
4806         }
4807     }
4808   else
4809     {
4810       struct ui_out *uiout = current_uiout;
4811
4812       /* This seems like the only logical thing to do because
4813          if we temporarily ignored the watchpoint, then when
4814          we reenter the block in which it is valid it contains
4815          garbage (in the case of a function, it may have two
4816          garbage values, one before and one after the prologue).
4817          So we can't even detect the first assignment to it and
4818          watch after that (since the garbage may or may not equal
4819          the first value assigned).  */
4820       /* We print all the stop information in
4821          breakpoint_ops->print_it, but in this case, by the time we
4822          call breakpoint_ops->print_it this bp will be deleted
4823          already.  So we have no choice but print the information
4824          here.  */
4825       if (ui_out_is_mi_like_p (uiout))
4826         ui_out_field_string
4827           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4828       ui_out_text (uiout, "\nWatchpoint ");
4829       ui_out_field_int (uiout, "wpnum", b->base.number);
4830       ui_out_text (uiout,
4831                    " deleted because the program has left the block in\n\
4832 which its expression is valid.\n");     
4833
4834       /* Make sure the watchpoint's commands aren't executed.  */
4835       decref_counted_command_line (&b->base.commands);
4836       watchpoint_del_at_next_stop (b);
4837
4838       return WP_DELETED;
4839     }
4840 }
4841
4842 /* Return true if it looks like target has stopped due to hitting
4843    breakpoint location BL.  This function does not check if we should
4844    stop, only if BL explains the stop.  */
4845
4846 static int
4847 bpstat_check_location (const struct bp_location *bl,
4848                        struct address_space *aspace, CORE_ADDR bp_addr,
4849                        const struct target_waitstatus *ws)
4850 {
4851   struct breakpoint *b = bl->owner;
4852
4853   /* BL is from an existing breakpoint.  */
4854   gdb_assert (b != NULL);
4855
4856   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4857 }
4858
4859 /* Determine if the watched values have actually changed, and we
4860    should stop.  If not, set BS->stop to 0.  */
4861
4862 static void
4863 bpstat_check_watchpoint (bpstat bs)
4864 {
4865   const struct bp_location *bl;
4866   struct watchpoint *b;
4867
4868   /* BS is built for existing struct breakpoint.  */
4869   bl = bs->bp_location_at;
4870   gdb_assert (bl != NULL);
4871   b = (struct watchpoint *) bs->breakpoint_at;
4872   gdb_assert (b != NULL);
4873
4874     {
4875       int must_check_value = 0;
4876       
4877       if (b->base.type == bp_watchpoint)
4878         /* For a software watchpoint, we must always check the
4879            watched value.  */
4880         must_check_value = 1;
4881       else if (b->watchpoint_triggered == watch_triggered_yes)
4882         /* We have a hardware watchpoint (read, write, or access)
4883            and the target earlier reported an address watched by
4884            this watchpoint.  */
4885         must_check_value = 1;
4886       else if (b->watchpoint_triggered == watch_triggered_unknown
4887                && b->base.type == bp_hardware_watchpoint)
4888         /* We were stopped by a hardware watchpoint, but the target could
4889            not report the data address.  We must check the watchpoint's
4890            value.  Access and read watchpoints are out of luck; without
4891            a data address, we can't figure it out.  */
4892         must_check_value = 1;
4893
4894       if (must_check_value)
4895         {
4896           char *message
4897             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4898                           b->base.number);
4899           struct cleanup *cleanups = make_cleanup (xfree, message);
4900           int e = catch_errors (watchpoint_check, bs, message,
4901                                 RETURN_MASK_ALL);
4902           do_cleanups (cleanups);
4903           switch (e)
4904             {
4905             case WP_DELETED:
4906               /* We've already printed what needs to be printed.  */
4907               bs->print_it = print_it_done;
4908               /* Stop.  */
4909               break;
4910             case WP_IGNORE:
4911               bs->print_it = print_it_noop;
4912               bs->stop = 0;
4913               break;
4914             case WP_VALUE_CHANGED:
4915               if (b->base.type == bp_read_watchpoint)
4916                 {
4917                   /* There are two cases to consider here:
4918
4919                      1. We're watching the triggered memory for reads.
4920                      In that case, trust the target, and always report
4921                      the watchpoint hit to the user.  Even though
4922                      reads don't cause value changes, the value may
4923                      have changed since the last time it was read, and
4924                      since we're not trapping writes, we will not see
4925                      those, and as such we should ignore our notion of
4926                      old value.
4927
4928                      2. We're watching the triggered memory for both
4929                      reads and writes.  There are two ways this may
4930                      happen:
4931
4932                      2.1. This is a target that can't break on data
4933                      reads only, but can break on accesses (reads or
4934                      writes), such as e.g., x86.  We detect this case
4935                      at the time we try to insert read watchpoints.
4936
4937                      2.2. Otherwise, the target supports read
4938                      watchpoints, but, the user set an access or write
4939                      watchpoint watching the same memory as this read
4940                      watchpoint.
4941
4942                      If we're watching memory writes as well as reads,
4943                      ignore watchpoint hits when we find that the
4944                      value hasn't changed, as reads don't cause
4945                      changes.  This still gives false positives when
4946                      the program writes the same value to memory as
4947                      what there was already in memory (we will confuse
4948                      it for a read), but it's much better than
4949                      nothing.  */
4950
4951                   int other_write_watchpoint = 0;
4952
4953                   if (bl->watchpoint_type == hw_read)
4954                     {
4955                       struct breakpoint *other_b;
4956
4957                       ALL_BREAKPOINTS (other_b)
4958                         if (other_b->type == bp_hardware_watchpoint
4959                             || other_b->type == bp_access_watchpoint)
4960                           {
4961                             struct watchpoint *other_w =
4962                               (struct watchpoint *) other_b;
4963
4964                             if (other_w->watchpoint_triggered
4965                                 == watch_triggered_yes)
4966                               {
4967                                 other_write_watchpoint = 1;
4968                                 break;
4969                               }
4970                           }
4971                     }
4972
4973                   if (other_write_watchpoint
4974                       || bl->watchpoint_type == hw_access)
4975                     {
4976                       /* We're watching the same memory for writes,
4977                          and the value changed since the last time we
4978                          updated it, so this trap must be for a write.
4979                          Ignore it.  */
4980                       bs->print_it = print_it_noop;
4981                       bs->stop = 0;
4982                     }
4983                 }
4984               break;
4985             case WP_VALUE_NOT_CHANGED:
4986               if (b->base.type == bp_hardware_watchpoint
4987                   || b->base.type == bp_watchpoint)
4988                 {
4989                   /* Don't stop: write watchpoints shouldn't fire if
4990                      the value hasn't changed.  */
4991                   bs->print_it = print_it_noop;
4992                   bs->stop = 0;
4993                 }
4994               /* Stop.  */
4995               break;
4996             default:
4997               /* Can't happen.  */
4998             case 0:
4999               /* Error from catch_errors.  */
5000               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5001               watchpoint_del_at_next_stop (b);
5002               /* We've already printed what needs to be printed.  */
5003               bs->print_it = print_it_done;
5004               break;
5005             }
5006         }
5007       else      /* must_check_value == 0 */
5008         {
5009           /* This is a case where some watchpoint(s) triggered, but
5010              not at the address of this watchpoint, or else no
5011              watchpoint triggered after all.  So don't print
5012              anything for this watchpoint.  */
5013           bs->print_it = print_it_noop;
5014           bs->stop = 0;
5015         }
5016     }
5017 }
5018
5019
5020 /* Check conditions (condition proper, frame, thread and ignore count)
5021    of breakpoint referred to by BS.  If we should not stop for this
5022    breakpoint, set BS->stop to 0.  */
5023
5024 static void
5025 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5026 {
5027   int thread_id = pid_to_thread_id (ptid);
5028   const struct bp_location *bl;
5029   struct breakpoint *b;
5030
5031   /* BS is built for existing struct breakpoint.  */
5032   bl = bs->bp_location_at;
5033   gdb_assert (bl != NULL);
5034   b = bs->breakpoint_at;
5035   gdb_assert (b != NULL);
5036
5037   /* Even if the target evaluated the condition on its end and notified GDB, we
5038      need to do so again since GDB does not know if we stopped due to a
5039      breakpoint or a single step breakpoint.  */
5040
5041   if (frame_id_p (b->frame_id)
5042       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5043     bs->stop = 0;
5044   else if (bs->stop)
5045     {
5046       int value_is_zero = 0;
5047       struct expression *cond;
5048
5049       /* Evaluate Python breakpoints that have a "stop"
5050          method implemented.  */
5051       if (b->py_bp_object)
5052         bs->stop = gdbpy_should_stop (b->py_bp_object);
5053
5054       if (is_watchpoint (b))
5055         {
5056           struct watchpoint *w = (struct watchpoint *) b;
5057
5058           cond = w->cond_exp;
5059         }
5060       else
5061         cond = bl->cond;
5062
5063       if (cond && b->disposition != disp_del_at_next_stop)
5064         {
5065           int within_current_scope = 1;
5066           struct watchpoint * w;
5067
5068           /* We use value_mark and value_free_to_mark because it could
5069              be a long time before we return to the command level and
5070              call free_all_values.  We can't call free_all_values
5071              because we might be in the middle of evaluating a
5072              function call.  */
5073           struct value *mark = value_mark ();
5074
5075           if (is_watchpoint (b))
5076             w = (struct watchpoint *) b;
5077           else
5078             w = NULL;
5079
5080           /* Need to select the frame, with all that implies so that
5081              the conditions will have the right context.  Because we
5082              use the frame, we will not see an inlined function's
5083              variables when we arrive at a breakpoint at the start
5084              of the inlined function; the current frame will be the
5085              call site.  */
5086           if (w == NULL || w->cond_exp_valid_block == NULL)
5087             select_frame (get_current_frame ());
5088           else
5089             {
5090               struct frame_info *frame;
5091
5092               /* For local watchpoint expressions, which particular
5093                  instance of a local is being watched matters, so we
5094                  keep track of the frame to evaluate the expression
5095                  in.  To evaluate the condition however, it doesn't
5096                  really matter which instantiation of the function
5097                  where the condition makes sense triggers the
5098                  watchpoint.  This allows an expression like "watch
5099                  global if q > 10" set in `func', catch writes to
5100                  global on all threads that call `func', or catch
5101                  writes on all recursive calls of `func' by a single
5102                  thread.  We simply always evaluate the condition in
5103                  the innermost frame that's executing where it makes
5104                  sense to evaluate the condition.  It seems
5105                  intuitive.  */
5106               frame = block_innermost_frame (w->cond_exp_valid_block);
5107               if (frame != NULL)
5108                 select_frame (frame);
5109               else
5110                 within_current_scope = 0;
5111             }
5112           if (within_current_scope)
5113             value_is_zero
5114               = catch_errors (breakpoint_cond_eval, cond,
5115                               "Error in testing breakpoint condition:\n",
5116                               RETURN_MASK_ALL);
5117           else
5118             {
5119               warning (_("Watchpoint condition cannot be tested "
5120                          "in the current scope"));
5121               /* If we failed to set the right context for this
5122                  watchpoint, unconditionally report it.  */
5123               value_is_zero = 0;
5124             }
5125           /* FIXME-someday, should give breakpoint #.  */
5126           value_free_to_mark (mark);
5127         }
5128
5129       if (cond && value_is_zero)
5130         {
5131           bs->stop = 0;
5132         }
5133       else if (b->thread != -1 && b->thread != thread_id)
5134         {
5135           bs->stop = 0;
5136         }
5137       else if (b->ignore_count > 0)
5138         {
5139           b->ignore_count--;
5140           annotate_ignore_count_change ();
5141           bs->stop = 0;
5142           /* Increase the hit count even though we don't stop.  */
5143           ++(b->hit_count);
5144           observer_notify_breakpoint_modified (b);
5145         }       
5146     }
5147 }
5148
5149
5150 /* Get a bpstat associated with having just stopped at address
5151    BP_ADDR in thread PTID.
5152
5153    Determine whether we stopped at a breakpoint, etc, or whether we
5154    don't understand this stop.  Result is a chain of bpstat's such
5155    that:
5156
5157    if we don't understand the stop, the result is a null pointer.
5158
5159    if we understand why we stopped, the result is not null.
5160
5161    Each element of the chain refers to a particular breakpoint or
5162    watchpoint at which we have stopped.  (We may have stopped for
5163    several reasons concurrently.)
5164
5165    Each element of the chain has valid next, breakpoint_at,
5166    commands, FIXME??? fields.  */
5167
5168 bpstat
5169 bpstat_stop_status (struct address_space *aspace,
5170                     CORE_ADDR bp_addr, ptid_t ptid,
5171                     const struct target_waitstatus *ws)
5172 {
5173   struct breakpoint *b = NULL;
5174   struct bp_location *bl;
5175   struct bp_location *loc;
5176   /* First item of allocated bpstat's.  */
5177   bpstat bs_head = NULL, *bs_link = &bs_head;
5178   /* Pointer to the last thing in the chain currently.  */
5179   bpstat bs;
5180   int ix;
5181   int need_remove_insert;
5182   int removed_any;
5183
5184   /* First, build the bpstat chain with locations that explain a
5185      target stop, while being careful to not set the target running,
5186      as that may invalidate locations (in particular watchpoint
5187      locations are recreated).  Resuming will happen here with
5188      breakpoint conditions or watchpoint expressions that include
5189      inferior function calls.  */
5190
5191   ALL_BREAKPOINTS (b)
5192     {
5193       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5194         continue;
5195
5196       for (bl = b->loc; bl != NULL; bl = bl->next)
5197         {
5198           /* For hardware watchpoints, we look only at the first
5199              location.  The watchpoint_check function will work on the
5200              entire expression, not the individual locations.  For
5201              read watchpoints, the watchpoints_triggered function has
5202              checked all locations already.  */
5203           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5204             break;
5205
5206           if (!bl->enabled || bl->shlib_disabled)
5207             continue;
5208
5209           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5210             continue;
5211
5212           /* Come here if it's a watchpoint, or if the break address
5213              matches.  */
5214
5215           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5216                                                    explain stop.  */
5217
5218           /* Assume we stop.  Should we find a watchpoint that is not
5219              actually triggered, or if the condition of the breakpoint
5220              evaluates as false, we'll reset 'stop' to 0.  */
5221           bs->stop = 1;
5222           bs->print = 1;
5223
5224           /* If this is a scope breakpoint, mark the associated
5225              watchpoint as triggered so that we will handle the
5226              out-of-scope event.  We'll get to the watchpoint next
5227              iteration.  */
5228           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5229             {
5230               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5231
5232               w->watchpoint_triggered = watch_triggered_yes;
5233             }
5234         }
5235     }
5236
5237   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5238     {
5239       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5240         {
5241           bs = bpstat_alloc (loc, &bs_link);
5242           /* For hits of moribund locations, we should just proceed.  */
5243           bs->stop = 0;
5244           bs->print = 0;
5245           bs->print_it = print_it_noop;
5246         }
5247     }
5248
5249   /* A bit of special processing for shlib breakpoints.  We need to
5250      process solib loading here, so that the lists of loaded and
5251      unloaded libraries are correct before we handle "catch load" and
5252      "catch unload".  */
5253   for (bs = bs_head; bs != NULL; bs = bs->next)
5254     {
5255       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5256         {
5257           handle_solib_event ();
5258           break;
5259         }
5260     }
5261
5262   /* Now go through the locations that caused the target to stop, and
5263      check whether we're interested in reporting this stop to higher
5264      layers, or whether we should resume the target transparently.  */
5265
5266   removed_any = 0;
5267
5268   for (bs = bs_head; bs != NULL; bs = bs->next)
5269     {
5270       if (!bs->stop)
5271         continue;
5272
5273       b = bs->breakpoint_at;
5274       b->ops->check_status (bs);
5275       if (bs->stop)
5276         {
5277           bpstat_check_breakpoint_conditions (bs, ptid);
5278
5279           if (bs->stop)
5280             {
5281               ++(b->hit_count);
5282               observer_notify_breakpoint_modified (b);
5283
5284               /* We will stop here.  */
5285               if (b->disposition == disp_disable)
5286                 {
5287                   --(b->enable_count);
5288                   if (b->enable_count <= 0
5289                       && b->enable_state != bp_permanent)
5290                     b->enable_state = bp_disabled;
5291                   removed_any = 1;
5292                 }
5293               if (b->silent)
5294                 bs->print = 0;
5295               bs->commands = b->commands;
5296               incref_counted_command_line (bs->commands);
5297               if (command_line_is_silent (bs->commands
5298                                           ? bs->commands->commands : NULL))
5299                 bs->print = 0;
5300             }
5301
5302         }
5303
5304       /* Print nothing for this entry if we don't stop or don't
5305          print.  */
5306       if (!bs->stop || !bs->print)
5307         bs->print_it = print_it_noop;
5308     }
5309
5310   /* If we aren't stopping, the value of some hardware watchpoint may
5311      not have changed, but the intermediate memory locations we are
5312      watching may have.  Don't bother if we're stopping; this will get
5313      done later.  */
5314   need_remove_insert = 0;
5315   if (! bpstat_causes_stop (bs_head))
5316     for (bs = bs_head; bs != NULL; bs = bs->next)
5317       if (!bs->stop
5318           && bs->breakpoint_at
5319           && is_hardware_watchpoint (bs->breakpoint_at))
5320         {
5321           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5322
5323           update_watchpoint (w, 0 /* don't reparse.  */);
5324           need_remove_insert = 1;
5325         }
5326
5327   if (need_remove_insert)
5328     update_global_location_list (1);
5329   else if (removed_any)
5330     update_global_location_list (0);
5331
5332   return bs_head;
5333 }
5334
5335 static void
5336 handle_jit_event (void)
5337 {
5338   struct frame_info *frame;
5339   struct gdbarch *gdbarch;
5340
5341   /* Switch terminal for any messages produced by
5342      breakpoint_re_set.  */
5343   target_terminal_ours_for_output ();
5344
5345   frame = get_current_frame ();
5346   gdbarch = get_frame_arch (frame);
5347
5348   jit_event_handler (gdbarch);
5349
5350   target_terminal_inferior ();
5351 }
5352
5353 /* Handle an solib event by calling solib_add.  */
5354
5355 void
5356 handle_solib_event (void)
5357 {
5358   clear_program_space_solib_cache (current_inferior ()->pspace);
5359
5360   /* Check for any newly added shared libraries if we're supposed to
5361      be adding them automatically.  Switch terminal for any messages
5362      produced by breakpoint_re_set.  */
5363   target_terminal_ours_for_output ();
5364 #ifdef SOLIB_ADD
5365   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5366 #else
5367   solib_add (NULL, 0, &current_target, auto_solib_add);
5368 #endif
5369   target_terminal_inferior ();
5370 }
5371
5372 /* Prepare WHAT final decision for infrun.  */
5373
5374 /* Decide what infrun needs to do with this bpstat.  */
5375
5376 struct bpstat_what
5377 bpstat_what (bpstat bs_head)
5378 {
5379   struct bpstat_what retval;
5380   int jit_event = 0;
5381   bpstat bs;
5382
5383   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5384   retval.call_dummy = STOP_NONE;
5385   retval.is_longjmp = 0;
5386
5387   for (bs = bs_head; bs != NULL; bs = bs->next)
5388     {
5389       /* Extract this BS's action.  After processing each BS, we check
5390          if its action overrides all we've seem so far.  */
5391       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5392       enum bptype bptype;
5393
5394       if (bs->breakpoint_at == NULL)
5395         {
5396           /* I suspect this can happen if it was a momentary
5397              breakpoint which has since been deleted.  */
5398           bptype = bp_none;
5399         }
5400       else
5401         bptype = bs->breakpoint_at->type;
5402
5403       switch (bptype)
5404         {
5405         case bp_none:
5406           break;
5407         case bp_breakpoint:
5408         case bp_hardware_breakpoint:
5409         case bp_until:
5410         case bp_finish:
5411         case bp_shlib_event:
5412           if (bs->stop)
5413             {
5414               if (bs->print)
5415                 this_action = BPSTAT_WHAT_STOP_NOISY;
5416               else
5417                 this_action = BPSTAT_WHAT_STOP_SILENT;
5418             }
5419           else
5420             this_action = BPSTAT_WHAT_SINGLE;
5421           break;
5422         case bp_watchpoint:
5423         case bp_hardware_watchpoint:
5424         case bp_read_watchpoint:
5425         case bp_access_watchpoint:
5426           if (bs->stop)
5427             {
5428               if (bs->print)
5429                 this_action = BPSTAT_WHAT_STOP_NOISY;
5430               else
5431                 this_action = BPSTAT_WHAT_STOP_SILENT;
5432             }
5433           else
5434             {
5435               /* There was a watchpoint, but we're not stopping.
5436                  This requires no further action.  */
5437             }
5438           break;
5439         case bp_longjmp:
5440         case bp_longjmp_call_dummy:
5441         case bp_exception:
5442           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5443           retval.is_longjmp = bptype != bp_exception;
5444           break;
5445         case bp_longjmp_resume:
5446         case bp_exception_resume:
5447           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5448           retval.is_longjmp = bptype == bp_longjmp_resume;
5449           break;
5450         case bp_step_resume:
5451           if (bs->stop)
5452             this_action = BPSTAT_WHAT_STEP_RESUME;
5453           else
5454             {
5455               /* It is for the wrong frame.  */
5456               this_action = BPSTAT_WHAT_SINGLE;
5457             }
5458           break;
5459         case bp_hp_step_resume:
5460           if (bs->stop)
5461             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5462           else
5463             {
5464               /* It is for the wrong frame.  */
5465               this_action = BPSTAT_WHAT_SINGLE;
5466             }
5467           break;
5468         case bp_watchpoint_scope:
5469         case bp_thread_event:
5470         case bp_overlay_event:
5471         case bp_longjmp_master:
5472         case bp_std_terminate_master:
5473         case bp_exception_master:
5474           this_action = BPSTAT_WHAT_SINGLE;
5475           break;
5476         case bp_catchpoint:
5477           if (bs->stop)
5478             {
5479               if (bs->print)
5480                 this_action = BPSTAT_WHAT_STOP_NOISY;
5481               else
5482                 this_action = BPSTAT_WHAT_STOP_SILENT;
5483             }
5484           else
5485             {
5486               /* There was a catchpoint, but we're not stopping.
5487                  This requires no further action.  */
5488             }
5489           break;
5490         case bp_jit_event:
5491           jit_event = 1;
5492           this_action = BPSTAT_WHAT_SINGLE;
5493           break;
5494         case bp_call_dummy:
5495           /* Make sure the action is stop (silent or noisy),
5496              so infrun.c pops the dummy frame.  */
5497           retval.call_dummy = STOP_STACK_DUMMY;
5498           this_action = BPSTAT_WHAT_STOP_SILENT;
5499           break;
5500         case bp_std_terminate:
5501           /* Make sure the action is stop (silent or noisy),
5502              so infrun.c pops the dummy frame.  */
5503           retval.call_dummy = STOP_STD_TERMINATE;
5504           this_action = BPSTAT_WHAT_STOP_SILENT;
5505           break;
5506         case bp_tracepoint:
5507         case bp_fast_tracepoint:
5508         case bp_static_tracepoint:
5509           /* Tracepoint hits should not be reported back to GDB, and
5510              if one got through somehow, it should have been filtered
5511              out already.  */
5512           internal_error (__FILE__, __LINE__,
5513                           _("bpstat_what: tracepoint encountered"));
5514           break;
5515         case bp_gnu_ifunc_resolver:
5516           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5517           this_action = BPSTAT_WHAT_SINGLE;
5518           break;
5519         case bp_gnu_ifunc_resolver_return:
5520           /* The breakpoint will be removed, execution will restart from the
5521              PC of the former breakpoint.  */
5522           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5523           break;
5524
5525         case bp_dprintf:
5526           this_action = BPSTAT_WHAT_STOP_SILENT;
5527           break;
5528
5529         default:
5530           internal_error (__FILE__, __LINE__,
5531                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5532         }
5533
5534       retval.main_action = max (retval.main_action, this_action);
5535     }
5536
5537   /* These operations may affect the bs->breakpoint_at state so they are
5538      delayed after MAIN_ACTION is decided above.  */
5539
5540   if (jit_event)
5541     {
5542       if (debug_infrun)
5543         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5544
5545       handle_jit_event ();
5546     }
5547
5548   for (bs = bs_head; bs != NULL; bs = bs->next)
5549     {
5550       struct breakpoint *b = bs->breakpoint_at;
5551
5552       if (b == NULL)
5553         continue;
5554       switch (b->type)
5555         {
5556         case bp_gnu_ifunc_resolver:
5557           gnu_ifunc_resolver_stop (b);
5558           break;
5559         case bp_gnu_ifunc_resolver_return:
5560           gnu_ifunc_resolver_return_stop (b);
5561           break;
5562         }
5563     }
5564
5565   return retval;
5566 }
5567
5568 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5569    without hardware support).  This isn't related to a specific bpstat,
5570    just to things like whether watchpoints are set.  */
5571
5572 int
5573 bpstat_should_step (void)
5574 {
5575   struct breakpoint *b;
5576
5577   ALL_BREAKPOINTS (b)
5578     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5579       return 1;
5580   return 0;
5581 }
5582
5583 int
5584 bpstat_causes_stop (bpstat bs)
5585 {
5586   for (; bs != NULL; bs = bs->next)
5587     if (bs->stop)
5588       return 1;
5589
5590   return 0;
5591 }
5592
5593 \f
5594
5595 /* Compute a string of spaces suitable to indent the next line
5596    so it starts at the position corresponding to the table column
5597    named COL_NAME in the currently active table of UIOUT.  */
5598
5599 static char *
5600 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5601 {
5602   static char wrap_indent[80];
5603   int i, total_width, width, align;
5604   char *text;
5605
5606   total_width = 0;
5607   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5608     {
5609       if (strcmp (text, col_name) == 0)
5610         {
5611           gdb_assert (total_width < sizeof wrap_indent);
5612           memset (wrap_indent, ' ', total_width);
5613           wrap_indent[total_width] = 0;
5614
5615           return wrap_indent;
5616         }
5617
5618       total_width += width + 1;
5619     }
5620
5621   return NULL;
5622 }
5623
5624 /* Determine if the locations of this breakpoint will have their conditions
5625    evaluated by the target, host or a mix of both.  Returns the following:
5626
5627     "host": Host evals condition.
5628     "host or target": Host or Target evals condition.
5629     "target": Target evals condition.
5630 */
5631
5632 static const char *
5633 bp_condition_evaluator (struct breakpoint *b)
5634 {
5635   struct bp_location *bl;
5636   char host_evals = 0;
5637   char target_evals = 0;
5638
5639   if (!b)
5640     return NULL;
5641
5642   if (!is_breakpoint (b))
5643     return NULL;
5644
5645   if (gdb_evaluates_breakpoint_condition_p ()
5646       || !target_supports_evaluation_of_breakpoint_conditions ())
5647     return condition_evaluation_host;
5648
5649   for (bl = b->loc; bl; bl = bl->next)
5650     {
5651       if (bl->cond_bytecode)
5652         target_evals++;
5653       else
5654         host_evals++;
5655     }
5656
5657   if (host_evals && target_evals)
5658     return condition_evaluation_both;
5659   else if (target_evals)
5660     return condition_evaluation_target;
5661   else
5662     return condition_evaluation_host;
5663 }
5664
5665 /* Determine the breakpoint location's condition evaluator.  This is
5666    similar to bp_condition_evaluator, but for locations.  */
5667
5668 static const char *
5669 bp_location_condition_evaluator (struct bp_location *bl)
5670 {
5671   if (bl && !is_breakpoint (bl->owner))
5672     return NULL;
5673
5674   if (gdb_evaluates_breakpoint_condition_p ()
5675       || !target_supports_evaluation_of_breakpoint_conditions ())
5676     return condition_evaluation_host;
5677
5678   if (bl && bl->cond_bytecode)
5679     return condition_evaluation_target;
5680   else
5681     return condition_evaluation_host;
5682 }
5683
5684 /* Print the LOC location out of the list of B->LOC locations.  */
5685
5686 static void
5687 print_breakpoint_location (struct breakpoint *b,
5688                            struct bp_location *loc)
5689 {
5690   struct ui_out *uiout = current_uiout;
5691   struct cleanup *old_chain = save_current_program_space ();
5692
5693   if (loc != NULL && loc->shlib_disabled)
5694     loc = NULL;
5695
5696   if (loc != NULL)
5697     set_current_program_space (loc->pspace);
5698
5699   if (b->display_canonical)
5700     ui_out_field_string (uiout, "what", b->addr_string);
5701   else if (loc && loc->source_file)
5702     {
5703       struct symbol *sym 
5704         = find_pc_sect_function (loc->address, loc->section);
5705       if (sym)
5706         {
5707           ui_out_text (uiout, "in ");
5708           ui_out_field_string (uiout, "func",
5709                                SYMBOL_PRINT_NAME (sym));
5710           ui_out_text (uiout, " ");
5711           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5712           ui_out_text (uiout, "at ");
5713         }
5714       ui_out_field_string (uiout, "file", loc->source_file);
5715       ui_out_text (uiout, ":");
5716       
5717       if (ui_out_is_mi_like_p (uiout))
5718         {
5719           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5720           const char *fullname = symtab_to_fullname (sal.symtab);
5721           
5722           ui_out_field_string (uiout, "fullname", fullname);
5723         }
5724       
5725       ui_out_field_int (uiout, "line", loc->line_number);
5726     }
5727   else if (loc)
5728     {
5729       struct ui_file *stb = mem_fileopen ();
5730       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5731
5732       print_address_symbolic (loc->gdbarch, loc->address, stb,
5733                               demangle, "");
5734       ui_out_field_stream (uiout, "at", stb);
5735
5736       do_cleanups (stb_chain);
5737     }
5738   else
5739     ui_out_field_string (uiout, "pending", b->addr_string);
5740
5741   if (loc && is_breakpoint (b)
5742       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5743       && bp_condition_evaluator (b) == condition_evaluation_both)
5744     {
5745       ui_out_text (uiout, " (");
5746       ui_out_field_string (uiout, "evaluated-by",
5747                            bp_location_condition_evaluator (loc));
5748       ui_out_text (uiout, ")");
5749     }
5750
5751   do_cleanups (old_chain);
5752 }
5753
5754 static const char *
5755 bptype_string (enum bptype type)
5756 {
5757   struct ep_type_description
5758     {
5759       enum bptype type;
5760       char *description;
5761     };
5762   static struct ep_type_description bptypes[] =
5763   {
5764     {bp_none, "?deleted?"},
5765     {bp_breakpoint, "breakpoint"},
5766     {bp_hardware_breakpoint, "hw breakpoint"},
5767     {bp_until, "until"},
5768     {bp_finish, "finish"},
5769     {bp_watchpoint, "watchpoint"},
5770     {bp_hardware_watchpoint, "hw watchpoint"},
5771     {bp_read_watchpoint, "read watchpoint"},
5772     {bp_access_watchpoint, "acc watchpoint"},
5773     {bp_longjmp, "longjmp"},
5774     {bp_longjmp_resume, "longjmp resume"},
5775     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5776     {bp_exception, "exception"},
5777     {bp_exception_resume, "exception resume"},
5778     {bp_step_resume, "step resume"},
5779     {bp_hp_step_resume, "high-priority step resume"},
5780     {bp_watchpoint_scope, "watchpoint scope"},
5781     {bp_call_dummy, "call dummy"},
5782     {bp_std_terminate, "std::terminate"},
5783     {bp_shlib_event, "shlib events"},
5784     {bp_thread_event, "thread events"},
5785     {bp_overlay_event, "overlay events"},
5786     {bp_longjmp_master, "longjmp master"},
5787     {bp_std_terminate_master, "std::terminate master"},
5788     {bp_exception_master, "exception master"},
5789     {bp_catchpoint, "catchpoint"},
5790     {bp_tracepoint, "tracepoint"},
5791     {bp_fast_tracepoint, "fast tracepoint"},
5792     {bp_static_tracepoint, "static tracepoint"},
5793     {bp_dprintf, "dprintf"},
5794     {bp_jit_event, "jit events"},
5795     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5796     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5797   };
5798
5799   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5800       || ((int) type != bptypes[(int) type].type))
5801     internal_error (__FILE__, __LINE__,
5802                     _("bptypes table does not describe type #%d."),
5803                     (int) type);
5804
5805   return bptypes[(int) type].description;
5806 }
5807
5808 /* Print B to gdb_stdout.  */
5809
5810 static void
5811 print_one_breakpoint_location (struct breakpoint *b,
5812                                struct bp_location *loc,
5813                                int loc_number,
5814                                struct bp_location **last_loc,
5815                                int allflag)
5816 {
5817   struct command_line *l;
5818   static char bpenables[] = "nynny";
5819
5820   struct ui_out *uiout = current_uiout;
5821   int header_of_multiple = 0;
5822   int part_of_multiple = (loc != NULL);
5823   struct value_print_options opts;
5824
5825   get_user_print_options (&opts);
5826
5827   gdb_assert (!loc || loc_number != 0);
5828   /* See comment in print_one_breakpoint concerning treatment of
5829      breakpoints with single disabled location.  */
5830   if (loc == NULL 
5831       && (b->loc != NULL 
5832           && (b->loc->next != NULL || !b->loc->enabled)))
5833     header_of_multiple = 1;
5834   if (loc == NULL)
5835     loc = b->loc;
5836
5837   annotate_record ();
5838
5839   /* 1 */
5840   annotate_field (0);
5841   if (part_of_multiple)
5842     {
5843       char *formatted;
5844       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5845       ui_out_field_string (uiout, "number", formatted);
5846       xfree (formatted);
5847     }
5848   else
5849     {
5850       ui_out_field_int (uiout, "number", b->number);
5851     }
5852
5853   /* 2 */
5854   annotate_field (1);
5855   if (part_of_multiple)
5856     ui_out_field_skip (uiout, "type");
5857   else
5858     ui_out_field_string (uiout, "type", bptype_string (b->type));
5859
5860   /* 3 */
5861   annotate_field (2);
5862   if (part_of_multiple)
5863     ui_out_field_skip (uiout, "disp");
5864   else
5865     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5866
5867
5868   /* 4 */
5869   annotate_field (3);
5870   if (part_of_multiple)
5871     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5872   else
5873     ui_out_field_fmt (uiout, "enabled", "%c", 
5874                       bpenables[(int) b->enable_state]);
5875   ui_out_spaces (uiout, 2);
5876
5877   
5878   /* 5 and 6 */
5879   if (b->ops != NULL && b->ops->print_one != NULL)
5880     {
5881       /* Although the print_one can possibly print all locations,
5882          calling it here is not likely to get any nice result.  So,
5883          make sure there's just one location.  */
5884       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5885       b->ops->print_one (b, last_loc);
5886     }
5887   else
5888     switch (b->type)
5889       {
5890       case bp_none:
5891         internal_error (__FILE__, __LINE__,
5892                         _("print_one_breakpoint: bp_none encountered\n"));
5893         break;
5894
5895       case bp_watchpoint:
5896       case bp_hardware_watchpoint:
5897       case bp_read_watchpoint:
5898       case bp_access_watchpoint:
5899         {
5900           struct watchpoint *w = (struct watchpoint *) b;
5901
5902           /* Field 4, the address, is omitted (which makes the columns
5903              not line up too nicely with the headers, but the effect
5904              is relatively readable).  */
5905           if (opts.addressprint)
5906             ui_out_field_skip (uiout, "addr");
5907           annotate_field (5);
5908           ui_out_field_string (uiout, "what", w->exp_string);
5909         }
5910         break;
5911
5912       case bp_breakpoint:
5913       case bp_hardware_breakpoint:
5914       case bp_until:
5915       case bp_finish:
5916       case bp_longjmp:
5917       case bp_longjmp_resume:
5918       case bp_longjmp_call_dummy:
5919       case bp_exception:
5920       case bp_exception_resume:
5921       case bp_step_resume:
5922       case bp_hp_step_resume:
5923       case bp_watchpoint_scope:
5924       case bp_call_dummy:
5925       case bp_std_terminate:
5926       case bp_shlib_event:
5927       case bp_thread_event:
5928       case bp_overlay_event:
5929       case bp_longjmp_master:
5930       case bp_std_terminate_master:
5931       case bp_exception_master:
5932       case bp_tracepoint:
5933       case bp_fast_tracepoint:
5934       case bp_static_tracepoint:
5935       case bp_dprintf:
5936       case bp_jit_event:
5937       case bp_gnu_ifunc_resolver:
5938       case bp_gnu_ifunc_resolver_return:
5939         if (opts.addressprint)
5940           {
5941             annotate_field (4);
5942             if (header_of_multiple)
5943               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5944             else if (b->loc == NULL || loc->shlib_disabled)
5945               ui_out_field_string (uiout, "addr", "<PENDING>");
5946             else
5947               ui_out_field_core_addr (uiout, "addr",
5948                                       loc->gdbarch, loc->address);
5949           }
5950         annotate_field (5);
5951         if (!header_of_multiple)
5952           print_breakpoint_location (b, loc);
5953         if (b->loc)
5954           *last_loc = b->loc;
5955         break;
5956       }
5957
5958
5959   /* For backward compatibility, don't display inferiors unless there
5960      are several.  */
5961   if (loc != NULL
5962       && !header_of_multiple
5963       && (allflag
5964           || (!gdbarch_has_global_breakpoints (target_gdbarch ())
5965               && (number_of_program_spaces () > 1
5966                   || number_of_inferiors () > 1)
5967               /* LOC is for existing B, it cannot be in
5968                  moribund_locations and thus having NULL OWNER.  */
5969               && loc->owner->type != bp_catchpoint)))
5970     {
5971       struct inferior *inf;
5972       int first = 1;
5973
5974       for (inf = inferior_list; inf != NULL; inf = inf->next)
5975         {
5976           if (inf->pspace == loc->pspace)
5977             {
5978               if (first)
5979                 {
5980                   first = 0;
5981                   ui_out_text (uiout, " inf ");
5982                 }
5983               else
5984                 ui_out_text (uiout, ", ");
5985               ui_out_text (uiout, plongest (inf->num));
5986             }
5987         }
5988     }
5989
5990   if (!part_of_multiple)
5991     {
5992       if (b->thread != -1)
5993         {
5994           /* FIXME: This seems to be redundant and lost here; see the
5995              "stop only in" line a little further down.  */
5996           ui_out_text (uiout, " thread ");
5997           ui_out_field_int (uiout, "thread", b->thread);
5998         }
5999       else if (b->task != 0)
6000         {
6001           ui_out_text (uiout, " task ");
6002           ui_out_field_int (uiout, "task", b->task);
6003         }
6004     }
6005
6006   ui_out_text (uiout, "\n");
6007
6008   if (!part_of_multiple)
6009     b->ops->print_one_detail (b, uiout);
6010
6011   if (part_of_multiple && frame_id_p (b->frame_id))
6012     {
6013       annotate_field (6);
6014       ui_out_text (uiout, "\tstop only in stack frame at ");
6015       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6016          the frame ID.  */
6017       ui_out_field_core_addr (uiout, "frame",
6018                               b->gdbarch, b->frame_id.stack_addr);
6019       ui_out_text (uiout, "\n");
6020     }
6021   
6022   if (!part_of_multiple && b->cond_string)
6023     {
6024       annotate_field (7);
6025       if (is_tracepoint (b))
6026         ui_out_text (uiout, "\ttrace only if ");
6027       else
6028         ui_out_text (uiout, "\tstop only if ");
6029       ui_out_field_string (uiout, "cond", b->cond_string);
6030
6031       /* Print whether the target is doing the breakpoint's condition
6032          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6033       if (is_breakpoint (b)
6034           && breakpoint_condition_evaluation_mode ()
6035           == condition_evaluation_target)
6036         {
6037           ui_out_text (uiout, " (");
6038           ui_out_field_string (uiout, "evaluated-by",
6039                                bp_condition_evaluator (b));
6040           ui_out_text (uiout, " evals)");
6041         }
6042       ui_out_text (uiout, "\n");
6043     }
6044
6045   if (!part_of_multiple && b->thread != -1)
6046     {
6047       /* FIXME should make an annotation for this.  */
6048       ui_out_text (uiout, "\tstop only in thread ");
6049       ui_out_field_int (uiout, "thread", b->thread);
6050       ui_out_text (uiout, "\n");
6051     }
6052   
6053   if (!part_of_multiple)
6054     {
6055       if (b->hit_count)
6056         {
6057           /* FIXME should make an annotation for this.  */
6058           if (is_catchpoint (b))
6059             ui_out_text (uiout, "\tcatchpoint");
6060           else if (is_tracepoint (b))
6061             ui_out_text (uiout, "\ttracepoint");
6062           else
6063             ui_out_text (uiout, "\tbreakpoint");
6064           ui_out_text (uiout, " already hit ");
6065           ui_out_field_int (uiout, "times", b->hit_count);
6066           if (b->hit_count == 1)
6067             ui_out_text (uiout, " time\n");
6068           else
6069             ui_out_text (uiout, " times\n");
6070         }
6071       else
6072         {
6073           /* Output the count also if it is zero, but only if this is mi.  */
6074           if (ui_out_is_mi_like_p (uiout))
6075             ui_out_field_int (uiout, "times", b->hit_count);
6076         }
6077     }
6078
6079   if (!part_of_multiple && b->ignore_count)
6080     {
6081       annotate_field (8);
6082       ui_out_text (uiout, "\tignore next ");
6083       ui_out_field_int (uiout, "ignore", b->ignore_count);
6084       ui_out_text (uiout, " hits\n");
6085     }
6086
6087   /* Note that an enable count of 1 corresponds to "enable once"
6088      behavior, which is reported by the combination of enablement and
6089      disposition, so we don't need to mention it here.  */
6090   if (!part_of_multiple && b->enable_count > 1)
6091     {
6092       annotate_field (8);
6093       ui_out_text (uiout, "\tdisable after ");
6094       /* Tweak the wording to clarify that ignore and enable counts
6095          are distinct, and have additive effect.  */
6096       if (b->ignore_count)
6097         ui_out_text (uiout, "additional ");
6098       else
6099         ui_out_text (uiout, "next ");
6100       ui_out_field_int (uiout, "enable", b->enable_count);
6101       ui_out_text (uiout, " hits\n");
6102     }
6103
6104   if (!part_of_multiple && is_tracepoint (b))
6105     {
6106       struct tracepoint *tp = (struct tracepoint *) b;
6107
6108       if (tp->traceframe_usage)
6109         {
6110           ui_out_text (uiout, "\ttrace buffer usage ");
6111           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6112           ui_out_text (uiout, " bytes\n");
6113         }
6114     }
6115
6116   l = b->commands ? b->commands->commands : NULL;
6117   if (!part_of_multiple && l)
6118     {
6119       struct cleanup *script_chain;
6120
6121       annotate_field (9);
6122       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6123       print_command_lines (uiout, l, 4);
6124       do_cleanups (script_chain);
6125     }
6126
6127   if (is_tracepoint (b))
6128     {
6129       struct tracepoint *t = (struct tracepoint *) b;
6130
6131       if (!part_of_multiple && t->pass_count)
6132         {
6133           annotate_field (10);
6134           ui_out_text (uiout, "\tpass count ");
6135           ui_out_field_int (uiout, "pass", t->pass_count);
6136           ui_out_text (uiout, " \n");
6137         }
6138
6139       /* Don't display it when tracepoint or tracepoint location is
6140          pending.   */
6141       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6142         {
6143           annotate_field (11);
6144
6145           if (ui_out_is_mi_like_p (uiout))
6146             ui_out_field_string (uiout, "installed",
6147                                  loc->inserted ? "y" : "n");
6148           else
6149             {
6150               if (loc->inserted)
6151                 ui_out_text (uiout, "\t");
6152               else
6153                 ui_out_text (uiout, "\tnot ");
6154               ui_out_text (uiout, "installed on target\n");
6155             }
6156         }
6157     }
6158
6159   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6160     {
6161       if (is_watchpoint (b))
6162         {
6163           struct watchpoint *w = (struct watchpoint *) b;
6164
6165           ui_out_field_string (uiout, "original-location", w->exp_string);
6166         }
6167       else if (b->addr_string)
6168         ui_out_field_string (uiout, "original-location", b->addr_string);
6169     }
6170 }
6171
6172 static void
6173 print_one_breakpoint (struct breakpoint *b,
6174                       struct bp_location **last_loc, 
6175                       int allflag)
6176 {
6177   struct cleanup *bkpt_chain;
6178   struct ui_out *uiout = current_uiout;
6179
6180   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6181
6182   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6183   do_cleanups (bkpt_chain);
6184
6185   /* If this breakpoint has custom print function,
6186      it's already printed.  Otherwise, print individual
6187      locations, if any.  */
6188   if (b->ops == NULL || b->ops->print_one == NULL)
6189     {
6190       /* If breakpoint has a single location that is disabled, we
6191          print it as if it had several locations, since otherwise it's
6192          hard to represent "breakpoint enabled, location disabled"
6193          situation.
6194
6195          Note that while hardware watchpoints have several locations
6196          internally, that's not a property exposed to user.  */
6197       if (b->loc 
6198           && !is_hardware_watchpoint (b)
6199           && (b->loc->next || !b->loc->enabled))
6200         {
6201           struct bp_location *loc;
6202           int n = 1;
6203
6204           for (loc = b->loc; loc; loc = loc->next, ++n)
6205             {
6206               struct cleanup *inner2 =
6207                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6208               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6209               do_cleanups (inner2);
6210             }
6211         }
6212     }
6213 }
6214
6215 static int
6216 breakpoint_address_bits (struct breakpoint *b)
6217 {
6218   int print_address_bits = 0;
6219   struct bp_location *loc;
6220
6221   for (loc = b->loc; loc; loc = loc->next)
6222     {
6223       int addr_bit;
6224
6225       /* Software watchpoints that aren't watching memory don't have
6226          an address to print.  */
6227       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6228         continue;
6229
6230       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6231       if (addr_bit > print_address_bits)
6232         print_address_bits = addr_bit;
6233     }
6234
6235   return print_address_bits;
6236 }
6237
6238 struct captured_breakpoint_query_args
6239   {
6240     int bnum;
6241   };
6242
6243 static int
6244 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6245 {
6246   struct captured_breakpoint_query_args *args = data;
6247   struct breakpoint *b;
6248   struct bp_location *dummy_loc = NULL;
6249
6250   ALL_BREAKPOINTS (b)
6251     {
6252       if (args->bnum == b->number)
6253         {
6254           print_one_breakpoint (b, &dummy_loc, 0);
6255           return GDB_RC_OK;
6256         }
6257     }
6258   return GDB_RC_NONE;
6259 }
6260
6261 enum gdb_rc
6262 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6263                       char **error_message)
6264 {
6265   struct captured_breakpoint_query_args args;
6266
6267   args.bnum = bnum;
6268   /* For the moment we don't trust print_one_breakpoint() to not throw
6269      an error.  */
6270   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6271                                  error_message, RETURN_MASK_ALL) < 0)
6272     return GDB_RC_FAIL;
6273   else
6274     return GDB_RC_OK;
6275 }
6276
6277 /* Return true if this breakpoint was set by the user, false if it is
6278    internal or momentary.  */
6279
6280 int
6281 user_breakpoint_p (struct breakpoint *b)
6282 {
6283   return b->number > 0;
6284 }
6285
6286 /* Print information on user settable breakpoint (watchpoint, etc)
6287    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6288    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6289    FILTER is non-NULL, call it on each breakpoint and only include the
6290    ones for which it returns non-zero.  Return the total number of
6291    breakpoints listed.  */
6292
6293 static int
6294 breakpoint_1 (char *args, int allflag, 
6295               int (*filter) (const struct breakpoint *))
6296 {
6297   struct breakpoint *b;
6298   struct bp_location *last_loc = NULL;
6299   int nr_printable_breakpoints;
6300   struct cleanup *bkpttbl_chain;
6301   struct value_print_options opts;
6302   int print_address_bits = 0;
6303   int print_type_col_width = 14;
6304   struct ui_out *uiout = current_uiout;
6305
6306   get_user_print_options (&opts);
6307
6308   /* Compute the number of rows in the table, as well as the size
6309      required for address fields.  */
6310   nr_printable_breakpoints = 0;
6311   ALL_BREAKPOINTS (b)
6312     {
6313       /* If we have a filter, only list the breakpoints it accepts.  */
6314       if (filter && !filter (b))
6315         continue;
6316
6317       /* If we have an "args" string, it is a list of breakpoints to 
6318          accept.  Skip the others.  */
6319       if (args != NULL && *args != '\0')
6320         {
6321           if (allflag && parse_and_eval_long (args) != b->number)
6322             continue;
6323           if (!allflag && !number_is_in_list (args, b->number))
6324             continue;
6325         }
6326
6327       if (allflag || user_breakpoint_p (b))
6328         {
6329           int addr_bit, type_len;
6330
6331           addr_bit = breakpoint_address_bits (b);
6332           if (addr_bit > print_address_bits)
6333             print_address_bits = addr_bit;
6334
6335           type_len = strlen (bptype_string (b->type));
6336           if (type_len > print_type_col_width)
6337             print_type_col_width = type_len;
6338
6339           nr_printable_breakpoints++;
6340         }
6341     }
6342
6343   if (opts.addressprint)
6344     bkpttbl_chain 
6345       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6346                                              nr_printable_breakpoints,
6347                                              "BreakpointTable");
6348   else
6349     bkpttbl_chain 
6350       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6351                                              nr_printable_breakpoints,
6352                                              "BreakpointTable");
6353
6354   if (nr_printable_breakpoints > 0)
6355     annotate_breakpoints_headers ();
6356   if (nr_printable_breakpoints > 0)
6357     annotate_field (0);
6358   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6359   if (nr_printable_breakpoints > 0)
6360     annotate_field (1);
6361   ui_out_table_header (uiout, print_type_col_width, ui_left,
6362                        "type", "Type");                         /* 2 */
6363   if (nr_printable_breakpoints > 0)
6364     annotate_field (2);
6365   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6366   if (nr_printable_breakpoints > 0)
6367     annotate_field (3);
6368   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6369   if (opts.addressprint)
6370     {
6371       if (nr_printable_breakpoints > 0)
6372         annotate_field (4);
6373       if (print_address_bits <= 32)
6374         ui_out_table_header (uiout, 10, ui_left, 
6375                              "addr", "Address");                /* 5 */
6376       else
6377         ui_out_table_header (uiout, 18, ui_left, 
6378                              "addr", "Address");                /* 5 */
6379     }
6380   if (nr_printable_breakpoints > 0)
6381     annotate_field (5);
6382   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6383   ui_out_table_body (uiout);
6384   if (nr_printable_breakpoints > 0)
6385     annotate_breakpoints_table ();
6386
6387   ALL_BREAKPOINTS (b)
6388     {
6389       QUIT;
6390       /* If we have a filter, only list the breakpoints it accepts.  */
6391       if (filter && !filter (b))
6392         continue;
6393
6394       /* If we have an "args" string, it is a list of breakpoints to 
6395          accept.  Skip the others.  */
6396
6397       if (args != NULL && *args != '\0')
6398         {
6399           if (allflag)  /* maintenance info breakpoint */
6400             {
6401               if (parse_and_eval_long (args) != b->number)
6402                 continue;
6403             }
6404           else          /* all others */
6405             {
6406               if (!number_is_in_list (args, b->number))
6407                 continue;
6408             }
6409         }
6410       /* We only print out user settable breakpoints unless the
6411          allflag is set.  */
6412       if (allflag || user_breakpoint_p (b))
6413         print_one_breakpoint (b, &last_loc, allflag);
6414     }
6415
6416   do_cleanups (bkpttbl_chain);
6417
6418   if (nr_printable_breakpoints == 0)
6419     {
6420       /* If there's a filter, let the caller decide how to report
6421          empty list.  */
6422       if (!filter)
6423         {
6424           if (args == NULL || *args == '\0')
6425             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6426           else
6427             ui_out_message (uiout, 0, 
6428                             "No breakpoint or watchpoint matching '%s'.\n",
6429                             args);
6430         }
6431     }
6432   else
6433     {
6434       if (last_loc && !server_command)
6435         set_next_address (last_loc->gdbarch, last_loc->address);
6436     }
6437
6438   /* FIXME?  Should this be moved up so that it is only called when
6439      there have been breakpoints? */
6440   annotate_breakpoints_table_end ();
6441
6442   return nr_printable_breakpoints;
6443 }
6444
6445 /* Display the value of default-collect in a way that is generally
6446    compatible with the breakpoint list.  */
6447
6448 static void
6449 default_collect_info (void)
6450 {
6451   struct ui_out *uiout = current_uiout;
6452
6453   /* If it has no value (which is frequently the case), say nothing; a
6454      message like "No default-collect." gets in user's face when it's
6455      not wanted.  */
6456   if (!*default_collect)
6457     return;
6458
6459   /* The following phrase lines up nicely with per-tracepoint collect
6460      actions.  */
6461   ui_out_text (uiout, "default collect ");
6462   ui_out_field_string (uiout, "default-collect", default_collect);
6463   ui_out_text (uiout, " \n");
6464 }
6465   
6466 static void
6467 breakpoints_info (char *args, int from_tty)
6468 {
6469   breakpoint_1 (args, 0, NULL);
6470
6471   default_collect_info ();
6472 }
6473
6474 static void
6475 watchpoints_info (char *args, int from_tty)
6476 {
6477   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6478   struct ui_out *uiout = current_uiout;
6479
6480   if (num_printed == 0)
6481     {
6482       if (args == NULL || *args == '\0')
6483         ui_out_message (uiout, 0, "No watchpoints.\n");
6484       else
6485         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6486     }
6487 }
6488
6489 static void
6490 maintenance_info_breakpoints (char *args, int from_tty)
6491 {
6492   breakpoint_1 (args, 1, NULL);
6493
6494   default_collect_info ();
6495 }
6496
6497 static int
6498 breakpoint_has_pc (struct breakpoint *b,
6499                    struct program_space *pspace,
6500                    CORE_ADDR pc, struct obj_section *section)
6501 {
6502   struct bp_location *bl = b->loc;
6503
6504   for (; bl; bl = bl->next)
6505     {
6506       if (bl->pspace == pspace
6507           && bl->address == pc
6508           && (!overlay_debugging || bl->section == section))
6509         return 1;         
6510     }
6511   return 0;
6512 }
6513
6514 /* Print a message describing any user-breakpoints set at PC.  This
6515    concerns with logical breakpoints, so we match program spaces, not
6516    address spaces.  */
6517
6518 static void
6519 describe_other_breakpoints (struct gdbarch *gdbarch,
6520                             struct program_space *pspace, CORE_ADDR pc,
6521                             struct obj_section *section, int thread)
6522 {
6523   int others = 0;
6524   struct breakpoint *b;
6525
6526   ALL_BREAKPOINTS (b)
6527     others += (user_breakpoint_p (b)
6528                && breakpoint_has_pc (b, pspace, pc, section));
6529   if (others > 0)
6530     {
6531       if (others == 1)
6532         printf_filtered (_("Note: breakpoint "));
6533       else /* if (others == ???) */
6534         printf_filtered (_("Note: breakpoints "));
6535       ALL_BREAKPOINTS (b)
6536         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6537           {
6538             others--;
6539             printf_filtered ("%d", b->number);
6540             if (b->thread == -1 && thread != -1)
6541               printf_filtered (" (all threads)");
6542             else if (b->thread != -1)
6543               printf_filtered (" (thread %d)", b->thread);
6544             printf_filtered ("%s%s ",
6545                              ((b->enable_state == bp_disabled
6546                                || b->enable_state == bp_call_disabled)
6547                               ? " (disabled)"
6548                               : b->enable_state == bp_permanent 
6549                               ? " (permanent)"
6550                               : ""),
6551                              (others > 1) ? "," 
6552                              : ((others == 1) ? " and" : ""));
6553           }
6554       printf_filtered (_("also set at pc "));
6555       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6556       printf_filtered (".\n");
6557     }
6558 }
6559 \f
6560
6561 /* Return true iff it is meaningful to use the address member of
6562    BPT.  For some breakpoint types, the address member is irrelevant
6563    and it makes no sense to attempt to compare it to other addresses
6564    (or use it for any other purpose either).
6565
6566    More specifically, each of the following breakpoint types will
6567    always have a zero valued address and we don't want to mark
6568    breakpoints of any of these types to be a duplicate of an actual
6569    breakpoint at address zero:
6570
6571       bp_watchpoint
6572       bp_catchpoint
6573
6574 */
6575
6576 static int
6577 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6578 {
6579   enum bptype type = bpt->type;
6580
6581   return (type != bp_watchpoint && type != bp_catchpoint);
6582 }
6583
6584 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6585    true if LOC1 and LOC2 represent the same watchpoint location.  */
6586
6587 static int
6588 watchpoint_locations_match (struct bp_location *loc1, 
6589                             struct bp_location *loc2)
6590 {
6591   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6592   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6593
6594   /* Both of them must exist.  */
6595   gdb_assert (w1 != NULL);
6596   gdb_assert (w2 != NULL);
6597
6598   /* If the target can evaluate the condition expression in hardware,
6599      then we we need to insert both watchpoints even if they are at
6600      the same place.  Otherwise the watchpoint will only trigger when
6601      the condition of whichever watchpoint was inserted evaluates to
6602      true, not giving a chance for GDB to check the condition of the
6603      other watchpoint.  */
6604   if ((w1->cond_exp
6605        && target_can_accel_watchpoint_condition (loc1->address, 
6606                                                  loc1->length,
6607                                                  loc1->watchpoint_type,
6608                                                  w1->cond_exp))
6609       || (w2->cond_exp
6610           && target_can_accel_watchpoint_condition (loc2->address, 
6611                                                     loc2->length,
6612                                                     loc2->watchpoint_type,
6613                                                     w2->cond_exp)))
6614     return 0;
6615
6616   /* Note that this checks the owner's type, not the location's.  In
6617      case the target does not support read watchpoints, but does
6618      support access watchpoints, we'll have bp_read_watchpoint
6619      watchpoints with hw_access locations.  Those should be considered
6620      duplicates of hw_read locations.  The hw_read locations will
6621      become hw_access locations later.  */
6622   return (loc1->owner->type == loc2->owner->type
6623           && loc1->pspace->aspace == loc2->pspace->aspace
6624           && loc1->address == loc2->address
6625           && loc1->length == loc2->length);
6626 }
6627
6628 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6629    same breakpoint location.  In most targets, this can only be true
6630    if ASPACE1 matches ASPACE2.  On targets that have global
6631    breakpoints, the address space doesn't really matter.  */
6632
6633 static int
6634 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6635                           struct address_space *aspace2, CORE_ADDR addr2)
6636 {
6637   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6638            || aspace1 == aspace2)
6639           && addr1 == addr2);
6640 }
6641
6642 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6643    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6644    matches ASPACE2.  On targets that have global breakpoints, the address
6645    space doesn't really matter.  */
6646
6647 static int
6648 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6649                                 int len1, struct address_space *aspace2,
6650                                 CORE_ADDR addr2)
6651 {
6652   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6653            || aspace1 == aspace2)
6654           && addr2 >= addr1 && addr2 < addr1 + len1);
6655 }
6656
6657 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6658    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6659    matches the breakpoint's address space.  On targets that have global
6660    breakpoints, the address space doesn't really matter.  */
6661
6662 static int
6663 breakpoint_location_address_match (struct bp_location *bl,
6664                                    struct address_space *aspace,
6665                                    CORE_ADDR addr)
6666 {
6667   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6668                                     aspace, addr)
6669           || (bl->length
6670               && breakpoint_address_match_range (bl->pspace->aspace,
6671                                                  bl->address, bl->length,
6672                                                  aspace, addr)));
6673 }
6674
6675 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6676    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6677    true, otherwise returns false.  */
6678
6679 static int
6680 tracepoint_locations_match (struct bp_location *loc1,
6681                             struct bp_location *loc2)
6682 {
6683   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6684     /* Since tracepoint locations are never duplicated with others', tracepoint
6685        locations at the same address of different tracepoints are regarded as
6686        different locations.  */
6687     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6688   else
6689     return 0;
6690 }
6691
6692 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6693    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6694    represent the same location.  */
6695
6696 static int
6697 breakpoint_locations_match (struct bp_location *loc1, 
6698                             struct bp_location *loc2)
6699 {
6700   int hw_point1, hw_point2;
6701
6702   /* Both of them must not be in moribund_locations.  */
6703   gdb_assert (loc1->owner != NULL);
6704   gdb_assert (loc2->owner != NULL);
6705
6706   hw_point1 = is_hardware_watchpoint (loc1->owner);
6707   hw_point2 = is_hardware_watchpoint (loc2->owner);
6708
6709   if (hw_point1 != hw_point2)
6710     return 0;
6711   else if (hw_point1)
6712     return watchpoint_locations_match (loc1, loc2);
6713   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6714     return tracepoint_locations_match (loc1, loc2);
6715   else
6716     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6717     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6718                                      loc2->pspace->aspace, loc2->address)
6719             && loc1->length == loc2->length);
6720 }
6721
6722 static void
6723 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6724                                int bnum, int have_bnum)
6725 {
6726   /* The longest string possibly returned by hex_string_custom
6727      is 50 chars.  These must be at least that big for safety.  */
6728   char astr1[64];
6729   char astr2[64];
6730
6731   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6732   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6733   if (have_bnum)
6734     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6735              bnum, astr1, astr2);
6736   else
6737     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6738 }
6739
6740 /* Adjust a breakpoint's address to account for architectural
6741    constraints on breakpoint placement.  Return the adjusted address.
6742    Note: Very few targets require this kind of adjustment.  For most
6743    targets, this function is simply the identity function.  */
6744
6745 static CORE_ADDR
6746 adjust_breakpoint_address (struct gdbarch *gdbarch,
6747                            CORE_ADDR bpaddr, enum bptype bptype)
6748 {
6749   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6750     {
6751       /* Very few targets need any kind of breakpoint adjustment.  */
6752       return bpaddr;
6753     }
6754   else if (bptype == bp_watchpoint
6755            || bptype == bp_hardware_watchpoint
6756            || bptype == bp_read_watchpoint
6757            || bptype == bp_access_watchpoint
6758            || bptype == bp_catchpoint)
6759     {
6760       /* Watchpoints and the various bp_catch_* eventpoints should not
6761          have their addresses modified.  */
6762       return bpaddr;
6763     }
6764   else
6765     {
6766       CORE_ADDR adjusted_bpaddr;
6767
6768       /* Some targets have architectural constraints on the placement
6769          of breakpoint instructions.  Obtain the adjusted address.  */
6770       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6771
6772       /* An adjusted breakpoint address can significantly alter
6773          a user's expectations.  Print a warning if an adjustment
6774          is required.  */
6775       if (adjusted_bpaddr != bpaddr)
6776         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6777
6778       return adjusted_bpaddr;
6779     }
6780 }
6781
6782 void
6783 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6784                   struct breakpoint *owner)
6785 {
6786   memset (loc, 0, sizeof (*loc));
6787
6788   gdb_assert (ops != NULL);
6789
6790   loc->ops = ops;
6791   loc->owner = owner;
6792   loc->cond = NULL;
6793   loc->cond_bytecode = NULL;
6794   loc->shlib_disabled = 0;
6795   loc->enabled = 1;
6796
6797   switch (owner->type)
6798     {
6799     case bp_breakpoint:
6800     case bp_until:
6801     case bp_finish:
6802     case bp_longjmp:
6803     case bp_longjmp_resume:
6804     case bp_longjmp_call_dummy:
6805     case bp_exception:
6806     case bp_exception_resume:
6807     case bp_step_resume:
6808     case bp_hp_step_resume:
6809     case bp_watchpoint_scope:
6810     case bp_call_dummy:
6811     case bp_std_terminate:
6812     case bp_shlib_event:
6813     case bp_thread_event:
6814     case bp_overlay_event:
6815     case bp_jit_event:
6816     case bp_longjmp_master:
6817     case bp_std_terminate_master:
6818     case bp_exception_master:
6819     case bp_gnu_ifunc_resolver:
6820     case bp_gnu_ifunc_resolver_return:
6821     case bp_dprintf:
6822       loc->loc_type = bp_loc_software_breakpoint;
6823       mark_breakpoint_location_modified (loc);
6824       break;
6825     case bp_hardware_breakpoint:
6826       loc->loc_type = bp_loc_hardware_breakpoint;
6827       mark_breakpoint_location_modified (loc);
6828       break;
6829     case bp_hardware_watchpoint:
6830     case bp_read_watchpoint:
6831     case bp_access_watchpoint:
6832       loc->loc_type = bp_loc_hardware_watchpoint;
6833       break;
6834     case bp_watchpoint:
6835     case bp_catchpoint:
6836     case bp_tracepoint:
6837     case bp_fast_tracepoint:
6838     case bp_static_tracepoint:
6839       loc->loc_type = bp_loc_other;
6840       break;
6841     default:
6842       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6843     }
6844
6845   loc->refc = 1;
6846 }
6847
6848 /* Allocate a struct bp_location.  */
6849
6850 static struct bp_location *
6851 allocate_bp_location (struct breakpoint *bpt)
6852 {
6853   return bpt->ops->allocate_location (bpt);
6854 }
6855
6856 static void
6857 free_bp_location (struct bp_location *loc)
6858 {
6859   loc->ops->dtor (loc);
6860   xfree (loc);
6861 }
6862
6863 /* Increment reference count.  */
6864
6865 static void
6866 incref_bp_location (struct bp_location *bl)
6867 {
6868   ++bl->refc;
6869 }
6870
6871 /* Decrement reference count.  If the reference count reaches 0,
6872    destroy the bp_location.  Sets *BLP to NULL.  */
6873
6874 static void
6875 decref_bp_location (struct bp_location **blp)
6876 {
6877   gdb_assert ((*blp)->refc > 0);
6878
6879   if (--(*blp)->refc == 0)
6880     free_bp_location (*blp);
6881   *blp = NULL;
6882 }
6883
6884 /* Add breakpoint B at the end of the global breakpoint chain.  */
6885
6886 static void
6887 add_to_breakpoint_chain (struct breakpoint *b)
6888 {
6889   struct breakpoint *b1;
6890
6891   /* Add this breakpoint to the end of the chain so that a list of
6892      breakpoints will come out in order of increasing numbers.  */
6893
6894   b1 = breakpoint_chain;
6895   if (b1 == 0)
6896     breakpoint_chain = b;
6897   else
6898     {
6899       while (b1->next)
6900         b1 = b1->next;
6901       b1->next = b;
6902     }
6903 }
6904
6905 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6906
6907 static void
6908 init_raw_breakpoint_without_location (struct breakpoint *b,
6909                                       struct gdbarch *gdbarch,
6910                                       enum bptype bptype,
6911                                       const struct breakpoint_ops *ops)
6912 {
6913   memset (b, 0, sizeof (*b));
6914
6915   gdb_assert (ops != NULL);
6916
6917   b->ops = ops;
6918   b->type = bptype;
6919   b->gdbarch = gdbarch;
6920   b->language = current_language->la_language;
6921   b->input_radix = input_radix;
6922   b->thread = -1;
6923   b->enable_state = bp_enabled;
6924   b->next = 0;
6925   b->silent = 0;
6926   b->ignore_count = 0;
6927   b->commands = NULL;
6928   b->frame_id = null_frame_id;
6929   b->condition_not_parsed = 0;
6930   b->py_bp_object = NULL;
6931   b->related_breakpoint = b;
6932 }
6933
6934 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6935    that has type BPTYPE and has no locations as yet.  */
6936
6937 static struct breakpoint *
6938 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6939                                      enum bptype bptype,
6940                                      const struct breakpoint_ops *ops)
6941 {
6942   struct breakpoint *b = XNEW (struct breakpoint);
6943
6944   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6945   add_to_breakpoint_chain (b);
6946   return b;
6947 }
6948
6949 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6950    resolutions should be made as the user specified the location explicitly
6951    enough.  */
6952
6953 static void
6954 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6955 {
6956   gdb_assert (loc->owner != NULL);
6957
6958   if (loc->owner->type == bp_breakpoint
6959       || loc->owner->type == bp_hardware_breakpoint
6960       || is_tracepoint (loc->owner))
6961     {
6962       int is_gnu_ifunc;
6963       const char *function_name;
6964       CORE_ADDR func_addr;
6965
6966       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6967                                           &func_addr, NULL, &is_gnu_ifunc);
6968
6969       if (is_gnu_ifunc && !explicit_loc)
6970         {
6971           struct breakpoint *b = loc->owner;
6972
6973           gdb_assert (loc->pspace == current_program_space);
6974           if (gnu_ifunc_resolve_name (function_name,
6975                                       &loc->requested_address))
6976             {
6977               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6978               loc->address = adjust_breakpoint_address (loc->gdbarch,
6979                                                         loc->requested_address,
6980                                                         b->type);
6981             }
6982           else if (b->type == bp_breakpoint && b->loc == loc
6983                    && loc->next == NULL && b->related_breakpoint == b)
6984             {
6985               /* Create only the whole new breakpoint of this type but do not
6986                  mess more complicated breakpoints with multiple locations.  */
6987               b->type = bp_gnu_ifunc_resolver;
6988               /* Remember the resolver's address for use by the return
6989                  breakpoint.  */
6990               loc->related_address = func_addr;
6991             }
6992         }
6993
6994       if (function_name)
6995         loc->function_name = xstrdup (function_name);
6996     }
6997 }
6998
6999 /* Attempt to determine architecture of location identified by SAL.  */
7000 struct gdbarch *
7001 get_sal_arch (struct symtab_and_line sal)
7002 {
7003   if (sal.section)
7004     return get_objfile_arch (sal.section->objfile);
7005   if (sal.symtab)
7006     return get_objfile_arch (sal.symtab->objfile);
7007
7008   return NULL;
7009 }
7010
7011 /* Low level routine for partially initializing a breakpoint of type
7012    BPTYPE.  The newly created breakpoint's address, section, source
7013    file name, and line number are provided by SAL.
7014
7015    It is expected that the caller will complete the initialization of
7016    the newly created breakpoint struct as well as output any status
7017    information regarding the creation of a new breakpoint.  */
7018
7019 static void
7020 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7021                      struct symtab_and_line sal, enum bptype bptype,
7022                      const struct breakpoint_ops *ops)
7023 {
7024   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7025
7026   add_location_to_breakpoint (b, &sal);
7027
7028   if (bptype != bp_catchpoint)
7029     gdb_assert (sal.pspace != NULL);
7030
7031   /* Store the program space that was used to set the breakpoint,
7032      except for ordinary breakpoints, which are independent of the
7033      program space.  */
7034   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7035     b->pspace = sal.pspace;
7036
7037   annotate_breakpoints_changed ();
7038 }
7039
7040 /* set_raw_breakpoint is a low level routine for allocating and
7041    partially initializing a breakpoint of type BPTYPE.  The newly
7042    created breakpoint's address, section, source file name, and line
7043    number are provided by SAL.  The newly created and partially
7044    initialized breakpoint is added to the breakpoint chain and
7045    is also returned as the value of this function.
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.  In
7050    particular, set_raw_breakpoint does NOT set the breakpoint
7051    number!  Care should be taken to not allow an error to occur
7052    prior to completing the initialization of the breakpoint.  If this
7053    should happen, a bogus breakpoint will be left on the chain.  */
7054
7055 struct breakpoint *
7056 set_raw_breakpoint (struct gdbarch *gdbarch,
7057                     struct symtab_and_line sal, enum bptype bptype,
7058                     const struct breakpoint_ops *ops)
7059 {
7060   struct breakpoint *b = XNEW (struct breakpoint);
7061
7062   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7063   add_to_breakpoint_chain (b);
7064   return b;
7065 }
7066
7067
7068 /* Note that the breakpoint object B describes a permanent breakpoint
7069    instruction, hard-wired into the inferior's code.  */
7070 void
7071 make_breakpoint_permanent (struct breakpoint *b)
7072 {
7073   struct bp_location *bl;
7074
7075   b->enable_state = bp_permanent;
7076
7077   /* By definition, permanent breakpoints are already present in the
7078      code.  Mark all locations as inserted.  For now,
7079      make_breakpoint_permanent is called in just one place, so it's
7080      hard to say if it's reasonable to have permanent breakpoint with
7081      multiple locations or not, but it's easy to implement.  */
7082   for (bl = b->loc; bl; bl = bl->next)
7083     bl->inserted = 1;
7084 }
7085
7086 /* Call this routine when stepping and nexting to enable a breakpoint
7087    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7088    initiated the operation.  */
7089
7090 void
7091 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7092 {
7093   struct breakpoint *b, *b_tmp;
7094   int thread = tp->num;
7095
7096   /* To avoid having to rescan all objfile symbols at every step,
7097      we maintain a list of continually-inserted but always disabled
7098      longjmp "master" breakpoints.  Here, we simply create momentary
7099      clones of those and enable them for the requested thread.  */
7100   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7101     if (b->pspace == current_program_space
7102         && (b->type == bp_longjmp_master
7103             || b->type == bp_exception_master))
7104       {
7105         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7106         struct breakpoint *clone;
7107
7108         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7109            after their removal.  */
7110         clone = momentary_breakpoint_from_master (b, type,
7111                                                   &longjmp_breakpoint_ops);
7112         clone->thread = thread;
7113       }
7114
7115   tp->initiating_frame = frame;
7116 }
7117
7118 /* Delete all longjmp breakpoints from THREAD.  */
7119 void
7120 delete_longjmp_breakpoint (int thread)
7121 {
7122   struct breakpoint *b, *b_tmp;
7123
7124   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7125     if (b->type == bp_longjmp || b->type == bp_exception)
7126       {
7127         if (b->thread == thread)
7128           delete_breakpoint (b);
7129       }
7130 }
7131
7132 void
7133 delete_longjmp_breakpoint_at_next_stop (int thread)
7134 {
7135   struct breakpoint *b, *b_tmp;
7136
7137   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7138     if (b->type == bp_longjmp || b->type == bp_exception)
7139       {
7140         if (b->thread == thread)
7141           b->disposition = disp_del_at_next_stop;
7142       }
7143 }
7144
7145 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7146    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7147    pointer to any of them.  Return NULL if this system cannot place longjmp
7148    breakpoints.  */
7149
7150 struct breakpoint *
7151 set_longjmp_breakpoint_for_call_dummy (void)
7152 {
7153   struct breakpoint *b, *retval = NULL;
7154
7155   ALL_BREAKPOINTS (b)
7156     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7157       {
7158         struct breakpoint *new_b;
7159
7160         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7161                                                   &momentary_breakpoint_ops);
7162         new_b->thread = pid_to_thread_id (inferior_ptid);
7163
7164         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7165
7166         gdb_assert (new_b->related_breakpoint == new_b);
7167         if (retval == NULL)
7168           retval = new_b;
7169         new_b->related_breakpoint = retval;
7170         while (retval->related_breakpoint != new_b->related_breakpoint)
7171           retval = retval->related_breakpoint;
7172         retval->related_breakpoint = new_b;
7173       }
7174
7175   return retval;
7176 }
7177
7178 /* Verify all existing dummy frames and their associated breakpoints for
7179    THREAD.  Remove those which can no longer be found in the current frame
7180    stack.
7181
7182    You should call this function only at places where it is safe to currently
7183    unwind the whole stack.  Failed stack unwind would discard live dummy
7184    frames.  */
7185
7186 void
7187 check_longjmp_breakpoint_for_call_dummy (int thread)
7188 {
7189   struct breakpoint *b, *b_tmp;
7190
7191   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7192     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7193       {
7194         struct breakpoint *dummy_b = b->related_breakpoint;
7195
7196         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7197           dummy_b = dummy_b->related_breakpoint;
7198         if (dummy_b->type != bp_call_dummy
7199             || frame_find_by_id (dummy_b->frame_id) != NULL)
7200           continue;
7201         
7202         dummy_frame_discard (dummy_b->frame_id);
7203
7204         while (b->related_breakpoint != b)
7205           {
7206             if (b_tmp == b->related_breakpoint)
7207               b_tmp = b->related_breakpoint->next;
7208             delete_breakpoint (b->related_breakpoint);
7209           }
7210         delete_breakpoint (b);
7211       }
7212 }
7213
7214 void
7215 enable_overlay_breakpoints (void)
7216 {
7217   struct breakpoint *b;
7218
7219   ALL_BREAKPOINTS (b)
7220     if (b->type == bp_overlay_event)
7221     {
7222       b->enable_state = bp_enabled;
7223       update_global_location_list (1);
7224       overlay_events_enabled = 1;
7225     }
7226 }
7227
7228 void
7229 disable_overlay_breakpoints (void)
7230 {
7231   struct breakpoint *b;
7232
7233   ALL_BREAKPOINTS (b)
7234     if (b->type == bp_overlay_event)
7235     {
7236       b->enable_state = bp_disabled;
7237       update_global_location_list (0);
7238       overlay_events_enabled = 0;
7239     }
7240 }
7241
7242 /* Set an active std::terminate breakpoint for each std::terminate
7243    master breakpoint.  */
7244 void
7245 set_std_terminate_breakpoint (void)
7246 {
7247   struct breakpoint *b, *b_tmp;
7248
7249   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7250     if (b->pspace == current_program_space
7251         && b->type == bp_std_terminate_master)
7252       {
7253         momentary_breakpoint_from_master (b, bp_std_terminate,
7254                                           &momentary_breakpoint_ops);
7255       }
7256 }
7257
7258 /* Delete all the std::terminate breakpoints.  */
7259 void
7260 delete_std_terminate_breakpoint (void)
7261 {
7262   struct breakpoint *b, *b_tmp;
7263
7264   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7265     if (b->type == bp_std_terminate)
7266       delete_breakpoint (b);
7267 }
7268
7269 struct breakpoint *
7270 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7271 {
7272   struct breakpoint *b;
7273
7274   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7275                                   &internal_breakpoint_ops);
7276
7277   b->enable_state = bp_enabled;
7278   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7279   b->addr_string
7280     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7281
7282   update_global_location_list_nothrow (1);
7283
7284   return b;
7285 }
7286
7287 void
7288 remove_thread_event_breakpoints (void)
7289 {
7290   struct breakpoint *b, *b_tmp;
7291
7292   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7293     if (b->type == bp_thread_event
7294         && b->loc->pspace == current_program_space)
7295       delete_breakpoint (b);
7296 }
7297
7298 struct lang_and_radix
7299   {
7300     enum language lang;
7301     int radix;
7302   };
7303
7304 /* Create a breakpoint for JIT code registration and unregistration.  */
7305
7306 struct breakpoint *
7307 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7308 {
7309   struct breakpoint *b;
7310
7311   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7312                                   &internal_breakpoint_ops);
7313   update_global_location_list_nothrow (1);
7314   return b;
7315 }
7316
7317 /* Remove JIT code registration and unregistration breakpoint(s).  */
7318
7319 void
7320 remove_jit_event_breakpoints (void)
7321 {
7322   struct breakpoint *b, *b_tmp;
7323
7324   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7325     if (b->type == bp_jit_event
7326         && b->loc->pspace == current_program_space)
7327       delete_breakpoint (b);
7328 }
7329
7330 void
7331 remove_solib_event_breakpoints (void)
7332 {
7333   struct breakpoint *b, *b_tmp;
7334
7335   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7336     if (b->type == bp_shlib_event
7337         && b->loc->pspace == current_program_space)
7338       delete_breakpoint (b);
7339 }
7340
7341 struct breakpoint *
7342 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7343 {
7344   struct breakpoint *b;
7345
7346   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7347                                   &internal_breakpoint_ops);
7348   update_global_location_list_nothrow (1);
7349   return b;
7350 }
7351
7352 /* Disable any breakpoints that are on code in shared libraries.  Only
7353    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7354
7355 void
7356 disable_breakpoints_in_shlibs (void)
7357 {
7358   struct bp_location *loc, **locp_tmp;
7359
7360   ALL_BP_LOCATIONS (loc, locp_tmp)
7361   {
7362     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7363     struct breakpoint *b = loc->owner;
7364
7365     /* We apply the check to all breakpoints, including disabled for
7366        those with loc->duplicate set.  This is so that when breakpoint
7367        becomes enabled, or the duplicate is removed, gdb will try to
7368        insert all breakpoints.  If we don't set shlib_disabled here,
7369        we'll try to insert those breakpoints and fail.  */
7370     if (((b->type == bp_breakpoint)
7371          || (b->type == bp_jit_event)
7372          || (b->type == bp_hardware_breakpoint)
7373          || (is_tracepoint (b)))
7374         && loc->pspace == current_program_space
7375         && !loc->shlib_disabled
7376 #ifdef PC_SOLIB
7377         && PC_SOLIB (loc->address)
7378 #else
7379         && solib_name_from_address (loc->pspace, loc->address)
7380 #endif
7381         )
7382       {
7383         loc->shlib_disabled = 1;
7384       }
7385   }
7386 }
7387
7388 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7389    library.  Only apply to enabled breakpoints, disabled ones can just stay
7390    disabled.  */
7391
7392 static void
7393 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7394 {
7395   struct bp_location *loc, **locp_tmp;
7396   int disabled_shlib_breaks = 0;
7397
7398   /* SunOS a.out shared libraries are always mapped, so do not
7399      disable breakpoints; they will only be reported as unloaded
7400      through clear_solib when GDB discards its shared library
7401      list.  See clear_solib for more information.  */
7402   if (exec_bfd != NULL
7403       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7404     return;
7405
7406   ALL_BP_LOCATIONS (loc, locp_tmp)
7407   {
7408     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7409     struct breakpoint *b = loc->owner;
7410
7411     if (solib->pspace == loc->pspace
7412         && !loc->shlib_disabled
7413         && (((b->type == bp_breakpoint
7414               || b->type == bp_jit_event
7415               || b->type == bp_hardware_breakpoint)
7416              && (loc->loc_type == bp_loc_hardware_breakpoint
7417                  || loc->loc_type == bp_loc_software_breakpoint))
7418             || is_tracepoint (b))
7419         && solib_contains_address_p (solib, loc->address))
7420       {
7421         loc->shlib_disabled = 1;
7422         /* At this point, we cannot rely on remove_breakpoint
7423            succeeding so we must mark the breakpoint as not inserted
7424            to prevent future errors occurring in remove_breakpoints.  */
7425         loc->inserted = 0;
7426
7427         /* This may cause duplicate notifications for the same breakpoint.  */
7428         observer_notify_breakpoint_modified (b);
7429
7430         if (!disabled_shlib_breaks)
7431           {
7432             target_terminal_ours_for_output ();
7433             warning (_("Temporarily disabling breakpoints "
7434                        "for unloaded shared library \"%s\""),
7435                      solib->so_name);
7436           }
7437         disabled_shlib_breaks = 1;
7438       }
7439   }
7440 }
7441
7442 /* FORK & VFORK catchpoints.  */
7443
7444 /* An instance of this type is used to represent a fork or vfork
7445    catchpoint.  It includes a "struct breakpoint" as a kind of base
7446    class; users downcast to "struct breakpoint *" when needed.  A
7447    breakpoint is really of this type iff its ops pointer points to
7448    CATCH_FORK_BREAKPOINT_OPS.  */
7449
7450 struct fork_catchpoint
7451 {
7452   /* The base class.  */
7453   struct breakpoint base;
7454
7455   /* Process id of a child process whose forking triggered this
7456      catchpoint.  This field is only valid immediately after this
7457      catchpoint has triggered.  */
7458   ptid_t forked_inferior_pid;
7459 };
7460
7461 /* Implement the "insert" breakpoint_ops method for fork
7462    catchpoints.  */
7463
7464 static int
7465 insert_catch_fork (struct bp_location *bl)
7466 {
7467   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7468 }
7469
7470 /* Implement the "remove" breakpoint_ops method for fork
7471    catchpoints.  */
7472
7473 static int
7474 remove_catch_fork (struct bp_location *bl)
7475 {
7476   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7477 }
7478
7479 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7480    catchpoints.  */
7481
7482 static int
7483 breakpoint_hit_catch_fork (const struct bp_location *bl,
7484                            struct address_space *aspace, CORE_ADDR bp_addr,
7485                            const struct target_waitstatus *ws)
7486 {
7487   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7488
7489   if (ws->kind != TARGET_WAITKIND_FORKED)
7490     return 0;
7491
7492   c->forked_inferior_pid = ws->value.related_pid;
7493   return 1;
7494 }
7495
7496 /* Implement the "print_it" breakpoint_ops method for fork
7497    catchpoints.  */
7498
7499 static enum print_stop_action
7500 print_it_catch_fork (bpstat bs)
7501 {
7502   struct ui_out *uiout = current_uiout;
7503   struct breakpoint *b = bs->breakpoint_at;
7504   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7505
7506   annotate_catchpoint (b->number);
7507   if (b->disposition == disp_del)
7508     ui_out_text (uiout, "\nTemporary catchpoint ");
7509   else
7510     ui_out_text (uiout, "\nCatchpoint ");
7511   if (ui_out_is_mi_like_p (uiout))
7512     {
7513       ui_out_field_string (uiout, "reason",
7514                            async_reason_lookup (EXEC_ASYNC_FORK));
7515       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7516     }
7517   ui_out_field_int (uiout, "bkptno", b->number);
7518   ui_out_text (uiout, " (forked process ");
7519   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7520   ui_out_text (uiout, "), ");
7521   return PRINT_SRC_AND_LOC;
7522 }
7523
7524 /* Implement the "print_one" breakpoint_ops method for fork
7525    catchpoints.  */
7526
7527 static void
7528 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7529 {
7530   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7531   struct value_print_options opts;
7532   struct ui_out *uiout = current_uiout;
7533
7534   get_user_print_options (&opts);
7535
7536   /* Field 4, the address, is omitted (which makes the columns not
7537      line up too nicely with the headers, but the effect is relatively
7538      readable).  */
7539   if (opts.addressprint)
7540     ui_out_field_skip (uiout, "addr");
7541   annotate_field (5);
7542   ui_out_text (uiout, "fork");
7543   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7544     {
7545       ui_out_text (uiout, ", process ");
7546       ui_out_field_int (uiout, "what",
7547                         ptid_get_pid (c->forked_inferior_pid));
7548       ui_out_spaces (uiout, 1);
7549     }
7550
7551   if (ui_out_is_mi_like_p (uiout))
7552     ui_out_field_string (uiout, "catch-type", "fork");
7553 }
7554
7555 /* Implement the "print_mention" breakpoint_ops method for fork
7556    catchpoints.  */
7557
7558 static void
7559 print_mention_catch_fork (struct breakpoint *b)
7560 {
7561   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7562 }
7563
7564 /* Implement the "print_recreate" breakpoint_ops method for fork
7565    catchpoints.  */
7566
7567 static void
7568 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7569 {
7570   fprintf_unfiltered (fp, "catch fork");
7571   print_recreate_thread (b, fp);
7572 }
7573
7574 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7575
7576 static struct breakpoint_ops catch_fork_breakpoint_ops;
7577
7578 /* Implement the "insert" breakpoint_ops method for vfork
7579    catchpoints.  */
7580
7581 static int
7582 insert_catch_vfork (struct bp_location *bl)
7583 {
7584   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7585 }
7586
7587 /* Implement the "remove" breakpoint_ops method for vfork
7588    catchpoints.  */
7589
7590 static int
7591 remove_catch_vfork (struct bp_location *bl)
7592 {
7593   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7594 }
7595
7596 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7597    catchpoints.  */
7598
7599 static int
7600 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7601                             struct address_space *aspace, CORE_ADDR bp_addr,
7602                             const struct target_waitstatus *ws)
7603 {
7604   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7605
7606   if (ws->kind != TARGET_WAITKIND_VFORKED)
7607     return 0;
7608
7609   c->forked_inferior_pid = ws->value.related_pid;
7610   return 1;
7611 }
7612
7613 /* Implement the "print_it" breakpoint_ops method for vfork
7614    catchpoints.  */
7615
7616 static enum print_stop_action
7617 print_it_catch_vfork (bpstat bs)
7618 {
7619   struct ui_out *uiout = current_uiout;
7620   struct breakpoint *b = bs->breakpoint_at;
7621   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7622
7623   annotate_catchpoint (b->number);
7624   if (b->disposition == disp_del)
7625     ui_out_text (uiout, "\nTemporary catchpoint ");
7626   else
7627     ui_out_text (uiout, "\nCatchpoint ");
7628   if (ui_out_is_mi_like_p (uiout))
7629     {
7630       ui_out_field_string (uiout, "reason",
7631                            async_reason_lookup (EXEC_ASYNC_VFORK));
7632       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7633     }
7634   ui_out_field_int (uiout, "bkptno", b->number);
7635   ui_out_text (uiout, " (vforked process ");
7636   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7637   ui_out_text (uiout, "), ");
7638   return PRINT_SRC_AND_LOC;
7639 }
7640
7641 /* Implement the "print_one" breakpoint_ops method for vfork
7642    catchpoints.  */
7643
7644 static void
7645 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7646 {
7647   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7648   struct value_print_options opts;
7649   struct ui_out *uiout = current_uiout;
7650
7651   get_user_print_options (&opts);
7652   /* Field 4, the address, is omitted (which makes the columns not
7653      line up too nicely with the headers, but the effect is relatively
7654      readable).  */
7655   if (opts.addressprint)
7656     ui_out_field_skip (uiout, "addr");
7657   annotate_field (5);
7658   ui_out_text (uiout, "vfork");
7659   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7660     {
7661       ui_out_text (uiout, ", process ");
7662       ui_out_field_int (uiout, "what",
7663                         ptid_get_pid (c->forked_inferior_pid));
7664       ui_out_spaces (uiout, 1);
7665     }
7666
7667   if (ui_out_is_mi_like_p (uiout))
7668     ui_out_field_string (uiout, "catch-type", "vfork");
7669 }
7670
7671 /* Implement the "print_mention" breakpoint_ops method for vfork
7672    catchpoints.  */
7673
7674 static void
7675 print_mention_catch_vfork (struct breakpoint *b)
7676 {
7677   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7678 }
7679
7680 /* Implement the "print_recreate" breakpoint_ops method for vfork
7681    catchpoints.  */
7682
7683 static void
7684 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7685 {
7686   fprintf_unfiltered (fp, "catch vfork");
7687   print_recreate_thread (b, fp);
7688 }
7689
7690 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7691
7692 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7693
7694 /* An instance of this type is used to represent an solib catchpoint.
7695    It includes a "struct breakpoint" as a kind of base class; users
7696    downcast to "struct breakpoint *" when needed.  A breakpoint is
7697    really of this type iff its ops pointer points to
7698    CATCH_SOLIB_BREAKPOINT_OPS.  */
7699
7700 struct solib_catchpoint
7701 {
7702   /* The base class.  */
7703   struct breakpoint base;
7704
7705   /* True for "catch load", false for "catch unload".  */
7706   unsigned char is_load;
7707
7708   /* Regular expression to match, if any.  COMPILED is only valid when
7709      REGEX is non-NULL.  */
7710   char *regex;
7711   regex_t compiled;
7712 };
7713
7714 static void
7715 dtor_catch_solib (struct breakpoint *b)
7716 {
7717   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7718
7719   if (self->regex)
7720     regfree (&self->compiled);
7721   xfree (self->regex);
7722
7723   base_breakpoint_ops.dtor (b);
7724 }
7725
7726 static int
7727 insert_catch_solib (struct bp_location *ignore)
7728 {
7729   return 0;
7730 }
7731
7732 static int
7733 remove_catch_solib (struct bp_location *ignore)
7734 {
7735   return 0;
7736 }
7737
7738 static int
7739 breakpoint_hit_catch_solib (const struct bp_location *bl,
7740                             struct address_space *aspace,
7741                             CORE_ADDR bp_addr,
7742                             const struct target_waitstatus *ws)
7743 {
7744   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7745   struct breakpoint *other;
7746
7747   if (ws->kind == TARGET_WAITKIND_LOADED)
7748     return 1;
7749
7750   ALL_BREAKPOINTS (other)
7751   {
7752     struct bp_location *other_bl;
7753
7754     if (other == bl->owner)
7755       continue;
7756
7757     if (other->type != bp_shlib_event)
7758       continue;
7759
7760     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7761       continue;
7762
7763     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7764       {
7765         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7766           return 1;
7767       }
7768   }
7769
7770   return 0;
7771 }
7772
7773 static void
7774 check_status_catch_solib (struct bpstats *bs)
7775 {
7776   struct solib_catchpoint *self
7777     = (struct solib_catchpoint *) bs->breakpoint_at;
7778   int ix;
7779
7780   if (self->is_load)
7781     {
7782       struct so_list *iter;
7783
7784       for (ix = 0;
7785            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7786                         ix, iter);
7787            ++ix)
7788         {
7789           if (!self->regex
7790               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7791             return;
7792         }
7793     }
7794   else
7795     {
7796       char *iter;
7797
7798       for (ix = 0;
7799            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7800                         ix, iter);
7801            ++ix)
7802         {
7803           if (!self->regex
7804               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7805             return;
7806         }
7807     }
7808
7809   bs->stop = 0;
7810   bs->print_it = print_it_noop;
7811 }
7812
7813 static enum print_stop_action
7814 print_it_catch_solib (bpstat bs)
7815 {
7816   struct breakpoint *b = bs->breakpoint_at;
7817   struct ui_out *uiout = current_uiout;
7818
7819   annotate_catchpoint (b->number);
7820   if (b->disposition == disp_del)
7821     ui_out_text (uiout, "\nTemporary catchpoint ");
7822   else
7823     ui_out_text (uiout, "\nCatchpoint ");
7824   ui_out_field_int (uiout, "bkptno", b->number);
7825   ui_out_text (uiout, "\n");
7826   if (ui_out_is_mi_like_p (uiout))
7827     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7828   print_solib_event (1);
7829   return PRINT_SRC_AND_LOC;
7830 }
7831
7832 static void
7833 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7834 {
7835   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7836   struct value_print_options opts;
7837   struct ui_out *uiout = current_uiout;
7838   char *msg;
7839
7840   get_user_print_options (&opts);
7841   /* Field 4, the address, is omitted (which makes the columns not
7842      line up too nicely with the headers, but the effect is relatively
7843      readable).  */
7844   if (opts.addressprint)
7845     {
7846       annotate_field (4);
7847       ui_out_field_skip (uiout, "addr");
7848     }
7849
7850   annotate_field (5);
7851   if (self->is_load)
7852     {
7853       if (self->regex)
7854         msg = xstrprintf (_("load of library matching %s"), self->regex);
7855       else
7856         msg = xstrdup (_("load of library"));
7857     }
7858   else
7859     {
7860       if (self->regex)
7861         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7862       else
7863         msg = xstrdup (_("unload of library"));
7864     }
7865   ui_out_field_string (uiout, "what", msg);
7866   xfree (msg);
7867
7868   if (ui_out_is_mi_like_p (uiout))
7869     ui_out_field_string (uiout, "catch-type",
7870                          self->is_load ? "load" : "unload");
7871 }
7872
7873 static void
7874 print_mention_catch_solib (struct breakpoint *b)
7875 {
7876   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7877
7878   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7879                    self->is_load ? "load" : "unload");
7880 }
7881
7882 static void
7883 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7884 {
7885   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7886
7887   fprintf_unfiltered (fp, "%s %s",
7888                       b->disposition == disp_del ? "tcatch" : "catch",
7889                       self->is_load ? "load" : "unload");
7890   if (self->regex)
7891     fprintf_unfiltered (fp, " %s", self->regex);
7892   fprintf_unfiltered (fp, "\n");
7893 }
7894
7895 static struct breakpoint_ops catch_solib_breakpoint_ops;
7896
7897 /* Shared helper function (MI and CLI) for creating and installing
7898    a shared object event catchpoint.  If IS_LOAD is non-zero then
7899    the events to be caught are load events, otherwise they are
7900    unload events.  If IS_TEMP is non-zero the catchpoint is a
7901    temporary one.  If ENABLED is non-zero the catchpoint is
7902    created in an enabled state.  */
7903
7904 void
7905 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7906 {
7907   struct solib_catchpoint *c;
7908   struct gdbarch *gdbarch = get_current_arch ();
7909   struct cleanup *cleanup;
7910
7911   if (!arg)
7912     arg = "";
7913   arg = skip_spaces (arg);
7914
7915   c = XCNEW (struct solib_catchpoint);
7916   cleanup = make_cleanup (xfree, c);
7917
7918   if (*arg != '\0')
7919     {
7920       int errcode;
7921
7922       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7923       if (errcode != 0)
7924         {
7925           char *err = get_regcomp_error (errcode, &c->compiled);
7926
7927           make_cleanup (xfree, err);
7928           error (_("Invalid regexp (%s): %s"), err, arg);
7929         }
7930       c->regex = xstrdup (arg);
7931     }
7932
7933   c->is_load = is_load;
7934   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7935                    &catch_solib_breakpoint_ops);
7936
7937   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7938
7939   discard_cleanups (cleanup);
7940   install_breakpoint (0, &c->base, 1);
7941 }
7942
7943 /* A helper function that does all the work for "catch load" and
7944    "catch unload".  */
7945
7946 static void
7947 catch_load_or_unload (char *arg, int from_tty, int is_load,
7948                       struct cmd_list_element *command)
7949 {
7950   int tempflag;
7951   const int enabled = 1;
7952
7953   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7954
7955   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7956 }
7957
7958 static void
7959 catch_load_command_1 (char *arg, int from_tty,
7960                       struct cmd_list_element *command)
7961 {
7962   catch_load_or_unload (arg, from_tty, 1, command);
7963 }
7964
7965 static void
7966 catch_unload_command_1 (char *arg, int from_tty,
7967                         struct cmd_list_element *command)
7968 {
7969   catch_load_or_unload (arg, from_tty, 0, command);
7970 }
7971
7972 DEF_VEC_I(int);
7973
7974 /* An instance of this type is used to represent a syscall catchpoint.
7975    It includes a "struct breakpoint" as a kind of base class; users
7976    downcast to "struct breakpoint *" when needed.  A breakpoint is
7977    really of this type iff its ops pointer points to
7978    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7979
7980 struct syscall_catchpoint
7981 {
7982   /* The base class.  */
7983   struct breakpoint base;
7984
7985   /* Syscall numbers used for the 'catch syscall' feature.  If no
7986      syscall has been specified for filtering, its value is NULL.
7987      Otherwise, it holds a list of all syscalls to be caught.  The
7988      list elements are allocated with xmalloc.  */
7989   VEC(int) *syscalls_to_be_caught;
7990 };
7991
7992 /* Implement the "dtor" breakpoint_ops method for syscall
7993    catchpoints.  */
7994
7995 static void
7996 dtor_catch_syscall (struct breakpoint *b)
7997 {
7998   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7999
8000   VEC_free (int, c->syscalls_to_be_caught);
8001
8002   base_breakpoint_ops.dtor (b);
8003 }
8004
8005 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8006
8007 struct catch_syscall_inferior_data
8008 {
8009   /* We keep a count of the number of times the user has requested a
8010      particular syscall to be tracked, and pass this information to the
8011      target.  This lets capable targets implement filtering directly.  */
8012
8013   /* Number of times that "any" syscall is requested.  */
8014   int any_syscall_count;
8015
8016   /* Count of each system call.  */
8017   VEC(int) *syscalls_counts;
8018
8019   /* This counts all syscall catch requests, so we can readily determine
8020      if any catching is necessary.  */
8021   int total_syscalls_count;
8022 };
8023
8024 static struct catch_syscall_inferior_data*
8025 get_catch_syscall_inferior_data (struct inferior *inf)
8026 {
8027   struct catch_syscall_inferior_data *inf_data;
8028
8029   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8030   if (inf_data == NULL)
8031     {
8032       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8033       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8034     }
8035
8036   return inf_data;
8037 }
8038
8039 static void
8040 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8041 {
8042   xfree (arg);
8043 }
8044
8045
8046 /* Implement the "insert" breakpoint_ops method for syscall
8047    catchpoints.  */
8048
8049 static int
8050 insert_catch_syscall (struct bp_location *bl)
8051 {
8052   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8053   struct inferior *inf = current_inferior ();
8054   struct catch_syscall_inferior_data *inf_data
8055     = get_catch_syscall_inferior_data (inf);
8056
8057   ++inf_data->total_syscalls_count;
8058   if (!c->syscalls_to_be_caught)
8059     ++inf_data->any_syscall_count;
8060   else
8061     {
8062       int i, iter;
8063
8064       for (i = 0;
8065            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8066            i++)
8067         {
8068           int elem;
8069
8070           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8071             {
8072               int old_size = VEC_length (int, inf_data->syscalls_counts);
8073               uintptr_t vec_addr_offset
8074                 = old_size * ((uintptr_t) sizeof (int));
8075               uintptr_t vec_addr;
8076               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8077               vec_addr = ((uintptr_t) VEC_address (int,
8078                                                   inf_data->syscalls_counts)
8079                           + vec_addr_offset);
8080               memset ((void *) vec_addr, 0,
8081                       (iter + 1 - old_size) * sizeof (int));
8082             }
8083           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8084           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8085         }
8086     }
8087
8088   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8089                                         inf_data->total_syscalls_count != 0,
8090                                         inf_data->any_syscall_count,
8091                                         VEC_length (int,
8092                                                     inf_data->syscalls_counts),
8093                                         VEC_address (int,
8094                                                      inf_data->syscalls_counts));
8095 }
8096
8097 /* Implement the "remove" breakpoint_ops method for syscall
8098    catchpoints.  */
8099
8100 static int
8101 remove_catch_syscall (struct bp_location *bl)
8102 {
8103   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8104   struct inferior *inf = current_inferior ();
8105   struct catch_syscall_inferior_data *inf_data
8106     = get_catch_syscall_inferior_data (inf);
8107
8108   --inf_data->total_syscalls_count;
8109   if (!c->syscalls_to_be_caught)
8110     --inf_data->any_syscall_count;
8111   else
8112     {
8113       int i, iter;
8114
8115       for (i = 0;
8116            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8117            i++)
8118         {
8119           int elem;
8120           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8121             /* Shouldn't happen.  */
8122             continue;
8123           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8124           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8125         }
8126     }
8127
8128   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8129                                         inf_data->total_syscalls_count != 0,
8130                                         inf_data->any_syscall_count,
8131                                         VEC_length (int,
8132                                                     inf_data->syscalls_counts),
8133                                         VEC_address (int,
8134                                                      inf_data->syscalls_counts));
8135 }
8136
8137 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8138    catchpoints.  */
8139
8140 static int
8141 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8142                               struct address_space *aspace, CORE_ADDR bp_addr,
8143                               const struct target_waitstatus *ws)
8144 {
8145   /* We must check if we are catching specific syscalls in this
8146      breakpoint.  If we are, then we must guarantee that the called
8147      syscall is the same syscall we are catching.  */
8148   int syscall_number = 0;
8149   const struct syscall_catchpoint *c
8150     = (const struct syscall_catchpoint *) bl->owner;
8151
8152   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8153       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8154     return 0;
8155
8156   syscall_number = ws->value.syscall_number;
8157
8158   /* Now, checking if the syscall is the same.  */
8159   if (c->syscalls_to_be_caught)
8160     {
8161       int i, iter;
8162
8163       for (i = 0;
8164            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8165            i++)
8166         if (syscall_number == iter)
8167           break;
8168       /* Not the same.  */
8169       if (!iter)
8170         return 0;
8171     }
8172
8173   return 1;
8174 }
8175
8176 /* Implement the "print_it" breakpoint_ops method for syscall
8177    catchpoints.  */
8178
8179 static enum print_stop_action
8180 print_it_catch_syscall (bpstat bs)
8181 {
8182   struct ui_out *uiout = current_uiout;
8183   struct breakpoint *b = bs->breakpoint_at;
8184   /* These are needed because we want to know in which state a
8185      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8186      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8187      must print "called syscall" or "returned from syscall".  */
8188   ptid_t ptid;
8189   struct target_waitstatus last;
8190   struct syscall s;
8191
8192   get_last_target_status (&ptid, &last);
8193
8194   get_syscall_by_number (last.value.syscall_number, &s);
8195
8196   annotate_catchpoint (b->number);
8197
8198   if (b->disposition == disp_del)
8199     ui_out_text (uiout, "\nTemporary catchpoint ");
8200   else
8201     ui_out_text (uiout, "\nCatchpoint ");
8202   if (ui_out_is_mi_like_p (uiout))
8203     {
8204       ui_out_field_string (uiout, "reason",
8205                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8206                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8207                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8208       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8209     }
8210   ui_out_field_int (uiout, "bkptno", b->number);
8211
8212   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8213     ui_out_text (uiout, " (call to syscall ");
8214   else
8215     ui_out_text (uiout, " (returned from syscall ");
8216
8217   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8218     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8219   if (s.name != NULL)
8220     ui_out_field_string (uiout, "syscall-name", s.name);
8221
8222   ui_out_text (uiout, "), ");
8223
8224   return PRINT_SRC_AND_LOC;
8225 }
8226
8227 /* Implement the "print_one" breakpoint_ops method for syscall
8228    catchpoints.  */
8229
8230 static void
8231 print_one_catch_syscall (struct breakpoint *b,
8232                          struct bp_location **last_loc)
8233 {
8234   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8235   struct value_print_options opts;
8236   struct ui_out *uiout = current_uiout;
8237
8238   get_user_print_options (&opts);
8239   /* Field 4, the address, is omitted (which makes the columns not
8240      line up too nicely with the headers, but the effect is relatively
8241      readable).  */
8242   if (opts.addressprint)
8243     ui_out_field_skip (uiout, "addr");
8244   annotate_field (5);
8245
8246   if (c->syscalls_to_be_caught
8247       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8248     ui_out_text (uiout, "syscalls \"");
8249   else
8250     ui_out_text (uiout, "syscall \"");
8251
8252   if (c->syscalls_to_be_caught)
8253     {
8254       int i, iter;
8255       char *text = xstrprintf ("%s", "");
8256
8257       for (i = 0;
8258            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8259            i++)
8260         {
8261           char *x = text;
8262           struct syscall s;
8263           get_syscall_by_number (iter, &s);
8264
8265           if (s.name != NULL)
8266             text = xstrprintf ("%s%s, ", text, s.name);
8267           else
8268             text = xstrprintf ("%s%d, ", text, iter);
8269
8270           /* We have to xfree the last 'text' (now stored at 'x')
8271              because xstrprintf dynamically allocates new space for it
8272              on every call.  */
8273           xfree (x);
8274         }
8275       /* Remove the last comma.  */
8276       text[strlen (text) - 2] = '\0';
8277       ui_out_field_string (uiout, "what", text);
8278     }
8279   else
8280     ui_out_field_string (uiout, "what", "<any syscall>");
8281   ui_out_text (uiout, "\" ");
8282
8283   if (ui_out_is_mi_like_p (uiout))
8284     ui_out_field_string (uiout, "catch-type", "syscall");
8285 }
8286
8287 /* Implement the "print_mention" breakpoint_ops method for syscall
8288    catchpoints.  */
8289
8290 static void
8291 print_mention_catch_syscall (struct breakpoint *b)
8292 {
8293   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8294
8295   if (c->syscalls_to_be_caught)
8296     {
8297       int i, iter;
8298
8299       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8300         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8301       else
8302         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8303
8304       for (i = 0;
8305            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8306            i++)
8307         {
8308           struct syscall s;
8309           get_syscall_by_number (iter, &s);
8310
8311           if (s.name)
8312             printf_filtered (" '%s' [%d]", s.name, s.number);
8313           else
8314             printf_filtered (" %d", s.number);
8315         }
8316       printf_filtered (")");
8317     }
8318   else
8319     printf_filtered (_("Catchpoint %d (any syscall)"),
8320                      b->number);
8321 }
8322
8323 /* Implement the "print_recreate" breakpoint_ops method for syscall
8324    catchpoints.  */
8325
8326 static void
8327 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8328 {
8329   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8330
8331   fprintf_unfiltered (fp, "catch syscall");
8332
8333   if (c->syscalls_to_be_caught)
8334     {
8335       int i, iter;
8336
8337       for (i = 0;
8338            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8339            i++)
8340         {
8341           struct syscall s;
8342
8343           get_syscall_by_number (iter, &s);
8344           if (s.name)
8345             fprintf_unfiltered (fp, " %s", s.name);
8346           else
8347             fprintf_unfiltered (fp, " %d", s.number);
8348         }
8349     }
8350   print_recreate_thread (b, fp);
8351 }
8352
8353 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8354
8355 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8356
8357 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8358
8359 static int
8360 syscall_catchpoint_p (struct breakpoint *b)
8361 {
8362   return (b->ops == &catch_syscall_breakpoint_ops);
8363 }
8364
8365 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8366    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8367    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8368    the breakpoint_ops structure associated to the catchpoint.  */
8369
8370 void
8371 init_catchpoint (struct breakpoint *b,
8372                  struct gdbarch *gdbarch, int tempflag,
8373                  char *cond_string,
8374                  const struct breakpoint_ops *ops)
8375 {
8376   struct symtab_and_line sal;
8377
8378   init_sal (&sal);
8379   sal.pspace = current_program_space;
8380
8381   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8382
8383   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8384   b->disposition = tempflag ? disp_del : disp_donttouch;
8385 }
8386
8387 void
8388 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8389 {
8390   add_to_breakpoint_chain (b);
8391   set_breakpoint_number (internal, b);
8392   if (is_tracepoint (b))
8393     set_tracepoint_count (breakpoint_count);
8394   if (!internal)
8395     mention (b);
8396   observer_notify_breakpoint_created (b);
8397
8398   if (update_gll)
8399     update_global_location_list (1);
8400 }
8401
8402 static void
8403 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8404                                     int tempflag, char *cond_string,
8405                                     const struct breakpoint_ops *ops)
8406 {
8407   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8408
8409   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8410
8411   c->forked_inferior_pid = null_ptid;
8412
8413   install_breakpoint (0, &c->base, 1);
8414 }
8415
8416 /* Exec catchpoints.  */
8417
8418 /* An instance of this type is used to represent an exec catchpoint.
8419    It includes a "struct breakpoint" as a kind of base class; users
8420    downcast to "struct breakpoint *" when needed.  A breakpoint is
8421    really of this type iff its ops pointer points to
8422    CATCH_EXEC_BREAKPOINT_OPS.  */
8423
8424 struct exec_catchpoint
8425 {
8426   /* The base class.  */
8427   struct breakpoint base;
8428
8429   /* Filename of a program whose exec triggered this catchpoint.
8430      This field is only valid immediately after this catchpoint has
8431      triggered.  */
8432   char *exec_pathname;
8433 };
8434
8435 /* Implement the "dtor" breakpoint_ops method for exec
8436    catchpoints.  */
8437
8438 static void
8439 dtor_catch_exec (struct breakpoint *b)
8440 {
8441   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8442
8443   xfree (c->exec_pathname);
8444
8445   base_breakpoint_ops.dtor (b);
8446 }
8447
8448 static int
8449 insert_catch_exec (struct bp_location *bl)
8450 {
8451   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8452 }
8453
8454 static int
8455 remove_catch_exec (struct bp_location *bl)
8456 {
8457   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8458 }
8459
8460 static int
8461 breakpoint_hit_catch_exec (const struct bp_location *bl,
8462                            struct address_space *aspace, CORE_ADDR bp_addr,
8463                            const struct target_waitstatus *ws)
8464 {
8465   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8466
8467   if (ws->kind != TARGET_WAITKIND_EXECD)
8468     return 0;
8469
8470   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8471   return 1;
8472 }
8473
8474 static enum print_stop_action
8475 print_it_catch_exec (bpstat bs)
8476 {
8477   struct ui_out *uiout = current_uiout;
8478   struct breakpoint *b = bs->breakpoint_at;
8479   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8480
8481   annotate_catchpoint (b->number);
8482   if (b->disposition == disp_del)
8483     ui_out_text (uiout, "\nTemporary catchpoint ");
8484   else
8485     ui_out_text (uiout, "\nCatchpoint ");
8486   if (ui_out_is_mi_like_p (uiout))
8487     {
8488       ui_out_field_string (uiout, "reason",
8489                            async_reason_lookup (EXEC_ASYNC_EXEC));
8490       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8491     }
8492   ui_out_field_int (uiout, "bkptno", b->number);
8493   ui_out_text (uiout, " (exec'd ");
8494   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8495   ui_out_text (uiout, "), ");
8496
8497   return PRINT_SRC_AND_LOC;
8498 }
8499
8500 static void
8501 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8502 {
8503   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8504   struct value_print_options opts;
8505   struct ui_out *uiout = current_uiout;
8506
8507   get_user_print_options (&opts);
8508
8509   /* Field 4, the address, is omitted (which makes the columns
8510      not line up too nicely with the headers, but the effect
8511      is relatively readable).  */
8512   if (opts.addressprint)
8513     ui_out_field_skip (uiout, "addr");
8514   annotate_field (5);
8515   ui_out_text (uiout, "exec");
8516   if (c->exec_pathname != NULL)
8517     {
8518       ui_out_text (uiout, ", program \"");
8519       ui_out_field_string (uiout, "what", c->exec_pathname);
8520       ui_out_text (uiout, "\" ");
8521     }
8522
8523   if (ui_out_is_mi_like_p (uiout))
8524     ui_out_field_string (uiout, "catch-type", "exec");
8525 }
8526
8527 static void
8528 print_mention_catch_exec (struct breakpoint *b)
8529 {
8530   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8531 }
8532
8533 /* Implement the "print_recreate" breakpoint_ops method for exec
8534    catchpoints.  */
8535
8536 static void
8537 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8538 {
8539   fprintf_unfiltered (fp, "catch exec");
8540   print_recreate_thread (b, fp);
8541 }
8542
8543 static struct breakpoint_ops catch_exec_breakpoint_ops;
8544
8545 static void
8546 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8547                                  const struct breakpoint_ops *ops)
8548 {
8549   struct syscall_catchpoint *c;
8550   struct gdbarch *gdbarch = get_current_arch ();
8551
8552   c = XNEW (struct syscall_catchpoint);
8553   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8554   c->syscalls_to_be_caught = filter;
8555
8556   install_breakpoint (0, &c->base, 1);
8557 }
8558
8559 static int
8560 hw_breakpoint_used_count (void)
8561 {
8562   int i = 0;
8563   struct breakpoint *b;
8564   struct bp_location *bl;
8565
8566   ALL_BREAKPOINTS (b)
8567   {
8568     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8569       for (bl = b->loc; bl; bl = bl->next)
8570         {
8571           /* Special types of hardware breakpoints may use more than
8572              one register.  */
8573           i += b->ops->resources_needed (bl);
8574         }
8575   }
8576
8577   return i;
8578 }
8579
8580 /* Returns the resources B would use if it were a hardware
8581    watchpoint.  */
8582
8583 static int
8584 hw_watchpoint_use_count (struct breakpoint *b)
8585 {
8586   int i = 0;
8587   struct bp_location *bl;
8588
8589   if (!breakpoint_enabled (b))
8590     return 0;
8591
8592   for (bl = b->loc; bl; bl = bl->next)
8593     {
8594       /* Special types of hardware watchpoints may use more than
8595          one register.  */
8596       i += b->ops->resources_needed (bl);
8597     }
8598
8599   return i;
8600 }
8601
8602 /* Returns the sum the used resources of all hardware watchpoints of
8603    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8604    the sum of the used resources of all hardware watchpoints of other
8605    types _not_ TYPE.  */
8606
8607 static int
8608 hw_watchpoint_used_count_others (struct breakpoint *except,
8609                                  enum bptype type, int *other_type_used)
8610 {
8611   int i = 0;
8612   struct breakpoint *b;
8613
8614   *other_type_used = 0;
8615   ALL_BREAKPOINTS (b)
8616     {
8617       if (b == except)
8618         continue;
8619       if (!breakpoint_enabled (b))
8620         continue;
8621
8622       if (b->type == type)
8623         i += hw_watchpoint_use_count (b);
8624       else if (is_hardware_watchpoint (b))
8625         *other_type_used = 1;
8626     }
8627
8628   return i;
8629 }
8630
8631 void
8632 disable_watchpoints_before_interactive_call_start (void)
8633 {
8634   struct breakpoint *b;
8635
8636   ALL_BREAKPOINTS (b)
8637   {
8638     if (is_watchpoint (b) && breakpoint_enabled (b))
8639       {
8640         b->enable_state = bp_call_disabled;
8641         update_global_location_list (0);
8642       }
8643   }
8644 }
8645
8646 void
8647 enable_watchpoints_after_interactive_call_stop (void)
8648 {
8649   struct breakpoint *b;
8650
8651   ALL_BREAKPOINTS (b)
8652   {
8653     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8654       {
8655         b->enable_state = bp_enabled;
8656         update_global_location_list (1);
8657       }
8658   }
8659 }
8660
8661 void
8662 disable_breakpoints_before_startup (void)
8663 {
8664   current_program_space->executing_startup = 1;
8665   update_global_location_list (0);
8666 }
8667
8668 void
8669 enable_breakpoints_after_startup (void)
8670 {
8671   current_program_space->executing_startup = 0;
8672   breakpoint_re_set ();
8673 }
8674
8675
8676 /* Set a breakpoint that will evaporate an end of command
8677    at address specified by SAL.
8678    Restrict it to frame FRAME if FRAME is nonzero.  */
8679
8680 struct breakpoint *
8681 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8682                           struct frame_id frame_id, enum bptype type)
8683 {
8684   struct breakpoint *b;
8685
8686   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8687      tail-called one.  */
8688   gdb_assert (!frame_id_artificial_p (frame_id));
8689
8690   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8691   b->enable_state = bp_enabled;
8692   b->disposition = disp_donttouch;
8693   b->frame_id = frame_id;
8694
8695   /* If we're debugging a multi-threaded program, then we want
8696      momentary breakpoints to be active in only a single thread of
8697      control.  */
8698   if (in_thread_list (inferior_ptid))
8699     b->thread = pid_to_thread_id (inferior_ptid);
8700
8701   update_global_location_list_nothrow (1);
8702
8703   return b;
8704 }
8705
8706 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8707    The new breakpoint will have type TYPE, and use OPS as it
8708    breakpoint_ops.  */
8709
8710 static struct breakpoint *
8711 momentary_breakpoint_from_master (struct breakpoint *orig,
8712                                   enum bptype type,
8713                                   const struct breakpoint_ops *ops)
8714 {
8715   struct breakpoint *copy;
8716
8717   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8718   copy->loc = allocate_bp_location (copy);
8719   set_breakpoint_location_function (copy->loc, 1);
8720
8721   copy->loc->gdbarch = orig->loc->gdbarch;
8722   copy->loc->requested_address = orig->loc->requested_address;
8723   copy->loc->address = orig->loc->address;
8724   copy->loc->section = orig->loc->section;
8725   copy->loc->pspace = orig->loc->pspace;
8726   copy->loc->probe = orig->loc->probe;
8727
8728   if (orig->loc->source_file != NULL)
8729     copy->loc->source_file = xstrdup (orig->loc->source_file);
8730
8731   copy->loc->line_number = orig->loc->line_number;
8732   copy->frame_id = orig->frame_id;
8733   copy->thread = orig->thread;
8734   copy->pspace = orig->pspace;
8735
8736   copy->enable_state = bp_enabled;
8737   copy->disposition = disp_donttouch;
8738   copy->number = internal_breakpoint_number--;
8739
8740   update_global_location_list_nothrow (0);
8741   return copy;
8742 }
8743
8744 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8745    ORIG is NULL.  */
8746
8747 struct breakpoint *
8748 clone_momentary_breakpoint (struct breakpoint *orig)
8749 {
8750   /* If there's nothing to clone, then return nothing.  */
8751   if (orig == NULL)
8752     return NULL;
8753
8754   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8755 }
8756
8757 struct breakpoint *
8758 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8759                                 enum bptype type)
8760 {
8761   struct symtab_and_line sal;
8762
8763   sal = find_pc_line (pc, 0);
8764   sal.pc = pc;
8765   sal.section = find_pc_overlay (pc);
8766   sal.explicit_pc = 1;
8767
8768   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8769 }
8770 \f
8771
8772 /* Tell the user we have just set a breakpoint B.  */
8773
8774 static void
8775 mention (struct breakpoint *b)
8776 {
8777   b->ops->print_mention (b);
8778   if (ui_out_is_mi_like_p (current_uiout))
8779     return;
8780   printf_filtered ("\n");
8781 }
8782 \f
8783
8784 static struct bp_location *
8785 add_location_to_breakpoint (struct breakpoint *b,
8786                             const struct symtab_and_line *sal)
8787 {
8788   struct bp_location *loc, **tmp;
8789   CORE_ADDR adjusted_address;
8790   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8791
8792   if (loc_gdbarch == NULL)
8793     loc_gdbarch = b->gdbarch;
8794
8795   /* Adjust the breakpoint's address prior to allocating a location.
8796      Once we call allocate_bp_location(), that mostly uninitialized
8797      location will be placed on the location chain.  Adjustment of the
8798      breakpoint may cause target_read_memory() to be called and we do
8799      not want its scan of the location chain to find a breakpoint and
8800      location that's only been partially initialized.  */
8801   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8802                                                 sal->pc, b->type);
8803
8804   loc = allocate_bp_location (b);
8805   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8806     ;
8807   *tmp = loc;
8808
8809   loc->requested_address = sal->pc;
8810   loc->address = adjusted_address;
8811   loc->pspace = sal->pspace;
8812   loc->probe = sal->probe;
8813   gdb_assert (loc->pspace != NULL);
8814   loc->section = sal->section;
8815   loc->gdbarch = loc_gdbarch;
8816
8817   if (sal->symtab != NULL)
8818     loc->source_file = xstrdup (sal->symtab->filename);
8819   loc->line_number = sal->line;
8820
8821   set_breakpoint_location_function (loc,
8822                                     sal->explicit_pc || sal->explicit_line);
8823   return loc;
8824 }
8825 \f
8826
8827 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8828    return 0 otherwise.  */
8829
8830 static int
8831 bp_loc_is_permanent (struct bp_location *loc)
8832 {
8833   int len;
8834   CORE_ADDR addr;
8835   const gdb_byte *bpoint;
8836   gdb_byte *target_mem;
8837   struct cleanup *cleanup;
8838   int retval = 0;
8839
8840   gdb_assert (loc != NULL);
8841
8842   addr = loc->address;
8843   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8844
8845   /* Software breakpoints unsupported?  */
8846   if (bpoint == NULL)
8847     return 0;
8848
8849   target_mem = alloca (len);
8850
8851   /* Enable the automatic memory restoration from breakpoints while
8852      we read the memory.  Otherwise we could say about our temporary
8853      breakpoints they are permanent.  */
8854   cleanup = save_current_space_and_thread ();
8855
8856   switch_to_program_space_and_thread (loc->pspace);
8857   make_show_memory_breakpoints_cleanup (0);
8858
8859   if (target_read_memory (loc->address, target_mem, len) == 0
8860       && memcmp (target_mem, bpoint, len) == 0)
8861     retval = 1;
8862
8863   do_cleanups (cleanup);
8864
8865   return retval;
8866 }
8867
8868 /* Build a command list for the dprintf corresponding to the current
8869    settings of the dprintf style options.  */
8870
8871 static void
8872 update_dprintf_command_list (struct breakpoint *b)
8873 {
8874   char *dprintf_args = b->extra_string;
8875   char *printf_line = NULL;
8876
8877   if (!dprintf_args)
8878     return;
8879
8880   dprintf_args = skip_spaces (dprintf_args);
8881
8882   /* Allow a comma, as it may have terminated a location, but don't
8883      insist on it.  */
8884   if (*dprintf_args == ',')
8885     ++dprintf_args;
8886   dprintf_args = skip_spaces (dprintf_args);
8887
8888   if (*dprintf_args != '"')
8889     error (_("Bad format string, missing '\"'."));
8890
8891   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8892     printf_line = xstrprintf ("printf %s", dprintf_args);
8893   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8894     {
8895       if (!dprintf_function)
8896         error (_("No function supplied for dprintf call"));
8897
8898       if (dprintf_channel && strlen (dprintf_channel) > 0)
8899         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8900                                   dprintf_function,
8901                                   dprintf_channel,
8902                                   dprintf_args);
8903       else
8904         printf_line = xstrprintf ("call (void) %s (%s)",
8905                                   dprintf_function,
8906                                   dprintf_args);
8907     }
8908   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8909     {
8910       if (target_can_run_breakpoint_commands ())
8911         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8912       else
8913         {
8914           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8915           printf_line = xstrprintf ("printf %s", dprintf_args);
8916         }
8917     }
8918   else
8919     internal_error (__FILE__, __LINE__,
8920                     _("Invalid dprintf style."));
8921
8922   gdb_assert (printf_line != NULL);
8923   /* Manufacture a printf/continue sequence.  */
8924   {
8925     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8926
8927     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8928       {
8929         cont_cmd_line = xmalloc (sizeof (struct command_line));
8930         cont_cmd_line->control_type = simple_control;
8931         cont_cmd_line->body_count = 0;
8932         cont_cmd_line->body_list = NULL;
8933         cont_cmd_line->next = NULL;
8934         cont_cmd_line->line = xstrdup ("continue");
8935       }
8936
8937     printf_cmd_line = xmalloc (sizeof (struct command_line));
8938     printf_cmd_line->control_type = simple_control;
8939     printf_cmd_line->body_count = 0;
8940     printf_cmd_line->body_list = NULL;
8941     printf_cmd_line->next = cont_cmd_line;
8942     printf_cmd_line->line = printf_line;
8943
8944     breakpoint_set_commands (b, printf_cmd_line);
8945   }
8946 }
8947
8948 /* Update all dprintf commands, making their command lists reflect
8949    current style settings.  */
8950
8951 static void
8952 update_dprintf_commands (char *args, int from_tty,
8953                          struct cmd_list_element *c)
8954 {
8955   struct breakpoint *b;
8956
8957   ALL_BREAKPOINTS (b)
8958     {
8959       if (b->type == bp_dprintf)
8960         update_dprintf_command_list (b);
8961     }
8962 }
8963
8964 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8965    as textual description of the location, and COND_STRING
8966    as condition expression.  */
8967
8968 static void
8969 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8970                      struct symtabs_and_lines sals, char *addr_string,
8971                      char *filter, char *cond_string,
8972                      char *extra_string,
8973                      enum bptype type, enum bpdisp disposition,
8974                      int thread, int task, int ignore_count,
8975                      const struct breakpoint_ops *ops, int from_tty,
8976                      int enabled, int internal, unsigned flags,
8977                      int display_canonical)
8978 {
8979   int i;
8980
8981   if (type == bp_hardware_breakpoint)
8982     {
8983       int target_resources_ok;
8984
8985       i = hw_breakpoint_used_count ();
8986       target_resources_ok =
8987         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8988                                             i + 1, 0);
8989       if (target_resources_ok == 0)
8990         error (_("No hardware breakpoint support in the target."));
8991       else if (target_resources_ok < 0)
8992         error (_("Hardware breakpoints used exceeds limit."));
8993     }
8994
8995   gdb_assert (sals.nelts > 0);
8996
8997   for (i = 0; i < sals.nelts; ++i)
8998     {
8999       struct symtab_and_line sal = sals.sals[i];
9000       struct bp_location *loc;
9001
9002       if (from_tty)
9003         {
9004           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9005           if (!loc_gdbarch)
9006             loc_gdbarch = gdbarch;
9007
9008           describe_other_breakpoints (loc_gdbarch,
9009                                       sal.pspace, sal.pc, sal.section, thread);
9010         }
9011
9012       if (i == 0)
9013         {
9014           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9015           b->thread = thread;
9016           b->task = task;
9017
9018           b->cond_string = cond_string;
9019           b->extra_string = extra_string;
9020           b->ignore_count = ignore_count;
9021           b->enable_state = enabled ? bp_enabled : bp_disabled;
9022           b->disposition = disposition;
9023
9024           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9025             b->loc->inserted = 1;
9026
9027           if (type == bp_static_tracepoint)
9028             {
9029               struct tracepoint *t = (struct tracepoint *) b;
9030               struct static_tracepoint_marker marker;
9031
9032               if (strace_marker_p (b))
9033                 {
9034                   /* We already know the marker exists, otherwise, we
9035                      wouldn't see a sal for it.  */
9036                   char *p = &addr_string[3];
9037                   char *endp;
9038                   char *marker_str;
9039
9040                   p = skip_spaces (p);
9041
9042                   endp = skip_to_space (p);
9043
9044                   marker_str = savestring (p, endp - p);
9045                   t->static_trace_marker_id = marker_str;
9046
9047                   printf_filtered (_("Probed static tracepoint "
9048                                      "marker \"%s\"\n"),
9049                                    t->static_trace_marker_id);
9050                 }
9051               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9052                 {
9053                   t->static_trace_marker_id = xstrdup (marker.str_id);
9054                   release_static_tracepoint_marker (&marker);
9055
9056                   printf_filtered (_("Probed static tracepoint "
9057                                      "marker \"%s\"\n"),
9058                                    t->static_trace_marker_id);
9059                 }
9060               else
9061                 warning (_("Couldn't determine the static "
9062                            "tracepoint marker to probe"));
9063             }
9064
9065           loc = b->loc;
9066         }
9067       else
9068         {
9069           loc = add_location_to_breakpoint (b, &sal);
9070           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9071             loc->inserted = 1;
9072         }
9073
9074       if (bp_loc_is_permanent (loc))
9075         make_breakpoint_permanent (b);
9076
9077       if (b->cond_string)
9078         {
9079           char *arg = b->cond_string;
9080           loc->cond = parse_exp_1 (&arg, loc->address,
9081                                    block_for_pc (loc->address), 0);
9082           if (*arg)
9083               error (_("Garbage '%s' follows condition"), arg);
9084         }
9085
9086       /* Dynamic printf requires and uses additional arguments on the
9087          command line, otherwise it's an error.  */
9088       if (type == bp_dprintf)
9089         {
9090           if (b->extra_string)
9091             update_dprintf_command_list (b);
9092           else
9093             error (_("Format string required"));
9094         }
9095       else if (b->extra_string)
9096         error (_("Garbage '%s' at end of command"), b->extra_string);
9097     }
9098
9099   b->display_canonical = display_canonical;
9100   if (addr_string)
9101     b->addr_string = addr_string;
9102   else
9103     /* addr_string has to be used or breakpoint_re_set will delete
9104        me.  */
9105     b->addr_string
9106       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9107   b->filter = filter;
9108 }
9109
9110 static void
9111 create_breakpoint_sal (struct gdbarch *gdbarch,
9112                        struct symtabs_and_lines sals, char *addr_string,
9113                        char *filter, char *cond_string,
9114                        char *extra_string,
9115                        enum bptype type, enum bpdisp disposition,
9116                        int thread, int task, int ignore_count,
9117                        const struct breakpoint_ops *ops, int from_tty,
9118                        int enabled, int internal, unsigned flags,
9119                        int display_canonical)
9120 {
9121   struct breakpoint *b;
9122   struct cleanup *old_chain;
9123
9124   if (is_tracepoint_type (type))
9125     {
9126       struct tracepoint *t;
9127
9128       t = XCNEW (struct tracepoint);
9129       b = &t->base;
9130     }
9131   else
9132     b = XNEW (struct breakpoint);
9133
9134   old_chain = make_cleanup (xfree, b);
9135
9136   init_breakpoint_sal (b, gdbarch,
9137                        sals, addr_string,
9138                        filter, cond_string, extra_string,
9139                        type, disposition,
9140                        thread, task, ignore_count,
9141                        ops, from_tty,
9142                        enabled, internal, flags,
9143                        display_canonical);
9144   discard_cleanups (old_chain);
9145
9146   install_breakpoint (internal, b, 0);
9147 }
9148
9149 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9150    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9151    value.  COND_STRING, if not NULL, specified the condition to be
9152    used for all breakpoints.  Essentially the only case where
9153    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9154    function.  In that case, it's still not possible to specify
9155    separate conditions for different overloaded functions, so
9156    we take just a single condition string.
9157    
9158    NOTE: If the function succeeds, the caller is expected to cleanup
9159    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9160    array contents).  If the function fails (error() is called), the
9161    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9162    COND and SALS arrays and each of those arrays contents.  */
9163
9164 static void
9165 create_breakpoints_sal (struct gdbarch *gdbarch,
9166                         struct linespec_result *canonical,
9167                         char *cond_string, char *extra_string,
9168                         enum bptype type, enum bpdisp disposition,
9169                         int thread, int task, int ignore_count,
9170                         const struct breakpoint_ops *ops, int from_tty,
9171                         int enabled, int internal, unsigned flags)
9172 {
9173   int i;
9174   struct linespec_sals *lsal;
9175
9176   if (canonical->pre_expanded)
9177     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9178
9179   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9180     {
9181       /* Note that 'addr_string' can be NULL in the case of a plain
9182          'break', without arguments.  */
9183       char *addr_string = (canonical->addr_string
9184                            ? xstrdup (canonical->addr_string)
9185                            : NULL);
9186       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9187       struct cleanup *inner = make_cleanup (xfree, addr_string);
9188
9189       make_cleanup (xfree, filter_string);
9190       create_breakpoint_sal (gdbarch, lsal->sals,
9191                              addr_string,
9192                              filter_string,
9193                              cond_string, extra_string,
9194                              type, disposition,
9195                              thread, task, ignore_count, ops,
9196                              from_tty, enabled, internal, flags,
9197                              canonical->special_display);
9198       discard_cleanups (inner);
9199     }
9200 }
9201
9202 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9203    followed by conditionals.  On return, SALS contains an array of SAL
9204    addresses found.  ADDR_STRING contains a vector of (canonical)
9205    address strings.  ADDRESS points to the end of the SAL.
9206
9207    The array and the line spec strings are allocated on the heap, it is
9208    the caller's responsibility to free them.  */
9209
9210 static void
9211 parse_breakpoint_sals (char **address,
9212                        struct linespec_result *canonical)
9213 {
9214   /* If no arg given, or if first arg is 'if ', use the default
9215      breakpoint.  */
9216   if ((*address) == NULL
9217       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9218     {
9219       /* The last displayed codepoint, if it's valid, is our default breakpoint
9220          address.  */
9221       if (last_displayed_sal_is_valid ())
9222         {
9223           struct linespec_sals lsal;
9224           struct symtab_and_line sal;
9225           CORE_ADDR pc;
9226
9227           init_sal (&sal);              /* Initialize to zeroes.  */
9228           lsal.sals.sals = (struct symtab_and_line *)
9229             xmalloc (sizeof (struct symtab_and_line));
9230
9231           /* Set sal's pspace, pc, symtab, and line to the values
9232              corresponding to the last call to print_frame_info.
9233              Be sure to reinitialize LINE with NOTCURRENT == 0
9234              as the breakpoint line number is inappropriate otherwise.
9235              find_pc_line would adjust PC, re-set it back.  */
9236           get_last_displayed_sal (&sal);
9237           pc = sal.pc;
9238           sal = find_pc_line (pc, 0);
9239
9240           /* "break" without arguments is equivalent to "break *PC"
9241              where PC is the last displayed codepoint's address.  So
9242              make sure to set sal.explicit_pc to prevent GDB from
9243              trying to expand the list of sals to include all other
9244              instances with the same symtab and line.  */
9245           sal.pc = pc;
9246           sal.explicit_pc = 1;
9247
9248           lsal.sals.sals[0] = sal;
9249           lsal.sals.nelts = 1;
9250           lsal.canonical = NULL;
9251
9252           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9253         }
9254       else
9255         error (_("No default breakpoint address now."));
9256     }
9257   else
9258     {
9259       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9260
9261       /* Force almost all breakpoints to be in terms of the
9262          current_source_symtab (which is decode_line_1's default).
9263          This should produce the results we want almost all of the
9264          time while leaving default_breakpoint_* alone.
9265
9266          ObjC: However, don't match an Objective-C method name which
9267          may have a '+' or '-' succeeded by a '['.  */
9268       if (last_displayed_sal_is_valid ()
9269           && (!cursal.symtab
9270               || ((strchr ("+-", (*address)[0]) != NULL)
9271                   && ((*address)[1] != '['))))
9272         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9273                           get_last_displayed_symtab (),
9274                           get_last_displayed_line (),
9275                           canonical, NULL, NULL);
9276       else
9277         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9278                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9279     }
9280 }
9281
9282
9283 /* Convert each SAL into a real PC.  Verify that the PC can be
9284    inserted as a breakpoint.  If it can't throw an error.  */
9285
9286 static void
9287 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9288 {    
9289   int i;
9290
9291   for (i = 0; i < sals->nelts; i++)
9292     resolve_sal_pc (&sals->sals[i]);
9293 }
9294
9295 /* Fast tracepoints may have restrictions on valid locations.  For
9296    instance, a fast tracepoint using a jump instead of a trap will
9297    likely have to overwrite more bytes than a trap would, and so can
9298    only be placed where the instruction is longer than the jump, or a
9299    multi-instruction sequence does not have a jump into the middle of
9300    it, etc.  */
9301
9302 static void
9303 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9304                             struct symtabs_and_lines *sals)
9305 {
9306   int i, rslt;
9307   struct symtab_and_line *sal;
9308   char *msg;
9309   struct cleanup *old_chain;
9310
9311   for (i = 0; i < sals->nelts; i++)
9312     {
9313       struct gdbarch *sarch;
9314
9315       sal = &sals->sals[i];
9316
9317       sarch = get_sal_arch (*sal);
9318       /* We fall back to GDBARCH if there is no architecture
9319          associated with SAL.  */
9320       if (sarch == NULL)
9321         sarch = gdbarch;
9322       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9323                                                NULL, &msg);
9324       old_chain = make_cleanup (xfree, msg);
9325
9326       if (!rslt)
9327         error (_("May not have a fast tracepoint at 0x%s%s"),
9328                paddress (sarch, sal->pc), (msg ? msg : ""));
9329
9330       do_cleanups (old_chain);
9331     }
9332 }
9333
9334 /* Issue an invalid thread ID error.  */
9335
9336 static void ATTRIBUTE_NORETURN
9337 invalid_thread_id_error (int id)
9338 {
9339   error (_("Unknown thread %d."), id);
9340 }
9341
9342 /* Given TOK, a string specification of condition and thread, as
9343    accepted by the 'break' command, extract the condition
9344    string and thread number and set *COND_STRING and *THREAD.
9345    PC identifies the context at which the condition should be parsed.
9346    If no condition is found, *COND_STRING is set to NULL.
9347    If no thread is found, *THREAD is set to -1.  */
9348
9349 static void
9350 find_condition_and_thread (char *tok, CORE_ADDR pc,
9351                            char **cond_string, int *thread, int *task,
9352                            char **rest)
9353 {
9354   *cond_string = NULL;
9355   *thread = -1;
9356   *task = 0;
9357   *rest = NULL;
9358
9359   while (tok && *tok)
9360     {
9361       char *end_tok;
9362       int toklen;
9363       char *cond_start = NULL;
9364       char *cond_end = NULL;
9365
9366       tok = skip_spaces (tok);
9367
9368       if ((*tok == '"' || *tok == ',') && rest)
9369         {
9370           *rest = savestring (tok, strlen (tok));
9371           return;
9372         }
9373
9374       end_tok = skip_to_space (tok);
9375
9376       toklen = end_tok - tok;
9377
9378       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9379         {
9380           struct expression *expr;
9381
9382           tok = cond_start = end_tok + 1;
9383           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9384           xfree (expr);
9385           cond_end = tok;
9386           *cond_string = savestring (cond_start, cond_end - cond_start);
9387         }
9388       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9389         {
9390           char *tmptok;
9391
9392           tok = end_tok + 1;
9393           tmptok = tok;
9394           *thread = strtol (tok, &tok, 0);
9395           if (tok == tmptok)
9396             error (_("Junk after thread keyword."));
9397           if (!valid_thread_id (*thread))
9398             invalid_thread_id_error (*thread);
9399         }
9400       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9401         {
9402           char *tmptok;
9403
9404           tok = end_tok + 1;
9405           tmptok = tok;
9406           *task = strtol (tok, &tok, 0);
9407           if (tok == tmptok)
9408             error (_("Junk after task keyword."));
9409           if (!valid_task_id (*task))
9410             error (_("Unknown task %d."), *task);
9411         }
9412       else if (rest)
9413         {
9414           *rest = savestring (tok, strlen (tok));
9415           return;
9416         }
9417       else
9418         error (_("Junk at end of arguments."));
9419     }
9420 }
9421
9422 /* Decode a static tracepoint marker spec.  */
9423
9424 static struct symtabs_and_lines
9425 decode_static_tracepoint_spec (char **arg_p)
9426 {
9427   VEC(static_tracepoint_marker_p) *markers = NULL;
9428   struct symtabs_and_lines sals;
9429   struct cleanup *old_chain;
9430   char *p = &(*arg_p)[3];
9431   char *endp;
9432   char *marker_str;
9433   int i;
9434
9435   p = skip_spaces (p);
9436
9437   endp = skip_to_space (p);
9438
9439   marker_str = savestring (p, endp - p);
9440   old_chain = make_cleanup (xfree, marker_str);
9441
9442   markers = target_static_tracepoint_markers_by_strid (marker_str);
9443   if (VEC_empty(static_tracepoint_marker_p, markers))
9444     error (_("No known static tracepoint marker named %s"), marker_str);
9445
9446   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9447   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9448
9449   for (i = 0; i < sals.nelts; i++)
9450     {
9451       struct static_tracepoint_marker *marker;
9452
9453       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9454
9455       init_sal (&sals.sals[i]);
9456
9457       sals.sals[i] = find_pc_line (marker->address, 0);
9458       sals.sals[i].pc = marker->address;
9459
9460       release_static_tracepoint_marker (marker);
9461     }
9462
9463   do_cleanups (old_chain);
9464
9465   *arg_p = endp;
9466   return sals;
9467 }
9468
9469 /* Set a breakpoint.  This function is shared between CLI and MI
9470    functions for setting a breakpoint.  This function has two major
9471    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9472    parameter.  If non-zero, the function will parse arg, extracting
9473    breakpoint location, address and thread.  Otherwise, ARG is just
9474    the location of breakpoint, with condition and thread specified by
9475    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9476    the breakpoint number will be allocated from the internal
9477    breakpoint count.  Returns true if any breakpoint was created;
9478    false otherwise.  */
9479
9480 int
9481 create_breakpoint (struct gdbarch *gdbarch,
9482                    char *arg, char *cond_string,
9483                    int thread, char *extra_string,
9484                    int parse_condition_and_thread,
9485                    int tempflag, enum bptype type_wanted,
9486                    int ignore_count,
9487                    enum auto_boolean pending_break_support,
9488                    const struct breakpoint_ops *ops,
9489                    int from_tty, int enabled, int internal,
9490                    unsigned flags)
9491 {
9492   volatile struct gdb_exception e;
9493   char *copy_arg = NULL;
9494   char *addr_start = arg;
9495   struct linespec_result canonical;
9496   struct cleanup *old_chain;
9497   struct cleanup *bkpt_chain = NULL;
9498   int pending = 0;
9499   int task = 0;
9500   int prev_bkpt_count = breakpoint_count;
9501
9502   gdb_assert (ops != NULL);
9503
9504   init_linespec_result (&canonical);
9505
9506   TRY_CATCH (e, RETURN_MASK_ALL)
9507     {
9508       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9509                                      addr_start, &copy_arg);
9510     }
9511
9512   /* If caller is interested in rc value from parse, set value.  */
9513   switch (e.reason)
9514     {
9515     case GDB_NO_ERROR:
9516       if (VEC_empty (linespec_sals, canonical.sals))
9517         return 0;
9518       break;
9519     case RETURN_ERROR:
9520       switch (e.error)
9521         {
9522         case NOT_FOUND_ERROR:
9523
9524           /* If pending breakpoint support is turned off, throw
9525              error.  */
9526
9527           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9528             throw_exception (e);
9529
9530           exception_print (gdb_stderr, e);
9531
9532           /* If pending breakpoint support is auto query and the user
9533              selects no, then simply return the error code.  */
9534           if (pending_break_support == AUTO_BOOLEAN_AUTO
9535               && !nquery (_("Make %s pending on future shared library load? "),
9536                           bptype_string (type_wanted)))
9537             return 0;
9538
9539           /* At this point, either the user was queried about setting
9540              a pending breakpoint and selected yes, or pending
9541              breakpoint behavior is on and thus a pending breakpoint
9542              is defaulted on behalf of the user.  */
9543           {
9544             struct linespec_sals lsal;
9545
9546             copy_arg = xstrdup (addr_start);
9547             lsal.canonical = xstrdup (copy_arg);
9548             lsal.sals.nelts = 1;
9549             lsal.sals.sals = XNEW (struct symtab_and_line);
9550             init_sal (&lsal.sals.sals[0]);
9551             pending = 1;
9552             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9553           }
9554           break;
9555         default:
9556           throw_exception (e);
9557         }
9558       break;
9559     default:
9560       throw_exception (e);
9561     }
9562
9563   /* Create a chain of things that always need to be cleaned up.  */
9564   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9565
9566   /* ----------------------------- SNIP -----------------------------
9567      Anything added to the cleanup chain beyond this point is assumed
9568      to be part of a breakpoint.  If the breakpoint create succeeds
9569      then the memory is not reclaimed.  */
9570   bkpt_chain = make_cleanup (null_cleanup, 0);
9571
9572   /* Resolve all line numbers to PC's and verify that the addresses
9573      are ok for the target.  */
9574   if (!pending)
9575     {
9576       int ix;
9577       struct linespec_sals *iter;
9578
9579       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9580         breakpoint_sals_to_pc (&iter->sals);
9581     }
9582
9583   /* Fast tracepoints may have additional restrictions on location.  */
9584   if (!pending && type_wanted == bp_fast_tracepoint)
9585     {
9586       int ix;
9587       struct linespec_sals *iter;
9588
9589       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9590         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9591     }
9592
9593   /* Verify that condition can be parsed, before setting any
9594      breakpoints.  Allocate a separate condition expression for each
9595      breakpoint.  */
9596   if (!pending)
9597     {
9598       struct linespec_sals *lsal;
9599
9600       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9601
9602       if (parse_condition_and_thread)
9603         {
9604             char *rest;
9605             /* Here we only parse 'arg' to separate condition
9606                from thread number, so parsing in context of first
9607                sal is OK.  When setting the breakpoint we'll 
9608                re-parse it in context of each sal.  */
9609
9610             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9611                                        &thread, &task, &rest);
9612             if (cond_string)
9613                 make_cleanup (xfree, cond_string);
9614             if (rest)
9615               make_cleanup (xfree, rest);
9616             if (rest)
9617               extra_string = rest;
9618         }
9619       else
9620         {
9621             /* Create a private copy of condition string.  */
9622             if (cond_string)
9623             {
9624                 cond_string = xstrdup (cond_string);
9625                 make_cleanup (xfree, cond_string);
9626             }
9627             /* Create a private copy of any extra string.  */
9628             if (extra_string)
9629               {
9630                 extra_string = xstrdup (extra_string);
9631                 make_cleanup (xfree, extra_string);
9632               }
9633         }
9634
9635       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9636                                    cond_string, extra_string, type_wanted,
9637                                    tempflag ? disp_del : disp_donttouch,
9638                                    thread, task, ignore_count, ops,
9639                                    from_tty, enabled, internal, flags);
9640     }
9641   else
9642     {
9643       struct breakpoint *b;
9644
9645       make_cleanup (xfree, copy_arg);
9646
9647       if (is_tracepoint_type (type_wanted))
9648         {
9649           struct tracepoint *t;
9650
9651           t = XCNEW (struct tracepoint);
9652           b = &t->base;
9653         }
9654       else
9655         b = XNEW (struct breakpoint);
9656
9657       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9658
9659       b->addr_string = copy_arg;
9660       if (parse_condition_and_thread)
9661         b->cond_string = NULL;
9662       else
9663         {
9664           /* Create a private copy of condition string.  */
9665           if (cond_string)
9666             {
9667               cond_string = xstrdup (cond_string);
9668               make_cleanup (xfree, cond_string);
9669             }
9670           b->cond_string = cond_string;
9671         }
9672       b->extra_string = NULL;
9673       b->ignore_count = ignore_count;
9674       b->disposition = tempflag ? disp_del : disp_donttouch;
9675       b->condition_not_parsed = 1;
9676       b->enable_state = enabled ? bp_enabled : bp_disabled;
9677       if ((type_wanted != bp_breakpoint
9678            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9679         b->pspace = current_program_space;
9680
9681       install_breakpoint (internal, b, 0);
9682     }
9683   
9684   if (VEC_length (linespec_sals, canonical.sals) > 1)
9685     {
9686       warning (_("Multiple breakpoints were set.\nUse the "
9687                  "\"delete\" command to delete unwanted breakpoints."));
9688       prev_breakpoint_count = prev_bkpt_count;
9689     }
9690
9691   /* That's it.  Discard the cleanups for data inserted into the
9692      breakpoint.  */
9693   discard_cleanups (bkpt_chain);
9694   /* But cleanup everything else.  */
9695   do_cleanups (old_chain);
9696
9697   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9698   update_global_location_list (1);
9699
9700   return 1;
9701 }
9702
9703 /* Set a breakpoint.
9704    ARG is a string describing breakpoint address,
9705    condition, and thread.
9706    FLAG specifies if a breakpoint is hardware on,
9707    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9708    and BP_TEMPFLAG.  */
9709
9710 static void
9711 break_command_1 (char *arg, int flag, int from_tty)
9712 {
9713   int tempflag = flag & BP_TEMPFLAG;
9714   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9715                              ? bp_hardware_breakpoint
9716                              : bp_breakpoint);
9717   struct breakpoint_ops *ops;
9718   const char *arg_cp = arg;
9719
9720   /* Matching breakpoints on probes.  */
9721   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9722     ops = &bkpt_probe_breakpoint_ops;
9723   else
9724     ops = &bkpt_breakpoint_ops;
9725
9726   create_breakpoint (get_current_arch (),
9727                      arg,
9728                      NULL, 0, NULL, 1 /* parse arg */,
9729                      tempflag, type_wanted,
9730                      0 /* Ignore count */,
9731                      pending_break_support,
9732                      ops,
9733                      from_tty,
9734                      1 /* enabled */,
9735                      0 /* internal */,
9736                      0);
9737 }
9738
9739 /* Helper function for break_command_1 and disassemble_command.  */
9740
9741 void
9742 resolve_sal_pc (struct symtab_and_line *sal)
9743 {
9744   CORE_ADDR pc;
9745
9746   if (sal->pc == 0 && sal->symtab != NULL)
9747     {
9748       if (!find_line_pc (sal->symtab, sal->line, &pc))
9749         error (_("No line %d in file \"%s\"."),
9750                sal->line, sal->symtab->filename);
9751       sal->pc = pc;
9752
9753       /* If this SAL corresponds to a breakpoint inserted using a line
9754          number, then skip the function prologue if necessary.  */
9755       if (sal->explicit_line)
9756         skip_prologue_sal (sal);
9757     }
9758
9759   if (sal->section == 0 && sal->symtab != NULL)
9760     {
9761       struct blockvector *bv;
9762       struct block *b;
9763       struct symbol *sym;
9764
9765       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9766       if (bv != NULL)
9767         {
9768           sym = block_linkage_function (b);
9769           if (sym != NULL)
9770             {
9771               fixup_symbol_section (sym, sal->symtab->objfile);
9772               sal->section = SYMBOL_OBJ_SECTION (sym);
9773             }
9774           else
9775             {
9776               /* It really is worthwhile to have the section, so we'll
9777                  just have to look harder. This case can be executed
9778                  if we have line numbers but no functions (as can
9779                  happen in assembly source).  */
9780
9781               struct minimal_symbol *msym;
9782               struct cleanup *old_chain = save_current_space_and_thread ();
9783
9784               switch_to_program_space_and_thread (sal->pspace);
9785
9786               msym = lookup_minimal_symbol_by_pc (sal->pc);
9787               if (msym)
9788                 sal->section = SYMBOL_OBJ_SECTION (msym);
9789
9790               do_cleanups (old_chain);
9791             }
9792         }
9793     }
9794 }
9795
9796 void
9797 break_command (char *arg, int from_tty)
9798 {
9799   break_command_1 (arg, 0, from_tty);
9800 }
9801
9802 void
9803 tbreak_command (char *arg, int from_tty)
9804 {
9805   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9806 }
9807
9808 static void
9809 hbreak_command (char *arg, int from_tty)
9810 {
9811   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9812 }
9813
9814 static void
9815 thbreak_command (char *arg, int from_tty)
9816 {
9817   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9818 }
9819
9820 static void
9821 stop_command (char *arg, int from_tty)
9822 {
9823   printf_filtered (_("Specify the type of breakpoint to set.\n\
9824 Usage: stop in <function | address>\n\
9825        stop at <line>\n"));
9826 }
9827
9828 static void
9829 stopin_command (char *arg, int from_tty)
9830 {
9831   int badInput = 0;
9832
9833   if (arg == (char *) NULL)
9834     badInput = 1;
9835   else if (*arg != '*')
9836     {
9837       char *argptr = arg;
9838       int hasColon = 0;
9839
9840       /* Look for a ':'.  If this is a line number specification, then
9841          say it is bad, otherwise, it should be an address or
9842          function/method name.  */
9843       while (*argptr && !hasColon)
9844         {
9845           hasColon = (*argptr == ':');
9846           argptr++;
9847         }
9848
9849       if (hasColon)
9850         badInput = (*argptr != ':');    /* Not a class::method */
9851       else
9852         badInput = isdigit (*arg);      /* a simple line number */
9853     }
9854
9855   if (badInput)
9856     printf_filtered (_("Usage: stop in <function | address>\n"));
9857   else
9858     break_command_1 (arg, 0, from_tty);
9859 }
9860
9861 static void
9862 stopat_command (char *arg, int from_tty)
9863 {
9864   int badInput = 0;
9865
9866   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9867     badInput = 1;
9868   else
9869     {
9870       char *argptr = arg;
9871       int hasColon = 0;
9872
9873       /* Look for a ':'.  If there is a '::' then get out, otherwise
9874          it is probably a line number.  */
9875       while (*argptr && !hasColon)
9876         {
9877           hasColon = (*argptr == ':');
9878           argptr++;
9879         }
9880
9881       if (hasColon)
9882         badInput = (*argptr == ':');    /* we have class::method */
9883       else
9884         badInput = !isdigit (*arg);     /* not a line number */
9885     }
9886
9887   if (badInput)
9888     printf_filtered (_("Usage: stop at <line>\n"));
9889   else
9890     break_command_1 (arg, 0, from_tty);
9891 }
9892
9893 /* The dynamic printf command is mostly like a regular breakpoint, but
9894    with a prewired command list consisting of a single output command,
9895    built from extra arguments supplied on the dprintf command
9896    line.  */
9897
9898 static void
9899 dprintf_command (char *arg, int from_tty)
9900 {
9901   create_breakpoint (get_current_arch (),
9902                      arg,
9903                      NULL, 0, NULL, 1 /* parse arg */,
9904                      0, bp_dprintf,
9905                      0 /* Ignore count */,
9906                      pending_break_support,
9907                      &dprintf_breakpoint_ops,
9908                      from_tty,
9909                      1 /* enabled */,
9910                      0 /* internal */,
9911                      0);
9912 }
9913
9914 static void
9915 agent_printf_command (char *arg, int from_tty)
9916 {
9917   error (_("May only run agent-printf on the target"));
9918 }
9919
9920 /* Implement the "breakpoint_hit" breakpoint_ops method for
9921    ranged breakpoints.  */
9922
9923 static int
9924 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9925                                   struct address_space *aspace,
9926                                   CORE_ADDR bp_addr,
9927                                   const struct target_waitstatus *ws)
9928 {
9929   if (ws->kind != TARGET_WAITKIND_STOPPED
9930       || ws->value.sig != GDB_SIGNAL_TRAP)
9931     return 0;
9932
9933   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9934                                          bl->length, aspace, bp_addr);
9935 }
9936
9937 /* Implement the "resources_needed" breakpoint_ops method for
9938    ranged breakpoints.  */
9939
9940 static int
9941 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9942 {
9943   return target_ranged_break_num_registers ();
9944 }
9945
9946 /* Implement the "print_it" breakpoint_ops method for
9947    ranged breakpoints.  */
9948
9949 static enum print_stop_action
9950 print_it_ranged_breakpoint (bpstat bs)
9951 {
9952   struct breakpoint *b = bs->breakpoint_at;
9953   struct bp_location *bl = b->loc;
9954   struct ui_out *uiout = current_uiout;
9955
9956   gdb_assert (b->type == bp_hardware_breakpoint);
9957
9958   /* Ranged breakpoints have only one location.  */
9959   gdb_assert (bl && bl->next == NULL);
9960
9961   annotate_breakpoint (b->number);
9962   if (b->disposition == disp_del)
9963     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9964   else
9965     ui_out_text (uiout, "\nRanged breakpoint ");
9966   if (ui_out_is_mi_like_p (uiout))
9967     {
9968       ui_out_field_string (uiout, "reason",
9969                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9970       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9971     }
9972   ui_out_field_int (uiout, "bkptno", b->number);
9973   ui_out_text (uiout, ", ");
9974
9975   return PRINT_SRC_AND_LOC;
9976 }
9977
9978 /* Implement the "print_one" breakpoint_ops method for
9979    ranged breakpoints.  */
9980
9981 static void
9982 print_one_ranged_breakpoint (struct breakpoint *b,
9983                              struct bp_location **last_loc)
9984 {
9985   struct bp_location *bl = b->loc;
9986   struct value_print_options opts;
9987   struct ui_out *uiout = current_uiout;
9988
9989   /* Ranged breakpoints have only one location.  */
9990   gdb_assert (bl && bl->next == NULL);
9991
9992   get_user_print_options (&opts);
9993
9994   if (opts.addressprint)
9995     /* We don't print the address range here, it will be printed later
9996        by print_one_detail_ranged_breakpoint.  */
9997     ui_out_field_skip (uiout, "addr");
9998   annotate_field (5);
9999   print_breakpoint_location (b, bl);
10000   *last_loc = bl;
10001 }
10002
10003 /* Implement the "print_one_detail" breakpoint_ops method for
10004    ranged breakpoints.  */
10005
10006 static void
10007 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10008                                     struct ui_out *uiout)
10009 {
10010   CORE_ADDR address_start, address_end;
10011   struct bp_location *bl = b->loc;
10012   struct ui_file *stb = mem_fileopen ();
10013   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10014
10015   gdb_assert (bl);
10016
10017   address_start = bl->address;
10018   address_end = address_start + bl->length - 1;
10019
10020   ui_out_text (uiout, "\taddress range: ");
10021   fprintf_unfiltered (stb, "[%s, %s]",
10022                       print_core_address (bl->gdbarch, address_start),
10023                       print_core_address (bl->gdbarch, address_end));
10024   ui_out_field_stream (uiout, "addr", stb);
10025   ui_out_text (uiout, "\n");
10026
10027   do_cleanups (cleanup);
10028 }
10029
10030 /* Implement the "print_mention" breakpoint_ops method for
10031    ranged breakpoints.  */
10032
10033 static void
10034 print_mention_ranged_breakpoint (struct breakpoint *b)
10035 {
10036   struct bp_location *bl = b->loc;
10037   struct ui_out *uiout = current_uiout;
10038
10039   gdb_assert (bl);
10040   gdb_assert (b->type == bp_hardware_breakpoint);
10041
10042   if (ui_out_is_mi_like_p (uiout))
10043     return;
10044
10045   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10046                    b->number, paddress (bl->gdbarch, bl->address),
10047                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10048 }
10049
10050 /* Implement the "print_recreate" breakpoint_ops method for
10051    ranged breakpoints.  */
10052
10053 static void
10054 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10055 {
10056   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10057                       b->addr_string_range_end);
10058   print_recreate_thread (b, fp);
10059 }
10060
10061 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10062
10063 static struct breakpoint_ops ranged_breakpoint_ops;
10064
10065 /* Find the address where the end of the breakpoint range should be
10066    placed, given the SAL of the end of the range.  This is so that if
10067    the user provides a line number, the end of the range is set to the
10068    last instruction of the given line.  */
10069
10070 static CORE_ADDR
10071 find_breakpoint_range_end (struct symtab_and_line sal)
10072 {
10073   CORE_ADDR end;
10074
10075   /* If the user provided a PC value, use it.  Otherwise,
10076      find the address of the end of the given location.  */
10077   if (sal.explicit_pc)
10078     end = sal.pc;
10079   else
10080     {
10081       int ret;
10082       CORE_ADDR start;
10083
10084       ret = find_line_pc_range (sal, &start, &end);
10085       if (!ret)
10086         error (_("Could not find location of the end of the range."));
10087
10088       /* find_line_pc_range returns the start of the next line.  */
10089       end--;
10090     }
10091
10092   return end;
10093 }
10094
10095 /* Implement the "break-range" CLI command.  */
10096
10097 static void
10098 break_range_command (char *arg, int from_tty)
10099 {
10100   char *arg_start, *addr_string_start, *addr_string_end;
10101   struct linespec_result canonical_start, canonical_end;
10102   int bp_count, can_use_bp, length;
10103   CORE_ADDR end;
10104   struct breakpoint *b;
10105   struct symtab_and_line sal_start, sal_end;
10106   struct cleanup *cleanup_bkpt;
10107   struct linespec_sals *lsal_start, *lsal_end;
10108
10109   /* We don't support software ranged breakpoints.  */
10110   if (target_ranged_break_num_registers () < 0)
10111     error (_("This target does not support hardware ranged breakpoints."));
10112
10113   bp_count = hw_breakpoint_used_count ();
10114   bp_count += target_ranged_break_num_registers ();
10115   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10116                                                    bp_count, 0);
10117   if (can_use_bp < 0)
10118     error (_("Hardware breakpoints used exceeds limit."));
10119
10120   arg = skip_spaces (arg);
10121   if (arg == NULL || arg[0] == '\0')
10122     error(_("No address range specified."));
10123
10124   init_linespec_result (&canonical_start);
10125
10126   arg_start = arg;
10127   parse_breakpoint_sals (&arg, &canonical_start);
10128
10129   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10130
10131   if (arg[0] != ',')
10132     error (_("Too few arguments."));
10133   else if (VEC_empty (linespec_sals, canonical_start.sals))
10134     error (_("Could not find location of the beginning of the range."));
10135
10136   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10137
10138   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10139       || lsal_start->sals.nelts != 1)
10140     error (_("Cannot create a ranged breakpoint with multiple locations."));
10141
10142   sal_start = lsal_start->sals.sals[0];
10143   addr_string_start = savestring (arg_start, arg - arg_start);
10144   make_cleanup (xfree, addr_string_start);
10145
10146   arg++;        /* Skip the comma.  */
10147   arg = skip_spaces (arg);
10148
10149   /* Parse the end location.  */
10150
10151   init_linespec_result (&canonical_end);
10152   arg_start = arg;
10153
10154   /* We call decode_line_full directly here instead of using
10155      parse_breakpoint_sals because we need to specify the start location's
10156      symtab and line as the default symtab and line for the end of the
10157      range.  This makes it possible to have ranges like "foo.c:27, +14",
10158      where +14 means 14 lines from the start location.  */
10159   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10160                     sal_start.symtab, sal_start.line,
10161                     &canonical_end, NULL, NULL);
10162
10163   make_cleanup_destroy_linespec_result (&canonical_end);
10164
10165   if (VEC_empty (linespec_sals, canonical_end.sals))
10166     error (_("Could not find location of the end of the range."));
10167
10168   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10169   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10170       || lsal_end->sals.nelts != 1)
10171     error (_("Cannot create a ranged breakpoint with multiple locations."));
10172
10173   sal_end = lsal_end->sals.sals[0];
10174   addr_string_end = savestring (arg_start, arg - arg_start);
10175   make_cleanup (xfree, addr_string_end);
10176
10177   end = find_breakpoint_range_end (sal_end);
10178   if (sal_start.pc > end)
10179     error (_("Invalid address range, end precedes start."));
10180
10181   length = end - sal_start.pc + 1;
10182   if (length < 0)
10183     /* Length overflowed.  */
10184     error (_("Address range too large."));
10185   else if (length == 1)
10186     {
10187       /* This range is simple enough to be handled by
10188          the `hbreak' command.  */
10189       hbreak_command (addr_string_start, 1);
10190
10191       do_cleanups (cleanup_bkpt);
10192
10193       return;
10194     }
10195
10196   /* Now set up the breakpoint.  */
10197   b = set_raw_breakpoint (get_current_arch (), sal_start,
10198                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10199   set_breakpoint_count (breakpoint_count + 1);
10200   b->number = breakpoint_count;
10201   b->disposition = disp_donttouch;
10202   b->addr_string = xstrdup (addr_string_start);
10203   b->addr_string_range_end = xstrdup (addr_string_end);
10204   b->loc->length = length;
10205
10206   do_cleanups (cleanup_bkpt);
10207
10208   mention (b);
10209   observer_notify_breakpoint_created (b);
10210   update_global_location_list (1);
10211 }
10212
10213 /*  Return non-zero if EXP is verified as constant.  Returned zero
10214     means EXP is variable.  Also the constant detection may fail for
10215     some constant expressions and in such case still falsely return
10216     zero.  */
10217
10218 static int
10219 watchpoint_exp_is_const (const struct expression *exp)
10220 {
10221   int i = exp->nelts;
10222
10223   while (i > 0)
10224     {
10225       int oplenp, argsp;
10226
10227       /* We are only interested in the descriptor of each element.  */
10228       operator_length (exp, i, &oplenp, &argsp);
10229       i -= oplenp;
10230
10231       switch (exp->elts[i].opcode)
10232         {
10233         case BINOP_ADD:
10234         case BINOP_SUB:
10235         case BINOP_MUL:
10236         case BINOP_DIV:
10237         case BINOP_REM:
10238         case BINOP_MOD:
10239         case BINOP_LSH:
10240         case BINOP_RSH:
10241         case BINOP_LOGICAL_AND:
10242         case BINOP_LOGICAL_OR:
10243         case BINOP_BITWISE_AND:
10244         case BINOP_BITWISE_IOR:
10245         case BINOP_BITWISE_XOR:
10246         case BINOP_EQUAL:
10247         case BINOP_NOTEQUAL:
10248         case BINOP_LESS:
10249         case BINOP_GTR:
10250         case BINOP_LEQ:
10251         case BINOP_GEQ:
10252         case BINOP_REPEAT:
10253         case BINOP_COMMA:
10254         case BINOP_EXP:
10255         case BINOP_MIN:
10256         case BINOP_MAX:
10257         case BINOP_INTDIV:
10258         case BINOP_CONCAT:
10259         case BINOP_IN:
10260         case BINOP_RANGE:
10261         case TERNOP_COND:
10262         case TERNOP_SLICE:
10263
10264         case OP_LONG:
10265         case OP_DOUBLE:
10266         case OP_DECFLOAT:
10267         case OP_LAST:
10268         case OP_COMPLEX:
10269         case OP_STRING:
10270         case OP_ARRAY:
10271         case OP_TYPE:
10272         case OP_TYPEOF:
10273         case OP_DECLTYPE:
10274         case OP_NAME:
10275         case OP_OBJC_NSSTRING:
10276
10277         case UNOP_NEG:
10278         case UNOP_LOGICAL_NOT:
10279         case UNOP_COMPLEMENT:
10280         case UNOP_ADDR:
10281         case UNOP_HIGH:
10282         case UNOP_CAST:
10283
10284         case UNOP_CAST_TYPE:
10285         case UNOP_REINTERPRET_CAST:
10286         case UNOP_DYNAMIC_CAST:
10287           /* Unary, binary and ternary operators: We have to check
10288              their operands.  If they are constant, then so is the
10289              result of that operation.  For instance, if A and B are
10290              determined to be constants, then so is "A + B".
10291
10292              UNOP_IND is one exception to the rule above, because the
10293              value of *ADDR is not necessarily a constant, even when
10294              ADDR is.  */
10295           break;
10296
10297         case OP_VAR_VALUE:
10298           /* Check whether the associated symbol is a constant.
10299
10300              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10301              possible that a buggy compiler could mark a variable as
10302              constant even when it is not, and TYPE_CONST would return
10303              true in this case, while SYMBOL_CLASS wouldn't.
10304
10305              We also have to check for function symbols because they
10306              are always constant.  */
10307           {
10308             struct symbol *s = exp->elts[i + 2].symbol;
10309
10310             if (SYMBOL_CLASS (s) != LOC_BLOCK
10311                 && SYMBOL_CLASS (s) != LOC_CONST
10312                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10313               return 0;
10314             break;
10315           }
10316
10317         /* The default action is to return 0 because we are using
10318            the optimistic approach here: If we don't know something,
10319            then it is not a constant.  */
10320         default:
10321           return 0;
10322         }
10323     }
10324
10325   return 1;
10326 }
10327
10328 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10329
10330 static void
10331 dtor_watchpoint (struct breakpoint *self)
10332 {
10333   struct watchpoint *w = (struct watchpoint *) self;
10334
10335   xfree (w->cond_exp);
10336   xfree (w->exp);
10337   xfree (w->exp_string);
10338   xfree (w->exp_string_reparse);
10339   value_free (w->val);
10340
10341   base_breakpoint_ops.dtor (self);
10342 }
10343
10344 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10345
10346 static void
10347 re_set_watchpoint (struct breakpoint *b)
10348 {
10349   struct watchpoint *w = (struct watchpoint *) b;
10350
10351   /* Watchpoint can be either on expression using entirely global
10352      variables, or it can be on local variables.
10353
10354      Watchpoints of the first kind are never auto-deleted, and even
10355      persist across program restarts.  Since they can use variables
10356      from shared libraries, we need to reparse expression as libraries
10357      are loaded and unloaded.
10358
10359      Watchpoints on local variables can also change meaning as result
10360      of solib event.  For example, if a watchpoint uses both a local
10361      and a global variables in expression, it's a local watchpoint,
10362      but unloading of a shared library will make the expression
10363      invalid.  This is not a very common use case, but we still
10364      re-evaluate expression, to avoid surprises to the user.
10365
10366      Note that for local watchpoints, we re-evaluate it only if
10367      watchpoints frame id is still valid.  If it's not, it means the
10368      watchpoint is out of scope and will be deleted soon.  In fact,
10369      I'm not sure we'll ever be called in this case.
10370
10371      If a local watchpoint's frame id is still valid, then
10372      w->exp_valid_block is likewise valid, and we can safely use it.
10373
10374      Don't do anything about disabled watchpoints, since they will be
10375      reevaluated again when enabled.  */
10376   update_watchpoint (w, 1 /* reparse */);
10377 }
10378
10379 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10380
10381 static int
10382 insert_watchpoint (struct bp_location *bl)
10383 {
10384   struct watchpoint *w = (struct watchpoint *) bl->owner;
10385   int length = w->exact ? 1 : bl->length;
10386
10387   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10388                                    w->cond_exp);
10389 }
10390
10391 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10392
10393 static int
10394 remove_watchpoint (struct bp_location *bl)
10395 {
10396   struct watchpoint *w = (struct watchpoint *) bl->owner;
10397   int length = w->exact ? 1 : bl->length;
10398
10399   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10400                                    w->cond_exp);
10401 }
10402
10403 static int
10404 breakpoint_hit_watchpoint (const struct bp_location *bl,
10405                            struct address_space *aspace, CORE_ADDR bp_addr,
10406                            const struct target_waitstatus *ws)
10407 {
10408   struct breakpoint *b = bl->owner;
10409   struct watchpoint *w = (struct watchpoint *) b;
10410
10411   /* Continuable hardware watchpoints are treated as non-existent if the
10412      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10413      some data address).  Otherwise gdb won't stop on a break instruction
10414      in the code (not from a breakpoint) when a hardware watchpoint has
10415      been defined.  Also skip watchpoints which we know did not trigger
10416      (did not match the data address).  */
10417   if (is_hardware_watchpoint (b)
10418       && w->watchpoint_triggered == watch_triggered_no)
10419     return 0;
10420
10421   return 1;
10422 }
10423
10424 static void
10425 check_status_watchpoint (bpstat bs)
10426 {
10427   gdb_assert (is_watchpoint (bs->breakpoint_at));
10428
10429   bpstat_check_watchpoint (bs);
10430 }
10431
10432 /* Implement the "resources_needed" breakpoint_ops method for
10433    hardware watchpoints.  */
10434
10435 static int
10436 resources_needed_watchpoint (const struct bp_location *bl)
10437 {
10438   struct watchpoint *w = (struct watchpoint *) bl->owner;
10439   int length = w->exact? 1 : bl->length;
10440
10441   return target_region_ok_for_hw_watchpoint (bl->address, length);
10442 }
10443
10444 /* Implement the "works_in_software_mode" breakpoint_ops method for
10445    hardware watchpoints.  */
10446
10447 static int
10448 works_in_software_mode_watchpoint (const struct breakpoint *b)
10449 {
10450   /* Read and access watchpoints only work with hardware support.  */
10451   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10452 }
10453
10454 static enum print_stop_action
10455 print_it_watchpoint (bpstat bs)
10456 {
10457   struct cleanup *old_chain;
10458   struct breakpoint *b;
10459   const struct bp_location *bl;
10460   struct ui_file *stb;
10461   enum print_stop_action result;
10462   struct watchpoint *w;
10463   struct ui_out *uiout = current_uiout;
10464
10465   gdb_assert (bs->bp_location_at != NULL);
10466
10467   bl = bs->bp_location_at;
10468   b = bs->breakpoint_at;
10469   w = (struct watchpoint *) b;
10470
10471   stb = mem_fileopen ();
10472   old_chain = make_cleanup_ui_file_delete (stb);
10473
10474   switch (b->type)
10475     {
10476     case bp_watchpoint:
10477     case bp_hardware_watchpoint:
10478       annotate_watchpoint (b->number);
10479       if (ui_out_is_mi_like_p (uiout))
10480         ui_out_field_string
10481           (uiout, "reason",
10482            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10483       mention (b);
10484       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10485       ui_out_text (uiout, "\nOld value = ");
10486       watchpoint_value_print (bs->old_val, stb);
10487       ui_out_field_stream (uiout, "old", stb);
10488       ui_out_text (uiout, "\nNew value = ");
10489       watchpoint_value_print (w->val, stb);
10490       ui_out_field_stream (uiout, "new", stb);
10491       ui_out_text (uiout, "\n");
10492       /* More than one watchpoint may have been triggered.  */
10493       result = PRINT_UNKNOWN;
10494       break;
10495
10496     case bp_read_watchpoint:
10497       if (ui_out_is_mi_like_p (uiout))
10498         ui_out_field_string
10499           (uiout, "reason",
10500            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10501       mention (b);
10502       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10503       ui_out_text (uiout, "\nValue = ");
10504       watchpoint_value_print (w->val, stb);
10505       ui_out_field_stream (uiout, "value", stb);
10506       ui_out_text (uiout, "\n");
10507       result = PRINT_UNKNOWN;
10508       break;
10509
10510     case bp_access_watchpoint:
10511       if (bs->old_val != NULL)
10512         {
10513           annotate_watchpoint (b->number);
10514           if (ui_out_is_mi_like_p (uiout))
10515             ui_out_field_string
10516               (uiout, "reason",
10517                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10518           mention (b);
10519           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10520           ui_out_text (uiout, "\nOld value = ");
10521           watchpoint_value_print (bs->old_val, stb);
10522           ui_out_field_stream (uiout, "old", stb);
10523           ui_out_text (uiout, "\nNew value = ");
10524         }
10525       else
10526         {
10527           mention (b);
10528           if (ui_out_is_mi_like_p (uiout))
10529             ui_out_field_string
10530               (uiout, "reason",
10531                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10532           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10533           ui_out_text (uiout, "\nValue = ");
10534         }
10535       watchpoint_value_print (w->val, stb);
10536       ui_out_field_stream (uiout, "new", stb);
10537       ui_out_text (uiout, "\n");
10538       result = PRINT_UNKNOWN;
10539       break;
10540     default:
10541       result = PRINT_UNKNOWN;
10542     }
10543
10544   do_cleanups (old_chain);
10545   return result;
10546 }
10547
10548 /* Implement the "print_mention" breakpoint_ops method for hardware
10549    watchpoints.  */
10550
10551 static void
10552 print_mention_watchpoint (struct breakpoint *b)
10553 {
10554   struct cleanup *ui_out_chain;
10555   struct watchpoint *w = (struct watchpoint *) b;
10556   struct ui_out *uiout = current_uiout;
10557
10558   switch (b->type)
10559     {
10560     case bp_watchpoint:
10561       ui_out_text (uiout, "Watchpoint ");
10562       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10563       break;
10564     case bp_hardware_watchpoint:
10565       ui_out_text (uiout, "Hardware watchpoint ");
10566       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10567       break;
10568     case bp_read_watchpoint:
10569       ui_out_text (uiout, "Hardware read watchpoint ");
10570       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10571       break;
10572     case bp_access_watchpoint:
10573       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10574       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10575       break;
10576     default:
10577       internal_error (__FILE__, __LINE__,
10578                       _("Invalid hardware watchpoint type."));
10579     }
10580
10581   ui_out_field_int (uiout, "number", b->number);
10582   ui_out_text (uiout, ": ");
10583   ui_out_field_string (uiout, "exp", w->exp_string);
10584   do_cleanups (ui_out_chain);
10585 }
10586
10587 /* Implement the "print_recreate" breakpoint_ops method for
10588    watchpoints.  */
10589
10590 static void
10591 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10592 {
10593   struct watchpoint *w = (struct watchpoint *) b;
10594
10595   switch (b->type)
10596     {
10597     case bp_watchpoint:
10598     case bp_hardware_watchpoint:
10599       fprintf_unfiltered (fp, "watch");
10600       break;
10601     case bp_read_watchpoint:
10602       fprintf_unfiltered (fp, "rwatch");
10603       break;
10604     case bp_access_watchpoint:
10605       fprintf_unfiltered (fp, "awatch");
10606       break;
10607     default:
10608       internal_error (__FILE__, __LINE__,
10609                       _("Invalid watchpoint type."));
10610     }
10611
10612   fprintf_unfiltered (fp, " %s", w->exp_string);
10613   print_recreate_thread (b, fp);
10614 }
10615
10616 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10617
10618 static struct breakpoint_ops watchpoint_breakpoint_ops;
10619
10620 /* Implement the "insert" breakpoint_ops method for
10621    masked hardware watchpoints.  */
10622
10623 static int
10624 insert_masked_watchpoint (struct bp_location *bl)
10625 {
10626   struct watchpoint *w = (struct watchpoint *) bl->owner;
10627
10628   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10629                                         bl->watchpoint_type);
10630 }
10631
10632 /* Implement the "remove" breakpoint_ops method for
10633    masked hardware watchpoints.  */
10634
10635 static int
10636 remove_masked_watchpoint (struct bp_location *bl)
10637 {
10638   struct watchpoint *w = (struct watchpoint *) bl->owner;
10639
10640   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10641                                         bl->watchpoint_type);
10642 }
10643
10644 /* Implement the "resources_needed" breakpoint_ops method for
10645    masked hardware watchpoints.  */
10646
10647 static int
10648 resources_needed_masked_watchpoint (const struct bp_location *bl)
10649 {
10650   struct watchpoint *w = (struct watchpoint *) bl->owner;
10651
10652   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10653 }
10654
10655 /* Implement the "works_in_software_mode" breakpoint_ops method for
10656    masked hardware watchpoints.  */
10657
10658 static int
10659 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10660 {
10661   return 0;
10662 }
10663
10664 /* Implement the "print_it" breakpoint_ops method for
10665    masked hardware watchpoints.  */
10666
10667 static enum print_stop_action
10668 print_it_masked_watchpoint (bpstat bs)
10669 {
10670   struct breakpoint *b = bs->breakpoint_at;
10671   struct ui_out *uiout = current_uiout;
10672
10673   /* Masked watchpoints have only one location.  */
10674   gdb_assert (b->loc && b->loc->next == NULL);
10675
10676   switch (b->type)
10677     {
10678     case bp_hardware_watchpoint:
10679       annotate_watchpoint (b->number);
10680       if (ui_out_is_mi_like_p (uiout))
10681         ui_out_field_string
10682           (uiout, "reason",
10683            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10684       break;
10685
10686     case bp_read_watchpoint:
10687       if (ui_out_is_mi_like_p (uiout))
10688         ui_out_field_string
10689           (uiout, "reason",
10690            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10691       break;
10692
10693     case bp_access_watchpoint:
10694       if (ui_out_is_mi_like_p (uiout))
10695         ui_out_field_string
10696           (uiout, "reason",
10697            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10698       break;
10699     default:
10700       internal_error (__FILE__, __LINE__,
10701                       _("Invalid hardware watchpoint type."));
10702     }
10703
10704   mention (b);
10705   ui_out_text (uiout, _("\n\
10706 Check the underlying instruction at PC for the memory\n\
10707 address and value which triggered this watchpoint.\n"));
10708   ui_out_text (uiout, "\n");
10709
10710   /* More than one watchpoint may have been triggered.  */
10711   return PRINT_UNKNOWN;
10712 }
10713
10714 /* Implement the "print_one_detail" breakpoint_ops method for
10715    masked hardware watchpoints.  */
10716
10717 static void
10718 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10719                                     struct ui_out *uiout)
10720 {
10721   struct watchpoint *w = (struct watchpoint *) b;
10722
10723   /* Masked watchpoints have only one location.  */
10724   gdb_assert (b->loc && b->loc->next == NULL);
10725
10726   ui_out_text (uiout, "\tmask ");
10727   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10728   ui_out_text (uiout, "\n");
10729 }
10730
10731 /* Implement the "print_mention" breakpoint_ops method for
10732    masked hardware watchpoints.  */
10733
10734 static void
10735 print_mention_masked_watchpoint (struct breakpoint *b)
10736 {
10737   struct watchpoint *w = (struct watchpoint *) b;
10738   struct ui_out *uiout = current_uiout;
10739   struct cleanup *ui_out_chain;
10740
10741   switch (b->type)
10742     {
10743     case bp_hardware_watchpoint:
10744       ui_out_text (uiout, "Masked hardware watchpoint ");
10745       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10746       break;
10747     case bp_read_watchpoint:
10748       ui_out_text (uiout, "Masked hardware read watchpoint ");
10749       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10750       break;
10751     case bp_access_watchpoint:
10752       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10753       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10754       break;
10755     default:
10756       internal_error (__FILE__, __LINE__,
10757                       _("Invalid hardware watchpoint type."));
10758     }
10759
10760   ui_out_field_int (uiout, "number", b->number);
10761   ui_out_text (uiout, ": ");
10762   ui_out_field_string (uiout, "exp", w->exp_string);
10763   do_cleanups (ui_out_chain);
10764 }
10765
10766 /* Implement the "print_recreate" breakpoint_ops method for
10767    masked hardware watchpoints.  */
10768
10769 static void
10770 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10771 {
10772   struct watchpoint *w = (struct watchpoint *) b;
10773   char tmp[40];
10774
10775   switch (b->type)
10776     {
10777     case bp_hardware_watchpoint:
10778       fprintf_unfiltered (fp, "watch");
10779       break;
10780     case bp_read_watchpoint:
10781       fprintf_unfiltered (fp, "rwatch");
10782       break;
10783     case bp_access_watchpoint:
10784       fprintf_unfiltered (fp, "awatch");
10785       break;
10786     default:
10787       internal_error (__FILE__, __LINE__,
10788                       _("Invalid hardware watchpoint type."));
10789     }
10790
10791   sprintf_vma (tmp, w->hw_wp_mask);
10792   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10793   print_recreate_thread (b, fp);
10794 }
10795
10796 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10797
10798 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10799
10800 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10801
10802 static int
10803 is_masked_watchpoint (const struct breakpoint *b)
10804 {
10805   return b->ops == &masked_watchpoint_breakpoint_ops;
10806 }
10807
10808 /* accessflag:  hw_write:  watch write, 
10809                 hw_read:   watch read, 
10810                 hw_access: watch access (read or write) */
10811 static void
10812 watch_command_1 (char *arg, int accessflag, int from_tty,
10813                  int just_location, int internal)
10814 {
10815   volatile struct gdb_exception e;
10816   struct breakpoint *b, *scope_breakpoint = NULL;
10817   struct expression *exp;
10818   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10819   struct value *val, *mark, *result;
10820   struct frame_info *frame;
10821   char *exp_start = NULL;
10822   char *exp_end = NULL;
10823   char *tok, *end_tok;
10824   int toklen = -1;
10825   char *cond_start = NULL;
10826   char *cond_end = NULL;
10827   enum bptype bp_type;
10828   int thread = -1;
10829   int pc = 0;
10830   /* Flag to indicate whether we are going to use masks for
10831      the hardware watchpoint.  */
10832   int use_mask = 0;
10833   CORE_ADDR mask = 0;
10834   struct watchpoint *w;
10835
10836   /* Make sure that we actually have parameters to parse.  */
10837   if (arg != NULL && arg[0] != '\0')
10838     {
10839       char *value_start;
10840
10841       /* Look for "parameter value" pairs at the end
10842          of the arguments string.  */
10843       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10844         {
10845           /* Skip whitespace at the end of the argument list.  */
10846           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10847             tok--;
10848
10849           /* Find the beginning of the last token.
10850              This is the value of the parameter.  */
10851           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10852             tok--;
10853           value_start = tok + 1;
10854
10855           /* Skip whitespace.  */
10856           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10857             tok--;
10858
10859           end_tok = tok;
10860
10861           /* Find the beginning of the second to last token.
10862              This is the parameter itself.  */
10863           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10864             tok--;
10865           tok++;
10866           toklen = end_tok - tok + 1;
10867
10868           if (toklen == 6 && !strncmp (tok, "thread", 6))
10869             {
10870               /* At this point we've found a "thread" token, which means
10871                  the user is trying to set a watchpoint that triggers
10872                  only in a specific thread.  */
10873               char *endp;
10874
10875               if (thread != -1)
10876                 error(_("You can specify only one thread."));
10877
10878               /* Extract the thread ID from the next token.  */
10879               thread = strtol (value_start, &endp, 0);
10880
10881               /* Check if the user provided a valid numeric value for the
10882                  thread ID.  */
10883               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10884                 error (_("Invalid thread ID specification %s."), value_start);
10885
10886               /* Check if the thread actually exists.  */
10887               if (!valid_thread_id (thread))
10888                 invalid_thread_id_error (thread);
10889             }
10890           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10891             {
10892               /* We've found a "mask" token, which means the user wants to
10893                  create a hardware watchpoint that is going to have the mask
10894                  facility.  */
10895               struct value *mask_value, *mark;
10896
10897               if (use_mask)
10898                 error(_("You can specify only one mask."));
10899
10900               use_mask = just_location = 1;
10901
10902               mark = value_mark ();
10903               mask_value = parse_to_comma_and_eval (&value_start);
10904               mask = value_as_address (mask_value);
10905               value_free_to_mark (mark);
10906             }
10907           else
10908             /* We didn't recognize what we found.  We should stop here.  */
10909             break;
10910
10911           /* Truncate the string and get rid of the "parameter value" pair before
10912              the arguments string is parsed by the parse_exp_1 function.  */
10913           *tok = '\0';
10914         }
10915     }
10916
10917   /* Parse the rest of the arguments.  */
10918   innermost_block = NULL;
10919   exp_start = arg;
10920   exp = parse_exp_1 (&arg, 0, 0, 0);
10921   exp_end = arg;
10922   /* Remove trailing whitespace from the expression before saving it.
10923      This makes the eventual display of the expression string a bit
10924      prettier.  */
10925   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10926     --exp_end;
10927
10928   /* Checking if the expression is not constant.  */
10929   if (watchpoint_exp_is_const (exp))
10930     {
10931       int len;
10932
10933       len = exp_end - exp_start;
10934       while (len > 0 && isspace (exp_start[len - 1]))
10935         len--;
10936       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10937     }
10938
10939   exp_valid_block = innermost_block;
10940   mark = value_mark ();
10941   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10942
10943   if (just_location)
10944     {
10945       int ret;
10946
10947       exp_valid_block = NULL;
10948       val = value_addr (result);
10949       release_value (val);
10950       value_free_to_mark (mark);
10951
10952       if (use_mask)
10953         {
10954           ret = target_masked_watch_num_registers (value_as_address (val),
10955                                                    mask);
10956           if (ret == -1)
10957             error (_("This target does not support masked watchpoints."));
10958           else if (ret == -2)
10959             error (_("Invalid mask or memory region."));
10960         }
10961     }
10962   else if (val != NULL)
10963     release_value (val);
10964
10965   tok = skip_spaces (arg);
10966   end_tok = skip_to_space (tok);
10967
10968   toklen = end_tok - tok;
10969   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10970     {
10971       struct expression *cond;
10972
10973       innermost_block = NULL;
10974       tok = cond_start = end_tok + 1;
10975       cond = parse_exp_1 (&tok, 0, 0, 0);
10976
10977       /* The watchpoint expression may not be local, but the condition
10978          may still be.  E.g.: `watch global if local > 0'.  */
10979       cond_exp_valid_block = innermost_block;
10980
10981       xfree (cond);
10982       cond_end = tok;
10983     }
10984   if (*tok)
10985     error (_("Junk at end of command."));
10986
10987   if (accessflag == hw_read)
10988     bp_type = bp_read_watchpoint;
10989   else if (accessflag == hw_access)
10990     bp_type = bp_access_watchpoint;
10991   else
10992     bp_type = bp_hardware_watchpoint;
10993
10994   frame = block_innermost_frame (exp_valid_block);
10995
10996   /* If the expression is "local", then set up a "watchpoint scope"
10997      breakpoint at the point where we've left the scope of the watchpoint
10998      expression.  Create the scope breakpoint before the watchpoint, so
10999      that we will encounter it first in bpstat_stop_status.  */
11000   if (exp_valid_block && frame)
11001     {
11002       if (frame_id_p (frame_unwind_caller_id (frame)))
11003         {
11004           scope_breakpoint
11005             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11006                                           frame_unwind_caller_pc (frame),
11007                                           bp_watchpoint_scope,
11008                                           &momentary_breakpoint_ops);
11009
11010           scope_breakpoint->enable_state = bp_enabled;
11011
11012           /* Automatically delete the breakpoint when it hits.  */
11013           scope_breakpoint->disposition = disp_del;
11014
11015           /* Only break in the proper frame (help with recursion).  */
11016           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11017
11018           /* Set the address at which we will stop.  */
11019           scope_breakpoint->loc->gdbarch
11020             = frame_unwind_caller_arch (frame);
11021           scope_breakpoint->loc->requested_address
11022             = frame_unwind_caller_pc (frame);
11023           scope_breakpoint->loc->address
11024             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11025                                          scope_breakpoint->loc->requested_address,
11026                                          scope_breakpoint->type);
11027         }
11028     }
11029
11030   /* Now set up the breakpoint.  */
11031
11032   w = XCNEW (struct watchpoint);
11033   b = &w->base;
11034   if (use_mask)
11035     init_raw_breakpoint_without_location (b, NULL, bp_type,
11036                                           &masked_watchpoint_breakpoint_ops);
11037   else
11038     init_raw_breakpoint_without_location (b, NULL, bp_type,
11039                                           &watchpoint_breakpoint_ops);
11040   b->thread = thread;
11041   b->disposition = disp_donttouch;
11042   b->pspace = current_program_space;
11043   w->exp = exp;
11044   w->exp_valid_block = exp_valid_block;
11045   w->cond_exp_valid_block = cond_exp_valid_block;
11046   if (just_location)
11047     {
11048       struct type *t = value_type (val);
11049       CORE_ADDR addr = value_as_address (val);
11050       char *name;
11051
11052       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11053       name = type_to_string (t);
11054
11055       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11056                                           core_addr_to_string (addr));
11057       xfree (name);
11058
11059       w->exp_string = xstrprintf ("-location %.*s",
11060                                   (int) (exp_end - exp_start), exp_start);
11061
11062       /* The above expression is in C.  */
11063       b->language = language_c;
11064     }
11065   else
11066     w->exp_string = savestring (exp_start, exp_end - exp_start);
11067
11068   if (use_mask)
11069     {
11070       w->hw_wp_mask = mask;
11071     }
11072   else
11073     {
11074       w->val = val;
11075       w->val_valid = 1;
11076     }
11077
11078   if (cond_start)
11079     b->cond_string = savestring (cond_start, cond_end - cond_start);
11080   else
11081     b->cond_string = 0;
11082
11083   if (frame)
11084     {
11085       w->watchpoint_frame = get_frame_id (frame);
11086       w->watchpoint_thread = inferior_ptid;
11087     }
11088   else
11089     {
11090       w->watchpoint_frame = null_frame_id;
11091       w->watchpoint_thread = null_ptid;
11092     }
11093
11094   if (scope_breakpoint != NULL)
11095     {
11096       /* The scope breakpoint is related to the watchpoint.  We will
11097          need to act on them together.  */
11098       b->related_breakpoint = scope_breakpoint;
11099       scope_breakpoint->related_breakpoint = b;
11100     }
11101
11102   if (!just_location)
11103     value_free_to_mark (mark);
11104
11105   TRY_CATCH (e, RETURN_MASK_ALL)
11106     {
11107       /* Finally update the new watchpoint.  This creates the locations
11108          that should be inserted.  */
11109       update_watchpoint (w, 1);
11110     }
11111   if (e.reason < 0)
11112     {
11113       delete_breakpoint (b);
11114       throw_exception (e);
11115     }
11116
11117   install_breakpoint (internal, b, 1);
11118 }
11119
11120 /* Return count of debug registers needed to watch the given expression.
11121    If the watchpoint cannot be handled in hardware return zero.  */
11122
11123 static int
11124 can_use_hardware_watchpoint (struct value *v)
11125 {
11126   int found_memory_cnt = 0;
11127   struct value *head = v;
11128
11129   /* Did the user specifically forbid us to use hardware watchpoints? */
11130   if (!can_use_hw_watchpoints)
11131     return 0;
11132
11133   /* Make sure that the value of the expression depends only upon
11134      memory contents, and values computed from them within GDB.  If we
11135      find any register references or function calls, we can't use a
11136      hardware watchpoint.
11137
11138      The idea here is that evaluating an expression generates a series
11139      of values, one holding the value of every subexpression.  (The
11140      expression a*b+c has five subexpressions: a, b, a*b, c, and
11141      a*b+c.)  GDB's values hold almost enough information to establish
11142      the criteria given above --- they identify memory lvalues,
11143      register lvalues, computed values, etcetera.  So we can evaluate
11144      the expression, and then scan the chain of values that leaves
11145      behind to decide whether we can detect any possible change to the
11146      expression's final value using only hardware watchpoints.
11147
11148      However, I don't think that the values returned by inferior
11149      function calls are special in any way.  So this function may not
11150      notice that an expression involving an inferior function call
11151      can't be watched with hardware watchpoints.  FIXME.  */
11152   for (; v; v = value_next (v))
11153     {
11154       if (VALUE_LVAL (v) == lval_memory)
11155         {
11156           if (v != head && value_lazy (v))
11157             /* A lazy memory lvalue in the chain is one that GDB never
11158                needed to fetch; we either just used its address (e.g.,
11159                `a' in `a.b') or we never needed it at all (e.g., `a'
11160                in `a,b').  This doesn't apply to HEAD; if that is
11161                lazy then it was not readable, but watch it anyway.  */
11162             ;
11163           else
11164             {
11165               /* Ahh, memory we actually used!  Check if we can cover
11166                  it with hardware watchpoints.  */
11167               struct type *vtype = check_typedef (value_type (v));
11168
11169               /* We only watch structs and arrays if user asked for it
11170                  explicitly, never if they just happen to appear in a
11171                  middle of some value chain.  */
11172               if (v == head
11173                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11174                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11175                 {
11176                   CORE_ADDR vaddr = value_address (v);
11177                   int len;
11178                   int num_regs;
11179
11180                   len = (target_exact_watchpoints
11181                          && is_scalar_type_recursive (vtype))?
11182                     1 : TYPE_LENGTH (value_type (v));
11183
11184                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11185                   if (!num_regs)
11186                     return 0;
11187                   else
11188                     found_memory_cnt += num_regs;
11189                 }
11190             }
11191         }
11192       else if (VALUE_LVAL (v) != not_lval
11193                && deprecated_value_modifiable (v) == 0)
11194         return 0;       /* These are values from the history (e.g., $1).  */
11195       else if (VALUE_LVAL (v) == lval_register)
11196         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11197     }
11198
11199   /* The expression itself looks suitable for using a hardware
11200      watchpoint, but give the target machine a chance to reject it.  */
11201   return found_memory_cnt;
11202 }
11203
11204 void
11205 watch_command_wrapper (char *arg, int from_tty, int internal)
11206 {
11207   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11208 }
11209
11210 /* A helper function that looks for the "-location" argument and then
11211    calls watch_command_1.  */
11212
11213 static void
11214 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11215 {
11216   int just_location = 0;
11217
11218   if (arg
11219       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11220           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11221     {
11222       arg = skip_spaces (arg);
11223       just_location = 1;
11224     }
11225
11226   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11227 }
11228
11229 static void
11230 watch_command (char *arg, int from_tty)
11231 {
11232   watch_maybe_just_location (arg, hw_write, from_tty);
11233 }
11234
11235 void
11236 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11237 {
11238   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11239 }
11240
11241 static void
11242 rwatch_command (char *arg, int from_tty)
11243 {
11244   watch_maybe_just_location (arg, hw_read, from_tty);
11245 }
11246
11247 void
11248 awatch_command_wrapper (char *arg, int from_tty, int internal)
11249 {
11250   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11251 }
11252
11253 static void
11254 awatch_command (char *arg, int from_tty)
11255 {
11256   watch_maybe_just_location (arg, hw_access, from_tty);
11257 }
11258 \f
11259
11260 /* Helper routines for the until_command routine in infcmd.c.  Here
11261    because it uses the mechanisms of breakpoints.  */
11262
11263 struct until_break_command_continuation_args
11264 {
11265   struct breakpoint *breakpoint;
11266   struct breakpoint *breakpoint2;
11267   int thread_num;
11268 };
11269
11270 /* This function is called by fetch_inferior_event via the
11271    cmd_continuation pointer, to complete the until command.  It takes
11272    care of cleaning up the temporary breakpoints set up by the until
11273    command.  */
11274 static void
11275 until_break_command_continuation (void *arg, int err)
11276 {
11277   struct until_break_command_continuation_args *a = arg;
11278
11279   delete_breakpoint (a->breakpoint);
11280   if (a->breakpoint2)
11281     delete_breakpoint (a->breakpoint2);
11282   delete_longjmp_breakpoint (a->thread_num);
11283 }
11284
11285 void
11286 until_break_command (char *arg, int from_tty, int anywhere)
11287 {
11288   struct symtabs_and_lines sals;
11289   struct symtab_and_line sal;
11290   struct frame_info *frame;
11291   struct gdbarch *frame_gdbarch;
11292   struct frame_id stack_frame_id;
11293   struct frame_id caller_frame_id;
11294   struct breakpoint *breakpoint;
11295   struct breakpoint *breakpoint2 = NULL;
11296   struct cleanup *old_chain;
11297   int thread;
11298   struct thread_info *tp;
11299
11300   clear_proceed_status ();
11301
11302   /* Set a breakpoint where the user wants it and at return from
11303      this function.  */
11304
11305   if (last_displayed_sal_is_valid ())
11306     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11307                           get_last_displayed_symtab (),
11308                           get_last_displayed_line ());
11309   else
11310     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11311                           (struct symtab *) NULL, 0);
11312
11313   if (sals.nelts != 1)
11314     error (_("Couldn't get information on specified line."));
11315
11316   sal = sals.sals[0];
11317   xfree (sals.sals);    /* malloc'd, so freed.  */
11318
11319   if (*arg)
11320     error (_("Junk at end of arguments."));
11321
11322   resolve_sal_pc (&sal);
11323
11324   tp = inferior_thread ();
11325   thread = tp->num;
11326
11327   old_chain = make_cleanup (null_cleanup, NULL);
11328
11329   /* Note linespec handling above invalidates the frame chain.
11330      Installing a breakpoint also invalidates the frame chain (as it
11331      may need to switch threads), so do any frame handling before
11332      that.  */
11333
11334   frame = get_selected_frame (NULL);
11335   frame_gdbarch = get_frame_arch (frame);
11336   stack_frame_id = get_stack_frame_id (frame);
11337   caller_frame_id = frame_unwind_caller_id (frame);
11338
11339   /* Keep within the current frame, or in frames called by the current
11340      one.  */
11341
11342   if (frame_id_p (caller_frame_id))
11343     {
11344       struct symtab_and_line sal2;
11345
11346       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11347       sal2.pc = frame_unwind_caller_pc (frame);
11348       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11349                                               sal2,
11350                                               caller_frame_id,
11351                                               bp_until);
11352       make_cleanup_delete_breakpoint (breakpoint2);
11353
11354       set_longjmp_breakpoint (tp, caller_frame_id);
11355       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11356     }
11357
11358   /* set_momentary_breakpoint could invalidate FRAME.  */
11359   frame = NULL;
11360
11361   if (anywhere)
11362     /* If the user told us to continue until a specified location,
11363        we don't specify a frame at which we need to stop.  */
11364     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11365                                            null_frame_id, bp_until);
11366   else
11367     /* Otherwise, specify the selected frame, because we want to stop
11368        only at the very same frame.  */
11369     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11370                                            stack_frame_id, bp_until);
11371   make_cleanup_delete_breakpoint (breakpoint);
11372
11373   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11374
11375   /* If we are running asynchronously, and proceed call above has
11376      actually managed to start the target, arrange for breakpoints to
11377      be deleted when the target stops.  Otherwise, we're already
11378      stopped and delete breakpoints via cleanup chain.  */
11379
11380   if (target_can_async_p () && is_running (inferior_ptid))
11381     {
11382       struct until_break_command_continuation_args *args;
11383       args = xmalloc (sizeof (*args));
11384
11385       args->breakpoint = breakpoint;
11386       args->breakpoint2 = breakpoint2;
11387       args->thread_num = thread;
11388
11389       discard_cleanups (old_chain);
11390       add_continuation (inferior_thread (),
11391                         until_break_command_continuation, args,
11392                         xfree);
11393     }
11394   else
11395     do_cleanups (old_chain);
11396 }
11397
11398 /* This function attempts to parse an optional "if <cond>" clause
11399    from the arg string.  If one is not found, it returns NULL.
11400
11401    Else, it returns a pointer to the condition string.  (It does not
11402    attempt to evaluate the string against a particular block.)  And,
11403    it updates arg to point to the first character following the parsed
11404    if clause in the arg string.  */
11405
11406 static char *
11407 ep_parse_optional_if_clause (char **arg)
11408 {
11409   char *cond_string;
11410
11411   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11412     return NULL;
11413
11414   /* Skip the "if" keyword.  */
11415   (*arg) += 2;
11416
11417   /* Skip any extra leading whitespace, and record the start of the
11418      condition string.  */
11419   *arg = skip_spaces (*arg);
11420   cond_string = *arg;
11421
11422   /* Assume that the condition occupies the remainder of the arg
11423      string.  */
11424   (*arg) += strlen (cond_string);
11425
11426   return cond_string;
11427 }
11428
11429 /* Commands to deal with catching events, such as signals, exceptions,
11430    process start/exit, etc.  */
11431
11432 typedef enum
11433 {
11434   catch_fork_temporary, catch_vfork_temporary,
11435   catch_fork_permanent, catch_vfork_permanent
11436 }
11437 catch_fork_kind;
11438
11439 static void
11440 catch_fork_command_1 (char *arg, int from_tty, 
11441                       struct cmd_list_element *command)
11442 {
11443   struct gdbarch *gdbarch = get_current_arch ();
11444   char *cond_string = NULL;
11445   catch_fork_kind fork_kind;
11446   int tempflag;
11447
11448   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11449   tempflag = (fork_kind == catch_fork_temporary
11450               || fork_kind == catch_vfork_temporary);
11451
11452   if (!arg)
11453     arg = "";
11454   arg = skip_spaces (arg);
11455
11456   /* The allowed syntax is:
11457      catch [v]fork
11458      catch [v]fork if <cond>
11459
11460      First, check if there's an if clause.  */
11461   cond_string = ep_parse_optional_if_clause (&arg);
11462
11463   if ((*arg != '\0') && !isspace (*arg))
11464     error (_("Junk at end of arguments."));
11465
11466   /* If this target supports it, create a fork or vfork catchpoint
11467      and enable reporting of such events.  */
11468   switch (fork_kind)
11469     {
11470     case catch_fork_temporary:
11471     case catch_fork_permanent:
11472       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11473                                           &catch_fork_breakpoint_ops);
11474       break;
11475     case catch_vfork_temporary:
11476     case catch_vfork_permanent:
11477       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11478                                           &catch_vfork_breakpoint_ops);
11479       break;
11480     default:
11481       error (_("unsupported or unknown fork kind; cannot catch it"));
11482       break;
11483     }
11484 }
11485
11486 static void
11487 catch_exec_command_1 (char *arg, int from_tty, 
11488                       struct cmd_list_element *command)
11489 {
11490   struct exec_catchpoint *c;
11491   struct gdbarch *gdbarch = get_current_arch ();
11492   int tempflag;
11493   char *cond_string = NULL;
11494
11495   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11496
11497   if (!arg)
11498     arg = "";
11499   arg = skip_spaces (arg);
11500
11501   /* The allowed syntax is:
11502      catch exec
11503      catch exec if <cond>
11504
11505      First, check if there's an if clause.  */
11506   cond_string = ep_parse_optional_if_clause (&arg);
11507
11508   if ((*arg != '\0') && !isspace (*arg))
11509     error (_("Junk at end of arguments."));
11510
11511   c = XNEW (struct exec_catchpoint);
11512   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11513                    &catch_exec_breakpoint_ops);
11514   c->exec_pathname = NULL;
11515
11516   install_breakpoint (0, &c->base, 1);
11517 }
11518
11519 static enum print_stop_action
11520 print_it_exception_catchpoint (bpstat bs)
11521 {
11522   struct ui_out *uiout = current_uiout;
11523   struct breakpoint *b = bs->breakpoint_at;
11524   int bp_temp, bp_throw;
11525
11526   annotate_catchpoint (b->number);
11527
11528   bp_throw = strstr (b->addr_string, "throw") != NULL;
11529   if (b->loc->address != b->loc->requested_address)
11530     breakpoint_adjustment_warning (b->loc->requested_address,
11531                                    b->loc->address,
11532                                    b->number, 1);
11533   bp_temp = b->disposition == disp_del;
11534   ui_out_text (uiout, 
11535                bp_temp ? "Temporary catchpoint "
11536                        : "Catchpoint ");
11537   if (!ui_out_is_mi_like_p (uiout))
11538     ui_out_field_int (uiout, "bkptno", b->number);
11539   ui_out_text (uiout,
11540                bp_throw ? " (exception thrown), "
11541                         : " (exception caught), ");
11542   if (ui_out_is_mi_like_p (uiout))
11543     {
11544       ui_out_field_string (uiout, "reason", 
11545                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11546       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11547       ui_out_field_int (uiout, "bkptno", b->number);
11548     }
11549   return PRINT_SRC_AND_LOC;
11550 }
11551
11552 static void
11553 print_one_exception_catchpoint (struct breakpoint *b, 
11554                                 struct bp_location **last_loc)
11555 {
11556   struct value_print_options opts;
11557   struct ui_out *uiout = current_uiout;
11558
11559   get_user_print_options (&opts);
11560   if (opts.addressprint)
11561     {
11562       annotate_field (4);
11563       if (b->loc == NULL || b->loc->shlib_disabled)
11564         ui_out_field_string (uiout, "addr", "<PENDING>");
11565       else
11566         ui_out_field_core_addr (uiout, "addr",
11567                                 b->loc->gdbarch, b->loc->address);
11568     }
11569   annotate_field (5);
11570   if (b->loc)
11571     *last_loc = b->loc;
11572   if (strstr (b->addr_string, "throw") != NULL)
11573     {
11574       ui_out_field_string (uiout, "what", "exception throw");
11575       if (ui_out_is_mi_like_p (uiout))
11576         ui_out_field_string (uiout, "catch-type", "throw");
11577     }
11578   else
11579     {
11580       ui_out_field_string (uiout, "what", "exception catch");
11581       if (ui_out_is_mi_like_p (uiout))
11582         ui_out_field_string (uiout, "catch-type", "catch");
11583     }
11584 }
11585
11586 static void
11587 print_mention_exception_catchpoint (struct breakpoint *b)
11588 {
11589   struct ui_out *uiout = current_uiout;
11590   int bp_temp;
11591   int bp_throw;
11592
11593   bp_temp = b->disposition == disp_del;
11594   bp_throw = strstr (b->addr_string, "throw") != NULL;
11595   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11596                               : _("Catchpoint "));
11597   ui_out_field_int (uiout, "bkptno", b->number);
11598   ui_out_text (uiout, bp_throw ? _(" (throw)")
11599                                : _(" (catch)"));
11600 }
11601
11602 /* Implement the "print_recreate" breakpoint_ops method for throw and
11603    catch catchpoints.  */
11604
11605 static void
11606 print_recreate_exception_catchpoint (struct breakpoint *b, 
11607                                      struct ui_file *fp)
11608 {
11609   int bp_temp;
11610   int bp_throw;
11611
11612   bp_temp = b->disposition == disp_del;
11613   bp_throw = strstr (b->addr_string, "throw") != NULL;
11614   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11615   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11616   print_recreate_thread (b, fp);
11617 }
11618
11619 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11620
11621 static int
11622 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11623                           enum exception_event_kind ex_event, int from_tty)
11624 {
11625   char *trigger_func_name;
11626  
11627   if (ex_event == EX_EVENT_CATCH)
11628     trigger_func_name = "__cxa_begin_catch";
11629   else
11630     trigger_func_name = "__cxa_throw";
11631
11632   create_breakpoint (get_current_arch (),
11633                      trigger_func_name, cond_string, -1, NULL,
11634                      0 /* condition and thread are valid.  */,
11635                      tempflag, bp_breakpoint,
11636                      0,
11637                      AUTO_BOOLEAN_TRUE /* pending */,
11638                      &gnu_v3_exception_catchpoint_ops, from_tty,
11639                      1 /* enabled */,
11640                      0 /* internal */,
11641                      0);
11642
11643   return 1;
11644 }
11645
11646 /* Deal with "catch catch" and "catch throw" commands.  */
11647
11648 static void
11649 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11650                            int tempflag, int from_tty)
11651 {
11652   char *cond_string = NULL;
11653
11654   if (!arg)
11655     arg = "";
11656   arg = skip_spaces (arg);
11657
11658   cond_string = ep_parse_optional_if_clause (&arg);
11659
11660   if ((*arg != '\0') && !isspace (*arg))
11661     error (_("Junk at end of arguments."));
11662
11663   if (ex_event != EX_EVENT_THROW
11664       && ex_event != EX_EVENT_CATCH)
11665     error (_("Unsupported or unknown exception event; cannot catch it"));
11666
11667   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11668     return;
11669
11670   warning (_("Unsupported with this platform/compiler combination."));
11671 }
11672
11673 /* Implementation of "catch catch" command.  */
11674
11675 static void
11676 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11677 {
11678   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11679
11680   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11681 }
11682
11683 /* Implementation of "catch throw" command.  */
11684
11685 static void
11686 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11687 {
11688   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11689
11690   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11691 }
11692
11693 void
11694 init_ada_exception_breakpoint (struct breakpoint *b,
11695                                struct gdbarch *gdbarch,
11696                                struct symtab_and_line sal,
11697                                char *addr_string,
11698                                const struct breakpoint_ops *ops,
11699                                int tempflag,
11700                                int from_tty)
11701 {
11702   if (from_tty)
11703     {
11704       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11705       if (!loc_gdbarch)
11706         loc_gdbarch = gdbarch;
11707
11708       describe_other_breakpoints (loc_gdbarch,
11709                                   sal.pspace, sal.pc, sal.section, -1);
11710       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11711          version for exception catchpoints, because two catchpoints
11712          used for different exception names will use the same address.
11713          In this case, a "breakpoint ... also set at..." warning is
11714          unproductive.  Besides, the warning phrasing is also a bit
11715          inappropriate, we should use the word catchpoint, and tell
11716          the user what type of catchpoint it is.  The above is good
11717          enough for now, though.  */
11718     }
11719
11720   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11721
11722   b->enable_state = bp_enabled;
11723   b->disposition = tempflag ? disp_del : disp_donttouch;
11724   b->addr_string = addr_string;
11725   b->language = language_ada;
11726 }
11727
11728 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11729    filter list, or NULL if no filtering is required.  */
11730 static VEC(int) *
11731 catch_syscall_split_args (char *arg)
11732 {
11733   VEC(int) *result = NULL;
11734   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11735
11736   while (*arg != '\0')
11737     {
11738       int i, syscall_number;
11739       char *endptr;
11740       char cur_name[128];
11741       struct syscall s;
11742
11743       /* Skip whitespace.  */
11744       while (isspace (*arg))
11745         arg++;
11746
11747       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11748         cur_name[i] = arg[i];
11749       cur_name[i] = '\0';
11750       arg += i;
11751
11752       /* Check if the user provided a syscall name or a number.  */
11753       syscall_number = (int) strtol (cur_name, &endptr, 0);
11754       if (*endptr == '\0')
11755         get_syscall_by_number (syscall_number, &s);
11756       else
11757         {
11758           /* We have a name.  Let's check if it's valid and convert it
11759              to a number.  */
11760           get_syscall_by_name (cur_name, &s);
11761
11762           if (s.number == UNKNOWN_SYSCALL)
11763             /* Here we have to issue an error instead of a warning,
11764                because GDB cannot do anything useful if there's no
11765                syscall number to be caught.  */
11766             error (_("Unknown syscall name '%s'."), cur_name);
11767         }
11768
11769       /* Ok, it's valid.  */
11770       VEC_safe_push (int, result, s.number);
11771     }
11772
11773   discard_cleanups (cleanup);
11774   return result;
11775 }
11776
11777 /* Implement the "catch syscall" command.  */
11778
11779 static void
11780 catch_syscall_command_1 (char *arg, int from_tty, 
11781                          struct cmd_list_element *command)
11782 {
11783   int tempflag;
11784   VEC(int) *filter;
11785   struct syscall s;
11786   struct gdbarch *gdbarch = get_current_arch ();
11787
11788   /* Checking if the feature if supported.  */
11789   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11790     error (_("The feature 'catch syscall' is not supported on \
11791 this architecture yet."));
11792
11793   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11794
11795   arg = skip_spaces (arg);
11796
11797   /* We need to do this first "dummy" translation in order
11798      to get the syscall XML file loaded or, most important,
11799      to display a warning to the user if there's no XML file
11800      for his/her architecture.  */
11801   get_syscall_by_number (0, &s);
11802
11803   /* The allowed syntax is:
11804      catch syscall
11805      catch syscall <name | number> [<name | number> ... <name | number>]
11806
11807      Let's check if there's a syscall name.  */
11808
11809   if (arg != NULL)
11810     filter = catch_syscall_split_args (arg);
11811   else
11812     filter = NULL;
11813
11814   create_syscall_event_catchpoint (tempflag, filter,
11815                                    &catch_syscall_breakpoint_ops);
11816 }
11817
11818 static void
11819 catch_command (char *arg, int from_tty)
11820 {
11821   error (_("Catch requires an event name."));
11822 }
11823 \f
11824
11825 static void
11826 tcatch_command (char *arg, int from_tty)
11827 {
11828   error (_("Catch requires an event name."));
11829 }
11830
11831 /* A qsort comparison function that sorts breakpoints in order.  */
11832
11833 static int
11834 compare_breakpoints (const void *a, const void *b)
11835 {
11836   const breakpoint_p *ba = a;
11837   uintptr_t ua = (uintptr_t) *ba;
11838   const breakpoint_p *bb = b;
11839   uintptr_t ub = (uintptr_t) *bb;
11840
11841   if ((*ba)->number < (*bb)->number)
11842     return -1;
11843   else if ((*ba)->number > (*bb)->number)
11844     return 1;
11845
11846   /* Now sort by address, in case we see, e..g, two breakpoints with
11847      the number 0.  */
11848   if (ua < ub)
11849     return -1;
11850   return ua > ub ? 1 : 0;
11851 }
11852
11853 /* Delete breakpoints by address or line.  */
11854
11855 static void
11856 clear_command (char *arg, int from_tty)
11857 {
11858   struct breakpoint *b, *prev;
11859   VEC(breakpoint_p) *found = 0;
11860   int ix;
11861   int default_match;
11862   struct symtabs_and_lines sals;
11863   struct symtab_and_line sal;
11864   int i;
11865   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11866
11867   if (arg)
11868     {
11869       sals = decode_line_with_current_source (arg,
11870                                               (DECODE_LINE_FUNFIRSTLINE
11871                                                | DECODE_LINE_LIST_MODE));
11872       make_cleanup (xfree, sals.sals);
11873       default_match = 0;
11874     }
11875   else
11876     {
11877       sals.sals = (struct symtab_and_line *)
11878         xmalloc (sizeof (struct symtab_and_line));
11879       make_cleanup (xfree, sals.sals);
11880       init_sal (&sal);          /* Initialize to zeroes.  */
11881
11882       /* Set sal's line, symtab, pc, and pspace to the values
11883          corresponding to the last call to print_frame_info.  If the
11884          codepoint is not valid, this will set all the fields to 0.  */
11885       get_last_displayed_sal (&sal);
11886       if (sal.symtab == 0)
11887         error (_("No source file specified."));
11888
11889       sals.sals[0] = sal;
11890       sals.nelts = 1;
11891
11892       default_match = 1;
11893     }
11894
11895   /* We don't call resolve_sal_pc here.  That's not as bad as it
11896      seems, because all existing breakpoints typically have both
11897      file/line and pc set.  So, if clear is given file/line, we can
11898      match this to existing breakpoint without obtaining pc at all.
11899
11900      We only support clearing given the address explicitly 
11901      present in breakpoint table.  Say, we've set breakpoint 
11902      at file:line.  There were several PC values for that file:line,
11903      due to optimization, all in one block.
11904
11905      We've picked one PC value.  If "clear" is issued with another
11906      PC corresponding to the same file:line, the breakpoint won't
11907      be cleared.  We probably can still clear the breakpoint, but 
11908      since the other PC value is never presented to user, user
11909      can only find it by guessing, and it does not seem important
11910      to support that.  */
11911
11912   /* For each line spec given, delete bps which correspond to it.  Do
11913      it in two passes, solely to preserve the current behavior that
11914      from_tty is forced true if we delete more than one
11915      breakpoint.  */
11916
11917   found = NULL;
11918   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11919   for (i = 0; i < sals.nelts; i++)
11920     {
11921       int is_abs;
11922
11923       /* If exact pc given, clear bpts at that pc.
11924          If line given (pc == 0), clear all bpts on specified line.
11925          If defaulting, clear all bpts on default line
11926          or at default pc.
11927
11928          defaulting    sal.pc != 0    tests to do
11929
11930          0              1             pc
11931          1              1             pc _and_ line
11932          0              0             line
11933          1              0             <can't happen> */
11934
11935       sal = sals.sals[i];
11936       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11937
11938       /* Find all matching breakpoints and add them to 'found'.  */
11939       ALL_BREAKPOINTS (b)
11940         {
11941           int match = 0;
11942           /* Are we going to delete b?  */
11943           if (b->type != bp_none && !is_watchpoint (b))
11944             {
11945               struct bp_location *loc = b->loc;
11946               for (; loc; loc = loc->next)
11947                 {
11948                   /* If the user specified file:line, don't allow a PC
11949                      match.  This matches historical gdb behavior.  */
11950                   int pc_match = (!sal.explicit_line
11951                                   && sal.pc
11952                                   && (loc->pspace == sal.pspace)
11953                                   && (loc->address == sal.pc)
11954                                   && (!section_is_overlay (loc->section)
11955                                       || loc->section == sal.section));
11956                   int line_match = 0;
11957
11958                   if ((default_match || sal.explicit_line)
11959                       && loc->source_file != NULL
11960                       && sal.symtab != NULL
11961                       && sal.pspace == loc->pspace
11962                       && loc->line_number == sal.line)
11963                     {
11964                       if (filename_cmp (loc->source_file,
11965                                         sal.symtab->filename) == 0)
11966                         line_match = 1;
11967                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11968                                && compare_filenames_for_search (loc->source_file,
11969                                                                 sal.symtab->filename))
11970                         line_match = 1;
11971                     }
11972
11973                   if (pc_match || line_match)
11974                     {
11975                       match = 1;
11976                       break;
11977                     }
11978                 }
11979             }
11980
11981           if (match)
11982             VEC_safe_push(breakpoint_p, found, b);
11983         }
11984     }
11985
11986   /* Now go thru the 'found' chain and delete them.  */
11987   if (VEC_empty(breakpoint_p, found))
11988     {
11989       if (arg)
11990         error (_("No breakpoint at %s."), arg);
11991       else
11992         error (_("No breakpoint at this line."));
11993     }
11994
11995   /* Remove duplicates from the vec.  */
11996   qsort (VEC_address (breakpoint_p, found),
11997          VEC_length (breakpoint_p, found),
11998          sizeof (breakpoint_p),
11999          compare_breakpoints);
12000   prev = VEC_index (breakpoint_p, found, 0);
12001   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12002     {
12003       if (b == prev)
12004         {
12005           VEC_ordered_remove (breakpoint_p, found, ix);
12006           --ix;
12007         }
12008     }
12009
12010   if (VEC_length(breakpoint_p, found) > 1)
12011     from_tty = 1;       /* Always report if deleted more than one.  */
12012   if (from_tty)
12013     {
12014       if (VEC_length(breakpoint_p, found) == 1)
12015         printf_unfiltered (_("Deleted breakpoint "));
12016       else
12017         printf_unfiltered (_("Deleted breakpoints "));
12018     }
12019   annotate_breakpoints_changed ();
12020
12021   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12022     {
12023       if (from_tty)
12024         printf_unfiltered ("%d ", b->number);
12025       delete_breakpoint (b);
12026     }
12027   if (from_tty)
12028     putchar_unfiltered ('\n');
12029
12030   do_cleanups (cleanups);
12031 }
12032 \f
12033 /* Delete breakpoint in BS if they are `delete' breakpoints and
12034    all breakpoints that are marked for deletion, whether hit or not.
12035    This is called after any breakpoint is hit, or after errors.  */
12036
12037 void
12038 breakpoint_auto_delete (bpstat bs)
12039 {
12040   struct breakpoint *b, *b_tmp;
12041
12042   for (; bs; bs = bs->next)
12043     if (bs->breakpoint_at
12044         && bs->breakpoint_at->disposition == disp_del
12045         && bs->stop)
12046       delete_breakpoint (bs->breakpoint_at);
12047
12048   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12049   {
12050     if (b->disposition == disp_del_at_next_stop)
12051       delete_breakpoint (b);
12052   }
12053 }
12054
12055 /* A comparison function for bp_location AP and BP being interfaced to
12056    qsort.  Sort elements primarily by their ADDRESS (no matter what
12057    does breakpoint_address_is_meaningful say for its OWNER),
12058    secondarily by ordering first bp_permanent OWNERed elements and
12059    terciarily just ensuring the array is sorted stable way despite
12060    qsort being an unstable algorithm.  */
12061
12062 static int
12063 bp_location_compare (const void *ap, const void *bp)
12064 {
12065   struct bp_location *a = *(void **) ap;
12066   struct bp_location *b = *(void **) bp;
12067   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12068   int a_perm = a->owner->enable_state == bp_permanent;
12069   int b_perm = b->owner->enable_state == bp_permanent;
12070
12071   if (a->address != b->address)
12072     return (a->address > b->address) - (a->address < b->address);
12073
12074   /* Sort locations at the same address by their pspace number, keeping
12075      locations of the same inferior (in a multi-inferior environment)
12076      grouped.  */
12077
12078   if (a->pspace->num != b->pspace->num)
12079     return ((a->pspace->num > b->pspace->num)
12080             - (a->pspace->num < b->pspace->num));
12081
12082   /* Sort permanent breakpoints first.  */
12083   if (a_perm != b_perm)
12084     return (a_perm < b_perm) - (a_perm > b_perm);
12085
12086   /* Make the internal GDB representation stable across GDB runs
12087      where A and B memory inside GDB can differ.  Breakpoint locations of
12088      the same type at the same address can be sorted in arbitrary order.  */
12089
12090   if (a->owner->number != b->owner->number)
12091     return ((a->owner->number > b->owner->number)
12092             - (a->owner->number < b->owner->number));
12093
12094   return (a > b) - (a < b);
12095 }
12096
12097 /* Set bp_location_placed_address_before_address_max and
12098    bp_location_shadow_len_after_address_max according to the current
12099    content of the bp_location array.  */
12100
12101 static void
12102 bp_location_target_extensions_update (void)
12103 {
12104   struct bp_location *bl, **blp_tmp;
12105
12106   bp_location_placed_address_before_address_max = 0;
12107   bp_location_shadow_len_after_address_max = 0;
12108
12109   ALL_BP_LOCATIONS (bl, blp_tmp)
12110     {
12111       CORE_ADDR start, end, addr;
12112
12113       if (!bp_location_has_shadow (bl))
12114         continue;
12115
12116       start = bl->target_info.placed_address;
12117       end = start + bl->target_info.shadow_len;
12118
12119       gdb_assert (bl->address >= start);
12120       addr = bl->address - start;
12121       if (addr > bp_location_placed_address_before_address_max)
12122         bp_location_placed_address_before_address_max = addr;
12123
12124       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12125
12126       gdb_assert (bl->address < end);
12127       addr = end - bl->address;
12128       if (addr > bp_location_shadow_len_after_address_max)
12129         bp_location_shadow_len_after_address_max = addr;
12130     }
12131 }
12132
12133 /* Download tracepoint locations if they haven't been.  */
12134
12135 static void
12136 download_tracepoint_locations (void)
12137 {
12138   struct breakpoint *b;
12139   struct cleanup *old_chain;
12140
12141   if (!target_can_download_tracepoint ())
12142     return;
12143
12144   old_chain = save_current_space_and_thread ();
12145
12146   ALL_TRACEPOINTS (b)
12147     {
12148       struct bp_location *bl;
12149       struct tracepoint *t;
12150       int bp_location_downloaded = 0;
12151
12152       if ((b->type == bp_fast_tracepoint
12153            ? !may_insert_fast_tracepoints
12154            : !may_insert_tracepoints))
12155         continue;
12156
12157       for (bl = b->loc; bl; bl = bl->next)
12158         {
12159           /* In tracepoint, locations are _never_ duplicated, so
12160              should_be_inserted is equivalent to
12161              unduplicated_should_be_inserted.  */
12162           if (!should_be_inserted (bl) || bl->inserted)
12163             continue;
12164
12165           switch_to_program_space_and_thread (bl->pspace);
12166
12167           target_download_tracepoint (bl);
12168
12169           bl->inserted = 1;
12170           bp_location_downloaded = 1;
12171         }
12172       t = (struct tracepoint *) b;
12173       t->number_on_target = b->number;
12174       if (bp_location_downloaded)
12175         observer_notify_breakpoint_modified (b);
12176     }
12177
12178   do_cleanups (old_chain);
12179 }
12180
12181 /* Swap the insertion/duplication state between two locations.  */
12182
12183 static void
12184 swap_insertion (struct bp_location *left, struct bp_location *right)
12185 {
12186   const int left_inserted = left->inserted;
12187   const int left_duplicate = left->duplicate;
12188   const int left_needs_update = left->needs_update;
12189   const struct bp_target_info left_target_info = left->target_info;
12190
12191   /* Locations of tracepoints can never be duplicated.  */
12192   if (is_tracepoint (left->owner))
12193     gdb_assert (!left->duplicate);
12194   if (is_tracepoint (right->owner))
12195     gdb_assert (!right->duplicate);
12196
12197   left->inserted = right->inserted;
12198   left->duplicate = right->duplicate;
12199   left->needs_update = right->needs_update;
12200   left->target_info = right->target_info;
12201   right->inserted = left_inserted;
12202   right->duplicate = left_duplicate;
12203   right->needs_update = left_needs_update;
12204   right->target_info = left_target_info;
12205 }
12206
12207 /* Force the re-insertion of the locations at ADDRESS.  This is called
12208    once a new/deleted/modified duplicate location is found and we are evaluating
12209    conditions on the target's side.  Such conditions need to be updated on
12210    the target.  */
12211
12212 static void
12213 force_breakpoint_reinsertion (struct bp_location *bl)
12214 {
12215   struct bp_location **locp = NULL, **loc2p;
12216   struct bp_location *loc;
12217   CORE_ADDR address = 0;
12218   int pspace_num;
12219
12220   address = bl->address;
12221   pspace_num = bl->pspace->num;
12222
12223   /* This is only meaningful if the target is
12224      evaluating conditions and if the user has
12225      opted for condition evaluation on the target's
12226      side.  */
12227   if (gdb_evaluates_breakpoint_condition_p ()
12228       || !target_supports_evaluation_of_breakpoint_conditions ())
12229     return;
12230
12231   /* Flag all breakpoint locations with this address and
12232      the same program space as the location
12233      as "its condition has changed".  We need to
12234      update the conditions on the target's side.  */
12235   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12236     {
12237       loc = *loc2p;
12238
12239       if (!is_breakpoint (loc->owner)
12240           || pspace_num != loc->pspace->num)
12241         continue;
12242
12243       /* Flag the location appropriately.  We use a different state to
12244          let everyone know that we already updated the set of locations
12245          with addr bl->address and program space bl->pspace.  This is so
12246          we don't have to keep calling these functions just to mark locations
12247          that have already been marked.  */
12248       loc->condition_changed = condition_updated;
12249
12250       /* Free the agent expression bytecode as well.  We will compute
12251          it later on.  */
12252       if (loc->cond_bytecode)
12253         {
12254           free_agent_expr (loc->cond_bytecode);
12255           loc->cond_bytecode = NULL;
12256         }
12257     }
12258 }
12259
12260 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12261    into the inferior, only remove already-inserted locations that no
12262    longer should be inserted.  Functions that delete a breakpoint or
12263    breakpoints should pass false, so that deleting a breakpoint
12264    doesn't have the side effect of inserting the locations of other
12265    breakpoints that are marked not-inserted, but should_be_inserted
12266    returns true on them.
12267
12268    This behaviour is useful is situations close to tear-down -- e.g.,
12269    after an exec, while the target still has execution, but breakpoint
12270    shadows of the previous executable image should *NOT* be restored
12271    to the new image; or before detaching, where the target still has
12272    execution and wants to delete breakpoints from GDB's lists, and all
12273    breakpoints had already been removed from the inferior.  */
12274
12275 static void
12276 update_global_location_list (int should_insert)
12277 {
12278   struct breakpoint *b;
12279   struct bp_location **locp, *loc;
12280   struct cleanup *cleanups;
12281   /* Last breakpoint location address that was marked for update.  */
12282   CORE_ADDR last_addr = 0;
12283   /* Last breakpoint location program space that was marked for update.  */
12284   int last_pspace_num = -1;
12285
12286   /* Used in the duplicates detection below.  When iterating over all
12287      bp_locations, points to the first bp_location of a given address.
12288      Breakpoints and watchpoints of different types are never
12289      duplicates of each other.  Keep one pointer for each type of
12290      breakpoint/watchpoint, so we only need to loop over all locations
12291      once.  */
12292   struct bp_location *bp_loc_first;  /* breakpoint */
12293   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12294   struct bp_location *awp_loc_first; /* access watchpoint */
12295   struct bp_location *rwp_loc_first; /* read watchpoint */
12296
12297   /* Saved former bp_location array which we compare against the newly
12298      built bp_location from the current state of ALL_BREAKPOINTS.  */
12299   struct bp_location **old_location, **old_locp;
12300   unsigned old_location_count;
12301
12302   old_location = bp_location;
12303   old_location_count = bp_location_count;
12304   bp_location = NULL;
12305   bp_location_count = 0;
12306   cleanups = make_cleanup (xfree, old_location);
12307
12308   ALL_BREAKPOINTS (b)
12309     for (loc = b->loc; loc; loc = loc->next)
12310       bp_location_count++;
12311
12312   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12313   locp = bp_location;
12314   ALL_BREAKPOINTS (b)
12315     for (loc = b->loc; loc; loc = loc->next)
12316       *locp++ = loc;
12317   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12318          bp_location_compare);
12319
12320   bp_location_target_extensions_update ();
12321
12322   /* Identify bp_location instances that are no longer present in the
12323      new list, and therefore should be freed.  Note that it's not
12324      necessary that those locations should be removed from inferior --
12325      if there's another location at the same address (previously
12326      marked as duplicate), we don't need to remove/insert the
12327      location.
12328      
12329      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12330      and former bp_location array state respectively.  */
12331
12332   locp = bp_location;
12333   for (old_locp = old_location; old_locp < old_location + old_location_count;
12334        old_locp++)
12335     {
12336       struct bp_location *old_loc = *old_locp;
12337       struct bp_location **loc2p;
12338
12339       /* Tells if 'old_loc' is found among the new locations.  If
12340          not, we have to free it.  */
12341       int found_object = 0;
12342       /* Tells if the location should remain inserted in the target.  */
12343       int keep_in_target = 0;
12344       int removed = 0;
12345
12346       /* Skip LOCP entries which will definitely never be needed.
12347          Stop either at or being the one matching OLD_LOC.  */
12348       while (locp < bp_location + bp_location_count
12349              && (*locp)->address < old_loc->address)
12350         locp++;
12351
12352       for (loc2p = locp;
12353            (loc2p < bp_location + bp_location_count
12354             && (*loc2p)->address == old_loc->address);
12355            loc2p++)
12356         {
12357           /* Check if this is a new/duplicated location or a duplicated
12358              location that had its condition modified.  If so, we want to send
12359              its condition to the target if evaluation of conditions is taking
12360              place there.  */
12361           if ((*loc2p)->condition_changed == condition_modified
12362               && (last_addr != old_loc->address
12363                   || last_pspace_num != old_loc->pspace->num))
12364             {
12365               force_breakpoint_reinsertion (*loc2p);
12366               last_pspace_num = old_loc->pspace->num;
12367             }
12368
12369           if (*loc2p == old_loc)
12370             found_object = 1;
12371         }
12372
12373       /* We have already handled this address, update it so that we don't
12374          have to go through updates again.  */
12375       last_addr = old_loc->address;
12376
12377       /* Target-side condition evaluation: Handle deleted locations.  */
12378       if (!found_object)
12379         force_breakpoint_reinsertion (old_loc);
12380
12381       /* If this location is no longer present, and inserted, look if
12382          there's maybe a new location at the same address.  If so,
12383          mark that one inserted, and don't remove this one.  This is
12384          needed so that we don't have a time window where a breakpoint
12385          at certain location is not inserted.  */
12386
12387       if (old_loc->inserted)
12388         {
12389           /* If the location is inserted now, we might have to remove
12390              it.  */
12391
12392           if (found_object && should_be_inserted (old_loc))
12393             {
12394               /* The location is still present in the location list,
12395                  and still should be inserted.  Don't do anything.  */
12396               keep_in_target = 1;
12397             }
12398           else
12399             {
12400               /* This location still exists, but it won't be kept in the
12401                  target since it may have been disabled.  We proceed to
12402                  remove its target-side condition.  */
12403
12404               /* The location is either no longer present, or got
12405                  disabled.  See if there's another location at the
12406                  same address, in which case we don't need to remove
12407                  this one from the target.  */
12408
12409               /* OLD_LOC comes from existing struct breakpoint.  */
12410               if (breakpoint_address_is_meaningful (old_loc->owner))
12411                 {
12412                   for (loc2p = locp;
12413                        (loc2p < bp_location + bp_location_count
12414                         && (*loc2p)->address == old_loc->address);
12415                        loc2p++)
12416                     {
12417                       struct bp_location *loc2 = *loc2p;
12418
12419                       if (breakpoint_locations_match (loc2, old_loc))
12420                         {
12421                           /* Read watchpoint locations are switched to
12422                              access watchpoints, if the former are not
12423                              supported, but the latter are.  */
12424                           if (is_hardware_watchpoint (old_loc->owner))
12425                             {
12426                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12427                               loc2->watchpoint_type = old_loc->watchpoint_type;
12428                             }
12429
12430                           /* loc2 is a duplicated location. We need to check
12431                              if it should be inserted in case it will be
12432                              unduplicated.  */
12433                           if (loc2 != old_loc
12434                               && unduplicated_should_be_inserted (loc2))
12435                             {
12436                               swap_insertion (old_loc, loc2);
12437                               keep_in_target = 1;
12438                               break;
12439                             }
12440                         }
12441                     }
12442                 }
12443             }
12444
12445           if (!keep_in_target)
12446             {
12447               if (remove_breakpoint (old_loc, mark_uninserted))
12448                 {
12449                   /* This is just about all we can do.  We could keep
12450                      this location on the global list, and try to
12451                      remove it next time, but there's no particular
12452                      reason why we will succeed next time.
12453                      
12454                      Note that at this point, old_loc->owner is still
12455                      valid, as delete_breakpoint frees the breakpoint
12456                      only after calling us.  */
12457                   printf_filtered (_("warning: Error removing "
12458                                      "breakpoint %d\n"), 
12459                                    old_loc->owner->number);
12460                 }
12461               removed = 1;
12462             }
12463         }
12464
12465       if (!found_object)
12466         {
12467           if (removed && non_stop
12468               && breakpoint_address_is_meaningful (old_loc->owner)
12469               && !is_hardware_watchpoint (old_loc->owner))
12470             {
12471               /* This location was removed from the target.  In
12472                  non-stop mode, a race condition is possible where
12473                  we've removed a breakpoint, but stop events for that
12474                  breakpoint are already queued and will arrive later.
12475                  We apply an heuristic to be able to distinguish such
12476                  SIGTRAPs from other random SIGTRAPs: we keep this
12477                  breakpoint location for a bit, and will retire it
12478                  after we see some number of events.  The theory here
12479                  is that reporting of events should, "on the average",
12480                  be fair, so after a while we'll see events from all
12481                  threads that have anything of interest, and no longer
12482                  need to keep this breakpoint location around.  We
12483                  don't hold locations forever so to reduce chances of
12484                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12485                  SIGTRAP.
12486
12487                  The heuristic failing can be disastrous on
12488                  decr_pc_after_break targets.
12489
12490                  On decr_pc_after_break targets, like e.g., x86-linux,
12491                  if we fail to recognize a late breakpoint SIGTRAP,
12492                  because events_till_retirement has reached 0 too
12493                  soon, we'll fail to do the PC adjustment, and report
12494                  a random SIGTRAP to the user.  When the user resumes
12495                  the inferior, it will most likely immediately crash
12496                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12497                  corrupted, because of being resumed e.g., in the
12498                  middle of a multi-byte instruction, or skipped a
12499                  one-byte instruction.  This was actually seen happen
12500                  on native x86-linux, and should be less rare on
12501                  targets that do not support new thread events, like
12502                  remote, due to the heuristic depending on
12503                  thread_count.
12504
12505                  Mistaking a random SIGTRAP for a breakpoint trap
12506                  causes similar symptoms (PC adjustment applied when
12507                  it shouldn't), but then again, playing with SIGTRAPs
12508                  behind the debugger's back is asking for trouble.
12509
12510                  Since hardware watchpoint traps are always
12511                  distinguishable from other traps, so we don't need to
12512                  apply keep hardware watchpoint moribund locations
12513                  around.  We simply always ignore hardware watchpoint
12514                  traps we can no longer explain.  */
12515
12516               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12517               old_loc->owner = NULL;
12518
12519               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12520             }
12521           else
12522             {
12523               old_loc->owner = NULL;
12524               decref_bp_location (&old_loc);
12525             }
12526         }
12527     }
12528
12529   /* Rescan breakpoints at the same address and section, marking the
12530      first one as "first" and any others as "duplicates".  This is so
12531      that the bpt instruction is only inserted once.  If we have a
12532      permanent breakpoint at the same place as BPT, make that one the
12533      official one, and the rest as duplicates.  Permanent breakpoints
12534      are sorted first for the same address.
12535
12536      Do the same for hardware watchpoints, but also considering the
12537      watchpoint's type (regular/access/read) and length.  */
12538
12539   bp_loc_first = NULL;
12540   wp_loc_first = NULL;
12541   awp_loc_first = NULL;
12542   rwp_loc_first = NULL;
12543   ALL_BP_LOCATIONS (loc, locp)
12544     {
12545       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12546          non-NULL.  */
12547       struct bp_location **loc_first_p;
12548       b = loc->owner;
12549
12550       if (!unduplicated_should_be_inserted (loc)
12551           || !breakpoint_address_is_meaningful (b)
12552           /* Don't detect duplicate for tracepoint locations because they are
12553            never duplicated.  See the comments in field `duplicate' of
12554            `struct bp_location'.  */
12555           || is_tracepoint (b))
12556         {
12557           /* Clear the condition modification flag.  */
12558           loc->condition_changed = condition_unchanged;
12559           continue;
12560         }
12561
12562       /* Permanent breakpoint should always be inserted.  */
12563       if (b->enable_state == bp_permanent && ! loc->inserted)
12564         internal_error (__FILE__, __LINE__,
12565                         _("allegedly permanent breakpoint is not "
12566                         "actually inserted"));
12567
12568       if (b->type == bp_hardware_watchpoint)
12569         loc_first_p = &wp_loc_first;
12570       else if (b->type == bp_read_watchpoint)
12571         loc_first_p = &rwp_loc_first;
12572       else if (b->type == bp_access_watchpoint)
12573         loc_first_p = &awp_loc_first;
12574       else
12575         loc_first_p = &bp_loc_first;
12576
12577       if (*loc_first_p == NULL
12578           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12579           || !breakpoint_locations_match (loc, *loc_first_p))
12580         {
12581           *loc_first_p = loc;
12582           loc->duplicate = 0;
12583
12584           if (is_breakpoint (loc->owner) && loc->condition_changed)
12585             {
12586               loc->needs_update = 1;
12587               /* Clear the condition modification flag.  */
12588               loc->condition_changed = condition_unchanged;
12589             }
12590           continue;
12591         }
12592
12593
12594       /* This and the above ensure the invariant that the first location
12595          is not duplicated, and is the inserted one.
12596          All following are marked as duplicated, and are not inserted.  */
12597       if (loc->inserted)
12598         swap_insertion (loc, *loc_first_p);
12599       loc->duplicate = 1;
12600
12601       /* Clear the condition modification flag.  */
12602       loc->condition_changed = condition_unchanged;
12603
12604       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12605           && b->enable_state != bp_permanent)
12606         internal_error (__FILE__, __LINE__,
12607                         _("another breakpoint was inserted on top of "
12608                         "a permanent breakpoint"));
12609     }
12610
12611   if (breakpoints_always_inserted_mode ()
12612       && (have_live_inferiors ()
12613           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12614     {
12615       if (should_insert)
12616         insert_breakpoint_locations ();
12617       else
12618         {
12619           /* Though should_insert is false, we may need to update conditions
12620              on the target's side if it is evaluating such conditions.  We
12621              only update conditions for locations that are marked
12622              "needs_update".  */
12623           update_inserted_breakpoint_locations ();
12624         }
12625     }
12626
12627   if (should_insert)
12628     download_tracepoint_locations ();
12629
12630   do_cleanups (cleanups);
12631 }
12632
12633 void
12634 breakpoint_retire_moribund (void)
12635 {
12636   struct bp_location *loc;
12637   int ix;
12638
12639   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12640     if (--(loc->events_till_retirement) == 0)
12641       {
12642         decref_bp_location (&loc);
12643         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12644         --ix;
12645       }
12646 }
12647
12648 static void
12649 update_global_location_list_nothrow (int inserting)
12650 {
12651   volatile struct gdb_exception e;
12652
12653   TRY_CATCH (e, RETURN_MASK_ERROR)
12654     update_global_location_list (inserting);
12655 }
12656
12657 /* Clear BKP from a BPS.  */
12658
12659 static void
12660 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12661 {
12662   bpstat bs;
12663
12664   for (bs = bps; bs; bs = bs->next)
12665     if (bs->breakpoint_at == bpt)
12666       {
12667         bs->breakpoint_at = NULL;
12668         bs->old_val = NULL;
12669         /* bs->commands will be freed later.  */
12670       }
12671 }
12672
12673 /* Callback for iterate_over_threads.  */
12674 static int
12675 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12676 {
12677   struct breakpoint *bpt = data;
12678
12679   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12680   return 0;
12681 }
12682
12683 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12684    callbacks.  */
12685
12686 static void
12687 say_where (struct breakpoint *b)
12688 {
12689   struct ui_out *uiout = current_uiout;
12690   struct value_print_options opts;
12691
12692   get_user_print_options (&opts);
12693
12694   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12695      single string.  */
12696   if (b->loc == NULL)
12697     {
12698       printf_filtered (_(" (%s) pending."), b->addr_string);
12699     }
12700   else
12701     {
12702       if (opts.addressprint || b->loc->source_file == NULL)
12703         {
12704           printf_filtered (" at ");
12705           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12706                           gdb_stdout);
12707         }
12708       if (b->loc->source_file)
12709         {
12710           /* If there is a single location, we can print the location
12711              more nicely.  */
12712           if (b->loc->next == NULL)
12713             printf_filtered (": file %s, line %d.",
12714                              b->loc->source_file, b->loc->line_number);
12715           else
12716             /* This is not ideal, but each location may have a
12717                different file name, and this at least reflects the
12718                real situation somewhat.  */
12719             printf_filtered (": %s.", b->addr_string);
12720         }
12721
12722       if (b->loc->next)
12723         {
12724           struct bp_location *loc = b->loc;
12725           int n = 0;
12726           for (; loc; loc = loc->next)
12727             ++n;
12728           printf_filtered (" (%d locations)", n);
12729         }
12730     }
12731 }
12732
12733 /* Default bp_location_ops methods.  */
12734
12735 static void
12736 bp_location_dtor (struct bp_location *self)
12737 {
12738   xfree (self->cond);
12739   if (self->cond_bytecode)
12740     free_agent_expr (self->cond_bytecode);
12741   xfree (self->function_name);
12742   xfree (self->source_file);
12743 }
12744
12745 static const struct bp_location_ops bp_location_ops =
12746 {
12747   bp_location_dtor
12748 };
12749
12750 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12751    inherit from.  */
12752
12753 static void
12754 base_breakpoint_dtor (struct breakpoint *self)
12755 {
12756   decref_counted_command_line (&self->commands);
12757   xfree (self->cond_string);
12758   xfree (self->addr_string);
12759   xfree (self->filter);
12760   xfree (self->addr_string_range_end);
12761 }
12762
12763 static struct bp_location *
12764 base_breakpoint_allocate_location (struct breakpoint *self)
12765 {
12766   struct bp_location *loc;
12767
12768   loc = XNEW (struct bp_location);
12769   init_bp_location (loc, &bp_location_ops, self);
12770   return loc;
12771 }
12772
12773 static void
12774 base_breakpoint_re_set (struct breakpoint *b)
12775 {
12776   /* Nothing to re-set. */
12777 }
12778
12779 #define internal_error_pure_virtual_called() \
12780   gdb_assert_not_reached ("pure virtual function called")
12781
12782 static int
12783 base_breakpoint_insert_location (struct bp_location *bl)
12784 {
12785   internal_error_pure_virtual_called ();
12786 }
12787
12788 static int
12789 base_breakpoint_remove_location (struct bp_location *bl)
12790 {
12791   internal_error_pure_virtual_called ();
12792 }
12793
12794 static int
12795 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12796                                 struct address_space *aspace,
12797                                 CORE_ADDR bp_addr,
12798                                 const struct target_waitstatus *ws)
12799 {
12800   internal_error_pure_virtual_called ();
12801 }
12802
12803 static void
12804 base_breakpoint_check_status (bpstat bs)
12805 {
12806   /* Always stop.   */
12807 }
12808
12809 /* A "works_in_software_mode" breakpoint_ops method that just internal
12810    errors.  */
12811
12812 static int
12813 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12814 {
12815   internal_error_pure_virtual_called ();
12816 }
12817
12818 /* A "resources_needed" breakpoint_ops method that just internal
12819    errors.  */
12820
12821 static int
12822 base_breakpoint_resources_needed (const struct bp_location *bl)
12823 {
12824   internal_error_pure_virtual_called ();
12825 }
12826
12827 static enum print_stop_action
12828 base_breakpoint_print_it (bpstat bs)
12829 {
12830   internal_error_pure_virtual_called ();
12831 }
12832
12833 static void
12834 base_breakpoint_print_one_detail (const struct breakpoint *self,
12835                                   struct ui_out *uiout)
12836 {
12837   /* nothing */
12838 }
12839
12840 static void
12841 base_breakpoint_print_mention (struct breakpoint *b)
12842 {
12843   internal_error_pure_virtual_called ();
12844 }
12845
12846 static void
12847 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12848 {
12849   internal_error_pure_virtual_called ();
12850 }
12851
12852 static void
12853 base_breakpoint_create_sals_from_address (char **arg,
12854                                           struct linespec_result *canonical,
12855                                           enum bptype type_wanted,
12856                                           char *addr_start,
12857                                           char **copy_arg)
12858 {
12859   internal_error_pure_virtual_called ();
12860 }
12861
12862 static void
12863 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12864                                         struct linespec_result *c,
12865                                         struct linespec_sals *lsal,
12866                                         char *cond_string,
12867                                         char *extra_string,
12868                                         enum bptype type_wanted,
12869                                         enum bpdisp disposition,
12870                                         int thread,
12871                                         int task, int ignore_count,
12872                                         const struct breakpoint_ops *o,
12873                                         int from_tty, int enabled,
12874                                         int internal, unsigned flags)
12875 {
12876   internal_error_pure_virtual_called ();
12877 }
12878
12879 static void
12880 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12881                                  struct symtabs_and_lines *sals)
12882 {
12883   internal_error_pure_virtual_called ();
12884 }
12885
12886 /* The default 'explains_signal' method.  */
12887
12888 static enum bpstat_signal_value
12889 base_breakpoint_explains_signal (struct breakpoint *b)
12890 {
12891   return BPSTAT_SIGNAL_HIDE;
12892 }
12893
12894 struct breakpoint_ops base_breakpoint_ops =
12895 {
12896   base_breakpoint_dtor,
12897   base_breakpoint_allocate_location,
12898   base_breakpoint_re_set,
12899   base_breakpoint_insert_location,
12900   base_breakpoint_remove_location,
12901   base_breakpoint_breakpoint_hit,
12902   base_breakpoint_check_status,
12903   base_breakpoint_resources_needed,
12904   base_breakpoint_works_in_software_mode,
12905   base_breakpoint_print_it,
12906   NULL,
12907   base_breakpoint_print_one_detail,
12908   base_breakpoint_print_mention,
12909   base_breakpoint_print_recreate,
12910   base_breakpoint_create_sals_from_address,
12911   base_breakpoint_create_breakpoints_sal,
12912   base_breakpoint_decode_linespec,
12913   base_breakpoint_explains_signal
12914 };
12915
12916 /* Default breakpoint_ops methods.  */
12917
12918 static void
12919 bkpt_re_set (struct breakpoint *b)
12920 {
12921   /* FIXME: is this still reachable?  */
12922   if (b->addr_string == NULL)
12923     {
12924       /* Anything without a string can't be re-set.  */
12925       delete_breakpoint (b);
12926       return;
12927     }
12928
12929   breakpoint_re_set_default (b);
12930 }
12931
12932 static int
12933 bkpt_insert_location (struct bp_location *bl)
12934 {
12935   if (bl->loc_type == bp_loc_hardware_breakpoint)
12936     return target_insert_hw_breakpoint (bl->gdbarch,
12937                                         &bl->target_info);
12938   else
12939     return target_insert_breakpoint (bl->gdbarch,
12940                                      &bl->target_info);
12941 }
12942
12943 static int
12944 bkpt_remove_location (struct bp_location *bl)
12945 {
12946   if (bl->loc_type == bp_loc_hardware_breakpoint)
12947     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12948   else
12949     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12950 }
12951
12952 static int
12953 bkpt_breakpoint_hit (const struct bp_location *bl,
12954                      struct address_space *aspace, CORE_ADDR bp_addr,
12955                      const struct target_waitstatus *ws)
12956 {
12957   struct breakpoint *b = bl->owner;
12958
12959   if (ws->kind != TARGET_WAITKIND_STOPPED
12960       || ws->value.sig != GDB_SIGNAL_TRAP)
12961     return 0;
12962
12963   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12964                                  aspace, bp_addr))
12965     return 0;
12966
12967   if (overlay_debugging         /* unmapped overlay section */
12968       && section_is_overlay (bl->section)
12969       && !section_is_mapped (bl->section))
12970     return 0;
12971
12972   return 1;
12973 }
12974
12975 static int
12976 bkpt_resources_needed (const struct bp_location *bl)
12977 {
12978   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12979
12980   return 1;
12981 }
12982
12983 static enum print_stop_action
12984 bkpt_print_it (bpstat bs)
12985 {
12986   struct breakpoint *b;
12987   const struct bp_location *bl;
12988   int bp_temp;
12989   struct ui_out *uiout = current_uiout;
12990
12991   gdb_assert (bs->bp_location_at != NULL);
12992
12993   bl = bs->bp_location_at;
12994   b = bs->breakpoint_at;
12995
12996   bp_temp = b->disposition == disp_del;
12997   if (bl->address != bl->requested_address)
12998     breakpoint_adjustment_warning (bl->requested_address,
12999                                    bl->address,
13000                                    b->number, 1);
13001   annotate_breakpoint (b->number);
13002   if (bp_temp)
13003     ui_out_text (uiout, "\nTemporary breakpoint ");
13004   else
13005     ui_out_text (uiout, "\nBreakpoint ");
13006   if (ui_out_is_mi_like_p (uiout))
13007     {
13008       ui_out_field_string (uiout, "reason",
13009                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13010       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13011     }
13012   ui_out_field_int (uiout, "bkptno", b->number);
13013   ui_out_text (uiout, ", ");
13014
13015   return PRINT_SRC_AND_LOC;
13016 }
13017
13018 static void
13019 bkpt_print_mention (struct breakpoint *b)
13020 {
13021   if (ui_out_is_mi_like_p (current_uiout))
13022     return;
13023
13024   switch (b->type)
13025     {
13026     case bp_breakpoint:
13027     case bp_gnu_ifunc_resolver:
13028       if (b->disposition == disp_del)
13029         printf_filtered (_("Temporary breakpoint"));
13030       else
13031         printf_filtered (_("Breakpoint"));
13032       printf_filtered (_(" %d"), b->number);
13033       if (b->type == bp_gnu_ifunc_resolver)
13034         printf_filtered (_(" at gnu-indirect-function resolver"));
13035       break;
13036     case bp_hardware_breakpoint:
13037       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13038       break;
13039     case bp_dprintf:
13040       printf_filtered (_("Dprintf %d"), b->number);
13041       break;
13042     }
13043
13044   say_where (b);
13045 }
13046
13047 static void
13048 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13049 {
13050   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13051     fprintf_unfiltered (fp, "tbreak");
13052   else if (tp->type == bp_breakpoint)
13053     fprintf_unfiltered (fp, "break");
13054   else if (tp->type == bp_hardware_breakpoint
13055            && tp->disposition == disp_del)
13056     fprintf_unfiltered (fp, "thbreak");
13057   else if (tp->type == bp_hardware_breakpoint)
13058     fprintf_unfiltered (fp, "hbreak");
13059   else
13060     internal_error (__FILE__, __LINE__,
13061                     _("unhandled breakpoint type %d"), (int) tp->type);
13062
13063   fprintf_unfiltered (fp, " %s", tp->addr_string);
13064   print_recreate_thread (tp, fp);
13065 }
13066
13067 static void
13068 bkpt_create_sals_from_address (char **arg,
13069                                struct linespec_result *canonical,
13070                                enum bptype type_wanted,
13071                                char *addr_start, char **copy_arg)
13072 {
13073   create_sals_from_address_default (arg, canonical, type_wanted,
13074                                     addr_start, copy_arg);
13075 }
13076
13077 static void
13078 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13079                              struct linespec_result *canonical,
13080                              struct linespec_sals *lsal,
13081                              char *cond_string,
13082                              char *extra_string,
13083                              enum bptype type_wanted,
13084                              enum bpdisp disposition,
13085                              int thread,
13086                              int task, int ignore_count,
13087                              const struct breakpoint_ops *ops,
13088                              int from_tty, int enabled,
13089                              int internal, unsigned flags)
13090 {
13091   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13092                                   cond_string, extra_string,
13093                                   type_wanted,
13094                                   disposition, thread, task,
13095                                   ignore_count, ops, from_tty,
13096                                   enabled, internal, flags);
13097 }
13098
13099 static void
13100 bkpt_decode_linespec (struct breakpoint *b, char **s,
13101                       struct symtabs_and_lines *sals)
13102 {
13103   decode_linespec_default (b, s, sals);
13104 }
13105
13106 /* Virtual table for internal breakpoints.  */
13107
13108 static void
13109 internal_bkpt_re_set (struct breakpoint *b)
13110 {
13111   switch (b->type)
13112     {
13113       /* Delete overlay event and longjmp master breakpoints; they
13114          will be reset later by breakpoint_re_set.  */
13115     case bp_overlay_event:
13116     case bp_longjmp_master:
13117     case bp_std_terminate_master:
13118     case bp_exception_master:
13119       delete_breakpoint (b);
13120       break;
13121
13122       /* This breakpoint is special, it's set up when the inferior
13123          starts and we really don't want to touch it.  */
13124     case bp_shlib_event:
13125
13126       /* Like bp_shlib_event, this breakpoint type is special.  Once
13127          it is set up, we do not want to touch it.  */
13128     case bp_thread_event:
13129       break;
13130     }
13131 }
13132
13133 static void
13134 internal_bkpt_check_status (bpstat bs)
13135 {
13136   if (bs->breakpoint_at->type == bp_shlib_event)
13137     {
13138       /* If requested, stop when the dynamic linker notifies GDB of
13139          events.  This allows the user to get control and place
13140          breakpoints in initializer routines for dynamically loaded
13141          objects (among other things).  */
13142       bs->stop = stop_on_solib_events;
13143       bs->print = stop_on_solib_events;
13144     }
13145   else
13146     bs->stop = 0;
13147 }
13148
13149 static enum print_stop_action
13150 internal_bkpt_print_it (bpstat bs)
13151 {
13152   struct ui_out *uiout = current_uiout;
13153   struct breakpoint *b;
13154
13155   b = bs->breakpoint_at;
13156
13157   switch (b->type)
13158     {
13159     case bp_shlib_event:
13160       /* Did we stop because the user set the stop_on_solib_events
13161          variable?  (If so, we report this as a generic, "Stopped due
13162          to shlib event" message.) */
13163       print_solib_event (0);
13164       break;
13165
13166     case bp_thread_event:
13167       /* Not sure how we will get here.
13168          GDB should not stop for these breakpoints.  */
13169       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13170       break;
13171
13172     case bp_overlay_event:
13173       /* By analogy with the thread event, GDB should not stop for these.  */
13174       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13175       break;
13176
13177     case bp_longjmp_master:
13178       /* These should never be enabled.  */
13179       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13180       break;
13181
13182     case bp_std_terminate_master:
13183       /* These should never be enabled.  */
13184       printf_filtered (_("std::terminate Master Breakpoint: "
13185                          "gdb should not stop!\n"));
13186       break;
13187
13188     case bp_exception_master:
13189       /* These should never be enabled.  */
13190       printf_filtered (_("Exception Master Breakpoint: "
13191                          "gdb should not stop!\n"));
13192       break;
13193     }
13194
13195   return PRINT_NOTHING;
13196 }
13197
13198 static void
13199 internal_bkpt_print_mention (struct breakpoint *b)
13200 {
13201   /* Nothing to mention.  These breakpoints are internal.  */
13202 }
13203
13204 /* Virtual table for momentary breakpoints  */
13205
13206 static void
13207 momentary_bkpt_re_set (struct breakpoint *b)
13208 {
13209   /* Keep temporary breakpoints, which can be encountered when we step
13210      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13211      Otherwise these should have been blown away via the cleanup chain
13212      or by breakpoint_init_inferior when we rerun the executable.  */
13213 }
13214
13215 static void
13216 momentary_bkpt_check_status (bpstat bs)
13217 {
13218   /* Nothing.  The point of these breakpoints is causing a stop.  */
13219 }
13220
13221 static enum print_stop_action
13222 momentary_bkpt_print_it (bpstat bs)
13223 {
13224   struct ui_out *uiout = current_uiout;
13225
13226   if (ui_out_is_mi_like_p (uiout))
13227     {
13228       struct breakpoint *b = bs->breakpoint_at;
13229
13230       switch (b->type)
13231         {
13232         case bp_finish:
13233           ui_out_field_string
13234             (uiout, "reason",
13235              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13236           break;
13237
13238         case bp_until:
13239           ui_out_field_string
13240             (uiout, "reason",
13241              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13242           break;
13243         }
13244     }
13245
13246   return PRINT_UNKNOWN;
13247 }
13248
13249 static void
13250 momentary_bkpt_print_mention (struct breakpoint *b)
13251 {
13252   /* Nothing to mention.  These breakpoints are internal.  */
13253 }
13254
13255 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13256
13257    It gets cleared already on the removal of the first one of such placed
13258    breakpoints.  This is OK as they get all removed altogether.  */
13259
13260 static void
13261 longjmp_bkpt_dtor (struct breakpoint *self)
13262 {
13263   struct thread_info *tp = find_thread_id (self->thread);
13264
13265   if (tp)
13266     tp->initiating_frame = null_frame_id;
13267
13268   momentary_breakpoint_ops.dtor (self);
13269 }
13270
13271 /* Specific methods for probe breakpoints.  */
13272
13273 static int
13274 bkpt_probe_insert_location (struct bp_location *bl)
13275 {
13276   int v = bkpt_insert_location (bl);
13277
13278   if (v == 0)
13279     {
13280       /* The insertion was successful, now let's set the probe's semaphore
13281          if needed.  */
13282       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13283     }
13284
13285   return v;
13286 }
13287
13288 static int
13289 bkpt_probe_remove_location (struct bp_location *bl)
13290 {
13291   /* Let's clear the semaphore before removing the location.  */
13292   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13293
13294   return bkpt_remove_location (bl);
13295 }
13296
13297 static void
13298 bkpt_probe_create_sals_from_address (char **arg,
13299                                      struct linespec_result *canonical,
13300                                      enum bptype type_wanted,
13301                                      char *addr_start, char **copy_arg)
13302 {
13303   struct linespec_sals lsal;
13304
13305   lsal.sals = parse_probes (arg, canonical);
13306
13307   *copy_arg = xstrdup (canonical->addr_string);
13308   lsal.canonical = xstrdup (*copy_arg);
13309
13310   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13311 }
13312
13313 static void
13314 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13315                             struct symtabs_and_lines *sals)
13316 {
13317   *sals = parse_probes (s, NULL);
13318   if (!sals->sals)
13319     error (_("probe not found"));
13320 }
13321
13322 /* The breakpoint_ops structure to be used in tracepoints.  */
13323
13324 static void
13325 tracepoint_re_set (struct breakpoint *b)
13326 {
13327   breakpoint_re_set_default (b);
13328 }
13329
13330 static int
13331 tracepoint_breakpoint_hit (const struct bp_location *bl,
13332                            struct address_space *aspace, CORE_ADDR bp_addr,
13333                            const struct target_waitstatus *ws)
13334 {
13335   /* By definition, the inferior does not report stops at
13336      tracepoints.  */
13337   return 0;
13338 }
13339
13340 static void
13341 tracepoint_print_one_detail (const struct breakpoint *self,
13342                              struct ui_out *uiout)
13343 {
13344   struct tracepoint *tp = (struct tracepoint *) self;
13345   if (tp->static_trace_marker_id)
13346     {
13347       gdb_assert (self->type == bp_static_tracepoint);
13348
13349       ui_out_text (uiout, "\tmarker id is ");
13350       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13351                            tp->static_trace_marker_id);
13352       ui_out_text (uiout, "\n");
13353     }
13354 }
13355
13356 static void
13357 tracepoint_print_mention (struct breakpoint *b)
13358 {
13359   if (ui_out_is_mi_like_p (current_uiout))
13360     return;
13361
13362   switch (b->type)
13363     {
13364     case bp_tracepoint:
13365       printf_filtered (_("Tracepoint"));
13366       printf_filtered (_(" %d"), b->number);
13367       break;
13368     case bp_fast_tracepoint:
13369       printf_filtered (_("Fast tracepoint"));
13370       printf_filtered (_(" %d"), b->number);
13371       break;
13372     case bp_static_tracepoint:
13373       printf_filtered (_("Static tracepoint"));
13374       printf_filtered (_(" %d"), b->number);
13375       break;
13376     default:
13377       internal_error (__FILE__, __LINE__,
13378                       _("unhandled tracepoint type %d"), (int) b->type);
13379     }
13380
13381   say_where (b);
13382 }
13383
13384 static void
13385 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13386 {
13387   struct tracepoint *tp = (struct tracepoint *) self;
13388
13389   if (self->type == bp_fast_tracepoint)
13390     fprintf_unfiltered (fp, "ftrace");
13391   if (self->type == bp_static_tracepoint)
13392     fprintf_unfiltered (fp, "strace");
13393   else if (self->type == bp_tracepoint)
13394     fprintf_unfiltered (fp, "trace");
13395   else
13396     internal_error (__FILE__, __LINE__,
13397                     _("unhandled tracepoint type %d"), (int) self->type);
13398
13399   fprintf_unfiltered (fp, " %s", self->addr_string);
13400   print_recreate_thread (self, fp);
13401
13402   if (tp->pass_count)
13403     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13404 }
13405
13406 static void
13407 tracepoint_create_sals_from_address (char **arg,
13408                                      struct linespec_result *canonical,
13409                                      enum bptype type_wanted,
13410                                      char *addr_start, char **copy_arg)
13411 {
13412   create_sals_from_address_default (arg, canonical, type_wanted,
13413                                     addr_start, copy_arg);
13414 }
13415
13416 static void
13417 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13418                                    struct linespec_result *canonical,
13419                                    struct linespec_sals *lsal,
13420                                    char *cond_string,
13421                                    char *extra_string,
13422                                    enum bptype type_wanted,
13423                                    enum bpdisp disposition,
13424                                    int thread,
13425                                    int task, int ignore_count,
13426                                    const struct breakpoint_ops *ops,
13427                                    int from_tty, int enabled,
13428                                    int internal, unsigned flags)
13429 {
13430   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13431                                   cond_string, extra_string,
13432                                   type_wanted,
13433                                   disposition, thread, task,
13434                                   ignore_count, ops, from_tty,
13435                                   enabled, internal, flags);
13436 }
13437
13438 static void
13439 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13440                             struct symtabs_and_lines *sals)
13441 {
13442   decode_linespec_default (b, s, sals);
13443 }
13444
13445 struct breakpoint_ops tracepoint_breakpoint_ops;
13446
13447 /* The breakpoint_ops structure to be use on tracepoints placed in a
13448    static probe.  */
13449
13450 static void
13451 tracepoint_probe_create_sals_from_address (char **arg,
13452                                            struct linespec_result *canonical,
13453                                            enum bptype type_wanted,
13454                                            char *addr_start, char **copy_arg)
13455 {
13456   /* We use the same method for breakpoint on probes.  */
13457   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13458                                        addr_start, copy_arg);
13459 }
13460
13461 static void
13462 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13463                                   struct symtabs_and_lines *sals)
13464 {
13465   /* We use the same method for breakpoint on probes.  */
13466   bkpt_probe_decode_linespec (b, s, sals);
13467 }
13468
13469 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13470
13471 /* The breakpoint_ops structure to be used on static tracepoints with
13472    markers (`-m').  */
13473
13474 static void
13475 strace_marker_create_sals_from_address (char **arg,
13476                                         struct linespec_result *canonical,
13477                                         enum bptype type_wanted,
13478                                         char *addr_start, char **copy_arg)
13479 {
13480   struct linespec_sals lsal;
13481
13482   lsal.sals = decode_static_tracepoint_spec (arg);
13483
13484   *copy_arg = savestring (addr_start, *arg - addr_start);
13485
13486   canonical->addr_string = xstrdup (*copy_arg);
13487   lsal.canonical = xstrdup (*copy_arg);
13488   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13489 }
13490
13491 static void
13492 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13493                                       struct linespec_result *canonical,
13494                                       struct linespec_sals *lsal,
13495                                       char *cond_string,
13496                                       char *extra_string,
13497                                       enum bptype type_wanted,
13498                                       enum bpdisp disposition,
13499                                       int thread,
13500                                       int task, int ignore_count,
13501                                       const struct breakpoint_ops *ops,
13502                                       int from_tty, int enabled,
13503                                       int internal, unsigned flags)
13504 {
13505   int i;
13506
13507   /* If the user is creating a static tracepoint by marker id
13508      (strace -m MARKER_ID), then store the sals index, so that
13509      breakpoint_re_set can try to match up which of the newly
13510      found markers corresponds to this one, and, don't try to
13511      expand multiple locations for each sal, given than SALS
13512      already should contain all sals for MARKER_ID.  */
13513
13514   for (i = 0; i < lsal->sals.nelts; ++i)
13515     {
13516       struct symtabs_and_lines expanded;
13517       struct tracepoint *tp;
13518       struct cleanup *old_chain;
13519       char *addr_string;
13520
13521       expanded.nelts = 1;
13522       expanded.sals = &lsal->sals.sals[i];
13523
13524       addr_string = xstrdup (canonical->addr_string);
13525       old_chain = make_cleanup (xfree, addr_string);
13526
13527       tp = XCNEW (struct tracepoint);
13528       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13529                            addr_string, NULL,
13530                            cond_string, extra_string,
13531                            type_wanted, disposition,
13532                            thread, task, ignore_count, ops,
13533                            from_tty, enabled, internal, flags,
13534                            canonical->special_display);
13535       /* Given that its possible to have multiple markers with
13536          the same string id, if the user is creating a static
13537          tracepoint by marker id ("strace -m MARKER_ID"), then
13538          store the sals index, so that breakpoint_re_set can
13539          try to match up which of the newly found markers
13540          corresponds to this one  */
13541       tp->static_trace_marker_id_idx = i;
13542
13543       install_breakpoint (internal, &tp->base, 0);
13544
13545       discard_cleanups (old_chain);
13546     }
13547 }
13548
13549 static void
13550 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13551                                struct symtabs_and_lines *sals)
13552 {
13553   struct tracepoint *tp = (struct tracepoint *) b;
13554
13555   *sals = decode_static_tracepoint_spec (s);
13556   if (sals->nelts > tp->static_trace_marker_id_idx)
13557     {
13558       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13559       sals->nelts = 1;
13560     }
13561   else
13562     error (_("marker %s not found"), tp->static_trace_marker_id);
13563 }
13564
13565 static struct breakpoint_ops strace_marker_breakpoint_ops;
13566
13567 static int
13568 strace_marker_p (struct breakpoint *b)
13569 {
13570   return b->ops == &strace_marker_breakpoint_ops;
13571 }
13572
13573 /* Delete a breakpoint and clean up all traces of it in the data
13574    structures.  */
13575
13576 void
13577 delete_breakpoint (struct breakpoint *bpt)
13578 {
13579   struct breakpoint *b;
13580
13581   gdb_assert (bpt != NULL);
13582
13583   /* Has this bp already been deleted?  This can happen because
13584      multiple lists can hold pointers to bp's.  bpstat lists are
13585      especial culprits.
13586
13587      One example of this happening is a watchpoint's scope bp.  When
13588      the scope bp triggers, we notice that the watchpoint is out of
13589      scope, and delete it.  We also delete its scope bp.  But the
13590      scope bp is marked "auto-deleting", and is already on a bpstat.
13591      That bpstat is then checked for auto-deleting bp's, which are
13592      deleted.
13593
13594      A real solution to this problem might involve reference counts in
13595      bp's, and/or giving them pointers back to their referencing
13596      bpstat's, and teaching delete_breakpoint to only free a bp's
13597      storage when no more references were extent.  A cheaper bandaid
13598      was chosen.  */
13599   if (bpt->type == bp_none)
13600     return;
13601
13602   /* At least avoid this stale reference until the reference counting
13603      of breakpoints gets resolved.  */
13604   if (bpt->related_breakpoint != bpt)
13605     {
13606       struct breakpoint *related;
13607       struct watchpoint *w;
13608
13609       if (bpt->type == bp_watchpoint_scope)
13610         w = (struct watchpoint *) bpt->related_breakpoint;
13611       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13612         w = (struct watchpoint *) bpt;
13613       else
13614         w = NULL;
13615       if (w != NULL)
13616         watchpoint_del_at_next_stop (w);
13617
13618       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13619       for (related = bpt; related->related_breakpoint != bpt;
13620            related = related->related_breakpoint);
13621       related->related_breakpoint = bpt->related_breakpoint;
13622       bpt->related_breakpoint = bpt;
13623     }
13624
13625   /* watch_command_1 creates a watchpoint but only sets its number if
13626      update_watchpoint succeeds in creating its bp_locations.  If there's
13627      a problem in that process, we'll be asked to delete the half-created
13628      watchpoint.  In that case, don't announce the deletion.  */
13629   if (bpt->number)
13630     observer_notify_breakpoint_deleted (bpt);
13631
13632   if (breakpoint_chain == bpt)
13633     breakpoint_chain = bpt->next;
13634
13635   ALL_BREAKPOINTS (b)
13636     if (b->next == bpt)
13637     {
13638       b->next = bpt->next;
13639       break;
13640     }
13641
13642   /* Be sure no bpstat's are pointing at the breakpoint after it's
13643      been freed.  */
13644   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13645      in all threads for now.  Note that we cannot just remove bpstats
13646      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13647      commands are associated with the bpstat; if we remove it here,
13648      then the later call to bpstat_do_actions (&stop_bpstat); in
13649      event-top.c won't do anything, and temporary breakpoints with
13650      commands won't work.  */
13651
13652   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13653
13654   /* Now that breakpoint is removed from breakpoint list, update the
13655      global location list.  This will remove locations that used to
13656      belong to this breakpoint.  Do this before freeing the breakpoint
13657      itself, since remove_breakpoint looks at location's owner.  It
13658      might be better design to have location completely
13659      self-contained, but it's not the case now.  */
13660   update_global_location_list (0);
13661
13662   bpt->ops->dtor (bpt);
13663   /* On the chance that someone will soon try again to delete this
13664      same bp, we mark it as deleted before freeing its storage.  */
13665   bpt->type = bp_none;
13666   xfree (bpt);
13667 }
13668
13669 static void
13670 do_delete_breakpoint_cleanup (void *b)
13671 {
13672   delete_breakpoint (b);
13673 }
13674
13675 struct cleanup *
13676 make_cleanup_delete_breakpoint (struct breakpoint *b)
13677 {
13678   return make_cleanup (do_delete_breakpoint_cleanup, b);
13679 }
13680
13681 /* Iterator function to call a user-provided callback function once
13682    for each of B and its related breakpoints.  */
13683
13684 static void
13685 iterate_over_related_breakpoints (struct breakpoint *b,
13686                                   void (*function) (struct breakpoint *,
13687                                                     void *),
13688                                   void *data)
13689 {
13690   struct breakpoint *related;
13691
13692   related = b;
13693   do
13694     {
13695       struct breakpoint *next;
13696
13697       /* FUNCTION may delete RELATED.  */
13698       next = related->related_breakpoint;
13699
13700       if (next == related)
13701         {
13702           /* RELATED is the last ring entry.  */
13703           function (related, data);
13704
13705           /* FUNCTION may have deleted it, so we'd never reach back to
13706              B.  There's nothing left to do anyway, so just break
13707              out.  */
13708           break;
13709         }
13710       else
13711         function (related, data);
13712
13713       related = next;
13714     }
13715   while (related != b);
13716 }
13717
13718 static void
13719 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13720 {
13721   delete_breakpoint (b);
13722 }
13723
13724 /* A callback for map_breakpoint_numbers that calls
13725    delete_breakpoint.  */
13726
13727 static void
13728 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13729 {
13730   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13731 }
13732
13733 void
13734 delete_command (char *arg, int from_tty)
13735 {
13736   struct breakpoint *b, *b_tmp;
13737
13738   dont_repeat ();
13739
13740   if (arg == 0)
13741     {
13742       int breaks_to_delete = 0;
13743
13744       /* Delete all breakpoints if no argument.  Do not delete
13745          internal breakpoints, these have to be deleted with an
13746          explicit breakpoint number argument.  */
13747       ALL_BREAKPOINTS (b)
13748         if (user_breakpoint_p (b))
13749           {
13750             breaks_to_delete = 1;
13751             break;
13752           }
13753
13754       /* Ask user only if there are some breakpoints to delete.  */
13755       if (!from_tty
13756           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13757         {
13758           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13759             if (user_breakpoint_p (b))
13760               delete_breakpoint (b);
13761         }
13762     }
13763   else
13764     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13765 }
13766
13767 static int
13768 all_locations_are_pending (struct bp_location *loc)
13769 {
13770   for (; loc; loc = loc->next)
13771     if (!loc->shlib_disabled
13772         && !loc->pspace->executing_startup)
13773       return 0;
13774   return 1;
13775 }
13776
13777 /* Subroutine of update_breakpoint_locations to simplify it.
13778    Return non-zero if multiple fns in list LOC have the same name.
13779    Null names are ignored.  */
13780
13781 static int
13782 ambiguous_names_p (struct bp_location *loc)
13783 {
13784   struct bp_location *l;
13785   htab_t htab = htab_create_alloc (13, htab_hash_string,
13786                                    (int (*) (const void *, 
13787                                              const void *)) streq,
13788                                    NULL, xcalloc, xfree);
13789
13790   for (l = loc; l != NULL; l = l->next)
13791     {
13792       const char **slot;
13793       const char *name = l->function_name;
13794
13795       /* Allow for some names to be NULL, ignore them.  */
13796       if (name == NULL)
13797         continue;
13798
13799       slot = (const char **) htab_find_slot (htab, (const void *) name,
13800                                              INSERT);
13801       /* NOTE: We can assume slot != NULL here because xcalloc never
13802          returns NULL.  */
13803       if (*slot != NULL)
13804         {
13805           htab_delete (htab);
13806           return 1;
13807         }
13808       *slot = name;
13809     }
13810
13811   htab_delete (htab);
13812   return 0;
13813 }
13814
13815 /* When symbols change, it probably means the sources changed as well,
13816    and it might mean the static tracepoint markers are no longer at
13817    the same address or line numbers they used to be at last we
13818    checked.  Losing your static tracepoints whenever you rebuild is
13819    undesirable.  This function tries to resync/rematch gdb static
13820    tracepoints with the markers on the target, for static tracepoints
13821    that have not been set by marker id.  Static tracepoint that have
13822    been set by marker id are reset by marker id in breakpoint_re_set.
13823    The heuristic is:
13824
13825    1) For a tracepoint set at a specific address, look for a marker at
13826    the old PC.  If one is found there, assume to be the same marker.
13827    If the name / string id of the marker found is different from the
13828    previous known name, assume that means the user renamed the marker
13829    in the sources, and output a warning.
13830
13831    2) For a tracepoint set at a given line number, look for a marker
13832    at the new address of the old line number.  If one is found there,
13833    assume to be the same marker.  If the name / string id of the
13834    marker found is different from the previous known name, assume that
13835    means the user renamed the marker in the sources, and output a
13836    warning.
13837
13838    3) If a marker is no longer found at the same address or line, it
13839    may mean the marker no longer exists.  But it may also just mean
13840    the code changed a bit.  Maybe the user added a few lines of code
13841    that made the marker move up or down (in line number terms).  Ask
13842    the target for info about the marker with the string id as we knew
13843    it.  If found, update line number and address in the matching
13844    static tracepoint.  This will get confused if there's more than one
13845    marker with the same ID (possible in UST, although unadvised
13846    precisely because it confuses tools).  */
13847
13848 static struct symtab_and_line
13849 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13850 {
13851   struct tracepoint *tp = (struct tracepoint *) b;
13852   struct static_tracepoint_marker marker;
13853   CORE_ADDR pc;
13854
13855   pc = sal.pc;
13856   if (sal.line)
13857     find_line_pc (sal.symtab, sal.line, &pc);
13858
13859   if (target_static_tracepoint_marker_at (pc, &marker))
13860     {
13861       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13862         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13863                  b->number,
13864                  tp->static_trace_marker_id, marker.str_id);
13865
13866       xfree (tp->static_trace_marker_id);
13867       tp->static_trace_marker_id = xstrdup (marker.str_id);
13868       release_static_tracepoint_marker (&marker);
13869
13870       return sal;
13871     }
13872
13873   /* Old marker wasn't found on target at lineno.  Try looking it up
13874      by string ID.  */
13875   if (!sal.explicit_pc
13876       && sal.line != 0
13877       && sal.symtab != NULL
13878       && tp->static_trace_marker_id != NULL)
13879     {
13880       VEC(static_tracepoint_marker_p) *markers;
13881
13882       markers
13883         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13884
13885       if (!VEC_empty(static_tracepoint_marker_p, markers))
13886         {
13887           struct symtab_and_line sal2;
13888           struct symbol *sym;
13889           struct static_tracepoint_marker *tpmarker;
13890           struct ui_out *uiout = current_uiout;
13891
13892           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13893
13894           xfree (tp->static_trace_marker_id);
13895           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13896
13897           warning (_("marker for static tracepoint %d (%s) not "
13898                      "found at previous line number"),
13899                    b->number, tp->static_trace_marker_id);
13900
13901           init_sal (&sal2);
13902
13903           sal2.pc = tpmarker->address;
13904
13905           sal2 = find_pc_line (tpmarker->address, 0);
13906           sym = find_pc_sect_function (tpmarker->address, NULL);
13907           ui_out_text (uiout, "Now in ");
13908           if (sym)
13909             {
13910               ui_out_field_string (uiout, "func",
13911                                    SYMBOL_PRINT_NAME (sym));
13912               ui_out_text (uiout, " at ");
13913             }
13914           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13915           ui_out_text (uiout, ":");
13916
13917           if (ui_out_is_mi_like_p (uiout))
13918             {
13919               const char *fullname = symtab_to_fullname (sal2.symtab);
13920
13921               ui_out_field_string (uiout, "fullname", fullname);
13922             }
13923
13924           ui_out_field_int (uiout, "line", sal2.line);
13925           ui_out_text (uiout, "\n");
13926
13927           b->loc->line_number = sal2.line;
13928
13929           xfree (b->loc->source_file);
13930           if (sym)
13931             b->loc->source_file = xstrdup (sal2.symtab->filename);
13932           else
13933             b->loc->source_file = NULL;
13934
13935           xfree (b->addr_string);
13936           b->addr_string = xstrprintf ("%s:%d",
13937                                        sal2.symtab->filename,
13938                                        b->loc->line_number);
13939
13940           /* Might be nice to check if function changed, and warn if
13941              so.  */
13942
13943           release_static_tracepoint_marker (tpmarker);
13944         }
13945     }
13946   return sal;
13947 }
13948
13949 /* Returns 1 iff locations A and B are sufficiently same that
13950    we don't need to report breakpoint as changed.  */
13951
13952 static int
13953 locations_are_equal (struct bp_location *a, struct bp_location *b)
13954 {
13955   while (a && b)
13956     {
13957       if (a->address != b->address)
13958         return 0;
13959
13960       if (a->shlib_disabled != b->shlib_disabled)
13961         return 0;
13962
13963       if (a->enabled != b->enabled)
13964         return 0;
13965
13966       a = a->next;
13967       b = b->next;
13968     }
13969
13970   if ((a == NULL) != (b == NULL))
13971     return 0;
13972
13973   return 1;
13974 }
13975
13976 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13977    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13978    a ranged breakpoint.  */
13979
13980 void
13981 update_breakpoint_locations (struct breakpoint *b,
13982                              struct symtabs_and_lines sals,
13983                              struct symtabs_and_lines sals_end)
13984 {
13985   int i;
13986   struct bp_location *existing_locations = b->loc;
13987
13988   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13989     {
13990       /* Ranged breakpoints have only one start location and one end
13991          location.  */
13992       b->enable_state = bp_disabled;
13993       update_global_location_list (1);
13994       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13995                            "multiple locations found\n"),
13996                          b->number);
13997       return;
13998     }
13999
14000   /* If there's no new locations, and all existing locations are
14001      pending, don't do anything.  This optimizes the common case where
14002      all locations are in the same shared library, that was unloaded.
14003      We'd like to retain the location, so that when the library is
14004      loaded again, we don't loose the enabled/disabled status of the
14005      individual locations.  */
14006   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14007     return;
14008
14009   b->loc = NULL;
14010
14011   for (i = 0; i < sals.nelts; ++i)
14012     {
14013       struct bp_location *new_loc;
14014
14015       switch_to_program_space_and_thread (sals.sals[i].pspace);
14016
14017       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14018
14019       /* Reparse conditions, they might contain references to the
14020          old symtab.  */
14021       if (b->cond_string != NULL)
14022         {
14023           char *s;
14024           volatile struct gdb_exception e;
14025
14026           s = b->cond_string;
14027           TRY_CATCH (e, RETURN_MASK_ERROR)
14028             {
14029               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14030                                            block_for_pc (sals.sals[i].pc), 
14031                                            0);
14032             }
14033           if (e.reason < 0)
14034             {
14035               warning (_("failed to reevaluate condition "
14036                          "for breakpoint %d: %s"), 
14037                        b->number, e.message);
14038               new_loc->enabled = 0;
14039             }
14040         }
14041
14042       if (sals_end.nelts)
14043         {
14044           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14045
14046           new_loc->length = end - sals.sals[0].pc + 1;
14047         }
14048     }
14049
14050   /* Update locations of permanent breakpoints.  */
14051   if (b->enable_state == bp_permanent)
14052     make_breakpoint_permanent (b);
14053
14054   /* If possible, carry over 'disable' status from existing
14055      breakpoints.  */
14056   {
14057     struct bp_location *e = existing_locations;
14058     /* If there are multiple breakpoints with the same function name,
14059        e.g. for inline functions, comparing function names won't work.
14060        Instead compare pc addresses; this is just a heuristic as things
14061        may have moved, but in practice it gives the correct answer
14062        often enough until a better solution is found.  */
14063     int have_ambiguous_names = ambiguous_names_p (b->loc);
14064
14065     for (; e; e = e->next)
14066       {
14067         if (!e->enabled && e->function_name)
14068           {
14069             struct bp_location *l = b->loc;
14070             if (have_ambiguous_names)
14071               {
14072                 for (; l; l = l->next)
14073                   if (breakpoint_locations_match (e, l))
14074                     {
14075                       l->enabled = 0;
14076                       break;
14077                     }
14078               }
14079             else
14080               {
14081                 for (; l; l = l->next)
14082                   if (l->function_name
14083                       && strcmp (e->function_name, l->function_name) == 0)
14084                     {
14085                       l->enabled = 0;
14086                       break;
14087                     }
14088               }
14089           }
14090       }
14091   }
14092
14093   if (!locations_are_equal (existing_locations, b->loc))
14094     observer_notify_breakpoint_modified (b);
14095
14096   update_global_location_list (1);
14097 }
14098
14099 /* Find the SaL locations corresponding to the given ADDR_STRING.
14100    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14101
14102 static struct symtabs_and_lines
14103 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14104 {
14105   char *s;
14106   struct symtabs_and_lines sals = {0};
14107   volatile struct gdb_exception e;
14108
14109   gdb_assert (b->ops != NULL);
14110   s = addr_string;
14111
14112   TRY_CATCH (e, RETURN_MASK_ERROR)
14113     {
14114       b->ops->decode_linespec (b, &s, &sals);
14115     }
14116   if (e.reason < 0)
14117     {
14118       int not_found_and_ok = 0;
14119       /* For pending breakpoints, it's expected that parsing will
14120          fail until the right shared library is loaded.  User has
14121          already told to create pending breakpoints and don't need
14122          extra messages.  If breakpoint is in bp_shlib_disabled
14123          state, then user already saw the message about that
14124          breakpoint being disabled, and don't want to see more
14125          errors.  */
14126       if (e.error == NOT_FOUND_ERROR
14127           && (b->condition_not_parsed 
14128               || (b->loc && b->loc->shlib_disabled)
14129               || (b->loc && b->loc->pspace->executing_startup)
14130               || b->enable_state == bp_disabled))
14131         not_found_and_ok = 1;
14132
14133       if (!not_found_and_ok)
14134         {
14135           /* We surely don't want to warn about the same breakpoint
14136              10 times.  One solution, implemented here, is disable
14137              the breakpoint on error.  Another solution would be to
14138              have separate 'warning emitted' flag.  Since this
14139              happens only when a binary has changed, I don't know
14140              which approach is better.  */
14141           b->enable_state = bp_disabled;
14142           throw_exception (e);
14143         }
14144     }
14145
14146   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14147     {
14148       int i;
14149
14150       for (i = 0; i < sals.nelts; ++i)
14151         resolve_sal_pc (&sals.sals[i]);
14152       if (b->condition_not_parsed && s && s[0])
14153         {
14154           char *cond_string, *extra_string;
14155           int thread, task;
14156
14157           find_condition_and_thread (s, sals.sals[0].pc,
14158                                      &cond_string, &thread, &task,
14159                                      &extra_string);
14160           if (cond_string)
14161             b->cond_string = cond_string;
14162           b->thread = thread;
14163           b->task = task;
14164           if (extra_string)
14165             b->extra_string = extra_string;
14166           b->condition_not_parsed = 0;
14167         }
14168
14169       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14170         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14171
14172       *found = 1;
14173     }
14174   else
14175     *found = 0;
14176
14177   return sals;
14178 }
14179
14180 /* The default re_set method, for typical hardware or software
14181    breakpoints.  Reevaluate the breakpoint and recreate its
14182    locations.  */
14183
14184 static void
14185 breakpoint_re_set_default (struct breakpoint *b)
14186 {
14187   int found;
14188   struct symtabs_and_lines sals, sals_end;
14189   struct symtabs_and_lines expanded = {0};
14190   struct symtabs_and_lines expanded_end = {0};
14191
14192   sals = addr_string_to_sals (b, b->addr_string, &found);
14193   if (found)
14194     {
14195       make_cleanup (xfree, sals.sals);
14196       expanded = sals;
14197     }
14198
14199   if (b->addr_string_range_end)
14200     {
14201       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14202       if (found)
14203         {
14204           make_cleanup (xfree, sals_end.sals);
14205           expanded_end = sals_end;
14206         }
14207     }
14208
14209   update_breakpoint_locations (b, expanded, expanded_end);
14210 }
14211
14212 /* Default method for creating SALs from an address string.  It basically
14213    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14214
14215 static void
14216 create_sals_from_address_default (char **arg,
14217                                   struct linespec_result *canonical,
14218                                   enum bptype type_wanted,
14219                                   char *addr_start, char **copy_arg)
14220 {
14221   parse_breakpoint_sals (arg, canonical);
14222 }
14223
14224 /* Call create_breakpoints_sal for the given arguments.  This is the default
14225    function for the `create_breakpoints_sal' method of
14226    breakpoint_ops.  */
14227
14228 static void
14229 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14230                                 struct linespec_result *canonical,
14231                                 struct linespec_sals *lsal,
14232                                 char *cond_string,
14233                                 char *extra_string,
14234                                 enum bptype type_wanted,
14235                                 enum bpdisp disposition,
14236                                 int thread,
14237                                 int task, int ignore_count,
14238                                 const struct breakpoint_ops *ops,
14239                                 int from_tty, int enabled,
14240                                 int internal, unsigned flags)
14241 {
14242   create_breakpoints_sal (gdbarch, canonical, cond_string,
14243                           extra_string,
14244                           type_wanted, disposition,
14245                           thread, task, ignore_count, ops, from_tty,
14246                           enabled, internal, flags);
14247 }
14248
14249 /* Decode the line represented by S by calling decode_line_full.  This is the
14250    default function for the `decode_linespec' method of breakpoint_ops.  */
14251
14252 static void
14253 decode_linespec_default (struct breakpoint *b, char **s,
14254                          struct symtabs_and_lines *sals)
14255 {
14256   struct linespec_result canonical;
14257
14258   init_linespec_result (&canonical);
14259   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14260                     (struct symtab *) NULL, 0,
14261                     &canonical, multiple_symbols_all,
14262                     b->filter);
14263
14264   /* We should get 0 or 1 resulting SALs.  */
14265   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14266
14267   if (VEC_length (linespec_sals, canonical.sals) > 0)
14268     {
14269       struct linespec_sals *lsal;
14270
14271       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14272       *sals = lsal->sals;
14273       /* Arrange it so the destructor does not free the
14274          contents.  */
14275       lsal->sals.sals = NULL;
14276     }
14277
14278   destroy_linespec_result (&canonical);
14279 }
14280
14281 /* Prepare the global context for a re-set of breakpoint B.  */
14282
14283 static struct cleanup *
14284 prepare_re_set_context (struct breakpoint *b)
14285 {
14286   struct cleanup *cleanups;
14287
14288   input_radix = b->input_radix;
14289   cleanups = save_current_space_and_thread ();
14290   if (b->pspace != NULL)
14291     switch_to_program_space_and_thread (b->pspace);
14292   set_language (b->language);
14293
14294   return cleanups;
14295 }
14296
14297 /* Reset a breakpoint given it's struct breakpoint * BINT.
14298    The value we return ends up being the return value from catch_errors.
14299    Unused in this case.  */
14300
14301 static int
14302 breakpoint_re_set_one (void *bint)
14303 {
14304   /* Get past catch_errs.  */
14305   struct breakpoint *b = (struct breakpoint *) bint;
14306   struct cleanup *cleanups;
14307
14308   cleanups = prepare_re_set_context (b);
14309   b->ops->re_set (b);
14310   do_cleanups (cleanups);
14311   return 0;
14312 }
14313
14314 /* Re-set all breakpoints after symbols have been re-loaded.  */
14315 void
14316 breakpoint_re_set (void)
14317 {
14318   struct breakpoint *b, *b_tmp;
14319   enum language save_language;
14320   int save_input_radix;
14321   struct cleanup *old_chain;
14322
14323   save_language = current_language->la_language;
14324   save_input_radix = input_radix;
14325   old_chain = save_current_program_space ();
14326
14327   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14328   {
14329     /* Format possible error msg.  */
14330     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14331                                 b->number);
14332     struct cleanup *cleanups = make_cleanup (xfree, message);
14333     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14334     do_cleanups (cleanups);
14335   }
14336   set_language (save_language);
14337   input_radix = save_input_radix;
14338
14339   jit_breakpoint_re_set ();
14340
14341   do_cleanups (old_chain);
14342
14343   create_overlay_event_breakpoint ();
14344   create_longjmp_master_breakpoint ();
14345   create_std_terminate_master_breakpoint ();
14346   create_exception_master_breakpoint ();
14347 }
14348 \f
14349 /* Reset the thread number of this breakpoint:
14350
14351    - If the breakpoint is for all threads, leave it as-is.
14352    - Else, reset it to the current thread for inferior_ptid.  */
14353 void
14354 breakpoint_re_set_thread (struct breakpoint *b)
14355 {
14356   if (b->thread != -1)
14357     {
14358       if (in_thread_list (inferior_ptid))
14359         b->thread = pid_to_thread_id (inferior_ptid);
14360
14361       /* We're being called after following a fork.  The new fork is
14362          selected as current, and unless this was a vfork will have a
14363          different program space from the original thread.  Reset that
14364          as well.  */
14365       b->loc->pspace = current_program_space;
14366     }
14367 }
14368
14369 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14370    If from_tty is nonzero, it prints a message to that effect,
14371    which ends with a period (no newline).  */
14372
14373 void
14374 set_ignore_count (int bptnum, int count, int from_tty)
14375 {
14376   struct breakpoint *b;
14377
14378   if (count < 0)
14379     count = 0;
14380
14381   ALL_BREAKPOINTS (b)
14382     if (b->number == bptnum)
14383     {
14384       if (is_tracepoint (b))
14385         {
14386           if (from_tty && count != 0)
14387             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14388                              bptnum);
14389           return;
14390         }
14391       
14392       b->ignore_count = count;
14393       if (from_tty)
14394         {
14395           if (count == 0)
14396             printf_filtered (_("Will stop next time "
14397                                "breakpoint %d is reached."),
14398                              bptnum);
14399           else if (count == 1)
14400             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14401                              bptnum);
14402           else
14403             printf_filtered (_("Will ignore next %d "
14404                                "crossings of breakpoint %d."),
14405                              count, bptnum);
14406         }
14407       annotate_breakpoints_changed ();
14408       observer_notify_breakpoint_modified (b);
14409       return;
14410     }
14411
14412   error (_("No breakpoint number %d."), bptnum);
14413 }
14414
14415 /* Command to set ignore-count of breakpoint N to COUNT.  */
14416
14417 static void
14418 ignore_command (char *args, int from_tty)
14419 {
14420   char *p = args;
14421   int num;
14422
14423   if (p == 0)
14424     error_no_arg (_("a breakpoint number"));
14425
14426   num = get_number (&p);
14427   if (num == 0)
14428     error (_("bad breakpoint number: '%s'"), args);
14429   if (*p == 0)
14430     error (_("Second argument (specified ignore-count) is missing."));
14431
14432   set_ignore_count (num,
14433                     longest_to_int (value_as_long (parse_and_eval (p))),
14434                     from_tty);
14435   if (from_tty)
14436     printf_filtered ("\n");
14437 }
14438 \f
14439 /* Call FUNCTION on each of the breakpoints
14440    whose numbers are given in ARGS.  */
14441
14442 static void
14443 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14444                                                       void *),
14445                         void *data)
14446 {
14447   int num;
14448   struct breakpoint *b, *tmp;
14449   int match;
14450   struct get_number_or_range_state state;
14451
14452   if (args == 0)
14453     error_no_arg (_("one or more breakpoint numbers"));
14454
14455   init_number_or_range (&state, args);
14456
14457   while (!state.finished)
14458     {
14459       char *p = state.string;
14460
14461       match = 0;
14462
14463       num = get_number_or_range (&state);
14464       if (num == 0)
14465         {
14466           warning (_("bad breakpoint number at or near '%s'"), p);
14467         }
14468       else
14469         {
14470           ALL_BREAKPOINTS_SAFE (b, tmp)
14471             if (b->number == num)
14472               {
14473                 match = 1;
14474                 function (b, data);
14475                 break;
14476               }
14477           if (match == 0)
14478             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14479         }
14480     }
14481 }
14482
14483 static struct bp_location *
14484 find_location_by_number (char *number)
14485 {
14486   char *dot = strchr (number, '.');
14487   char *p1;
14488   int bp_num;
14489   int loc_num;
14490   struct breakpoint *b;
14491   struct bp_location *loc;  
14492
14493   *dot = '\0';
14494
14495   p1 = number;
14496   bp_num = get_number (&p1);
14497   if (bp_num == 0)
14498     error (_("Bad breakpoint number '%s'"), number);
14499
14500   ALL_BREAKPOINTS (b)
14501     if (b->number == bp_num)
14502       {
14503         break;
14504       }
14505
14506   if (!b || b->number != bp_num)
14507     error (_("Bad breakpoint number '%s'"), number);
14508   
14509   p1 = dot+1;
14510   loc_num = get_number (&p1);
14511   if (loc_num == 0)
14512     error (_("Bad breakpoint location number '%s'"), number);
14513
14514   --loc_num;
14515   loc = b->loc;
14516   for (;loc_num && loc; --loc_num, loc = loc->next)
14517     ;
14518   if (!loc)
14519     error (_("Bad breakpoint location number '%s'"), dot+1);
14520     
14521   return loc;  
14522 }
14523
14524
14525 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14526    If from_tty is nonzero, it prints a message to that effect,
14527    which ends with a period (no newline).  */
14528
14529 void
14530 disable_breakpoint (struct breakpoint *bpt)
14531 {
14532   /* Never disable a watchpoint scope breakpoint; we want to
14533      hit them when we leave scope so we can delete both the
14534      watchpoint and its scope breakpoint at that time.  */
14535   if (bpt->type == bp_watchpoint_scope)
14536     return;
14537
14538   /* You can't disable permanent breakpoints.  */
14539   if (bpt->enable_state == bp_permanent)
14540     return;
14541
14542   bpt->enable_state = bp_disabled;
14543
14544   /* Mark breakpoint locations modified.  */
14545   mark_breakpoint_modified (bpt);
14546
14547   if (target_supports_enable_disable_tracepoint ()
14548       && current_trace_status ()->running && is_tracepoint (bpt))
14549     {
14550       struct bp_location *location;
14551      
14552       for (location = bpt->loc; location; location = location->next)
14553         target_disable_tracepoint (location);
14554     }
14555
14556   update_global_location_list (0);
14557
14558   observer_notify_breakpoint_modified (bpt);
14559 }
14560
14561 /* A callback for iterate_over_related_breakpoints.  */
14562
14563 static void
14564 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14565 {
14566   disable_breakpoint (b);
14567 }
14568
14569 /* A callback for map_breakpoint_numbers that calls
14570    disable_breakpoint.  */
14571
14572 static void
14573 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14574 {
14575   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14576 }
14577
14578 static void
14579 disable_command (char *args, int from_tty)
14580 {
14581   if (args == 0)
14582     {
14583       struct breakpoint *bpt;
14584
14585       ALL_BREAKPOINTS (bpt)
14586         if (user_breakpoint_p (bpt))
14587           disable_breakpoint (bpt);
14588     }
14589   else if (strchr (args, '.'))
14590     {
14591       struct bp_location *loc = find_location_by_number (args);
14592       if (loc)
14593         {
14594           if (loc->enabled)
14595             {
14596               loc->enabled = 0;
14597               mark_breakpoint_location_modified (loc);
14598             }
14599           if (target_supports_enable_disable_tracepoint ()
14600               && current_trace_status ()->running && loc->owner
14601               && is_tracepoint (loc->owner))
14602             target_disable_tracepoint (loc);
14603         }
14604       update_global_location_list (0);
14605     }
14606   else
14607     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14608 }
14609
14610 static void
14611 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14612                         int count)
14613 {
14614   int target_resources_ok;
14615
14616   if (bpt->type == bp_hardware_breakpoint)
14617     {
14618       int i;
14619       i = hw_breakpoint_used_count ();
14620       target_resources_ok = 
14621         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14622                                             i + 1, 0);
14623       if (target_resources_ok == 0)
14624         error (_("No hardware breakpoint support in the target."));
14625       else if (target_resources_ok < 0)
14626         error (_("Hardware breakpoints used exceeds limit."));
14627     }
14628
14629   if (is_watchpoint (bpt))
14630     {
14631       /* Initialize it just to avoid a GCC false warning.  */
14632       enum enable_state orig_enable_state = 0;
14633       volatile struct gdb_exception e;
14634
14635       TRY_CATCH (e, RETURN_MASK_ALL)
14636         {
14637           struct watchpoint *w = (struct watchpoint *) bpt;
14638
14639           orig_enable_state = bpt->enable_state;
14640           bpt->enable_state = bp_enabled;
14641           update_watchpoint (w, 1 /* reparse */);
14642         }
14643       if (e.reason < 0)
14644         {
14645           bpt->enable_state = orig_enable_state;
14646           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14647                              bpt->number);
14648           return;
14649         }
14650     }
14651
14652   if (bpt->enable_state != bp_permanent)
14653     bpt->enable_state = bp_enabled;
14654
14655   bpt->enable_state = bp_enabled;
14656
14657   /* Mark breakpoint locations modified.  */
14658   mark_breakpoint_modified (bpt);
14659
14660   if (target_supports_enable_disable_tracepoint ()
14661       && current_trace_status ()->running && is_tracepoint (bpt))
14662     {
14663       struct bp_location *location;
14664
14665       for (location = bpt->loc; location; location = location->next)
14666         target_enable_tracepoint (location);
14667     }
14668
14669   bpt->disposition = disposition;
14670   bpt->enable_count = count;
14671   update_global_location_list (1);
14672   annotate_breakpoints_changed ();
14673   
14674   observer_notify_breakpoint_modified (bpt);
14675 }
14676
14677
14678 void
14679 enable_breakpoint (struct breakpoint *bpt)
14680 {
14681   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14682 }
14683
14684 static void
14685 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14686 {
14687   enable_breakpoint (bpt);
14688 }
14689
14690 /* A callback for map_breakpoint_numbers that calls
14691    enable_breakpoint.  */
14692
14693 static void
14694 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14695 {
14696   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14697 }
14698
14699 /* The enable command enables the specified breakpoints (or all defined
14700    breakpoints) so they once again become (or continue to be) effective
14701    in stopping the inferior.  */
14702
14703 static void
14704 enable_command (char *args, int from_tty)
14705 {
14706   if (args == 0)
14707     {
14708       struct breakpoint *bpt;
14709
14710       ALL_BREAKPOINTS (bpt)
14711         if (user_breakpoint_p (bpt))
14712           enable_breakpoint (bpt);
14713     }
14714   else if (strchr (args, '.'))
14715     {
14716       struct bp_location *loc = find_location_by_number (args);
14717       if (loc)
14718         {
14719           if (!loc->enabled)
14720             {
14721               loc->enabled = 1;
14722               mark_breakpoint_location_modified (loc);
14723             }
14724           if (target_supports_enable_disable_tracepoint ()
14725               && current_trace_status ()->running && loc->owner
14726               && is_tracepoint (loc->owner))
14727             target_enable_tracepoint (loc);
14728         }
14729       update_global_location_list (1);
14730     }
14731   else
14732     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14733 }
14734
14735 /* This struct packages up disposition data for application to multiple
14736    breakpoints.  */
14737
14738 struct disp_data
14739 {
14740   enum bpdisp disp;
14741   int count;
14742 };
14743
14744 static void
14745 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14746 {
14747   struct disp_data disp_data = *(struct disp_data *) arg;
14748
14749   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14750 }
14751
14752 static void
14753 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14754 {
14755   struct disp_data disp = { disp_disable, 1 };
14756
14757   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14758 }
14759
14760 static void
14761 enable_once_command (char *args, int from_tty)
14762 {
14763   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14764 }
14765
14766 static void
14767 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14768 {
14769   struct disp_data disp = { disp_disable, *(int *) countptr };
14770
14771   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14772 }
14773
14774 static void
14775 enable_count_command (char *args, int from_tty)
14776 {
14777   int count = get_number (&args);
14778
14779   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14780 }
14781
14782 static void
14783 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14784 {
14785   struct disp_data disp = { disp_del, 1 };
14786
14787   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14788 }
14789
14790 static void
14791 enable_delete_command (char *args, int from_tty)
14792 {
14793   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14794 }
14795 \f
14796 static void
14797 set_breakpoint_cmd (char *args, int from_tty)
14798 {
14799 }
14800
14801 static void
14802 show_breakpoint_cmd (char *args, int from_tty)
14803 {
14804 }
14805
14806 /* Invalidate last known value of any hardware watchpoint if
14807    the memory which that value represents has been written to by
14808    GDB itself.  */
14809
14810 static void
14811 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14812                                       CORE_ADDR addr, ssize_t len,
14813                                       const bfd_byte *data)
14814 {
14815   struct breakpoint *bp;
14816
14817   ALL_BREAKPOINTS (bp)
14818     if (bp->enable_state == bp_enabled
14819         && bp->type == bp_hardware_watchpoint)
14820       {
14821         struct watchpoint *wp = (struct watchpoint *) bp;
14822
14823         if (wp->val_valid && wp->val)
14824           {
14825             struct bp_location *loc;
14826
14827             for (loc = bp->loc; loc != NULL; loc = loc->next)
14828               if (loc->loc_type == bp_loc_hardware_watchpoint
14829                   && loc->address + loc->length > addr
14830                   && addr + len > loc->address)
14831                 {
14832                   value_free (wp->val);
14833                   wp->val = NULL;
14834                   wp->val_valid = 0;
14835                 }
14836           }
14837       }
14838 }
14839
14840 /* Create and insert a raw software breakpoint at PC.  Return an
14841    identifier, which should be used to remove the breakpoint later.
14842    In general, places which call this should be using something on the
14843    breakpoint chain instead; this function should be eliminated
14844    someday.  */
14845
14846 void *
14847 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14848                                   struct address_space *aspace, CORE_ADDR pc)
14849 {
14850   struct bp_target_info *bp_tgt;
14851
14852   bp_tgt = XZALLOC (struct bp_target_info);
14853
14854   bp_tgt->placed_address_space = aspace;
14855   bp_tgt->placed_address = pc;
14856
14857   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14858     {
14859       /* Could not insert the breakpoint.  */
14860       xfree (bp_tgt);
14861       return NULL;
14862     }
14863
14864   return bp_tgt;
14865 }
14866
14867 /* Remove a breakpoint BP inserted by
14868    deprecated_insert_raw_breakpoint.  */
14869
14870 int
14871 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14872 {
14873   struct bp_target_info *bp_tgt = bp;
14874   int ret;
14875
14876   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14877   xfree (bp_tgt);
14878
14879   return ret;
14880 }
14881
14882 /* One (or perhaps two) breakpoints used for software single
14883    stepping.  */
14884
14885 static void *single_step_breakpoints[2];
14886 static struct gdbarch *single_step_gdbarch[2];
14887
14888 /* Create and insert a breakpoint for software single step.  */
14889
14890 void
14891 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14892                                struct address_space *aspace, 
14893                                CORE_ADDR next_pc)
14894 {
14895   void **bpt_p;
14896
14897   if (single_step_breakpoints[0] == NULL)
14898     {
14899       bpt_p = &single_step_breakpoints[0];
14900       single_step_gdbarch[0] = gdbarch;
14901     }
14902   else
14903     {
14904       gdb_assert (single_step_breakpoints[1] == NULL);
14905       bpt_p = &single_step_breakpoints[1];
14906       single_step_gdbarch[1] = gdbarch;
14907     }
14908
14909   /* NOTE drow/2006-04-11: A future improvement to this function would
14910      be to only create the breakpoints once, and actually put them on
14911      the breakpoint chain.  That would let us use set_raw_breakpoint.
14912      We could adjust the addresses each time they were needed.  Doing
14913      this requires corresponding changes elsewhere where single step
14914      breakpoints are handled, however.  So, for now, we use this.  */
14915
14916   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14917   if (*bpt_p == NULL)
14918     error (_("Could not insert single-step breakpoint at %s"),
14919              paddress (gdbarch, next_pc));
14920 }
14921
14922 /* Check if the breakpoints used for software single stepping
14923    were inserted or not.  */
14924
14925 int
14926 single_step_breakpoints_inserted (void)
14927 {
14928   return (single_step_breakpoints[0] != NULL
14929           || single_step_breakpoints[1] != NULL);
14930 }
14931
14932 /* Remove and delete any breakpoints used for software single step.  */
14933
14934 void
14935 remove_single_step_breakpoints (void)
14936 {
14937   gdb_assert (single_step_breakpoints[0] != NULL);
14938
14939   /* See insert_single_step_breakpoint for more about this deprecated
14940      call.  */
14941   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14942                                     single_step_breakpoints[0]);
14943   single_step_gdbarch[0] = NULL;
14944   single_step_breakpoints[0] = NULL;
14945
14946   if (single_step_breakpoints[1] != NULL)
14947     {
14948       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14949                                         single_step_breakpoints[1]);
14950       single_step_gdbarch[1] = NULL;
14951       single_step_breakpoints[1] = NULL;
14952     }
14953 }
14954
14955 /* Delete software single step breakpoints without removing them from
14956    the inferior.  This is intended to be used if the inferior's address
14957    space where they were inserted is already gone, e.g. after exit or
14958    exec.  */
14959
14960 void
14961 cancel_single_step_breakpoints (void)
14962 {
14963   int i;
14964
14965   for (i = 0; i < 2; i++)
14966     if (single_step_breakpoints[i])
14967       {
14968         xfree (single_step_breakpoints[i]);
14969         single_step_breakpoints[i] = NULL;
14970         single_step_gdbarch[i] = NULL;
14971       }
14972 }
14973
14974 /* Detach software single-step breakpoints from INFERIOR_PTID without
14975    removing them.  */
14976
14977 static void
14978 detach_single_step_breakpoints (void)
14979 {
14980   int i;
14981
14982   for (i = 0; i < 2; i++)
14983     if (single_step_breakpoints[i])
14984       target_remove_breakpoint (single_step_gdbarch[i],
14985                                 single_step_breakpoints[i]);
14986 }
14987
14988 /* Check whether a software single-step breakpoint is inserted at
14989    PC.  */
14990
14991 static int
14992 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14993                                         CORE_ADDR pc)
14994 {
14995   int i;
14996
14997   for (i = 0; i < 2; i++)
14998     {
14999       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15000       if (bp_tgt
15001           && breakpoint_address_match (bp_tgt->placed_address_space,
15002                                        bp_tgt->placed_address,
15003                                        aspace, pc))
15004         return 1;
15005     }
15006
15007   return 0;
15008 }
15009
15010 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15011    non-zero otherwise.  */
15012 static int
15013 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15014 {
15015   if (syscall_catchpoint_p (bp)
15016       && bp->enable_state != bp_disabled
15017       && bp->enable_state != bp_call_disabled)
15018     return 1;
15019   else
15020     return 0;
15021 }
15022
15023 int
15024 catch_syscall_enabled (void)
15025 {
15026   struct catch_syscall_inferior_data *inf_data
15027     = get_catch_syscall_inferior_data (current_inferior ());
15028
15029   return inf_data->total_syscalls_count != 0;
15030 }
15031
15032 int
15033 catching_syscall_number (int syscall_number)
15034 {
15035   struct breakpoint *bp;
15036
15037   ALL_BREAKPOINTS (bp)
15038     if (is_syscall_catchpoint_enabled (bp))
15039       {
15040         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15041
15042         if (c->syscalls_to_be_caught)
15043           {
15044             int i, iter;
15045             for (i = 0;
15046                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15047                  i++)
15048               if (syscall_number == iter)
15049                 return 1;
15050           }
15051         else
15052           return 1;
15053       }
15054
15055   return 0;
15056 }
15057
15058 /* Complete syscall names.  Used by "catch syscall".  */
15059 static VEC (char_ptr) *
15060 catch_syscall_completer (struct cmd_list_element *cmd,
15061                          char *text, char *word)
15062 {
15063   const char **list = get_syscall_names ();
15064   VEC (char_ptr) *retlist
15065     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15066
15067   xfree (list);
15068   return retlist;
15069 }
15070
15071 /* Tracepoint-specific operations.  */
15072
15073 /* Set tracepoint count to NUM.  */
15074 static void
15075 set_tracepoint_count (int num)
15076 {
15077   tracepoint_count = num;
15078   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15079 }
15080
15081 static void
15082 trace_command (char *arg, int from_tty)
15083 {
15084   struct breakpoint_ops *ops;
15085   const char *arg_cp = arg;
15086
15087   if (arg && probe_linespec_to_ops (&arg_cp))
15088     ops = &tracepoint_probe_breakpoint_ops;
15089   else
15090     ops = &tracepoint_breakpoint_ops;
15091
15092   create_breakpoint (get_current_arch (),
15093                      arg,
15094                      NULL, 0, NULL, 1 /* parse arg */,
15095                      0 /* tempflag */,
15096                      bp_tracepoint /* type_wanted */,
15097                      0 /* Ignore count */,
15098                      pending_break_support,
15099                      ops,
15100                      from_tty,
15101                      1 /* enabled */,
15102                      0 /* internal */, 0);
15103 }
15104
15105 static void
15106 ftrace_command (char *arg, int from_tty)
15107 {
15108   create_breakpoint (get_current_arch (),
15109                      arg,
15110                      NULL, 0, NULL, 1 /* parse arg */,
15111                      0 /* tempflag */,
15112                      bp_fast_tracepoint /* type_wanted */,
15113                      0 /* Ignore count */,
15114                      pending_break_support,
15115                      &tracepoint_breakpoint_ops,
15116                      from_tty,
15117                      1 /* enabled */,
15118                      0 /* internal */, 0);
15119 }
15120
15121 /* strace command implementation.  Creates a static tracepoint.  */
15122
15123 static void
15124 strace_command (char *arg, int from_tty)
15125 {
15126   struct breakpoint_ops *ops;
15127
15128   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15129      or with a normal static tracepoint.  */
15130   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15131     ops = &strace_marker_breakpoint_ops;
15132   else
15133     ops = &tracepoint_breakpoint_ops;
15134
15135   create_breakpoint (get_current_arch (),
15136                      arg,
15137                      NULL, 0, NULL, 1 /* parse arg */,
15138                      0 /* tempflag */,
15139                      bp_static_tracepoint /* type_wanted */,
15140                      0 /* Ignore count */,
15141                      pending_break_support,
15142                      ops,
15143                      from_tty,
15144                      1 /* enabled */,
15145                      0 /* internal */, 0);
15146 }
15147
15148 /* Set up a fake reader function that gets command lines from a linked
15149    list that was acquired during tracepoint uploading.  */
15150
15151 static struct uploaded_tp *this_utp;
15152 static int next_cmd;
15153
15154 static char *
15155 read_uploaded_action (void)
15156 {
15157   char *rslt;
15158
15159   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15160
15161   next_cmd++;
15162
15163   return rslt;
15164 }
15165
15166 /* Given information about a tracepoint as recorded on a target (which
15167    can be either a live system or a trace file), attempt to create an
15168    equivalent GDB tracepoint.  This is not a reliable process, since
15169    the target does not necessarily have all the information used when
15170    the tracepoint was originally defined.  */
15171   
15172 struct tracepoint *
15173 create_tracepoint_from_upload (struct uploaded_tp *utp)
15174 {
15175   char *addr_str, small_buf[100];
15176   struct tracepoint *tp;
15177
15178   if (utp->at_string)
15179     addr_str = utp->at_string;
15180   else
15181     {
15182       /* In the absence of a source location, fall back to raw
15183          address.  Since there is no way to confirm that the address
15184          means the same thing as when the trace was started, warn the
15185          user.  */
15186       warning (_("Uploaded tracepoint %d has no "
15187                  "source location, using raw address"),
15188                utp->number);
15189       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15190       addr_str = small_buf;
15191     }
15192
15193   /* There's not much we can do with a sequence of bytecodes.  */
15194   if (utp->cond && !utp->cond_string)
15195     warning (_("Uploaded tracepoint %d condition "
15196                "has no source form, ignoring it"),
15197              utp->number);
15198
15199   if (!create_breakpoint (get_current_arch (),
15200                           addr_str,
15201                           utp->cond_string, -1, NULL,
15202                           0 /* parse cond/thread */,
15203                           0 /* tempflag */,
15204                           utp->type /* type_wanted */,
15205                           0 /* Ignore count */,
15206                           pending_break_support,
15207                           &tracepoint_breakpoint_ops,
15208                           0 /* from_tty */,
15209                           utp->enabled /* enabled */,
15210                           0 /* internal */,
15211                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15212     return NULL;
15213
15214   /* Get the tracepoint we just created.  */
15215   tp = get_tracepoint (tracepoint_count);
15216   gdb_assert (tp != NULL);
15217
15218   if (utp->pass > 0)
15219     {
15220       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15221                  tp->base.number);
15222
15223       trace_pass_command (small_buf, 0);
15224     }
15225
15226   /* If we have uploaded versions of the original commands, set up a
15227      special-purpose "reader" function and call the usual command line
15228      reader, then pass the result to the breakpoint command-setting
15229      function.  */
15230   if (!VEC_empty (char_ptr, utp->cmd_strings))
15231     {
15232       struct command_line *cmd_list;
15233
15234       this_utp = utp;
15235       next_cmd = 0;
15236
15237       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15238
15239       breakpoint_set_commands (&tp->base, cmd_list);
15240     }
15241   else if (!VEC_empty (char_ptr, utp->actions)
15242            || !VEC_empty (char_ptr, utp->step_actions))
15243     warning (_("Uploaded tracepoint %d actions "
15244                "have no source form, ignoring them"),
15245              utp->number);
15246
15247   /* Copy any status information that might be available.  */
15248   tp->base.hit_count = utp->hit_count;
15249   tp->traceframe_usage = utp->traceframe_usage;
15250
15251   return tp;
15252 }
15253   
15254 /* Print information on tracepoint number TPNUM_EXP, or all if
15255    omitted.  */
15256
15257 static void
15258 tracepoints_info (char *args, int from_tty)
15259 {
15260   struct ui_out *uiout = current_uiout;
15261   int num_printed;
15262
15263   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15264
15265   if (num_printed == 0)
15266     {
15267       if (args == NULL || *args == '\0')
15268         ui_out_message (uiout, 0, "No tracepoints.\n");
15269       else
15270         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15271     }
15272
15273   default_collect_info ();
15274 }
15275
15276 /* The 'enable trace' command enables tracepoints.
15277    Not supported by all targets.  */
15278 static void
15279 enable_trace_command (char *args, int from_tty)
15280 {
15281   enable_command (args, from_tty);
15282 }
15283
15284 /* The 'disable trace' command disables tracepoints.
15285    Not supported by all targets.  */
15286 static void
15287 disable_trace_command (char *args, int from_tty)
15288 {
15289   disable_command (args, from_tty);
15290 }
15291
15292 /* Remove a tracepoint (or all if no argument).  */
15293 static void
15294 delete_trace_command (char *arg, int from_tty)
15295 {
15296   struct breakpoint *b, *b_tmp;
15297
15298   dont_repeat ();
15299
15300   if (arg == 0)
15301     {
15302       int breaks_to_delete = 0;
15303
15304       /* Delete all breakpoints if no argument.
15305          Do not delete internal or call-dummy breakpoints, these
15306          have to be deleted with an explicit breakpoint number 
15307          argument.  */
15308       ALL_TRACEPOINTS (b)
15309         if (is_tracepoint (b) && user_breakpoint_p (b))
15310           {
15311             breaks_to_delete = 1;
15312             break;
15313           }
15314
15315       /* Ask user only if there are some breakpoints to delete.  */
15316       if (!from_tty
15317           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15318         {
15319           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15320             if (is_tracepoint (b) && user_breakpoint_p (b))
15321               delete_breakpoint (b);
15322         }
15323     }
15324   else
15325     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15326 }
15327
15328 /* Helper function for trace_pass_command.  */
15329
15330 static void
15331 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15332 {
15333   tp->pass_count = count;
15334   observer_notify_breakpoint_modified (&tp->base);
15335   if (from_tty)
15336     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15337                      tp->base.number, count);
15338 }
15339
15340 /* Set passcount for tracepoint.
15341
15342    First command argument is passcount, second is tracepoint number.
15343    If tracepoint number omitted, apply to most recently defined.
15344    Also accepts special argument "all".  */
15345
15346 static void
15347 trace_pass_command (char *args, int from_tty)
15348 {
15349   struct tracepoint *t1;
15350   unsigned int count;
15351
15352   if (args == 0 || *args == 0)
15353     error (_("passcount command requires an "
15354              "argument (count + optional TP num)"));
15355
15356   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15357
15358   while (*args && isspace ((int) *args))
15359     args++;
15360
15361   if (*args && strncasecmp (args, "all", 3) == 0)
15362     {
15363       struct breakpoint *b;
15364
15365       args += 3;                        /* Skip special argument "all".  */
15366       if (*args)
15367         error (_("Junk at end of arguments."));
15368
15369       ALL_TRACEPOINTS (b)
15370       {
15371         t1 = (struct tracepoint *) b;
15372         trace_pass_set_count (t1, count, from_tty);
15373       }
15374     }
15375   else if (*args == '\0')
15376     {
15377       t1 = get_tracepoint_by_number (&args, NULL, 1);
15378       if (t1)
15379         trace_pass_set_count (t1, count, from_tty);
15380     }
15381   else
15382     {
15383       struct get_number_or_range_state state;
15384
15385       init_number_or_range (&state, args);
15386       while (!state.finished)
15387         {
15388           t1 = get_tracepoint_by_number (&args, &state, 1);
15389           if (t1)
15390             trace_pass_set_count (t1, count, from_tty);
15391         }
15392     }
15393 }
15394
15395 struct tracepoint *
15396 get_tracepoint (int num)
15397 {
15398   struct breakpoint *t;
15399
15400   ALL_TRACEPOINTS (t)
15401     if (t->number == num)
15402       return (struct tracepoint *) t;
15403
15404   return NULL;
15405 }
15406
15407 /* Find the tracepoint with the given target-side number (which may be
15408    different from the tracepoint number after disconnecting and
15409    reconnecting).  */
15410
15411 struct tracepoint *
15412 get_tracepoint_by_number_on_target (int num)
15413 {
15414   struct breakpoint *b;
15415
15416   ALL_TRACEPOINTS (b)
15417     {
15418       struct tracepoint *t = (struct tracepoint *) b;
15419
15420       if (t->number_on_target == num)
15421         return t;
15422     }
15423
15424   return NULL;
15425 }
15426
15427 /* Utility: parse a tracepoint number and look it up in the list.
15428    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15429    If OPTIONAL_P is true, then if the argument is missing, the most
15430    recent tracepoint (tracepoint_count) is returned.  */
15431 struct tracepoint *
15432 get_tracepoint_by_number (char **arg,
15433                           struct get_number_or_range_state *state,
15434                           int optional_p)
15435 {
15436   struct breakpoint *t;
15437   int tpnum;
15438   char *instring = arg == NULL ? NULL : *arg;
15439
15440   if (state)
15441     {
15442       gdb_assert (!state->finished);
15443       tpnum = get_number_or_range (state);
15444     }
15445   else if (arg == NULL || *arg == NULL || ! **arg)
15446     {
15447       if (optional_p)
15448         tpnum = tracepoint_count;
15449       else
15450         error_no_arg (_("tracepoint number"));
15451     }
15452   else
15453     tpnum = get_number (arg);
15454
15455   if (tpnum <= 0)
15456     {
15457       if (instring && *instring)
15458         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15459                          instring);
15460       else
15461         printf_filtered (_("Tracepoint argument missing "
15462                            "and no previous tracepoint\n"));
15463       return NULL;
15464     }
15465
15466   ALL_TRACEPOINTS (t)
15467     if (t->number == tpnum)
15468     {
15469       return (struct tracepoint *) t;
15470     }
15471
15472   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15473   return NULL;
15474 }
15475
15476 void
15477 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15478 {
15479   if (b->thread != -1)
15480     fprintf_unfiltered (fp, " thread %d", b->thread);
15481
15482   if (b->task != 0)
15483     fprintf_unfiltered (fp, " task %d", b->task);
15484
15485   fprintf_unfiltered (fp, "\n");
15486 }
15487
15488 /* Save information on user settable breakpoints (watchpoints, etc) to
15489    a new script file named FILENAME.  If FILTER is non-NULL, call it
15490    on each breakpoint and only include the ones for which it returns
15491    non-zero.  */
15492
15493 static void
15494 save_breakpoints (char *filename, int from_tty,
15495                   int (*filter) (const struct breakpoint *))
15496 {
15497   struct breakpoint *tp;
15498   int any = 0;
15499   char *pathname;
15500   struct cleanup *cleanup;
15501   struct ui_file *fp;
15502   int extra_trace_bits = 0;
15503
15504   if (filename == 0 || *filename == 0)
15505     error (_("Argument required (file name in which to save)"));
15506
15507   /* See if we have anything to save.  */
15508   ALL_BREAKPOINTS (tp)
15509   {
15510     /* Skip internal and momentary breakpoints.  */
15511     if (!user_breakpoint_p (tp))
15512       continue;
15513
15514     /* If we have a filter, only save the breakpoints it accepts.  */
15515     if (filter && !filter (tp))
15516       continue;
15517
15518     any = 1;
15519
15520     if (is_tracepoint (tp))
15521       {
15522         extra_trace_bits = 1;
15523
15524         /* We can stop searching.  */
15525         break;
15526       }
15527   }
15528
15529   if (!any)
15530     {
15531       warning (_("Nothing to save."));
15532       return;
15533     }
15534
15535   pathname = tilde_expand (filename);
15536   cleanup = make_cleanup (xfree, pathname);
15537   fp = gdb_fopen (pathname, "w");
15538   if (!fp)
15539     error (_("Unable to open file '%s' for saving (%s)"),
15540            filename, safe_strerror (errno));
15541   make_cleanup_ui_file_delete (fp);
15542
15543   if (extra_trace_bits)
15544     save_trace_state_variables (fp);
15545
15546   ALL_BREAKPOINTS (tp)
15547   {
15548     /* Skip internal and momentary breakpoints.  */
15549     if (!user_breakpoint_p (tp))
15550       continue;
15551
15552     /* If we have a filter, only save the breakpoints it accepts.  */
15553     if (filter && !filter (tp))
15554       continue;
15555
15556     tp->ops->print_recreate (tp, fp);
15557
15558     /* Note, we can't rely on tp->number for anything, as we can't
15559        assume the recreated breakpoint numbers will match.  Use $bpnum
15560        instead.  */
15561
15562     if (tp->cond_string)
15563       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15564
15565     if (tp->ignore_count)
15566       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15567
15568     if (tp->commands)
15569       {
15570         volatile struct gdb_exception ex;       
15571
15572         fprintf_unfiltered (fp, "  commands\n");
15573         
15574         ui_out_redirect (current_uiout, fp);
15575         TRY_CATCH (ex, RETURN_MASK_ALL)
15576           {
15577             print_command_lines (current_uiout, tp->commands->commands, 2);
15578           }
15579         ui_out_redirect (current_uiout, NULL);
15580
15581         if (ex.reason < 0)
15582           throw_exception (ex);
15583
15584         fprintf_unfiltered (fp, "  end\n");
15585       }
15586
15587     if (tp->enable_state == bp_disabled)
15588       fprintf_unfiltered (fp, "disable\n");
15589
15590     /* If this is a multi-location breakpoint, check if the locations
15591        should be individually disabled.  Watchpoint locations are
15592        special, and not user visible.  */
15593     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15594       {
15595         struct bp_location *loc;
15596         int n = 1;
15597
15598         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15599           if (!loc->enabled)
15600             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15601       }
15602   }
15603
15604   if (extra_trace_bits && *default_collect)
15605     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15606
15607   do_cleanups (cleanup);
15608   if (from_tty)
15609     printf_filtered (_("Saved to file '%s'.\n"), filename);
15610 }
15611
15612 /* The `save breakpoints' command.  */
15613
15614 static void
15615 save_breakpoints_command (char *args, int from_tty)
15616 {
15617   save_breakpoints (args, from_tty, NULL);
15618 }
15619
15620 /* The `save tracepoints' command.  */
15621
15622 static void
15623 save_tracepoints_command (char *args, int from_tty)
15624 {
15625   save_breakpoints (args, from_tty, is_tracepoint);
15626 }
15627
15628 /* Create a vector of all tracepoints.  */
15629
15630 VEC(breakpoint_p) *
15631 all_tracepoints (void)
15632 {
15633   VEC(breakpoint_p) *tp_vec = 0;
15634   struct breakpoint *tp;
15635
15636   ALL_TRACEPOINTS (tp)
15637   {
15638     VEC_safe_push (breakpoint_p, tp_vec, tp);
15639   }
15640
15641   return tp_vec;
15642 }
15643
15644 \f
15645 /* This help string is used for the break, hbreak, tbreak and thbreak
15646    commands.  It is defined as a macro to prevent duplication.
15647    COMMAND should be a string constant containing the name of the
15648    command.  */
15649 #define BREAK_ARGS_HELP(command) \
15650 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15651 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15652 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15653 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15654 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15655 If a line number is specified, break at start of code for that line.\n\
15656 If a function is specified, break at start of code for that function.\n\
15657 If an address is specified, break at that exact address.\n\
15658 With no LOCATION, uses current execution address of the selected\n\
15659 stack frame.  This is useful for breaking on return to a stack frame.\n\
15660 \n\
15661 THREADNUM is the number from \"info threads\".\n\
15662 CONDITION is a boolean expression.\n\
15663 \n\
15664 Multiple breakpoints at one place are permitted, and useful if their\n\
15665 conditions are different.\n\
15666 \n\
15667 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15668
15669 /* List of subcommands for "catch".  */
15670 static struct cmd_list_element *catch_cmdlist;
15671
15672 /* List of subcommands for "tcatch".  */
15673 static struct cmd_list_element *tcatch_cmdlist;
15674
15675 void
15676 add_catch_command (char *name, char *docstring,
15677                    void (*sfunc) (char *args, int from_tty,
15678                                   struct cmd_list_element *command),
15679                    completer_ftype *completer,
15680                    void *user_data_catch,
15681                    void *user_data_tcatch)
15682 {
15683   struct cmd_list_element *command;
15684
15685   command = add_cmd (name, class_breakpoint, NULL, docstring,
15686                      &catch_cmdlist);
15687   set_cmd_sfunc (command, sfunc);
15688   set_cmd_context (command, user_data_catch);
15689   set_cmd_completer (command, completer);
15690
15691   command = add_cmd (name, class_breakpoint, NULL, docstring,
15692                      &tcatch_cmdlist);
15693   set_cmd_sfunc (command, sfunc);
15694   set_cmd_context (command, user_data_tcatch);
15695   set_cmd_completer (command, completer);
15696 }
15697
15698 static void
15699 clear_syscall_counts (struct inferior *inf)
15700 {
15701   struct catch_syscall_inferior_data *inf_data
15702     = get_catch_syscall_inferior_data (inf);
15703
15704   inf_data->total_syscalls_count = 0;
15705   inf_data->any_syscall_count = 0;
15706   VEC_free (int, inf_data->syscalls_counts);
15707 }
15708
15709 static void
15710 save_command (char *arg, int from_tty)
15711 {
15712   printf_unfiltered (_("\"save\" must be followed by "
15713                        "the name of a save subcommand.\n"));
15714   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15715 }
15716
15717 struct breakpoint *
15718 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15719                           void *data)
15720 {
15721   struct breakpoint *b, *b_tmp;
15722
15723   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15724     {
15725       if ((*callback) (b, data))
15726         return b;
15727     }
15728
15729   return NULL;
15730 }
15731
15732 /* Zero if any of the breakpoint's locations could be a location where
15733    functions have been inlined, nonzero otherwise.  */
15734
15735 static int
15736 is_non_inline_function (struct breakpoint *b)
15737 {
15738   /* The shared library event breakpoint is set on the address of a
15739      non-inline function.  */
15740   if (b->type == bp_shlib_event)
15741     return 1;
15742
15743   return 0;
15744 }
15745
15746 /* Nonzero if the specified PC cannot be a location where functions
15747    have been inlined.  */
15748
15749 int
15750 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15751                            const struct target_waitstatus *ws)
15752 {
15753   struct breakpoint *b;
15754   struct bp_location *bl;
15755
15756   ALL_BREAKPOINTS (b)
15757     {
15758       if (!is_non_inline_function (b))
15759         continue;
15760
15761       for (bl = b->loc; bl != NULL; bl = bl->next)
15762         {
15763           if (!bl->shlib_disabled
15764               && bpstat_check_location (bl, aspace, pc, ws))
15765             return 1;
15766         }
15767     }
15768
15769   return 0;
15770 }
15771
15772 void
15773 initialize_breakpoint_ops (void)
15774 {
15775   static int initialized = 0;
15776
15777   struct breakpoint_ops *ops;
15778
15779   if (initialized)
15780     return;
15781   initialized = 1;
15782
15783   /* The breakpoint_ops structure to be inherit by all kinds of
15784      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15785      internal and momentary breakpoints, etc.).  */
15786   ops = &bkpt_base_breakpoint_ops;
15787   *ops = base_breakpoint_ops;
15788   ops->re_set = bkpt_re_set;
15789   ops->insert_location = bkpt_insert_location;
15790   ops->remove_location = bkpt_remove_location;
15791   ops->breakpoint_hit = bkpt_breakpoint_hit;
15792   ops->create_sals_from_address = bkpt_create_sals_from_address;
15793   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15794   ops->decode_linespec = bkpt_decode_linespec;
15795
15796   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15797   ops = &bkpt_breakpoint_ops;
15798   *ops = bkpt_base_breakpoint_ops;
15799   ops->re_set = bkpt_re_set;
15800   ops->resources_needed = bkpt_resources_needed;
15801   ops->print_it = bkpt_print_it;
15802   ops->print_mention = bkpt_print_mention;
15803   ops->print_recreate = bkpt_print_recreate;
15804
15805   /* Ranged breakpoints.  */
15806   ops = &ranged_breakpoint_ops;
15807   *ops = bkpt_breakpoint_ops;
15808   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15809   ops->resources_needed = resources_needed_ranged_breakpoint;
15810   ops->print_it = print_it_ranged_breakpoint;
15811   ops->print_one = print_one_ranged_breakpoint;
15812   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15813   ops->print_mention = print_mention_ranged_breakpoint;
15814   ops->print_recreate = print_recreate_ranged_breakpoint;
15815
15816   /* Internal breakpoints.  */
15817   ops = &internal_breakpoint_ops;
15818   *ops = bkpt_base_breakpoint_ops;
15819   ops->re_set = internal_bkpt_re_set;
15820   ops->check_status = internal_bkpt_check_status;
15821   ops->print_it = internal_bkpt_print_it;
15822   ops->print_mention = internal_bkpt_print_mention;
15823
15824   /* Momentary breakpoints.  */
15825   ops = &momentary_breakpoint_ops;
15826   *ops = bkpt_base_breakpoint_ops;
15827   ops->re_set = momentary_bkpt_re_set;
15828   ops->check_status = momentary_bkpt_check_status;
15829   ops->print_it = momentary_bkpt_print_it;
15830   ops->print_mention = momentary_bkpt_print_mention;
15831
15832   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15833   ops = &longjmp_breakpoint_ops;
15834   *ops = momentary_breakpoint_ops;
15835   ops->dtor = longjmp_bkpt_dtor;
15836
15837   /* Probe breakpoints.  */
15838   ops = &bkpt_probe_breakpoint_ops;
15839   *ops = bkpt_breakpoint_ops;
15840   ops->insert_location = bkpt_probe_insert_location;
15841   ops->remove_location = bkpt_probe_remove_location;
15842   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15843   ops->decode_linespec = bkpt_probe_decode_linespec;
15844
15845   /* GNU v3 exception catchpoints.  */
15846   ops = &gnu_v3_exception_catchpoint_ops;
15847   *ops = bkpt_breakpoint_ops;
15848   ops->print_it = print_it_exception_catchpoint;
15849   ops->print_one = print_one_exception_catchpoint;
15850   ops->print_mention = print_mention_exception_catchpoint;
15851   ops->print_recreate = print_recreate_exception_catchpoint;
15852
15853   /* Watchpoints.  */
15854   ops = &watchpoint_breakpoint_ops;
15855   *ops = base_breakpoint_ops;
15856   ops->dtor = dtor_watchpoint;
15857   ops->re_set = re_set_watchpoint;
15858   ops->insert_location = insert_watchpoint;
15859   ops->remove_location = remove_watchpoint;
15860   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15861   ops->check_status = check_status_watchpoint;
15862   ops->resources_needed = resources_needed_watchpoint;
15863   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15864   ops->print_it = print_it_watchpoint;
15865   ops->print_mention = print_mention_watchpoint;
15866   ops->print_recreate = print_recreate_watchpoint;
15867
15868   /* Masked watchpoints.  */
15869   ops = &masked_watchpoint_breakpoint_ops;
15870   *ops = watchpoint_breakpoint_ops;
15871   ops->insert_location = insert_masked_watchpoint;
15872   ops->remove_location = remove_masked_watchpoint;
15873   ops->resources_needed = resources_needed_masked_watchpoint;
15874   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15875   ops->print_it = print_it_masked_watchpoint;
15876   ops->print_one_detail = print_one_detail_masked_watchpoint;
15877   ops->print_mention = print_mention_masked_watchpoint;
15878   ops->print_recreate = print_recreate_masked_watchpoint;
15879
15880   /* Tracepoints.  */
15881   ops = &tracepoint_breakpoint_ops;
15882   *ops = base_breakpoint_ops;
15883   ops->re_set = tracepoint_re_set;
15884   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15885   ops->print_one_detail = tracepoint_print_one_detail;
15886   ops->print_mention = tracepoint_print_mention;
15887   ops->print_recreate = tracepoint_print_recreate;
15888   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15889   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15890   ops->decode_linespec = tracepoint_decode_linespec;
15891
15892   /* Probe tracepoints.  */
15893   ops = &tracepoint_probe_breakpoint_ops;
15894   *ops = tracepoint_breakpoint_ops;
15895   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15896   ops->decode_linespec = tracepoint_probe_decode_linespec;
15897
15898   /* Static tracepoints with marker (`-m').  */
15899   ops = &strace_marker_breakpoint_ops;
15900   *ops = tracepoint_breakpoint_ops;
15901   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15902   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15903   ops->decode_linespec = strace_marker_decode_linespec;
15904
15905   /* Fork catchpoints.  */
15906   ops = &catch_fork_breakpoint_ops;
15907   *ops = base_breakpoint_ops;
15908   ops->insert_location = insert_catch_fork;
15909   ops->remove_location = remove_catch_fork;
15910   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15911   ops->print_it = print_it_catch_fork;
15912   ops->print_one = print_one_catch_fork;
15913   ops->print_mention = print_mention_catch_fork;
15914   ops->print_recreate = print_recreate_catch_fork;
15915
15916   /* Vfork catchpoints.  */
15917   ops = &catch_vfork_breakpoint_ops;
15918   *ops = base_breakpoint_ops;
15919   ops->insert_location = insert_catch_vfork;
15920   ops->remove_location = remove_catch_vfork;
15921   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15922   ops->print_it = print_it_catch_vfork;
15923   ops->print_one = print_one_catch_vfork;
15924   ops->print_mention = print_mention_catch_vfork;
15925   ops->print_recreate = print_recreate_catch_vfork;
15926
15927   /* Exec catchpoints.  */
15928   ops = &catch_exec_breakpoint_ops;
15929   *ops = base_breakpoint_ops;
15930   ops->dtor = dtor_catch_exec;
15931   ops->insert_location = insert_catch_exec;
15932   ops->remove_location = remove_catch_exec;
15933   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15934   ops->print_it = print_it_catch_exec;
15935   ops->print_one = print_one_catch_exec;
15936   ops->print_mention = print_mention_catch_exec;
15937   ops->print_recreate = print_recreate_catch_exec;
15938
15939   /* Syscall catchpoints.  */
15940   ops = &catch_syscall_breakpoint_ops;
15941   *ops = base_breakpoint_ops;
15942   ops->dtor = dtor_catch_syscall;
15943   ops->insert_location = insert_catch_syscall;
15944   ops->remove_location = remove_catch_syscall;
15945   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15946   ops->print_it = print_it_catch_syscall;
15947   ops->print_one = print_one_catch_syscall;
15948   ops->print_mention = print_mention_catch_syscall;
15949   ops->print_recreate = print_recreate_catch_syscall;
15950
15951   /* Solib-related catchpoints.  */
15952   ops = &catch_solib_breakpoint_ops;
15953   *ops = base_breakpoint_ops;
15954   ops->dtor = dtor_catch_solib;
15955   ops->insert_location = insert_catch_solib;
15956   ops->remove_location = remove_catch_solib;
15957   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15958   ops->check_status = check_status_catch_solib;
15959   ops->print_it = print_it_catch_solib;
15960   ops->print_one = print_one_catch_solib;
15961   ops->print_mention = print_mention_catch_solib;
15962   ops->print_recreate = print_recreate_catch_solib;
15963
15964   ops = &dprintf_breakpoint_ops;
15965   *ops = bkpt_base_breakpoint_ops;
15966   ops->re_set = bkpt_re_set;
15967   ops->resources_needed = bkpt_resources_needed;
15968   ops->print_it = bkpt_print_it;
15969   ops->print_mention = bkpt_print_mention;
15970   ops->print_recreate = bkpt_print_recreate;
15971 }
15972
15973 /* Chain containing all defined "enable breakpoint" subcommands.  */
15974
15975 static struct cmd_list_element *enablebreaklist = NULL;
15976
15977 void
15978 _initialize_breakpoint (void)
15979 {
15980   struct cmd_list_element *c;
15981
15982   initialize_breakpoint_ops ();
15983
15984   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15985   observer_attach_inferior_exit (clear_syscall_counts);
15986   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15987
15988   breakpoint_objfile_key
15989     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15990
15991   catch_syscall_inferior_data
15992     = register_inferior_data_with_cleanup (NULL,
15993                                            catch_syscall_inferior_data_cleanup);
15994
15995   breakpoint_chain = 0;
15996   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15997      before a breakpoint is set.  */
15998   breakpoint_count = 0;
15999
16000   tracepoint_count = 0;
16001
16002   add_com ("ignore", class_breakpoint, ignore_command, _("\
16003 Set ignore-count of breakpoint number N to COUNT.\n\
16004 Usage is `ignore N COUNT'."));
16005   if (xdb_commands)
16006     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16007
16008   add_com ("commands", class_breakpoint, commands_command, _("\
16009 Set commands to be executed when a breakpoint is hit.\n\
16010 Give breakpoint number as argument after \"commands\".\n\
16011 With no argument, the targeted breakpoint is the last one set.\n\
16012 The commands themselves follow starting on the next line.\n\
16013 Type a line containing \"end\" to indicate the end of them.\n\
16014 Give \"silent\" as the first line to make the breakpoint silent;\n\
16015 then no output is printed when it is hit, except what the commands print."));
16016
16017   c = add_com ("condition", class_breakpoint, condition_command, _("\
16018 Specify breakpoint number N to break only if COND is true.\n\
16019 Usage is `condition N COND', where N is an integer and COND is an\n\
16020 expression to be evaluated whenever breakpoint N is reached."));
16021   set_cmd_completer (c, condition_completer);
16022
16023   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16024 Set a temporary breakpoint.\n\
16025 Like \"break\" except the breakpoint is only temporary,\n\
16026 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16027 by using \"enable delete\" on the breakpoint number.\n\
16028 \n"
16029 BREAK_ARGS_HELP ("tbreak")));
16030   set_cmd_completer (c, location_completer);
16031
16032   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16033 Set a hardware assisted breakpoint.\n\
16034 Like \"break\" except the breakpoint requires hardware support,\n\
16035 some target hardware may not have this support.\n\
16036 \n"
16037 BREAK_ARGS_HELP ("hbreak")));
16038   set_cmd_completer (c, location_completer);
16039
16040   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16041 Set a temporary hardware assisted breakpoint.\n\
16042 Like \"hbreak\" except the breakpoint is only temporary,\n\
16043 so it will be deleted when hit.\n\
16044 \n"
16045 BREAK_ARGS_HELP ("thbreak")));
16046   set_cmd_completer (c, location_completer);
16047
16048   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16049 Enable some breakpoints.\n\
16050 Give breakpoint numbers (separated by spaces) as arguments.\n\
16051 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16052 This is used to cancel the effect of the \"disable\" command.\n\
16053 With a subcommand you can enable temporarily."),
16054                   &enablelist, "enable ", 1, &cmdlist);
16055   if (xdb_commands)
16056     add_com ("ab", class_breakpoint, enable_command, _("\
16057 Enable some breakpoints.\n\
16058 Give breakpoint numbers (separated by spaces) as arguments.\n\
16059 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16060 This is used to cancel the effect of the \"disable\" command.\n\
16061 With a subcommand you can enable temporarily."));
16062
16063   add_com_alias ("en", "enable", class_breakpoint, 1);
16064
16065   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16066 Enable some breakpoints.\n\
16067 Give breakpoint numbers (separated by spaces) as arguments.\n\
16068 This is used to cancel the effect of the \"disable\" command.\n\
16069 May be abbreviated to simply \"enable\".\n"),
16070                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16071
16072   add_cmd ("once", no_class, enable_once_command, _("\
16073 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16074 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16075            &enablebreaklist);
16076
16077   add_cmd ("delete", no_class, enable_delete_command, _("\
16078 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16079 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16080            &enablebreaklist);
16081
16082   add_cmd ("count", no_class, enable_count_command, _("\
16083 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16084 If a breakpoint is hit while enabled in this fashion,\n\
16085 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16086            &enablebreaklist);
16087
16088   add_cmd ("delete", no_class, enable_delete_command, _("\
16089 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16090 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16091            &enablelist);
16092
16093   add_cmd ("once", no_class, enable_once_command, _("\
16094 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16095 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16096            &enablelist);
16097
16098   add_cmd ("count", no_class, enable_count_command, _("\
16099 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16100 If a breakpoint is hit while enabled in this fashion,\n\
16101 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16102            &enablelist);
16103
16104   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16105 Disable some breakpoints.\n\
16106 Arguments are breakpoint numbers with spaces in between.\n\
16107 To disable all breakpoints, give no argument.\n\
16108 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16109                   &disablelist, "disable ", 1, &cmdlist);
16110   add_com_alias ("dis", "disable", class_breakpoint, 1);
16111   add_com_alias ("disa", "disable", class_breakpoint, 1);
16112   if (xdb_commands)
16113     add_com ("sb", class_breakpoint, disable_command, _("\
16114 Disable some breakpoints.\n\
16115 Arguments are breakpoint numbers with spaces in between.\n\
16116 To disable all breakpoints, give no argument.\n\
16117 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16118
16119   add_cmd ("breakpoints", class_alias, disable_command, _("\
16120 Disable some breakpoints.\n\
16121 Arguments are breakpoint numbers with spaces in between.\n\
16122 To disable all breakpoints, give no argument.\n\
16123 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16124 This command may be abbreviated \"disable\"."),
16125            &disablelist);
16126
16127   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16128 Delete some breakpoints or auto-display expressions.\n\
16129 Arguments are breakpoint numbers with spaces in between.\n\
16130 To delete all breakpoints, give no argument.\n\
16131 \n\
16132 Also a prefix command for deletion of other GDB objects.\n\
16133 The \"unset\" command is also an alias for \"delete\"."),
16134                   &deletelist, "delete ", 1, &cmdlist);
16135   add_com_alias ("d", "delete", class_breakpoint, 1);
16136   add_com_alias ("del", "delete", class_breakpoint, 1);
16137   if (xdb_commands)
16138     add_com ("db", class_breakpoint, delete_command, _("\
16139 Delete some breakpoints.\n\
16140 Arguments are breakpoint numbers with spaces in between.\n\
16141 To delete all breakpoints, give no argument.\n"));
16142
16143   add_cmd ("breakpoints", class_alias, delete_command, _("\
16144 Delete some breakpoints or auto-display expressions.\n\
16145 Arguments are breakpoint numbers with spaces in between.\n\
16146 To delete all breakpoints, give no argument.\n\
16147 This command may be abbreviated \"delete\"."),
16148            &deletelist);
16149
16150   add_com ("clear", class_breakpoint, clear_command, _("\
16151 Clear breakpoint at specified line or function.\n\
16152 Argument may be line number, function name, or \"*\" and an address.\n\
16153 If line number is specified, all breakpoints in that line are cleared.\n\
16154 If function is specified, breakpoints at beginning of function are cleared.\n\
16155 If an address is specified, breakpoints at that address are cleared.\n\
16156 \n\
16157 With no argument, clears all breakpoints in the line that the selected frame\n\
16158 is executing in.\n\
16159 \n\
16160 See also the \"delete\" command which clears breakpoints by number."));
16161   add_com_alias ("cl", "clear", class_breakpoint, 1);
16162
16163   c = add_com ("break", class_breakpoint, break_command, _("\
16164 Set breakpoint at specified line or function.\n"
16165 BREAK_ARGS_HELP ("break")));
16166   set_cmd_completer (c, location_completer);
16167
16168   add_com_alias ("b", "break", class_run, 1);
16169   add_com_alias ("br", "break", class_run, 1);
16170   add_com_alias ("bre", "break", class_run, 1);
16171   add_com_alias ("brea", "break", class_run, 1);
16172
16173   if (xdb_commands)
16174    add_com_alias ("ba", "break", class_breakpoint, 1);
16175
16176   if (dbx_commands)
16177     {
16178       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16179 Break in function/address or break at a line in the current file."),
16180                              &stoplist, "stop ", 1, &cmdlist);
16181       add_cmd ("in", class_breakpoint, stopin_command,
16182                _("Break in function or address."), &stoplist);
16183       add_cmd ("at", class_breakpoint, stopat_command,
16184                _("Break at a line in the current file."), &stoplist);
16185       add_com ("status", class_info, breakpoints_info, _("\
16186 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16187 The \"Type\" column indicates one of:\n\
16188 \tbreakpoint     - normal breakpoint\n\
16189 \twatchpoint     - watchpoint\n\
16190 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16191 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16192 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16193 address and file/line number respectively.\n\
16194 \n\
16195 Convenience variable \"$_\" and default examine address for \"x\"\n\
16196 are set to the address of the last breakpoint listed unless the command\n\
16197 is prefixed with \"server \".\n\n\
16198 Convenience variable \"$bpnum\" contains the number of the last\n\
16199 breakpoint set."));
16200     }
16201
16202   add_info ("breakpoints", breakpoints_info, _("\
16203 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16204 The \"Type\" column indicates one of:\n\
16205 \tbreakpoint     - normal breakpoint\n\
16206 \twatchpoint     - watchpoint\n\
16207 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16208 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16209 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16210 address and file/line number respectively.\n\
16211 \n\
16212 Convenience variable \"$_\" and default examine address for \"x\"\n\
16213 are set to the address of the last breakpoint listed unless the command\n\
16214 is prefixed with \"server \".\n\n\
16215 Convenience variable \"$bpnum\" contains the number of the last\n\
16216 breakpoint set."));
16217
16218   add_info_alias ("b", "breakpoints", 1);
16219
16220   if (xdb_commands)
16221     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16222 Status of user-settable breakpoints, or breakpoint number NUMBER.\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_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16238 Status of all breakpoints, or breakpoint number NUMBER.\n\
16239 The \"Type\" column indicates one of:\n\
16240 \tbreakpoint     - normal breakpoint\n\
16241 \twatchpoint     - watchpoint\n\
16242 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16243 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16244 \tuntil          - internal breakpoint used by the \"until\" command\n\
16245 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16246 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16247 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16248 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16249 address and file/line number respectively.\n\
16250 \n\
16251 Convenience variable \"$_\" and default examine address for \"x\"\n\
16252 are set to the address of the last breakpoint listed unless the command\n\
16253 is prefixed with \"server \".\n\n\
16254 Convenience variable \"$bpnum\" contains the number of the last\n\
16255 breakpoint set."),
16256            &maintenanceinfolist);
16257
16258   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16259 Set catchpoints to catch events."),
16260                   &catch_cmdlist, "catch ",
16261                   0/*allow-unknown*/, &cmdlist);
16262
16263   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16264 Set temporary catchpoints to catch events."),
16265                   &tcatch_cmdlist, "tcatch ",
16266                   0/*allow-unknown*/, &cmdlist);
16267
16268   /* Add catch and tcatch sub-commands.  */
16269   add_catch_command ("catch", _("\
16270 Catch an exception, when caught."),
16271                      catch_catch_command,
16272                      NULL,
16273                      CATCH_PERMANENT,
16274                      CATCH_TEMPORARY);
16275   add_catch_command ("throw", _("\
16276 Catch an exception, when thrown."),
16277                      catch_throw_command,
16278                      NULL,
16279                      CATCH_PERMANENT,
16280                      CATCH_TEMPORARY);
16281   add_catch_command ("fork", _("Catch calls to fork."),
16282                      catch_fork_command_1,
16283                      NULL,
16284                      (void *) (uintptr_t) catch_fork_permanent,
16285                      (void *) (uintptr_t) catch_fork_temporary);
16286   add_catch_command ("vfork", _("Catch calls to vfork."),
16287                      catch_fork_command_1,
16288                      NULL,
16289                      (void *) (uintptr_t) catch_vfork_permanent,
16290                      (void *) (uintptr_t) catch_vfork_temporary);
16291   add_catch_command ("exec", _("Catch calls to exec."),
16292                      catch_exec_command_1,
16293                      NULL,
16294                      CATCH_PERMANENT,
16295                      CATCH_TEMPORARY);
16296   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16297 Usage: catch load [REGEX]\n\
16298 If REGEX is given, only stop for libraries matching the regular expression."),
16299                      catch_load_command_1,
16300                      NULL,
16301                      CATCH_PERMANENT,
16302                      CATCH_TEMPORARY);
16303   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16304 Usage: catch unload [REGEX]\n\
16305 If REGEX is given, only stop for libraries matching the regular expression."),
16306                      catch_unload_command_1,
16307                      NULL,
16308                      CATCH_PERMANENT,
16309                      CATCH_TEMPORARY);
16310   add_catch_command ("syscall", _("\
16311 Catch system calls by their names and/or numbers.\n\
16312 Arguments say which system calls to catch.  If no arguments\n\
16313 are given, every system call will be caught.\n\
16314 Arguments, if given, should be one or more system call names\n\
16315 (if your system supports that), or system call numbers."),
16316                      catch_syscall_command_1,
16317                      catch_syscall_completer,
16318                      CATCH_PERMANENT,
16319                      CATCH_TEMPORARY);
16320
16321   c = add_com ("watch", class_breakpoint, watch_command, _("\
16322 Set a watchpoint for an expression.\n\
16323 Usage: watch [-l|-location] EXPRESSION\n\
16324 A watchpoint stops execution of your program whenever the value of\n\
16325 an expression changes.\n\
16326 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16327 the memory to which it refers."));
16328   set_cmd_completer (c, expression_completer);
16329
16330   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16331 Set a read watchpoint for an expression.\n\
16332 Usage: rwatch [-l|-location] EXPRESSION\n\
16333 A watchpoint stops execution of your program whenever the value of\n\
16334 an expression is read.\n\
16335 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16336 the memory to which it refers."));
16337   set_cmd_completer (c, expression_completer);
16338
16339   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16340 Set a watchpoint for an expression.\n\
16341 Usage: awatch [-l|-location] EXPRESSION\n\
16342 A watchpoint stops execution of your program whenever the value of\n\
16343 an expression is either read or written.\n\
16344 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16345 the memory to which it refers."));
16346   set_cmd_completer (c, expression_completer);
16347
16348   add_info ("watchpoints", watchpoints_info, _("\
16349 Status of specified watchpoints (all watchpoints if no argument)."));
16350
16351   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16352      respond to changes - contrary to the description.  */
16353   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16354                             &can_use_hw_watchpoints, _("\
16355 Set debugger's willingness to use watchpoint hardware."), _("\
16356 Show debugger's willingness to use watchpoint hardware."), _("\
16357 If zero, gdb will not use hardware for new watchpoints, even if\n\
16358 such is available.  (However, any hardware watchpoints that were\n\
16359 created before setting this to nonzero, will continue to use watchpoint\n\
16360 hardware.)"),
16361                             NULL,
16362                             show_can_use_hw_watchpoints,
16363                             &setlist, &showlist);
16364
16365   can_use_hw_watchpoints = 1;
16366
16367   /* Tracepoint manipulation commands.  */
16368
16369   c = add_com ("trace", class_breakpoint, trace_command, _("\
16370 Set a tracepoint at specified line or function.\n\
16371 \n"
16372 BREAK_ARGS_HELP ("trace") "\n\
16373 Do \"help tracepoints\" for info on other tracepoint commands."));
16374   set_cmd_completer (c, location_completer);
16375
16376   add_com_alias ("tp", "trace", class_alias, 0);
16377   add_com_alias ("tr", "trace", class_alias, 1);
16378   add_com_alias ("tra", "trace", class_alias, 1);
16379   add_com_alias ("trac", "trace", class_alias, 1);
16380
16381   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16382 Set a fast tracepoint at specified line or function.\n\
16383 \n"
16384 BREAK_ARGS_HELP ("ftrace") "\n\
16385 Do \"help tracepoints\" for info on other tracepoint commands."));
16386   set_cmd_completer (c, location_completer);
16387
16388   c = add_com ("strace", class_breakpoint, strace_command, _("\
16389 Set a static tracepoint at specified line, function or marker.\n\
16390 \n\
16391 strace [LOCATION] [if CONDITION]\n\
16392 LOCATION may be a line number, function name, \"*\" and an address,\n\
16393 or -m MARKER_ID.\n\
16394 If a line number is specified, probe the marker at start of code\n\
16395 for that line.  If a function is specified, probe the marker at start\n\
16396 of code for that function.  If an address is specified, probe the marker\n\
16397 at that exact address.  If a marker id is specified, probe the marker\n\
16398 with that name.  With no LOCATION, uses current execution address of\n\
16399 the selected stack frame.\n\
16400 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16401 This collects arbitrary user data passed in the probe point call to the\n\
16402 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16403 by printing the $_sdata variable like any other convenience variable.\n\
16404 \n\
16405 CONDITION is a boolean expression.\n\
16406 \n\
16407 Multiple tracepoints at one place are permitted, and useful if their\n\
16408 conditions are different.\n\
16409 \n\
16410 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16411 Do \"help tracepoints\" for info on other tracepoint commands."));
16412   set_cmd_completer (c, location_completer);
16413
16414   add_info ("tracepoints", tracepoints_info, _("\
16415 Status of specified tracepoints (all tracepoints if no argument).\n\
16416 Convenience variable \"$tpnum\" contains the number of the\n\
16417 last tracepoint set."));
16418
16419   add_info_alias ("tp", "tracepoints", 1);
16420
16421   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16422 Delete specified tracepoints.\n\
16423 Arguments are tracepoint numbers, separated by spaces.\n\
16424 No argument means delete all tracepoints."),
16425            &deletelist);
16426   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16427
16428   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16429 Disable specified tracepoints.\n\
16430 Arguments are tracepoint numbers, separated by spaces.\n\
16431 No argument means disable all tracepoints."),
16432            &disablelist);
16433   deprecate_cmd (c, "disable");
16434
16435   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16436 Enable specified tracepoints.\n\
16437 Arguments are tracepoint numbers, separated by spaces.\n\
16438 No argument means enable all tracepoints."),
16439            &enablelist);
16440   deprecate_cmd (c, "enable");
16441
16442   add_com ("passcount", class_trace, trace_pass_command, _("\
16443 Set the passcount for a tracepoint.\n\
16444 The trace will end when the tracepoint has been passed 'count' times.\n\
16445 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16446 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16447
16448   add_prefix_cmd ("save", class_breakpoint, save_command,
16449                   _("Save breakpoint definitions as a script."),
16450                   &save_cmdlist, "save ",
16451                   0/*allow-unknown*/, &cmdlist);
16452
16453   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16454 Save current breakpoint definitions as a script.\n\
16455 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16456 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16457 session to restore them."),
16458                &save_cmdlist);
16459   set_cmd_completer (c, filename_completer);
16460
16461   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16462 Save current tracepoint definitions as a script.\n\
16463 Use the 'source' command in another debug session to restore them."),
16464                &save_cmdlist);
16465   set_cmd_completer (c, filename_completer);
16466
16467   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16468   deprecate_cmd (c, "save tracepoints");
16469
16470   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16471 Breakpoint specific settings\n\
16472 Configure various breakpoint-specific variables such as\n\
16473 pending breakpoint behavior"),
16474                   &breakpoint_set_cmdlist, "set breakpoint ",
16475                   0/*allow-unknown*/, &setlist);
16476   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16477 Breakpoint specific settings\n\
16478 Configure various breakpoint-specific variables such as\n\
16479 pending breakpoint behavior"),
16480                   &breakpoint_show_cmdlist, "show breakpoint ",
16481                   0/*allow-unknown*/, &showlist);
16482
16483   add_setshow_auto_boolean_cmd ("pending", no_class,
16484                                 &pending_break_support, _("\
16485 Set debugger's behavior regarding pending breakpoints."), _("\
16486 Show debugger's behavior regarding pending breakpoints."), _("\
16487 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16488 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16489 an error.  If auto, an unrecognized breakpoint location results in a\n\
16490 user-query to see if a pending breakpoint should be created."),
16491                                 NULL,
16492                                 show_pending_break_support,
16493                                 &breakpoint_set_cmdlist,
16494                                 &breakpoint_show_cmdlist);
16495
16496   pending_break_support = AUTO_BOOLEAN_AUTO;
16497
16498   add_setshow_boolean_cmd ("auto-hw", no_class,
16499                            &automatic_hardware_breakpoints, _("\
16500 Set automatic usage of hardware breakpoints."), _("\
16501 Show automatic usage of hardware breakpoints."), _("\
16502 If set, the debugger will automatically use hardware breakpoints for\n\
16503 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16504 a warning will be emitted for such breakpoints."),
16505                            NULL,
16506                            show_automatic_hardware_breakpoints,
16507                            &breakpoint_set_cmdlist,
16508                            &breakpoint_show_cmdlist);
16509
16510   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16511                                 &always_inserted_mode, _("\
16512 Set mode for inserting breakpoints."), _("\
16513 Show mode for inserting breakpoints."), _("\
16514 When this mode is off, breakpoints are inserted in inferior when it is\n\
16515 resumed, and removed when execution stops.  When this mode is on,\n\
16516 breakpoints are inserted immediately and removed only when the user\n\
16517 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16518 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16519 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16520 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16521 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16522                                 NULL,
16523                                 &show_always_inserted_mode,
16524                                 &breakpoint_set_cmdlist,
16525                                 &breakpoint_show_cmdlist);
16526
16527   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16528                         condition_evaluation_enums,
16529                         &condition_evaluation_mode_1, _("\
16530 Set mode of breakpoint condition evaluation."), _("\
16531 Show mode of breakpoint condition evaluation."), _("\
16532 When this is set to \"host\", breakpoint conditions will be\n\
16533 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16534 breakpoint conditions will be downloaded to the target (if the target\n\
16535 supports such feature) and conditions will be evaluated on the target's side.\n\
16536 If this is set to \"auto\" (default), this will be automatically set to\n\
16537 \"target\" if it supports condition evaluation, otherwise it will\n\
16538 be set to \"gdb\""),
16539                            &set_condition_evaluation_mode,
16540                            &show_condition_evaluation_mode,
16541                            &breakpoint_set_cmdlist,
16542                            &breakpoint_show_cmdlist);
16543
16544   add_com ("break-range", class_breakpoint, break_range_command, _("\
16545 Set a breakpoint for an address range.\n\
16546 break-range START-LOCATION, END-LOCATION\n\
16547 where START-LOCATION and END-LOCATION can be one of the following:\n\
16548   LINENUM, for that line in the current file,\n\
16549   FILE:LINENUM, for that line in that file,\n\
16550   +OFFSET, for that number of lines after the current line\n\
16551            or the start of the range\n\
16552   FUNCTION, for the first line in that function,\n\
16553   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16554   *ADDRESS, for the instruction at that address.\n\
16555 \n\
16556 The breakpoint will stop execution of the inferior whenever it executes\n\
16557 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16558 range (including START-LOCATION and END-LOCATION)."));
16559
16560   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16561 Set a dynamic printf at specified line or function.\n\
16562 dprintf location,format string,arg1,arg2,...\n\
16563 location may be a line number, function name, or \"*\" and an address.\n\
16564 If a line number is specified, break at start of code for that line.\n\
16565 If a function is specified, break at start of code for that function.\n\
16566 "));
16567   set_cmd_completer (c, location_completer);
16568
16569   add_setshow_enum_cmd ("dprintf-style", class_support,
16570                         dprintf_style_enums, &dprintf_style, _("\
16571 Set the style of usage for dynamic printf."), _("\
16572 Show the style of usage for dynamic printf."), _("\
16573 This setting chooses how GDB will do a dynamic printf.\n\
16574 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16575 console, as with the \"printf\" command.\n\
16576 If the value is \"call\", the print is done by calling a function in your\n\
16577 program; by default printf(), but you can choose a different function or\n\
16578 output stream by setting dprintf-function and dprintf-channel."),
16579                         update_dprintf_commands, NULL,
16580                         &setlist, &showlist);
16581
16582   dprintf_function = xstrdup ("printf");
16583   add_setshow_string_cmd ("dprintf-function", class_support,
16584                           &dprintf_function, _("\
16585 Set the function to use for dynamic printf"), _("\
16586 Show the function to use for dynamic printf"), NULL,
16587                           update_dprintf_commands, NULL,
16588                           &setlist, &showlist);
16589
16590   dprintf_channel = xstrdup ("");
16591   add_setshow_string_cmd ("dprintf-channel", class_support,
16592                           &dprintf_channel, _("\
16593 Set the channel to use for dynamic printf"), _("\
16594 Show the channel to use for dynamic printf"), NULL,
16595                           update_dprintf_commands, NULL,
16596                           &setlist, &showlist);
16597
16598   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16599                            &disconnected_dprintf, _("\
16600 Set whether dprintf continues after GDB disconnects."), _("\
16601 Show whether dprintf continues after GDB disconnects."), _("\
16602 Use this to let dprintf commands continue to hit and produce output\n\
16603 even if GDB disconnects or detaches from the target."),
16604                            NULL,
16605                            NULL,
16606                            &setlist, &showlist);
16607
16608   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16609 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16610 (target agent only) This is useful for formatted output in user-defined commands."));
16611
16612   automatic_hardware_breakpoints = 1;
16613
16614   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16615 }