SYMTAB_OBJFILE: New macro.
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2014 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 "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.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 "block.h"
51 #include "solib.h"
52 #include "solist.h"
53 #include "observer.h"
54 #include "memattr.h"
55 #include "ada-lang.h"
56 #include "top.h"
57 #include "valprint.h"
58 #include "jit.h"
59 #include "xml-syscall.h"
60 #include "parser-defs.h"
61 #include "gdb_regex.h"
62 #include "probe.h"
63 #include "cli/cli-utils.h"
64 #include "continuations.h"
65 #include "stack.h"
66 #include "skip.h"
67 #include "ax-gdb.h"
68 #include "dummy-frame.h"
69
70 #include "format.h"
71
72 /* readline include files */
73 #include "readline/readline.h"
74 #include "readline/history.h"
75
76 /* readline defines this.  */
77 #undef savestring
78
79 #include "mi/mi-common.h"
80 #include "extension.h"
81
82 /* Enums for exception-handling support.  */
83 enum exception_event_kind
84 {
85   EX_EVENT_THROW,
86   EX_EVENT_RETHROW,
87   EX_EVENT_CATCH
88 };
89
90 /* Prototypes for local functions.  */
91
92 static void enable_delete_command (char *, int);
93
94 static void enable_once_command (char *, int);
95
96 static void enable_count_command (char *, int);
97
98 static void disable_command (char *, int);
99
100 static void enable_command (char *, int);
101
102 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
103                                                       void *),
104                                     void *);
105
106 static void ignore_command (char *, int);
107
108 static int breakpoint_re_set_one (void *);
109
110 static void breakpoint_re_set_default (struct breakpoint *);
111
112 static void create_sals_from_address_default (char **,
113                                               struct linespec_result *,
114                                               enum bptype, char *,
115                                               char **);
116
117 static void create_breakpoints_sal_default (struct gdbarch *,
118                                             struct linespec_result *,
119                                             char *, char *, enum bptype,
120                                             enum bpdisp, int, int,
121                                             int,
122                                             const struct breakpoint_ops *,
123                                             int, int, int, unsigned);
124
125 static void decode_linespec_default (struct breakpoint *, char **,
126                                      struct symtabs_and_lines *);
127
128 static void clear_command (char *, int);
129
130 static void catch_command (char *, int);
131
132 static int can_use_hardware_watchpoint (struct value *);
133
134 static void break_command_1 (char *, int, int);
135
136 static void mention (struct breakpoint *);
137
138 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
139                                                                enum bptype,
140                                                                const struct breakpoint_ops *);
141 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
142                                                        const struct symtab_and_line *);
143
144 /* This function is used in gdbtk sources and thus can not be made
145    static.  */
146 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
147                                        struct symtab_and_line,
148                                        enum bptype,
149                                        const struct breakpoint_ops *);
150
151 static struct breakpoint *
152   momentary_breakpoint_from_master (struct breakpoint *orig,
153                                     enum bptype type,
154                                     const struct breakpoint_ops *ops,
155                                     int loc_enabled);
156
157 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
158
159 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
160                                             CORE_ADDR bpaddr,
161                                             enum bptype bptype);
162
163 static void describe_other_breakpoints (struct gdbarch *,
164                                         struct program_space *, CORE_ADDR,
165                                         struct obj_section *, int);
166
167 static int watchpoint_locations_match (struct bp_location *loc1,
168                                        struct bp_location *loc2);
169
170 static int breakpoint_location_address_match (struct bp_location *bl,
171                                               struct address_space *aspace,
172                                               CORE_ADDR addr);
173
174 static void breakpoints_info (char *, int);
175
176 static void watchpoints_info (char *, int);
177
178 static int breakpoint_1 (char *, int, 
179                          int (*) (const struct breakpoint *));
180
181 static int breakpoint_cond_eval (void *);
182
183 static void cleanup_executing_breakpoints (void *);
184
185 static void commands_command (char *, int);
186
187 static void condition_command (char *, int);
188
189 typedef enum
190   {
191     mark_inserted,
192     mark_uninserted
193   }
194 insertion_state_t;
195
196 static int remove_breakpoint (struct bp_location *, insertion_state_t);
197 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
198
199 static enum print_stop_action print_bp_stop_message (bpstat bs);
200
201 static int watchpoint_check (void *);
202
203 static void maintenance_info_breakpoints (char *, int);
204
205 static int hw_breakpoint_used_count (void);
206
207 static int hw_watchpoint_use_count (struct breakpoint *);
208
209 static int hw_watchpoint_used_count_others (struct breakpoint *except,
210                                             enum bptype type,
211                                             int *other_type_used);
212
213 static void hbreak_command (char *, int);
214
215 static void thbreak_command (char *, int);
216
217 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
218                                     int count);
219
220 static void stop_command (char *arg, int from_tty);
221
222 static void stopin_command (char *arg, int from_tty);
223
224 static void stopat_command (char *arg, int from_tty);
225
226 static void tcatch_command (char *arg, int from_tty);
227
228 static void free_bp_location (struct bp_location *loc);
229 static void incref_bp_location (struct bp_location *loc);
230 static void decref_bp_location (struct bp_location **loc);
231
232 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
233
234 /* update_global_location_list's modes of operation wrt to whether to
235    insert locations now.  */
236 enum ugll_insert_mode
237 {
238   /* Don't insert any breakpoint locations into the inferior, only
239      remove already-inserted locations that no longer should be
240      inserted.  Functions that delete a breakpoint or breakpoints
241      should specify this mode, so that deleting a breakpoint doesn't
242      have the side effect of inserting the locations of other
243      breakpoints that are marked not-inserted, but should_be_inserted
244      returns true on them.
245
246      This behavior is useful is situations close to tear-down -- e.g.,
247      after an exec, while the target still has execution, but
248      breakpoint shadows of the previous executable image should *NOT*
249      be restored to the new image; or before detaching, where the
250      target still has execution and wants to delete breakpoints from
251      GDB's lists, and all breakpoints had already been removed from
252      the inferior.  */
253   UGLL_DONT_INSERT,
254
255   /* May insert breakpoints iff breakpoints_should_be_inserted_now
256      claims breakpoints should be inserted now.  */
257   UGLL_MAY_INSERT,
258
259   /* Insert locations now, irrespective of
260      breakpoints_should_be_inserted_now.  E.g., say all threads are
261      stopped right now, and the user did "continue".  We need to
262      insert breakpoints _before_ resuming the target, but
263      UGLL_MAY_INSERT wouldn't insert them, because
264      breakpoints_should_be_inserted_now returns false at that point,
265      as no thread is running yet.  */
266   UGLL_INSERT
267 };
268
269 static void update_global_location_list (enum ugll_insert_mode);
270
271 static void update_global_location_list_nothrow (enum ugll_insert_mode);
272
273 static int is_hardware_watchpoint (const struct breakpoint *bpt);
274
275 static void insert_breakpoint_locations (void);
276
277 static int syscall_catchpoint_p (struct breakpoint *b);
278
279 static void tracepoints_info (char *, int);
280
281 static void delete_trace_command (char *, int);
282
283 static void enable_trace_command (char *, int);
284
285 static void disable_trace_command (char *, int);
286
287 static void trace_pass_command (char *, int);
288
289 static void set_tracepoint_count (int num);
290
291 static int is_masked_watchpoint (const struct breakpoint *b);
292
293 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
294
295 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
296    otherwise.  */
297
298 static int strace_marker_p (struct breakpoint *b);
299
300 /* The abstract base class all breakpoint_ops structures inherit
301    from.  */
302 struct breakpoint_ops base_breakpoint_ops;
303
304 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
305    that are implemented on top of software or hardware breakpoints
306    (user breakpoints, internal and momentary breakpoints, etc.).  */
307 static struct breakpoint_ops bkpt_base_breakpoint_ops;
308
309 /* Internal breakpoints class type.  */
310 static struct breakpoint_ops internal_breakpoint_ops;
311
312 /* Momentary breakpoints class type.  */
313 static struct breakpoint_ops momentary_breakpoint_ops;
314
315 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
316 static struct breakpoint_ops longjmp_breakpoint_ops;
317
318 /* The breakpoint_ops structure to be used in regular user created
319    breakpoints.  */
320 struct breakpoint_ops bkpt_breakpoint_ops;
321
322 /* Breakpoints set on probes.  */
323 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
324
325 /* Dynamic printf class type.  */
326 struct breakpoint_ops dprintf_breakpoint_ops;
327
328 /* The style in which to perform a dynamic printf.  This is a user
329    option because different output options have different tradeoffs;
330    if GDB does the printing, there is better error handling if there
331    is a problem with any of the arguments, but using an inferior
332    function lets you have special-purpose printers and sending of
333    output to the same place as compiled-in print functions.  */
334
335 static const char dprintf_style_gdb[] = "gdb";
336 static const char dprintf_style_call[] = "call";
337 static const char dprintf_style_agent[] = "agent";
338 static const char *const dprintf_style_enums[] = {
339   dprintf_style_gdb,
340   dprintf_style_call,
341   dprintf_style_agent,
342   NULL
343 };
344 static const char *dprintf_style = dprintf_style_gdb;
345
346 /* The function to use for dynamic printf if the preferred style is to
347    call into the inferior.  The value is simply a string that is
348    copied into the command, so it can be anything that GDB can
349    evaluate to a callable address, not necessarily a function name.  */
350
351 static char *dprintf_function = "";
352
353 /* The channel to use for dynamic printf if the preferred style is to
354    call into the inferior; if a nonempty string, it will be passed to
355    the call as the first argument, with the format string as the
356    second.  As with the dprintf function, this can be anything that
357    GDB knows how to evaluate, so in addition to common choices like
358    "stderr", this could be an app-specific expression like
359    "mystreams[curlogger]".  */
360
361 static char *dprintf_channel = "";
362
363 /* True if dprintf commands should continue to operate even if GDB
364    has disconnected.  */
365 static int disconnected_dprintf = 1;
366
367 /* A reference-counted struct command_line.  This lets multiple
368    breakpoints share a single command list.  */
369 struct counted_command_line
370 {
371   /* The reference count.  */
372   int refc;
373
374   /* The command list.  */
375   struct command_line *commands;
376 };
377
378 struct command_line *
379 breakpoint_commands (struct breakpoint *b)
380 {
381   return b->commands ? b->commands->commands : NULL;
382 }
383
384 /* Flag indicating that a command has proceeded the inferior past the
385    current breakpoint.  */
386
387 static int breakpoint_proceeded;
388
389 const char *
390 bpdisp_text (enum bpdisp disp)
391 {
392   /* NOTE: the following values are a part of MI protocol and
393      represent values of 'disp' field returned when inferior stops at
394      a breakpoint.  */
395   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
396
397   return bpdisps[(int) disp];
398 }
399
400 /* Prototypes for exported functions.  */
401 /* If FALSE, gdb will not use hardware support for watchpoints, even
402    if such is available.  */
403 static int can_use_hw_watchpoints;
404
405 static void
406 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
407                              struct cmd_list_element *c,
408                              const char *value)
409 {
410   fprintf_filtered (file,
411                     _("Debugger's willingness to use "
412                       "watchpoint hardware is %s.\n"),
413                     value);
414 }
415
416 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
417    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
418    for unrecognized breakpoint locations.
419    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
420 static enum auto_boolean pending_break_support;
421 static void
422 show_pending_break_support (struct ui_file *file, int from_tty,
423                             struct cmd_list_element *c,
424                             const char *value)
425 {
426   fprintf_filtered (file,
427                     _("Debugger's behavior regarding "
428                       "pending breakpoints is %s.\n"),
429                     value);
430 }
431
432 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
433    set with "break" but falling in read-only memory.
434    If 0, gdb will warn about such breakpoints, but won't automatically
435    use hardware breakpoints.  */
436 static int automatic_hardware_breakpoints;
437 static void
438 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
439                                      struct cmd_list_element *c,
440                                      const char *value)
441 {
442   fprintf_filtered (file,
443                     _("Automatic usage of hardware breakpoints is %s.\n"),
444                     value);
445 }
446
447 /* If on, GDB keeps breakpoints inserted even if the inferior is
448    stopped, and immediately inserts any new breakpoints as soon as
449    they're created.  If off (default), GDB keeps breakpoints off of
450    the target as long as possible.  That is, it delays inserting
451    breakpoints until the next resume, and removes them again when the
452    target fully stops.  This is a bit safer in case GDB crashes while
453    processing user input.  */
454 static int always_inserted_mode = 0;
455
456 static void
457 show_always_inserted_mode (struct ui_file *file, int from_tty,
458                      struct cmd_list_element *c, const char *value)
459 {
460   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
461                     value);
462 }
463
464 /* See breakpoint.h.  */
465
466 int
467 breakpoints_should_be_inserted_now (void)
468 {
469   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
470     {
471       /* If breakpoints are global, they should be inserted even if no
472          thread under gdb's control is running, or even if there are
473          no threads under GDB's control yet.  */
474       return 1;
475     }
476   else if (target_has_execution)
477     {
478       if (always_inserted_mode)
479         {
480           /* The user wants breakpoints inserted even if all threads
481              are stopped.  */
482           return 1;
483         }
484
485       if (threads_are_executing ())
486         return 1;
487     }
488   return 0;
489 }
490
491 static const char condition_evaluation_both[] = "host or target";
492
493 /* Modes for breakpoint condition evaluation.  */
494 static const char condition_evaluation_auto[] = "auto";
495 static const char condition_evaluation_host[] = "host";
496 static const char condition_evaluation_target[] = "target";
497 static const char *const condition_evaluation_enums[] = {
498   condition_evaluation_auto,
499   condition_evaluation_host,
500   condition_evaluation_target,
501   NULL
502 };
503
504 /* Global that holds the current mode for breakpoint condition evaluation.  */
505 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
506
507 /* Global that we use to display information to the user (gets its value from
508    condition_evaluation_mode_1.  */
509 static const char *condition_evaluation_mode = condition_evaluation_auto;
510
511 /* Translate a condition evaluation mode MODE into either "host"
512    or "target".  This is used mostly to translate from "auto" to the
513    real setting that is being used.  It returns the translated
514    evaluation mode.  */
515
516 static const char *
517 translate_condition_evaluation_mode (const char *mode)
518 {
519   if (mode == condition_evaluation_auto)
520     {
521       if (target_supports_evaluation_of_breakpoint_conditions ())
522         return condition_evaluation_target;
523       else
524         return condition_evaluation_host;
525     }
526   else
527     return mode;
528 }
529
530 /* Discovers what condition_evaluation_auto translates to.  */
531
532 static const char *
533 breakpoint_condition_evaluation_mode (void)
534 {
535   return translate_condition_evaluation_mode (condition_evaluation_mode);
536 }
537
538 /* Return true if GDB should evaluate breakpoint conditions or false
539    otherwise.  */
540
541 static int
542 gdb_evaluates_breakpoint_condition_p (void)
543 {
544   const char *mode = breakpoint_condition_evaluation_mode ();
545
546   return (mode == condition_evaluation_host);
547 }
548
549 void _initialize_breakpoint (void);
550
551 /* Are we executing breakpoint commands?  */
552 static int executing_breakpoint_commands;
553
554 /* Are overlay event breakpoints enabled? */
555 static int overlay_events_enabled;
556
557 /* See description in breakpoint.h. */
558 int target_exact_watchpoints = 0;
559
560 /* Walk the following statement or block through all breakpoints.
561    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
562    current breakpoint.  */
563
564 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
565
566 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
567         for (B = breakpoint_chain;      \
568              B ? (TMP=B->next, 1): 0;   \
569              B = TMP)
570
571 /* Similar iterator for the low-level breakpoints.  SAFE variant is
572    not provided so update_global_location_list must not be called
573    while executing the block of ALL_BP_LOCATIONS.  */
574
575 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
576         for (BP_TMP = bp_location;                                      \
577              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
578              BP_TMP++)
579
580 /* Iterates through locations with address ADDRESS for the currently selected
581    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
582    to where the loop should start from.
583    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
584    appropriate location to start with.  */
585
586 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
587         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
588              BP_LOCP_TMP = BP_LOCP_START;                               \
589              BP_LOCP_START                                              \
590              && (BP_LOCP_TMP < bp_location + bp_location_count          \
591              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
592              BP_LOCP_TMP++)
593
594 /* Iterator for tracepoints only.  */
595
596 #define ALL_TRACEPOINTS(B)  \
597   for (B = breakpoint_chain; B; B = B->next)  \
598     if (is_tracepoint (B))
599
600 /* Chains of all breakpoints defined.  */
601
602 struct breakpoint *breakpoint_chain;
603
604 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
605
606 static struct bp_location **bp_location;
607
608 /* Number of elements of BP_LOCATION.  */
609
610 static unsigned bp_location_count;
611
612 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
613    ADDRESS for the current elements of BP_LOCATION which get a valid
614    result from bp_location_has_shadow.  You can use it for roughly
615    limiting the subrange of BP_LOCATION to scan for shadow bytes for
616    an address you need to read.  */
617
618 static CORE_ADDR bp_location_placed_address_before_address_max;
619
620 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
621    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
622    BP_LOCATION which get a valid result from bp_location_has_shadow.
623    You can use it for roughly limiting the subrange of BP_LOCATION to
624    scan for shadow bytes for an address you need to read.  */
625
626 static CORE_ADDR bp_location_shadow_len_after_address_max;
627
628 /* The locations that no longer correspond to any breakpoint, unlinked
629    from bp_location array, but for which a hit may still be reported
630    by a target.  */
631 VEC(bp_location_p) *moribund_locations = NULL;
632
633 /* Number of last breakpoint made.  */
634
635 static int breakpoint_count;
636
637 /* The value of `breakpoint_count' before the last command that
638    created breakpoints.  If the last (break-like) command created more
639    than one breakpoint, then the difference between BREAKPOINT_COUNT
640    and PREV_BREAKPOINT_COUNT is more than one.  */
641 static int prev_breakpoint_count;
642
643 /* Number of last tracepoint made.  */
644
645 static int tracepoint_count;
646
647 static struct cmd_list_element *breakpoint_set_cmdlist;
648 static struct cmd_list_element *breakpoint_show_cmdlist;
649 struct cmd_list_element *save_cmdlist;
650
651 /* Return whether a breakpoint is an active enabled breakpoint.  */
652 static int
653 breakpoint_enabled (struct breakpoint *b)
654 {
655   return (b->enable_state == bp_enabled);
656 }
657
658 /* Set breakpoint count to NUM.  */
659
660 static void
661 set_breakpoint_count (int num)
662 {
663   prev_breakpoint_count = breakpoint_count;
664   breakpoint_count = num;
665   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
666 }
667
668 /* Used by `start_rbreak_breakpoints' below, to record the current
669    breakpoint count before "rbreak" creates any breakpoint.  */
670 static int rbreak_start_breakpoint_count;
671
672 /* Called at the start an "rbreak" command to record the first
673    breakpoint made.  */
674
675 void
676 start_rbreak_breakpoints (void)
677 {
678   rbreak_start_breakpoint_count = breakpoint_count;
679 }
680
681 /* Called at the end of an "rbreak" command to record the last
682    breakpoint made.  */
683
684 void
685 end_rbreak_breakpoints (void)
686 {
687   prev_breakpoint_count = rbreak_start_breakpoint_count;
688 }
689
690 /* Used in run_command to zero the hit count when a new run starts.  */
691
692 void
693 clear_breakpoint_hit_counts (void)
694 {
695   struct breakpoint *b;
696
697   ALL_BREAKPOINTS (b)
698     b->hit_count = 0;
699 }
700
701 /* Allocate a new counted_command_line with reference count of 1.
702    The new structure owns COMMANDS.  */
703
704 static struct counted_command_line *
705 alloc_counted_command_line (struct command_line *commands)
706 {
707   struct counted_command_line *result
708     = xmalloc (sizeof (struct counted_command_line));
709
710   result->refc = 1;
711   result->commands = commands;
712   return result;
713 }
714
715 /* Increment reference count.  This does nothing if CMD is NULL.  */
716
717 static void
718 incref_counted_command_line (struct counted_command_line *cmd)
719 {
720   if (cmd)
721     ++cmd->refc;
722 }
723
724 /* Decrement reference count.  If the reference count reaches 0,
725    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
726    nothing if *CMDP is NULL.  */
727
728 static void
729 decref_counted_command_line (struct counted_command_line **cmdp)
730 {
731   if (*cmdp)
732     {
733       if (--(*cmdp)->refc == 0)
734         {
735           free_command_lines (&(*cmdp)->commands);
736           xfree (*cmdp);
737         }
738       *cmdp = NULL;
739     }
740 }
741
742 /* A cleanup function that calls decref_counted_command_line.  */
743
744 static void
745 do_cleanup_counted_command_line (void *arg)
746 {
747   decref_counted_command_line (arg);
748 }
749
750 /* Create a cleanup that calls decref_counted_command_line on the
751    argument.  */
752
753 static struct cleanup *
754 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
755 {
756   return make_cleanup (do_cleanup_counted_command_line, cmdp);
757 }
758
759 \f
760 /* Return the breakpoint with the specified number, or NULL
761    if the number does not refer to an existing breakpoint.  */
762
763 struct breakpoint *
764 get_breakpoint (int num)
765 {
766   struct breakpoint *b;
767
768   ALL_BREAKPOINTS (b)
769     if (b->number == num)
770       return b;
771   
772   return NULL;
773 }
774
775 \f
776
777 /* Mark locations as "conditions have changed" in case the target supports
778    evaluating conditions on its side.  */
779
780 static void
781 mark_breakpoint_modified (struct breakpoint *b)
782 {
783   struct bp_location *loc;
784
785   /* This is only meaningful if the target is
786      evaluating conditions and if the user has
787      opted for condition evaluation on the target's
788      side.  */
789   if (gdb_evaluates_breakpoint_condition_p ()
790       || !target_supports_evaluation_of_breakpoint_conditions ())
791     return;
792
793   if (!is_breakpoint (b))
794     return;
795
796   for (loc = b->loc; loc; loc = loc->next)
797     loc->condition_changed = condition_modified;
798 }
799
800 /* Mark location as "conditions have changed" in case the target supports
801    evaluating conditions on its side.  */
802
803 static void
804 mark_breakpoint_location_modified (struct bp_location *loc)
805 {
806   /* This is only meaningful if the target is
807      evaluating conditions and if the user has
808      opted for condition evaluation on the target's
809      side.  */
810   if (gdb_evaluates_breakpoint_condition_p ()
811       || !target_supports_evaluation_of_breakpoint_conditions ())
812
813     return;
814
815   if (!is_breakpoint (loc->owner))
816     return;
817
818   loc->condition_changed = condition_modified;
819 }
820
821 /* Sets the condition-evaluation mode using the static global
822    condition_evaluation_mode.  */
823
824 static void
825 set_condition_evaluation_mode (char *args, int from_tty,
826                                struct cmd_list_element *c)
827 {
828   const char *old_mode, *new_mode;
829
830   if ((condition_evaluation_mode_1 == condition_evaluation_target)
831       && !target_supports_evaluation_of_breakpoint_conditions ())
832     {
833       condition_evaluation_mode_1 = condition_evaluation_mode;
834       warning (_("Target does not support breakpoint condition evaluation.\n"
835                  "Using host evaluation mode instead."));
836       return;
837     }
838
839   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
840   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
841
842   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
843      settings was "auto".  */
844   condition_evaluation_mode = condition_evaluation_mode_1;
845
846   /* Only update the mode if the user picked a different one.  */
847   if (new_mode != old_mode)
848     {
849       struct bp_location *loc, **loc_tmp;
850       /* If the user switched to a different evaluation mode, we
851          need to synch the changes with the target as follows:
852
853          "host" -> "target": Send all (valid) conditions to the target.
854          "target" -> "host": Remove all the conditions from the target.
855       */
856
857       if (new_mode == condition_evaluation_target)
858         {
859           /* Mark everything modified and synch conditions with the
860              target.  */
861           ALL_BP_LOCATIONS (loc, loc_tmp)
862             mark_breakpoint_location_modified (loc);
863         }
864       else
865         {
866           /* Manually mark non-duplicate locations to synch conditions
867              with the target.  We do this to remove all the conditions the
868              target knows about.  */
869           ALL_BP_LOCATIONS (loc, loc_tmp)
870             if (is_breakpoint (loc->owner) && loc->inserted)
871               loc->needs_update = 1;
872         }
873
874       /* Do the update.  */
875       update_global_location_list (UGLL_MAY_INSERT);
876     }
877
878   return;
879 }
880
881 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
882    what "auto" is translating to.  */
883
884 static void
885 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
886                                 struct cmd_list_element *c, const char *value)
887 {
888   if (condition_evaluation_mode == condition_evaluation_auto)
889     fprintf_filtered (file,
890                       _("Breakpoint condition evaluation "
891                         "mode is %s (currently %s).\n"),
892                       value,
893                       breakpoint_condition_evaluation_mode ());
894   else
895     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
896                       value);
897 }
898
899 /* A comparison function for bp_location AP and BP that is used by
900    bsearch.  This comparison function only cares about addresses, unlike
901    the more general bp_location_compare function.  */
902
903 static int
904 bp_location_compare_addrs (const void *ap, const void *bp)
905 {
906   struct bp_location *a = *(void **) ap;
907   struct bp_location *b = *(void **) bp;
908
909   if (a->address == b->address)
910     return 0;
911   else
912     return ((a->address > b->address) - (a->address < b->address));
913 }
914
915 /* Helper function to skip all bp_locations with addresses
916    less than ADDRESS.  It returns the first bp_location that
917    is greater than or equal to ADDRESS.  If none is found, just
918    return NULL.  */
919
920 static struct bp_location **
921 get_first_locp_gte_addr (CORE_ADDR address)
922 {
923   struct bp_location dummy_loc;
924   struct bp_location *dummy_locp = &dummy_loc;
925   struct bp_location **locp_found = NULL;
926
927   /* Initialize the dummy location's address field.  */
928   memset (&dummy_loc, 0, sizeof (struct bp_location));
929   dummy_loc.address = address;
930
931   /* Find a close match to the first location at ADDRESS.  */
932   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
933                         sizeof (struct bp_location **),
934                         bp_location_compare_addrs);
935
936   /* Nothing was found, nothing left to do.  */
937   if (locp_found == NULL)
938     return NULL;
939
940   /* We may have found a location that is at ADDRESS but is not the first in the
941      location's list.  Go backwards (if possible) and locate the first one.  */
942   while ((locp_found - 1) >= bp_location
943          && (*(locp_found - 1))->address == address)
944     locp_found--;
945
946   return locp_found;
947 }
948
949 void
950 set_breakpoint_condition (struct breakpoint *b, char *exp,
951                           int from_tty)
952 {
953   xfree (b->cond_string);
954   b->cond_string = NULL;
955
956   if (is_watchpoint (b))
957     {
958       struct watchpoint *w = (struct watchpoint *) b;
959
960       xfree (w->cond_exp);
961       w->cond_exp = NULL;
962     }
963   else
964     {
965       struct bp_location *loc;
966
967       for (loc = b->loc; loc; loc = loc->next)
968         {
969           xfree (loc->cond);
970           loc->cond = NULL;
971
972           /* No need to free the condition agent expression
973              bytecode (if we have one).  We will handle this
974              when we go through update_global_location_list.  */
975         }
976     }
977
978   if (*exp == 0)
979     {
980       if (from_tty)
981         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
982     }
983   else
984     {
985       const char *arg = exp;
986
987       /* I don't know if it matters whether this is the string the user
988          typed in or the decompiled expression.  */
989       b->cond_string = xstrdup (arg);
990       b->condition_not_parsed = 0;
991
992       if (is_watchpoint (b))
993         {
994           struct watchpoint *w = (struct watchpoint *) b;
995
996           innermost_block = NULL;
997           arg = exp;
998           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
999           if (*arg)
1000             error (_("Junk at end of expression"));
1001           w->cond_exp_valid_block = innermost_block;
1002         }
1003       else
1004         {
1005           struct bp_location *loc;
1006
1007           for (loc = b->loc; loc; loc = loc->next)
1008             {
1009               arg = exp;
1010               loc->cond =
1011                 parse_exp_1 (&arg, loc->address,
1012                              block_for_pc (loc->address), 0);
1013               if (*arg)
1014                 error (_("Junk at end of expression"));
1015             }
1016         }
1017     }
1018   mark_breakpoint_modified (b);
1019
1020   observer_notify_breakpoint_modified (b);
1021 }
1022
1023 /* Completion for the "condition" command.  */
1024
1025 static VEC (char_ptr) *
1026 condition_completer (struct cmd_list_element *cmd,
1027                      const char *text, const char *word)
1028 {
1029   const char *space;
1030
1031   text = skip_spaces_const (text);
1032   space = skip_to_space_const (text);
1033   if (*space == '\0')
1034     {
1035       int len;
1036       struct breakpoint *b;
1037       VEC (char_ptr) *result = NULL;
1038
1039       if (text[0] == '$')
1040         {
1041           /* We don't support completion of history indices.  */
1042           if (isdigit (text[1]))
1043             return NULL;
1044           return complete_internalvar (&text[1]);
1045         }
1046
1047       /* We're completing the breakpoint number.  */
1048       len = strlen (text);
1049
1050       ALL_BREAKPOINTS (b)
1051         {
1052           char number[50];
1053
1054           xsnprintf (number, sizeof (number), "%d", b->number);
1055
1056           if (strncmp (number, text, len) == 0)
1057             VEC_safe_push (char_ptr, result, xstrdup (number));
1058         }
1059
1060       return result;
1061     }
1062
1063   /* We're completing the expression part.  */
1064   text = skip_spaces_const (space);
1065   return expression_completer (cmd, text, word);
1066 }
1067
1068 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1069
1070 static void
1071 condition_command (char *arg, int from_tty)
1072 {
1073   struct breakpoint *b;
1074   char *p;
1075   int bnum;
1076
1077   if (arg == 0)
1078     error_no_arg (_("breakpoint number"));
1079
1080   p = arg;
1081   bnum = get_number (&p);
1082   if (bnum == 0)
1083     error (_("Bad breakpoint argument: '%s'"), arg);
1084
1085   ALL_BREAKPOINTS (b)
1086     if (b->number == bnum)
1087       {
1088         /* Check if this breakpoint has a "stop" method implemented in an
1089            extension language.  This method and conditions entered into GDB
1090            from the CLI are mutually exclusive.  */
1091         const struct extension_language_defn *extlang
1092           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1093
1094         if (extlang != NULL)
1095           {
1096             error (_("Only one stop condition allowed.  There is currently"
1097                      " a %s stop condition defined for this breakpoint."),
1098                    ext_lang_capitalized_name (extlang));
1099           }
1100         set_breakpoint_condition (b, p, from_tty);
1101
1102         if (is_breakpoint (b))
1103           update_global_location_list (UGLL_MAY_INSERT);
1104
1105         return;
1106       }
1107
1108   error (_("No breakpoint number %d."), bnum);
1109 }
1110
1111 /* Check that COMMAND do not contain commands that are suitable
1112    only for tracepoints and not suitable for ordinary breakpoints.
1113    Throw if any such commands is found.  */
1114
1115 static void
1116 check_no_tracepoint_commands (struct command_line *commands)
1117 {
1118   struct command_line *c;
1119
1120   for (c = commands; c; c = c->next)
1121     {
1122       int i;
1123
1124       if (c->control_type == while_stepping_control)
1125         error (_("The 'while-stepping' command can "
1126                  "only be used for tracepoints"));
1127
1128       for (i = 0; i < c->body_count; ++i)
1129         check_no_tracepoint_commands ((c->body_list)[i]);
1130
1131       /* Not that command parsing removes leading whitespace and comment
1132          lines and also empty lines.  So, we only need to check for
1133          command directly.  */
1134       if (strstr (c->line, "collect ") == c->line)
1135         error (_("The 'collect' command can only be used for tracepoints"));
1136
1137       if (strstr (c->line, "teval ") == c->line)
1138         error (_("The 'teval' command can only be used for tracepoints"));
1139     }
1140 }
1141
1142 /* Encapsulate tests for different types of tracepoints.  */
1143
1144 static int
1145 is_tracepoint_type (enum bptype type)
1146 {
1147   return (type == bp_tracepoint
1148           || type == bp_fast_tracepoint
1149           || type == bp_static_tracepoint);
1150 }
1151
1152 int
1153 is_tracepoint (const struct breakpoint *b)
1154 {
1155   return is_tracepoint_type (b->type);
1156 }
1157
1158 /* A helper function that validates that COMMANDS are valid for a
1159    breakpoint.  This function will throw an exception if a problem is
1160    found.  */
1161
1162 static void
1163 validate_commands_for_breakpoint (struct breakpoint *b,
1164                                   struct command_line *commands)
1165 {
1166   if (is_tracepoint (b))
1167     {
1168       struct tracepoint *t = (struct tracepoint *) b;
1169       struct command_line *c;
1170       struct command_line *while_stepping = 0;
1171
1172       /* Reset the while-stepping step count.  The previous commands
1173          might have included a while-stepping action, while the new
1174          ones might not.  */
1175       t->step_count = 0;
1176
1177       /* We need to verify that each top-level element of commands is
1178          valid for tracepoints, that there's at most one
1179          while-stepping element, and that the while-stepping's body
1180          has valid tracing commands excluding nested while-stepping.
1181          We also need to validate the tracepoint action line in the
1182          context of the tracepoint --- validate_actionline actually
1183          has side effects, like setting the tracepoint's
1184          while-stepping STEP_COUNT, in addition to checking if the
1185          collect/teval actions parse and make sense in the
1186          tracepoint's context.  */
1187       for (c = commands; c; c = c->next)
1188         {
1189           if (c->control_type == while_stepping_control)
1190             {
1191               if (b->type == bp_fast_tracepoint)
1192                 error (_("The 'while-stepping' command "
1193                          "cannot be used for fast tracepoint"));
1194               else if (b->type == bp_static_tracepoint)
1195                 error (_("The 'while-stepping' command "
1196                          "cannot be used for static tracepoint"));
1197
1198               if (while_stepping)
1199                 error (_("The 'while-stepping' command "
1200                          "can be used only once"));
1201               else
1202                 while_stepping = c;
1203             }
1204
1205           validate_actionline (c->line, b);
1206         }
1207       if (while_stepping)
1208         {
1209           struct command_line *c2;
1210
1211           gdb_assert (while_stepping->body_count == 1);
1212           c2 = while_stepping->body_list[0];
1213           for (; c2; c2 = c2->next)
1214             {
1215               if (c2->control_type == while_stepping_control)
1216                 error (_("The 'while-stepping' command cannot be nested"));
1217             }
1218         }
1219     }
1220   else
1221     {
1222       check_no_tracepoint_commands (commands);
1223     }
1224 }
1225
1226 /* Return a vector of all the static tracepoints set at ADDR.  The
1227    caller is responsible for releasing the vector.  */
1228
1229 VEC(breakpoint_p) *
1230 static_tracepoints_here (CORE_ADDR addr)
1231 {
1232   struct breakpoint *b;
1233   VEC(breakpoint_p) *found = 0;
1234   struct bp_location *loc;
1235
1236   ALL_BREAKPOINTS (b)
1237     if (b->type == bp_static_tracepoint)
1238       {
1239         for (loc = b->loc; loc; loc = loc->next)
1240           if (loc->address == addr)
1241             VEC_safe_push(breakpoint_p, found, b);
1242       }
1243
1244   return found;
1245 }
1246
1247 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1248    validate that only allowed commands are included.  */
1249
1250 void
1251 breakpoint_set_commands (struct breakpoint *b, 
1252                          struct command_line *commands)
1253 {
1254   validate_commands_for_breakpoint (b, commands);
1255
1256   decref_counted_command_line (&b->commands);
1257   b->commands = alloc_counted_command_line (commands);
1258   observer_notify_breakpoint_modified (b);
1259 }
1260
1261 /* Set the internal `silent' flag on the breakpoint.  Note that this
1262    is not the same as the "silent" that may appear in the breakpoint's
1263    commands.  */
1264
1265 void
1266 breakpoint_set_silent (struct breakpoint *b, int silent)
1267 {
1268   int old_silent = b->silent;
1269
1270   b->silent = silent;
1271   if (old_silent != silent)
1272     observer_notify_breakpoint_modified (b);
1273 }
1274
1275 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1276    breakpoint work for any thread.  */
1277
1278 void
1279 breakpoint_set_thread (struct breakpoint *b, int thread)
1280 {
1281   int old_thread = b->thread;
1282
1283   b->thread = thread;
1284   if (old_thread != thread)
1285     observer_notify_breakpoint_modified (b);
1286 }
1287
1288 /* Set the task for this breakpoint.  If TASK is 0, make the
1289    breakpoint work for any task.  */
1290
1291 void
1292 breakpoint_set_task (struct breakpoint *b, int task)
1293 {
1294   int old_task = b->task;
1295
1296   b->task = task;
1297   if (old_task != task)
1298     observer_notify_breakpoint_modified (b);
1299 }
1300
1301 void
1302 check_tracepoint_command (char *line, void *closure)
1303 {
1304   struct breakpoint *b = closure;
1305
1306   validate_actionline (line, b);
1307 }
1308
1309 /* A structure used to pass information through
1310    map_breakpoint_numbers.  */
1311
1312 struct commands_info
1313 {
1314   /* True if the command was typed at a tty.  */
1315   int from_tty;
1316
1317   /* The breakpoint range spec.  */
1318   char *arg;
1319
1320   /* Non-NULL if the body of the commands are being read from this
1321      already-parsed command.  */
1322   struct command_line *control;
1323
1324   /* The command lines read from the user, or NULL if they have not
1325      yet been read.  */
1326   struct counted_command_line *cmd;
1327 };
1328
1329 /* A callback for map_breakpoint_numbers that sets the commands for
1330    commands_command.  */
1331
1332 static void
1333 do_map_commands_command (struct breakpoint *b, void *data)
1334 {
1335   struct commands_info *info = data;
1336
1337   if (info->cmd == NULL)
1338     {
1339       struct command_line *l;
1340
1341       if (info->control != NULL)
1342         l = copy_command_lines (info->control->body_list[0]);
1343       else
1344         {
1345           struct cleanup *old_chain;
1346           char *str;
1347
1348           str = xstrprintf (_("Type commands for breakpoint(s) "
1349                               "%s, one per line."),
1350                             info->arg);
1351
1352           old_chain = make_cleanup (xfree, str);
1353
1354           l = read_command_lines (str,
1355                                   info->from_tty, 1,
1356                                   (is_tracepoint (b)
1357                                    ? check_tracepoint_command : 0),
1358                                   b);
1359
1360           do_cleanups (old_chain);
1361         }
1362
1363       info->cmd = alloc_counted_command_line (l);
1364     }
1365
1366   /* If a breakpoint was on the list more than once, we don't need to
1367      do anything.  */
1368   if (b->commands != info->cmd)
1369     {
1370       validate_commands_for_breakpoint (b, info->cmd->commands);
1371       incref_counted_command_line (info->cmd);
1372       decref_counted_command_line (&b->commands);
1373       b->commands = info->cmd;
1374       observer_notify_breakpoint_modified (b);
1375     }
1376 }
1377
1378 static void
1379 commands_command_1 (char *arg, int from_tty, 
1380                     struct command_line *control)
1381 {
1382   struct cleanup *cleanups;
1383   struct commands_info info;
1384
1385   info.from_tty = from_tty;
1386   info.control = control;
1387   info.cmd = NULL;
1388   /* If we read command lines from the user, then `info' will hold an
1389      extra reference to the commands that we must clean up.  */
1390   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1391
1392   if (arg == NULL || !*arg)
1393     {
1394       if (breakpoint_count - prev_breakpoint_count > 1)
1395         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1396                           breakpoint_count);
1397       else if (breakpoint_count > 0)
1398         arg = xstrprintf ("%d", breakpoint_count);
1399       else
1400         {
1401           /* So that we don't try to free the incoming non-NULL
1402              argument in the cleanup below.  Mapping breakpoint
1403              numbers will fail in this case.  */
1404           arg = NULL;
1405         }
1406     }
1407   else
1408     /* The command loop has some static state, so we need to preserve
1409        our argument.  */
1410     arg = xstrdup (arg);
1411
1412   if (arg != NULL)
1413     make_cleanup (xfree, arg);
1414
1415   info.arg = arg;
1416
1417   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1418
1419   if (info.cmd == NULL)
1420     error (_("No breakpoints specified."));
1421
1422   do_cleanups (cleanups);
1423 }
1424
1425 static void
1426 commands_command (char *arg, int from_tty)
1427 {
1428   commands_command_1 (arg, from_tty, NULL);
1429 }
1430
1431 /* Like commands_command, but instead of reading the commands from
1432    input stream, takes them from an already parsed command structure.
1433
1434    This is used by cli-script.c to DTRT with breakpoint commands
1435    that are part of if and while bodies.  */
1436 enum command_control_type
1437 commands_from_control_command (char *arg, struct command_line *cmd)
1438 {
1439   commands_command_1 (arg, 0, cmd);
1440   return simple_control;
1441 }
1442
1443 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1444
1445 static int
1446 bp_location_has_shadow (struct bp_location *bl)
1447 {
1448   if (bl->loc_type != bp_loc_software_breakpoint)
1449     return 0;
1450   if (!bl->inserted)
1451     return 0;
1452   if (bl->target_info.shadow_len == 0)
1453     /* BL isn't valid, or doesn't shadow memory.  */
1454     return 0;
1455   return 1;
1456 }
1457
1458 /* Update BUF, which is LEN bytes read from the target address
1459    MEMADDR, by replacing a memory breakpoint with its shadowed
1460    contents.
1461
1462    If READBUF is not NULL, this buffer must not overlap with the of
1463    the breakpoint location's shadow_contents buffer.  Otherwise, a
1464    failed assertion internal error will be raised.  */
1465
1466 static void
1467 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1468                             const gdb_byte *writebuf_org,
1469                             ULONGEST memaddr, LONGEST len,
1470                             struct bp_target_info *target_info,
1471                             struct gdbarch *gdbarch)
1472 {
1473   /* Now do full processing of the found relevant range of elements.  */
1474   CORE_ADDR bp_addr = 0;
1475   int bp_size = 0;
1476   int bptoffset = 0;
1477
1478   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1479                                  current_program_space->aspace, 0))
1480     {
1481       /* The breakpoint is inserted in a different address space.  */
1482       return;
1483     }
1484
1485   /* Addresses and length of the part of the breakpoint that
1486      we need to copy.  */
1487   bp_addr = target_info->placed_address;
1488   bp_size = target_info->shadow_len;
1489
1490   if (bp_addr + bp_size <= memaddr)
1491     {
1492       /* The breakpoint is entirely before the chunk of memory we are
1493          reading.  */
1494       return;
1495     }
1496
1497   if (bp_addr >= memaddr + len)
1498     {
1499       /* The breakpoint is entirely after the chunk of memory we are
1500          reading.  */
1501       return;
1502     }
1503
1504   /* Offset within shadow_contents.  */
1505   if (bp_addr < memaddr)
1506     {
1507       /* Only copy the second part of the breakpoint.  */
1508       bp_size -= memaddr - bp_addr;
1509       bptoffset = memaddr - bp_addr;
1510       bp_addr = memaddr;
1511     }
1512
1513   if (bp_addr + bp_size > memaddr + len)
1514     {
1515       /* Only copy the first part of the breakpoint.  */
1516       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1517     }
1518
1519   if (readbuf != NULL)
1520     {
1521       /* Verify that the readbuf buffer does not overlap with the
1522          shadow_contents buffer.  */
1523       gdb_assert (target_info->shadow_contents >= readbuf + len
1524                   || readbuf >= (target_info->shadow_contents
1525                                  + target_info->shadow_len));
1526
1527       /* Update the read buffer with this inserted breakpoint's
1528          shadow.  */
1529       memcpy (readbuf + bp_addr - memaddr,
1530               target_info->shadow_contents + bptoffset, bp_size);
1531     }
1532   else
1533     {
1534       const unsigned char *bp;
1535       CORE_ADDR addr = target_info->reqstd_address;
1536       int placed_size;
1537
1538       /* Update the shadow with what we want to write to memory.  */
1539       memcpy (target_info->shadow_contents + bptoffset,
1540               writebuf_org + bp_addr - memaddr, bp_size);
1541
1542       /* Determine appropriate breakpoint contents and size for this
1543          address.  */
1544       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1545
1546       /* Update the final write buffer with this inserted
1547          breakpoint's INSN.  */
1548       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1549     }
1550 }
1551
1552 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1553    by replacing any memory breakpoints with their shadowed contents.
1554
1555    If READBUF is not NULL, this buffer must not overlap with any of
1556    the breakpoint location's shadow_contents buffers.  Otherwise,
1557    a failed assertion internal error will be raised.
1558
1559    The range of shadowed area by each bp_location is:
1560      bl->address - bp_location_placed_address_before_address_max
1561      up to bl->address + bp_location_shadow_len_after_address_max
1562    The range we were requested to resolve shadows for is:
1563      memaddr ... memaddr + len
1564    Thus the safe cutoff boundaries for performance optimization are
1565      memaddr + len <= (bl->address
1566                        - bp_location_placed_address_before_address_max)
1567    and:
1568      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1569
1570 void
1571 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1572                         const gdb_byte *writebuf_org,
1573                         ULONGEST memaddr, LONGEST len)
1574 {
1575   /* Left boundary, right boundary and median element of our binary
1576      search.  */
1577   unsigned bc_l, bc_r, bc;
1578   size_t i;
1579
1580   /* Find BC_L which is a leftmost element which may affect BUF
1581      content.  It is safe to report lower value but a failure to
1582      report higher one.  */
1583
1584   bc_l = 0;
1585   bc_r = bp_location_count;
1586   while (bc_l + 1 < bc_r)
1587     {
1588       struct bp_location *bl;
1589
1590       bc = (bc_l + bc_r) / 2;
1591       bl = bp_location[bc];
1592
1593       /* Check first BL->ADDRESS will not overflow due to the added
1594          constant.  Then advance the left boundary only if we are sure
1595          the BC element can in no way affect the BUF content (MEMADDR
1596          to MEMADDR + LEN range).
1597
1598          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1599          offset so that we cannot miss a breakpoint with its shadow
1600          range tail still reaching MEMADDR.  */
1601
1602       if ((bl->address + bp_location_shadow_len_after_address_max
1603            >= bl->address)
1604           && (bl->address + bp_location_shadow_len_after_address_max
1605               <= memaddr))
1606         bc_l = bc;
1607       else
1608         bc_r = bc;
1609     }
1610
1611   /* Due to the binary search above, we need to make sure we pick the
1612      first location that's at BC_L's address.  E.g., if there are
1613      multiple locations at the same address, BC_L may end up pointing
1614      at a duplicate location, and miss the "master"/"inserted"
1615      location.  Say, given locations L1, L2 and L3 at addresses A and
1616      B:
1617
1618       L1@A, L2@A, L3@B, ...
1619
1620      BC_L could end up pointing at location L2, while the "master"
1621      location could be L1.  Since the `loc->inserted' flag is only set
1622      on "master" locations, we'd forget to restore the shadow of L1
1623      and L2.  */
1624   while (bc_l > 0
1625          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1626     bc_l--;
1627
1628   /* Now do full processing of the found relevant range of elements.  */
1629
1630   for (bc = bc_l; bc < bp_location_count; bc++)
1631   {
1632     struct bp_location *bl = bp_location[bc];
1633     CORE_ADDR bp_addr = 0;
1634     int bp_size = 0;
1635     int bptoffset = 0;
1636
1637     /* bp_location array has BL->OWNER always non-NULL.  */
1638     if (bl->owner->type == bp_none)
1639       warning (_("reading through apparently deleted breakpoint #%d?"),
1640                bl->owner->number);
1641
1642     /* Performance optimization: any further element can no longer affect BUF
1643        content.  */
1644
1645     if (bl->address >= bp_location_placed_address_before_address_max
1646         && memaddr + len <= (bl->address
1647                              - bp_location_placed_address_before_address_max))
1648       break;
1649
1650     if (!bp_location_has_shadow (bl))
1651       continue;
1652
1653     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1654                                 memaddr, len, &bl->target_info, bl->gdbarch);
1655   }
1656 }
1657
1658 \f
1659
1660 /* Return true if BPT is either a software breakpoint or a hardware
1661    breakpoint.  */
1662
1663 int
1664 is_breakpoint (const struct breakpoint *bpt)
1665 {
1666   return (bpt->type == bp_breakpoint
1667           || bpt->type == bp_hardware_breakpoint
1668           || bpt->type == bp_dprintf);
1669 }
1670
1671 /* Return true if BPT is of any hardware watchpoint kind.  */
1672
1673 static int
1674 is_hardware_watchpoint (const struct breakpoint *bpt)
1675 {
1676   return (bpt->type == bp_hardware_watchpoint
1677           || bpt->type == bp_read_watchpoint
1678           || bpt->type == bp_access_watchpoint);
1679 }
1680
1681 /* Return true if BPT is of any watchpoint kind, hardware or
1682    software.  */
1683
1684 int
1685 is_watchpoint (const struct breakpoint *bpt)
1686 {
1687   return (is_hardware_watchpoint (bpt)
1688           || bpt->type == bp_watchpoint);
1689 }
1690
1691 /* Returns true if the current thread and its running state are safe
1692    to evaluate or update watchpoint B.  Watchpoints on local
1693    expressions need to be evaluated in the context of the thread that
1694    was current when the watchpoint was created, and, that thread needs
1695    to be stopped to be able to select the correct frame context.
1696    Watchpoints on global expressions can be evaluated on any thread,
1697    and in any state.  It is presently left to the target allowing
1698    memory accesses when threads are running.  */
1699
1700 static int
1701 watchpoint_in_thread_scope (struct watchpoint *b)
1702 {
1703   return (b->base.pspace == current_program_space
1704           && (ptid_equal (b->watchpoint_thread, null_ptid)
1705               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1706                   && !is_executing (inferior_ptid))));
1707 }
1708
1709 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1710    associated bp_watchpoint_scope breakpoint.  */
1711
1712 static void
1713 watchpoint_del_at_next_stop (struct watchpoint *w)
1714 {
1715   struct breakpoint *b = &w->base;
1716
1717   if (b->related_breakpoint != b)
1718     {
1719       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1720       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1721       b->related_breakpoint->disposition = disp_del_at_next_stop;
1722       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1723       b->related_breakpoint = b;
1724     }
1725   b->disposition = disp_del_at_next_stop;
1726 }
1727
1728 /* Extract a bitfield value from value VAL using the bit parameters contained in
1729    watchpoint W.  */
1730
1731 static struct value *
1732 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1733 {
1734   struct value *bit_val;
1735
1736   if (val == NULL)
1737     return NULL;
1738
1739   bit_val = allocate_value (value_type (val));
1740
1741   unpack_value_bitfield (bit_val,
1742                          w->val_bitpos,
1743                          w->val_bitsize,
1744                          value_contents_for_printing (val),
1745                          value_offset (val),
1746                          val);
1747
1748   return bit_val;
1749 }
1750
1751 /* Assuming that B is a watchpoint:
1752    - Reparse watchpoint expression, if REPARSE is non-zero
1753    - Evaluate expression and store the result in B->val
1754    - Evaluate the condition if there is one, and store the result
1755      in b->loc->cond.
1756    - Update the list of values that must be watched in B->loc.
1757
1758    If the watchpoint disposition is disp_del_at_next_stop, then do
1759    nothing.  If this is local watchpoint that is out of scope, delete
1760    it.
1761
1762    Even with `set breakpoint always-inserted on' the watchpoints are
1763    removed + inserted on each stop here.  Normal breakpoints must
1764    never be removed because they might be missed by a running thread
1765    when debugging in non-stop mode.  On the other hand, hardware
1766    watchpoints (is_hardware_watchpoint; processed here) are specific
1767    to each LWP since they are stored in each LWP's hardware debug
1768    registers.  Therefore, such LWP must be stopped first in order to
1769    be able to modify its hardware watchpoints.
1770
1771    Hardware watchpoints must be reset exactly once after being
1772    presented to the user.  It cannot be done sooner, because it would
1773    reset the data used to present the watchpoint hit to the user.  And
1774    it must not be done later because it could display the same single
1775    watchpoint hit during multiple GDB stops.  Note that the latter is
1776    relevant only to the hardware watchpoint types bp_read_watchpoint
1777    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1778    not user-visible - its hit is suppressed if the memory content has
1779    not changed.
1780
1781    The following constraints influence the location where we can reset
1782    hardware watchpoints:
1783
1784    * target_stopped_by_watchpoint and target_stopped_data_address are
1785      called several times when GDB stops.
1786
1787    [linux] 
1788    * Multiple hardware watchpoints can be hit at the same time,
1789      causing GDB to stop.  GDB only presents one hardware watchpoint
1790      hit at a time as the reason for stopping, and all the other hits
1791      are presented later, one after the other, each time the user
1792      requests the execution to be resumed.  Execution is not resumed
1793      for the threads still having pending hit event stored in
1794      LWP_INFO->STATUS.  While the watchpoint is already removed from
1795      the inferior on the first stop the thread hit event is kept being
1796      reported from its cached value by linux_nat_stopped_data_address
1797      until the real thread resume happens after the watchpoint gets
1798      presented and thus its LWP_INFO->STATUS gets reset.
1799
1800    Therefore the hardware watchpoint hit can get safely reset on the
1801    watchpoint removal from inferior.  */
1802
1803 static void
1804 update_watchpoint (struct watchpoint *b, int reparse)
1805 {
1806   int within_current_scope;
1807   struct frame_id saved_frame_id;
1808   int frame_saved;
1809
1810   /* If this is a local watchpoint, we only want to check if the
1811      watchpoint frame is in scope if the current thread is the thread
1812      that was used to create the watchpoint.  */
1813   if (!watchpoint_in_thread_scope (b))
1814     return;
1815
1816   if (b->base.disposition == disp_del_at_next_stop)
1817     return;
1818  
1819   frame_saved = 0;
1820
1821   /* Determine if the watchpoint is within scope.  */
1822   if (b->exp_valid_block == NULL)
1823     within_current_scope = 1;
1824   else
1825     {
1826       struct frame_info *fi = get_current_frame ();
1827       struct gdbarch *frame_arch = get_frame_arch (fi);
1828       CORE_ADDR frame_pc = get_frame_pc (fi);
1829
1830       /* If we're in a function epilogue, unwinding may not work
1831          properly, so do not attempt to recreate locations at this
1832          point.  See similar comments in watchpoint_check.  */
1833       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1834         return;
1835
1836       /* Save the current frame's ID so we can restore it after
1837          evaluating the watchpoint expression on its own frame.  */
1838       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1839          took a frame parameter, so that we didn't have to change the
1840          selected frame.  */
1841       frame_saved = 1;
1842       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1843
1844       fi = frame_find_by_id (b->watchpoint_frame);
1845       within_current_scope = (fi != NULL);
1846       if (within_current_scope)
1847         select_frame (fi);
1848     }
1849
1850   /* We don't free locations.  They are stored in the bp_location array
1851      and update_global_location_list will eventually delete them and
1852      remove breakpoints if needed.  */
1853   b->base.loc = NULL;
1854
1855   if (within_current_scope && reparse)
1856     {
1857       const char *s;
1858
1859       if (b->exp)
1860         {
1861           xfree (b->exp);
1862           b->exp = NULL;
1863         }
1864       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1865       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1866       /* If the meaning of expression itself changed, the old value is
1867          no longer relevant.  We don't want to report a watchpoint hit
1868          to the user when the old value and the new value may actually
1869          be completely different objects.  */
1870       value_free (b->val);
1871       b->val = NULL;
1872       b->val_valid = 0;
1873
1874       /* Note that unlike with breakpoints, the watchpoint's condition
1875          expression is stored in the breakpoint object, not in the
1876          locations (re)created below.  */
1877       if (b->base.cond_string != NULL)
1878         {
1879           if (b->cond_exp != NULL)
1880             {
1881               xfree (b->cond_exp);
1882               b->cond_exp = NULL;
1883             }
1884
1885           s = b->base.cond_string;
1886           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1887         }
1888     }
1889
1890   /* If we failed to parse the expression, for example because
1891      it refers to a global variable in a not-yet-loaded shared library,
1892      don't try to insert watchpoint.  We don't automatically delete
1893      such watchpoint, though, since failure to parse expression
1894      is different from out-of-scope watchpoint.  */
1895   if (!target_has_execution)
1896     {
1897       /* Without execution, memory can't change.  No use to try and
1898          set watchpoint locations.  The watchpoint will be reset when
1899          the target gains execution, through breakpoint_re_set.  */
1900       if (!can_use_hw_watchpoints)
1901         {
1902           if (b->base.ops->works_in_software_mode (&b->base))
1903             b->base.type = bp_watchpoint;
1904           else
1905             error (_("Can't set read/access watchpoint when "
1906                      "hardware watchpoints are disabled."));
1907         }
1908     }
1909   else if (within_current_scope && b->exp)
1910     {
1911       int pc = 0;
1912       struct value *val_chain, *v, *result, *next;
1913       struct program_space *frame_pspace;
1914
1915       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1916
1917       /* Avoid setting b->val if it's already set.  The meaning of
1918          b->val is 'the last value' user saw, and we should update
1919          it only if we reported that last value to user.  As it
1920          happens, the code that reports it updates b->val directly.
1921          We don't keep track of the memory value for masked
1922          watchpoints.  */
1923       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1924         {
1925           if (b->val_bitsize != 0)
1926             {
1927               v = extract_bitfield_from_watchpoint_value (b, v);
1928               if (v != NULL)
1929                 release_value (v);
1930             }
1931           b->val = v;
1932           b->val_valid = 1;
1933         }
1934
1935       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1936
1937       /* Look at each value on the value chain.  */
1938       for (v = val_chain; v; v = value_next (v))
1939         {
1940           /* If it's a memory location, and GDB actually needed
1941              its contents to evaluate the expression, then we
1942              must watch it.  If the first value returned is
1943              still lazy, that means an error occurred reading it;
1944              watch it anyway in case it becomes readable.  */
1945           if (VALUE_LVAL (v) == lval_memory
1946               && (v == val_chain || ! value_lazy (v)))
1947             {
1948               struct type *vtype = check_typedef (value_type (v));
1949
1950               /* We only watch structs and arrays if user asked
1951                  for it explicitly, never if they just happen to
1952                  appear in the middle of some value chain.  */
1953               if (v == result
1954                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1955                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1956                 {
1957                   CORE_ADDR addr;
1958                   int type;
1959                   struct bp_location *loc, **tmp;
1960                   int bitpos = 0, bitsize = 0;
1961
1962                   if (value_bitsize (v) != 0)
1963                     {
1964                       /* Extract the bit parameters out from the bitfield
1965                          sub-expression.  */
1966                       bitpos = value_bitpos (v);
1967                       bitsize = value_bitsize (v);
1968                     }
1969                   else if (v == result && b->val_bitsize != 0)
1970                     {
1971                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1972                         lvalue whose bit parameters are saved in the fields
1973                         VAL_BITPOS and VAL_BITSIZE.  */
1974                       bitpos = b->val_bitpos;
1975                       bitsize = b->val_bitsize;
1976                     }
1977
1978                   addr = value_address (v);
1979                   if (bitsize != 0)
1980                     {
1981                       /* Skip the bytes that don't contain the bitfield.  */
1982                       addr += bitpos / 8;
1983                     }
1984
1985                   type = hw_write;
1986                   if (b->base.type == bp_read_watchpoint)
1987                     type = hw_read;
1988                   else if (b->base.type == bp_access_watchpoint)
1989                     type = hw_access;
1990
1991                   loc = allocate_bp_location (&b->base);
1992                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1993                     ;
1994                   *tmp = loc;
1995                   loc->gdbarch = get_type_arch (value_type (v));
1996
1997                   loc->pspace = frame_pspace;
1998                   loc->address = addr;
1999
2000                   if (bitsize != 0)
2001                     {
2002                       /* Just cover the bytes that make up the bitfield.  */
2003                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2004                     }
2005                   else
2006                     loc->length = TYPE_LENGTH (value_type (v));
2007
2008                   loc->watchpoint_type = type;
2009                 }
2010             }
2011         }
2012
2013       /* Change the type of breakpoint between hardware assisted or
2014          an ordinary watchpoint depending on the hardware support
2015          and free hardware slots.  REPARSE is set when the inferior
2016          is started.  */
2017       if (reparse)
2018         {
2019           int reg_cnt;
2020           enum bp_loc_type loc_type;
2021           struct bp_location *bl;
2022
2023           reg_cnt = can_use_hardware_watchpoint (val_chain);
2024
2025           if (reg_cnt)
2026             {
2027               int i, target_resources_ok, other_type_used;
2028               enum bptype type;
2029
2030               /* Use an exact watchpoint when there's only one memory region to be
2031                  watched, and only one debug register is needed to watch it.  */
2032               b->exact = target_exact_watchpoints && reg_cnt == 1;
2033
2034               /* We need to determine how many resources are already
2035                  used for all other hardware watchpoints plus this one
2036                  to see if we still have enough resources to also fit
2037                  this watchpoint in as well.  */
2038
2039               /* If this is a software watchpoint, we try to turn it
2040                  to a hardware one -- count resources as if B was of
2041                  hardware watchpoint type.  */
2042               type = b->base.type;
2043               if (type == bp_watchpoint)
2044                 type = bp_hardware_watchpoint;
2045
2046               /* This watchpoint may or may not have been placed on
2047                  the list yet at this point (it won't be in the list
2048                  if we're trying to create it for the first time,
2049                  through watch_command), so always account for it
2050                  manually.  */
2051
2052               /* Count resources used by all watchpoints except B.  */
2053               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
2054
2055               /* Add in the resources needed for B.  */
2056               i += hw_watchpoint_use_count (&b->base);
2057
2058               target_resources_ok
2059                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2060               if (target_resources_ok <= 0)
2061                 {
2062                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
2063
2064                   if (target_resources_ok == 0 && !sw_mode)
2065                     error (_("Target does not support this type of "
2066                              "hardware watchpoint."));
2067                   else if (target_resources_ok < 0 && !sw_mode)
2068                     error (_("There are not enough available hardware "
2069                              "resources for this watchpoint."));
2070
2071                   /* Downgrade to software watchpoint.  */
2072                   b->base.type = bp_watchpoint;
2073                 }
2074               else
2075                 {
2076                   /* If this was a software watchpoint, we've just
2077                      found we have enough resources to turn it to a
2078                      hardware watchpoint.  Otherwise, this is a
2079                      nop.  */
2080                   b->base.type = type;
2081                 }
2082             }
2083           else if (!b->base.ops->works_in_software_mode (&b->base))
2084             {
2085               if (!can_use_hw_watchpoints)
2086                 error (_("Can't set read/access watchpoint when "
2087                          "hardware watchpoints are disabled."));
2088               else
2089                 error (_("Expression cannot be implemented with "
2090                          "read/access watchpoint."));
2091             }
2092           else
2093             b->base.type = bp_watchpoint;
2094
2095           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2096                       : bp_loc_hardware_watchpoint);
2097           for (bl = b->base.loc; bl; bl = bl->next)
2098             bl->loc_type = loc_type;
2099         }
2100
2101       for (v = val_chain; v; v = next)
2102         {
2103           next = value_next (v);
2104           if (v != b->val)
2105             value_free (v);
2106         }
2107
2108       /* If a software watchpoint is not watching any memory, then the
2109          above left it without any location set up.  But,
2110          bpstat_stop_status requires a location to be able to report
2111          stops, so make sure there's at least a dummy one.  */
2112       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2113         {
2114           struct breakpoint *base = &b->base;
2115           base->loc = allocate_bp_location (base);
2116           base->loc->pspace = frame_pspace;
2117           base->loc->address = -1;
2118           base->loc->length = -1;
2119           base->loc->watchpoint_type = -1;
2120         }
2121     }
2122   else if (!within_current_scope)
2123     {
2124       printf_filtered (_("\
2125 Watchpoint %d deleted because the program has left the block\n\
2126 in which its expression is valid.\n"),
2127                        b->base.number);
2128       watchpoint_del_at_next_stop (b);
2129     }
2130
2131   /* Restore the selected frame.  */
2132   if (frame_saved)
2133     select_frame (frame_find_by_id (saved_frame_id));
2134 }
2135
2136
2137 /* Returns 1 iff breakpoint location should be
2138    inserted in the inferior.  We don't differentiate the type of BL's owner
2139    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2140    breakpoint_ops is not defined, because in insert_bp_location,
2141    tracepoint's insert_location will not be called.  */
2142 static int
2143 should_be_inserted (struct bp_location *bl)
2144 {
2145   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2146     return 0;
2147
2148   if (bl->owner->disposition == disp_del_at_next_stop)
2149     return 0;
2150
2151   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2152     return 0;
2153
2154   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2155     return 0;
2156
2157   /* This is set for example, when we're attached to the parent of a
2158      vfork, and have detached from the child.  The child is running
2159      free, and we expect it to do an exec or exit, at which point the
2160      OS makes the parent schedulable again (and the target reports
2161      that the vfork is done).  Until the child is done with the shared
2162      memory region, do not insert breakpoints in the parent, otherwise
2163      the child could still trip on the parent's breakpoints.  Since
2164      the parent is blocked anyway, it won't miss any breakpoint.  */
2165   if (bl->pspace->breakpoints_not_allowed)
2166     return 0;
2167
2168   /* Don't insert a breakpoint if we're trying to step past its
2169      location.  */
2170   if ((bl->loc_type == bp_loc_software_breakpoint
2171        || bl->loc_type == bp_loc_hardware_breakpoint)
2172       && stepping_past_instruction_at (bl->pspace->aspace,
2173                                        bl->address))
2174     {
2175       if (debug_infrun)
2176         {
2177           fprintf_unfiltered (gdb_stdlog,
2178                               "infrun: skipping breakpoint: "
2179                               "stepping past insn at: %s\n",
2180                               paddress (bl->gdbarch, bl->address));
2181         }
2182       return 0;
2183     }
2184
2185   /* Don't insert watchpoints if we're trying to step past the
2186      instruction that triggered one.  */
2187   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2188       && stepping_past_nonsteppable_watchpoint ())
2189     {
2190       if (debug_infrun)
2191         {
2192           fprintf_unfiltered (gdb_stdlog,
2193                               "infrun: stepping past non-steppable watchpoint. "
2194                               "skipping watchpoint at %s:%d\n",
2195                               paddress (bl->gdbarch, bl->address),
2196                               bl->length);
2197         }
2198       return 0;
2199     }
2200
2201   return 1;
2202 }
2203
2204 /* Same as should_be_inserted but does the check assuming
2205    that the location is not duplicated.  */
2206
2207 static int
2208 unduplicated_should_be_inserted (struct bp_location *bl)
2209 {
2210   int result;
2211   const int save_duplicate = bl->duplicate;
2212
2213   bl->duplicate = 0;
2214   result = should_be_inserted (bl);
2215   bl->duplicate = save_duplicate;
2216   return result;
2217 }
2218
2219 /* Parses a conditional described by an expression COND into an
2220    agent expression bytecode suitable for evaluation
2221    by the bytecode interpreter.  Return NULL if there was
2222    any error during parsing.  */
2223
2224 static struct agent_expr *
2225 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2226 {
2227   struct agent_expr *aexpr = NULL;
2228   volatile struct gdb_exception ex;
2229
2230   if (!cond)
2231     return NULL;
2232
2233   /* We don't want to stop processing, so catch any errors
2234      that may show up.  */
2235   TRY_CATCH (ex, RETURN_MASK_ERROR)
2236     {
2237       aexpr = gen_eval_for_expr (scope, cond);
2238     }
2239
2240   if (ex.reason < 0)
2241     {
2242       /* If we got here, it means the condition could not be parsed to a valid
2243          bytecode expression and thus can't be evaluated on the target's side.
2244          It's no use iterating through the conditions.  */
2245       return NULL;
2246     }
2247
2248   /* We have a valid agent expression.  */
2249   return aexpr;
2250 }
2251
2252 /* Based on location BL, create a list of breakpoint conditions to be
2253    passed on to the target.  If we have duplicated locations with different
2254    conditions, we will add such conditions to the list.  The idea is that the
2255    target will evaluate the list of conditions and will only notify GDB when
2256    one of them is true.  */
2257
2258 static void
2259 build_target_condition_list (struct bp_location *bl)
2260 {
2261   struct bp_location **locp = NULL, **loc2p;
2262   int null_condition_or_parse_error = 0;
2263   int modified = bl->needs_update;
2264   struct bp_location *loc;
2265
2266   /* Release conditions left over from a previous insert.  */
2267   VEC_free (agent_expr_p, bl->target_info.conditions);
2268
2269   /* This is only meaningful if the target is
2270      evaluating conditions and if the user has
2271      opted for condition evaluation on the target's
2272      side.  */
2273   if (gdb_evaluates_breakpoint_condition_p ()
2274       || !target_supports_evaluation_of_breakpoint_conditions ())
2275     return;
2276
2277   /* Do a first pass to check for locations with no assigned
2278      conditions or conditions that fail to parse to a valid agent expression
2279      bytecode.  If any of these happen, then it's no use to send conditions
2280      to the target since this location will always trigger and generate a
2281      response back to GDB.  */
2282   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2283     {
2284       loc = (*loc2p);
2285       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2286         {
2287           if (modified)
2288             {
2289               struct agent_expr *aexpr;
2290
2291               /* Re-parse the conditions since something changed.  In that
2292                  case we already freed the condition bytecodes (see
2293                  force_breakpoint_reinsertion).  We just
2294                  need to parse the condition to bytecodes again.  */
2295               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2296               loc->cond_bytecode = aexpr;
2297
2298               /* Check if we managed to parse the conditional expression
2299                  correctly.  If not, we will not send this condition
2300                  to the target.  */
2301               if (aexpr)
2302                 continue;
2303             }
2304
2305           /* If we have a NULL bytecode expression, it means something
2306              went wrong or we have a null condition expression.  */
2307           if (!loc->cond_bytecode)
2308             {
2309               null_condition_or_parse_error = 1;
2310               break;
2311             }
2312         }
2313     }
2314
2315   /* If any of these happened, it means we will have to evaluate the conditions
2316      for the location's address on gdb's side.  It is no use keeping bytecodes
2317      for all the other duplicate locations, thus we free all of them here.
2318
2319      This is so we have a finer control over which locations' conditions are
2320      being evaluated by GDB or the remote stub.  */
2321   if (null_condition_or_parse_error)
2322     {
2323       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2324         {
2325           loc = (*loc2p);
2326           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2327             {
2328               /* Only go as far as the first NULL bytecode is
2329                  located.  */
2330               if (!loc->cond_bytecode)
2331                 return;
2332
2333               free_agent_expr (loc->cond_bytecode);
2334               loc->cond_bytecode = NULL;
2335             }
2336         }
2337     }
2338
2339   /* No NULL conditions or failed bytecode generation.  Build a condition list
2340      for this location's address.  */
2341   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2342     {
2343       loc = (*loc2p);
2344       if (loc->cond
2345           && is_breakpoint (loc->owner)
2346           && loc->pspace->num == bl->pspace->num
2347           && loc->owner->enable_state == bp_enabled
2348           && loc->enabled)
2349         /* Add the condition to the vector.  This will be used later to send the
2350            conditions to the target.  */
2351         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2352                        loc->cond_bytecode);
2353     }
2354
2355   return;
2356 }
2357
2358 /* Parses a command described by string CMD into an agent expression
2359    bytecode suitable for evaluation by the bytecode interpreter.
2360    Return NULL if there was any error during parsing.  */
2361
2362 static struct agent_expr *
2363 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2364 {
2365   struct cleanup *old_cleanups = 0;
2366   struct expression *expr, **argvec;
2367   struct agent_expr *aexpr = NULL;
2368   volatile struct gdb_exception ex;
2369   const char *cmdrest;
2370   const char *format_start, *format_end;
2371   struct format_piece *fpieces;
2372   int nargs;
2373   struct gdbarch *gdbarch = get_current_arch ();
2374
2375   if (!cmd)
2376     return NULL;
2377
2378   cmdrest = cmd;
2379
2380   if (*cmdrest == ',')
2381     ++cmdrest;
2382   cmdrest = skip_spaces_const (cmdrest);
2383
2384   if (*cmdrest++ != '"')
2385     error (_("No format string following the location"));
2386
2387   format_start = cmdrest;
2388
2389   fpieces = parse_format_string (&cmdrest);
2390
2391   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2392
2393   format_end = cmdrest;
2394
2395   if (*cmdrest++ != '"')
2396     error (_("Bad format string, non-terminated '\"'."));
2397   
2398   cmdrest = skip_spaces_const (cmdrest);
2399
2400   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2401     error (_("Invalid argument syntax"));
2402
2403   if (*cmdrest == ',')
2404     cmdrest++;
2405   cmdrest = skip_spaces_const (cmdrest);
2406
2407   /* For each argument, make an expression.  */
2408
2409   argvec = (struct expression **) alloca (strlen (cmd)
2410                                          * sizeof (struct expression *));
2411
2412   nargs = 0;
2413   while (*cmdrest != '\0')
2414     {
2415       const char *cmd1;
2416
2417       cmd1 = cmdrest;
2418       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2419       argvec[nargs++] = expr;
2420       cmdrest = cmd1;
2421       if (*cmdrest == ',')
2422         ++cmdrest;
2423     }
2424
2425   /* We don't want to stop processing, so catch any errors
2426      that may show up.  */
2427   TRY_CATCH (ex, RETURN_MASK_ERROR)
2428     {
2429       aexpr = gen_printf (scope, gdbarch, 0, 0,
2430                           format_start, format_end - format_start,
2431                           fpieces, nargs, argvec);
2432     }
2433
2434   do_cleanups (old_cleanups);
2435
2436   if (ex.reason < 0)
2437     {
2438       /* If we got here, it means the command could not be parsed to a valid
2439          bytecode expression and thus can't be evaluated on the target's side.
2440          It's no use iterating through the other commands.  */
2441       return NULL;
2442     }
2443
2444   /* We have a valid agent expression, return it.  */
2445   return aexpr;
2446 }
2447
2448 /* Based on location BL, create a list of breakpoint commands to be
2449    passed on to the target.  If we have duplicated locations with
2450    different commands, we will add any such to the list.  */
2451
2452 static void
2453 build_target_command_list (struct bp_location *bl)
2454 {
2455   struct bp_location **locp = NULL, **loc2p;
2456   int null_command_or_parse_error = 0;
2457   int modified = bl->needs_update;
2458   struct bp_location *loc;
2459
2460   /* Release commands left over from a previous insert.  */
2461   VEC_free (agent_expr_p, bl->target_info.tcommands);
2462
2463   if (!target_can_run_breakpoint_commands ())
2464     return;
2465
2466   /* For now, limit to agent-style dprintf breakpoints.  */
2467   if (dprintf_style != dprintf_style_agent)
2468     return;
2469
2470   /* For now, if we have any duplicate location that isn't a dprintf,
2471      don't install the target-side commands, as that would make the
2472      breakpoint not be reported to the core, and we'd lose
2473      control.  */
2474   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2475     {
2476       loc = (*loc2p);
2477       if (is_breakpoint (loc->owner)
2478           && loc->pspace->num == bl->pspace->num
2479           && loc->owner->type != bp_dprintf)
2480         return;
2481     }
2482
2483   /* Do a first pass to check for locations with no assigned
2484      conditions or conditions that fail to parse to a valid agent expression
2485      bytecode.  If any of these happen, then it's no use to send conditions
2486      to the target since this location will always trigger and generate a
2487      response back to GDB.  */
2488   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2489     {
2490       loc = (*loc2p);
2491       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2492         {
2493           if (modified)
2494             {
2495               struct agent_expr *aexpr;
2496
2497               /* Re-parse the commands since something changed.  In that
2498                  case we already freed the command bytecodes (see
2499                  force_breakpoint_reinsertion).  We just
2500                  need to parse the command to bytecodes again.  */
2501               aexpr = parse_cmd_to_aexpr (bl->address,
2502                                           loc->owner->extra_string);
2503               loc->cmd_bytecode = aexpr;
2504
2505               if (!aexpr)
2506                 continue;
2507             }
2508
2509           /* If we have a NULL bytecode expression, it means something
2510              went wrong or we have a null command expression.  */
2511           if (!loc->cmd_bytecode)
2512             {
2513               null_command_or_parse_error = 1;
2514               break;
2515             }
2516         }
2517     }
2518
2519   /* If anything failed, then we're not doing target-side commands,
2520      and so clean up.  */
2521   if (null_command_or_parse_error)
2522     {
2523       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2524         {
2525           loc = (*loc2p);
2526           if (is_breakpoint (loc->owner)
2527               && loc->pspace->num == bl->pspace->num)
2528             {
2529               /* Only go as far as the first NULL bytecode is
2530                  located.  */
2531               if (loc->cmd_bytecode == NULL)
2532                 return;
2533
2534               free_agent_expr (loc->cmd_bytecode);
2535               loc->cmd_bytecode = NULL;
2536             }
2537         }
2538     }
2539
2540   /* No NULL commands or failed bytecode generation.  Build a command list
2541      for this location's address.  */
2542   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2543     {
2544       loc = (*loc2p);
2545       if (loc->owner->extra_string
2546           && is_breakpoint (loc->owner)
2547           && loc->pspace->num == bl->pspace->num
2548           && loc->owner->enable_state == bp_enabled
2549           && loc->enabled)
2550         /* Add the command to the vector.  This will be used later
2551            to send the commands to the target.  */
2552         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2553                        loc->cmd_bytecode);
2554     }
2555
2556   bl->target_info.persist = 0;
2557   /* Maybe flag this location as persistent.  */
2558   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2559     bl->target_info.persist = 1;
2560 }
2561
2562 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2563    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2564    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2565    Returns 0 for success, 1 if the bp_location type is not supported or
2566    -1 for failure.
2567
2568    NOTE drow/2003-09-09: This routine could be broken down to an
2569    object-style method for each breakpoint or catchpoint type.  */
2570 static int
2571 insert_bp_location (struct bp_location *bl,
2572                     struct ui_file *tmp_error_stream,
2573                     int *disabled_breaks,
2574                     int *hw_breakpoint_error,
2575                     int *hw_bp_error_explained_already)
2576 {
2577   enum errors bp_err = GDB_NO_ERROR;
2578   const char *bp_err_message = NULL;
2579   volatile struct gdb_exception e;
2580
2581   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2582     return 0;
2583
2584   /* Note we don't initialize bl->target_info, as that wipes out
2585      the breakpoint location's shadow_contents if the breakpoint
2586      is still inserted at that location.  This in turn breaks
2587      target_read_memory which depends on these buffers when
2588      a memory read is requested at the breakpoint location:
2589      Once the target_info has been wiped, we fail to see that
2590      we have a breakpoint inserted at that address and thus
2591      read the breakpoint instead of returning the data saved in
2592      the breakpoint location's shadow contents.  */
2593   bl->target_info.reqstd_address = bl->address;
2594   bl->target_info.placed_address_space = bl->pspace->aspace;
2595   bl->target_info.length = bl->length;
2596
2597   /* When working with target-side conditions, we must pass all the conditions
2598      for the same breakpoint address down to the target since GDB will not
2599      insert those locations.  With a list of breakpoint conditions, the target
2600      can decide when to stop and notify GDB.  */
2601
2602   if (is_breakpoint (bl->owner))
2603     {
2604       build_target_condition_list (bl);
2605       build_target_command_list (bl);
2606       /* Reset the modification marker.  */
2607       bl->needs_update = 0;
2608     }
2609
2610   if (bl->loc_type == bp_loc_software_breakpoint
2611       || bl->loc_type == bp_loc_hardware_breakpoint)
2612     {
2613       if (bl->owner->type != bp_hardware_breakpoint)
2614         {
2615           /* If the explicitly specified breakpoint type
2616              is not hardware breakpoint, check the memory map to see
2617              if the breakpoint address is in read only memory or not.
2618
2619              Two important cases are:
2620              - location type is not hardware breakpoint, memory
2621              is readonly.  We change the type of the location to
2622              hardware breakpoint.
2623              - location type is hardware breakpoint, memory is
2624              read-write.  This means we've previously made the
2625              location hardware one, but then the memory map changed,
2626              so we undo.
2627              
2628              When breakpoints are removed, remove_breakpoints will use
2629              location types we've just set here, the only possible
2630              problem is that memory map has changed during running
2631              program, but it's not going to work anyway with current
2632              gdb.  */
2633           struct mem_region *mr 
2634             = lookup_mem_region (bl->target_info.reqstd_address);
2635           
2636           if (mr)
2637             {
2638               if (automatic_hardware_breakpoints)
2639                 {
2640                   enum bp_loc_type new_type;
2641                   
2642                   if (mr->attrib.mode != MEM_RW)
2643                     new_type = bp_loc_hardware_breakpoint;
2644                   else 
2645                     new_type = bp_loc_software_breakpoint;
2646                   
2647                   if (new_type != bl->loc_type)
2648                     {
2649                       static int said = 0;
2650
2651                       bl->loc_type = new_type;
2652                       if (!said)
2653                         {
2654                           fprintf_filtered (gdb_stdout,
2655                                             _("Note: automatically using "
2656                                               "hardware breakpoints for "
2657                                               "read-only addresses.\n"));
2658                           said = 1;
2659                         }
2660                     }
2661                 }
2662               else if (bl->loc_type == bp_loc_software_breakpoint
2663                        && mr->attrib.mode != MEM_RW)
2664                 {
2665                   fprintf_unfiltered (tmp_error_stream,
2666                                       _("Cannot insert breakpoint %d.\n"
2667                                         "Cannot set software breakpoint "
2668                                         "at read-only address %s\n"),
2669                                       bl->owner->number,
2670                                       paddress (bl->gdbarch, bl->address));
2671                   return 1;
2672                 }
2673             }
2674         }
2675         
2676       /* First check to see if we have to handle an overlay.  */
2677       if (overlay_debugging == ovly_off
2678           || bl->section == NULL
2679           || !(section_is_overlay (bl->section)))
2680         {
2681           /* No overlay handling: just set the breakpoint.  */
2682           TRY_CATCH (e, RETURN_MASK_ALL)
2683             {
2684               int val;
2685
2686               val = bl->owner->ops->insert_location (bl);
2687               if (val)
2688                 bp_err = GENERIC_ERROR;
2689             }
2690           if (e.reason < 0)
2691             {
2692               bp_err = e.error;
2693               bp_err_message = e.message;
2694             }
2695         }
2696       else
2697         {
2698           /* This breakpoint is in an overlay section.
2699              Shall we set a breakpoint at the LMA?  */
2700           if (!overlay_events_enabled)
2701             {
2702               /* Yes -- overlay event support is not active, 
2703                  so we must try to set a breakpoint at the LMA.
2704                  This will not work for a hardware breakpoint.  */
2705               if (bl->loc_type == bp_loc_hardware_breakpoint)
2706                 warning (_("hardware breakpoint %d not supported in overlay!"),
2707                          bl->owner->number);
2708               else
2709                 {
2710                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2711                                                              bl->section);
2712                   /* Set a software (trap) breakpoint at the LMA.  */
2713                   bl->overlay_target_info = bl->target_info;
2714                   bl->overlay_target_info.reqstd_address = addr;
2715
2716                   /* No overlay handling: just set the breakpoint.  */
2717                   TRY_CATCH (e, RETURN_MASK_ALL)
2718                     {
2719                       int val;
2720
2721                       val = target_insert_breakpoint (bl->gdbarch,
2722                                                       &bl->overlay_target_info);
2723                       if (val)
2724                         bp_err = GENERIC_ERROR;
2725                     }
2726                   if (e.reason < 0)
2727                     {
2728                       bp_err = e.error;
2729                       bp_err_message = e.message;
2730                     }
2731
2732                   if (bp_err != GDB_NO_ERROR)
2733                     fprintf_unfiltered (tmp_error_stream,
2734                                         "Overlay breakpoint %d "
2735                                         "failed: in ROM?\n",
2736                                         bl->owner->number);
2737                 }
2738             }
2739           /* Shall we set a breakpoint at the VMA? */
2740           if (section_is_mapped (bl->section))
2741             {
2742               /* Yes.  This overlay section is mapped into memory.  */
2743               TRY_CATCH (e, RETURN_MASK_ALL)
2744                 {
2745                   int val;
2746
2747                   val = bl->owner->ops->insert_location (bl);
2748                   if (val)
2749                     bp_err = GENERIC_ERROR;
2750                 }
2751               if (e.reason < 0)
2752                 {
2753                   bp_err = e.error;
2754                   bp_err_message = e.message;
2755                 }
2756             }
2757           else
2758             {
2759               /* No.  This breakpoint will not be inserted.  
2760                  No error, but do not mark the bp as 'inserted'.  */
2761               return 0;
2762             }
2763         }
2764
2765       if (bp_err != GDB_NO_ERROR)
2766         {
2767           /* Can't set the breakpoint.  */
2768
2769           /* In some cases, we might not be able to insert a
2770              breakpoint in a shared library that has already been
2771              removed, but we have not yet processed the shlib unload
2772              event.  Unfortunately, some targets that implement
2773              breakpoint insertion themselves can't tell why the
2774              breakpoint insertion failed (e.g., the remote target
2775              doesn't define error codes), so we must treat generic
2776              errors as memory errors.  */
2777           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2778               && bl->loc_type == bp_loc_software_breakpoint
2779               && (solib_name_from_address (bl->pspace, bl->address)
2780                   || shared_objfile_contains_address_p (bl->pspace,
2781                                                         bl->address)))
2782             {
2783               /* See also: disable_breakpoints_in_shlibs.  */
2784               bl->shlib_disabled = 1;
2785               observer_notify_breakpoint_modified (bl->owner);
2786               if (!*disabled_breaks)
2787                 {
2788                   fprintf_unfiltered (tmp_error_stream, 
2789                                       "Cannot insert breakpoint %d.\n", 
2790                                       bl->owner->number);
2791                   fprintf_unfiltered (tmp_error_stream, 
2792                                       "Temporarily disabling shared "
2793                                       "library breakpoints:\n");
2794                 }
2795               *disabled_breaks = 1;
2796               fprintf_unfiltered (tmp_error_stream,
2797                                   "breakpoint #%d\n", bl->owner->number);
2798               return 0;
2799             }
2800           else
2801             {
2802               if (bl->loc_type == bp_loc_hardware_breakpoint)
2803                 {
2804                   *hw_breakpoint_error = 1;
2805                   *hw_bp_error_explained_already = bp_err_message != NULL;
2806                   fprintf_unfiltered (tmp_error_stream,
2807                                       "Cannot insert hardware breakpoint %d%s",
2808                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2809                   if (bp_err_message != NULL)
2810                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2811                 }
2812               else
2813                 {
2814                   if (bp_err_message == NULL)
2815                     {
2816                       char *message
2817                         = memory_error_message (TARGET_XFER_E_IO,
2818                                                 bl->gdbarch, bl->address);
2819                       struct cleanup *old_chain = make_cleanup (xfree, message);
2820
2821                       fprintf_unfiltered (tmp_error_stream,
2822                                           "Cannot insert breakpoint %d.\n"
2823                                           "%s\n",
2824                                           bl->owner->number, message);
2825                       do_cleanups (old_chain);
2826                     }
2827                   else
2828                     {
2829                       fprintf_unfiltered (tmp_error_stream,
2830                                           "Cannot insert breakpoint %d: %s\n",
2831                                           bl->owner->number,
2832                                           bp_err_message);
2833                     }
2834                 }
2835               return 1;
2836
2837             }
2838         }
2839       else
2840         bl->inserted = 1;
2841
2842       return 0;
2843     }
2844
2845   else if (bl->loc_type == bp_loc_hardware_watchpoint
2846            /* NOTE drow/2003-09-08: This state only exists for removing
2847               watchpoints.  It's not clear that it's necessary...  */
2848            && bl->owner->disposition != disp_del_at_next_stop)
2849     {
2850       int val;
2851
2852       gdb_assert (bl->owner->ops != NULL
2853                   && bl->owner->ops->insert_location != NULL);
2854
2855       val = bl->owner->ops->insert_location (bl);
2856
2857       /* If trying to set a read-watchpoint, and it turns out it's not
2858          supported, try emulating one with an access watchpoint.  */
2859       if (val == 1 && bl->watchpoint_type == hw_read)
2860         {
2861           struct bp_location *loc, **loc_temp;
2862
2863           /* But don't try to insert it, if there's already another
2864              hw_access location that would be considered a duplicate
2865              of this one.  */
2866           ALL_BP_LOCATIONS (loc, loc_temp)
2867             if (loc != bl
2868                 && loc->watchpoint_type == hw_access
2869                 && watchpoint_locations_match (bl, loc))
2870               {
2871                 bl->duplicate = 1;
2872                 bl->inserted = 1;
2873                 bl->target_info = loc->target_info;
2874                 bl->watchpoint_type = hw_access;
2875                 val = 0;
2876                 break;
2877               }
2878
2879           if (val == 1)
2880             {
2881               bl->watchpoint_type = hw_access;
2882               val = bl->owner->ops->insert_location (bl);
2883
2884               if (val)
2885                 /* Back to the original value.  */
2886                 bl->watchpoint_type = hw_read;
2887             }
2888         }
2889
2890       bl->inserted = (val == 0);
2891     }
2892
2893   else if (bl->owner->type == bp_catchpoint)
2894     {
2895       int val;
2896
2897       gdb_assert (bl->owner->ops != NULL
2898                   && bl->owner->ops->insert_location != NULL);
2899
2900       val = bl->owner->ops->insert_location (bl);
2901       if (val)
2902         {
2903           bl->owner->enable_state = bp_disabled;
2904
2905           if (val == 1)
2906             warning (_("\
2907 Error inserting catchpoint %d: Your system does not support this type\n\
2908 of catchpoint."), bl->owner->number);
2909           else
2910             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2911         }
2912
2913       bl->inserted = (val == 0);
2914
2915       /* We've already printed an error message if there was a problem
2916          inserting this catchpoint, and we've disabled the catchpoint,
2917          so just return success.  */
2918       return 0;
2919     }
2920
2921   return 0;
2922 }
2923
2924 /* This function is called when program space PSPACE is about to be
2925    deleted.  It takes care of updating breakpoints to not reference
2926    PSPACE anymore.  */
2927
2928 void
2929 breakpoint_program_space_exit (struct program_space *pspace)
2930 {
2931   struct breakpoint *b, *b_temp;
2932   struct bp_location *loc, **loc_temp;
2933
2934   /* Remove any breakpoint that was set through this program space.  */
2935   ALL_BREAKPOINTS_SAFE (b, b_temp)
2936     {
2937       if (b->pspace == pspace)
2938         delete_breakpoint (b);
2939     }
2940
2941   /* Breakpoints set through other program spaces could have locations
2942      bound to PSPACE as well.  Remove those.  */
2943   ALL_BP_LOCATIONS (loc, loc_temp)
2944     {
2945       struct bp_location *tmp;
2946
2947       if (loc->pspace == pspace)
2948         {
2949           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2950           if (loc->owner->loc == loc)
2951             loc->owner->loc = loc->next;
2952           else
2953             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2954               if (tmp->next == loc)
2955                 {
2956                   tmp->next = loc->next;
2957                   break;
2958                 }
2959         }
2960     }
2961
2962   /* Now update the global location list to permanently delete the
2963      removed locations above.  */
2964   update_global_location_list (UGLL_DONT_INSERT);
2965 }
2966
2967 /* Make sure all breakpoints are inserted in inferior.
2968    Throws exception on any error.
2969    A breakpoint that is already inserted won't be inserted
2970    again, so calling this function twice is safe.  */
2971 void
2972 insert_breakpoints (void)
2973 {
2974   struct breakpoint *bpt;
2975
2976   ALL_BREAKPOINTS (bpt)
2977     if (is_hardware_watchpoint (bpt))
2978       {
2979         struct watchpoint *w = (struct watchpoint *) bpt;
2980
2981         update_watchpoint (w, 0 /* don't reparse.  */);
2982       }
2983
2984   /* Updating watchpoints creates new locations, so update the global
2985      location list.  Explicitly tell ugll to insert locations and
2986      ignore breakpoints_always_inserted_mode.  */
2987   update_global_location_list (UGLL_INSERT);
2988 }
2989
2990 /* Invoke CALLBACK for each of bp_location.  */
2991
2992 void
2993 iterate_over_bp_locations (walk_bp_location_callback callback)
2994 {
2995   struct bp_location *loc, **loc_tmp;
2996
2997   ALL_BP_LOCATIONS (loc, loc_tmp)
2998     {
2999       callback (loc, NULL);
3000     }
3001 }
3002
3003 /* This is used when we need to synch breakpoint conditions between GDB and the
3004    target.  It is the case with deleting and disabling of breakpoints when using
3005    always-inserted mode.  */
3006
3007 static void
3008 update_inserted_breakpoint_locations (void)
3009 {
3010   struct bp_location *bl, **blp_tmp;
3011   int error_flag = 0;
3012   int val = 0;
3013   int disabled_breaks = 0;
3014   int hw_breakpoint_error = 0;
3015   int hw_bp_details_reported = 0;
3016
3017   struct ui_file *tmp_error_stream = mem_fileopen ();
3018   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3019
3020   /* Explicitly mark the warning -- this will only be printed if
3021      there was an error.  */
3022   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3023
3024   save_current_space_and_thread ();
3025
3026   ALL_BP_LOCATIONS (bl, blp_tmp)
3027     {
3028       /* We only want to update software breakpoints and hardware
3029          breakpoints.  */
3030       if (!is_breakpoint (bl->owner))
3031         continue;
3032
3033       /* We only want to update locations that are already inserted
3034          and need updating.  This is to avoid unwanted insertion during
3035          deletion of breakpoints.  */
3036       if (!bl->inserted || (bl->inserted && !bl->needs_update))
3037         continue;
3038
3039       switch_to_program_space_and_thread (bl->pspace);
3040
3041       /* For targets that support global breakpoints, there's no need
3042          to select an inferior to insert breakpoint to.  In fact, even
3043          if we aren't attached to any process yet, we should still
3044          insert breakpoints.  */
3045       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3046           && ptid_equal (inferior_ptid, null_ptid))
3047         continue;
3048
3049       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3050                                     &hw_breakpoint_error, &hw_bp_details_reported);
3051       if (val)
3052         error_flag = val;
3053     }
3054
3055   if (error_flag)
3056     {
3057       target_terminal_ours_for_output ();
3058       error_stream (tmp_error_stream);
3059     }
3060
3061   do_cleanups (cleanups);
3062 }
3063
3064 /* Used when starting or continuing the program.  */
3065
3066 static void
3067 insert_breakpoint_locations (void)
3068 {
3069   struct breakpoint *bpt;
3070   struct bp_location *bl, **blp_tmp;
3071   int error_flag = 0;
3072   int val = 0;
3073   int disabled_breaks = 0;
3074   int hw_breakpoint_error = 0;
3075   int hw_bp_error_explained_already = 0;
3076
3077   struct ui_file *tmp_error_stream = mem_fileopen ();
3078   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3079   
3080   /* Explicitly mark the warning -- this will only be printed if
3081      there was an error.  */
3082   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3083
3084   save_current_space_and_thread ();
3085
3086   ALL_BP_LOCATIONS (bl, blp_tmp)
3087     {
3088       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3089         continue;
3090
3091       /* There is no point inserting thread-specific breakpoints if
3092          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3093          has BL->OWNER always non-NULL.  */
3094       if (bl->owner->thread != -1
3095           && !valid_thread_id (bl->owner->thread))
3096         continue;
3097
3098       switch_to_program_space_and_thread (bl->pspace);
3099
3100       /* For targets that support global breakpoints, there's no need
3101          to select an inferior to insert breakpoint to.  In fact, even
3102          if we aren't attached to any process yet, we should still
3103          insert breakpoints.  */
3104       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3105           && ptid_equal (inferior_ptid, null_ptid))
3106         continue;
3107
3108       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3109                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3110       if (val)
3111         error_flag = val;
3112     }
3113
3114   /* If we failed to insert all locations of a watchpoint, remove
3115      them, as half-inserted watchpoint is of limited use.  */
3116   ALL_BREAKPOINTS (bpt)  
3117     {
3118       int some_failed = 0;
3119       struct bp_location *loc;
3120
3121       if (!is_hardware_watchpoint (bpt))
3122         continue;
3123
3124       if (!breakpoint_enabled (bpt))
3125         continue;
3126
3127       if (bpt->disposition == disp_del_at_next_stop)
3128         continue;
3129       
3130       for (loc = bpt->loc; loc; loc = loc->next)
3131         if (!loc->inserted && should_be_inserted (loc))
3132           {
3133             some_failed = 1;
3134             break;
3135           }
3136       if (some_failed)
3137         {
3138           for (loc = bpt->loc; loc; loc = loc->next)
3139             if (loc->inserted)
3140               remove_breakpoint (loc, mark_uninserted);
3141
3142           hw_breakpoint_error = 1;
3143           fprintf_unfiltered (tmp_error_stream,
3144                               "Could not insert hardware watchpoint %d.\n", 
3145                               bpt->number);
3146           error_flag = -1;
3147         }
3148     }
3149
3150   if (error_flag)
3151     {
3152       /* If a hardware breakpoint or watchpoint was inserted, add a
3153          message about possibly exhausted resources.  */
3154       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3155         {
3156           fprintf_unfiltered (tmp_error_stream, 
3157                               "Could not insert hardware breakpoints:\n\
3158 You may have requested too many hardware breakpoints/watchpoints.\n");
3159         }
3160       target_terminal_ours_for_output ();
3161       error_stream (tmp_error_stream);
3162     }
3163
3164   do_cleanups (cleanups);
3165 }
3166
3167 /* Used when the program stops.
3168    Returns zero if successful, or non-zero if there was a problem
3169    removing a breakpoint location.  */
3170
3171 int
3172 remove_breakpoints (void)
3173 {
3174   struct bp_location *bl, **blp_tmp;
3175   int val = 0;
3176
3177   ALL_BP_LOCATIONS (bl, blp_tmp)
3178   {
3179     if (bl->inserted && !is_tracepoint (bl->owner))
3180       val |= remove_breakpoint (bl, mark_uninserted);
3181   }
3182   return val;
3183 }
3184
3185 /* When a thread exits, remove breakpoints that are related to
3186    that thread.  */
3187
3188 static void
3189 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3190 {
3191   struct breakpoint *b, *b_tmp;
3192
3193   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3194     {
3195       if (b->thread == tp->num && user_breakpoint_p (b))
3196         {
3197           b->disposition = disp_del_at_next_stop;
3198
3199           printf_filtered (_("\
3200 Thread-specific breakpoint %d deleted - thread %d no longer in the thread list.\n"),
3201                           b->number, tp->num);
3202
3203           /* Hide it from the user.  */
3204           b->number = 0;
3205        }
3206     }
3207 }
3208
3209 /* Remove breakpoints of process PID.  */
3210
3211 int
3212 remove_breakpoints_pid (int pid)
3213 {
3214   struct bp_location *bl, **blp_tmp;
3215   int val;
3216   struct inferior *inf = find_inferior_pid (pid);
3217
3218   ALL_BP_LOCATIONS (bl, blp_tmp)
3219   {
3220     if (bl->pspace != inf->pspace)
3221       continue;
3222
3223     if (bl->owner->type == bp_dprintf)
3224       continue;
3225
3226     if (bl->inserted)
3227       {
3228         val = remove_breakpoint (bl, mark_uninserted);
3229         if (val != 0)
3230           return val;
3231       }
3232   }
3233   return 0;
3234 }
3235
3236 int
3237 reattach_breakpoints (int pid)
3238 {
3239   struct cleanup *old_chain;
3240   struct bp_location *bl, **blp_tmp;
3241   int val;
3242   struct ui_file *tmp_error_stream;
3243   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3244   struct inferior *inf;
3245   struct thread_info *tp;
3246
3247   tp = any_live_thread_of_process (pid);
3248   if (tp == NULL)
3249     return 1;
3250
3251   inf = find_inferior_pid (pid);
3252   old_chain = save_inferior_ptid ();
3253
3254   inferior_ptid = tp->ptid;
3255
3256   tmp_error_stream = mem_fileopen ();
3257   make_cleanup_ui_file_delete (tmp_error_stream);
3258
3259   ALL_BP_LOCATIONS (bl, blp_tmp)
3260   {
3261     if (bl->pspace != inf->pspace)
3262       continue;
3263
3264     if (bl->inserted)
3265       {
3266         bl->inserted = 0;
3267         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3268         if (val != 0)
3269           {
3270             do_cleanups (old_chain);
3271             return val;
3272           }
3273       }
3274   }
3275   do_cleanups (old_chain);
3276   return 0;
3277 }
3278
3279 static int internal_breakpoint_number = -1;
3280
3281 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3282    If INTERNAL is non-zero, the breakpoint number will be populated
3283    from internal_breakpoint_number and that variable decremented.
3284    Otherwise the breakpoint number will be populated from
3285    breakpoint_count and that value incremented.  Internal breakpoints
3286    do not set the internal var bpnum.  */
3287 static void
3288 set_breakpoint_number (int internal, struct breakpoint *b)
3289 {
3290   if (internal)
3291     b->number = internal_breakpoint_number--;
3292   else
3293     {
3294       set_breakpoint_count (breakpoint_count + 1);
3295       b->number = breakpoint_count;
3296     }
3297 }
3298
3299 static struct breakpoint *
3300 create_internal_breakpoint (struct gdbarch *gdbarch,
3301                             CORE_ADDR address, enum bptype type,
3302                             const struct breakpoint_ops *ops)
3303 {
3304   struct symtab_and_line sal;
3305   struct breakpoint *b;
3306
3307   init_sal (&sal);              /* Initialize to zeroes.  */
3308
3309   sal.pc = address;
3310   sal.section = find_pc_overlay (sal.pc);
3311   sal.pspace = current_program_space;
3312
3313   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3314   b->number = internal_breakpoint_number--;
3315   b->disposition = disp_donttouch;
3316
3317   return b;
3318 }
3319
3320 static const char *const longjmp_names[] =
3321   {
3322     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3323   };
3324 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3325
3326 /* Per-objfile data private to breakpoint.c.  */
3327 struct breakpoint_objfile_data
3328 {
3329   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3330   struct bound_minimal_symbol overlay_msym;
3331
3332   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3333   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3334
3335   /* True if we have looked for longjmp probes.  */
3336   int longjmp_searched;
3337
3338   /* SystemTap probe points for longjmp (if any).  */
3339   VEC (probe_p) *longjmp_probes;
3340
3341   /* Minimal symbol for "std::terminate()" (if any).  */
3342   struct bound_minimal_symbol terminate_msym;
3343
3344   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3345   struct bound_minimal_symbol exception_msym;
3346
3347   /* True if we have looked for exception probes.  */
3348   int exception_searched;
3349
3350   /* SystemTap probe points for unwinding (if any).  */
3351   VEC (probe_p) *exception_probes;
3352 };
3353
3354 static const struct objfile_data *breakpoint_objfile_key;
3355
3356 /* Minimal symbol not found sentinel.  */
3357 static struct minimal_symbol msym_not_found;
3358
3359 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3360
3361 static int
3362 msym_not_found_p (const struct minimal_symbol *msym)
3363 {
3364   return msym == &msym_not_found;
3365 }
3366
3367 /* Return per-objfile data needed by breakpoint.c.
3368    Allocate the data if necessary.  */
3369
3370 static struct breakpoint_objfile_data *
3371 get_breakpoint_objfile_data (struct objfile *objfile)
3372 {
3373   struct breakpoint_objfile_data *bp_objfile_data;
3374
3375   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3376   if (bp_objfile_data == NULL)
3377     {
3378       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3379                                        sizeof (*bp_objfile_data));
3380
3381       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3382       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3383     }
3384   return bp_objfile_data;
3385 }
3386
3387 static void
3388 free_breakpoint_probes (struct objfile *obj, void *data)
3389 {
3390   struct breakpoint_objfile_data *bp_objfile_data = data;
3391
3392   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3393   VEC_free (probe_p, bp_objfile_data->exception_probes);
3394 }
3395
3396 static void
3397 create_overlay_event_breakpoint (void)
3398 {
3399   struct objfile *objfile;
3400   const char *const func_name = "_ovly_debug_event";
3401
3402   ALL_OBJFILES (objfile)
3403     {
3404       struct breakpoint *b;
3405       struct breakpoint_objfile_data *bp_objfile_data;
3406       CORE_ADDR addr;
3407
3408       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3409
3410       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3411         continue;
3412
3413       if (bp_objfile_data->overlay_msym.minsym == NULL)
3414         {
3415           struct bound_minimal_symbol m;
3416
3417           m = lookup_minimal_symbol_text (func_name, objfile);
3418           if (m.minsym == NULL)
3419             {
3420               /* Avoid future lookups in this objfile.  */
3421               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3422               continue;
3423             }
3424           bp_objfile_data->overlay_msym = m;
3425         }
3426
3427       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3428       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3429                                       bp_overlay_event,
3430                                       &internal_breakpoint_ops);
3431       b->addr_string = xstrdup (func_name);
3432
3433       if (overlay_debugging == ovly_auto)
3434         {
3435           b->enable_state = bp_enabled;
3436           overlay_events_enabled = 1;
3437         }
3438       else
3439        {
3440          b->enable_state = bp_disabled;
3441          overlay_events_enabled = 0;
3442        }
3443     }
3444   update_global_location_list (UGLL_MAY_INSERT);
3445 }
3446
3447 static void
3448 create_longjmp_master_breakpoint (void)
3449 {
3450   struct program_space *pspace;
3451   struct cleanup *old_chain;
3452
3453   old_chain = save_current_program_space ();
3454
3455   ALL_PSPACES (pspace)
3456   {
3457     struct objfile *objfile;
3458
3459     set_current_program_space (pspace);
3460
3461     ALL_OBJFILES (objfile)
3462     {
3463       int i;
3464       struct gdbarch *gdbarch;
3465       struct breakpoint_objfile_data *bp_objfile_data;
3466
3467       gdbarch = get_objfile_arch (objfile);
3468
3469       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3470
3471       if (!bp_objfile_data->longjmp_searched)
3472         {
3473           VEC (probe_p) *ret;
3474
3475           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3476           if (ret != NULL)
3477             {
3478               /* We are only interested in checking one element.  */
3479               struct probe *p = VEC_index (probe_p, ret, 0);
3480
3481               if (!can_evaluate_probe_arguments (p))
3482                 {
3483                   /* We cannot use the probe interface here, because it does
3484                      not know how to evaluate arguments.  */
3485                   VEC_free (probe_p, ret);
3486                   ret = NULL;
3487                 }
3488             }
3489           bp_objfile_data->longjmp_probes = ret;
3490           bp_objfile_data->longjmp_searched = 1;
3491         }
3492
3493       if (bp_objfile_data->longjmp_probes != NULL)
3494         {
3495           int i;
3496           struct probe *probe;
3497           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3498
3499           for (i = 0;
3500                VEC_iterate (probe_p,
3501                             bp_objfile_data->longjmp_probes,
3502                             i, probe);
3503                ++i)
3504             {
3505               struct breakpoint *b;
3506
3507               b = create_internal_breakpoint (gdbarch,
3508                                               get_probe_address (probe,
3509                                                                  objfile),
3510                                               bp_longjmp_master,
3511                                               &internal_breakpoint_ops);
3512               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3513               b->enable_state = bp_disabled;
3514             }
3515
3516           continue;
3517         }
3518
3519       if (!gdbarch_get_longjmp_target_p (gdbarch))
3520         continue;
3521
3522       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3523         {
3524           struct breakpoint *b;
3525           const char *func_name;
3526           CORE_ADDR addr;
3527
3528           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3529             continue;
3530
3531           func_name = longjmp_names[i];
3532           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3533             {
3534               struct bound_minimal_symbol m;
3535
3536               m = lookup_minimal_symbol_text (func_name, objfile);
3537               if (m.minsym == NULL)
3538                 {
3539                   /* Prevent future lookups in this objfile.  */
3540                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3541                   continue;
3542                 }
3543               bp_objfile_data->longjmp_msym[i] = m;
3544             }
3545
3546           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3547           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3548                                           &internal_breakpoint_ops);
3549           b->addr_string = xstrdup (func_name);
3550           b->enable_state = bp_disabled;
3551         }
3552     }
3553   }
3554   update_global_location_list (UGLL_MAY_INSERT);
3555
3556   do_cleanups (old_chain);
3557 }
3558
3559 /* Create a master std::terminate breakpoint.  */
3560 static void
3561 create_std_terminate_master_breakpoint (void)
3562 {
3563   struct program_space *pspace;
3564   struct cleanup *old_chain;
3565   const char *const func_name = "std::terminate()";
3566
3567   old_chain = save_current_program_space ();
3568
3569   ALL_PSPACES (pspace)
3570   {
3571     struct objfile *objfile;
3572     CORE_ADDR addr;
3573
3574     set_current_program_space (pspace);
3575
3576     ALL_OBJFILES (objfile)
3577     {
3578       struct breakpoint *b;
3579       struct breakpoint_objfile_data *bp_objfile_data;
3580
3581       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3582
3583       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3584         continue;
3585
3586       if (bp_objfile_data->terminate_msym.minsym == NULL)
3587         {
3588           struct bound_minimal_symbol m;
3589
3590           m = lookup_minimal_symbol (func_name, NULL, objfile);
3591           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3592                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3593             {
3594               /* Prevent future lookups in this objfile.  */
3595               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3596               continue;
3597             }
3598           bp_objfile_data->terminate_msym = m;
3599         }
3600
3601       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3602       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3603                                       bp_std_terminate_master,
3604                                       &internal_breakpoint_ops);
3605       b->addr_string = xstrdup (func_name);
3606       b->enable_state = bp_disabled;
3607     }
3608   }
3609
3610   update_global_location_list (UGLL_MAY_INSERT);
3611
3612   do_cleanups (old_chain);
3613 }
3614
3615 /* Install a master breakpoint on the unwinder's debug hook.  */
3616
3617 static void
3618 create_exception_master_breakpoint (void)
3619 {
3620   struct objfile *objfile;
3621   const char *const func_name = "_Unwind_DebugHook";
3622
3623   ALL_OBJFILES (objfile)
3624     {
3625       struct breakpoint *b;
3626       struct gdbarch *gdbarch;
3627       struct breakpoint_objfile_data *bp_objfile_data;
3628       CORE_ADDR addr;
3629
3630       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3631
3632       /* We prefer the SystemTap probe point if it exists.  */
3633       if (!bp_objfile_data->exception_searched)
3634         {
3635           VEC (probe_p) *ret;
3636
3637           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3638
3639           if (ret != NULL)
3640             {
3641               /* We are only interested in checking one element.  */
3642               struct probe *p = VEC_index (probe_p, ret, 0);
3643
3644               if (!can_evaluate_probe_arguments (p))
3645                 {
3646                   /* We cannot use the probe interface here, because it does
3647                      not know how to evaluate arguments.  */
3648                   VEC_free (probe_p, ret);
3649                   ret = NULL;
3650                 }
3651             }
3652           bp_objfile_data->exception_probes = ret;
3653           bp_objfile_data->exception_searched = 1;
3654         }
3655
3656       if (bp_objfile_data->exception_probes != NULL)
3657         {
3658           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3659           int i;
3660           struct probe *probe;
3661
3662           for (i = 0;
3663                VEC_iterate (probe_p,
3664                             bp_objfile_data->exception_probes,
3665                             i, probe);
3666                ++i)
3667             {
3668               struct breakpoint *b;
3669
3670               b = create_internal_breakpoint (gdbarch,
3671                                               get_probe_address (probe,
3672                                                                  objfile),
3673                                               bp_exception_master,
3674                                               &internal_breakpoint_ops);
3675               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3676               b->enable_state = bp_disabled;
3677             }
3678
3679           continue;
3680         }
3681
3682       /* Otherwise, try the hook function.  */
3683
3684       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3685         continue;
3686
3687       gdbarch = get_objfile_arch (objfile);
3688
3689       if (bp_objfile_data->exception_msym.minsym == NULL)
3690         {
3691           struct bound_minimal_symbol debug_hook;
3692
3693           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3694           if (debug_hook.minsym == NULL)
3695             {
3696               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3697               continue;
3698             }
3699
3700           bp_objfile_data->exception_msym = debug_hook;
3701         }
3702
3703       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3704       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3705                                                  &current_target);
3706       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3707                                       &internal_breakpoint_ops);
3708       b->addr_string = xstrdup (func_name);
3709       b->enable_state = bp_disabled;
3710     }
3711
3712   update_global_location_list (UGLL_MAY_INSERT);
3713 }
3714
3715 void
3716 update_breakpoints_after_exec (void)
3717 {
3718   struct breakpoint *b, *b_tmp;
3719   struct bp_location *bploc, **bplocp_tmp;
3720
3721   /* We're about to delete breakpoints from GDB's lists.  If the
3722      INSERTED flag is true, GDB will try to lift the breakpoints by
3723      writing the breakpoints' "shadow contents" back into memory.  The
3724      "shadow contents" are NOT valid after an exec, so GDB should not
3725      do that.  Instead, the target is responsible from marking
3726      breakpoints out as soon as it detects an exec.  We don't do that
3727      here instead, because there may be other attempts to delete
3728      breakpoints after detecting an exec and before reaching here.  */
3729   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3730     if (bploc->pspace == current_program_space)
3731       gdb_assert (!bploc->inserted);
3732
3733   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3734   {
3735     if (b->pspace != current_program_space)
3736       continue;
3737
3738     /* Solib breakpoints must be explicitly reset after an exec().  */
3739     if (b->type == bp_shlib_event)
3740       {
3741         delete_breakpoint (b);
3742         continue;
3743       }
3744
3745     /* JIT breakpoints must be explicitly reset after an exec().  */
3746     if (b->type == bp_jit_event)
3747       {
3748         delete_breakpoint (b);
3749         continue;
3750       }
3751
3752     /* Thread event breakpoints must be set anew after an exec(),
3753        as must overlay event and longjmp master breakpoints.  */
3754     if (b->type == bp_thread_event || b->type == bp_overlay_event
3755         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3756         || b->type == bp_exception_master)
3757       {
3758         delete_breakpoint (b);
3759         continue;
3760       }
3761
3762     /* Step-resume breakpoints are meaningless after an exec().  */
3763     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3764       {
3765         delete_breakpoint (b);
3766         continue;
3767       }
3768
3769     /* Just like single-step breakpoints.  */
3770     if (b->type == bp_single_step)
3771       {
3772         delete_breakpoint (b);
3773         continue;
3774       }
3775
3776     /* Longjmp and longjmp-resume breakpoints are also meaningless
3777        after an exec.  */
3778     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3779         || b->type == bp_longjmp_call_dummy
3780         || b->type == bp_exception || b->type == bp_exception_resume)
3781       {
3782         delete_breakpoint (b);
3783         continue;
3784       }
3785
3786     if (b->type == bp_catchpoint)
3787       {
3788         /* For now, none of the bp_catchpoint breakpoints need to
3789            do anything at this point.  In the future, if some of
3790            the catchpoints need to something, we will need to add
3791            a new method, and call this method from here.  */
3792         continue;
3793       }
3794
3795     /* bp_finish is a special case.  The only way we ought to be able
3796        to see one of these when an exec() has happened, is if the user
3797        caught a vfork, and then said "finish".  Ordinarily a finish just
3798        carries them to the call-site of the current callee, by setting
3799        a temporary bp there and resuming.  But in this case, the finish
3800        will carry them entirely through the vfork & exec.
3801
3802        We don't want to allow a bp_finish to remain inserted now.  But
3803        we can't safely delete it, 'cause finish_command has a handle to
3804        the bp on a bpstat, and will later want to delete it.  There's a
3805        chance (and I've seen it happen) that if we delete the bp_finish
3806        here, that its storage will get reused by the time finish_command
3807        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3808        We really must allow finish_command to delete a bp_finish.
3809
3810        In the absence of a general solution for the "how do we know
3811        it's safe to delete something others may have handles to?"
3812        problem, what we'll do here is just uninsert the bp_finish, and
3813        let finish_command delete it.
3814
3815        (We know the bp_finish is "doomed" in the sense that it's
3816        momentary, and will be deleted as soon as finish_command sees
3817        the inferior stopped.  So it doesn't matter that the bp's
3818        address is probably bogus in the new a.out, unlike e.g., the
3819        solib breakpoints.)  */
3820
3821     if (b->type == bp_finish)
3822       {
3823         continue;
3824       }
3825
3826     /* Without a symbolic address, we have little hope of the
3827        pre-exec() address meaning the same thing in the post-exec()
3828        a.out.  */
3829     if (b->addr_string == NULL)
3830       {
3831         delete_breakpoint (b);
3832         continue;
3833       }
3834   }
3835 }
3836
3837 int
3838 detach_breakpoints (ptid_t ptid)
3839 {
3840   struct bp_location *bl, **blp_tmp;
3841   int val = 0;
3842   struct cleanup *old_chain = save_inferior_ptid ();
3843   struct inferior *inf = current_inferior ();
3844
3845   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3846     error (_("Cannot detach breakpoints of inferior_ptid"));
3847
3848   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3849   inferior_ptid = ptid;
3850   ALL_BP_LOCATIONS (bl, blp_tmp)
3851   {
3852     if (bl->pspace != inf->pspace)
3853       continue;
3854
3855     /* This function must physically remove breakpoints locations
3856        from the specified ptid, without modifying the breakpoint
3857        package's state.  Locations of type bp_loc_other are only
3858        maintained at GDB side.  So, there is no need to remove
3859        these bp_loc_other locations.  Moreover, removing these
3860        would modify the breakpoint package's state.  */
3861     if (bl->loc_type == bp_loc_other)
3862       continue;
3863
3864     if (bl->inserted)
3865       val |= remove_breakpoint_1 (bl, mark_inserted);
3866   }
3867
3868   do_cleanups (old_chain);
3869   return val;
3870 }
3871
3872 /* Remove the breakpoint location BL from the current address space.
3873    Note that this is used to detach breakpoints from a child fork.
3874    When we get here, the child isn't in the inferior list, and neither
3875    do we have objects to represent its address space --- we should
3876    *not* look at bl->pspace->aspace here.  */
3877
3878 static int
3879 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3880 {
3881   int val;
3882
3883   /* BL is never in moribund_locations by our callers.  */
3884   gdb_assert (bl->owner != NULL);
3885
3886   if (bl->permanent)
3887     /* Permanent breakpoints cannot be inserted or removed.  */
3888     return 0;
3889
3890   /* The type of none suggests that owner is actually deleted.
3891      This should not ever happen.  */
3892   gdb_assert (bl->owner->type != bp_none);
3893
3894   if (bl->loc_type == bp_loc_software_breakpoint
3895       || bl->loc_type == bp_loc_hardware_breakpoint)
3896     {
3897       /* "Normal" instruction breakpoint: either the standard
3898          trap-instruction bp (bp_breakpoint), or a
3899          bp_hardware_breakpoint.  */
3900
3901       /* First check to see if we have to handle an overlay.  */
3902       if (overlay_debugging == ovly_off
3903           || bl->section == NULL
3904           || !(section_is_overlay (bl->section)))
3905         {
3906           /* No overlay handling: just remove the breakpoint.  */
3907
3908           /* If we're trying to uninsert a memory breakpoint that we
3909              know is set in a dynamic object that is marked
3910              shlib_disabled, then either the dynamic object was
3911              removed with "remove-symbol-file" or with
3912              "nosharedlibrary".  In the former case, we don't know
3913              whether another dynamic object might have loaded over the
3914              breakpoint's address -- the user might well let us know
3915              about it next with add-symbol-file (the whole point of
3916              add-symbol-file is letting the user manually maintain a
3917              list of dynamically loaded objects).  If we have the
3918              breakpoint's shadow memory, that is, this is a software
3919              breakpoint managed by GDB, check whether the breakpoint
3920              is still inserted in memory, to avoid overwriting wrong
3921              code with stale saved shadow contents.  Note that HW
3922              breakpoints don't have shadow memory, as they're
3923              implemented using a mechanism that is not dependent on
3924              being able to modify the target's memory, and as such
3925              they should always be removed.  */
3926           if (bl->shlib_disabled
3927               && bl->target_info.shadow_len != 0
3928               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3929             val = 0;
3930           else
3931             val = bl->owner->ops->remove_location (bl);
3932         }
3933       else
3934         {
3935           /* This breakpoint is in an overlay section.
3936              Did we set a breakpoint at the LMA?  */
3937           if (!overlay_events_enabled)
3938               {
3939                 /* Yes -- overlay event support is not active, so we
3940                    should have set a breakpoint at the LMA.  Remove it.  
3941                 */
3942                 /* Ignore any failures: if the LMA is in ROM, we will
3943                    have already warned when we failed to insert it.  */
3944                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3945                   target_remove_hw_breakpoint (bl->gdbarch,
3946                                                &bl->overlay_target_info);
3947                 else
3948                   target_remove_breakpoint (bl->gdbarch,
3949                                             &bl->overlay_target_info);
3950               }
3951           /* Did we set a breakpoint at the VMA? 
3952              If so, we will have marked the breakpoint 'inserted'.  */
3953           if (bl->inserted)
3954             {
3955               /* Yes -- remove it.  Previously we did not bother to
3956                  remove the breakpoint if the section had been
3957                  unmapped, but let's not rely on that being safe.  We
3958                  don't know what the overlay manager might do.  */
3959
3960               /* However, we should remove *software* breakpoints only
3961                  if the section is still mapped, or else we overwrite
3962                  wrong code with the saved shadow contents.  */
3963               if (bl->loc_type == bp_loc_hardware_breakpoint
3964                   || section_is_mapped (bl->section))
3965                 val = bl->owner->ops->remove_location (bl);
3966               else
3967                 val = 0;
3968             }
3969           else
3970             {
3971               /* No -- not inserted, so no need to remove.  No error.  */
3972               val = 0;
3973             }
3974         }
3975
3976       /* In some cases, we might not be able to remove a breakpoint in
3977          a shared library that has already been removed, but we have
3978          not yet processed the shlib unload event.  Similarly for an
3979          unloaded add-symbol-file object - the user might not yet have
3980          had the chance to remove-symbol-file it.  shlib_disabled will
3981          be set if the library/object has already been removed, but
3982          the breakpoint hasn't been uninserted yet, e.g., after
3983          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3984          always-inserted mode.  */
3985       if (val
3986           && (bl->loc_type == bp_loc_software_breakpoint
3987               && (bl->shlib_disabled
3988                   || solib_name_from_address (bl->pspace, bl->address)
3989                   || shared_objfile_contains_address_p (bl->pspace,
3990                                                         bl->address))))
3991         val = 0;
3992
3993       if (val)
3994         return val;
3995       bl->inserted = (is == mark_inserted);
3996     }
3997   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3998     {
3999       gdb_assert (bl->owner->ops != NULL
4000                   && bl->owner->ops->remove_location != NULL);
4001
4002       bl->inserted = (is == mark_inserted);
4003       bl->owner->ops->remove_location (bl);
4004
4005       /* Failure to remove any of the hardware watchpoints comes here.  */
4006       if ((is == mark_uninserted) && (bl->inserted))
4007         warning (_("Could not remove hardware watchpoint %d."),
4008                  bl->owner->number);
4009     }
4010   else if (bl->owner->type == bp_catchpoint
4011            && breakpoint_enabled (bl->owner)
4012            && !bl->duplicate)
4013     {
4014       gdb_assert (bl->owner->ops != NULL
4015                   && bl->owner->ops->remove_location != NULL);
4016
4017       val = bl->owner->ops->remove_location (bl);
4018       if (val)
4019         return val;
4020
4021       bl->inserted = (is == mark_inserted);
4022     }
4023
4024   return 0;
4025 }
4026
4027 static int
4028 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
4029 {
4030   int ret;
4031   struct cleanup *old_chain;
4032
4033   /* BL is never in moribund_locations by our callers.  */
4034   gdb_assert (bl->owner != NULL);
4035
4036   if (bl->permanent)
4037     /* Permanent breakpoints cannot be inserted or removed.  */
4038     return 0;
4039
4040   /* The type of none suggests that owner is actually deleted.
4041      This should not ever happen.  */
4042   gdb_assert (bl->owner->type != bp_none);
4043
4044   old_chain = save_current_space_and_thread ();
4045
4046   switch_to_program_space_and_thread (bl->pspace);
4047
4048   ret = remove_breakpoint_1 (bl, is);
4049
4050   do_cleanups (old_chain);
4051   return ret;
4052 }
4053
4054 /* Clear the "inserted" flag in all breakpoints.  */
4055
4056 void
4057 mark_breakpoints_out (void)
4058 {
4059   struct bp_location *bl, **blp_tmp;
4060
4061   ALL_BP_LOCATIONS (bl, blp_tmp)
4062     if (bl->pspace == current_program_space
4063         && !bl->permanent)
4064       bl->inserted = 0;
4065 }
4066
4067 /* Clear the "inserted" flag in all breakpoints and delete any
4068    breakpoints which should go away between runs of the program.
4069
4070    Plus other such housekeeping that has to be done for breakpoints
4071    between runs.
4072
4073    Note: this function gets called at the end of a run (by
4074    generic_mourn_inferior) and when a run begins (by
4075    init_wait_for_inferior).  */
4076
4077
4078
4079 void
4080 breakpoint_init_inferior (enum inf_context context)
4081 {
4082   struct breakpoint *b, *b_tmp;
4083   struct bp_location *bl, **blp_tmp;
4084   int ix;
4085   struct program_space *pspace = current_program_space;
4086
4087   /* If breakpoint locations are shared across processes, then there's
4088      nothing to do.  */
4089   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4090     return;
4091
4092   mark_breakpoints_out ();
4093
4094   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4095   {
4096     if (b->loc && b->loc->pspace != pspace)
4097       continue;
4098
4099     switch (b->type)
4100       {
4101       case bp_call_dummy:
4102       case bp_longjmp_call_dummy:
4103
4104         /* If the call dummy breakpoint is at the entry point it will
4105            cause problems when the inferior is rerun, so we better get
4106            rid of it.  */
4107
4108       case bp_watchpoint_scope:
4109
4110         /* Also get rid of scope breakpoints.  */
4111
4112       case bp_shlib_event:
4113
4114         /* Also remove solib event breakpoints.  Their addresses may
4115            have changed since the last time we ran the program.
4116            Actually we may now be debugging against different target;
4117            and so the solib backend that installed this breakpoint may
4118            not be used in by the target.  E.g.,
4119
4120            (gdb) file prog-linux
4121            (gdb) run               # native linux target
4122            ...
4123            (gdb) kill
4124            (gdb) file prog-win.exe
4125            (gdb) tar rem :9999     # remote Windows gdbserver.
4126         */
4127
4128       case bp_step_resume:
4129
4130         /* Also remove step-resume breakpoints.  */
4131
4132       case bp_single_step:
4133
4134         /* Also remove single-step breakpoints.  */
4135
4136         delete_breakpoint (b);
4137         break;
4138
4139       case bp_watchpoint:
4140       case bp_hardware_watchpoint:
4141       case bp_read_watchpoint:
4142       case bp_access_watchpoint:
4143         {
4144           struct watchpoint *w = (struct watchpoint *) b;
4145
4146           /* Likewise for watchpoints on local expressions.  */
4147           if (w->exp_valid_block != NULL)
4148             delete_breakpoint (b);
4149           else if (context == inf_starting)
4150             {
4151               /* Reset val field to force reread of starting value in
4152                  insert_breakpoints.  */
4153               if (w->val)
4154                 value_free (w->val);
4155               w->val = NULL;
4156               w->val_valid = 0;
4157           }
4158         }
4159         break;
4160       default:
4161         break;
4162       }
4163   }
4164
4165   /* Get rid of the moribund locations.  */
4166   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4167     decref_bp_location (&bl);
4168   VEC_free (bp_location_p, moribund_locations);
4169 }
4170
4171 /* These functions concern about actual breakpoints inserted in the
4172    target --- to e.g. check if we need to do decr_pc adjustment or if
4173    we need to hop over the bkpt --- so we check for address space
4174    match, not program space.  */
4175
4176 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4177    exists at PC.  It returns ordinary_breakpoint_here if it's an
4178    ordinary breakpoint, or permanent_breakpoint_here if it's a
4179    permanent breakpoint.
4180    - When continuing from a location with an ordinary breakpoint, we
4181      actually single step once before calling insert_breakpoints.
4182    - When continuing from a location with a permanent breakpoint, we
4183      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4184      the target, to advance the PC past the breakpoint.  */
4185
4186 enum breakpoint_here
4187 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4188 {
4189   struct bp_location *bl, **blp_tmp;
4190   int any_breakpoint_here = 0;
4191
4192   ALL_BP_LOCATIONS (bl, blp_tmp)
4193     {
4194       if (bl->loc_type != bp_loc_software_breakpoint
4195           && bl->loc_type != bp_loc_hardware_breakpoint)
4196         continue;
4197
4198       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4199       if ((breakpoint_enabled (bl->owner)
4200            || bl->permanent)
4201           && breakpoint_location_address_match (bl, aspace, pc))
4202         {
4203           if (overlay_debugging 
4204               && section_is_overlay (bl->section)
4205               && !section_is_mapped (bl->section))
4206             continue;           /* unmapped overlay -- can't be a match */
4207           else if (bl->permanent)
4208             return permanent_breakpoint_here;
4209           else
4210             any_breakpoint_here = 1;
4211         }
4212     }
4213
4214   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
4215 }
4216
4217 /* Return true if there's a moribund breakpoint at PC.  */
4218
4219 int
4220 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4221 {
4222   struct bp_location *loc;
4223   int ix;
4224
4225   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4226     if (breakpoint_location_address_match (loc, aspace, pc))
4227       return 1;
4228
4229   return 0;
4230 }
4231
4232 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4233
4234 int
4235 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4236 {
4237   struct bp_location *bl, **blp_tmp;
4238
4239   ALL_BP_LOCATIONS (bl, blp_tmp)
4240     {
4241       if (bl->loc_type != bp_loc_software_breakpoint
4242           && bl->loc_type != bp_loc_hardware_breakpoint)
4243         continue;
4244
4245       if (bl->inserted
4246           && breakpoint_location_address_match (bl, aspace, pc))
4247         {
4248           if (overlay_debugging 
4249               && section_is_overlay (bl->section)
4250               && !section_is_mapped (bl->section))
4251             continue;           /* unmapped overlay -- can't be a match */
4252           else
4253             return 1;
4254         }
4255     }
4256   return 0;
4257 }
4258
4259 /* This function returns non-zero iff there is a software breakpoint
4260    inserted at PC.  */
4261
4262 int
4263 software_breakpoint_inserted_here_p (struct address_space *aspace,
4264                                      CORE_ADDR pc)
4265 {
4266   struct bp_location *bl, **blp_tmp;
4267
4268   ALL_BP_LOCATIONS (bl, blp_tmp)
4269     {
4270       if (bl->loc_type != bp_loc_software_breakpoint)
4271         continue;
4272
4273       if (bl->inserted
4274           && breakpoint_address_match (bl->pspace->aspace, bl->address,
4275                                        aspace, pc))
4276         {
4277           if (overlay_debugging 
4278               && section_is_overlay (bl->section)
4279               && !section_is_mapped (bl->section))
4280             continue;           /* unmapped overlay -- can't be a match */
4281           else
4282             return 1;
4283         }
4284     }
4285
4286   return 0;
4287 }
4288
4289 int
4290 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4291                                        CORE_ADDR addr, ULONGEST len)
4292 {
4293   struct breakpoint *bpt;
4294
4295   ALL_BREAKPOINTS (bpt)
4296     {
4297       struct bp_location *loc;
4298
4299       if (bpt->type != bp_hardware_watchpoint
4300           && bpt->type != bp_access_watchpoint)
4301         continue;
4302
4303       if (!breakpoint_enabled (bpt))
4304         continue;
4305
4306       for (loc = bpt->loc; loc; loc = loc->next)
4307         if (loc->pspace->aspace == aspace && loc->inserted)
4308           {
4309             CORE_ADDR l, h;
4310
4311             /* Check for intersection.  */
4312             l = max (loc->address, addr);
4313             h = min (loc->address + loc->length, addr + len);
4314             if (l < h)
4315               return 1;
4316           }
4317     }
4318   return 0;
4319 }
4320 \f
4321
4322 /* bpstat stuff.  External routines' interfaces are documented
4323    in breakpoint.h.  */
4324
4325 int
4326 is_catchpoint (struct breakpoint *ep)
4327 {
4328   return (ep->type == bp_catchpoint);
4329 }
4330
4331 /* Frees any storage that is part of a bpstat.  Does not walk the
4332    'next' chain.  */
4333
4334 static void
4335 bpstat_free (bpstat bs)
4336 {
4337   if (bs->old_val != NULL)
4338     value_free (bs->old_val);
4339   decref_counted_command_line (&bs->commands);
4340   decref_bp_location (&bs->bp_location_at);
4341   xfree (bs);
4342 }
4343
4344 /* Clear a bpstat so that it says we are not at any breakpoint.
4345    Also free any storage that is part of a bpstat.  */
4346
4347 void
4348 bpstat_clear (bpstat *bsp)
4349 {
4350   bpstat p;
4351   bpstat q;
4352
4353   if (bsp == 0)
4354     return;
4355   p = *bsp;
4356   while (p != NULL)
4357     {
4358       q = p->next;
4359       bpstat_free (p);
4360       p = q;
4361     }
4362   *bsp = NULL;
4363 }
4364
4365 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4366    is part of the bpstat is copied as well.  */
4367
4368 bpstat
4369 bpstat_copy (bpstat bs)
4370 {
4371   bpstat p = NULL;
4372   bpstat tmp;
4373   bpstat retval = NULL;
4374
4375   if (bs == NULL)
4376     return bs;
4377
4378   for (; bs != NULL; bs = bs->next)
4379     {
4380       tmp = (bpstat) xmalloc (sizeof (*tmp));
4381       memcpy (tmp, bs, sizeof (*tmp));
4382       incref_counted_command_line (tmp->commands);
4383       incref_bp_location (tmp->bp_location_at);
4384       if (bs->old_val != NULL)
4385         {
4386           tmp->old_val = value_copy (bs->old_val);
4387           release_value (tmp->old_val);
4388         }
4389
4390       if (p == NULL)
4391         /* This is the first thing in the chain.  */
4392         retval = tmp;
4393       else
4394         p->next = tmp;
4395       p = tmp;
4396     }
4397   p->next = NULL;
4398   return retval;
4399 }
4400
4401 /* Find the bpstat associated with this breakpoint.  */
4402
4403 bpstat
4404 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4405 {
4406   if (bsp == NULL)
4407     return NULL;
4408
4409   for (; bsp != NULL; bsp = bsp->next)
4410     {
4411       if (bsp->breakpoint_at == breakpoint)
4412         return bsp;
4413     }
4414   return NULL;
4415 }
4416
4417 /* See breakpoint.h.  */
4418
4419 int
4420 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4421 {
4422   for (; bsp != NULL; bsp = bsp->next)
4423     {
4424       if (bsp->breakpoint_at == NULL)
4425         {
4426           /* A moribund location can never explain a signal other than
4427              GDB_SIGNAL_TRAP.  */
4428           if (sig == GDB_SIGNAL_TRAP)
4429             return 1;
4430         }
4431       else
4432         {
4433           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4434                                                         sig))
4435             return 1;
4436         }
4437     }
4438
4439   return 0;
4440 }
4441
4442 /* Put in *NUM the breakpoint number of the first breakpoint we are
4443    stopped at.  *BSP upon return is a bpstat which points to the
4444    remaining breakpoints stopped at (but which is not guaranteed to be
4445    good for anything but further calls to bpstat_num).
4446
4447    Return 0 if passed a bpstat which does not indicate any breakpoints.
4448    Return -1 if stopped at a breakpoint that has been deleted since
4449    we set it.
4450    Return 1 otherwise.  */
4451
4452 int
4453 bpstat_num (bpstat *bsp, int *num)
4454 {
4455   struct breakpoint *b;
4456
4457   if ((*bsp) == NULL)
4458     return 0;                   /* No more breakpoint values */
4459
4460   /* We assume we'll never have several bpstats that correspond to a
4461      single breakpoint -- otherwise, this function might return the
4462      same number more than once and this will look ugly.  */
4463   b = (*bsp)->breakpoint_at;
4464   *bsp = (*bsp)->next;
4465   if (b == NULL)
4466     return -1;                  /* breakpoint that's been deleted since */
4467
4468   *num = b->number;             /* We have its number */
4469   return 1;
4470 }
4471
4472 /* See breakpoint.h.  */
4473
4474 void
4475 bpstat_clear_actions (void)
4476 {
4477   struct thread_info *tp;
4478   bpstat bs;
4479
4480   if (ptid_equal (inferior_ptid, null_ptid))
4481     return;
4482
4483   tp = find_thread_ptid (inferior_ptid);
4484   if (tp == NULL)
4485     return;
4486
4487   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4488     {
4489       decref_counted_command_line (&bs->commands);
4490
4491       if (bs->old_val != NULL)
4492         {
4493           value_free (bs->old_val);
4494           bs->old_val = NULL;
4495         }
4496     }
4497 }
4498
4499 /* Called when a command is about to proceed the inferior.  */
4500
4501 static void
4502 breakpoint_about_to_proceed (void)
4503 {
4504   if (!ptid_equal (inferior_ptid, null_ptid))
4505     {
4506       struct thread_info *tp = inferior_thread ();
4507
4508       /* Allow inferior function calls in breakpoint commands to not
4509          interrupt the command list.  When the call finishes
4510          successfully, the inferior will be standing at the same
4511          breakpoint as if nothing happened.  */
4512       if (tp->control.in_infcall)
4513         return;
4514     }
4515
4516   breakpoint_proceeded = 1;
4517 }
4518
4519 /* Stub for cleaning up our state if we error-out of a breakpoint
4520    command.  */
4521 static void
4522 cleanup_executing_breakpoints (void *ignore)
4523 {
4524   executing_breakpoint_commands = 0;
4525 }
4526
4527 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4528    or its equivalent.  */
4529
4530 static int
4531 command_line_is_silent (struct command_line *cmd)
4532 {
4533   return cmd && (strcmp ("silent", cmd->line) == 0
4534                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4535 }
4536
4537 /* Execute all the commands associated with all the breakpoints at
4538    this location.  Any of these commands could cause the process to
4539    proceed beyond this point, etc.  We look out for such changes by
4540    checking the global "breakpoint_proceeded" after each command.
4541
4542    Returns true if a breakpoint command resumed the inferior.  In that
4543    case, it is the caller's responsibility to recall it again with the
4544    bpstat of the current thread.  */
4545
4546 static int
4547 bpstat_do_actions_1 (bpstat *bsp)
4548 {
4549   bpstat bs;
4550   struct cleanup *old_chain;
4551   int again = 0;
4552
4553   /* Avoid endless recursion if a `source' command is contained
4554      in bs->commands.  */
4555   if (executing_breakpoint_commands)
4556     return 0;
4557
4558   executing_breakpoint_commands = 1;
4559   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4560
4561   prevent_dont_repeat ();
4562
4563   /* This pointer will iterate over the list of bpstat's.  */
4564   bs = *bsp;
4565
4566   breakpoint_proceeded = 0;
4567   for (; bs != NULL; bs = bs->next)
4568     {
4569       struct counted_command_line *ccmd;
4570       struct command_line *cmd;
4571       struct cleanup *this_cmd_tree_chain;
4572
4573       /* Take ownership of the BSP's command tree, if it has one.
4574
4575          The command tree could legitimately contain commands like
4576          'step' and 'next', which call clear_proceed_status, which
4577          frees stop_bpstat's command tree.  To make sure this doesn't
4578          free the tree we're executing out from under us, we need to
4579          take ownership of the tree ourselves.  Since a given bpstat's
4580          commands are only executed once, we don't need to copy it; we
4581          can clear the pointer in the bpstat, and make sure we free
4582          the tree when we're done.  */
4583       ccmd = bs->commands;
4584       bs->commands = NULL;
4585       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4586       cmd = ccmd ? ccmd->commands : NULL;
4587       if (command_line_is_silent (cmd))
4588         {
4589           /* The action has been already done by bpstat_stop_status.  */
4590           cmd = cmd->next;
4591         }
4592
4593       while (cmd != NULL)
4594         {
4595           execute_control_command (cmd);
4596
4597           if (breakpoint_proceeded)
4598             break;
4599           else
4600             cmd = cmd->next;
4601         }
4602
4603       /* We can free this command tree now.  */
4604       do_cleanups (this_cmd_tree_chain);
4605
4606       if (breakpoint_proceeded)
4607         {
4608           if (target_can_async_p ())
4609             /* If we are in async mode, then the target might be still
4610                running, not stopped at any breakpoint, so nothing for
4611                us to do here -- just return to the event loop.  */
4612             ;
4613           else
4614             /* In sync mode, when execute_control_command returns
4615                we're already standing on the next breakpoint.
4616                Breakpoint commands for that stop were not run, since
4617                execute_command does not run breakpoint commands --
4618                only command_line_handler does, but that one is not
4619                involved in execution of breakpoint commands.  So, we
4620                can now execute breakpoint commands.  It should be
4621                noted that making execute_command do bpstat actions is
4622                not an option -- in this case we'll have recursive
4623                invocation of bpstat for each breakpoint with a
4624                command, and can easily blow up GDB stack.  Instead, we
4625                return true, which will trigger the caller to recall us
4626                with the new stop_bpstat.  */
4627             again = 1;
4628           break;
4629         }
4630     }
4631   do_cleanups (old_chain);
4632   return again;
4633 }
4634
4635 void
4636 bpstat_do_actions (void)
4637 {
4638   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4639
4640   /* Do any commands attached to breakpoint we are stopped at.  */
4641   while (!ptid_equal (inferior_ptid, null_ptid)
4642          && target_has_execution
4643          && !is_exited (inferior_ptid)
4644          && !is_executing (inferior_ptid))
4645     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4646        and only return when it is stopped at the next breakpoint, we
4647        keep doing breakpoint actions until it returns false to
4648        indicate the inferior was not resumed.  */
4649     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4650       break;
4651
4652   discard_cleanups (cleanup_if_error);
4653 }
4654
4655 /* Print out the (old or new) value associated with a watchpoint.  */
4656
4657 static void
4658 watchpoint_value_print (struct value *val, struct ui_file *stream)
4659 {
4660   if (val == NULL)
4661     fprintf_unfiltered (stream, _("<unreadable>"));
4662   else
4663     {
4664       struct value_print_options opts;
4665       get_user_print_options (&opts);
4666       value_print (val, stream, &opts);
4667     }
4668 }
4669
4670 /* Generic routine for printing messages indicating why we
4671    stopped.  The behavior of this function depends on the value
4672    'print_it' in the bpstat structure.  Under some circumstances we
4673    may decide not to print anything here and delegate the task to
4674    normal_stop().  */
4675
4676 static enum print_stop_action
4677 print_bp_stop_message (bpstat bs)
4678 {
4679   switch (bs->print_it)
4680     {
4681     case print_it_noop:
4682       /* Nothing should be printed for this bpstat entry.  */
4683       return PRINT_UNKNOWN;
4684       break;
4685
4686     case print_it_done:
4687       /* We still want to print the frame, but we already printed the
4688          relevant messages.  */
4689       return PRINT_SRC_AND_LOC;
4690       break;
4691
4692     case print_it_normal:
4693       {
4694         struct breakpoint *b = bs->breakpoint_at;
4695
4696         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4697            which has since been deleted.  */
4698         if (b == NULL)
4699           return PRINT_UNKNOWN;
4700
4701         /* Normal case.  Call the breakpoint's print_it method.  */
4702         return b->ops->print_it (bs);
4703       }
4704       break;
4705
4706     default:
4707       internal_error (__FILE__, __LINE__,
4708                       _("print_bp_stop_message: unrecognized enum value"));
4709       break;
4710     }
4711 }
4712
4713 /* A helper function that prints a shared library stopped event.  */
4714
4715 static void
4716 print_solib_event (int is_catchpoint)
4717 {
4718   int any_deleted
4719     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4720   int any_added
4721     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4722
4723   if (!is_catchpoint)
4724     {
4725       if (any_added || any_deleted)
4726         ui_out_text (current_uiout,
4727                      _("Stopped due to shared library event:\n"));
4728       else
4729         ui_out_text (current_uiout,
4730                      _("Stopped due to shared library event (no "
4731                        "libraries added or removed)\n"));
4732     }
4733
4734   if (ui_out_is_mi_like_p (current_uiout))
4735     ui_out_field_string (current_uiout, "reason",
4736                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4737
4738   if (any_deleted)
4739     {
4740       struct cleanup *cleanup;
4741       char *name;
4742       int ix;
4743
4744       ui_out_text (current_uiout, _("  Inferior unloaded "));
4745       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4746                                                     "removed");
4747       for (ix = 0;
4748            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4749                         ix, name);
4750            ++ix)
4751         {
4752           if (ix > 0)
4753             ui_out_text (current_uiout, "    ");
4754           ui_out_field_string (current_uiout, "library", name);
4755           ui_out_text (current_uiout, "\n");
4756         }
4757
4758       do_cleanups (cleanup);
4759     }
4760
4761   if (any_added)
4762     {
4763       struct so_list *iter;
4764       int ix;
4765       struct cleanup *cleanup;
4766
4767       ui_out_text (current_uiout, _("  Inferior loaded "));
4768       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4769                                                     "added");
4770       for (ix = 0;
4771            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4772                         ix, iter);
4773            ++ix)
4774         {
4775           if (ix > 0)
4776             ui_out_text (current_uiout, "    ");
4777           ui_out_field_string (current_uiout, "library", iter->so_name);
4778           ui_out_text (current_uiout, "\n");
4779         }
4780
4781       do_cleanups (cleanup);
4782     }
4783 }
4784
4785 /* Print a message indicating what happened.  This is called from
4786    normal_stop().  The input to this routine is the head of the bpstat
4787    list - a list of the eventpoints that caused this stop.  KIND is
4788    the target_waitkind for the stopping event.  This
4789    routine calls the generic print routine for printing a message
4790    about reasons for stopping.  This will print (for example) the
4791    "Breakpoint n," part of the output.  The return value of this
4792    routine is one of:
4793
4794    PRINT_UNKNOWN: Means we printed nothing.
4795    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4796    code to print the location.  An example is 
4797    "Breakpoint 1, " which should be followed by
4798    the location.
4799    PRINT_SRC_ONLY: Means we printed something, but there is no need
4800    to also print the location part of the message.
4801    An example is the catch/throw messages, which
4802    don't require a location appended to the end.
4803    PRINT_NOTHING: We have done some printing and we don't need any 
4804    further info to be printed.  */
4805
4806 enum print_stop_action
4807 bpstat_print (bpstat bs, int kind)
4808 {
4809   int val;
4810
4811   /* Maybe another breakpoint in the chain caused us to stop.
4812      (Currently all watchpoints go on the bpstat whether hit or not.
4813      That probably could (should) be changed, provided care is taken
4814      with respect to bpstat_explains_signal).  */
4815   for (; bs; bs = bs->next)
4816     {
4817       val = print_bp_stop_message (bs);
4818       if (val == PRINT_SRC_ONLY 
4819           || val == PRINT_SRC_AND_LOC 
4820           || val == PRINT_NOTHING)
4821         return val;
4822     }
4823
4824   /* If we had hit a shared library event breakpoint,
4825      print_bp_stop_message would print out this message.  If we hit an
4826      OS-level shared library event, do the same thing.  */
4827   if (kind == TARGET_WAITKIND_LOADED)
4828     {
4829       print_solib_event (0);
4830       return PRINT_NOTHING;
4831     }
4832
4833   /* We reached the end of the chain, or we got a null BS to start
4834      with and nothing was printed.  */
4835   return PRINT_UNKNOWN;
4836 }
4837
4838 /* Evaluate the expression EXP and return 1 if value is zero.
4839    This returns the inverse of the condition because it is called
4840    from catch_errors which returns 0 if an exception happened, and if an
4841    exception happens we want execution to stop.
4842    The argument is a "struct expression *" that has been cast to a
4843    "void *" to make it pass through catch_errors.  */
4844
4845 static int
4846 breakpoint_cond_eval (void *exp)
4847 {
4848   struct value *mark = value_mark ();
4849   int i = !value_true (evaluate_expression ((struct expression *) exp));
4850
4851   value_free_to_mark (mark);
4852   return i;
4853 }
4854
4855 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4856
4857 static bpstat
4858 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4859 {
4860   bpstat bs;
4861
4862   bs = (bpstat) xmalloc (sizeof (*bs));
4863   bs->next = NULL;
4864   **bs_link_pointer = bs;
4865   *bs_link_pointer = &bs->next;
4866   bs->breakpoint_at = bl->owner;
4867   bs->bp_location_at = bl;
4868   incref_bp_location (bl);
4869   /* If the condition is false, etc., don't do the commands.  */
4870   bs->commands = NULL;
4871   bs->old_val = NULL;
4872   bs->print_it = print_it_normal;
4873   return bs;
4874 }
4875 \f
4876 /* The target has stopped with waitstatus WS.  Check if any hardware
4877    watchpoints have triggered, according to the target.  */
4878
4879 int
4880 watchpoints_triggered (struct target_waitstatus *ws)
4881 {
4882   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4883   CORE_ADDR addr;
4884   struct breakpoint *b;
4885
4886   if (!stopped_by_watchpoint)
4887     {
4888       /* We were not stopped by a watchpoint.  Mark all watchpoints
4889          as not triggered.  */
4890       ALL_BREAKPOINTS (b)
4891         if (is_hardware_watchpoint (b))
4892           {
4893             struct watchpoint *w = (struct watchpoint *) b;
4894
4895             w->watchpoint_triggered = watch_triggered_no;
4896           }
4897
4898       return 0;
4899     }
4900
4901   if (!target_stopped_data_address (&current_target, &addr))
4902     {
4903       /* We were stopped by a watchpoint, but we don't know where.
4904          Mark all watchpoints as unknown.  */
4905       ALL_BREAKPOINTS (b)
4906         if (is_hardware_watchpoint (b))
4907           {
4908             struct watchpoint *w = (struct watchpoint *) b;
4909
4910             w->watchpoint_triggered = watch_triggered_unknown;
4911           }
4912
4913       return 1;
4914     }
4915
4916   /* The target could report the data address.  Mark watchpoints
4917      affected by this data address as triggered, and all others as not
4918      triggered.  */
4919
4920   ALL_BREAKPOINTS (b)
4921     if (is_hardware_watchpoint (b))
4922       {
4923         struct watchpoint *w = (struct watchpoint *) b;
4924         struct bp_location *loc;
4925
4926         w->watchpoint_triggered = watch_triggered_no;
4927         for (loc = b->loc; loc; loc = loc->next)
4928           {
4929             if (is_masked_watchpoint (b))
4930               {
4931                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4932                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4933
4934                 if (newaddr == start)
4935                   {
4936                     w->watchpoint_triggered = watch_triggered_yes;
4937                     break;
4938                   }
4939               }
4940             /* Exact match not required.  Within range is sufficient.  */
4941             else if (target_watchpoint_addr_within_range (&current_target,
4942                                                          addr, loc->address,
4943                                                          loc->length))
4944               {
4945                 w->watchpoint_triggered = watch_triggered_yes;
4946                 break;
4947               }
4948           }
4949       }
4950
4951   return 1;
4952 }
4953
4954 /* Possible return values for watchpoint_check (this can't be an enum
4955    because of check_errors).  */
4956 /* The watchpoint has been deleted.  */
4957 #define WP_DELETED 1
4958 /* The value has changed.  */
4959 #define WP_VALUE_CHANGED 2
4960 /* The value has not changed.  */
4961 #define WP_VALUE_NOT_CHANGED 3
4962 /* Ignore this watchpoint, no matter if the value changed or not.  */
4963 #define WP_IGNORE 4
4964
4965 #define BP_TEMPFLAG 1
4966 #define BP_HARDWAREFLAG 2
4967
4968 /* Evaluate watchpoint condition expression and check if its value
4969    changed.
4970
4971    P should be a pointer to struct bpstat, but is defined as a void *
4972    in order for this function to be usable with catch_errors.  */
4973
4974 static int
4975 watchpoint_check (void *p)
4976 {
4977   bpstat bs = (bpstat) p;
4978   struct watchpoint *b;
4979   struct frame_info *fr;
4980   int within_current_scope;
4981
4982   /* BS is built from an existing struct breakpoint.  */
4983   gdb_assert (bs->breakpoint_at != NULL);
4984   b = (struct watchpoint *) bs->breakpoint_at;
4985
4986   /* If this is a local watchpoint, we only want to check if the
4987      watchpoint frame is in scope if the current thread is the thread
4988      that was used to create the watchpoint.  */
4989   if (!watchpoint_in_thread_scope (b))
4990     return WP_IGNORE;
4991
4992   if (b->exp_valid_block == NULL)
4993     within_current_scope = 1;
4994   else
4995     {
4996       struct frame_info *frame = get_current_frame ();
4997       struct gdbarch *frame_arch = get_frame_arch (frame);
4998       CORE_ADDR frame_pc = get_frame_pc (frame);
4999
5000       /* in_function_epilogue_p() returns a non-zero value if we're
5001          still in the function but the stack frame has already been
5002          invalidated.  Since we can't rely on the values of local
5003          variables after the stack has been destroyed, we are treating
5004          the watchpoint in that state as `not changed' without further
5005          checking.  Don't mark watchpoints as changed if the current
5006          frame is in an epilogue - even if they are in some other
5007          frame, our view of the stack is likely to be wrong and
5008          frame_find_by_id could error out.  */
5009       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
5010         return WP_IGNORE;
5011
5012       fr = frame_find_by_id (b->watchpoint_frame);
5013       within_current_scope = (fr != NULL);
5014
5015       /* If we've gotten confused in the unwinder, we might have
5016          returned a frame that can't describe this variable.  */
5017       if (within_current_scope)
5018         {
5019           struct symbol *function;
5020
5021           function = get_frame_function (fr);
5022           if (function == NULL
5023               || !contained_in (b->exp_valid_block,
5024                                 SYMBOL_BLOCK_VALUE (function)))
5025             within_current_scope = 0;
5026         }
5027
5028       if (within_current_scope)
5029         /* If we end up stopping, the current frame will get selected
5030            in normal_stop.  So this call to select_frame won't affect
5031            the user.  */
5032         select_frame (fr);
5033     }
5034
5035   if (within_current_scope)
5036     {
5037       /* We use value_{,free_to_}mark because it could be a *long*
5038          time before we return to the command level and call
5039          free_all_values.  We can't call free_all_values because we
5040          might be in the middle of evaluating a function call.  */
5041
5042       int pc = 0;
5043       struct value *mark;
5044       struct value *new_val;
5045
5046       if (is_masked_watchpoint (&b->base))
5047         /* Since we don't know the exact trigger address (from
5048            stopped_data_address), just tell the user we've triggered
5049            a mask watchpoint.  */
5050         return WP_VALUE_CHANGED;
5051
5052       mark = value_mark ();
5053       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
5054
5055       if (b->val_bitsize != 0)
5056         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5057
5058       /* We use value_equal_contents instead of value_equal because
5059          the latter coerces an array to a pointer, thus comparing just
5060          the address of the array instead of its contents.  This is
5061          not what we want.  */
5062       if ((b->val != NULL) != (new_val != NULL)
5063           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5064         {
5065           if (new_val != NULL)
5066             {
5067               release_value (new_val);
5068               value_free_to_mark (mark);
5069             }
5070           bs->old_val = b->val;
5071           b->val = new_val;
5072           b->val_valid = 1;
5073           return WP_VALUE_CHANGED;
5074         }
5075       else
5076         {
5077           /* Nothing changed.  */
5078           value_free_to_mark (mark);
5079           return WP_VALUE_NOT_CHANGED;
5080         }
5081     }
5082   else
5083     {
5084       struct ui_out *uiout = current_uiout;
5085
5086       /* This seems like the only logical thing to do because
5087          if we temporarily ignored the watchpoint, then when
5088          we reenter the block in which it is valid it contains
5089          garbage (in the case of a function, it may have two
5090          garbage values, one before and one after the prologue).
5091          So we can't even detect the first assignment to it and
5092          watch after that (since the garbage may or may not equal
5093          the first value assigned).  */
5094       /* We print all the stop information in
5095          breakpoint_ops->print_it, but in this case, by the time we
5096          call breakpoint_ops->print_it this bp will be deleted
5097          already.  So we have no choice but print the information
5098          here.  */
5099       if (ui_out_is_mi_like_p (uiout))
5100         ui_out_field_string
5101           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5102       ui_out_text (uiout, "\nWatchpoint ");
5103       ui_out_field_int (uiout, "wpnum", b->base.number);
5104       ui_out_text (uiout,
5105                    " deleted because the program has left the block in\n\
5106 which its expression is valid.\n");     
5107
5108       /* Make sure the watchpoint's commands aren't executed.  */
5109       decref_counted_command_line (&b->base.commands);
5110       watchpoint_del_at_next_stop (b);
5111
5112       return WP_DELETED;
5113     }
5114 }
5115
5116 /* Return true if it looks like target has stopped due to hitting
5117    breakpoint location BL.  This function does not check if we should
5118    stop, only if BL explains the stop.  */
5119
5120 static int
5121 bpstat_check_location (const struct bp_location *bl,
5122                        struct address_space *aspace, CORE_ADDR bp_addr,
5123                        const struct target_waitstatus *ws)
5124 {
5125   struct breakpoint *b = bl->owner;
5126
5127   /* BL is from an existing breakpoint.  */
5128   gdb_assert (b != NULL);
5129
5130   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5131 }
5132
5133 /* Determine if the watched values have actually changed, and we
5134    should stop.  If not, set BS->stop to 0.  */
5135
5136 static void
5137 bpstat_check_watchpoint (bpstat bs)
5138 {
5139   const struct bp_location *bl;
5140   struct watchpoint *b;
5141
5142   /* BS is built for existing struct breakpoint.  */
5143   bl = bs->bp_location_at;
5144   gdb_assert (bl != NULL);
5145   b = (struct watchpoint *) bs->breakpoint_at;
5146   gdb_assert (b != NULL);
5147
5148     {
5149       int must_check_value = 0;
5150       
5151       if (b->base.type == bp_watchpoint)
5152         /* For a software watchpoint, we must always check the
5153            watched value.  */
5154         must_check_value = 1;
5155       else if (b->watchpoint_triggered == watch_triggered_yes)
5156         /* We have a hardware watchpoint (read, write, or access)
5157            and the target earlier reported an address watched by
5158            this watchpoint.  */
5159         must_check_value = 1;
5160       else if (b->watchpoint_triggered == watch_triggered_unknown
5161                && b->base.type == bp_hardware_watchpoint)
5162         /* We were stopped by a hardware watchpoint, but the target could
5163            not report the data address.  We must check the watchpoint's
5164            value.  Access and read watchpoints are out of luck; without
5165            a data address, we can't figure it out.  */
5166         must_check_value = 1;
5167
5168       if (must_check_value)
5169         {
5170           char *message
5171             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5172                           b->base.number);
5173           struct cleanup *cleanups = make_cleanup (xfree, message);
5174           int e = catch_errors (watchpoint_check, bs, message,
5175                                 RETURN_MASK_ALL);
5176           do_cleanups (cleanups);
5177           switch (e)
5178             {
5179             case WP_DELETED:
5180               /* We've already printed what needs to be printed.  */
5181               bs->print_it = print_it_done;
5182               /* Stop.  */
5183               break;
5184             case WP_IGNORE:
5185               bs->print_it = print_it_noop;
5186               bs->stop = 0;
5187               break;
5188             case WP_VALUE_CHANGED:
5189               if (b->base.type == bp_read_watchpoint)
5190                 {
5191                   /* There are two cases to consider here:
5192
5193                      1. We're watching the triggered memory for reads.
5194                      In that case, trust the target, and always report
5195                      the watchpoint hit to the user.  Even though
5196                      reads don't cause value changes, the value may
5197                      have changed since the last time it was read, and
5198                      since we're not trapping writes, we will not see
5199                      those, and as such we should ignore our notion of
5200                      old value.
5201
5202                      2. We're watching the triggered memory for both
5203                      reads and writes.  There are two ways this may
5204                      happen:
5205
5206                      2.1. This is a target that can't break on data
5207                      reads only, but can break on accesses (reads or
5208                      writes), such as e.g., x86.  We detect this case
5209                      at the time we try to insert read watchpoints.
5210
5211                      2.2. Otherwise, the target supports read
5212                      watchpoints, but, the user set an access or write
5213                      watchpoint watching the same memory as this read
5214                      watchpoint.
5215
5216                      If we're watching memory writes as well as reads,
5217                      ignore watchpoint hits when we find that the
5218                      value hasn't changed, as reads don't cause
5219                      changes.  This still gives false positives when
5220                      the program writes the same value to memory as
5221                      what there was already in memory (we will confuse
5222                      it for a read), but it's much better than
5223                      nothing.  */
5224
5225                   int other_write_watchpoint = 0;
5226
5227                   if (bl->watchpoint_type == hw_read)
5228                     {
5229                       struct breakpoint *other_b;
5230
5231                       ALL_BREAKPOINTS (other_b)
5232                         if (other_b->type == bp_hardware_watchpoint
5233                             || other_b->type == bp_access_watchpoint)
5234                           {
5235                             struct watchpoint *other_w =
5236                               (struct watchpoint *) other_b;
5237
5238                             if (other_w->watchpoint_triggered
5239                                 == watch_triggered_yes)
5240                               {
5241                                 other_write_watchpoint = 1;
5242                                 break;
5243                               }
5244                           }
5245                     }
5246
5247                   if (other_write_watchpoint
5248                       || bl->watchpoint_type == hw_access)
5249                     {
5250                       /* We're watching the same memory for writes,
5251                          and the value changed since the last time we
5252                          updated it, so this trap must be for a write.
5253                          Ignore it.  */
5254                       bs->print_it = print_it_noop;
5255                       bs->stop = 0;
5256                     }
5257                 }
5258               break;
5259             case WP_VALUE_NOT_CHANGED:
5260               if (b->base.type == bp_hardware_watchpoint
5261                   || b->base.type == bp_watchpoint)
5262                 {
5263                   /* Don't stop: write watchpoints shouldn't fire if
5264                      the value hasn't changed.  */
5265                   bs->print_it = print_it_noop;
5266                   bs->stop = 0;
5267                 }
5268               /* Stop.  */
5269               break;
5270             default:
5271               /* Can't happen.  */
5272             case 0:
5273               /* Error from catch_errors.  */
5274               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5275               watchpoint_del_at_next_stop (b);
5276               /* We've already printed what needs to be printed.  */
5277               bs->print_it = print_it_done;
5278               break;
5279             }
5280         }
5281       else      /* must_check_value == 0 */
5282         {
5283           /* This is a case where some watchpoint(s) triggered, but
5284              not at the address of this watchpoint, or else no
5285              watchpoint triggered after all.  So don't print
5286              anything for this watchpoint.  */
5287           bs->print_it = print_it_noop;
5288           bs->stop = 0;
5289         }
5290     }
5291 }
5292
5293 /* For breakpoints that are currently marked as telling gdb to stop,
5294    check conditions (condition proper, frame, thread and ignore count)
5295    of breakpoint referred to by BS.  If we should not stop for this
5296    breakpoint, set BS->stop to 0.  */
5297
5298 static void
5299 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5300 {
5301   const struct bp_location *bl;
5302   struct breakpoint *b;
5303   int value_is_zero = 0;
5304   struct expression *cond;
5305
5306   gdb_assert (bs->stop);
5307
5308   /* BS is built for existing struct breakpoint.  */
5309   bl = bs->bp_location_at;
5310   gdb_assert (bl != NULL);
5311   b = bs->breakpoint_at;
5312   gdb_assert (b != NULL);
5313
5314   /* Even if the target evaluated the condition on its end and notified GDB, we
5315      need to do so again since GDB does not know if we stopped due to a
5316      breakpoint or a single step breakpoint.  */
5317
5318   if (frame_id_p (b->frame_id)
5319       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5320     {
5321       bs->stop = 0;
5322       return;
5323     }
5324
5325   /* If this is a thread/task-specific breakpoint, don't waste cpu
5326      evaluating the condition if this isn't the specified
5327      thread/task.  */
5328   if ((b->thread != -1 && b->thread != pid_to_thread_id (ptid))
5329       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5330
5331     {
5332       bs->stop = 0;
5333       return;
5334     }
5335
5336   /* Evaluate extension language breakpoints that have a "stop" method
5337      implemented.  */
5338   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5339
5340   if (is_watchpoint (b))
5341     {
5342       struct watchpoint *w = (struct watchpoint *) b;
5343
5344       cond = w->cond_exp;
5345     }
5346   else
5347     cond = bl->cond;
5348
5349   if (cond && b->disposition != disp_del_at_next_stop)
5350     {
5351       int within_current_scope = 1;
5352       struct watchpoint * w;
5353
5354       /* We use value_mark and value_free_to_mark because it could
5355          be a long time before we return to the command level and
5356          call free_all_values.  We can't call free_all_values
5357          because we might be in the middle of evaluating a
5358          function call.  */
5359       struct value *mark = value_mark ();
5360
5361       if (is_watchpoint (b))
5362         w = (struct watchpoint *) b;
5363       else
5364         w = NULL;
5365
5366       /* Need to select the frame, with all that implies so that
5367          the conditions will have the right context.  Because we
5368          use the frame, we will not see an inlined function's
5369          variables when we arrive at a breakpoint at the start
5370          of the inlined function; the current frame will be the
5371          call site.  */
5372       if (w == NULL || w->cond_exp_valid_block == NULL)
5373         select_frame (get_current_frame ());
5374       else
5375         {
5376           struct frame_info *frame;
5377
5378           /* For local watchpoint expressions, which particular
5379              instance of a local is being watched matters, so we
5380              keep track of the frame to evaluate the expression
5381              in.  To evaluate the condition however, it doesn't
5382              really matter which instantiation of the function
5383              where the condition makes sense triggers the
5384              watchpoint.  This allows an expression like "watch
5385              global if q > 10" set in `func', catch writes to
5386              global on all threads that call `func', or catch
5387              writes on all recursive calls of `func' by a single
5388              thread.  We simply always evaluate the condition in
5389              the innermost frame that's executing where it makes
5390              sense to evaluate the condition.  It seems
5391              intuitive.  */
5392           frame = block_innermost_frame (w->cond_exp_valid_block);
5393           if (frame != NULL)
5394             select_frame (frame);
5395           else
5396             within_current_scope = 0;
5397         }
5398       if (within_current_scope)
5399         value_is_zero
5400           = catch_errors (breakpoint_cond_eval, cond,
5401                           "Error in testing breakpoint condition:\n",
5402                           RETURN_MASK_ALL);
5403       else
5404         {
5405           warning (_("Watchpoint condition cannot be tested "
5406                      "in the current scope"));
5407           /* If we failed to set the right context for this
5408              watchpoint, unconditionally report it.  */
5409           value_is_zero = 0;
5410         }
5411       /* FIXME-someday, should give breakpoint #.  */
5412       value_free_to_mark (mark);
5413     }
5414
5415   if (cond && value_is_zero)
5416     {
5417       bs->stop = 0;
5418     }
5419   else if (b->ignore_count > 0)
5420     {
5421       b->ignore_count--;
5422       bs->stop = 0;
5423       /* Increase the hit count even though we don't stop.  */
5424       ++(b->hit_count);
5425       observer_notify_breakpoint_modified (b);
5426     }   
5427 }
5428
5429
5430 /* Get a bpstat associated with having just stopped at address
5431    BP_ADDR in thread PTID.
5432
5433    Determine whether we stopped at a breakpoint, etc, or whether we
5434    don't understand this stop.  Result is a chain of bpstat's such
5435    that:
5436
5437    if we don't understand the stop, the result is a null pointer.
5438
5439    if we understand why we stopped, the result is not null.
5440
5441    Each element of the chain refers to a particular breakpoint or
5442    watchpoint at which we have stopped.  (We may have stopped for
5443    several reasons concurrently.)
5444
5445    Each element of the chain has valid next, breakpoint_at,
5446    commands, FIXME??? fields.  */
5447
5448 bpstat
5449 bpstat_stop_status (struct address_space *aspace,
5450                     CORE_ADDR bp_addr, ptid_t ptid,
5451                     const struct target_waitstatus *ws)
5452 {
5453   struct breakpoint *b = NULL;
5454   struct bp_location *bl;
5455   struct bp_location *loc;
5456   /* First item of allocated bpstat's.  */
5457   bpstat bs_head = NULL, *bs_link = &bs_head;
5458   /* Pointer to the last thing in the chain currently.  */
5459   bpstat bs;
5460   int ix;
5461   int need_remove_insert;
5462   int removed_any;
5463
5464   /* First, build the bpstat chain with locations that explain a
5465      target stop, while being careful to not set the target running,
5466      as that may invalidate locations (in particular watchpoint
5467      locations are recreated).  Resuming will happen here with
5468      breakpoint conditions or watchpoint expressions that include
5469      inferior function calls.  */
5470
5471   ALL_BREAKPOINTS (b)
5472     {
5473       if (!breakpoint_enabled (b))
5474         continue;
5475
5476       for (bl = b->loc; bl != NULL; bl = bl->next)
5477         {
5478           /* For hardware watchpoints, we look only at the first
5479              location.  The watchpoint_check function will work on the
5480              entire expression, not the individual locations.  For
5481              read watchpoints, the watchpoints_triggered function has
5482              checked all locations already.  */
5483           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5484             break;
5485
5486           if (!bl->enabled || bl->shlib_disabled)
5487             continue;
5488
5489           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5490             continue;
5491
5492           /* Come here if it's a watchpoint, or if the break address
5493              matches.  */
5494
5495           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5496                                                    explain stop.  */
5497
5498           /* Assume we stop.  Should we find a watchpoint that is not
5499              actually triggered, or if the condition of the breakpoint
5500              evaluates as false, we'll reset 'stop' to 0.  */
5501           bs->stop = 1;
5502           bs->print = 1;
5503
5504           /* If this is a scope breakpoint, mark the associated
5505              watchpoint as triggered so that we will handle the
5506              out-of-scope event.  We'll get to the watchpoint next
5507              iteration.  */
5508           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5509             {
5510               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5511
5512               w->watchpoint_triggered = watch_triggered_yes;
5513             }
5514         }
5515     }
5516
5517   /* Check if a moribund breakpoint explains the stop.  */
5518   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5519     {
5520       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5521         {
5522           bs = bpstat_alloc (loc, &bs_link);
5523           /* For hits of moribund locations, we should just proceed.  */
5524           bs->stop = 0;
5525           bs->print = 0;
5526           bs->print_it = print_it_noop;
5527         }
5528     }
5529
5530   /* A bit of special processing for shlib breakpoints.  We need to
5531      process solib loading here, so that the lists of loaded and
5532      unloaded libraries are correct before we handle "catch load" and
5533      "catch unload".  */
5534   for (bs = bs_head; bs != NULL; bs = bs->next)
5535     {
5536       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5537         {
5538           handle_solib_event ();
5539           break;
5540         }
5541     }
5542
5543   /* Now go through the locations that caused the target to stop, and
5544      check whether we're interested in reporting this stop to higher
5545      layers, or whether we should resume the target transparently.  */
5546
5547   removed_any = 0;
5548
5549   for (bs = bs_head; bs != NULL; bs = bs->next)
5550     {
5551       if (!bs->stop)
5552         continue;
5553
5554       b = bs->breakpoint_at;
5555       b->ops->check_status (bs);
5556       if (bs->stop)
5557         {
5558           bpstat_check_breakpoint_conditions (bs, ptid);
5559
5560           if (bs->stop)
5561             {
5562               ++(b->hit_count);
5563               observer_notify_breakpoint_modified (b);
5564
5565               /* We will stop here.  */
5566               if (b->disposition == disp_disable)
5567                 {
5568                   --(b->enable_count);
5569                   if (b->enable_count <= 0)
5570                     b->enable_state = bp_disabled;
5571                   removed_any = 1;
5572                 }
5573               if (b->silent)
5574                 bs->print = 0;
5575               bs->commands = b->commands;
5576               incref_counted_command_line (bs->commands);
5577               if (command_line_is_silent (bs->commands
5578                                           ? bs->commands->commands : NULL))
5579                 bs->print = 0;
5580
5581               b->ops->after_condition_true (bs);
5582             }
5583
5584         }
5585
5586       /* Print nothing for this entry if we don't stop or don't
5587          print.  */
5588       if (!bs->stop || !bs->print)
5589         bs->print_it = print_it_noop;
5590     }
5591
5592   /* If we aren't stopping, the value of some hardware watchpoint may
5593      not have changed, but the intermediate memory locations we are
5594      watching may have.  Don't bother if we're stopping; this will get
5595      done later.  */
5596   need_remove_insert = 0;
5597   if (! bpstat_causes_stop (bs_head))
5598     for (bs = bs_head; bs != NULL; bs = bs->next)
5599       if (!bs->stop
5600           && bs->breakpoint_at
5601           && is_hardware_watchpoint (bs->breakpoint_at))
5602         {
5603           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5604
5605           update_watchpoint (w, 0 /* don't reparse.  */);
5606           need_remove_insert = 1;
5607         }
5608
5609   if (need_remove_insert)
5610     update_global_location_list (UGLL_MAY_INSERT);
5611   else if (removed_any)
5612     update_global_location_list (UGLL_DONT_INSERT);
5613
5614   return bs_head;
5615 }
5616
5617 static void
5618 handle_jit_event (void)
5619 {
5620   struct frame_info *frame;
5621   struct gdbarch *gdbarch;
5622
5623   /* Switch terminal for any messages produced by
5624      breakpoint_re_set.  */
5625   target_terminal_ours_for_output ();
5626
5627   frame = get_current_frame ();
5628   gdbarch = get_frame_arch (frame);
5629
5630   jit_event_handler (gdbarch);
5631
5632   target_terminal_inferior ();
5633 }
5634
5635 /* Prepare WHAT final decision for infrun.  */
5636
5637 /* Decide what infrun needs to do with this bpstat.  */
5638
5639 struct bpstat_what
5640 bpstat_what (bpstat bs_head)
5641 {
5642   struct bpstat_what retval;
5643   int jit_event = 0;
5644   bpstat bs;
5645
5646   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5647   retval.call_dummy = STOP_NONE;
5648   retval.is_longjmp = 0;
5649
5650   for (bs = bs_head; bs != NULL; bs = bs->next)
5651     {
5652       /* Extract this BS's action.  After processing each BS, we check
5653          if its action overrides all we've seem so far.  */
5654       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5655       enum bptype bptype;
5656
5657       if (bs->breakpoint_at == NULL)
5658         {
5659           /* I suspect this can happen if it was a momentary
5660              breakpoint which has since been deleted.  */
5661           bptype = bp_none;
5662         }
5663       else
5664         bptype = bs->breakpoint_at->type;
5665
5666       switch (bptype)
5667         {
5668         case bp_none:
5669           break;
5670         case bp_breakpoint:
5671         case bp_hardware_breakpoint:
5672         case bp_single_step:
5673         case bp_until:
5674         case bp_finish:
5675         case bp_shlib_event:
5676           if (bs->stop)
5677             {
5678               if (bs->print)
5679                 this_action = BPSTAT_WHAT_STOP_NOISY;
5680               else
5681                 this_action = BPSTAT_WHAT_STOP_SILENT;
5682             }
5683           else
5684             this_action = BPSTAT_WHAT_SINGLE;
5685           break;
5686         case bp_watchpoint:
5687         case bp_hardware_watchpoint:
5688         case bp_read_watchpoint:
5689         case bp_access_watchpoint:
5690           if (bs->stop)
5691             {
5692               if (bs->print)
5693                 this_action = BPSTAT_WHAT_STOP_NOISY;
5694               else
5695                 this_action = BPSTAT_WHAT_STOP_SILENT;
5696             }
5697           else
5698             {
5699               /* There was a watchpoint, but we're not stopping.
5700                  This requires no further action.  */
5701             }
5702           break;
5703         case bp_longjmp:
5704         case bp_longjmp_call_dummy:
5705         case bp_exception:
5706           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5707           retval.is_longjmp = bptype != bp_exception;
5708           break;
5709         case bp_longjmp_resume:
5710         case bp_exception_resume:
5711           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5712           retval.is_longjmp = bptype == bp_longjmp_resume;
5713           break;
5714         case bp_step_resume:
5715           if (bs->stop)
5716             this_action = BPSTAT_WHAT_STEP_RESUME;
5717           else
5718             {
5719               /* It is for the wrong frame.  */
5720               this_action = BPSTAT_WHAT_SINGLE;
5721             }
5722           break;
5723         case bp_hp_step_resume:
5724           if (bs->stop)
5725             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5726           else
5727             {
5728               /* It is for the wrong frame.  */
5729               this_action = BPSTAT_WHAT_SINGLE;
5730             }
5731           break;
5732         case bp_watchpoint_scope:
5733         case bp_thread_event:
5734         case bp_overlay_event:
5735         case bp_longjmp_master:
5736         case bp_std_terminate_master:
5737         case bp_exception_master:
5738           this_action = BPSTAT_WHAT_SINGLE;
5739           break;
5740         case bp_catchpoint:
5741           if (bs->stop)
5742             {
5743               if (bs->print)
5744                 this_action = BPSTAT_WHAT_STOP_NOISY;
5745               else
5746                 this_action = BPSTAT_WHAT_STOP_SILENT;
5747             }
5748           else
5749             {
5750               /* There was a catchpoint, but we're not stopping.
5751                  This requires no further action.  */
5752             }
5753           break;
5754         case bp_jit_event:
5755           jit_event = 1;
5756           this_action = BPSTAT_WHAT_SINGLE;
5757           break;
5758         case bp_call_dummy:
5759           /* Make sure the action is stop (silent or noisy),
5760              so infrun.c pops the dummy frame.  */
5761           retval.call_dummy = STOP_STACK_DUMMY;
5762           this_action = BPSTAT_WHAT_STOP_SILENT;
5763           break;
5764         case bp_std_terminate:
5765           /* Make sure the action is stop (silent or noisy),
5766              so infrun.c pops the dummy frame.  */
5767           retval.call_dummy = STOP_STD_TERMINATE;
5768           this_action = BPSTAT_WHAT_STOP_SILENT;
5769           break;
5770         case bp_tracepoint:
5771         case bp_fast_tracepoint:
5772         case bp_static_tracepoint:
5773           /* Tracepoint hits should not be reported back to GDB, and
5774              if one got through somehow, it should have been filtered
5775              out already.  */
5776           internal_error (__FILE__, __LINE__,
5777                           _("bpstat_what: tracepoint encountered"));
5778           break;
5779         case bp_gnu_ifunc_resolver:
5780           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5781           this_action = BPSTAT_WHAT_SINGLE;
5782           break;
5783         case bp_gnu_ifunc_resolver_return:
5784           /* The breakpoint will be removed, execution will restart from the
5785              PC of the former breakpoint.  */
5786           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5787           break;
5788
5789         case bp_dprintf:
5790           if (bs->stop)
5791             this_action = BPSTAT_WHAT_STOP_SILENT;
5792           else
5793             this_action = BPSTAT_WHAT_SINGLE;
5794           break;
5795
5796         default:
5797           internal_error (__FILE__, __LINE__,
5798                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5799         }
5800
5801       retval.main_action = max (retval.main_action, this_action);
5802     }
5803
5804   /* These operations may affect the bs->breakpoint_at state so they are
5805      delayed after MAIN_ACTION is decided above.  */
5806
5807   if (jit_event)
5808     {
5809       if (debug_infrun)
5810         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5811
5812       handle_jit_event ();
5813     }
5814
5815   for (bs = bs_head; bs != NULL; bs = bs->next)
5816     {
5817       struct breakpoint *b = bs->breakpoint_at;
5818
5819       if (b == NULL)
5820         continue;
5821       switch (b->type)
5822         {
5823         case bp_gnu_ifunc_resolver:
5824           gnu_ifunc_resolver_stop (b);
5825           break;
5826         case bp_gnu_ifunc_resolver_return:
5827           gnu_ifunc_resolver_return_stop (b);
5828           break;
5829         }
5830     }
5831
5832   return retval;
5833 }
5834
5835 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5836    without hardware support).  This isn't related to a specific bpstat,
5837    just to things like whether watchpoints are set.  */
5838
5839 int
5840 bpstat_should_step (void)
5841 {
5842   struct breakpoint *b;
5843
5844   ALL_BREAKPOINTS (b)
5845     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5846       return 1;
5847   return 0;
5848 }
5849
5850 int
5851 bpstat_causes_stop (bpstat bs)
5852 {
5853   for (; bs != NULL; bs = bs->next)
5854     if (bs->stop)
5855       return 1;
5856
5857   return 0;
5858 }
5859
5860 \f
5861
5862 /* Compute a string of spaces suitable to indent the next line
5863    so it starts at the position corresponding to the table column
5864    named COL_NAME in the currently active table of UIOUT.  */
5865
5866 static char *
5867 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5868 {
5869   static char wrap_indent[80];
5870   int i, total_width, width, align;
5871   char *text;
5872
5873   total_width = 0;
5874   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5875     {
5876       if (strcmp (text, col_name) == 0)
5877         {
5878           gdb_assert (total_width < sizeof wrap_indent);
5879           memset (wrap_indent, ' ', total_width);
5880           wrap_indent[total_width] = 0;
5881
5882           return wrap_indent;
5883         }
5884
5885       total_width += width + 1;
5886     }
5887
5888   return NULL;
5889 }
5890
5891 /* Determine if the locations of this breakpoint will have their conditions
5892    evaluated by the target, host or a mix of both.  Returns the following:
5893
5894     "host": Host evals condition.
5895     "host or target": Host or Target evals condition.
5896     "target": Target evals condition.
5897 */
5898
5899 static const char *
5900 bp_condition_evaluator (struct breakpoint *b)
5901 {
5902   struct bp_location *bl;
5903   char host_evals = 0;
5904   char target_evals = 0;
5905
5906   if (!b)
5907     return NULL;
5908
5909   if (!is_breakpoint (b))
5910     return NULL;
5911
5912   if (gdb_evaluates_breakpoint_condition_p ()
5913       || !target_supports_evaluation_of_breakpoint_conditions ())
5914     return condition_evaluation_host;
5915
5916   for (bl = b->loc; bl; bl = bl->next)
5917     {
5918       if (bl->cond_bytecode)
5919         target_evals++;
5920       else
5921         host_evals++;
5922     }
5923
5924   if (host_evals && target_evals)
5925     return condition_evaluation_both;
5926   else if (target_evals)
5927     return condition_evaluation_target;
5928   else
5929     return condition_evaluation_host;
5930 }
5931
5932 /* Determine the breakpoint location's condition evaluator.  This is
5933    similar to bp_condition_evaluator, but for locations.  */
5934
5935 static const char *
5936 bp_location_condition_evaluator (struct bp_location *bl)
5937 {
5938   if (bl && !is_breakpoint (bl->owner))
5939     return NULL;
5940
5941   if (gdb_evaluates_breakpoint_condition_p ()
5942       || !target_supports_evaluation_of_breakpoint_conditions ())
5943     return condition_evaluation_host;
5944
5945   if (bl && bl->cond_bytecode)
5946     return condition_evaluation_target;
5947   else
5948     return condition_evaluation_host;
5949 }
5950
5951 /* Print the LOC location out of the list of B->LOC locations.  */
5952
5953 static void
5954 print_breakpoint_location (struct breakpoint *b,
5955                            struct bp_location *loc)
5956 {
5957   struct ui_out *uiout = current_uiout;
5958   struct cleanup *old_chain = save_current_program_space ();
5959
5960   if (loc != NULL && loc->shlib_disabled)
5961     loc = NULL;
5962
5963   if (loc != NULL)
5964     set_current_program_space (loc->pspace);
5965
5966   if (b->display_canonical)
5967     ui_out_field_string (uiout, "what", b->addr_string);
5968   else if (loc && loc->symtab)
5969     {
5970       struct symbol *sym 
5971         = find_pc_sect_function (loc->address, loc->section);
5972       if (sym)
5973         {
5974           ui_out_text (uiout, "in ");
5975           ui_out_field_string (uiout, "func",
5976                                SYMBOL_PRINT_NAME (sym));
5977           ui_out_text (uiout, " ");
5978           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5979           ui_out_text (uiout, "at ");
5980         }
5981       ui_out_field_string (uiout, "file",
5982                            symtab_to_filename_for_display (loc->symtab));
5983       ui_out_text (uiout, ":");
5984
5985       if (ui_out_is_mi_like_p (uiout))
5986         ui_out_field_string (uiout, "fullname",
5987                              symtab_to_fullname (loc->symtab));
5988       
5989       ui_out_field_int (uiout, "line", loc->line_number);
5990     }
5991   else if (loc)
5992     {
5993       struct ui_file *stb = mem_fileopen ();
5994       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5995
5996       print_address_symbolic (loc->gdbarch, loc->address, stb,
5997                               demangle, "");
5998       ui_out_field_stream (uiout, "at", stb);
5999
6000       do_cleanups (stb_chain);
6001     }
6002   else
6003     ui_out_field_string (uiout, "pending", b->addr_string);
6004
6005   if (loc && is_breakpoint (b)
6006       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6007       && bp_condition_evaluator (b) == condition_evaluation_both)
6008     {
6009       ui_out_text (uiout, " (");
6010       ui_out_field_string (uiout, "evaluated-by",
6011                            bp_location_condition_evaluator (loc));
6012       ui_out_text (uiout, ")");
6013     }
6014
6015   do_cleanups (old_chain);
6016 }
6017
6018 static const char *
6019 bptype_string (enum bptype type)
6020 {
6021   struct ep_type_description
6022     {
6023       enum bptype type;
6024       char *description;
6025     };
6026   static struct ep_type_description bptypes[] =
6027   {
6028     {bp_none, "?deleted?"},
6029     {bp_breakpoint, "breakpoint"},
6030     {bp_hardware_breakpoint, "hw breakpoint"},
6031     {bp_single_step, "sw single-step"},
6032     {bp_until, "until"},
6033     {bp_finish, "finish"},
6034     {bp_watchpoint, "watchpoint"},
6035     {bp_hardware_watchpoint, "hw watchpoint"},
6036     {bp_read_watchpoint, "read watchpoint"},
6037     {bp_access_watchpoint, "acc watchpoint"},
6038     {bp_longjmp, "longjmp"},
6039     {bp_longjmp_resume, "longjmp resume"},
6040     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6041     {bp_exception, "exception"},
6042     {bp_exception_resume, "exception resume"},
6043     {bp_step_resume, "step resume"},
6044     {bp_hp_step_resume, "high-priority step resume"},
6045     {bp_watchpoint_scope, "watchpoint scope"},
6046     {bp_call_dummy, "call dummy"},
6047     {bp_std_terminate, "std::terminate"},
6048     {bp_shlib_event, "shlib events"},
6049     {bp_thread_event, "thread events"},
6050     {bp_overlay_event, "overlay events"},
6051     {bp_longjmp_master, "longjmp master"},
6052     {bp_std_terminate_master, "std::terminate master"},
6053     {bp_exception_master, "exception master"},
6054     {bp_catchpoint, "catchpoint"},
6055     {bp_tracepoint, "tracepoint"},
6056     {bp_fast_tracepoint, "fast tracepoint"},
6057     {bp_static_tracepoint, "static tracepoint"},
6058     {bp_dprintf, "dprintf"},
6059     {bp_jit_event, "jit events"},
6060     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6061     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6062   };
6063
6064   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6065       || ((int) type != bptypes[(int) type].type))
6066     internal_error (__FILE__, __LINE__,
6067                     _("bptypes table does not describe type #%d."),
6068                     (int) type);
6069
6070   return bptypes[(int) type].description;
6071 }
6072
6073 /* For MI, output a field named 'thread-groups' with a list as the value.
6074    For CLI, prefix the list with the string 'inf'. */
6075
6076 static void
6077 output_thread_groups (struct ui_out *uiout,
6078                       const char *field_name,
6079                       VEC(int) *inf_num,
6080                       int mi_only)
6081 {
6082   struct cleanup *back_to;
6083   int is_mi = ui_out_is_mi_like_p (uiout);
6084   int inf;
6085   int i;
6086
6087   /* For backward compatibility, don't display inferiors in CLI unless
6088      there are several.  Always display them for MI. */
6089   if (!is_mi && mi_only)
6090     return;
6091
6092   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6093
6094   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6095     {
6096       if (is_mi)
6097         {
6098           char mi_group[10];
6099
6100           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6101           ui_out_field_string (uiout, NULL, mi_group);
6102         }
6103       else
6104         {
6105           if (i == 0)
6106             ui_out_text (uiout, " inf ");
6107           else
6108             ui_out_text (uiout, ", ");
6109         
6110           ui_out_text (uiout, plongest (inf));
6111         }
6112     }
6113
6114   do_cleanups (back_to);
6115 }
6116
6117 /* Print B to gdb_stdout.  */
6118
6119 static void
6120 print_one_breakpoint_location (struct breakpoint *b,
6121                                struct bp_location *loc,
6122                                int loc_number,
6123                                struct bp_location **last_loc,
6124                                int allflag)
6125 {
6126   struct command_line *l;
6127   static char bpenables[] = "nynny";
6128
6129   struct ui_out *uiout = current_uiout;
6130   int header_of_multiple = 0;
6131   int part_of_multiple = (loc != NULL);
6132   struct value_print_options opts;
6133
6134   get_user_print_options (&opts);
6135
6136   gdb_assert (!loc || loc_number != 0);
6137   /* See comment in print_one_breakpoint concerning treatment of
6138      breakpoints with single disabled location.  */
6139   if (loc == NULL 
6140       && (b->loc != NULL 
6141           && (b->loc->next != NULL || !b->loc->enabled)))
6142     header_of_multiple = 1;
6143   if (loc == NULL)
6144     loc = b->loc;
6145
6146   annotate_record ();
6147
6148   /* 1 */
6149   annotate_field (0);
6150   if (part_of_multiple)
6151     {
6152       char *formatted;
6153       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6154       ui_out_field_string (uiout, "number", formatted);
6155       xfree (formatted);
6156     }
6157   else
6158     {
6159       ui_out_field_int (uiout, "number", b->number);
6160     }
6161
6162   /* 2 */
6163   annotate_field (1);
6164   if (part_of_multiple)
6165     ui_out_field_skip (uiout, "type");
6166   else
6167     ui_out_field_string (uiout, "type", bptype_string (b->type));
6168
6169   /* 3 */
6170   annotate_field (2);
6171   if (part_of_multiple)
6172     ui_out_field_skip (uiout, "disp");
6173   else
6174     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6175
6176
6177   /* 4 */
6178   annotate_field (3);
6179   if (part_of_multiple)
6180     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
6181   else
6182     ui_out_field_fmt (uiout, "enabled", "%c", 
6183                       bpenables[(int) b->enable_state]);
6184   ui_out_spaces (uiout, 2);
6185
6186   
6187   /* 5 and 6 */
6188   if (b->ops != NULL && b->ops->print_one != NULL)
6189     {
6190       /* Although the print_one can possibly print all locations,
6191          calling it here is not likely to get any nice result.  So,
6192          make sure there's just one location.  */
6193       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6194       b->ops->print_one (b, last_loc);
6195     }
6196   else
6197     switch (b->type)
6198       {
6199       case bp_none:
6200         internal_error (__FILE__, __LINE__,
6201                         _("print_one_breakpoint: bp_none encountered\n"));
6202         break;
6203
6204       case bp_watchpoint:
6205       case bp_hardware_watchpoint:
6206       case bp_read_watchpoint:
6207       case bp_access_watchpoint:
6208         {
6209           struct watchpoint *w = (struct watchpoint *) b;
6210
6211           /* Field 4, the address, is omitted (which makes the columns
6212              not line up too nicely with the headers, but the effect
6213              is relatively readable).  */
6214           if (opts.addressprint)
6215             ui_out_field_skip (uiout, "addr");
6216           annotate_field (5);
6217           ui_out_field_string (uiout, "what", w->exp_string);
6218         }
6219         break;
6220
6221       case bp_breakpoint:
6222       case bp_hardware_breakpoint:
6223       case bp_single_step:
6224       case bp_until:
6225       case bp_finish:
6226       case bp_longjmp:
6227       case bp_longjmp_resume:
6228       case bp_longjmp_call_dummy:
6229       case bp_exception:
6230       case bp_exception_resume:
6231       case bp_step_resume:
6232       case bp_hp_step_resume:
6233       case bp_watchpoint_scope:
6234       case bp_call_dummy:
6235       case bp_std_terminate:
6236       case bp_shlib_event:
6237       case bp_thread_event:
6238       case bp_overlay_event:
6239       case bp_longjmp_master:
6240       case bp_std_terminate_master:
6241       case bp_exception_master:
6242       case bp_tracepoint:
6243       case bp_fast_tracepoint:
6244       case bp_static_tracepoint:
6245       case bp_dprintf:
6246       case bp_jit_event:
6247       case bp_gnu_ifunc_resolver:
6248       case bp_gnu_ifunc_resolver_return:
6249         if (opts.addressprint)
6250           {
6251             annotate_field (4);
6252             if (header_of_multiple)
6253               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6254             else if (b->loc == NULL || loc->shlib_disabled)
6255               ui_out_field_string (uiout, "addr", "<PENDING>");
6256             else
6257               ui_out_field_core_addr (uiout, "addr",
6258                                       loc->gdbarch, loc->address);
6259           }
6260         annotate_field (5);
6261         if (!header_of_multiple)
6262           print_breakpoint_location (b, loc);
6263         if (b->loc)
6264           *last_loc = b->loc;
6265         break;
6266       }
6267
6268
6269   if (loc != NULL && !header_of_multiple)
6270     {
6271       struct inferior *inf;
6272       VEC(int) *inf_num = NULL;
6273       int mi_only = 1;
6274
6275       ALL_INFERIORS (inf)
6276         {
6277           if (inf->pspace == loc->pspace)
6278             VEC_safe_push (int, inf_num, inf->num);
6279         }
6280
6281         /* For backward compatibility, don't display inferiors in CLI unless
6282            there are several.  Always display for MI. */
6283         if (allflag
6284             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6285                 && (number_of_program_spaces () > 1
6286                     || number_of_inferiors () > 1)
6287                 /* LOC is for existing B, it cannot be in
6288                    moribund_locations and thus having NULL OWNER.  */
6289                 && loc->owner->type != bp_catchpoint))
6290         mi_only = 0;
6291       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6292       VEC_free (int, inf_num);
6293     }
6294
6295   if (!part_of_multiple)
6296     {
6297       if (b->thread != -1)
6298         {
6299           /* FIXME: This seems to be redundant and lost here; see the
6300              "stop only in" line a little further down.  */
6301           ui_out_text (uiout, " thread ");
6302           ui_out_field_int (uiout, "thread", b->thread);
6303         }
6304       else if (b->task != 0)
6305         {
6306           ui_out_text (uiout, " task ");
6307           ui_out_field_int (uiout, "task", b->task);
6308         }
6309     }
6310
6311   ui_out_text (uiout, "\n");
6312
6313   if (!part_of_multiple)
6314     b->ops->print_one_detail (b, uiout);
6315
6316   if (part_of_multiple && frame_id_p (b->frame_id))
6317     {
6318       annotate_field (6);
6319       ui_out_text (uiout, "\tstop only in stack frame at ");
6320       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6321          the frame ID.  */
6322       ui_out_field_core_addr (uiout, "frame",
6323                               b->gdbarch, b->frame_id.stack_addr);
6324       ui_out_text (uiout, "\n");
6325     }
6326   
6327   if (!part_of_multiple && b->cond_string)
6328     {
6329       annotate_field (7);
6330       if (is_tracepoint (b))
6331         ui_out_text (uiout, "\ttrace only if ");
6332       else
6333         ui_out_text (uiout, "\tstop only if ");
6334       ui_out_field_string (uiout, "cond", b->cond_string);
6335
6336       /* Print whether the target is doing the breakpoint's condition
6337          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6338       if (is_breakpoint (b)
6339           && breakpoint_condition_evaluation_mode ()
6340           == condition_evaluation_target)
6341         {
6342           ui_out_text (uiout, " (");
6343           ui_out_field_string (uiout, "evaluated-by",
6344                                bp_condition_evaluator (b));
6345           ui_out_text (uiout, " evals)");
6346         }
6347       ui_out_text (uiout, "\n");
6348     }
6349
6350   if (!part_of_multiple && b->thread != -1)
6351     {
6352       /* FIXME should make an annotation for this.  */
6353       ui_out_text (uiout, "\tstop only in thread ");
6354       ui_out_field_int (uiout, "thread", b->thread);
6355       ui_out_text (uiout, "\n");
6356     }
6357   
6358   if (!part_of_multiple)
6359     {
6360       if (b->hit_count)
6361         {
6362           /* FIXME should make an annotation for this.  */
6363           if (is_catchpoint (b))
6364             ui_out_text (uiout, "\tcatchpoint");
6365           else if (is_tracepoint (b))
6366             ui_out_text (uiout, "\ttracepoint");
6367           else
6368             ui_out_text (uiout, "\tbreakpoint");
6369           ui_out_text (uiout, " already hit ");
6370           ui_out_field_int (uiout, "times", b->hit_count);
6371           if (b->hit_count == 1)
6372             ui_out_text (uiout, " time\n");
6373           else
6374             ui_out_text (uiout, " times\n");
6375         }
6376       else
6377         {
6378           /* Output the count also if it is zero, but only if this is mi.  */
6379           if (ui_out_is_mi_like_p (uiout))
6380             ui_out_field_int (uiout, "times", b->hit_count);
6381         }
6382     }
6383
6384   if (!part_of_multiple && b->ignore_count)
6385     {
6386       annotate_field (8);
6387       ui_out_text (uiout, "\tignore next ");
6388       ui_out_field_int (uiout, "ignore", b->ignore_count);
6389       ui_out_text (uiout, " hits\n");
6390     }
6391
6392   /* Note that an enable count of 1 corresponds to "enable once"
6393      behavior, which is reported by the combination of enablement and
6394      disposition, so we don't need to mention it here.  */
6395   if (!part_of_multiple && b->enable_count > 1)
6396     {
6397       annotate_field (8);
6398       ui_out_text (uiout, "\tdisable after ");
6399       /* Tweak the wording to clarify that ignore and enable counts
6400          are distinct, and have additive effect.  */
6401       if (b->ignore_count)
6402         ui_out_text (uiout, "additional ");
6403       else
6404         ui_out_text (uiout, "next ");
6405       ui_out_field_int (uiout, "enable", b->enable_count);
6406       ui_out_text (uiout, " hits\n");
6407     }
6408
6409   if (!part_of_multiple && is_tracepoint (b))
6410     {
6411       struct tracepoint *tp = (struct tracepoint *) b;
6412
6413       if (tp->traceframe_usage)
6414         {
6415           ui_out_text (uiout, "\ttrace buffer usage ");
6416           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6417           ui_out_text (uiout, " bytes\n");
6418         }
6419     }
6420
6421   l = b->commands ? b->commands->commands : NULL;
6422   if (!part_of_multiple && l)
6423     {
6424       struct cleanup *script_chain;
6425
6426       annotate_field (9);
6427       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6428       print_command_lines (uiout, l, 4);
6429       do_cleanups (script_chain);
6430     }
6431
6432   if (is_tracepoint (b))
6433     {
6434       struct tracepoint *t = (struct tracepoint *) b;
6435
6436       if (!part_of_multiple && t->pass_count)
6437         {
6438           annotate_field (10);
6439           ui_out_text (uiout, "\tpass count ");
6440           ui_out_field_int (uiout, "pass", t->pass_count);
6441           ui_out_text (uiout, " \n");
6442         }
6443
6444       /* Don't display it when tracepoint or tracepoint location is
6445          pending.   */
6446       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6447         {
6448           annotate_field (11);
6449
6450           if (ui_out_is_mi_like_p (uiout))
6451             ui_out_field_string (uiout, "installed",
6452                                  loc->inserted ? "y" : "n");
6453           else
6454             {
6455               if (loc->inserted)
6456                 ui_out_text (uiout, "\t");
6457               else
6458                 ui_out_text (uiout, "\tnot ");
6459               ui_out_text (uiout, "installed on target\n");
6460             }
6461         }
6462     }
6463
6464   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6465     {
6466       if (is_watchpoint (b))
6467         {
6468           struct watchpoint *w = (struct watchpoint *) b;
6469
6470           ui_out_field_string (uiout, "original-location", w->exp_string);
6471         }
6472       else if (b->addr_string)
6473         ui_out_field_string (uiout, "original-location", b->addr_string);
6474     }
6475 }
6476
6477 static void
6478 print_one_breakpoint (struct breakpoint *b,
6479                       struct bp_location **last_loc, 
6480                       int allflag)
6481 {
6482   struct cleanup *bkpt_chain;
6483   struct ui_out *uiout = current_uiout;
6484
6485   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6486
6487   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6488   do_cleanups (bkpt_chain);
6489
6490   /* If this breakpoint has custom print function,
6491      it's already printed.  Otherwise, print individual
6492      locations, if any.  */
6493   if (b->ops == NULL || b->ops->print_one == NULL)
6494     {
6495       /* If breakpoint has a single location that is disabled, we
6496          print it as if it had several locations, since otherwise it's
6497          hard to represent "breakpoint enabled, location disabled"
6498          situation.
6499
6500          Note that while hardware watchpoints have several locations
6501          internally, that's not a property exposed to user.  */
6502       if (b->loc 
6503           && !is_hardware_watchpoint (b)
6504           && (b->loc->next || !b->loc->enabled))
6505         {
6506           struct bp_location *loc;
6507           int n = 1;
6508
6509           for (loc = b->loc; loc; loc = loc->next, ++n)
6510             {
6511               struct cleanup *inner2 =
6512                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6513               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6514               do_cleanups (inner2);
6515             }
6516         }
6517     }
6518 }
6519
6520 static int
6521 breakpoint_address_bits (struct breakpoint *b)
6522 {
6523   int print_address_bits = 0;
6524   struct bp_location *loc;
6525
6526   for (loc = b->loc; loc; loc = loc->next)
6527     {
6528       int addr_bit;
6529
6530       /* Software watchpoints that aren't watching memory don't have
6531          an address to print.  */
6532       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6533         continue;
6534
6535       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6536       if (addr_bit > print_address_bits)
6537         print_address_bits = addr_bit;
6538     }
6539
6540   return print_address_bits;
6541 }
6542
6543 struct captured_breakpoint_query_args
6544   {
6545     int bnum;
6546   };
6547
6548 static int
6549 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6550 {
6551   struct captured_breakpoint_query_args *args = data;
6552   struct breakpoint *b;
6553   struct bp_location *dummy_loc = NULL;
6554
6555   ALL_BREAKPOINTS (b)
6556     {
6557       if (args->bnum == b->number)
6558         {
6559           print_one_breakpoint (b, &dummy_loc, 0);
6560           return GDB_RC_OK;
6561         }
6562     }
6563   return GDB_RC_NONE;
6564 }
6565
6566 enum gdb_rc
6567 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6568                       char **error_message)
6569 {
6570   struct captured_breakpoint_query_args args;
6571
6572   args.bnum = bnum;
6573   /* For the moment we don't trust print_one_breakpoint() to not throw
6574      an error.  */
6575   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6576                                  error_message, RETURN_MASK_ALL) < 0)
6577     return GDB_RC_FAIL;
6578   else
6579     return GDB_RC_OK;
6580 }
6581
6582 /* Return true if this breakpoint was set by the user, false if it is
6583    internal or momentary.  */
6584
6585 int
6586 user_breakpoint_p (struct breakpoint *b)
6587 {
6588   return b->number > 0;
6589 }
6590
6591 /* Print information on user settable breakpoint (watchpoint, etc)
6592    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6593    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6594    FILTER is non-NULL, call it on each breakpoint and only include the
6595    ones for which it returns non-zero.  Return the total number of
6596    breakpoints listed.  */
6597
6598 static int
6599 breakpoint_1 (char *args, int allflag, 
6600               int (*filter) (const struct breakpoint *))
6601 {
6602   struct breakpoint *b;
6603   struct bp_location *last_loc = NULL;
6604   int nr_printable_breakpoints;
6605   struct cleanup *bkpttbl_chain;
6606   struct value_print_options opts;
6607   int print_address_bits = 0;
6608   int print_type_col_width = 14;
6609   struct ui_out *uiout = current_uiout;
6610
6611   get_user_print_options (&opts);
6612
6613   /* Compute the number of rows in the table, as well as the size
6614      required for address fields.  */
6615   nr_printable_breakpoints = 0;
6616   ALL_BREAKPOINTS (b)
6617     {
6618       /* If we have a filter, only list the breakpoints it accepts.  */
6619       if (filter && !filter (b))
6620         continue;
6621
6622       /* If we have an "args" string, it is a list of breakpoints to 
6623          accept.  Skip the others.  */
6624       if (args != NULL && *args != '\0')
6625         {
6626           if (allflag && parse_and_eval_long (args) != b->number)
6627             continue;
6628           if (!allflag && !number_is_in_list (args, b->number))
6629             continue;
6630         }
6631
6632       if (allflag || user_breakpoint_p (b))
6633         {
6634           int addr_bit, type_len;
6635
6636           addr_bit = breakpoint_address_bits (b);
6637           if (addr_bit > print_address_bits)
6638             print_address_bits = addr_bit;
6639
6640           type_len = strlen (bptype_string (b->type));
6641           if (type_len > print_type_col_width)
6642             print_type_col_width = type_len;
6643
6644           nr_printable_breakpoints++;
6645         }
6646     }
6647
6648   if (opts.addressprint)
6649     bkpttbl_chain 
6650       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6651                                              nr_printable_breakpoints,
6652                                              "BreakpointTable");
6653   else
6654     bkpttbl_chain 
6655       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6656                                              nr_printable_breakpoints,
6657                                              "BreakpointTable");
6658
6659   if (nr_printable_breakpoints > 0)
6660     annotate_breakpoints_headers ();
6661   if (nr_printable_breakpoints > 0)
6662     annotate_field (0);
6663   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6664   if (nr_printable_breakpoints > 0)
6665     annotate_field (1);
6666   ui_out_table_header (uiout, print_type_col_width, ui_left,
6667                        "type", "Type");                         /* 2 */
6668   if (nr_printable_breakpoints > 0)
6669     annotate_field (2);
6670   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6671   if (nr_printable_breakpoints > 0)
6672     annotate_field (3);
6673   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6674   if (opts.addressprint)
6675     {
6676       if (nr_printable_breakpoints > 0)
6677         annotate_field (4);
6678       if (print_address_bits <= 32)
6679         ui_out_table_header (uiout, 10, ui_left, 
6680                              "addr", "Address");                /* 5 */
6681       else
6682         ui_out_table_header (uiout, 18, ui_left, 
6683                              "addr", "Address");                /* 5 */
6684     }
6685   if (nr_printable_breakpoints > 0)
6686     annotate_field (5);
6687   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6688   ui_out_table_body (uiout);
6689   if (nr_printable_breakpoints > 0)
6690     annotate_breakpoints_table ();
6691
6692   ALL_BREAKPOINTS (b)
6693     {
6694       QUIT;
6695       /* If we have a filter, only list the breakpoints it accepts.  */
6696       if (filter && !filter (b))
6697         continue;
6698
6699       /* If we have an "args" string, it is a list of breakpoints to 
6700          accept.  Skip the others.  */
6701
6702       if (args != NULL && *args != '\0')
6703         {
6704           if (allflag)  /* maintenance info breakpoint */
6705             {
6706               if (parse_and_eval_long (args) != b->number)
6707                 continue;
6708             }
6709           else          /* all others */
6710             {
6711               if (!number_is_in_list (args, b->number))
6712                 continue;
6713             }
6714         }
6715       /* We only print out user settable breakpoints unless the
6716          allflag is set.  */
6717       if (allflag || user_breakpoint_p (b))
6718         print_one_breakpoint (b, &last_loc, allflag);
6719     }
6720
6721   do_cleanups (bkpttbl_chain);
6722
6723   if (nr_printable_breakpoints == 0)
6724     {
6725       /* If there's a filter, let the caller decide how to report
6726          empty list.  */
6727       if (!filter)
6728         {
6729           if (args == NULL || *args == '\0')
6730             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6731           else
6732             ui_out_message (uiout, 0, 
6733                             "No breakpoint or watchpoint matching '%s'.\n",
6734                             args);
6735         }
6736     }
6737   else
6738     {
6739       if (last_loc && !server_command)
6740         set_next_address (last_loc->gdbarch, last_loc->address);
6741     }
6742
6743   /* FIXME?  Should this be moved up so that it is only called when
6744      there have been breakpoints? */
6745   annotate_breakpoints_table_end ();
6746
6747   return nr_printable_breakpoints;
6748 }
6749
6750 /* Display the value of default-collect in a way that is generally
6751    compatible with the breakpoint list.  */
6752
6753 static void
6754 default_collect_info (void)
6755 {
6756   struct ui_out *uiout = current_uiout;
6757
6758   /* If it has no value (which is frequently the case), say nothing; a
6759      message like "No default-collect." gets in user's face when it's
6760      not wanted.  */
6761   if (!*default_collect)
6762     return;
6763
6764   /* The following phrase lines up nicely with per-tracepoint collect
6765      actions.  */
6766   ui_out_text (uiout, "default collect ");
6767   ui_out_field_string (uiout, "default-collect", default_collect);
6768   ui_out_text (uiout, " \n");
6769 }
6770   
6771 static void
6772 breakpoints_info (char *args, int from_tty)
6773 {
6774   breakpoint_1 (args, 0, NULL);
6775
6776   default_collect_info ();
6777 }
6778
6779 static void
6780 watchpoints_info (char *args, int from_tty)
6781 {
6782   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6783   struct ui_out *uiout = current_uiout;
6784
6785   if (num_printed == 0)
6786     {
6787       if (args == NULL || *args == '\0')
6788         ui_out_message (uiout, 0, "No watchpoints.\n");
6789       else
6790         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6791     }
6792 }
6793
6794 static void
6795 maintenance_info_breakpoints (char *args, int from_tty)
6796 {
6797   breakpoint_1 (args, 1, NULL);
6798
6799   default_collect_info ();
6800 }
6801
6802 static int
6803 breakpoint_has_pc (struct breakpoint *b,
6804                    struct program_space *pspace,
6805                    CORE_ADDR pc, struct obj_section *section)
6806 {
6807   struct bp_location *bl = b->loc;
6808
6809   for (; bl; bl = bl->next)
6810     {
6811       if (bl->pspace == pspace
6812           && bl->address == pc
6813           && (!overlay_debugging || bl->section == section))
6814         return 1;         
6815     }
6816   return 0;
6817 }
6818
6819 /* Print a message describing any user-breakpoints set at PC.  This
6820    concerns with logical breakpoints, so we match program spaces, not
6821    address spaces.  */
6822
6823 static void
6824 describe_other_breakpoints (struct gdbarch *gdbarch,
6825                             struct program_space *pspace, CORE_ADDR pc,
6826                             struct obj_section *section, int thread)
6827 {
6828   int others = 0;
6829   struct breakpoint *b;
6830
6831   ALL_BREAKPOINTS (b)
6832     others += (user_breakpoint_p (b)
6833                && breakpoint_has_pc (b, pspace, pc, section));
6834   if (others > 0)
6835     {
6836       if (others == 1)
6837         printf_filtered (_("Note: breakpoint "));
6838       else /* if (others == ???) */
6839         printf_filtered (_("Note: breakpoints "));
6840       ALL_BREAKPOINTS (b)
6841         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6842           {
6843             others--;
6844             printf_filtered ("%d", b->number);
6845             if (b->thread == -1 && thread != -1)
6846               printf_filtered (" (all threads)");
6847             else if (b->thread != -1)
6848               printf_filtered (" (thread %d)", b->thread);
6849             printf_filtered ("%s%s ",
6850                              ((b->enable_state == bp_disabled
6851                                || b->enable_state == bp_call_disabled)
6852                               ? " (disabled)"
6853                               : ""),
6854                              (others > 1) ? "," 
6855                              : ((others == 1) ? " and" : ""));
6856           }
6857       printf_filtered (_("also set at pc "));
6858       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6859       printf_filtered (".\n");
6860     }
6861 }
6862 \f
6863
6864 /* Return true iff it is meaningful to use the address member of
6865    BPT.  For some breakpoint types, the address member is irrelevant
6866    and it makes no sense to attempt to compare it to other addresses
6867    (or use it for any other purpose either).
6868
6869    More specifically, each of the following breakpoint types will
6870    always have a zero valued address and we don't want to mark
6871    breakpoints of any of these types to be a duplicate of an actual
6872    breakpoint at address zero:
6873
6874       bp_watchpoint
6875       bp_catchpoint
6876
6877 */
6878
6879 static int
6880 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6881 {
6882   enum bptype type = bpt->type;
6883
6884   return (type != bp_watchpoint && type != bp_catchpoint);
6885 }
6886
6887 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6888    true if LOC1 and LOC2 represent the same watchpoint location.  */
6889
6890 static int
6891 watchpoint_locations_match (struct bp_location *loc1, 
6892                             struct bp_location *loc2)
6893 {
6894   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6895   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6896
6897   /* Both of them must exist.  */
6898   gdb_assert (w1 != NULL);
6899   gdb_assert (w2 != NULL);
6900
6901   /* If the target can evaluate the condition expression in hardware,
6902      then we we need to insert both watchpoints even if they are at
6903      the same place.  Otherwise the watchpoint will only trigger when
6904      the condition of whichever watchpoint was inserted evaluates to
6905      true, not giving a chance for GDB to check the condition of the
6906      other watchpoint.  */
6907   if ((w1->cond_exp
6908        && target_can_accel_watchpoint_condition (loc1->address, 
6909                                                  loc1->length,
6910                                                  loc1->watchpoint_type,
6911                                                  w1->cond_exp))
6912       || (w2->cond_exp
6913           && target_can_accel_watchpoint_condition (loc2->address, 
6914                                                     loc2->length,
6915                                                     loc2->watchpoint_type,
6916                                                     w2->cond_exp)))
6917     return 0;
6918
6919   /* Note that this checks the owner's type, not the location's.  In
6920      case the target does not support read watchpoints, but does
6921      support access watchpoints, we'll have bp_read_watchpoint
6922      watchpoints with hw_access locations.  Those should be considered
6923      duplicates of hw_read locations.  The hw_read locations will
6924      become hw_access locations later.  */
6925   return (loc1->owner->type == loc2->owner->type
6926           && loc1->pspace->aspace == loc2->pspace->aspace
6927           && loc1->address == loc2->address
6928           && loc1->length == loc2->length);
6929 }
6930
6931 /* See breakpoint.h.  */
6932
6933 int
6934 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6935                           struct address_space *aspace2, CORE_ADDR addr2)
6936 {
6937   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6938            || aspace1 == aspace2)
6939           && addr1 == addr2);
6940 }
6941
6942 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6943    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6944    matches ASPACE2.  On targets that have global breakpoints, the address
6945    space doesn't really matter.  */
6946
6947 static int
6948 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6949                                 int len1, struct address_space *aspace2,
6950                                 CORE_ADDR addr2)
6951 {
6952   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6953            || aspace1 == aspace2)
6954           && addr2 >= addr1 && addr2 < addr1 + len1);
6955 }
6956
6957 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6958    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6959    matches the breakpoint's address space.  On targets that have global
6960    breakpoints, the address space doesn't really matter.  */
6961
6962 static int
6963 breakpoint_location_address_match (struct bp_location *bl,
6964                                    struct address_space *aspace,
6965                                    CORE_ADDR addr)
6966 {
6967   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6968                                     aspace, addr)
6969           || (bl->length
6970               && breakpoint_address_match_range (bl->pspace->aspace,
6971                                                  bl->address, bl->length,
6972                                                  aspace, addr)));
6973 }
6974
6975 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6976    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6977    true, otherwise returns false.  */
6978
6979 static int
6980 tracepoint_locations_match (struct bp_location *loc1,
6981                             struct bp_location *loc2)
6982 {
6983   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6984     /* Since tracepoint locations are never duplicated with others', tracepoint
6985        locations at the same address of different tracepoints are regarded as
6986        different locations.  */
6987     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6988   else
6989     return 0;
6990 }
6991
6992 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6993    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6994    represent the same location.  */
6995
6996 static int
6997 breakpoint_locations_match (struct bp_location *loc1, 
6998                             struct bp_location *loc2)
6999 {
7000   int hw_point1, hw_point2;
7001
7002   /* Both of them must not be in moribund_locations.  */
7003   gdb_assert (loc1->owner != NULL);
7004   gdb_assert (loc2->owner != NULL);
7005
7006   hw_point1 = is_hardware_watchpoint (loc1->owner);
7007   hw_point2 = is_hardware_watchpoint (loc2->owner);
7008
7009   if (hw_point1 != hw_point2)
7010     return 0;
7011   else if (hw_point1)
7012     return watchpoint_locations_match (loc1, loc2);
7013   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7014     return tracepoint_locations_match (loc1, loc2);
7015   else
7016     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7017     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7018                                      loc2->pspace->aspace, loc2->address)
7019             && loc1->length == loc2->length);
7020 }
7021
7022 static void
7023 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7024                                int bnum, int have_bnum)
7025 {
7026   /* The longest string possibly returned by hex_string_custom
7027      is 50 chars.  These must be at least that big for safety.  */
7028   char astr1[64];
7029   char astr2[64];
7030
7031   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7032   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7033   if (have_bnum)
7034     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7035              bnum, astr1, astr2);
7036   else
7037     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7038 }
7039
7040 /* Adjust a breakpoint's address to account for architectural
7041    constraints on breakpoint placement.  Return the adjusted address.
7042    Note: Very few targets require this kind of adjustment.  For most
7043    targets, this function is simply the identity function.  */
7044
7045 static CORE_ADDR
7046 adjust_breakpoint_address (struct gdbarch *gdbarch,
7047                            CORE_ADDR bpaddr, enum bptype bptype)
7048 {
7049   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7050     {
7051       /* Very few targets need any kind of breakpoint adjustment.  */
7052       return bpaddr;
7053     }
7054   else if (bptype == bp_watchpoint
7055            || bptype == bp_hardware_watchpoint
7056            || bptype == bp_read_watchpoint
7057            || bptype == bp_access_watchpoint
7058            || bptype == bp_catchpoint)
7059     {
7060       /* Watchpoints and the various bp_catch_* eventpoints should not
7061          have their addresses modified.  */
7062       return bpaddr;
7063     }
7064   else if (bptype == bp_single_step)
7065     {
7066       /* Single-step breakpoints should not have their addresses
7067          modified.  If there's any architectural constrain that
7068          applies to this address, then it should have already been
7069          taken into account when the breakpoint was created in the
7070          first place.  If we didn't do this, stepping through e.g.,
7071          Thumb-2 IT blocks would break.  */
7072       return bpaddr;
7073     }
7074   else
7075     {
7076       CORE_ADDR adjusted_bpaddr;
7077
7078       /* Some targets have architectural constraints on the placement
7079          of breakpoint instructions.  Obtain the adjusted address.  */
7080       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7081
7082       /* An adjusted breakpoint address can significantly alter
7083          a user's expectations.  Print a warning if an adjustment
7084          is required.  */
7085       if (adjusted_bpaddr != bpaddr)
7086         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7087
7088       return adjusted_bpaddr;
7089     }
7090 }
7091
7092 void
7093 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7094                   struct breakpoint *owner)
7095 {
7096   memset (loc, 0, sizeof (*loc));
7097
7098   gdb_assert (ops != NULL);
7099
7100   loc->ops = ops;
7101   loc->owner = owner;
7102   loc->cond = NULL;
7103   loc->cond_bytecode = NULL;
7104   loc->shlib_disabled = 0;
7105   loc->enabled = 1;
7106
7107   switch (owner->type)
7108     {
7109     case bp_breakpoint:
7110     case bp_single_step:
7111     case bp_until:
7112     case bp_finish:
7113     case bp_longjmp:
7114     case bp_longjmp_resume:
7115     case bp_longjmp_call_dummy:
7116     case bp_exception:
7117     case bp_exception_resume:
7118     case bp_step_resume:
7119     case bp_hp_step_resume:
7120     case bp_watchpoint_scope:
7121     case bp_call_dummy:
7122     case bp_std_terminate:
7123     case bp_shlib_event:
7124     case bp_thread_event:
7125     case bp_overlay_event:
7126     case bp_jit_event:
7127     case bp_longjmp_master:
7128     case bp_std_terminate_master:
7129     case bp_exception_master:
7130     case bp_gnu_ifunc_resolver:
7131     case bp_gnu_ifunc_resolver_return:
7132     case bp_dprintf:
7133       loc->loc_type = bp_loc_software_breakpoint;
7134       mark_breakpoint_location_modified (loc);
7135       break;
7136     case bp_hardware_breakpoint:
7137       loc->loc_type = bp_loc_hardware_breakpoint;
7138       mark_breakpoint_location_modified (loc);
7139       break;
7140     case bp_hardware_watchpoint:
7141     case bp_read_watchpoint:
7142     case bp_access_watchpoint:
7143       loc->loc_type = bp_loc_hardware_watchpoint;
7144       break;
7145     case bp_watchpoint:
7146     case bp_catchpoint:
7147     case bp_tracepoint:
7148     case bp_fast_tracepoint:
7149     case bp_static_tracepoint:
7150       loc->loc_type = bp_loc_other;
7151       break;
7152     default:
7153       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7154     }
7155
7156   loc->refc = 1;
7157 }
7158
7159 /* Allocate a struct bp_location.  */
7160
7161 static struct bp_location *
7162 allocate_bp_location (struct breakpoint *bpt)
7163 {
7164   return bpt->ops->allocate_location (bpt);
7165 }
7166
7167 static void
7168 free_bp_location (struct bp_location *loc)
7169 {
7170   loc->ops->dtor (loc);
7171   xfree (loc);
7172 }
7173
7174 /* Increment reference count.  */
7175
7176 static void
7177 incref_bp_location (struct bp_location *bl)
7178 {
7179   ++bl->refc;
7180 }
7181
7182 /* Decrement reference count.  If the reference count reaches 0,
7183    destroy the bp_location.  Sets *BLP to NULL.  */
7184
7185 static void
7186 decref_bp_location (struct bp_location **blp)
7187 {
7188   gdb_assert ((*blp)->refc > 0);
7189
7190   if (--(*blp)->refc == 0)
7191     free_bp_location (*blp);
7192   *blp = NULL;
7193 }
7194
7195 /* Add breakpoint B at the end of the global breakpoint chain.  */
7196
7197 static void
7198 add_to_breakpoint_chain (struct breakpoint *b)
7199 {
7200   struct breakpoint *b1;
7201
7202   /* Add this breakpoint to the end of the chain so that a list of
7203      breakpoints will come out in order of increasing numbers.  */
7204
7205   b1 = breakpoint_chain;
7206   if (b1 == 0)
7207     breakpoint_chain = b;
7208   else
7209     {
7210       while (b1->next)
7211         b1 = b1->next;
7212       b1->next = b;
7213     }
7214 }
7215
7216 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7217
7218 static void
7219 init_raw_breakpoint_without_location (struct breakpoint *b,
7220                                       struct gdbarch *gdbarch,
7221                                       enum bptype bptype,
7222                                       const struct breakpoint_ops *ops)
7223 {
7224   memset (b, 0, sizeof (*b));
7225
7226   gdb_assert (ops != NULL);
7227
7228   b->ops = ops;
7229   b->type = bptype;
7230   b->gdbarch = gdbarch;
7231   b->language = current_language->la_language;
7232   b->input_radix = input_radix;
7233   b->thread = -1;
7234   b->enable_state = bp_enabled;
7235   b->next = 0;
7236   b->silent = 0;
7237   b->ignore_count = 0;
7238   b->commands = NULL;
7239   b->frame_id = null_frame_id;
7240   b->condition_not_parsed = 0;
7241   b->py_bp_object = NULL;
7242   b->related_breakpoint = b;
7243 }
7244
7245 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7246    that has type BPTYPE and has no locations as yet.  */
7247
7248 static struct breakpoint *
7249 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7250                                      enum bptype bptype,
7251                                      const struct breakpoint_ops *ops)
7252 {
7253   struct breakpoint *b = XNEW (struct breakpoint);
7254
7255   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7256   add_to_breakpoint_chain (b);
7257   return b;
7258 }
7259
7260 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7261    resolutions should be made as the user specified the location explicitly
7262    enough.  */
7263
7264 static void
7265 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7266 {
7267   gdb_assert (loc->owner != NULL);
7268
7269   if (loc->owner->type == bp_breakpoint
7270       || loc->owner->type == bp_hardware_breakpoint
7271       || is_tracepoint (loc->owner))
7272     {
7273       int is_gnu_ifunc;
7274       const char *function_name;
7275       CORE_ADDR func_addr;
7276
7277       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7278                                           &func_addr, NULL, &is_gnu_ifunc);
7279
7280       if (is_gnu_ifunc && !explicit_loc)
7281         {
7282           struct breakpoint *b = loc->owner;
7283
7284           gdb_assert (loc->pspace == current_program_space);
7285           if (gnu_ifunc_resolve_name (function_name,
7286                                       &loc->requested_address))
7287             {
7288               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7289               loc->address = adjust_breakpoint_address (loc->gdbarch,
7290                                                         loc->requested_address,
7291                                                         b->type);
7292             }
7293           else if (b->type == bp_breakpoint && b->loc == loc
7294                    && loc->next == NULL && b->related_breakpoint == b)
7295             {
7296               /* Create only the whole new breakpoint of this type but do not
7297                  mess more complicated breakpoints with multiple locations.  */
7298               b->type = bp_gnu_ifunc_resolver;
7299               /* Remember the resolver's address for use by the return
7300                  breakpoint.  */
7301               loc->related_address = func_addr;
7302             }
7303         }
7304
7305       if (function_name)
7306         loc->function_name = xstrdup (function_name);
7307     }
7308 }
7309
7310 /* Attempt to determine architecture of location identified by SAL.  */
7311 struct gdbarch *
7312 get_sal_arch (struct symtab_and_line sal)
7313 {
7314   if (sal.section)
7315     return get_objfile_arch (sal.section->objfile);
7316   if (sal.symtab)
7317     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7318
7319   return NULL;
7320 }
7321
7322 /* Low level routine for partially initializing a breakpoint of type
7323    BPTYPE.  The newly created breakpoint's address, section, source
7324    file name, and line number are provided by SAL.
7325
7326    It is expected that the caller will complete the initialization of
7327    the newly created breakpoint struct as well as output any status
7328    information regarding the creation of a new breakpoint.  */
7329
7330 static void
7331 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7332                      struct symtab_and_line sal, enum bptype bptype,
7333                      const struct breakpoint_ops *ops)
7334 {
7335   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7336
7337   add_location_to_breakpoint (b, &sal);
7338
7339   if (bptype != bp_catchpoint)
7340     gdb_assert (sal.pspace != NULL);
7341
7342   /* Store the program space that was used to set the breakpoint,
7343      except for ordinary breakpoints, which are independent of the
7344      program space.  */
7345   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7346     b->pspace = sal.pspace;
7347 }
7348
7349 /* set_raw_breakpoint is a low level routine for allocating and
7350    partially initializing a breakpoint of type BPTYPE.  The newly
7351    created breakpoint's address, section, source file name, and line
7352    number are provided by SAL.  The newly created and partially
7353    initialized breakpoint is added to the breakpoint chain and
7354    is also returned as the value of this function.
7355
7356    It is expected that the caller will complete the initialization of
7357    the newly created breakpoint struct as well as output any status
7358    information regarding the creation of a new breakpoint.  In
7359    particular, set_raw_breakpoint does NOT set the breakpoint
7360    number!  Care should be taken to not allow an error to occur
7361    prior to completing the initialization of the breakpoint.  If this
7362    should happen, a bogus breakpoint will be left on the chain.  */
7363
7364 struct breakpoint *
7365 set_raw_breakpoint (struct gdbarch *gdbarch,
7366                     struct symtab_and_line sal, enum bptype bptype,
7367                     const struct breakpoint_ops *ops)
7368 {
7369   struct breakpoint *b = XNEW (struct breakpoint);
7370
7371   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7372   add_to_breakpoint_chain (b);
7373   return b;
7374 }
7375
7376
7377 /* Note that the breakpoint object B describes a permanent breakpoint
7378    instruction, hard-wired into the inferior's code.  */
7379 void
7380 make_breakpoint_permanent (struct breakpoint *b)
7381 {
7382   struct bp_location *bl;
7383
7384   /* By definition, permanent breakpoints are already present in the
7385      code.  Mark all locations as inserted.  For now,
7386      make_breakpoint_permanent is called in just one place, so it's
7387      hard to say if it's reasonable to have permanent breakpoint with
7388      multiple locations or not, but it's easy to implement.  */
7389   for (bl = b->loc; bl; bl = bl->next)
7390     {
7391       bl->permanent = 1;
7392       bl->inserted = 1;
7393     }
7394 }
7395
7396 /* Call this routine when stepping and nexting to enable a breakpoint
7397    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7398    initiated the operation.  */
7399
7400 void
7401 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7402 {
7403   struct breakpoint *b, *b_tmp;
7404   int thread = tp->num;
7405
7406   /* To avoid having to rescan all objfile symbols at every step,
7407      we maintain a list of continually-inserted but always disabled
7408      longjmp "master" breakpoints.  Here, we simply create momentary
7409      clones of those and enable them for the requested thread.  */
7410   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7411     if (b->pspace == current_program_space
7412         && (b->type == bp_longjmp_master
7413             || b->type == bp_exception_master))
7414       {
7415         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7416         struct breakpoint *clone;
7417
7418         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7419            after their removal.  */
7420         clone = momentary_breakpoint_from_master (b, type,
7421                                                   &longjmp_breakpoint_ops, 1);
7422         clone->thread = thread;
7423       }
7424
7425   tp->initiating_frame = frame;
7426 }
7427
7428 /* Delete all longjmp breakpoints from THREAD.  */
7429 void
7430 delete_longjmp_breakpoint (int thread)
7431 {
7432   struct breakpoint *b, *b_tmp;
7433
7434   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7435     if (b->type == bp_longjmp || b->type == bp_exception)
7436       {
7437         if (b->thread == thread)
7438           delete_breakpoint (b);
7439       }
7440 }
7441
7442 void
7443 delete_longjmp_breakpoint_at_next_stop (int thread)
7444 {
7445   struct breakpoint *b, *b_tmp;
7446
7447   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7448     if (b->type == bp_longjmp || b->type == bp_exception)
7449       {
7450         if (b->thread == thread)
7451           b->disposition = disp_del_at_next_stop;
7452       }
7453 }
7454
7455 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7456    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7457    pointer to any of them.  Return NULL if this system cannot place longjmp
7458    breakpoints.  */
7459
7460 struct breakpoint *
7461 set_longjmp_breakpoint_for_call_dummy (void)
7462 {
7463   struct breakpoint *b, *retval = NULL;
7464
7465   ALL_BREAKPOINTS (b)
7466     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7467       {
7468         struct breakpoint *new_b;
7469
7470         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7471                                                   &momentary_breakpoint_ops,
7472                                                   1);
7473         new_b->thread = pid_to_thread_id (inferior_ptid);
7474
7475         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7476
7477         gdb_assert (new_b->related_breakpoint == new_b);
7478         if (retval == NULL)
7479           retval = new_b;
7480         new_b->related_breakpoint = retval;
7481         while (retval->related_breakpoint != new_b->related_breakpoint)
7482           retval = retval->related_breakpoint;
7483         retval->related_breakpoint = new_b;
7484       }
7485
7486   return retval;
7487 }
7488
7489 /* Verify all existing dummy frames and their associated breakpoints for
7490    TP.  Remove those which can no longer be found in the current frame
7491    stack.
7492
7493    You should call this function only at places where it is safe to currently
7494    unwind the whole stack.  Failed stack unwind would discard live dummy
7495    frames.  */
7496
7497 void
7498 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7499 {
7500   struct breakpoint *b, *b_tmp;
7501
7502   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7503     if (b->type == bp_longjmp_call_dummy && b->thread == tp->num)
7504       {
7505         struct breakpoint *dummy_b = b->related_breakpoint;
7506
7507         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7508           dummy_b = dummy_b->related_breakpoint;
7509         if (dummy_b->type != bp_call_dummy
7510             || frame_find_by_id (dummy_b->frame_id) != NULL)
7511           continue;
7512         
7513         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7514
7515         while (b->related_breakpoint != b)
7516           {
7517             if (b_tmp == b->related_breakpoint)
7518               b_tmp = b->related_breakpoint->next;
7519             delete_breakpoint (b->related_breakpoint);
7520           }
7521         delete_breakpoint (b);
7522       }
7523 }
7524
7525 void
7526 enable_overlay_breakpoints (void)
7527 {
7528   struct breakpoint *b;
7529
7530   ALL_BREAKPOINTS (b)
7531     if (b->type == bp_overlay_event)
7532     {
7533       b->enable_state = bp_enabled;
7534       update_global_location_list (UGLL_MAY_INSERT);
7535       overlay_events_enabled = 1;
7536     }
7537 }
7538
7539 void
7540 disable_overlay_breakpoints (void)
7541 {
7542   struct breakpoint *b;
7543
7544   ALL_BREAKPOINTS (b)
7545     if (b->type == bp_overlay_event)
7546     {
7547       b->enable_state = bp_disabled;
7548       update_global_location_list (UGLL_DONT_INSERT);
7549       overlay_events_enabled = 0;
7550     }
7551 }
7552
7553 /* Set an active std::terminate breakpoint for each std::terminate
7554    master breakpoint.  */
7555 void
7556 set_std_terminate_breakpoint (void)
7557 {
7558   struct breakpoint *b, *b_tmp;
7559
7560   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7561     if (b->pspace == current_program_space
7562         && b->type == bp_std_terminate_master)
7563       {
7564         momentary_breakpoint_from_master (b, bp_std_terminate,
7565                                           &momentary_breakpoint_ops, 1);
7566       }
7567 }
7568
7569 /* Delete all the std::terminate breakpoints.  */
7570 void
7571 delete_std_terminate_breakpoint (void)
7572 {
7573   struct breakpoint *b, *b_tmp;
7574
7575   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7576     if (b->type == bp_std_terminate)
7577       delete_breakpoint (b);
7578 }
7579
7580 struct breakpoint *
7581 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7582 {
7583   struct breakpoint *b;
7584
7585   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7586                                   &internal_breakpoint_ops);
7587
7588   b->enable_state = bp_enabled;
7589   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7590   b->addr_string
7591     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7592
7593   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7594
7595   return b;
7596 }
7597
7598 void
7599 remove_thread_event_breakpoints (void)
7600 {
7601   struct breakpoint *b, *b_tmp;
7602
7603   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7604     if (b->type == bp_thread_event
7605         && b->loc->pspace == current_program_space)
7606       delete_breakpoint (b);
7607 }
7608
7609 struct lang_and_radix
7610   {
7611     enum language lang;
7612     int radix;
7613   };
7614
7615 /* Create a breakpoint for JIT code registration and unregistration.  */
7616
7617 struct breakpoint *
7618 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7619 {
7620   struct breakpoint *b;
7621
7622   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7623                                   &internal_breakpoint_ops);
7624   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7625   return b;
7626 }
7627
7628 /* Remove JIT code registration and unregistration breakpoint(s).  */
7629
7630 void
7631 remove_jit_event_breakpoints (void)
7632 {
7633   struct breakpoint *b, *b_tmp;
7634
7635   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7636     if (b->type == bp_jit_event
7637         && b->loc->pspace == current_program_space)
7638       delete_breakpoint (b);
7639 }
7640
7641 void
7642 remove_solib_event_breakpoints (void)
7643 {
7644   struct breakpoint *b, *b_tmp;
7645
7646   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7647     if (b->type == bp_shlib_event
7648         && b->loc->pspace == current_program_space)
7649       delete_breakpoint (b);
7650 }
7651
7652 /* See breakpoint.h.  */
7653
7654 void
7655 remove_solib_event_breakpoints_at_next_stop (void)
7656 {
7657   struct breakpoint *b, *b_tmp;
7658
7659   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7660     if (b->type == bp_shlib_event
7661         && b->loc->pspace == current_program_space)
7662       b->disposition = disp_del_at_next_stop;
7663 }
7664
7665 /* Helper for create_solib_event_breakpoint /
7666    create_and_insert_solib_event_breakpoint.  Allows specifying which
7667    INSERT_MODE to pass through to update_global_location_list.  */
7668
7669 static struct breakpoint *
7670 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7671                                  enum ugll_insert_mode insert_mode)
7672 {
7673   struct breakpoint *b;
7674
7675   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7676                                   &internal_breakpoint_ops);
7677   update_global_location_list_nothrow (insert_mode);
7678   return b;
7679 }
7680
7681 struct breakpoint *
7682 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7683 {
7684   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7685 }
7686
7687 /* See breakpoint.h.  */
7688
7689 struct breakpoint *
7690 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7691 {
7692   struct breakpoint *b;
7693
7694   /* Explicitly tell update_global_location_list to insert
7695      locations.  */
7696   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7697   if (!b->loc->inserted)
7698     {
7699       delete_breakpoint (b);
7700       return NULL;
7701     }
7702   return b;
7703 }
7704
7705 /* Disable any breakpoints that are on code in shared libraries.  Only
7706    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7707
7708 void
7709 disable_breakpoints_in_shlibs (void)
7710 {
7711   struct bp_location *loc, **locp_tmp;
7712
7713   ALL_BP_LOCATIONS (loc, locp_tmp)
7714   {
7715     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7716     struct breakpoint *b = loc->owner;
7717
7718     /* We apply the check to all breakpoints, including disabled for
7719        those with loc->duplicate set.  This is so that when breakpoint
7720        becomes enabled, or the duplicate is removed, gdb will try to
7721        insert all breakpoints.  If we don't set shlib_disabled here,
7722        we'll try to insert those breakpoints and fail.  */
7723     if (((b->type == bp_breakpoint)
7724          || (b->type == bp_jit_event)
7725          || (b->type == bp_hardware_breakpoint)
7726          || (is_tracepoint (b)))
7727         && loc->pspace == current_program_space
7728         && !loc->shlib_disabled
7729         && solib_name_from_address (loc->pspace, loc->address)
7730         )
7731       {
7732         loc->shlib_disabled = 1;
7733       }
7734   }
7735 }
7736
7737 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7738    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7739    disabled ones can just stay disabled.  */
7740
7741 static void
7742 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7743 {
7744   struct bp_location *loc, **locp_tmp;
7745   int disabled_shlib_breaks = 0;
7746
7747   /* SunOS a.out shared libraries are always mapped, so do not
7748      disable breakpoints; they will only be reported as unloaded
7749      through clear_solib when GDB discards its shared library
7750      list.  See clear_solib for more information.  */
7751   if (exec_bfd != NULL
7752       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7753     return;
7754
7755   ALL_BP_LOCATIONS (loc, locp_tmp)
7756   {
7757     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7758     struct breakpoint *b = loc->owner;
7759
7760     if (solib->pspace == loc->pspace
7761         && !loc->shlib_disabled
7762         && (((b->type == bp_breakpoint
7763               || b->type == bp_jit_event
7764               || b->type == bp_hardware_breakpoint)
7765              && (loc->loc_type == bp_loc_hardware_breakpoint
7766                  || loc->loc_type == bp_loc_software_breakpoint))
7767             || is_tracepoint (b))
7768         && solib_contains_address_p (solib, loc->address))
7769       {
7770         loc->shlib_disabled = 1;
7771         /* At this point, we cannot rely on remove_breakpoint
7772            succeeding so we must mark the breakpoint as not inserted
7773            to prevent future errors occurring in remove_breakpoints.  */
7774         loc->inserted = 0;
7775
7776         /* This may cause duplicate notifications for the same breakpoint.  */
7777         observer_notify_breakpoint_modified (b);
7778
7779         if (!disabled_shlib_breaks)
7780           {
7781             target_terminal_ours_for_output ();
7782             warning (_("Temporarily disabling breakpoints "
7783                        "for unloaded shared library \"%s\""),
7784                      solib->so_name);
7785           }
7786         disabled_shlib_breaks = 1;
7787       }
7788   }
7789 }
7790
7791 /* Disable any breakpoints and tracepoints in OBJFILE upon
7792    notification of free_objfile.  Only apply to enabled breakpoints,
7793    disabled ones can just stay disabled.  */
7794
7795 static void
7796 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7797 {
7798   struct breakpoint *b;
7799
7800   if (objfile == NULL)
7801     return;
7802
7803   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7804      managed by the user with add-symbol-file/remove-symbol-file.
7805      Similarly to how breakpoints in shared libraries are handled in
7806      response to "nosharedlibrary", mark breakpoints in such modules
7807      shlib_disabled so they end up uninserted on the next global
7808      location list update.  Shared libraries not loaded by the user
7809      aren't handled here -- they're already handled in
7810      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7811      solib_unloaded observer.  We skip objfiles that are not
7812      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7813      main objfile).  */
7814   if ((objfile->flags & OBJF_SHARED) == 0
7815       || (objfile->flags & OBJF_USERLOADED) == 0)
7816     return;
7817
7818   ALL_BREAKPOINTS (b)
7819     {
7820       struct bp_location *loc;
7821       int bp_modified = 0;
7822
7823       if (!is_breakpoint (b) && !is_tracepoint (b))
7824         continue;
7825
7826       for (loc = b->loc; loc != NULL; loc = loc->next)
7827         {
7828           CORE_ADDR loc_addr = loc->address;
7829
7830           if (loc->loc_type != bp_loc_hardware_breakpoint
7831               && loc->loc_type != bp_loc_software_breakpoint)
7832             continue;
7833
7834           if (loc->shlib_disabled != 0)
7835             continue;
7836
7837           if (objfile->pspace != loc->pspace)
7838             continue;
7839
7840           if (loc->loc_type != bp_loc_hardware_breakpoint
7841               && loc->loc_type != bp_loc_software_breakpoint)
7842             continue;
7843
7844           if (is_addr_in_objfile (loc_addr, objfile))
7845             {
7846               loc->shlib_disabled = 1;
7847               /* At this point, we don't know whether the object was
7848                  unmapped from the inferior or not, so leave the
7849                  inserted flag alone.  We'll handle failure to
7850                  uninsert quietly, in case the object was indeed
7851                  unmapped.  */
7852
7853               mark_breakpoint_location_modified (loc);
7854
7855               bp_modified = 1;
7856             }
7857         }
7858
7859       if (bp_modified)
7860         observer_notify_breakpoint_modified (b);
7861     }
7862 }
7863
7864 /* FORK & VFORK catchpoints.  */
7865
7866 /* An instance of this type is used to represent a fork or vfork
7867    catchpoint.  It includes a "struct breakpoint" as a kind of base
7868    class; users downcast to "struct breakpoint *" when needed.  A
7869    breakpoint is really of this type iff its ops pointer points to
7870    CATCH_FORK_BREAKPOINT_OPS.  */
7871
7872 struct fork_catchpoint
7873 {
7874   /* The base class.  */
7875   struct breakpoint base;
7876
7877   /* Process id of a child process whose forking triggered this
7878      catchpoint.  This field is only valid immediately after this
7879      catchpoint has triggered.  */
7880   ptid_t forked_inferior_pid;
7881 };
7882
7883 /* Implement the "insert" breakpoint_ops method for fork
7884    catchpoints.  */
7885
7886 static int
7887 insert_catch_fork (struct bp_location *bl)
7888 {
7889   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7890 }
7891
7892 /* Implement the "remove" breakpoint_ops method for fork
7893    catchpoints.  */
7894
7895 static int
7896 remove_catch_fork (struct bp_location *bl)
7897 {
7898   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7899 }
7900
7901 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7902    catchpoints.  */
7903
7904 static int
7905 breakpoint_hit_catch_fork (const struct bp_location *bl,
7906                            struct address_space *aspace, CORE_ADDR bp_addr,
7907                            const struct target_waitstatus *ws)
7908 {
7909   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7910
7911   if (ws->kind != TARGET_WAITKIND_FORKED)
7912     return 0;
7913
7914   c->forked_inferior_pid = ws->value.related_pid;
7915   return 1;
7916 }
7917
7918 /* Implement the "print_it" breakpoint_ops method for fork
7919    catchpoints.  */
7920
7921 static enum print_stop_action
7922 print_it_catch_fork (bpstat bs)
7923 {
7924   struct ui_out *uiout = current_uiout;
7925   struct breakpoint *b = bs->breakpoint_at;
7926   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7927
7928   annotate_catchpoint (b->number);
7929   if (b->disposition == disp_del)
7930     ui_out_text (uiout, "\nTemporary catchpoint ");
7931   else
7932     ui_out_text (uiout, "\nCatchpoint ");
7933   if (ui_out_is_mi_like_p (uiout))
7934     {
7935       ui_out_field_string (uiout, "reason",
7936                            async_reason_lookup (EXEC_ASYNC_FORK));
7937       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7938     }
7939   ui_out_field_int (uiout, "bkptno", b->number);
7940   ui_out_text (uiout, " (forked process ");
7941   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7942   ui_out_text (uiout, "), ");
7943   return PRINT_SRC_AND_LOC;
7944 }
7945
7946 /* Implement the "print_one" breakpoint_ops method for fork
7947    catchpoints.  */
7948
7949 static void
7950 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7951 {
7952   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7953   struct value_print_options opts;
7954   struct ui_out *uiout = current_uiout;
7955
7956   get_user_print_options (&opts);
7957
7958   /* Field 4, the address, is omitted (which makes the columns not
7959      line up too nicely with the headers, but the effect is relatively
7960      readable).  */
7961   if (opts.addressprint)
7962     ui_out_field_skip (uiout, "addr");
7963   annotate_field (5);
7964   ui_out_text (uiout, "fork");
7965   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7966     {
7967       ui_out_text (uiout, ", process ");
7968       ui_out_field_int (uiout, "what",
7969                         ptid_get_pid (c->forked_inferior_pid));
7970       ui_out_spaces (uiout, 1);
7971     }
7972
7973   if (ui_out_is_mi_like_p (uiout))
7974     ui_out_field_string (uiout, "catch-type", "fork");
7975 }
7976
7977 /* Implement the "print_mention" breakpoint_ops method for fork
7978    catchpoints.  */
7979
7980 static void
7981 print_mention_catch_fork (struct breakpoint *b)
7982 {
7983   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7984 }
7985
7986 /* Implement the "print_recreate" breakpoint_ops method for fork
7987    catchpoints.  */
7988
7989 static void
7990 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7991 {
7992   fprintf_unfiltered (fp, "catch fork");
7993   print_recreate_thread (b, fp);
7994 }
7995
7996 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7997
7998 static struct breakpoint_ops catch_fork_breakpoint_ops;
7999
8000 /* Implement the "insert" breakpoint_ops method for vfork
8001    catchpoints.  */
8002
8003 static int
8004 insert_catch_vfork (struct bp_location *bl)
8005 {
8006   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8007 }
8008
8009 /* Implement the "remove" breakpoint_ops method for vfork
8010    catchpoints.  */
8011
8012 static int
8013 remove_catch_vfork (struct bp_location *bl)
8014 {
8015   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8016 }
8017
8018 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8019    catchpoints.  */
8020
8021 static int
8022 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8023                             struct address_space *aspace, CORE_ADDR bp_addr,
8024                             const struct target_waitstatus *ws)
8025 {
8026   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8027
8028   if (ws->kind != TARGET_WAITKIND_VFORKED)
8029     return 0;
8030
8031   c->forked_inferior_pid = ws->value.related_pid;
8032   return 1;
8033 }
8034
8035 /* Implement the "print_it" breakpoint_ops method for vfork
8036    catchpoints.  */
8037
8038 static enum print_stop_action
8039 print_it_catch_vfork (bpstat bs)
8040 {
8041   struct ui_out *uiout = current_uiout;
8042   struct breakpoint *b = bs->breakpoint_at;
8043   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8044
8045   annotate_catchpoint (b->number);
8046   if (b->disposition == disp_del)
8047     ui_out_text (uiout, "\nTemporary catchpoint ");
8048   else
8049     ui_out_text (uiout, "\nCatchpoint ");
8050   if (ui_out_is_mi_like_p (uiout))
8051     {
8052       ui_out_field_string (uiout, "reason",
8053                            async_reason_lookup (EXEC_ASYNC_VFORK));
8054       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8055     }
8056   ui_out_field_int (uiout, "bkptno", b->number);
8057   ui_out_text (uiout, " (vforked process ");
8058   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8059   ui_out_text (uiout, "), ");
8060   return PRINT_SRC_AND_LOC;
8061 }
8062
8063 /* Implement the "print_one" breakpoint_ops method for vfork
8064    catchpoints.  */
8065
8066 static void
8067 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8068 {
8069   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8070   struct value_print_options opts;
8071   struct ui_out *uiout = current_uiout;
8072
8073   get_user_print_options (&opts);
8074   /* Field 4, the address, is omitted (which makes the columns not
8075      line up too nicely with the headers, but the effect is relatively
8076      readable).  */
8077   if (opts.addressprint)
8078     ui_out_field_skip (uiout, "addr");
8079   annotate_field (5);
8080   ui_out_text (uiout, "vfork");
8081   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8082     {
8083       ui_out_text (uiout, ", process ");
8084       ui_out_field_int (uiout, "what",
8085                         ptid_get_pid (c->forked_inferior_pid));
8086       ui_out_spaces (uiout, 1);
8087     }
8088
8089   if (ui_out_is_mi_like_p (uiout))
8090     ui_out_field_string (uiout, "catch-type", "vfork");
8091 }
8092
8093 /* Implement the "print_mention" breakpoint_ops method for vfork
8094    catchpoints.  */
8095
8096 static void
8097 print_mention_catch_vfork (struct breakpoint *b)
8098 {
8099   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8100 }
8101
8102 /* Implement the "print_recreate" breakpoint_ops method for vfork
8103    catchpoints.  */
8104
8105 static void
8106 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8107 {
8108   fprintf_unfiltered (fp, "catch vfork");
8109   print_recreate_thread (b, fp);
8110 }
8111
8112 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8113
8114 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8115
8116 /* An instance of this type is used to represent an solib catchpoint.
8117    It includes a "struct breakpoint" as a kind of base class; users
8118    downcast to "struct breakpoint *" when needed.  A breakpoint is
8119    really of this type iff its ops pointer points to
8120    CATCH_SOLIB_BREAKPOINT_OPS.  */
8121
8122 struct solib_catchpoint
8123 {
8124   /* The base class.  */
8125   struct breakpoint base;
8126
8127   /* True for "catch load", false for "catch unload".  */
8128   unsigned char is_load;
8129
8130   /* Regular expression to match, if any.  COMPILED is only valid when
8131      REGEX is non-NULL.  */
8132   char *regex;
8133   regex_t compiled;
8134 };
8135
8136 static void
8137 dtor_catch_solib (struct breakpoint *b)
8138 {
8139   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8140
8141   if (self->regex)
8142     regfree (&self->compiled);
8143   xfree (self->regex);
8144
8145   base_breakpoint_ops.dtor (b);
8146 }
8147
8148 static int
8149 insert_catch_solib (struct bp_location *ignore)
8150 {
8151   return 0;
8152 }
8153
8154 static int
8155 remove_catch_solib (struct bp_location *ignore)
8156 {
8157   return 0;
8158 }
8159
8160 static int
8161 breakpoint_hit_catch_solib (const struct bp_location *bl,
8162                             struct address_space *aspace,
8163                             CORE_ADDR bp_addr,
8164                             const struct target_waitstatus *ws)
8165 {
8166   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8167   struct breakpoint *other;
8168
8169   if (ws->kind == TARGET_WAITKIND_LOADED)
8170     return 1;
8171
8172   ALL_BREAKPOINTS (other)
8173   {
8174     struct bp_location *other_bl;
8175
8176     if (other == bl->owner)
8177       continue;
8178
8179     if (other->type != bp_shlib_event)
8180       continue;
8181
8182     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8183       continue;
8184
8185     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8186       {
8187         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8188           return 1;
8189       }
8190   }
8191
8192   return 0;
8193 }
8194
8195 static void
8196 check_status_catch_solib (struct bpstats *bs)
8197 {
8198   struct solib_catchpoint *self
8199     = (struct solib_catchpoint *) bs->breakpoint_at;
8200   int ix;
8201
8202   if (self->is_load)
8203     {
8204       struct so_list *iter;
8205
8206       for (ix = 0;
8207            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8208                         ix, iter);
8209            ++ix)
8210         {
8211           if (!self->regex
8212               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8213             return;
8214         }
8215     }
8216   else
8217     {
8218       char *iter;
8219
8220       for (ix = 0;
8221            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8222                         ix, iter);
8223            ++ix)
8224         {
8225           if (!self->regex
8226               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8227             return;
8228         }
8229     }
8230
8231   bs->stop = 0;
8232   bs->print_it = print_it_noop;
8233 }
8234
8235 static enum print_stop_action
8236 print_it_catch_solib (bpstat bs)
8237 {
8238   struct breakpoint *b = bs->breakpoint_at;
8239   struct ui_out *uiout = current_uiout;
8240
8241   annotate_catchpoint (b->number);
8242   if (b->disposition == disp_del)
8243     ui_out_text (uiout, "\nTemporary catchpoint ");
8244   else
8245     ui_out_text (uiout, "\nCatchpoint ");
8246   ui_out_field_int (uiout, "bkptno", b->number);
8247   ui_out_text (uiout, "\n");
8248   if (ui_out_is_mi_like_p (uiout))
8249     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8250   print_solib_event (1);
8251   return PRINT_SRC_AND_LOC;
8252 }
8253
8254 static void
8255 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8256 {
8257   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8258   struct value_print_options opts;
8259   struct ui_out *uiout = current_uiout;
8260   char *msg;
8261
8262   get_user_print_options (&opts);
8263   /* Field 4, the address, is omitted (which makes the columns not
8264      line up too nicely with the headers, but the effect is relatively
8265      readable).  */
8266   if (opts.addressprint)
8267     {
8268       annotate_field (4);
8269       ui_out_field_skip (uiout, "addr");
8270     }
8271
8272   annotate_field (5);
8273   if (self->is_load)
8274     {
8275       if (self->regex)
8276         msg = xstrprintf (_("load of library matching %s"), self->regex);
8277       else
8278         msg = xstrdup (_("load of library"));
8279     }
8280   else
8281     {
8282       if (self->regex)
8283         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8284       else
8285         msg = xstrdup (_("unload of library"));
8286     }
8287   ui_out_field_string (uiout, "what", msg);
8288   xfree (msg);
8289
8290   if (ui_out_is_mi_like_p (uiout))
8291     ui_out_field_string (uiout, "catch-type",
8292                          self->is_load ? "load" : "unload");
8293 }
8294
8295 static void
8296 print_mention_catch_solib (struct breakpoint *b)
8297 {
8298   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8299
8300   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8301                    self->is_load ? "load" : "unload");
8302 }
8303
8304 static void
8305 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8306 {
8307   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8308
8309   fprintf_unfiltered (fp, "%s %s",
8310                       b->disposition == disp_del ? "tcatch" : "catch",
8311                       self->is_load ? "load" : "unload");
8312   if (self->regex)
8313     fprintf_unfiltered (fp, " %s", self->regex);
8314   fprintf_unfiltered (fp, "\n");
8315 }
8316
8317 static struct breakpoint_ops catch_solib_breakpoint_ops;
8318
8319 /* Shared helper function (MI and CLI) for creating and installing
8320    a shared object event catchpoint.  If IS_LOAD is non-zero then
8321    the events to be caught are load events, otherwise they are
8322    unload events.  If IS_TEMP is non-zero the catchpoint is a
8323    temporary one.  If ENABLED is non-zero the catchpoint is
8324    created in an enabled state.  */
8325
8326 void
8327 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8328 {
8329   struct solib_catchpoint *c;
8330   struct gdbarch *gdbarch = get_current_arch ();
8331   struct cleanup *cleanup;
8332
8333   if (!arg)
8334     arg = "";
8335   arg = skip_spaces (arg);
8336
8337   c = XCNEW (struct solib_catchpoint);
8338   cleanup = make_cleanup (xfree, c);
8339
8340   if (*arg != '\0')
8341     {
8342       int errcode;
8343
8344       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8345       if (errcode != 0)
8346         {
8347           char *err = get_regcomp_error (errcode, &c->compiled);
8348
8349           make_cleanup (xfree, err);
8350           error (_("Invalid regexp (%s): %s"), err, arg);
8351         }
8352       c->regex = xstrdup (arg);
8353     }
8354
8355   c->is_load = is_load;
8356   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8357                    &catch_solib_breakpoint_ops);
8358
8359   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8360
8361   discard_cleanups (cleanup);
8362   install_breakpoint (0, &c->base, 1);
8363 }
8364
8365 /* A helper function that does all the work for "catch load" and
8366    "catch unload".  */
8367
8368 static void
8369 catch_load_or_unload (char *arg, int from_tty, int is_load,
8370                       struct cmd_list_element *command)
8371 {
8372   int tempflag;
8373   const int enabled = 1;
8374
8375   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8376
8377   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8378 }
8379
8380 static void
8381 catch_load_command_1 (char *arg, int from_tty,
8382                       struct cmd_list_element *command)
8383 {
8384   catch_load_or_unload (arg, from_tty, 1, command);
8385 }
8386
8387 static void
8388 catch_unload_command_1 (char *arg, int from_tty,
8389                         struct cmd_list_element *command)
8390 {
8391   catch_load_or_unload (arg, from_tty, 0, command);
8392 }
8393
8394 /* An instance of this type is used to represent a syscall catchpoint.
8395    It includes a "struct breakpoint" as a kind of base class; users
8396    downcast to "struct breakpoint *" when needed.  A breakpoint is
8397    really of this type iff its ops pointer points to
8398    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8399
8400 struct syscall_catchpoint
8401 {
8402   /* The base class.  */
8403   struct breakpoint base;
8404
8405   /* Syscall numbers used for the 'catch syscall' feature.  If no
8406      syscall has been specified for filtering, its value is NULL.
8407      Otherwise, it holds a list of all syscalls to be caught.  The
8408      list elements are allocated with xmalloc.  */
8409   VEC(int) *syscalls_to_be_caught;
8410 };
8411
8412 /* Implement the "dtor" breakpoint_ops method for syscall
8413    catchpoints.  */
8414
8415 static void
8416 dtor_catch_syscall (struct breakpoint *b)
8417 {
8418   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8419
8420   VEC_free (int, c->syscalls_to_be_caught);
8421
8422   base_breakpoint_ops.dtor (b);
8423 }
8424
8425 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8426
8427 struct catch_syscall_inferior_data
8428 {
8429   /* We keep a count of the number of times the user has requested a
8430      particular syscall to be tracked, and pass this information to the
8431      target.  This lets capable targets implement filtering directly.  */
8432
8433   /* Number of times that "any" syscall is requested.  */
8434   int any_syscall_count;
8435
8436   /* Count of each system call.  */
8437   VEC(int) *syscalls_counts;
8438
8439   /* This counts all syscall catch requests, so we can readily determine
8440      if any catching is necessary.  */
8441   int total_syscalls_count;
8442 };
8443
8444 static struct catch_syscall_inferior_data*
8445 get_catch_syscall_inferior_data (struct inferior *inf)
8446 {
8447   struct catch_syscall_inferior_data *inf_data;
8448
8449   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8450   if (inf_data == NULL)
8451     {
8452       inf_data = XCNEW (struct catch_syscall_inferior_data);
8453       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8454     }
8455
8456   return inf_data;
8457 }
8458
8459 static void
8460 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8461 {
8462   xfree (arg);
8463 }
8464
8465
8466 /* Implement the "insert" breakpoint_ops method for syscall
8467    catchpoints.  */
8468
8469 static int
8470 insert_catch_syscall (struct bp_location *bl)
8471 {
8472   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8473   struct inferior *inf = current_inferior ();
8474   struct catch_syscall_inferior_data *inf_data
8475     = get_catch_syscall_inferior_data (inf);
8476
8477   ++inf_data->total_syscalls_count;
8478   if (!c->syscalls_to_be_caught)
8479     ++inf_data->any_syscall_count;
8480   else
8481     {
8482       int i, iter;
8483
8484       for (i = 0;
8485            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8486            i++)
8487         {
8488           int elem;
8489
8490           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8491             {
8492               int old_size = VEC_length (int, inf_data->syscalls_counts);
8493               uintptr_t vec_addr_offset
8494                 = old_size * ((uintptr_t) sizeof (int));
8495               uintptr_t vec_addr;
8496               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8497               vec_addr = ((uintptr_t) VEC_address (int,
8498                                                   inf_data->syscalls_counts)
8499                           + vec_addr_offset);
8500               memset ((void *) vec_addr, 0,
8501                       (iter + 1 - old_size) * sizeof (int));
8502             }
8503           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8504           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8505         }
8506     }
8507
8508   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8509                                         inf_data->total_syscalls_count != 0,
8510                                         inf_data->any_syscall_count,
8511                                         VEC_length (int,
8512                                                     inf_data->syscalls_counts),
8513                                         VEC_address (int,
8514                                                      inf_data->syscalls_counts));
8515 }
8516
8517 /* Implement the "remove" breakpoint_ops method for syscall
8518    catchpoints.  */
8519
8520 static int
8521 remove_catch_syscall (struct bp_location *bl)
8522 {
8523   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8524   struct inferior *inf = current_inferior ();
8525   struct catch_syscall_inferior_data *inf_data
8526     = get_catch_syscall_inferior_data (inf);
8527
8528   --inf_data->total_syscalls_count;
8529   if (!c->syscalls_to_be_caught)
8530     --inf_data->any_syscall_count;
8531   else
8532     {
8533       int i, iter;
8534
8535       for (i = 0;
8536            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8537            i++)
8538         {
8539           int elem;
8540           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8541             /* Shouldn't happen.  */
8542             continue;
8543           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8544           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8545         }
8546     }
8547
8548   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8549                                         inf_data->total_syscalls_count != 0,
8550                                         inf_data->any_syscall_count,
8551                                         VEC_length (int,
8552                                                     inf_data->syscalls_counts),
8553                                         VEC_address (int,
8554                                                      inf_data->syscalls_counts));
8555 }
8556
8557 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8558    catchpoints.  */
8559
8560 static int
8561 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8562                               struct address_space *aspace, CORE_ADDR bp_addr,
8563                               const struct target_waitstatus *ws)
8564 {
8565   /* We must check if we are catching specific syscalls in this
8566      breakpoint.  If we are, then we must guarantee that the called
8567      syscall is the same syscall we are catching.  */
8568   int syscall_number = 0;
8569   const struct syscall_catchpoint *c
8570     = (const struct syscall_catchpoint *) bl->owner;
8571
8572   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8573       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8574     return 0;
8575
8576   syscall_number = ws->value.syscall_number;
8577
8578   /* Now, checking if the syscall is the same.  */
8579   if (c->syscalls_to_be_caught)
8580     {
8581       int i, iter;
8582
8583       for (i = 0;
8584            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8585            i++)
8586         if (syscall_number == iter)
8587           return 1;
8588
8589       return 0;
8590     }
8591
8592   return 1;
8593 }
8594
8595 /* Implement the "print_it" breakpoint_ops method for syscall
8596    catchpoints.  */
8597
8598 static enum print_stop_action
8599 print_it_catch_syscall (bpstat bs)
8600 {
8601   struct ui_out *uiout = current_uiout;
8602   struct breakpoint *b = bs->breakpoint_at;
8603   /* These are needed because we want to know in which state a
8604      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8605      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8606      must print "called syscall" or "returned from syscall".  */
8607   ptid_t ptid;
8608   struct target_waitstatus last;
8609   struct syscall s;
8610
8611   get_last_target_status (&ptid, &last);
8612
8613   get_syscall_by_number (last.value.syscall_number, &s);
8614
8615   annotate_catchpoint (b->number);
8616
8617   if (b->disposition == disp_del)
8618     ui_out_text (uiout, "\nTemporary catchpoint ");
8619   else
8620     ui_out_text (uiout, "\nCatchpoint ");
8621   if (ui_out_is_mi_like_p (uiout))
8622     {
8623       ui_out_field_string (uiout, "reason",
8624                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8625                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8626                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8627       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8628     }
8629   ui_out_field_int (uiout, "bkptno", b->number);
8630
8631   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8632     ui_out_text (uiout, " (call to syscall ");
8633   else
8634     ui_out_text (uiout, " (returned from syscall ");
8635
8636   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8637     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8638   if (s.name != NULL)
8639     ui_out_field_string (uiout, "syscall-name", s.name);
8640
8641   ui_out_text (uiout, "), ");
8642
8643   return PRINT_SRC_AND_LOC;
8644 }
8645
8646 /* Implement the "print_one" breakpoint_ops method for syscall
8647    catchpoints.  */
8648
8649 static void
8650 print_one_catch_syscall (struct breakpoint *b,
8651                          struct bp_location **last_loc)
8652 {
8653   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8654   struct value_print_options opts;
8655   struct ui_out *uiout = current_uiout;
8656
8657   get_user_print_options (&opts);
8658   /* Field 4, the address, is omitted (which makes the columns not
8659      line up too nicely with the headers, but the effect is relatively
8660      readable).  */
8661   if (opts.addressprint)
8662     ui_out_field_skip (uiout, "addr");
8663   annotate_field (5);
8664
8665   if (c->syscalls_to_be_caught
8666       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8667     ui_out_text (uiout, "syscalls \"");
8668   else
8669     ui_out_text (uiout, "syscall \"");
8670
8671   if (c->syscalls_to_be_caught)
8672     {
8673       int i, iter;
8674       char *text = xstrprintf ("%s", "");
8675
8676       for (i = 0;
8677            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8678            i++)
8679         {
8680           char *x = text;
8681           struct syscall s;
8682           get_syscall_by_number (iter, &s);
8683
8684           if (s.name != NULL)
8685             text = xstrprintf ("%s%s, ", text, s.name);
8686           else
8687             text = xstrprintf ("%s%d, ", text, iter);
8688
8689           /* We have to xfree the last 'text' (now stored at 'x')
8690              because xstrprintf dynamically allocates new space for it
8691              on every call.  */
8692           xfree (x);
8693         }
8694       /* Remove the last comma.  */
8695       text[strlen (text) - 2] = '\0';
8696       ui_out_field_string (uiout, "what", text);
8697     }
8698   else
8699     ui_out_field_string (uiout, "what", "<any syscall>");
8700   ui_out_text (uiout, "\" ");
8701
8702   if (ui_out_is_mi_like_p (uiout))
8703     ui_out_field_string (uiout, "catch-type", "syscall");
8704 }
8705
8706 /* Implement the "print_mention" breakpoint_ops method for syscall
8707    catchpoints.  */
8708
8709 static void
8710 print_mention_catch_syscall (struct breakpoint *b)
8711 {
8712   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8713
8714   if (c->syscalls_to_be_caught)
8715     {
8716       int i, iter;
8717
8718       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8719         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8720       else
8721         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8722
8723       for (i = 0;
8724            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8725            i++)
8726         {
8727           struct syscall s;
8728           get_syscall_by_number (iter, &s);
8729
8730           if (s.name)
8731             printf_filtered (" '%s' [%d]", s.name, s.number);
8732           else
8733             printf_filtered (" %d", s.number);
8734         }
8735       printf_filtered (")");
8736     }
8737   else
8738     printf_filtered (_("Catchpoint %d (any syscall)"),
8739                      b->number);
8740 }
8741
8742 /* Implement the "print_recreate" breakpoint_ops method for syscall
8743    catchpoints.  */
8744
8745 static void
8746 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8747 {
8748   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8749
8750   fprintf_unfiltered (fp, "catch syscall");
8751
8752   if (c->syscalls_to_be_caught)
8753     {
8754       int i, iter;
8755
8756       for (i = 0;
8757            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8758            i++)
8759         {
8760           struct syscall s;
8761
8762           get_syscall_by_number (iter, &s);
8763           if (s.name)
8764             fprintf_unfiltered (fp, " %s", s.name);
8765           else
8766             fprintf_unfiltered (fp, " %d", s.number);
8767         }
8768     }
8769   print_recreate_thread (b, fp);
8770 }
8771
8772 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8773
8774 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8775
8776 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8777
8778 static int
8779 syscall_catchpoint_p (struct breakpoint *b)
8780 {
8781   return (b->ops == &catch_syscall_breakpoint_ops);
8782 }
8783
8784 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8785    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8786    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8787    the breakpoint_ops structure associated to the catchpoint.  */
8788
8789 void
8790 init_catchpoint (struct breakpoint *b,
8791                  struct gdbarch *gdbarch, int tempflag,
8792                  char *cond_string,
8793                  const struct breakpoint_ops *ops)
8794 {
8795   struct symtab_and_line sal;
8796
8797   init_sal (&sal);
8798   sal.pspace = current_program_space;
8799
8800   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8801
8802   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8803   b->disposition = tempflag ? disp_del : disp_donttouch;
8804 }
8805
8806 void
8807 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8808 {
8809   add_to_breakpoint_chain (b);
8810   set_breakpoint_number (internal, b);
8811   if (is_tracepoint (b))
8812     set_tracepoint_count (breakpoint_count);
8813   if (!internal)
8814     mention (b);
8815   observer_notify_breakpoint_created (b);
8816
8817   if (update_gll)
8818     update_global_location_list (UGLL_MAY_INSERT);
8819 }
8820
8821 static void
8822 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8823                                     int tempflag, char *cond_string,
8824                                     const struct breakpoint_ops *ops)
8825 {
8826   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8827
8828   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8829
8830   c->forked_inferior_pid = null_ptid;
8831
8832   install_breakpoint (0, &c->base, 1);
8833 }
8834
8835 /* Exec catchpoints.  */
8836
8837 /* An instance of this type is used to represent an exec catchpoint.
8838    It includes a "struct breakpoint" as a kind of base class; users
8839    downcast to "struct breakpoint *" when needed.  A breakpoint is
8840    really of this type iff its ops pointer points to
8841    CATCH_EXEC_BREAKPOINT_OPS.  */
8842
8843 struct exec_catchpoint
8844 {
8845   /* The base class.  */
8846   struct breakpoint base;
8847
8848   /* Filename of a program whose exec triggered this catchpoint.
8849      This field is only valid immediately after this catchpoint has
8850      triggered.  */
8851   char *exec_pathname;
8852 };
8853
8854 /* Implement the "dtor" breakpoint_ops method for exec
8855    catchpoints.  */
8856
8857 static void
8858 dtor_catch_exec (struct breakpoint *b)
8859 {
8860   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8861
8862   xfree (c->exec_pathname);
8863
8864   base_breakpoint_ops.dtor (b);
8865 }
8866
8867 static int
8868 insert_catch_exec (struct bp_location *bl)
8869 {
8870   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8871 }
8872
8873 static int
8874 remove_catch_exec (struct bp_location *bl)
8875 {
8876   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8877 }
8878
8879 static int
8880 breakpoint_hit_catch_exec (const struct bp_location *bl,
8881                            struct address_space *aspace, CORE_ADDR bp_addr,
8882                            const struct target_waitstatus *ws)
8883 {
8884   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8885
8886   if (ws->kind != TARGET_WAITKIND_EXECD)
8887     return 0;
8888
8889   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8890   return 1;
8891 }
8892
8893 static enum print_stop_action
8894 print_it_catch_exec (bpstat bs)
8895 {
8896   struct ui_out *uiout = current_uiout;
8897   struct breakpoint *b = bs->breakpoint_at;
8898   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8899
8900   annotate_catchpoint (b->number);
8901   if (b->disposition == disp_del)
8902     ui_out_text (uiout, "\nTemporary catchpoint ");
8903   else
8904     ui_out_text (uiout, "\nCatchpoint ");
8905   if (ui_out_is_mi_like_p (uiout))
8906     {
8907       ui_out_field_string (uiout, "reason",
8908                            async_reason_lookup (EXEC_ASYNC_EXEC));
8909       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8910     }
8911   ui_out_field_int (uiout, "bkptno", b->number);
8912   ui_out_text (uiout, " (exec'd ");
8913   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8914   ui_out_text (uiout, "), ");
8915
8916   return PRINT_SRC_AND_LOC;
8917 }
8918
8919 static void
8920 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8921 {
8922   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8923   struct value_print_options opts;
8924   struct ui_out *uiout = current_uiout;
8925
8926   get_user_print_options (&opts);
8927
8928   /* Field 4, the address, is omitted (which makes the columns
8929      not line up too nicely with the headers, but the effect
8930      is relatively readable).  */
8931   if (opts.addressprint)
8932     ui_out_field_skip (uiout, "addr");
8933   annotate_field (5);
8934   ui_out_text (uiout, "exec");
8935   if (c->exec_pathname != NULL)
8936     {
8937       ui_out_text (uiout, ", program \"");
8938       ui_out_field_string (uiout, "what", c->exec_pathname);
8939       ui_out_text (uiout, "\" ");
8940     }
8941
8942   if (ui_out_is_mi_like_p (uiout))
8943     ui_out_field_string (uiout, "catch-type", "exec");
8944 }
8945
8946 static void
8947 print_mention_catch_exec (struct breakpoint *b)
8948 {
8949   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8950 }
8951
8952 /* Implement the "print_recreate" breakpoint_ops method for exec
8953    catchpoints.  */
8954
8955 static void
8956 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8957 {
8958   fprintf_unfiltered (fp, "catch exec");
8959   print_recreate_thread (b, fp);
8960 }
8961
8962 static struct breakpoint_ops catch_exec_breakpoint_ops;
8963
8964 static void
8965 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8966                                  const struct breakpoint_ops *ops)
8967 {
8968   struct syscall_catchpoint *c;
8969   struct gdbarch *gdbarch = get_current_arch ();
8970
8971   c = XNEW (struct syscall_catchpoint);
8972   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8973   c->syscalls_to_be_caught = filter;
8974
8975   install_breakpoint (0, &c->base, 1);
8976 }
8977
8978 static int
8979 hw_breakpoint_used_count (void)
8980 {
8981   int i = 0;
8982   struct breakpoint *b;
8983   struct bp_location *bl;
8984
8985   ALL_BREAKPOINTS (b)
8986   {
8987     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8988       for (bl = b->loc; bl; bl = bl->next)
8989         {
8990           /* Special types of hardware breakpoints may use more than
8991              one register.  */
8992           i += b->ops->resources_needed (bl);
8993         }
8994   }
8995
8996   return i;
8997 }
8998
8999 /* Returns the resources B would use if it were a hardware
9000    watchpoint.  */
9001
9002 static int
9003 hw_watchpoint_use_count (struct breakpoint *b)
9004 {
9005   int i = 0;
9006   struct bp_location *bl;
9007
9008   if (!breakpoint_enabled (b))
9009     return 0;
9010
9011   for (bl = b->loc; bl; bl = bl->next)
9012     {
9013       /* Special types of hardware watchpoints may use more than
9014          one register.  */
9015       i += b->ops->resources_needed (bl);
9016     }
9017
9018   return i;
9019 }
9020
9021 /* Returns the sum the used resources of all hardware watchpoints of
9022    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
9023    the sum of the used resources of all hardware watchpoints of other
9024    types _not_ TYPE.  */
9025
9026 static int
9027 hw_watchpoint_used_count_others (struct breakpoint *except,
9028                                  enum bptype type, int *other_type_used)
9029 {
9030   int i = 0;
9031   struct breakpoint *b;
9032
9033   *other_type_used = 0;
9034   ALL_BREAKPOINTS (b)
9035     {
9036       if (b == except)
9037         continue;
9038       if (!breakpoint_enabled (b))
9039         continue;
9040
9041       if (b->type == type)
9042         i += hw_watchpoint_use_count (b);
9043       else if (is_hardware_watchpoint (b))
9044         *other_type_used = 1;
9045     }
9046
9047   return i;
9048 }
9049
9050 void
9051 disable_watchpoints_before_interactive_call_start (void)
9052 {
9053   struct breakpoint *b;
9054
9055   ALL_BREAKPOINTS (b)
9056   {
9057     if (is_watchpoint (b) && breakpoint_enabled (b))
9058       {
9059         b->enable_state = bp_call_disabled;
9060         update_global_location_list (UGLL_DONT_INSERT);
9061       }
9062   }
9063 }
9064
9065 void
9066 enable_watchpoints_after_interactive_call_stop (void)
9067 {
9068   struct breakpoint *b;
9069
9070   ALL_BREAKPOINTS (b)
9071   {
9072     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
9073       {
9074         b->enable_state = bp_enabled;
9075         update_global_location_list (UGLL_MAY_INSERT);
9076       }
9077   }
9078 }
9079
9080 void
9081 disable_breakpoints_before_startup (void)
9082 {
9083   current_program_space->executing_startup = 1;
9084   update_global_location_list (UGLL_DONT_INSERT);
9085 }
9086
9087 void
9088 enable_breakpoints_after_startup (void)
9089 {
9090   current_program_space->executing_startup = 0;
9091   breakpoint_re_set ();
9092 }
9093
9094 /* Create a new single-step breakpoint for thread THREAD, with no
9095    locations.  */
9096
9097 static struct breakpoint *
9098 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
9099 {
9100   struct breakpoint *b = XNEW (struct breakpoint);
9101
9102   init_raw_breakpoint_without_location (b, gdbarch, bp_single_step,
9103                                         &momentary_breakpoint_ops);
9104
9105   b->disposition = disp_donttouch;
9106   b->frame_id = null_frame_id;
9107
9108   b->thread = thread;
9109   gdb_assert (b->thread != 0);
9110
9111   add_to_breakpoint_chain (b);
9112
9113   return b;
9114 }
9115
9116 /* Set a momentary breakpoint of type TYPE at address specified by
9117    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
9118    frame.  */
9119
9120 struct breakpoint *
9121 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
9122                           struct frame_id frame_id, enum bptype type)
9123 {
9124   struct breakpoint *b;
9125
9126   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
9127      tail-called one.  */
9128   gdb_assert (!frame_id_artificial_p (frame_id));
9129
9130   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
9131   b->enable_state = bp_enabled;
9132   b->disposition = disp_donttouch;
9133   b->frame_id = frame_id;
9134
9135   /* If we're debugging a multi-threaded program, then we want
9136      momentary breakpoints to be active in only a single thread of
9137      control.  */
9138   if (in_thread_list (inferior_ptid))
9139     b->thread = pid_to_thread_id (inferior_ptid);
9140
9141   update_global_location_list_nothrow (UGLL_MAY_INSERT);
9142
9143   return b;
9144 }
9145
9146 /* Make a momentary breakpoint based on the master breakpoint ORIG.
9147    The new breakpoint will have type TYPE, use OPS as its
9148    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
9149
9150 static struct breakpoint *
9151 momentary_breakpoint_from_master (struct breakpoint *orig,
9152                                   enum bptype type,
9153                                   const struct breakpoint_ops *ops,
9154                                   int loc_enabled)
9155 {
9156   struct breakpoint *copy;
9157
9158   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
9159   copy->loc = allocate_bp_location (copy);
9160   set_breakpoint_location_function (copy->loc, 1);
9161
9162   copy->loc->gdbarch = orig->loc->gdbarch;
9163   copy->loc->requested_address = orig->loc->requested_address;
9164   copy->loc->address = orig->loc->address;
9165   copy->loc->section = orig->loc->section;
9166   copy->loc->pspace = orig->loc->pspace;
9167   copy->loc->probe = orig->loc->probe;
9168   copy->loc->line_number = orig->loc->line_number;
9169   copy->loc->symtab = orig->loc->symtab;
9170   copy->loc->enabled = loc_enabled;
9171   copy->frame_id = orig->frame_id;
9172   copy->thread = orig->thread;
9173   copy->pspace = orig->pspace;
9174
9175   copy->enable_state = bp_enabled;
9176   copy->disposition = disp_donttouch;
9177   copy->number = internal_breakpoint_number--;
9178
9179   update_global_location_list_nothrow (UGLL_DONT_INSERT);
9180   return copy;
9181 }
9182
9183 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
9184    ORIG is NULL.  */
9185
9186 struct breakpoint *
9187 clone_momentary_breakpoint (struct breakpoint *orig)
9188 {
9189   /* If there's nothing to clone, then return nothing.  */
9190   if (orig == NULL)
9191     return NULL;
9192
9193   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
9194 }
9195
9196 struct breakpoint *
9197 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
9198                                 enum bptype type)
9199 {
9200   struct symtab_and_line sal;
9201
9202   sal = find_pc_line (pc, 0);
9203   sal.pc = pc;
9204   sal.section = find_pc_overlay (pc);
9205   sal.explicit_pc = 1;
9206
9207   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
9208 }
9209 \f
9210
9211 /* Tell the user we have just set a breakpoint B.  */
9212
9213 static void
9214 mention (struct breakpoint *b)
9215 {
9216   b->ops->print_mention (b);
9217   if (ui_out_is_mi_like_p (current_uiout))
9218     return;
9219   printf_filtered ("\n");
9220 }
9221 \f
9222
9223 static int bp_loc_is_permanent (struct bp_location *loc);
9224
9225 static struct bp_location *
9226 add_location_to_breakpoint (struct breakpoint *b,
9227                             const struct symtab_and_line *sal)
9228 {
9229   struct bp_location *loc, **tmp;
9230   CORE_ADDR adjusted_address;
9231   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
9232
9233   if (loc_gdbarch == NULL)
9234     loc_gdbarch = b->gdbarch;
9235
9236   /* Adjust the breakpoint's address prior to allocating a location.
9237      Once we call allocate_bp_location(), that mostly uninitialized
9238      location will be placed on the location chain.  Adjustment of the
9239      breakpoint may cause target_read_memory() to be called and we do
9240      not want its scan of the location chain to find a breakpoint and
9241      location that's only been partially initialized.  */
9242   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
9243                                                 sal->pc, b->type);
9244
9245   /* Sort the locations by their ADDRESS.  */
9246   loc = allocate_bp_location (b);
9247   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
9248        tmp = &((*tmp)->next))
9249     ;
9250   loc->next = *tmp;
9251   *tmp = loc;
9252
9253   loc->requested_address = sal->pc;
9254   loc->address = adjusted_address;
9255   loc->pspace = sal->pspace;
9256   loc->probe.probe = sal->probe;
9257   loc->probe.objfile = sal->objfile;
9258   gdb_assert (loc->pspace != NULL);
9259   loc->section = sal->section;
9260   loc->gdbarch = loc_gdbarch;
9261   loc->line_number = sal->line;
9262   loc->symtab = sal->symtab;
9263
9264   set_breakpoint_location_function (loc,
9265                                     sal->explicit_pc || sal->explicit_line);
9266
9267   if (bp_loc_is_permanent (loc))
9268     {
9269       loc->inserted = 1;
9270       loc->permanent = 1;
9271     }
9272
9273   return loc;
9274 }
9275 \f
9276
9277 /* Return 1 if LOC is pointing to a permanent breakpoint, 
9278    return 0 otherwise.  */
9279
9280 static int
9281 bp_loc_is_permanent (struct bp_location *loc)
9282 {
9283   int len;
9284   CORE_ADDR addr;
9285   const gdb_byte *bpoint;
9286   gdb_byte *target_mem;
9287   struct cleanup *cleanup;
9288   int retval = 0;
9289
9290   gdb_assert (loc != NULL);
9291
9292   addr = loc->address;
9293   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
9294
9295   /* Software breakpoints unsupported?  */
9296   if (bpoint == NULL)
9297     return 0;
9298
9299   target_mem = alloca (len);
9300
9301   /* Enable the automatic memory restoration from breakpoints while
9302      we read the memory.  Otherwise we could say about our temporary
9303      breakpoints they are permanent.  */
9304   cleanup = save_current_space_and_thread ();
9305
9306   switch_to_program_space_and_thread (loc->pspace);
9307   make_show_memory_breakpoints_cleanup (0);
9308
9309   if (target_read_memory (loc->address, target_mem, len) == 0
9310       && memcmp (target_mem, bpoint, len) == 0)
9311     retval = 1;
9312
9313   do_cleanups (cleanup);
9314
9315   return retval;
9316 }
9317
9318 /* Build a command list for the dprintf corresponding to the current
9319    settings of the dprintf style options.  */
9320
9321 static void
9322 update_dprintf_command_list (struct breakpoint *b)
9323 {
9324   char *dprintf_args = b->extra_string;
9325   char *printf_line = NULL;
9326
9327   if (!dprintf_args)
9328     return;
9329
9330   dprintf_args = skip_spaces (dprintf_args);
9331
9332   /* Allow a comma, as it may have terminated a location, but don't
9333      insist on it.  */
9334   if (*dprintf_args == ',')
9335     ++dprintf_args;
9336   dprintf_args = skip_spaces (dprintf_args);
9337
9338   if (*dprintf_args != '"')
9339     error (_("Bad format string, missing '\"'."));
9340
9341   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9342     printf_line = xstrprintf ("printf %s", dprintf_args);
9343   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9344     {
9345       if (!dprintf_function)
9346         error (_("No function supplied for dprintf call"));
9347
9348       if (dprintf_channel && strlen (dprintf_channel) > 0)
9349         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9350                                   dprintf_function,
9351                                   dprintf_channel,
9352                                   dprintf_args);
9353       else
9354         printf_line = xstrprintf ("call (void) %s (%s)",
9355                                   dprintf_function,
9356                                   dprintf_args);
9357     }
9358   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9359     {
9360       if (target_can_run_breakpoint_commands ())
9361         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9362       else
9363         {
9364           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9365           printf_line = xstrprintf ("printf %s", dprintf_args);
9366         }
9367     }
9368   else
9369     internal_error (__FILE__, __LINE__,
9370                     _("Invalid dprintf style."));
9371
9372   gdb_assert (printf_line != NULL);
9373   /* Manufacture a printf sequence.  */
9374   {
9375     struct command_line *printf_cmd_line
9376       = xmalloc (sizeof (struct command_line));
9377
9378     printf_cmd_line = xmalloc (sizeof (struct command_line));
9379     printf_cmd_line->control_type = simple_control;
9380     printf_cmd_line->body_count = 0;
9381     printf_cmd_line->body_list = NULL;
9382     printf_cmd_line->next = NULL;
9383     printf_cmd_line->line = printf_line;
9384
9385     breakpoint_set_commands (b, printf_cmd_line);
9386   }
9387 }
9388
9389 /* Update all dprintf commands, making their command lists reflect
9390    current style settings.  */
9391
9392 static void
9393 update_dprintf_commands (char *args, int from_tty,
9394                          struct cmd_list_element *c)
9395 {
9396   struct breakpoint *b;
9397
9398   ALL_BREAKPOINTS (b)
9399     {
9400       if (b->type == bp_dprintf)
9401         update_dprintf_command_list (b);
9402     }
9403 }
9404
9405 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
9406    as textual description of the location, and COND_STRING
9407    as condition expression.  */
9408
9409 static void
9410 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9411                      struct symtabs_and_lines sals, char *addr_string,
9412                      char *filter, char *cond_string,
9413                      char *extra_string,
9414                      enum bptype type, enum bpdisp disposition,
9415                      int thread, int task, int ignore_count,
9416                      const struct breakpoint_ops *ops, int from_tty,
9417                      int enabled, int internal, unsigned flags,
9418                      int display_canonical)
9419 {
9420   int i;
9421
9422   if (type == bp_hardware_breakpoint)
9423     {
9424       int target_resources_ok;
9425
9426       i = hw_breakpoint_used_count ();
9427       target_resources_ok =
9428         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9429                                             i + 1, 0);
9430       if (target_resources_ok == 0)
9431         error (_("No hardware breakpoint support in the target."));
9432       else if (target_resources_ok < 0)
9433         error (_("Hardware breakpoints used exceeds limit."));
9434     }
9435
9436   gdb_assert (sals.nelts > 0);
9437
9438   for (i = 0; i < sals.nelts; ++i)
9439     {
9440       struct symtab_and_line sal = sals.sals[i];
9441       struct bp_location *loc;
9442
9443       if (from_tty)
9444         {
9445           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9446           if (!loc_gdbarch)
9447             loc_gdbarch = gdbarch;
9448
9449           describe_other_breakpoints (loc_gdbarch,
9450                                       sal.pspace, sal.pc, sal.section, thread);
9451         }
9452
9453       if (i == 0)
9454         {
9455           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9456           b->thread = thread;
9457           b->task = task;
9458
9459           b->cond_string = cond_string;
9460           b->extra_string = extra_string;
9461           b->ignore_count = ignore_count;
9462           b->enable_state = enabled ? bp_enabled : bp_disabled;
9463           b->disposition = disposition;
9464
9465           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9466             b->loc->inserted = 1;
9467
9468           if (type == bp_static_tracepoint)
9469             {
9470               struct tracepoint *t = (struct tracepoint *) b;
9471               struct static_tracepoint_marker marker;
9472
9473               if (strace_marker_p (b))
9474                 {
9475                   /* We already know the marker exists, otherwise, we
9476                      wouldn't see a sal for it.  */
9477                   char *p = &addr_string[3];
9478                   char *endp;
9479                   char *marker_str;
9480
9481                   p = skip_spaces (p);
9482
9483                   endp = skip_to_space (p);
9484
9485                   marker_str = savestring (p, endp - p);
9486                   t->static_trace_marker_id = marker_str;
9487
9488                   printf_filtered (_("Probed static tracepoint "
9489                                      "marker \"%s\"\n"),
9490                                    t->static_trace_marker_id);
9491                 }
9492               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9493                 {
9494                   t->static_trace_marker_id = xstrdup (marker.str_id);
9495                   release_static_tracepoint_marker (&marker);
9496
9497                   printf_filtered (_("Probed static tracepoint "
9498                                      "marker \"%s\"\n"),
9499                                    t->static_trace_marker_id);
9500                 }
9501               else
9502                 warning (_("Couldn't determine the static "
9503                            "tracepoint marker to probe"));
9504             }
9505
9506           loc = b->loc;
9507         }
9508       else
9509         {
9510           loc = add_location_to_breakpoint (b, &sal);
9511           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9512             loc->inserted = 1;
9513         }
9514
9515       if (b->cond_string)
9516         {
9517           const char *arg = b->cond_string;
9518
9519           loc->cond = parse_exp_1 (&arg, loc->address,
9520                                    block_for_pc (loc->address), 0);
9521           if (*arg)
9522               error (_("Garbage '%s' follows condition"), arg);
9523         }
9524
9525       /* Dynamic printf requires and uses additional arguments on the
9526          command line, otherwise it's an error.  */
9527       if (type == bp_dprintf)
9528         {
9529           if (b->extra_string)
9530             update_dprintf_command_list (b);
9531           else
9532             error (_("Format string required"));
9533         }
9534       else if (b->extra_string)
9535         error (_("Garbage '%s' at end of command"), b->extra_string);
9536     }
9537
9538   b->display_canonical = display_canonical;
9539   if (addr_string)
9540     b->addr_string = addr_string;
9541   else
9542     /* addr_string has to be used or breakpoint_re_set will delete
9543        me.  */
9544     b->addr_string
9545       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9546   b->filter = filter;
9547 }
9548
9549 static void
9550 create_breakpoint_sal (struct gdbarch *gdbarch,
9551                        struct symtabs_and_lines sals, char *addr_string,
9552                        char *filter, char *cond_string,
9553                        char *extra_string,
9554                        enum bptype type, enum bpdisp disposition,
9555                        int thread, int task, int ignore_count,
9556                        const struct breakpoint_ops *ops, int from_tty,
9557                        int enabled, int internal, unsigned flags,
9558                        int display_canonical)
9559 {
9560   struct breakpoint *b;
9561   struct cleanup *old_chain;
9562
9563   if (is_tracepoint_type (type))
9564     {
9565       struct tracepoint *t;
9566
9567       t = XCNEW (struct tracepoint);
9568       b = &t->base;
9569     }
9570   else
9571     b = XNEW (struct breakpoint);
9572
9573   old_chain = make_cleanup (xfree, b);
9574
9575   init_breakpoint_sal (b, gdbarch,
9576                        sals, addr_string,
9577                        filter, cond_string, extra_string,
9578                        type, disposition,
9579                        thread, task, ignore_count,
9580                        ops, from_tty,
9581                        enabled, internal, flags,
9582                        display_canonical);
9583   discard_cleanups (old_chain);
9584
9585   install_breakpoint (internal, b, 0);
9586 }
9587
9588 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9589    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9590    value.  COND_STRING, if not NULL, specified the condition to be
9591    used for all breakpoints.  Essentially the only case where
9592    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9593    function.  In that case, it's still not possible to specify
9594    separate conditions for different overloaded functions, so
9595    we take just a single condition string.
9596    
9597    NOTE: If the function succeeds, the caller is expected to cleanup
9598    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9599    array contents).  If the function fails (error() is called), the
9600    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9601    COND and SALS arrays and each of those arrays contents.  */
9602
9603 static void
9604 create_breakpoints_sal (struct gdbarch *gdbarch,
9605                         struct linespec_result *canonical,
9606                         char *cond_string, char *extra_string,
9607                         enum bptype type, enum bpdisp disposition,
9608                         int thread, int task, int ignore_count,
9609                         const struct breakpoint_ops *ops, int from_tty,
9610                         int enabled, int internal, unsigned flags)
9611 {
9612   int i;
9613   struct linespec_sals *lsal;
9614
9615   if (canonical->pre_expanded)
9616     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9617
9618   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9619     {
9620       /* Note that 'addr_string' can be NULL in the case of a plain
9621          'break', without arguments.  */
9622       char *addr_string = (canonical->addr_string
9623                            ? xstrdup (canonical->addr_string)
9624                            : NULL);
9625       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9626       struct cleanup *inner = make_cleanup (xfree, addr_string);
9627
9628       make_cleanup (xfree, filter_string);
9629       create_breakpoint_sal (gdbarch, lsal->sals,
9630                              addr_string,
9631                              filter_string,
9632                              cond_string, extra_string,
9633                              type, disposition,
9634                              thread, task, ignore_count, ops,
9635                              from_tty, enabled, internal, flags,
9636                              canonical->special_display);
9637       discard_cleanups (inner);
9638     }
9639 }
9640
9641 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9642    followed by conditionals.  On return, SALS contains an array of SAL
9643    addresses found.  ADDR_STRING contains a vector of (canonical)
9644    address strings.  ADDRESS points to the end of the SAL.
9645
9646    The array and the line spec strings are allocated on the heap, it is
9647    the caller's responsibility to free them.  */
9648
9649 static void
9650 parse_breakpoint_sals (char **address,
9651                        struct linespec_result *canonical)
9652 {
9653   /* If no arg given, or if first arg is 'if ', use the default
9654      breakpoint.  */
9655   if ((*address) == NULL
9656       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9657     {
9658       /* The last displayed codepoint, if it's valid, is our default breakpoint
9659          address.  */
9660       if (last_displayed_sal_is_valid ())
9661         {
9662           struct linespec_sals lsal;
9663           struct symtab_and_line sal;
9664           CORE_ADDR pc;
9665
9666           init_sal (&sal);              /* Initialize to zeroes.  */
9667           lsal.sals.sals = (struct symtab_and_line *)
9668             xmalloc (sizeof (struct symtab_and_line));
9669
9670           /* Set sal's pspace, pc, symtab, and line to the values
9671              corresponding to the last call to print_frame_info.
9672              Be sure to reinitialize LINE with NOTCURRENT == 0
9673              as the breakpoint line number is inappropriate otherwise.
9674              find_pc_line would adjust PC, re-set it back.  */
9675           get_last_displayed_sal (&sal);
9676           pc = sal.pc;
9677           sal = find_pc_line (pc, 0);
9678
9679           /* "break" without arguments is equivalent to "break *PC"
9680              where PC is the last displayed codepoint's address.  So
9681              make sure to set sal.explicit_pc to prevent GDB from
9682              trying to expand the list of sals to include all other
9683              instances with the same symtab and line.  */
9684           sal.pc = pc;
9685           sal.explicit_pc = 1;
9686
9687           lsal.sals.sals[0] = sal;
9688           lsal.sals.nelts = 1;
9689           lsal.canonical = NULL;
9690
9691           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9692         }
9693       else
9694         error (_("No default breakpoint address now."));
9695     }
9696   else
9697     {
9698       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9699
9700       /* Force almost all breakpoints to be in terms of the
9701          current_source_symtab (which is decode_line_1's default).
9702          This should produce the results we want almost all of the
9703          time while leaving default_breakpoint_* alone.
9704
9705          ObjC: However, don't match an Objective-C method name which
9706          may have a '+' or '-' succeeded by a '['.  */
9707       if (last_displayed_sal_is_valid ()
9708           && (!cursal.symtab
9709               || ((strchr ("+-", (*address)[0]) != NULL)
9710                   && ((*address)[1] != '['))))
9711         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9712                           get_last_displayed_symtab (),
9713                           get_last_displayed_line (),
9714                           canonical, NULL, NULL);
9715       else
9716         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9717                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9718     }
9719 }
9720
9721
9722 /* Convert each SAL into a real PC.  Verify that the PC can be
9723    inserted as a breakpoint.  If it can't throw an error.  */
9724
9725 static void
9726 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9727 {    
9728   int i;
9729
9730   for (i = 0; i < sals->nelts; i++)
9731     resolve_sal_pc (&sals->sals[i]);
9732 }
9733
9734 /* Fast tracepoints may have restrictions on valid locations.  For
9735    instance, a fast tracepoint using a jump instead of a trap will
9736    likely have to overwrite more bytes than a trap would, and so can
9737    only be placed where the instruction is longer than the jump, or a
9738    multi-instruction sequence does not have a jump into the middle of
9739    it, etc.  */
9740
9741 static void
9742 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9743                             struct symtabs_and_lines *sals)
9744 {
9745   int i, rslt;
9746   struct symtab_and_line *sal;
9747   char *msg;
9748   struct cleanup *old_chain;
9749
9750   for (i = 0; i < sals->nelts; i++)
9751     {
9752       struct gdbarch *sarch;
9753
9754       sal = &sals->sals[i];
9755
9756       sarch = get_sal_arch (*sal);
9757       /* We fall back to GDBARCH if there is no architecture
9758          associated with SAL.  */
9759       if (sarch == NULL)
9760         sarch = gdbarch;
9761       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9762                                                NULL, &msg);
9763       old_chain = make_cleanup (xfree, msg);
9764
9765       if (!rslt)
9766         error (_("May not have a fast tracepoint at 0x%s%s"),
9767                paddress (sarch, sal->pc), (msg ? msg : ""));
9768
9769       do_cleanups (old_chain);
9770     }
9771 }
9772
9773 /* Issue an invalid thread ID error.  */
9774
9775 static void ATTRIBUTE_NORETURN
9776 invalid_thread_id_error (int id)
9777 {
9778   error (_("Unknown thread %d."), id);
9779 }
9780
9781 /* Given TOK, a string specification of condition and thread, as
9782    accepted by the 'break' command, extract the condition
9783    string and thread number and set *COND_STRING and *THREAD.
9784    PC identifies the context at which the condition should be parsed.
9785    If no condition is found, *COND_STRING is set to NULL.
9786    If no thread is found, *THREAD is set to -1.  */
9787
9788 static void
9789 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9790                            char **cond_string, int *thread, int *task,
9791                            char **rest)
9792 {
9793   *cond_string = NULL;
9794   *thread = -1;
9795   *task = 0;
9796   *rest = NULL;
9797
9798   while (tok && *tok)
9799     {
9800       const char *end_tok;
9801       int toklen;
9802       const char *cond_start = NULL;
9803       const char *cond_end = NULL;
9804
9805       tok = skip_spaces_const (tok);
9806
9807       if ((*tok == '"' || *tok == ',') && rest)
9808         {
9809           *rest = savestring (tok, strlen (tok));
9810           return;
9811         }
9812
9813       end_tok = skip_to_space_const (tok);
9814
9815       toklen = end_tok - tok;
9816
9817       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9818         {
9819           struct expression *expr;
9820
9821           tok = cond_start = end_tok + 1;
9822           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9823           xfree (expr);
9824           cond_end = tok;
9825           *cond_string = savestring (cond_start, cond_end - cond_start);
9826         }
9827       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9828         {
9829           char *tmptok;
9830
9831           tok = end_tok + 1;
9832           *thread = strtol (tok, &tmptok, 0);
9833           if (tok == tmptok)
9834             error (_("Junk after thread keyword."));
9835           if (!valid_thread_id (*thread))
9836             invalid_thread_id_error (*thread);
9837           tok = tmptok;
9838         }
9839       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9840         {
9841           char *tmptok;
9842
9843           tok = end_tok + 1;
9844           *task = strtol (tok, &tmptok, 0);
9845           if (tok == tmptok)
9846             error (_("Junk after task keyword."));
9847           if (!valid_task_id (*task))
9848             error (_("Unknown task %d."), *task);
9849           tok = tmptok;
9850         }
9851       else if (rest)
9852         {
9853           *rest = savestring (tok, strlen (tok));
9854           return;
9855         }
9856       else
9857         error (_("Junk at end of arguments."));
9858     }
9859 }
9860
9861 /* Decode a static tracepoint marker spec.  */
9862
9863 static struct symtabs_and_lines
9864 decode_static_tracepoint_spec (char **arg_p)
9865 {
9866   VEC(static_tracepoint_marker_p) *markers = NULL;
9867   struct symtabs_and_lines sals;
9868   struct cleanup *old_chain;
9869   char *p = &(*arg_p)[3];
9870   char *endp;
9871   char *marker_str;
9872   int i;
9873
9874   p = skip_spaces (p);
9875
9876   endp = skip_to_space (p);
9877
9878   marker_str = savestring (p, endp - p);
9879   old_chain = make_cleanup (xfree, marker_str);
9880
9881   markers = target_static_tracepoint_markers_by_strid (marker_str);
9882   if (VEC_empty(static_tracepoint_marker_p, markers))
9883     error (_("No known static tracepoint marker named %s"), marker_str);
9884
9885   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9886   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9887
9888   for (i = 0; i < sals.nelts; i++)
9889     {
9890       struct static_tracepoint_marker *marker;
9891
9892       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9893
9894       init_sal (&sals.sals[i]);
9895
9896       sals.sals[i] = find_pc_line (marker->address, 0);
9897       sals.sals[i].pc = marker->address;
9898
9899       release_static_tracepoint_marker (marker);
9900     }
9901
9902   do_cleanups (old_chain);
9903
9904   *arg_p = endp;
9905   return sals;
9906 }
9907
9908 /* Set a breakpoint.  This function is shared between CLI and MI
9909    functions for setting a breakpoint.  This function has two major
9910    modes of operations, selected by the PARSE_ARG parameter.  If
9911    non-zero, the function will parse ARG, extracting location,
9912    condition, thread and extra string.  Otherwise, ARG is just the
9913    breakpoint's location, with condition, thread, and extra string
9914    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9915    If INTERNAL is non-zero, the breakpoint number will be allocated
9916    from the internal breakpoint count.  Returns true if any breakpoint
9917    was created; false otherwise.  */
9918
9919 int
9920 create_breakpoint (struct gdbarch *gdbarch,
9921                    char *arg, char *cond_string,
9922                    int thread, char *extra_string,
9923                    int parse_arg,
9924                    int tempflag, enum bptype type_wanted,
9925                    int ignore_count,
9926                    enum auto_boolean pending_break_support,
9927                    const struct breakpoint_ops *ops,
9928                    int from_tty, int enabled, int internal,
9929                    unsigned flags)
9930 {
9931   volatile struct gdb_exception e;
9932   char *copy_arg = NULL;
9933   char *addr_start = arg;
9934   struct linespec_result canonical;
9935   struct cleanup *old_chain;
9936   struct cleanup *bkpt_chain = NULL;
9937   int pending = 0;
9938   int task = 0;
9939   int prev_bkpt_count = breakpoint_count;
9940
9941   gdb_assert (ops != NULL);
9942
9943   init_linespec_result (&canonical);
9944
9945   TRY_CATCH (e, RETURN_MASK_ALL)
9946     {
9947       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9948                                      addr_start, &copy_arg);
9949     }
9950
9951   /* If caller is interested in rc value from parse, set value.  */
9952   switch (e.reason)
9953     {
9954     case GDB_NO_ERROR:
9955       if (VEC_empty (linespec_sals, canonical.sals))
9956         return 0;
9957       break;
9958     case RETURN_ERROR:
9959       switch (e.error)
9960         {
9961         case NOT_FOUND_ERROR:
9962
9963           /* If pending breakpoint support is turned off, throw
9964              error.  */
9965
9966           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9967             throw_exception (e);
9968
9969           exception_print (gdb_stderr, e);
9970
9971           /* If pending breakpoint support is auto query and the user
9972              selects no, then simply return the error code.  */
9973           if (pending_break_support == AUTO_BOOLEAN_AUTO
9974               && !nquery (_("Make %s pending on future shared library load? "),
9975                           bptype_string (type_wanted)))
9976             return 0;
9977
9978           /* At this point, either the user was queried about setting
9979              a pending breakpoint and selected yes, or pending
9980              breakpoint behavior is on and thus a pending breakpoint
9981              is defaulted on behalf of the user.  */
9982           {
9983             struct linespec_sals lsal;
9984
9985             copy_arg = xstrdup (addr_start);
9986             lsal.canonical = xstrdup (copy_arg);
9987             lsal.sals.nelts = 1;
9988             lsal.sals.sals = XNEW (struct symtab_and_line);
9989             init_sal (&lsal.sals.sals[0]);
9990             pending = 1;
9991             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9992           }
9993           break;
9994         default:
9995           throw_exception (e);
9996         }
9997       break;
9998     default:
9999       throw_exception (e);
10000     }
10001
10002   /* Create a chain of things that always need to be cleaned up.  */
10003   old_chain = make_cleanup_destroy_linespec_result (&canonical);
10004
10005   /* ----------------------------- SNIP -----------------------------
10006      Anything added to the cleanup chain beyond this point is assumed
10007      to be part of a breakpoint.  If the breakpoint create succeeds
10008      then the memory is not reclaimed.  */
10009   bkpt_chain = make_cleanup (null_cleanup, 0);
10010
10011   /* Resolve all line numbers to PC's and verify that the addresses
10012      are ok for the target.  */
10013   if (!pending)
10014     {
10015       int ix;
10016       struct linespec_sals *iter;
10017
10018       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
10019         breakpoint_sals_to_pc (&iter->sals);
10020     }
10021
10022   /* Fast tracepoints may have additional restrictions on location.  */
10023   if (!pending && type_wanted == bp_fast_tracepoint)
10024     {
10025       int ix;
10026       struct linespec_sals *iter;
10027
10028       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
10029         check_fast_tracepoint_sals (gdbarch, &iter->sals);
10030     }
10031
10032   /* Verify that condition can be parsed, before setting any
10033      breakpoints.  Allocate a separate condition expression for each
10034      breakpoint.  */
10035   if (!pending)
10036     {
10037       if (parse_arg)
10038         {
10039           char *rest;
10040           struct linespec_sals *lsal;
10041
10042           lsal = VEC_index (linespec_sals, canonical.sals, 0);
10043
10044           /* Here we only parse 'arg' to separate condition
10045              from thread number, so parsing in context of first
10046              sal is OK.  When setting the breakpoint we'll
10047              re-parse it in context of each sal.  */
10048
10049           find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
10050                                      &thread, &task, &rest);
10051           if (cond_string)
10052             make_cleanup (xfree, cond_string);
10053           if (rest)
10054             make_cleanup (xfree, rest);
10055           if (rest)
10056             extra_string = rest;
10057         }
10058       else
10059         {
10060           if (*arg != '\0')
10061             error (_("Garbage '%s' at end of location"), arg);
10062
10063           /* Create a private copy of condition string.  */
10064           if (cond_string)
10065             {
10066               cond_string = xstrdup (cond_string);
10067               make_cleanup (xfree, cond_string);
10068             }
10069           /* Create a private copy of any extra string.  */
10070           if (extra_string)
10071             {
10072               extra_string = xstrdup (extra_string);
10073               make_cleanup (xfree, extra_string);
10074             }
10075         }
10076
10077       ops->create_breakpoints_sal (gdbarch, &canonical,
10078                                    cond_string, extra_string, type_wanted,
10079                                    tempflag ? disp_del : disp_donttouch,
10080                                    thread, task, ignore_count, ops,
10081                                    from_tty, enabled, internal, flags);
10082     }
10083   else
10084     {
10085       struct breakpoint *b;
10086
10087       make_cleanup (xfree, copy_arg);
10088
10089       if (is_tracepoint_type (type_wanted))
10090         {
10091           struct tracepoint *t;
10092
10093           t = XCNEW (struct tracepoint);
10094           b = &t->base;
10095         }
10096       else
10097         b = XNEW (struct breakpoint);
10098
10099       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
10100
10101       b->addr_string = copy_arg;
10102       if (parse_arg)
10103         b->cond_string = NULL;
10104       else
10105         {
10106           /* Create a private copy of condition string.  */
10107           if (cond_string)
10108             {
10109               cond_string = xstrdup (cond_string);
10110               make_cleanup (xfree, cond_string);
10111             }
10112           b->cond_string = cond_string;
10113         }
10114       b->extra_string = NULL;
10115       b->ignore_count = ignore_count;
10116       b->disposition = tempflag ? disp_del : disp_donttouch;
10117       b->condition_not_parsed = 1;
10118       b->enable_state = enabled ? bp_enabled : bp_disabled;
10119       if ((type_wanted != bp_breakpoint
10120            && type_wanted != bp_hardware_breakpoint) || thread != -1)
10121         b->pspace = current_program_space;
10122
10123       install_breakpoint (internal, b, 0);
10124     }
10125   
10126   if (VEC_length (linespec_sals, canonical.sals) > 1)
10127     {
10128       warning (_("Multiple breakpoints were set.\nUse the "
10129                  "\"delete\" command to delete unwanted breakpoints."));
10130       prev_breakpoint_count = prev_bkpt_count;
10131     }
10132
10133   /* That's it.  Discard the cleanups for data inserted into the
10134      breakpoint.  */
10135   discard_cleanups (bkpt_chain);
10136   /* But cleanup everything else.  */
10137   do_cleanups (old_chain);
10138
10139   /* error call may happen here - have BKPT_CHAIN already discarded.  */
10140   update_global_location_list (UGLL_MAY_INSERT);
10141
10142   return 1;
10143 }
10144
10145 /* Set a breakpoint.
10146    ARG is a string describing breakpoint address,
10147    condition, and thread.
10148    FLAG specifies if a breakpoint is hardware on,
10149    and if breakpoint is temporary, using BP_HARDWARE_FLAG
10150    and BP_TEMPFLAG.  */
10151
10152 static void
10153 break_command_1 (char *arg, int flag, int from_tty)
10154 {
10155   int tempflag = flag & BP_TEMPFLAG;
10156   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
10157                              ? bp_hardware_breakpoint
10158                              : bp_breakpoint);
10159   struct breakpoint_ops *ops;
10160   const char *arg_cp = arg;
10161
10162   /* Matching breakpoints on probes.  */
10163   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
10164     ops = &bkpt_probe_breakpoint_ops;
10165   else
10166     ops = &bkpt_breakpoint_ops;
10167
10168   create_breakpoint (get_current_arch (),
10169                      arg,
10170                      NULL, 0, NULL, 1 /* parse arg */,
10171                      tempflag, type_wanted,
10172                      0 /* Ignore count */,
10173                      pending_break_support,
10174                      ops,
10175                      from_tty,
10176                      1 /* enabled */,
10177                      0 /* internal */,
10178                      0);
10179 }
10180
10181 /* Helper function for break_command_1 and disassemble_command.  */
10182
10183 void
10184 resolve_sal_pc (struct symtab_and_line *sal)
10185 {
10186   CORE_ADDR pc;
10187
10188   if (sal->pc == 0 && sal->symtab != NULL)
10189     {
10190       if (!find_line_pc (sal->symtab, sal->line, &pc))
10191         error (_("No line %d in file \"%s\"."),
10192                sal->line, symtab_to_filename_for_display (sal->symtab));
10193       sal->pc = pc;
10194
10195       /* If this SAL corresponds to a breakpoint inserted using a line
10196          number, then skip the function prologue if necessary.  */
10197       if (sal->explicit_line)
10198         skip_prologue_sal (sal);
10199     }
10200
10201   if (sal->section == 0 && sal->symtab != NULL)
10202     {
10203       const struct blockvector *bv;
10204       const struct block *b;
10205       struct symbol *sym;
10206
10207       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
10208       if (bv != NULL)
10209         {
10210           sym = block_linkage_function (b);
10211           if (sym != NULL)
10212             {
10213               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
10214               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
10215                                                  sym);
10216             }
10217           else
10218             {
10219               /* It really is worthwhile to have the section, so we'll
10220                  just have to look harder. This case can be executed
10221                  if we have line numbers but no functions (as can
10222                  happen in assembly source).  */
10223
10224               struct bound_minimal_symbol msym;
10225               struct cleanup *old_chain = save_current_space_and_thread ();
10226
10227               switch_to_program_space_and_thread (sal->pspace);
10228
10229               msym = lookup_minimal_symbol_by_pc (sal->pc);
10230               if (msym.minsym)
10231                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
10232
10233               do_cleanups (old_chain);
10234             }
10235         }
10236     }
10237 }
10238
10239 void
10240 break_command (char *arg, int from_tty)
10241 {
10242   break_command_1 (arg, 0, from_tty);
10243 }
10244
10245 void
10246 tbreak_command (char *arg, int from_tty)
10247 {
10248   break_command_1 (arg, BP_TEMPFLAG, from_tty);
10249 }
10250
10251 static void
10252 hbreak_command (char *arg, int from_tty)
10253 {
10254   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
10255 }
10256
10257 static void
10258 thbreak_command (char *arg, int from_tty)
10259 {
10260   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
10261 }
10262
10263 static void
10264 stop_command (char *arg, int from_tty)
10265 {
10266   printf_filtered (_("Specify the type of breakpoint to set.\n\
10267 Usage: stop in <function | address>\n\
10268        stop at <line>\n"));
10269 }
10270
10271 static void
10272 stopin_command (char *arg, int from_tty)
10273 {
10274   int badInput = 0;
10275
10276   if (arg == (char *) NULL)
10277     badInput = 1;
10278   else if (*arg != '*')
10279     {
10280       char *argptr = arg;
10281       int hasColon = 0;
10282
10283       /* Look for a ':'.  If this is a line number specification, then
10284          say it is bad, otherwise, it should be an address or
10285          function/method name.  */
10286       while (*argptr && !hasColon)
10287         {
10288           hasColon = (*argptr == ':');
10289           argptr++;
10290         }
10291
10292       if (hasColon)
10293         badInput = (*argptr != ':');    /* Not a class::method */
10294       else
10295         badInput = isdigit (*arg);      /* a simple line number */
10296     }
10297
10298   if (badInput)
10299     printf_filtered (_("Usage: stop in <function | address>\n"));
10300   else
10301     break_command_1 (arg, 0, from_tty);
10302 }
10303
10304 static void
10305 stopat_command (char *arg, int from_tty)
10306 {
10307   int badInput = 0;
10308
10309   if (arg == (char *) NULL || *arg == '*')      /* no line number */
10310     badInput = 1;
10311   else
10312     {
10313       char *argptr = arg;
10314       int hasColon = 0;
10315
10316       /* Look for a ':'.  If there is a '::' then get out, otherwise
10317          it is probably a line number.  */
10318       while (*argptr && !hasColon)
10319         {
10320           hasColon = (*argptr == ':');
10321           argptr++;
10322         }
10323
10324       if (hasColon)
10325         badInput = (*argptr == ':');    /* we have class::method */
10326       else
10327         badInput = !isdigit (*arg);     /* not a line number */
10328     }
10329
10330   if (badInput)
10331     printf_filtered (_("Usage: stop at <line>\n"));
10332   else
10333     break_command_1 (arg, 0, from_tty);
10334 }
10335
10336 /* The dynamic printf command is mostly like a regular breakpoint, but
10337    with a prewired command list consisting of a single output command,
10338    built from extra arguments supplied on the dprintf command
10339    line.  */
10340
10341 static void
10342 dprintf_command (char *arg, int from_tty)
10343 {
10344   create_breakpoint (get_current_arch (),
10345                      arg,
10346                      NULL, 0, NULL, 1 /* parse arg */,
10347                      0, bp_dprintf,
10348                      0 /* Ignore count */,
10349                      pending_break_support,
10350                      &dprintf_breakpoint_ops,
10351                      from_tty,
10352                      1 /* enabled */,
10353                      0 /* internal */,
10354                      0);
10355 }
10356
10357 static void
10358 agent_printf_command (char *arg, int from_tty)
10359 {
10360   error (_("May only run agent-printf on the target"));
10361 }
10362
10363 /* Implement the "breakpoint_hit" breakpoint_ops method for
10364    ranged breakpoints.  */
10365
10366 static int
10367 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10368                                   struct address_space *aspace,
10369                                   CORE_ADDR bp_addr,
10370                                   const struct target_waitstatus *ws)
10371 {
10372   if (ws->kind != TARGET_WAITKIND_STOPPED
10373       || ws->value.sig != GDB_SIGNAL_TRAP)
10374     return 0;
10375
10376   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10377                                          bl->length, aspace, bp_addr);
10378 }
10379
10380 /* Implement the "resources_needed" breakpoint_ops method for
10381    ranged breakpoints.  */
10382
10383 static int
10384 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10385 {
10386   return target_ranged_break_num_registers ();
10387 }
10388
10389 /* Implement the "print_it" breakpoint_ops method for
10390    ranged breakpoints.  */
10391
10392 static enum print_stop_action
10393 print_it_ranged_breakpoint (bpstat bs)
10394 {
10395   struct breakpoint *b = bs->breakpoint_at;
10396   struct bp_location *bl = b->loc;
10397   struct ui_out *uiout = current_uiout;
10398
10399   gdb_assert (b->type == bp_hardware_breakpoint);
10400
10401   /* Ranged breakpoints have only one location.  */
10402   gdb_assert (bl && bl->next == NULL);
10403
10404   annotate_breakpoint (b->number);
10405   if (b->disposition == disp_del)
10406     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10407   else
10408     ui_out_text (uiout, "\nRanged breakpoint ");
10409   if (ui_out_is_mi_like_p (uiout))
10410     {
10411       ui_out_field_string (uiout, "reason",
10412                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10413       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10414     }
10415   ui_out_field_int (uiout, "bkptno", b->number);
10416   ui_out_text (uiout, ", ");
10417
10418   return PRINT_SRC_AND_LOC;
10419 }
10420
10421 /* Implement the "print_one" breakpoint_ops method for
10422    ranged breakpoints.  */
10423
10424 static void
10425 print_one_ranged_breakpoint (struct breakpoint *b,
10426                              struct bp_location **last_loc)
10427 {
10428   struct bp_location *bl = b->loc;
10429   struct value_print_options opts;
10430   struct ui_out *uiout = current_uiout;
10431
10432   /* Ranged breakpoints have only one location.  */
10433   gdb_assert (bl && bl->next == NULL);
10434
10435   get_user_print_options (&opts);
10436
10437   if (opts.addressprint)
10438     /* We don't print the address range here, it will be printed later
10439        by print_one_detail_ranged_breakpoint.  */
10440     ui_out_field_skip (uiout, "addr");
10441   annotate_field (5);
10442   print_breakpoint_location (b, bl);
10443   *last_loc = bl;
10444 }
10445
10446 /* Implement the "print_one_detail" breakpoint_ops method for
10447    ranged breakpoints.  */
10448
10449 static void
10450 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10451                                     struct ui_out *uiout)
10452 {
10453   CORE_ADDR address_start, address_end;
10454   struct bp_location *bl = b->loc;
10455   struct ui_file *stb = mem_fileopen ();
10456   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10457
10458   gdb_assert (bl);
10459
10460   address_start = bl->address;
10461   address_end = address_start + bl->length - 1;
10462
10463   ui_out_text (uiout, "\taddress range: ");
10464   fprintf_unfiltered (stb, "[%s, %s]",
10465                       print_core_address (bl->gdbarch, address_start),
10466                       print_core_address (bl->gdbarch, address_end));
10467   ui_out_field_stream (uiout, "addr", stb);
10468   ui_out_text (uiout, "\n");
10469
10470   do_cleanups (cleanup);
10471 }
10472
10473 /* Implement the "print_mention" breakpoint_ops method for
10474    ranged breakpoints.  */
10475
10476 static void
10477 print_mention_ranged_breakpoint (struct breakpoint *b)
10478 {
10479   struct bp_location *bl = b->loc;
10480   struct ui_out *uiout = current_uiout;
10481
10482   gdb_assert (bl);
10483   gdb_assert (b->type == bp_hardware_breakpoint);
10484
10485   if (ui_out_is_mi_like_p (uiout))
10486     return;
10487
10488   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10489                    b->number, paddress (bl->gdbarch, bl->address),
10490                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10491 }
10492
10493 /* Implement the "print_recreate" breakpoint_ops method for
10494    ranged breakpoints.  */
10495
10496 static void
10497 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10498 {
10499   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10500                       b->addr_string_range_end);
10501   print_recreate_thread (b, fp);
10502 }
10503
10504 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10505
10506 static struct breakpoint_ops ranged_breakpoint_ops;
10507
10508 /* Find the address where the end of the breakpoint range should be
10509    placed, given the SAL of the end of the range.  This is so that if
10510    the user provides a line number, the end of the range is set to the
10511    last instruction of the given line.  */
10512
10513 static CORE_ADDR
10514 find_breakpoint_range_end (struct symtab_and_line sal)
10515 {
10516   CORE_ADDR end;
10517
10518   /* If the user provided a PC value, use it.  Otherwise,
10519      find the address of the end of the given location.  */
10520   if (sal.explicit_pc)
10521     end = sal.pc;
10522   else
10523     {
10524       int ret;
10525       CORE_ADDR start;
10526
10527       ret = find_line_pc_range (sal, &start, &end);
10528       if (!ret)
10529         error (_("Could not find location of the end of the range."));
10530
10531       /* find_line_pc_range returns the start of the next line.  */
10532       end--;
10533     }
10534
10535   return end;
10536 }
10537
10538 /* Implement the "break-range" CLI command.  */
10539
10540 static void
10541 break_range_command (char *arg, int from_tty)
10542 {
10543   char *arg_start, *addr_string_start, *addr_string_end;
10544   struct linespec_result canonical_start, canonical_end;
10545   int bp_count, can_use_bp, length;
10546   CORE_ADDR end;
10547   struct breakpoint *b;
10548   struct symtab_and_line sal_start, sal_end;
10549   struct cleanup *cleanup_bkpt;
10550   struct linespec_sals *lsal_start, *lsal_end;
10551
10552   /* We don't support software ranged breakpoints.  */
10553   if (target_ranged_break_num_registers () < 0)
10554     error (_("This target does not support hardware ranged breakpoints."));
10555
10556   bp_count = hw_breakpoint_used_count ();
10557   bp_count += target_ranged_break_num_registers ();
10558   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10559                                                    bp_count, 0);
10560   if (can_use_bp < 0)
10561     error (_("Hardware breakpoints used exceeds limit."));
10562
10563   arg = skip_spaces (arg);
10564   if (arg == NULL || arg[0] == '\0')
10565     error(_("No address range specified."));
10566
10567   init_linespec_result (&canonical_start);
10568
10569   arg_start = arg;
10570   parse_breakpoint_sals (&arg, &canonical_start);
10571
10572   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10573
10574   if (arg[0] != ',')
10575     error (_("Too few arguments."));
10576   else if (VEC_empty (linespec_sals, canonical_start.sals))
10577     error (_("Could not find location of the beginning of the range."));
10578
10579   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10580
10581   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10582       || lsal_start->sals.nelts != 1)
10583     error (_("Cannot create a ranged breakpoint with multiple locations."));
10584
10585   sal_start = lsal_start->sals.sals[0];
10586   addr_string_start = savestring (arg_start, arg - arg_start);
10587   make_cleanup (xfree, addr_string_start);
10588
10589   arg++;        /* Skip the comma.  */
10590   arg = skip_spaces (arg);
10591
10592   /* Parse the end location.  */
10593
10594   init_linespec_result (&canonical_end);
10595   arg_start = arg;
10596
10597   /* We call decode_line_full directly here instead of using
10598      parse_breakpoint_sals because we need to specify the start location's
10599      symtab and line as the default symtab and line for the end of the
10600      range.  This makes it possible to have ranges like "foo.c:27, +14",
10601      where +14 means 14 lines from the start location.  */
10602   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10603                     sal_start.symtab, sal_start.line,
10604                     &canonical_end, NULL, NULL);
10605
10606   make_cleanup_destroy_linespec_result (&canonical_end);
10607
10608   if (VEC_empty (linespec_sals, canonical_end.sals))
10609     error (_("Could not find location of the end of the range."));
10610
10611   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10612   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10613       || lsal_end->sals.nelts != 1)
10614     error (_("Cannot create a ranged breakpoint with multiple locations."));
10615
10616   sal_end = lsal_end->sals.sals[0];
10617   addr_string_end = savestring (arg_start, arg - arg_start);
10618   make_cleanup (xfree, addr_string_end);
10619
10620   end = find_breakpoint_range_end (sal_end);
10621   if (sal_start.pc > end)
10622     error (_("Invalid address range, end precedes start."));
10623
10624   length = end - sal_start.pc + 1;
10625   if (length < 0)
10626     /* Length overflowed.  */
10627     error (_("Address range too large."));
10628   else if (length == 1)
10629     {
10630       /* This range is simple enough to be handled by
10631          the `hbreak' command.  */
10632       hbreak_command (addr_string_start, 1);
10633
10634       do_cleanups (cleanup_bkpt);
10635
10636       return;
10637     }
10638
10639   /* Now set up the breakpoint.  */
10640   b = set_raw_breakpoint (get_current_arch (), sal_start,
10641                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10642   set_breakpoint_count (breakpoint_count + 1);
10643   b->number = breakpoint_count;
10644   b->disposition = disp_donttouch;
10645   b->addr_string = xstrdup (addr_string_start);
10646   b->addr_string_range_end = xstrdup (addr_string_end);
10647   b->loc->length = length;
10648
10649   do_cleanups (cleanup_bkpt);
10650
10651   mention (b);
10652   observer_notify_breakpoint_created (b);
10653   update_global_location_list (UGLL_MAY_INSERT);
10654 }
10655
10656 /*  Return non-zero if EXP is verified as constant.  Returned zero
10657     means EXP is variable.  Also the constant detection may fail for
10658     some constant expressions and in such case still falsely return
10659     zero.  */
10660
10661 static int
10662 watchpoint_exp_is_const (const struct expression *exp)
10663 {
10664   int i = exp->nelts;
10665
10666   while (i > 0)
10667     {
10668       int oplenp, argsp;
10669
10670       /* We are only interested in the descriptor of each element.  */
10671       operator_length (exp, i, &oplenp, &argsp);
10672       i -= oplenp;
10673
10674       switch (exp->elts[i].opcode)
10675         {
10676         case BINOP_ADD:
10677         case BINOP_SUB:
10678         case BINOP_MUL:
10679         case BINOP_DIV:
10680         case BINOP_REM:
10681         case BINOP_MOD:
10682         case BINOP_LSH:
10683         case BINOP_RSH:
10684         case BINOP_LOGICAL_AND:
10685         case BINOP_LOGICAL_OR:
10686         case BINOP_BITWISE_AND:
10687         case BINOP_BITWISE_IOR:
10688         case BINOP_BITWISE_XOR:
10689         case BINOP_EQUAL:
10690         case BINOP_NOTEQUAL:
10691         case BINOP_LESS:
10692         case BINOP_GTR:
10693         case BINOP_LEQ:
10694         case BINOP_GEQ:
10695         case BINOP_REPEAT:
10696         case BINOP_COMMA:
10697         case BINOP_EXP:
10698         case BINOP_MIN:
10699         case BINOP_MAX:
10700         case BINOP_INTDIV:
10701         case BINOP_CONCAT:
10702         case TERNOP_COND:
10703         case TERNOP_SLICE:
10704
10705         case OP_LONG:
10706         case OP_DOUBLE:
10707         case OP_DECFLOAT:
10708         case OP_LAST:
10709         case OP_COMPLEX:
10710         case OP_STRING:
10711         case OP_ARRAY:
10712         case OP_TYPE:
10713         case OP_TYPEOF:
10714         case OP_DECLTYPE:
10715         case OP_TYPEID:
10716         case OP_NAME:
10717         case OP_OBJC_NSSTRING:
10718
10719         case UNOP_NEG:
10720         case UNOP_LOGICAL_NOT:
10721         case UNOP_COMPLEMENT:
10722         case UNOP_ADDR:
10723         case UNOP_HIGH:
10724         case UNOP_CAST:
10725
10726         case UNOP_CAST_TYPE:
10727         case UNOP_REINTERPRET_CAST:
10728         case UNOP_DYNAMIC_CAST:
10729           /* Unary, binary and ternary operators: We have to check
10730              their operands.  If they are constant, then so is the
10731              result of that operation.  For instance, if A and B are
10732              determined to be constants, then so is "A + B".
10733
10734              UNOP_IND is one exception to the rule above, because the
10735              value of *ADDR is not necessarily a constant, even when
10736              ADDR is.  */
10737           break;
10738
10739         case OP_VAR_VALUE:
10740           /* Check whether the associated symbol is a constant.
10741
10742              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10743              possible that a buggy compiler could mark a variable as
10744              constant even when it is not, and TYPE_CONST would return
10745              true in this case, while SYMBOL_CLASS wouldn't.
10746
10747              We also have to check for function symbols because they
10748              are always constant.  */
10749           {
10750             struct symbol *s = exp->elts[i + 2].symbol;
10751
10752             if (SYMBOL_CLASS (s) != LOC_BLOCK
10753                 && SYMBOL_CLASS (s) != LOC_CONST
10754                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10755               return 0;
10756             break;
10757           }
10758
10759         /* The default action is to return 0 because we are using
10760            the optimistic approach here: If we don't know something,
10761            then it is not a constant.  */
10762         default:
10763           return 0;
10764         }
10765     }
10766
10767   return 1;
10768 }
10769
10770 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10771
10772 static void
10773 dtor_watchpoint (struct breakpoint *self)
10774 {
10775   struct watchpoint *w = (struct watchpoint *) self;
10776
10777   xfree (w->cond_exp);
10778   xfree (w->exp);
10779   xfree (w->exp_string);
10780   xfree (w->exp_string_reparse);
10781   value_free (w->val);
10782
10783   base_breakpoint_ops.dtor (self);
10784 }
10785
10786 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10787
10788 static void
10789 re_set_watchpoint (struct breakpoint *b)
10790 {
10791   struct watchpoint *w = (struct watchpoint *) b;
10792
10793   /* Watchpoint can be either on expression using entirely global
10794      variables, or it can be on local variables.
10795
10796      Watchpoints of the first kind are never auto-deleted, and even
10797      persist across program restarts.  Since they can use variables
10798      from shared libraries, we need to reparse expression as libraries
10799      are loaded and unloaded.
10800
10801      Watchpoints on local variables can also change meaning as result
10802      of solib event.  For example, if a watchpoint uses both a local
10803      and a global variables in expression, it's a local watchpoint,
10804      but unloading of a shared library will make the expression
10805      invalid.  This is not a very common use case, but we still
10806      re-evaluate expression, to avoid surprises to the user.
10807
10808      Note that for local watchpoints, we re-evaluate it only if
10809      watchpoints frame id is still valid.  If it's not, it means the
10810      watchpoint is out of scope and will be deleted soon.  In fact,
10811      I'm not sure we'll ever be called in this case.
10812
10813      If a local watchpoint's frame id is still valid, then
10814      w->exp_valid_block is likewise valid, and we can safely use it.
10815
10816      Don't do anything about disabled watchpoints, since they will be
10817      reevaluated again when enabled.  */
10818   update_watchpoint (w, 1 /* reparse */);
10819 }
10820
10821 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10822
10823 static int
10824 insert_watchpoint (struct bp_location *bl)
10825 {
10826   struct watchpoint *w = (struct watchpoint *) bl->owner;
10827   int length = w->exact ? 1 : bl->length;
10828
10829   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10830                                    w->cond_exp);
10831 }
10832
10833 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10834
10835 static int
10836 remove_watchpoint (struct bp_location *bl)
10837 {
10838   struct watchpoint *w = (struct watchpoint *) bl->owner;
10839   int length = w->exact ? 1 : bl->length;
10840
10841   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10842                                    w->cond_exp);
10843 }
10844
10845 static int
10846 breakpoint_hit_watchpoint (const struct bp_location *bl,
10847                            struct address_space *aspace, CORE_ADDR bp_addr,
10848                            const struct target_waitstatus *ws)
10849 {
10850   struct breakpoint *b = bl->owner;
10851   struct watchpoint *w = (struct watchpoint *) b;
10852
10853   /* Continuable hardware watchpoints are treated as non-existent if the
10854      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10855      some data address).  Otherwise gdb won't stop on a break instruction
10856      in the code (not from a breakpoint) when a hardware watchpoint has
10857      been defined.  Also skip watchpoints which we know did not trigger
10858      (did not match the data address).  */
10859   if (is_hardware_watchpoint (b)
10860       && w->watchpoint_triggered == watch_triggered_no)
10861     return 0;
10862
10863   return 1;
10864 }
10865
10866 static void
10867 check_status_watchpoint (bpstat bs)
10868 {
10869   gdb_assert (is_watchpoint (bs->breakpoint_at));
10870
10871   bpstat_check_watchpoint (bs);
10872 }
10873
10874 /* Implement the "resources_needed" breakpoint_ops method for
10875    hardware watchpoints.  */
10876
10877 static int
10878 resources_needed_watchpoint (const struct bp_location *bl)
10879 {
10880   struct watchpoint *w = (struct watchpoint *) bl->owner;
10881   int length = w->exact? 1 : bl->length;
10882
10883   return target_region_ok_for_hw_watchpoint (bl->address, length);
10884 }
10885
10886 /* Implement the "works_in_software_mode" breakpoint_ops method for
10887    hardware watchpoints.  */
10888
10889 static int
10890 works_in_software_mode_watchpoint (const struct breakpoint *b)
10891 {
10892   /* Read and access watchpoints only work with hardware support.  */
10893   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10894 }
10895
10896 static enum print_stop_action
10897 print_it_watchpoint (bpstat bs)
10898 {
10899   struct cleanup *old_chain;
10900   struct breakpoint *b;
10901   struct ui_file *stb;
10902   enum print_stop_action result;
10903   struct watchpoint *w;
10904   struct ui_out *uiout = current_uiout;
10905
10906   gdb_assert (bs->bp_location_at != NULL);
10907
10908   b = bs->breakpoint_at;
10909   w = (struct watchpoint *) b;
10910
10911   stb = mem_fileopen ();
10912   old_chain = make_cleanup_ui_file_delete (stb);
10913
10914   switch (b->type)
10915     {
10916     case bp_watchpoint:
10917     case bp_hardware_watchpoint:
10918       annotate_watchpoint (b->number);
10919       if (ui_out_is_mi_like_p (uiout))
10920         ui_out_field_string
10921           (uiout, "reason",
10922            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10923       mention (b);
10924       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10925       ui_out_text (uiout, "\nOld value = ");
10926       watchpoint_value_print (bs->old_val, stb);
10927       ui_out_field_stream (uiout, "old", stb);
10928       ui_out_text (uiout, "\nNew value = ");
10929       watchpoint_value_print (w->val, stb);
10930       ui_out_field_stream (uiout, "new", stb);
10931       ui_out_text (uiout, "\n");
10932       /* More than one watchpoint may have been triggered.  */
10933       result = PRINT_UNKNOWN;
10934       break;
10935
10936     case bp_read_watchpoint:
10937       if (ui_out_is_mi_like_p (uiout))
10938         ui_out_field_string
10939           (uiout, "reason",
10940            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10941       mention (b);
10942       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10943       ui_out_text (uiout, "\nValue = ");
10944       watchpoint_value_print (w->val, stb);
10945       ui_out_field_stream (uiout, "value", stb);
10946       ui_out_text (uiout, "\n");
10947       result = PRINT_UNKNOWN;
10948       break;
10949
10950     case bp_access_watchpoint:
10951       if (bs->old_val != NULL)
10952         {
10953           annotate_watchpoint (b->number);
10954           if (ui_out_is_mi_like_p (uiout))
10955             ui_out_field_string
10956               (uiout, "reason",
10957                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10958           mention (b);
10959           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10960           ui_out_text (uiout, "\nOld value = ");
10961           watchpoint_value_print (bs->old_val, stb);
10962           ui_out_field_stream (uiout, "old", stb);
10963           ui_out_text (uiout, "\nNew value = ");
10964         }
10965       else
10966         {
10967           mention (b);
10968           if (ui_out_is_mi_like_p (uiout))
10969             ui_out_field_string
10970               (uiout, "reason",
10971                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10972           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10973           ui_out_text (uiout, "\nValue = ");
10974         }
10975       watchpoint_value_print (w->val, stb);
10976       ui_out_field_stream (uiout, "new", stb);
10977       ui_out_text (uiout, "\n");
10978       result = PRINT_UNKNOWN;
10979       break;
10980     default:
10981       result = PRINT_UNKNOWN;
10982     }
10983
10984   do_cleanups (old_chain);
10985   return result;
10986 }
10987
10988 /* Implement the "print_mention" breakpoint_ops method for hardware
10989    watchpoints.  */
10990
10991 static void
10992 print_mention_watchpoint (struct breakpoint *b)
10993 {
10994   struct cleanup *ui_out_chain;
10995   struct watchpoint *w = (struct watchpoint *) b;
10996   struct ui_out *uiout = current_uiout;
10997
10998   switch (b->type)
10999     {
11000     case bp_watchpoint:
11001       ui_out_text (uiout, "Watchpoint ");
11002       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11003       break;
11004     case bp_hardware_watchpoint:
11005       ui_out_text (uiout, "Hardware watchpoint ");
11006       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11007       break;
11008     case bp_read_watchpoint:
11009       ui_out_text (uiout, "Hardware read watchpoint ");
11010       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11011       break;
11012     case bp_access_watchpoint:
11013       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
11014       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11015       break;
11016     default:
11017       internal_error (__FILE__, __LINE__,
11018                       _("Invalid hardware watchpoint type."));
11019     }
11020
11021   ui_out_field_int (uiout, "number", b->number);
11022   ui_out_text (uiout, ": ");
11023   ui_out_field_string (uiout, "exp", w->exp_string);
11024   do_cleanups (ui_out_chain);
11025 }
11026
11027 /* Implement the "print_recreate" breakpoint_ops method for
11028    watchpoints.  */
11029
11030 static void
11031 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
11032 {
11033   struct watchpoint *w = (struct watchpoint *) b;
11034
11035   switch (b->type)
11036     {
11037     case bp_watchpoint:
11038     case bp_hardware_watchpoint:
11039       fprintf_unfiltered (fp, "watch");
11040       break;
11041     case bp_read_watchpoint:
11042       fprintf_unfiltered (fp, "rwatch");
11043       break;
11044     case bp_access_watchpoint:
11045       fprintf_unfiltered (fp, "awatch");
11046       break;
11047     default:
11048       internal_error (__FILE__, __LINE__,
11049                       _("Invalid watchpoint type."));
11050     }
11051
11052   fprintf_unfiltered (fp, " %s", w->exp_string);
11053   print_recreate_thread (b, fp);
11054 }
11055
11056 /* Implement the "explains_signal" breakpoint_ops method for
11057    watchpoints.  */
11058
11059 static int
11060 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
11061 {
11062   /* A software watchpoint cannot cause a signal other than
11063      GDB_SIGNAL_TRAP.  */
11064   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
11065     return 0;
11066
11067   return 1;
11068 }
11069
11070 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
11071
11072 static struct breakpoint_ops watchpoint_breakpoint_ops;
11073
11074 /* Implement the "insert" breakpoint_ops method for
11075    masked hardware watchpoints.  */
11076
11077 static int
11078 insert_masked_watchpoint (struct bp_location *bl)
11079 {
11080   struct watchpoint *w = (struct watchpoint *) bl->owner;
11081
11082   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
11083                                         bl->watchpoint_type);
11084 }
11085
11086 /* Implement the "remove" breakpoint_ops method for
11087    masked hardware watchpoints.  */
11088
11089 static int
11090 remove_masked_watchpoint (struct bp_location *bl)
11091 {
11092   struct watchpoint *w = (struct watchpoint *) bl->owner;
11093
11094   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
11095                                         bl->watchpoint_type);
11096 }
11097
11098 /* Implement the "resources_needed" breakpoint_ops method for
11099    masked hardware watchpoints.  */
11100
11101 static int
11102 resources_needed_masked_watchpoint (const struct bp_location *bl)
11103 {
11104   struct watchpoint *w = (struct watchpoint *) bl->owner;
11105
11106   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
11107 }
11108
11109 /* Implement the "works_in_software_mode" breakpoint_ops method for
11110    masked hardware watchpoints.  */
11111
11112 static int
11113 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
11114 {
11115   return 0;
11116 }
11117
11118 /* Implement the "print_it" breakpoint_ops method for
11119    masked hardware watchpoints.  */
11120
11121 static enum print_stop_action
11122 print_it_masked_watchpoint (bpstat bs)
11123 {
11124   struct breakpoint *b = bs->breakpoint_at;
11125   struct ui_out *uiout = current_uiout;
11126
11127   /* Masked watchpoints have only one location.  */
11128   gdb_assert (b->loc && b->loc->next == NULL);
11129
11130   switch (b->type)
11131     {
11132     case bp_hardware_watchpoint:
11133       annotate_watchpoint (b->number);
11134       if (ui_out_is_mi_like_p (uiout))
11135         ui_out_field_string
11136           (uiout, "reason",
11137            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
11138       break;
11139
11140     case bp_read_watchpoint:
11141       if (ui_out_is_mi_like_p (uiout))
11142         ui_out_field_string
11143           (uiout, "reason",
11144            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11145       break;
11146
11147     case bp_access_watchpoint:
11148       if (ui_out_is_mi_like_p (uiout))
11149         ui_out_field_string
11150           (uiout, "reason",
11151            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11152       break;
11153     default:
11154       internal_error (__FILE__, __LINE__,
11155                       _("Invalid hardware watchpoint type."));
11156     }
11157
11158   mention (b);
11159   ui_out_text (uiout, _("\n\
11160 Check the underlying instruction at PC for the memory\n\
11161 address and value which triggered this watchpoint.\n"));
11162   ui_out_text (uiout, "\n");
11163
11164   /* More than one watchpoint may have been triggered.  */
11165   return PRINT_UNKNOWN;
11166 }
11167
11168 /* Implement the "print_one_detail" breakpoint_ops method for
11169    masked hardware watchpoints.  */
11170
11171 static void
11172 print_one_detail_masked_watchpoint (const struct breakpoint *b,
11173                                     struct ui_out *uiout)
11174 {
11175   struct watchpoint *w = (struct watchpoint *) b;
11176
11177   /* Masked watchpoints have only one location.  */
11178   gdb_assert (b->loc && b->loc->next == NULL);
11179
11180   ui_out_text (uiout, "\tmask ");
11181   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
11182   ui_out_text (uiout, "\n");
11183 }
11184
11185 /* Implement the "print_mention" breakpoint_ops method for
11186    masked hardware watchpoints.  */
11187
11188 static void
11189 print_mention_masked_watchpoint (struct breakpoint *b)
11190 {
11191   struct watchpoint *w = (struct watchpoint *) b;
11192   struct ui_out *uiout = current_uiout;
11193   struct cleanup *ui_out_chain;
11194
11195   switch (b->type)
11196     {
11197     case bp_hardware_watchpoint:
11198       ui_out_text (uiout, "Masked hardware watchpoint ");
11199       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11200       break;
11201     case bp_read_watchpoint:
11202       ui_out_text (uiout, "Masked hardware read watchpoint ");
11203       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11204       break;
11205     case bp_access_watchpoint:
11206       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
11207       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11208       break;
11209     default:
11210       internal_error (__FILE__, __LINE__,
11211                       _("Invalid hardware watchpoint type."));
11212     }
11213
11214   ui_out_field_int (uiout, "number", b->number);
11215   ui_out_text (uiout, ": ");
11216   ui_out_field_string (uiout, "exp", w->exp_string);
11217   do_cleanups (ui_out_chain);
11218 }
11219
11220 /* Implement the "print_recreate" breakpoint_ops method for
11221    masked hardware watchpoints.  */
11222
11223 static void
11224 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
11225 {
11226   struct watchpoint *w = (struct watchpoint *) b;
11227   char tmp[40];
11228
11229   switch (b->type)
11230     {
11231     case bp_hardware_watchpoint:
11232       fprintf_unfiltered (fp, "watch");
11233       break;
11234     case bp_read_watchpoint:
11235       fprintf_unfiltered (fp, "rwatch");
11236       break;
11237     case bp_access_watchpoint:
11238       fprintf_unfiltered (fp, "awatch");
11239       break;
11240     default:
11241       internal_error (__FILE__, __LINE__,
11242                       _("Invalid hardware watchpoint type."));
11243     }
11244
11245   sprintf_vma (tmp, w->hw_wp_mask);
11246   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
11247   print_recreate_thread (b, fp);
11248 }
11249
11250 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
11251
11252 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
11253
11254 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
11255
11256 static int
11257 is_masked_watchpoint (const struct breakpoint *b)
11258 {
11259   return b->ops == &masked_watchpoint_breakpoint_ops;
11260 }
11261
11262 /* accessflag:  hw_write:  watch write, 
11263                 hw_read:   watch read, 
11264                 hw_access: watch access (read or write) */
11265 static void
11266 watch_command_1 (const char *arg, int accessflag, int from_tty,
11267                  int just_location, int internal)
11268 {
11269   volatile struct gdb_exception e;
11270   struct breakpoint *b, *scope_breakpoint = NULL;
11271   struct expression *exp;
11272   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
11273   struct value *val, *mark, *result;
11274   int saved_bitpos = 0, saved_bitsize = 0;
11275   struct frame_info *frame;
11276   const char *exp_start = NULL;
11277   const char *exp_end = NULL;
11278   const char *tok, *end_tok;
11279   int toklen = -1;
11280   const char *cond_start = NULL;
11281   const char *cond_end = NULL;
11282   enum bptype bp_type;
11283   int thread = -1;
11284   int pc = 0;
11285   /* Flag to indicate whether we are going to use masks for
11286      the hardware watchpoint.  */
11287   int use_mask = 0;
11288   CORE_ADDR mask = 0;
11289   struct watchpoint *w;
11290   char *expression;
11291   struct cleanup *back_to;
11292
11293   /* Make sure that we actually have parameters to parse.  */
11294   if (arg != NULL && arg[0] != '\0')
11295     {
11296       const char *value_start;
11297
11298       exp_end = arg + strlen (arg);
11299
11300       /* Look for "parameter value" pairs at the end
11301          of the arguments string.  */
11302       for (tok = exp_end - 1; tok > arg; tok--)
11303         {
11304           /* Skip whitespace at the end of the argument list.  */
11305           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11306             tok--;
11307
11308           /* Find the beginning of the last token.
11309              This is the value of the parameter.  */
11310           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11311             tok--;
11312           value_start = tok + 1;
11313
11314           /* Skip whitespace.  */
11315           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11316             tok--;
11317
11318           end_tok = tok;
11319
11320           /* Find the beginning of the second to last token.
11321              This is the parameter itself.  */
11322           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11323             tok--;
11324           tok++;
11325           toklen = end_tok - tok + 1;
11326
11327           if (toklen == 6 && !strncmp (tok, "thread", 6))
11328             {
11329               /* At this point we've found a "thread" token, which means
11330                  the user is trying to set a watchpoint that triggers
11331                  only in a specific thread.  */
11332               char *endp;
11333
11334               if (thread != -1)
11335                 error(_("You can specify only one thread."));
11336
11337               /* Extract the thread ID from the next token.  */
11338               thread = strtol (value_start, &endp, 0);
11339
11340               /* Check if the user provided a valid numeric value for the
11341                  thread ID.  */
11342               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11343                 error (_("Invalid thread ID specification %s."), value_start);
11344
11345               /* Check if the thread actually exists.  */
11346               if (!valid_thread_id (thread))
11347                 invalid_thread_id_error (thread);
11348             }
11349           else if (toklen == 4 && !strncmp (tok, "mask", 4))
11350             {
11351               /* We've found a "mask" token, which means the user wants to
11352                  create a hardware watchpoint that is going to have the mask
11353                  facility.  */
11354               struct value *mask_value, *mark;
11355
11356               if (use_mask)
11357                 error(_("You can specify only one mask."));
11358
11359               use_mask = just_location = 1;
11360
11361               mark = value_mark ();
11362               mask_value = parse_to_comma_and_eval (&value_start);
11363               mask = value_as_address (mask_value);
11364               value_free_to_mark (mark);
11365             }
11366           else
11367             /* We didn't recognize what we found.  We should stop here.  */
11368             break;
11369
11370           /* Truncate the string and get rid of the "parameter value" pair before
11371              the arguments string is parsed by the parse_exp_1 function.  */
11372           exp_end = tok;
11373         }
11374     }
11375   else
11376     exp_end = arg;
11377
11378   /* Parse the rest of the arguments.  From here on out, everything
11379      is in terms of a newly allocated string instead of the original
11380      ARG.  */
11381   innermost_block = NULL;
11382   expression = savestring (arg, exp_end - arg);
11383   back_to = make_cleanup (xfree, expression);
11384   exp_start = arg = expression;
11385   exp = parse_exp_1 (&arg, 0, 0, 0);
11386   exp_end = arg;
11387   /* Remove trailing whitespace from the expression before saving it.
11388      This makes the eventual display of the expression string a bit
11389      prettier.  */
11390   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11391     --exp_end;
11392
11393   /* Checking if the expression is not constant.  */
11394   if (watchpoint_exp_is_const (exp))
11395     {
11396       int len;
11397
11398       len = exp_end - exp_start;
11399       while (len > 0 && isspace (exp_start[len - 1]))
11400         len--;
11401       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11402     }
11403
11404   exp_valid_block = innermost_block;
11405   mark = value_mark ();
11406   fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11407
11408   if (val != NULL && just_location)
11409     {
11410       saved_bitpos = value_bitpos (val);
11411       saved_bitsize = value_bitsize (val);
11412     }
11413
11414   if (just_location)
11415     {
11416       int ret;
11417
11418       exp_valid_block = NULL;
11419       val = value_addr (result);
11420       release_value (val);
11421       value_free_to_mark (mark);
11422
11423       if (use_mask)
11424         {
11425           ret = target_masked_watch_num_registers (value_as_address (val),
11426                                                    mask);
11427           if (ret == -1)
11428             error (_("This target does not support masked watchpoints."));
11429           else if (ret == -2)
11430             error (_("Invalid mask or memory region."));
11431         }
11432     }
11433   else if (val != NULL)
11434     release_value (val);
11435
11436   tok = skip_spaces_const (arg);
11437   end_tok = skip_to_space_const (tok);
11438
11439   toklen = end_tok - tok;
11440   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11441     {
11442       struct expression *cond;
11443
11444       innermost_block = NULL;
11445       tok = cond_start = end_tok + 1;
11446       cond = parse_exp_1 (&tok, 0, 0, 0);
11447
11448       /* The watchpoint expression may not be local, but the condition
11449          may still be.  E.g.: `watch global if local > 0'.  */
11450       cond_exp_valid_block = innermost_block;
11451
11452       xfree (cond);
11453       cond_end = tok;
11454     }
11455   if (*tok)
11456     error (_("Junk at end of command."));
11457
11458   frame = block_innermost_frame (exp_valid_block);
11459
11460   /* If the expression is "local", then set up a "watchpoint scope"
11461      breakpoint at the point where we've left the scope of the watchpoint
11462      expression.  Create the scope breakpoint before the watchpoint, so
11463      that we will encounter it first in bpstat_stop_status.  */
11464   if (exp_valid_block && frame)
11465     {
11466       if (frame_id_p (frame_unwind_caller_id (frame)))
11467         {
11468           scope_breakpoint
11469             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11470                                           frame_unwind_caller_pc (frame),
11471                                           bp_watchpoint_scope,
11472                                           &momentary_breakpoint_ops);
11473
11474           scope_breakpoint->enable_state = bp_enabled;
11475
11476           /* Automatically delete the breakpoint when it hits.  */
11477           scope_breakpoint->disposition = disp_del;
11478
11479           /* Only break in the proper frame (help with recursion).  */
11480           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11481
11482           /* Set the address at which we will stop.  */
11483           scope_breakpoint->loc->gdbarch
11484             = frame_unwind_caller_arch (frame);
11485           scope_breakpoint->loc->requested_address
11486             = frame_unwind_caller_pc (frame);
11487           scope_breakpoint->loc->address
11488             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11489                                          scope_breakpoint->loc->requested_address,
11490                                          scope_breakpoint->type);
11491         }
11492     }
11493
11494   /* Now set up the breakpoint.  We create all watchpoints as hardware
11495      watchpoints here even if hardware watchpoints are turned off, a call
11496      to update_watchpoint later in this function will cause the type to
11497      drop back to bp_watchpoint (software watchpoint) if required.  */
11498
11499   if (accessflag == hw_read)
11500     bp_type = bp_read_watchpoint;
11501   else if (accessflag == hw_access)
11502     bp_type = bp_access_watchpoint;
11503   else
11504     bp_type = bp_hardware_watchpoint;
11505
11506   w = XCNEW (struct watchpoint);
11507   b = &w->base;
11508   if (use_mask)
11509     init_raw_breakpoint_without_location (b, NULL, bp_type,
11510                                           &masked_watchpoint_breakpoint_ops);
11511   else
11512     init_raw_breakpoint_without_location (b, NULL, bp_type,
11513                                           &watchpoint_breakpoint_ops);
11514   b->thread = thread;
11515   b->disposition = disp_donttouch;
11516   b->pspace = current_program_space;
11517   w->exp = exp;
11518   w->exp_valid_block = exp_valid_block;
11519   w->cond_exp_valid_block = cond_exp_valid_block;
11520   if (just_location)
11521     {
11522       struct type *t = value_type (val);
11523       CORE_ADDR addr = value_as_address (val);
11524       char *name;
11525
11526       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11527       name = type_to_string (t);
11528
11529       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11530                                           core_addr_to_string (addr));
11531       xfree (name);
11532
11533       w->exp_string = xstrprintf ("-location %.*s",
11534                                   (int) (exp_end - exp_start), exp_start);
11535
11536       /* The above expression is in C.  */
11537       b->language = language_c;
11538     }
11539   else
11540     w->exp_string = savestring (exp_start, exp_end - exp_start);
11541
11542   if (use_mask)
11543     {
11544       w->hw_wp_mask = mask;
11545     }
11546   else
11547     {
11548       w->val = val;
11549       w->val_bitpos = saved_bitpos;
11550       w->val_bitsize = saved_bitsize;
11551       w->val_valid = 1;
11552     }
11553
11554   if (cond_start)
11555     b->cond_string = savestring (cond_start, cond_end - cond_start);
11556   else
11557     b->cond_string = 0;
11558
11559   if (frame)
11560     {
11561       w->watchpoint_frame = get_frame_id (frame);
11562       w->watchpoint_thread = inferior_ptid;
11563     }
11564   else
11565     {
11566       w->watchpoint_frame = null_frame_id;
11567       w->watchpoint_thread = null_ptid;
11568     }
11569
11570   if (scope_breakpoint != NULL)
11571     {
11572       /* The scope breakpoint is related to the watchpoint.  We will
11573          need to act on them together.  */
11574       b->related_breakpoint = scope_breakpoint;
11575       scope_breakpoint->related_breakpoint = b;
11576     }
11577
11578   if (!just_location)
11579     value_free_to_mark (mark);
11580
11581   TRY_CATCH (e, RETURN_MASK_ALL)
11582     {
11583       /* Finally update the new watchpoint.  This creates the locations
11584          that should be inserted.  */
11585       update_watchpoint (w, 1);
11586     }
11587   if (e.reason < 0)
11588     {
11589       delete_breakpoint (b);
11590       throw_exception (e);
11591     }
11592
11593   install_breakpoint (internal, b, 1);
11594   do_cleanups (back_to);
11595 }
11596
11597 /* Return count of debug registers needed to watch the given expression.
11598    If the watchpoint cannot be handled in hardware return zero.  */
11599
11600 static int
11601 can_use_hardware_watchpoint (struct value *v)
11602 {
11603   int found_memory_cnt = 0;
11604   struct value *head = v;
11605
11606   /* Did the user specifically forbid us to use hardware watchpoints? */
11607   if (!can_use_hw_watchpoints)
11608     return 0;
11609
11610   /* Make sure that the value of the expression depends only upon
11611      memory contents, and values computed from them within GDB.  If we
11612      find any register references or function calls, we can't use a
11613      hardware watchpoint.
11614
11615      The idea here is that evaluating an expression generates a series
11616      of values, one holding the value of every subexpression.  (The
11617      expression a*b+c has five subexpressions: a, b, a*b, c, and
11618      a*b+c.)  GDB's values hold almost enough information to establish
11619      the criteria given above --- they identify memory lvalues,
11620      register lvalues, computed values, etcetera.  So we can evaluate
11621      the expression, and then scan the chain of values that leaves
11622      behind to decide whether we can detect any possible change to the
11623      expression's final value using only hardware watchpoints.
11624
11625      However, I don't think that the values returned by inferior
11626      function calls are special in any way.  So this function may not
11627      notice that an expression involving an inferior function call
11628      can't be watched with hardware watchpoints.  FIXME.  */
11629   for (; v; v = value_next (v))
11630     {
11631       if (VALUE_LVAL (v) == lval_memory)
11632         {
11633           if (v != head && value_lazy (v))
11634             /* A lazy memory lvalue in the chain is one that GDB never
11635                needed to fetch; we either just used its address (e.g.,
11636                `a' in `a.b') or we never needed it at all (e.g., `a'
11637                in `a,b').  This doesn't apply to HEAD; if that is
11638                lazy then it was not readable, but watch it anyway.  */
11639             ;
11640           else
11641             {
11642               /* Ahh, memory we actually used!  Check if we can cover
11643                  it with hardware watchpoints.  */
11644               struct type *vtype = check_typedef (value_type (v));
11645
11646               /* We only watch structs and arrays if user asked for it
11647                  explicitly, never if they just happen to appear in a
11648                  middle of some value chain.  */
11649               if (v == head
11650                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11651                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11652                 {
11653                   CORE_ADDR vaddr = value_address (v);
11654                   int len;
11655                   int num_regs;
11656
11657                   len = (target_exact_watchpoints
11658                          && is_scalar_type_recursive (vtype))?
11659                     1 : TYPE_LENGTH (value_type (v));
11660
11661                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11662                   if (!num_regs)
11663                     return 0;
11664                   else
11665                     found_memory_cnt += num_regs;
11666                 }
11667             }
11668         }
11669       else if (VALUE_LVAL (v) != not_lval
11670                && deprecated_value_modifiable (v) == 0)
11671         return 0;       /* These are values from the history (e.g., $1).  */
11672       else if (VALUE_LVAL (v) == lval_register)
11673         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11674     }
11675
11676   /* The expression itself looks suitable for using a hardware
11677      watchpoint, but give the target machine a chance to reject it.  */
11678   return found_memory_cnt;
11679 }
11680
11681 void
11682 watch_command_wrapper (char *arg, int from_tty, int internal)
11683 {
11684   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11685 }
11686
11687 /* A helper function that looks for the "-location" argument and then
11688    calls watch_command_1.  */
11689
11690 static void
11691 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11692 {
11693   int just_location = 0;
11694
11695   if (arg
11696       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11697           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11698     {
11699       arg = skip_spaces (arg);
11700       just_location = 1;
11701     }
11702
11703   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11704 }
11705
11706 static void
11707 watch_command (char *arg, int from_tty)
11708 {
11709   watch_maybe_just_location (arg, hw_write, from_tty);
11710 }
11711
11712 void
11713 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11714 {
11715   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11716 }
11717
11718 static void
11719 rwatch_command (char *arg, int from_tty)
11720 {
11721   watch_maybe_just_location (arg, hw_read, from_tty);
11722 }
11723
11724 void
11725 awatch_command_wrapper (char *arg, int from_tty, int internal)
11726 {
11727   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11728 }
11729
11730 static void
11731 awatch_command (char *arg, int from_tty)
11732 {
11733   watch_maybe_just_location (arg, hw_access, from_tty);
11734 }
11735 \f
11736
11737 /* Helper routines for the until_command routine in infcmd.c.  Here
11738    because it uses the mechanisms of breakpoints.  */
11739
11740 struct until_break_command_continuation_args
11741 {
11742   struct breakpoint *breakpoint;
11743   struct breakpoint *breakpoint2;
11744   int thread_num;
11745 };
11746
11747 /* This function is called by fetch_inferior_event via the
11748    cmd_continuation pointer, to complete the until command.  It takes
11749    care of cleaning up the temporary breakpoints set up by the until
11750    command.  */
11751 static void
11752 until_break_command_continuation (void *arg, int err)
11753 {
11754   struct until_break_command_continuation_args *a = arg;
11755
11756   delete_breakpoint (a->breakpoint);
11757   if (a->breakpoint2)
11758     delete_breakpoint (a->breakpoint2);
11759   delete_longjmp_breakpoint (a->thread_num);
11760 }
11761
11762 void
11763 until_break_command (char *arg, int from_tty, int anywhere)
11764 {
11765   struct symtabs_and_lines sals;
11766   struct symtab_and_line sal;
11767   struct frame_info *frame;
11768   struct gdbarch *frame_gdbarch;
11769   struct frame_id stack_frame_id;
11770   struct frame_id caller_frame_id;
11771   struct breakpoint *breakpoint;
11772   struct breakpoint *breakpoint2 = NULL;
11773   struct cleanup *old_chain;
11774   int thread;
11775   struct thread_info *tp;
11776
11777   clear_proceed_status (0);
11778
11779   /* Set a breakpoint where the user wants it and at return from
11780      this function.  */
11781
11782   if (last_displayed_sal_is_valid ())
11783     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11784                           get_last_displayed_symtab (),
11785                           get_last_displayed_line ());
11786   else
11787     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11788                           (struct symtab *) NULL, 0);
11789
11790   if (sals.nelts != 1)
11791     error (_("Couldn't get information on specified line."));
11792
11793   sal = sals.sals[0];
11794   xfree (sals.sals);    /* malloc'd, so freed.  */
11795
11796   if (*arg)
11797     error (_("Junk at end of arguments."));
11798
11799   resolve_sal_pc (&sal);
11800
11801   tp = inferior_thread ();
11802   thread = tp->num;
11803
11804   old_chain = make_cleanup (null_cleanup, NULL);
11805
11806   /* Note linespec handling above invalidates the frame chain.
11807      Installing a breakpoint also invalidates the frame chain (as it
11808      may need to switch threads), so do any frame handling before
11809      that.  */
11810
11811   frame = get_selected_frame (NULL);
11812   frame_gdbarch = get_frame_arch (frame);
11813   stack_frame_id = get_stack_frame_id (frame);
11814   caller_frame_id = frame_unwind_caller_id (frame);
11815
11816   /* Keep within the current frame, or in frames called by the current
11817      one.  */
11818
11819   if (frame_id_p (caller_frame_id))
11820     {
11821       struct symtab_and_line sal2;
11822
11823       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11824       sal2.pc = frame_unwind_caller_pc (frame);
11825       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11826                                               sal2,
11827                                               caller_frame_id,
11828                                               bp_until);
11829       make_cleanup_delete_breakpoint (breakpoint2);
11830
11831       set_longjmp_breakpoint (tp, caller_frame_id);
11832       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11833     }
11834
11835   /* set_momentary_breakpoint could invalidate FRAME.  */
11836   frame = NULL;
11837
11838   if (anywhere)
11839     /* If the user told us to continue until a specified location,
11840        we don't specify a frame at which we need to stop.  */
11841     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11842                                            null_frame_id, bp_until);
11843   else
11844     /* Otherwise, specify the selected frame, because we want to stop
11845        only at the very same frame.  */
11846     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11847                                            stack_frame_id, bp_until);
11848   make_cleanup_delete_breakpoint (breakpoint);
11849
11850   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11851
11852   /* If we are running asynchronously, and proceed call above has
11853      actually managed to start the target, arrange for breakpoints to
11854      be deleted when the target stops.  Otherwise, we're already
11855      stopped and delete breakpoints via cleanup chain.  */
11856
11857   if (target_can_async_p () && is_running (inferior_ptid))
11858     {
11859       struct until_break_command_continuation_args *args;
11860       args = xmalloc (sizeof (*args));
11861
11862       args->breakpoint = breakpoint;
11863       args->breakpoint2 = breakpoint2;
11864       args->thread_num = thread;
11865
11866       discard_cleanups (old_chain);
11867       add_continuation (inferior_thread (),
11868                         until_break_command_continuation, args,
11869                         xfree);
11870     }
11871   else
11872     do_cleanups (old_chain);
11873 }
11874
11875 /* This function attempts to parse an optional "if <cond>" clause
11876    from the arg string.  If one is not found, it returns NULL.
11877
11878    Else, it returns a pointer to the condition string.  (It does not
11879    attempt to evaluate the string against a particular block.)  And,
11880    it updates arg to point to the first character following the parsed
11881    if clause in the arg string.  */
11882
11883 char *
11884 ep_parse_optional_if_clause (char **arg)
11885 {
11886   char *cond_string;
11887
11888   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11889     return NULL;
11890
11891   /* Skip the "if" keyword.  */
11892   (*arg) += 2;
11893
11894   /* Skip any extra leading whitespace, and record the start of the
11895      condition string.  */
11896   *arg = skip_spaces (*arg);
11897   cond_string = *arg;
11898
11899   /* Assume that the condition occupies the remainder of the arg
11900      string.  */
11901   (*arg) += strlen (cond_string);
11902
11903   return cond_string;
11904 }
11905
11906 /* Commands to deal with catching events, such as signals, exceptions,
11907    process start/exit, etc.  */
11908
11909 typedef enum
11910 {
11911   catch_fork_temporary, catch_vfork_temporary,
11912   catch_fork_permanent, catch_vfork_permanent
11913 }
11914 catch_fork_kind;
11915
11916 static void
11917 catch_fork_command_1 (char *arg, int from_tty, 
11918                       struct cmd_list_element *command)
11919 {
11920   struct gdbarch *gdbarch = get_current_arch ();
11921   char *cond_string = NULL;
11922   catch_fork_kind fork_kind;
11923   int tempflag;
11924
11925   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11926   tempflag = (fork_kind == catch_fork_temporary
11927               || fork_kind == catch_vfork_temporary);
11928
11929   if (!arg)
11930     arg = "";
11931   arg = skip_spaces (arg);
11932
11933   /* The allowed syntax is:
11934      catch [v]fork
11935      catch [v]fork if <cond>
11936
11937      First, check if there's an if clause.  */
11938   cond_string = ep_parse_optional_if_clause (&arg);
11939
11940   if ((*arg != '\0') && !isspace (*arg))
11941     error (_("Junk at end of arguments."));
11942
11943   /* If this target supports it, create a fork or vfork catchpoint
11944      and enable reporting of such events.  */
11945   switch (fork_kind)
11946     {
11947     case catch_fork_temporary:
11948     case catch_fork_permanent:
11949       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11950                                           &catch_fork_breakpoint_ops);
11951       break;
11952     case catch_vfork_temporary:
11953     case catch_vfork_permanent:
11954       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11955                                           &catch_vfork_breakpoint_ops);
11956       break;
11957     default:
11958       error (_("unsupported or unknown fork kind; cannot catch it"));
11959       break;
11960     }
11961 }
11962
11963 static void
11964 catch_exec_command_1 (char *arg, int from_tty, 
11965                       struct cmd_list_element *command)
11966 {
11967   struct exec_catchpoint *c;
11968   struct gdbarch *gdbarch = get_current_arch ();
11969   int tempflag;
11970   char *cond_string = NULL;
11971
11972   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11973
11974   if (!arg)
11975     arg = "";
11976   arg = skip_spaces (arg);
11977
11978   /* The allowed syntax is:
11979      catch exec
11980      catch exec if <cond>
11981
11982      First, check if there's an if clause.  */
11983   cond_string = ep_parse_optional_if_clause (&arg);
11984
11985   if ((*arg != '\0') && !isspace (*arg))
11986     error (_("Junk at end of arguments."));
11987
11988   c = XNEW (struct exec_catchpoint);
11989   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11990                    &catch_exec_breakpoint_ops);
11991   c->exec_pathname = NULL;
11992
11993   install_breakpoint (0, &c->base, 1);
11994 }
11995
11996 void
11997 init_ada_exception_breakpoint (struct breakpoint *b,
11998                                struct gdbarch *gdbarch,
11999                                struct symtab_and_line sal,
12000                                char *addr_string,
12001                                const struct breakpoint_ops *ops,
12002                                int tempflag,
12003                                int enabled,
12004                                int from_tty)
12005 {
12006   if (from_tty)
12007     {
12008       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
12009       if (!loc_gdbarch)
12010         loc_gdbarch = gdbarch;
12011
12012       describe_other_breakpoints (loc_gdbarch,
12013                                   sal.pspace, sal.pc, sal.section, -1);
12014       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
12015          version for exception catchpoints, because two catchpoints
12016          used for different exception names will use the same address.
12017          In this case, a "breakpoint ... also set at..." warning is
12018          unproductive.  Besides, the warning phrasing is also a bit
12019          inappropriate, we should use the word catchpoint, and tell
12020          the user what type of catchpoint it is.  The above is good
12021          enough for now, though.  */
12022     }
12023
12024   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
12025
12026   b->enable_state = enabled ? bp_enabled : bp_disabled;
12027   b->disposition = tempflag ? disp_del : disp_donttouch;
12028   b->addr_string = addr_string;
12029   b->language = language_ada;
12030 }
12031
12032 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
12033    filter list, or NULL if no filtering is required.  */
12034 static VEC(int) *
12035 catch_syscall_split_args (char *arg)
12036 {
12037   VEC(int) *result = NULL;
12038   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
12039
12040   while (*arg != '\0')
12041     {
12042       int i, syscall_number;
12043       char *endptr;
12044       char cur_name[128];
12045       struct syscall s;
12046
12047       /* Skip whitespace.  */
12048       arg = skip_spaces (arg);
12049
12050       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
12051         cur_name[i] = arg[i];
12052       cur_name[i] = '\0';
12053       arg += i;
12054
12055       /* Check if the user provided a syscall name or a number.  */
12056       syscall_number = (int) strtol (cur_name, &endptr, 0);
12057       if (*endptr == '\0')
12058         get_syscall_by_number (syscall_number, &s);
12059       else
12060         {
12061           /* We have a name.  Let's check if it's valid and convert it
12062              to a number.  */
12063           get_syscall_by_name (cur_name, &s);
12064
12065           if (s.number == UNKNOWN_SYSCALL)
12066             /* Here we have to issue an error instead of a warning,
12067                because GDB cannot do anything useful if there's no
12068                syscall number to be caught.  */
12069             error (_("Unknown syscall name '%s'."), cur_name);
12070         }
12071
12072       /* Ok, it's valid.  */
12073       VEC_safe_push (int, result, s.number);
12074     }
12075
12076   discard_cleanups (cleanup);
12077   return result;
12078 }
12079
12080 /* Implement the "catch syscall" command.  */
12081
12082 static void
12083 catch_syscall_command_1 (char *arg, int from_tty, 
12084                          struct cmd_list_element *command)
12085 {
12086   int tempflag;
12087   VEC(int) *filter;
12088   struct syscall s;
12089   struct gdbarch *gdbarch = get_current_arch ();
12090
12091   /* Checking if the feature if supported.  */
12092   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
12093     error (_("The feature 'catch syscall' is not supported on \
12094 this architecture yet."));
12095
12096   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12097
12098   arg = skip_spaces (arg);
12099
12100   /* We need to do this first "dummy" translation in order
12101      to get the syscall XML file loaded or, most important,
12102      to display a warning to the user if there's no XML file
12103      for his/her architecture.  */
12104   get_syscall_by_number (0, &s);
12105
12106   /* The allowed syntax is:
12107      catch syscall
12108      catch syscall <name | number> [<name | number> ... <name | number>]
12109
12110      Let's check if there's a syscall name.  */
12111
12112   if (arg != NULL)
12113     filter = catch_syscall_split_args (arg);
12114   else
12115     filter = NULL;
12116
12117   create_syscall_event_catchpoint (tempflag, filter,
12118                                    &catch_syscall_breakpoint_ops);
12119 }
12120
12121 static void
12122 catch_command (char *arg, int from_tty)
12123 {
12124   error (_("Catch requires an event name."));
12125 }
12126 \f
12127
12128 static void
12129 tcatch_command (char *arg, int from_tty)
12130 {
12131   error (_("Catch requires an event name."));
12132 }
12133
12134 /* A qsort comparison function that sorts breakpoints in order.  */
12135
12136 static int
12137 compare_breakpoints (const void *a, const void *b)
12138 {
12139   const breakpoint_p *ba = a;
12140   uintptr_t ua = (uintptr_t) *ba;
12141   const breakpoint_p *bb = b;
12142   uintptr_t ub = (uintptr_t) *bb;
12143
12144   if ((*ba)->number < (*bb)->number)
12145     return -1;
12146   else if ((*ba)->number > (*bb)->number)
12147     return 1;
12148
12149   /* Now sort by address, in case we see, e..g, two breakpoints with
12150      the number 0.  */
12151   if (ua < ub)
12152     return -1;
12153   return ua > ub ? 1 : 0;
12154 }
12155
12156 /* Delete breakpoints by address or line.  */
12157
12158 static void
12159 clear_command (char *arg, int from_tty)
12160 {
12161   struct breakpoint *b, *prev;
12162   VEC(breakpoint_p) *found = 0;
12163   int ix;
12164   int default_match;
12165   struct symtabs_and_lines sals;
12166   struct symtab_and_line sal;
12167   int i;
12168   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
12169
12170   if (arg)
12171     {
12172       sals = decode_line_with_current_source (arg,
12173                                               (DECODE_LINE_FUNFIRSTLINE
12174                                                | DECODE_LINE_LIST_MODE));
12175       make_cleanup (xfree, sals.sals);
12176       default_match = 0;
12177     }
12178   else
12179     {
12180       sals.sals = (struct symtab_and_line *)
12181         xmalloc (sizeof (struct symtab_and_line));
12182       make_cleanup (xfree, sals.sals);
12183       init_sal (&sal);          /* Initialize to zeroes.  */
12184
12185       /* Set sal's line, symtab, pc, and pspace to the values
12186          corresponding to the last call to print_frame_info.  If the
12187          codepoint is not valid, this will set all the fields to 0.  */
12188       get_last_displayed_sal (&sal);
12189       if (sal.symtab == 0)
12190         error (_("No source file specified."));
12191
12192       sals.sals[0] = sal;
12193       sals.nelts = 1;
12194
12195       default_match = 1;
12196     }
12197
12198   /* We don't call resolve_sal_pc here.  That's not as bad as it
12199      seems, because all existing breakpoints typically have both
12200      file/line and pc set.  So, if clear is given file/line, we can
12201      match this to existing breakpoint without obtaining pc at all.
12202
12203      We only support clearing given the address explicitly 
12204      present in breakpoint table.  Say, we've set breakpoint 
12205      at file:line.  There were several PC values for that file:line,
12206      due to optimization, all in one block.
12207
12208      We've picked one PC value.  If "clear" is issued with another
12209      PC corresponding to the same file:line, the breakpoint won't
12210      be cleared.  We probably can still clear the breakpoint, but 
12211      since the other PC value is never presented to user, user
12212      can only find it by guessing, and it does not seem important
12213      to support that.  */
12214
12215   /* For each line spec given, delete bps which correspond to it.  Do
12216      it in two passes, solely to preserve the current behavior that
12217      from_tty is forced true if we delete more than one
12218      breakpoint.  */
12219
12220   found = NULL;
12221   make_cleanup (VEC_cleanup (breakpoint_p), &found);
12222   for (i = 0; i < sals.nelts; i++)
12223     {
12224       const char *sal_fullname;
12225
12226       /* If exact pc given, clear bpts at that pc.
12227          If line given (pc == 0), clear all bpts on specified line.
12228          If defaulting, clear all bpts on default line
12229          or at default pc.
12230
12231          defaulting    sal.pc != 0    tests to do
12232
12233          0              1             pc
12234          1              1             pc _and_ line
12235          0              0             line
12236          1              0             <can't happen> */
12237
12238       sal = sals.sals[i];
12239       sal_fullname = (sal.symtab == NULL
12240                       ? NULL : symtab_to_fullname (sal.symtab));
12241
12242       /* Find all matching breakpoints and add them to 'found'.  */
12243       ALL_BREAKPOINTS (b)
12244         {
12245           int match = 0;
12246           /* Are we going to delete b?  */
12247           if (b->type != bp_none && !is_watchpoint (b))
12248             {
12249               struct bp_location *loc = b->loc;
12250               for (; loc; loc = loc->next)
12251                 {
12252                   /* If the user specified file:line, don't allow a PC
12253                      match.  This matches historical gdb behavior.  */
12254                   int pc_match = (!sal.explicit_line
12255                                   && sal.pc
12256                                   && (loc->pspace == sal.pspace)
12257                                   && (loc->address == sal.pc)
12258                                   && (!section_is_overlay (loc->section)
12259                                       || loc->section == sal.section));
12260                   int line_match = 0;
12261
12262                   if ((default_match || sal.explicit_line)
12263                       && loc->symtab != NULL
12264                       && sal_fullname != NULL
12265                       && sal.pspace == loc->pspace
12266                       && loc->line_number == sal.line
12267                       && filename_cmp (symtab_to_fullname (loc->symtab),
12268                                        sal_fullname) == 0)
12269                     line_match = 1;
12270
12271                   if (pc_match || line_match)
12272                     {
12273                       match = 1;
12274                       break;
12275                     }
12276                 }
12277             }
12278
12279           if (match)
12280             VEC_safe_push(breakpoint_p, found, b);
12281         }
12282     }
12283
12284   /* Now go thru the 'found' chain and delete them.  */
12285   if (VEC_empty(breakpoint_p, found))
12286     {
12287       if (arg)
12288         error (_("No breakpoint at %s."), arg);
12289       else
12290         error (_("No breakpoint at this line."));
12291     }
12292
12293   /* Remove duplicates from the vec.  */
12294   qsort (VEC_address (breakpoint_p, found),
12295          VEC_length (breakpoint_p, found),
12296          sizeof (breakpoint_p),
12297          compare_breakpoints);
12298   prev = VEC_index (breakpoint_p, found, 0);
12299   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12300     {
12301       if (b == prev)
12302         {
12303           VEC_ordered_remove (breakpoint_p, found, ix);
12304           --ix;
12305         }
12306     }
12307
12308   if (VEC_length(breakpoint_p, found) > 1)
12309     from_tty = 1;       /* Always report if deleted more than one.  */
12310   if (from_tty)
12311     {
12312       if (VEC_length(breakpoint_p, found) == 1)
12313         printf_unfiltered (_("Deleted breakpoint "));
12314       else
12315         printf_unfiltered (_("Deleted breakpoints "));
12316     }
12317
12318   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12319     {
12320       if (from_tty)
12321         printf_unfiltered ("%d ", b->number);
12322       delete_breakpoint (b);
12323     }
12324   if (from_tty)
12325     putchar_unfiltered ('\n');
12326
12327   do_cleanups (cleanups);
12328 }
12329 \f
12330 /* Delete breakpoint in BS if they are `delete' breakpoints and
12331    all breakpoints that are marked for deletion, whether hit or not.
12332    This is called after any breakpoint is hit, or after errors.  */
12333
12334 void
12335 breakpoint_auto_delete (bpstat bs)
12336 {
12337   struct breakpoint *b, *b_tmp;
12338
12339   for (; bs; bs = bs->next)
12340     if (bs->breakpoint_at
12341         && bs->breakpoint_at->disposition == disp_del
12342         && bs->stop)
12343       delete_breakpoint (bs->breakpoint_at);
12344
12345   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12346   {
12347     if (b->disposition == disp_del_at_next_stop)
12348       delete_breakpoint (b);
12349   }
12350 }
12351
12352 /* A comparison function for bp_location AP and BP being interfaced to
12353    qsort.  Sort elements primarily by their ADDRESS (no matter what
12354    does breakpoint_address_is_meaningful say for its OWNER),
12355    secondarily by ordering first permanent elements and
12356    terciarily just ensuring the array is sorted stable way despite
12357    qsort being an unstable algorithm.  */
12358
12359 static int
12360 bp_location_compare (const void *ap, const void *bp)
12361 {
12362   struct bp_location *a = *(void **) ap;
12363   struct bp_location *b = *(void **) bp;
12364
12365   if (a->address != b->address)
12366     return (a->address > b->address) - (a->address < b->address);
12367
12368   /* Sort locations at the same address by their pspace number, keeping
12369      locations of the same inferior (in a multi-inferior environment)
12370      grouped.  */
12371
12372   if (a->pspace->num != b->pspace->num)
12373     return ((a->pspace->num > b->pspace->num)
12374             - (a->pspace->num < b->pspace->num));
12375
12376   /* Sort permanent breakpoints first.  */
12377   if (a->permanent != b->permanent)
12378     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
12379
12380   /* Make the internal GDB representation stable across GDB runs
12381      where A and B memory inside GDB can differ.  Breakpoint locations of
12382      the same type at the same address can be sorted in arbitrary order.  */
12383
12384   if (a->owner->number != b->owner->number)
12385     return ((a->owner->number > b->owner->number)
12386             - (a->owner->number < b->owner->number));
12387
12388   return (a > b) - (a < b);
12389 }
12390
12391 /* Set bp_location_placed_address_before_address_max and
12392    bp_location_shadow_len_after_address_max according to the current
12393    content of the bp_location array.  */
12394
12395 static void
12396 bp_location_target_extensions_update (void)
12397 {
12398   struct bp_location *bl, **blp_tmp;
12399
12400   bp_location_placed_address_before_address_max = 0;
12401   bp_location_shadow_len_after_address_max = 0;
12402
12403   ALL_BP_LOCATIONS (bl, blp_tmp)
12404     {
12405       CORE_ADDR start, end, addr;
12406
12407       if (!bp_location_has_shadow (bl))
12408         continue;
12409
12410       start = bl->target_info.placed_address;
12411       end = start + bl->target_info.shadow_len;
12412
12413       gdb_assert (bl->address >= start);
12414       addr = bl->address - start;
12415       if (addr > bp_location_placed_address_before_address_max)
12416         bp_location_placed_address_before_address_max = addr;
12417
12418       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12419
12420       gdb_assert (bl->address < end);
12421       addr = end - bl->address;
12422       if (addr > bp_location_shadow_len_after_address_max)
12423         bp_location_shadow_len_after_address_max = addr;
12424     }
12425 }
12426
12427 /* Download tracepoint locations if they haven't been.  */
12428
12429 static void
12430 download_tracepoint_locations (void)
12431 {
12432   struct breakpoint *b;
12433   struct cleanup *old_chain;
12434
12435   if (!target_can_download_tracepoint ())
12436     return;
12437
12438   old_chain = save_current_space_and_thread ();
12439
12440   ALL_TRACEPOINTS (b)
12441     {
12442       struct bp_location *bl;
12443       struct tracepoint *t;
12444       int bp_location_downloaded = 0;
12445
12446       if ((b->type == bp_fast_tracepoint
12447            ? !may_insert_fast_tracepoints
12448            : !may_insert_tracepoints))
12449         continue;
12450
12451       for (bl = b->loc; bl; bl = bl->next)
12452         {
12453           /* In tracepoint, locations are _never_ duplicated, so
12454              should_be_inserted is equivalent to
12455              unduplicated_should_be_inserted.  */
12456           if (!should_be_inserted (bl) || bl->inserted)
12457             continue;
12458
12459           switch_to_program_space_and_thread (bl->pspace);
12460
12461           target_download_tracepoint (bl);
12462
12463           bl->inserted = 1;
12464           bp_location_downloaded = 1;
12465         }
12466       t = (struct tracepoint *) b;
12467       t->number_on_target = b->number;
12468       if (bp_location_downloaded)
12469         observer_notify_breakpoint_modified (b);
12470     }
12471
12472   do_cleanups (old_chain);
12473 }
12474
12475 /* Swap the insertion/duplication state between two locations.  */
12476
12477 static void
12478 swap_insertion (struct bp_location *left, struct bp_location *right)
12479 {
12480   const int left_inserted = left->inserted;
12481   const int left_duplicate = left->duplicate;
12482   const int left_needs_update = left->needs_update;
12483   const struct bp_target_info left_target_info = left->target_info;
12484
12485   /* Locations of tracepoints can never be duplicated.  */
12486   if (is_tracepoint (left->owner))
12487     gdb_assert (!left->duplicate);
12488   if (is_tracepoint (right->owner))
12489     gdb_assert (!right->duplicate);
12490
12491   left->inserted = right->inserted;
12492   left->duplicate = right->duplicate;
12493   left->needs_update = right->needs_update;
12494   left->target_info = right->target_info;
12495   right->inserted = left_inserted;
12496   right->duplicate = left_duplicate;
12497   right->needs_update = left_needs_update;
12498   right->target_info = left_target_info;
12499 }
12500
12501 /* Force the re-insertion of the locations at ADDRESS.  This is called
12502    once a new/deleted/modified duplicate location is found and we are evaluating
12503    conditions on the target's side.  Such conditions need to be updated on
12504    the target.  */
12505
12506 static void
12507 force_breakpoint_reinsertion (struct bp_location *bl)
12508 {
12509   struct bp_location **locp = NULL, **loc2p;
12510   struct bp_location *loc;
12511   CORE_ADDR address = 0;
12512   int pspace_num;
12513
12514   address = bl->address;
12515   pspace_num = bl->pspace->num;
12516
12517   /* This is only meaningful if the target is
12518      evaluating conditions and if the user has
12519      opted for condition evaluation on the target's
12520      side.  */
12521   if (gdb_evaluates_breakpoint_condition_p ()
12522       || !target_supports_evaluation_of_breakpoint_conditions ())
12523     return;
12524
12525   /* Flag all breakpoint locations with this address and
12526      the same program space as the location
12527      as "its condition has changed".  We need to
12528      update the conditions on the target's side.  */
12529   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12530     {
12531       loc = *loc2p;
12532
12533       if (!is_breakpoint (loc->owner)
12534           || pspace_num != loc->pspace->num)
12535         continue;
12536
12537       /* Flag the location appropriately.  We use a different state to
12538          let everyone know that we already updated the set of locations
12539          with addr bl->address and program space bl->pspace.  This is so
12540          we don't have to keep calling these functions just to mark locations
12541          that have already been marked.  */
12542       loc->condition_changed = condition_updated;
12543
12544       /* Free the agent expression bytecode as well.  We will compute
12545          it later on.  */
12546       if (loc->cond_bytecode)
12547         {
12548           free_agent_expr (loc->cond_bytecode);
12549           loc->cond_bytecode = NULL;
12550         }
12551     }
12552 }
12553 /* Called whether new breakpoints are created, or existing breakpoints
12554    deleted, to update the global location list and recompute which
12555    locations are duplicate of which.
12556
12557    The INSERT_MODE flag determines whether locations may not, may, or
12558    shall be inserted now.  See 'enum ugll_insert_mode' for more
12559    info.  */
12560
12561 static void
12562 update_global_location_list (enum ugll_insert_mode insert_mode)
12563 {
12564   struct breakpoint *b;
12565   struct bp_location **locp, *loc;
12566   struct cleanup *cleanups;
12567   /* Last breakpoint location address that was marked for update.  */
12568   CORE_ADDR last_addr = 0;
12569   /* Last breakpoint location program space that was marked for update.  */
12570   int last_pspace_num = -1;
12571
12572   /* Used in the duplicates detection below.  When iterating over all
12573      bp_locations, points to the first bp_location of a given address.
12574      Breakpoints and watchpoints of different types are never
12575      duplicates of each other.  Keep one pointer for each type of
12576      breakpoint/watchpoint, so we only need to loop over all locations
12577      once.  */
12578   struct bp_location *bp_loc_first;  /* breakpoint */
12579   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12580   struct bp_location *awp_loc_first; /* access watchpoint */
12581   struct bp_location *rwp_loc_first; /* read watchpoint */
12582
12583   /* Saved former bp_location array which we compare against the newly
12584      built bp_location from the current state of ALL_BREAKPOINTS.  */
12585   struct bp_location **old_location, **old_locp;
12586   unsigned old_location_count;
12587
12588   old_location = bp_location;
12589   old_location_count = bp_location_count;
12590   bp_location = NULL;
12591   bp_location_count = 0;
12592   cleanups = make_cleanup (xfree, old_location);
12593
12594   ALL_BREAKPOINTS (b)
12595     for (loc = b->loc; loc; loc = loc->next)
12596       bp_location_count++;
12597
12598   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12599   locp = bp_location;
12600   ALL_BREAKPOINTS (b)
12601     for (loc = b->loc; loc; loc = loc->next)
12602       *locp++ = loc;
12603   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12604          bp_location_compare);
12605
12606   bp_location_target_extensions_update ();
12607
12608   /* Identify bp_location instances that are no longer present in the
12609      new list, and therefore should be freed.  Note that it's not
12610      necessary that those locations should be removed from inferior --
12611      if there's another location at the same address (previously
12612      marked as duplicate), we don't need to remove/insert the
12613      location.
12614      
12615      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12616      and former bp_location array state respectively.  */
12617
12618   locp = bp_location;
12619   for (old_locp = old_location; old_locp < old_location + old_location_count;
12620        old_locp++)
12621     {
12622       struct bp_location *old_loc = *old_locp;
12623       struct bp_location **loc2p;
12624
12625       /* Tells if 'old_loc' is found among the new locations.  If
12626          not, we have to free it.  */
12627       int found_object = 0;
12628       /* Tells if the location should remain inserted in the target.  */
12629       int keep_in_target = 0;
12630       int removed = 0;
12631
12632       /* Skip LOCP entries which will definitely never be needed.
12633          Stop either at or being the one matching OLD_LOC.  */
12634       while (locp < bp_location + bp_location_count
12635              && (*locp)->address < old_loc->address)
12636         locp++;
12637
12638       for (loc2p = locp;
12639            (loc2p < bp_location + bp_location_count
12640             && (*loc2p)->address == old_loc->address);
12641            loc2p++)
12642         {
12643           /* Check if this is a new/duplicated location or a duplicated
12644              location that had its condition modified.  If so, we want to send
12645              its condition to the target if evaluation of conditions is taking
12646              place there.  */
12647           if ((*loc2p)->condition_changed == condition_modified
12648               && (last_addr != old_loc->address
12649                   || last_pspace_num != old_loc->pspace->num))
12650             {
12651               force_breakpoint_reinsertion (*loc2p);
12652               last_pspace_num = old_loc->pspace->num;
12653             }
12654
12655           if (*loc2p == old_loc)
12656             found_object = 1;
12657         }
12658
12659       /* We have already handled this address, update it so that we don't
12660          have to go through updates again.  */
12661       last_addr = old_loc->address;
12662
12663       /* Target-side condition evaluation: Handle deleted locations.  */
12664       if (!found_object)
12665         force_breakpoint_reinsertion (old_loc);
12666
12667       /* If this location is no longer present, and inserted, look if
12668          there's maybe a new location at the same address.  If so,
12669          mark that one inserted, and don't remove this one.  This is
12670          needed so that we don't have a time window where a breakpoint
12671          at certain location is not inserted.  */
12672
12673       if (old_loc->inserted)
12674         {
12675           /* If the location is inserted now, we might have to remove
12676              it.  */
12677
12678           if (found_object && should_be_inserted (old_loc))
12679             {
12680               /* The location is still present in the location list,
12681                  and still should be inserted.  Don't do anything.  */
12682               keep_in_target = 1;
12683             }
12684           else
12685             {
12686               /* This location still exists, but it won't be kept in the
12687                  target since it may have been disabled.  We proceed to
12688                  remove its target-side condition.  */
12689
12690               /* The location is either no longer present, or got
12691                  disabled.  See if there's another location at the
12692                  same address, in which case we don't need to remove
12693                  this one from the target.  */
12694
12695               /* OLD_LOC comes from existing struct breakpoint.  */
12696               if (breakpoint_address_is_meaningful (old_loc->owner))
12697                 {
12698                   for (loc2p = locp;
12699                        (loc2p < bp_location + bp_location_count
12700                         && (*loc2p)->address == old_loc->address);
12701                        loc2p++)
12702                     {
12703                       struct bp_location *loc2 = *loc2p;
12704
12705                       if (breakpoint_locations_match (loc2, old_loc))
12706                         {
12707                           /* Read watchpoint locations are switched to
12708                              access watchpoints, if the former are not
12709                              supported, but the latter are.  */
12710                           if (is_hardware_watchpoint (old_loc->owner))
12711                             {
12712                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12713                               loc2->watchpoint_type = old_loc->watchpoint_type;
12714                             }
12715
12716                           /* loc2 is a duplicated location. We need to check
12717                              if it should be inserted in case it will be
12718                              unduplicated.  */
12719                           if (loc2 != old_loc
12720                               && unduplicated_should_be_inserted (loc2))
12721                             {
12722                               swap_insertion (old_loc, loc2);
12723                               keep_in_target = 1;
12724                               break;
12725                             }
12726                         }
12727                     }
12728                 }
12729             }
12730
12731           if (!keep_in_target)
12732             {
12733               if (remove_breakpoint (old_loc, mark_uninserted))
12734                 {
12735                   /* This is just about all we can do.  We could keep
12736                      this location on the global list, and try to
12737                      remove it next time, but there's no particular
12738                      reason why we will succeed next time.
12739                      
12740                      Note that at this point, old_loc->owner is still
12741                      valid, as delete_breakpoint frees the breakpoint
12742                      only after calling us.  */
12743                   printf_filtered (_("warning: Error removing "
12744                                      "breakpoint %d\n"), 
12745                                    old_loc->owner->number);
12746                 }
12747               removed = 1;
12748             }
12749         }
12750
12751       if (!found_object)
12752         {
12753           if (removed && non_stop
12754               && breakpoint_address_is_meaningful (old_loc->owner)
12755               && !is_hardware_watchpoint (old_loc->owner))
12756             {
12757               /* This location was removed from the target.  In
12758                  non-stop mode, a race condition is possible where
12759                  we've removed a breakpoint, but stop events for that
12760                  breakpoint are already queued and will arrive later.
12761                  We apply an heuristic to be able to distinguish such
12762                  SIGTRAPs from other random SIGTRAPs: we keep this
12763                  breakpoint location for a bit, and will retire it
12764                  after we see some number of events.  The theory here
12765                  is that reporting of events should, "on the average",
12766                  be fair, so after a while we'll see events from all
12767                  threads that have anything of interest, and no longer
12768                  need to keep this breakpoint location around.  We
12769                  don't hold locations forever so to reduce chances of
12770                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12771                  SIGTRAP.
12772
12773                  The heuristic failing can be disastrous on
12774                  decr_pc_after_break targets.
12775
12776                  On decr_pc_after_break targets, like e.g., x86-linux,
12777                  if we fail to recognize a late breakpoint SIGTRAP,
12778                  because events_till_retirement has reached 0 too
12779                  soon, we'll fail to do the PC adjustment, and report
12780                  a random SIGTRAP to the user.  When the user resumes
12781                  the inferior, it will most likely immediately crash
12782                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12783                  corrupted, because of being resumed e.g., in the
12784                  middle of a multi-byte instruction, or skipped a
12785                  one-byte instruction.  This was actually seen happen
12786                  on native x86-linux, and should be less rare on
12787                  targets that do not support new thread events, like
12788                  remote, due to the heuristic depending on
12789                  thread_count.
12790
12791                  Mistaking a random SIGTRAP for a breakpoint trap
12792                  causes similar symptoms (PC adjustment applied when
12793                  it shouldn't), but then again, playing with SIGTRAPs
12794                  behind the debugger's back is asking for trouble.
12795
12796                  Since hardware watchpoint traps are always
12797                  distinguishable from other traps, so we don't need to
12798                  apply keep hardware watchpoint moribund locations
12799                  around.  We simply always ignore hardware watchpoint
12800                  traps we can no longer explain.  */
12801
12802               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12803               old_loc->owner = NULL;
12804
12805               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12806             }
12807           else
12808             {
12809               old_loc->owner = NULL;
12810               decref_bp_location (&old_loc);
12811             }
12812         }
12813     }
12814
12815   /* Rescan breakpoints at the same address and section, marking the
12816      first one as "first" and any others as "duplicates".  This is so
12817      that the bpt instruction is only inserted once.  If we have a
12818      permanent breakpoint at the same place as BPT, make that one the
12819      official one, and the rest as duplicates.  Permanent breakpoints
12820      are sorted first for the same address.
12821
12822      Do the same for hardware watchpoints, but also considering the
12823      watchpoint's type (regular/access/read) and length.  */
12824
12825   bp_loc_first = NULL;
12826   wp_loc_first = NULL;
12827   awp_loc_first = NULL;
12828   rwp_loc_first = NULL;
12829   ALL_BP_LOCATIONS (loc, locp)
12830     {
12831       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12832          non-NULL.  */
12833       struct bp_location **loc_first_p;
12834       b = loc->owner;
12835
12836       if (!unduplicated_should_be_inserted (loc)
12837           || !breakpoint_address_is_meaningful (b)
12838           /* Don't detect duplicate for tracepoint locations because they are
12839            never duplicated.  See the comments in field `duplicate' of
12840            `struct bp_location'.  */
12841           || is_tracepoint (b))
12842         {
12843           /* Clear the condition modification flag.  */
12844           loc->condition_changed = condition_unchanged;
12845           continue;
12846         }
12847
12848       /* Permanent breakpoint should always be inserted.  */
12849       if (loc->permanent && ! loc->inserted)
12850         internal_error (__FILE__, __LINE__,
12851                         _("allegedly permanent breakpoint is not "
12852                         "actually inserted"));
12853
12854       if (b->type == bp_hardware_watchpoint)
12855         loc_first_p = &wp_loc_first;
12856       else if (b->type == bp_read_watchpoint)
12857         loc_first_p = &rwp_loc_first;
12858       else if (b->type == bp_access_watchpoint)
12859         loc_first_p = &awp_loc_first;
12860       else
12861         loc_first_p = &bp_loc_first;
12862
12863       if (*loc_first_p == NULL
12864           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12865           || !breakpoint_locations_match (loc, *loc_first_p))
12866         {
12867           *loc_first_p = loc;
12868           loc->duplicate = 0;
12869
12870           if (is_breakpoint (loc->owner) && loc->condition_changed)
12871             {
12872               loc->needs_update = 1;
12873               /* Clear the condition modification flag.  */
12874               loc->condition_changed = condition_unchanged;
12875             }
12876           continue;
12877         }
12878
12879
12880       /* This and the above ensure the invariant that the first location
12881          is not duplicated, and is the inserted one.
12882          All following are marked as duplicated, and are not inserted.  */
12883       if (loc->inserted)
12884         swap_insertion (loc, *loc_first_p);
12885       loc->duplicate = 1;
12886
12887       /* Clear the condition modification flag.  */
12888       loc->condition_changed = condition_unchanged;
12889
12890       if (loc->inserted && !loc->permanent
12891           && (*loc_first_p)->permanent)
12892         internal_error (__FILE__, __LINE__,
12893                         _("another breakpoint was inserted on top of "
12894                         "a permanent breakpoint"));
12895     }
12896
12897   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12898     {
12899       if (insert_mode != UGLL_DONT_INSERT)
12900         insert_breakpoint_locations ();
12901       else
12902         {
12903           /* Even though the caller told us to not insert new
12904              locations, we may still need to update conditions on the
12905              target's side of breakpoints that were already inserted
12906              if the target is evaluating breakpoint conditions.  We
12907              only update conditions for locations that are marked
12908              "needs_update".  */
12909           update_inserted_breakpoint_locations ();
12910         }
12911     }
12912
12913   if (insert_mode != UGLL_DONT_INSERT)
12914     download_tracepoint_locations ();
12915
12916   do_cleanups (cleanups);
12917 }
12918
12919 void
12920 breakpoint_retire_moribund (void)
12921 {
12922   struct bp_location *loc;
12923   int ix;
12924
12925   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12926     if (--(loc->events_till_retirement) == 0)
12927       {
12928         decref_bp_location (&loc);
12929         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12930         --ix;
12931       }
12932 }
12933
12934 static void
12935 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12936 {
12937   volatile struct gdb_exception e;
12938
12939   TRY_CATCH (e, RETURN_MASK_ERROR)
12940     update_global_location_list (insert_mode);
12941 }
12942
12943 /* Clear BKP from a BPS.  */
12944
12945 static void
12946 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12947 {
12948   bpstat bs;
12949
12950   for (bs = bps; bs; bs = bs->next)
12951     if (bs->breakpoint_at == bpt)
12952       {
12953         bs->breakpoint_at = NULL;
12954         bs->old_val = NULL;
12955         /* bs->commands will be freed later.  */
12956       }
12957 }
12958
12959 /* Callback for iterate_over_threads.  */
12960 static int
12961 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12962 {
12963   struct breakpoint *bpt = data;
12964
12965   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12966   return 0;
12967 }
12968
12969 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12970    callbacks.  */
12971
12972 static void
12973 say_where (struct breakpoint *b)
12974 {
12975   struct value_print_options opts;
12976
12977   get_user_print_options (&opts);
12978
12979   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12980      single string.  */
12981   if (b->loc == NULL)
12982     {
12983       printf_filtered (_(" (%s) pending."), b->addr_string);
12984     }
12985   else
12986     {
12987       if (opts.addressprint || b->loc->symtab == NULL)
12988         {
12989           printf_filtered (" at ");
12990           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12991                           gdb_stdout);
12992         }
12993       if (b->loc->symtab != NULL)
12994         {
12995           /* If there is a single location, we can print the location
12996              more nicely.  */
12997           if (b->loc->next == NULL)
12998             printf_filtered (": file %s, line %d.",
12999                              symtab_to_filename_for_display (b->loc->symtab),
13000                              b->loc->line_number);
13001           else
13002             /* This is not ideal, but each location may have a
13003                different file name, and this at least reflects the
13004                real situation somewhat.  */
13005             printf_filtered (": %s.", b->addr_string);
13006         }
13007
13008       if (b->loc->next)
13009         {
13010           struct bp_location *loc = b->loc;
13011           int n = 0;
13012           for (; loc; loc = loc->next)
13013             ++n;
13014           printf_filtered (" (%d locations)", n);
13015         }
13016     }
13017 }
13018
13019 /* Default bp_location_ops methods.  */
13020
13021 static void
13022 bp_location_dtor (struct bp_location *self)
13023 {
13024   xfree (self->cond);
13025   if (self->cond_bytecode)
13026     free_agent_expr (self->cond_bytecode);
13027   xfree (self->function_name);
13028
13029   VEC_free (agent_expr_p, self->target_info.conditions);
13030   VEC_free (agent_expr_p, self->target_info.tcommands);
13031 }
13032
13033 static const struct bp_location_ops bp_location_ops =
13034 {
13035   bp_location_dtor
13036 };
13037
13038 /* Default breakpoint_ops methods all breakpoint_ops ultimately
13039    inherit from.  */
13040
13041 static void
13042 base_breakpoint_dtor (struct breakpoint *self)
13043 {
13044   decref_counted_command_line (&self->commands);
13045   xfree (self->cond_string);
13046   xfree (self->extra_string);
13047   xfree (self->addr_string);
13048   xfree (self->filter);
13049   xfree (self->addr_string_range_end);
13050 }
13051
13052 static struct bp_location *
13053 base_breakpoint_allocate_location (struct breakpoint *self)
13054 {
13055   struct bp_location *loc;
13056
13057   loc = XNEW (struct bp_location);
13058   init_bp_location (loc, &bp_location_ops, self);
13059   return loc;
13060 }
13061
13062 static void
13063 base_breakpoint_re_set (struct breakpoint *b)
13064 {
13065   /* Nothing to re-set. */
13066 }
13067
13068 #define internal_error_pure_virtual_called() \
13069   gdb_assert_not_reached ("pure virtual function called")
13070
13071 static int
13072 base_breakpoint_insert_location (struct bp_location *bl)
13073 {
13074   internal_error_pure_virtual_called ();
13075 }
13076
13077 static int
13078 base_breakpoint_remove_location (struct bp_location *bl)
13079 {
13080   internal_error_pure_virtual_called ();
13081 }
13082
13083 static int
13084 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
13085                                 struct address_space *aspace,
13086                                 CORE_ADDR bp_addr,
13087                                 const struct target_waitstatus *ws)
13088 {
13089   internal_error_pure_virtual_called ();
13090 }
13091
13092 static void
13093 base_breakpoint_check_status (bpstat bs)
13094 {
13095   /* Always stop.   */
13096 }
13097
13098 /* A "works_in_software_mode" breakpoint_ops method that just internal
13099    errors.  */
13100
13101 static int
13102 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
13103 {
13104   internal_error_pure_virtual_called ();
13105 }
13106
13107 /* A "resources_needed" breakpoint_ops method that just internal
13108    errors.  */
13109
13110 static int
13111 base_breakpoint_resources_needed (const struct bp_location *bl)
13112 {
13113   internal_error_pure_virtual_called ();
13114 }
13115
13116 static enum print_stop_action
13117 base_breakpoint_print_it (bpstat bs)
13118 {
13119   internal_error_pure_virtual_called ();
13120 }
13121
13122 static void
13123 base_breakpoint_print_one_detail (const struct breakpoint *self,
13124                                   struct ui_out *uiout)
13125 {
13126   /* nothing */
13127 }
13128
13129 static void
13130 base_breakpoint_print_mention (struct breakpoint *b)
13131 {
13132   internal_error_pure_virtual_called ();
13133 }
13134
13135 static void
13136 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
13137 {
13138   internal_error_pure_virtual_called ();
13139 }
13140
13141 static void
13142 base_breakpoint_create_sals_from_address (char **arg,
13143                                           struct linespec_result *canonical,
13144                                           enum bptype type_wanted,
13145                                           char *addr_start,
13146                                           char **copy_arg)
13147 {
13148   internal_error_pure_virtual_called ();
13149 }
13150
13151 static void
13152 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13153                                         struct linespec_result *c,
13154                                         char *cond_string,
13155                                         char *extra_string,
13156                                         enum bptype type_wanted,
13157                                         enum bpdisp disposition,
13158                                         int thread,
13159                                         int task, int ignore_count,
13160                                         const struct breakpoint_ops *o,
13161                                         int from_tty, int enabled,
13162                                         int internal, unsigned flags)
13163 {
13164   internal_error_pure_virtual_called ();
13165 }
13166
13167 static void
13168 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
13169                                  struct symtabs_and_lines *sals)
13170 {
13171   internal_error_pure_virtual_called ();
13172 }
13173
13174 /* The default 'explains_signal' method.  */
13175
13176 static int
13177 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
13178 {
13179   return 1;
13180 }
13181
13182 /* The default "after_condition_true" method.  */
13183
13184 static void
13185 base_breakpoint_after_condition_true (struct bpstats *bs)
13186 {
13187   /* Nothing to do.   */
13188 }
13189
13190 struct breakpoint_ops base_breakpoint_ops =
13191 {
13192   base_breakpoint_dtor,
13193   base_breakpoint_allocate_location,
13194   base_breakpoint_re_set,
13195   base_breakpoint_insert_location,
13196   base_breakpoint_remove_location,
13197   base_breakpoint_breakpoint_hit,
13198   base_breakpoint_check_status,
13199   base_breakpoint_resources_needed,
13200   base_breakpoint_works_in_software_mode,
13201   base_breakpoint_print_it,
13202   NULL,
13203   base_breakpoint_print_one_detail,
13204   base_breakpoint_print_mention,
13205   base_breakpoint_print_recreate,
13206   base_breakpoint_create_sals_from_address,
13207   base_breakpoint_create_breakpoints_sal,
13208   base_breakpoint_decode_linespec,
13209   base_breakpoint_explains_signal,
13210   base_breakpoint_after_condition_true,
13211 };
13212
13213 /* Default breakpoint_ops methods.  */
13214
13215 static void
13216 bkpt_re_set (struct breakpoint *b)
13217 {
13218   /* FIXME: is this still reachable?  */
13219   if (b->addr_string == NULL)
13220     {
13221       /* Anything without a string can't be re-set.  */
13222       delete_breakpoint (b);
13223       return;
13224     }
13225
13226   breakpoint_re_set_default (b);
13227 }
13228
13229 static int
13230 bkpt_insert_location (struct bp_location *bl)
13231 {
13232   if (bl->loc_type == bp_loc_hardware_breakpoint)
13233     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
13234   else
13235     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
13236 }
13237
13238 static int
13239 bkpt_remove_location (struct bp_location *bl)
13240 {
13241   if (bl->loc_type == bp_loc_hardware_breakpoint)
13242     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
13243   else
13244     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
13245 }
13246
13247 static int
13248 bkpt_breakpoint_hit (const struct bp_location *bl,
13249                      struct address_space *aspace, CORE_ADDR bp_addr,
13250                      const struct target_waitstatus *ws)
13251 {
13252   if (ws->kind != TARGET_WAITKIND_STOPPED
13253       || ws->value.sig != GDB_SIGNAL_TRAP)
13254     return 0;
13255
13256   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13257                                  aspace, bp_addr))
13258     return 0;
13259
13260   if (overlay_debugging         /* unmapped overlay section */
13261       && section_is_overlay (bl->section)
13262       && !section_is_mapped (bl->section))
13263     return 0;
13264
13265   return 1;
13266 }
13267
13268 static int
13269 dprintf_breakpoint_hit (const struct bp_location *bl,
13270                         struct address_space *aspace, CORE_ADDR bp_addr,
13271                         const struct target_waitstatus *ws)
13272 {
13273   if (dprintf_style == dprintf_style_agent
13274       && target_can_run_breakpoint_commands ())
13275     {
13276       /* An agent-style dprintf never causes a stop.  If we see a trap
13277          for this address it must be for a breakpoint that happens to
13278          be set at the same address.  */
13279       return 0;
13280     }
13281
13282   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
13283 }
13284
13285 static int
13286 bkpt_resources_needed (const struct bp_location *bl)
13287 {
13288   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13289
13290   return 1;
13291 }
13292
13293 static enum print_stop_action
13294 bkpt_print_it (bpstat bs)
13295 {
13296   struct breakpoint *b;
13297   const struct bp_location *bl;
13298   int bp_temp;
13299   struct ui_out *uiout = current_uiout;
13300
13301   gdb_assert (bs->bp_location_at != NULL);
13302
13303   bl = bs->bp_location_at;
13304   b = bs->breakpoint_at;
13305
13306   bp_temp = b->disposition == disp_del;
13307   if (bl->address != bl->requested_address)
13308     breakpoint_adjustment_warning (bl->requested_address,
13309                                    bl->address,
13310                                    b->number, 1);
13311   annotate_breakpoint (b->number);
13312   if (bp_temp)
13313     ui_out_text (uiout, "\nTemporary breakpoint ");
13314   else
13315     ui_out_text (uiout, "\nBreakpoint ");
13316   if (ui_out_is_mi_like_p (uiout))
13317     {
13318       ui_out_field_string (uiout, "reason",
13319                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13320       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13321     }
13322   ui_out_field_int (uiout, "bkptno", b->number);
13323   ui_out_text (uiout, ", ");
13324
13325   return PRINT_SRC_AND_LOC;
13326 }
13327
13328 static void
13329 bkpt_print_mention (struct breakpoint *b)
13330 {
13331   if (ui_out_is_mi_like_p (current_uiout))
13332     return;
13333
13334   switch (b->type)
13335     {
13336     case bp_breakpoint:
13337     case bp_gnu_ifunc_resolver:
13338       if (b->disposition == disp_del)
13339         printf_filtered (_("Temporary breakpoint"));
13340       else
13341         printf_filtered (_("Breakpoint"));
13342       printf_filtered (_(" %d"), b->number);
13343       if (b->type == bp_gnu_ifunc_resolver)
13344         printf_filtered (_(" at gnu-indirect-function resolver"));
13345       break;
13346     case bp_hardware_breakpoint:
13347       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13348       break;
13349     case bp_dprintf:
13350       printf_filtered (_("Dprintf %d"), b->number);
13351       break;
13352     }
13353
13354   say_where (b);
13355 }
13356
13357 static void
13358 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13359 {
13360   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13361     fprintf_unfiltered (fp, "tbreak");
13362   else if (tp->type == bp_breakpoint)
13363     fprintf_unfiltered (fp, "break");
13364   else if (tp->type == bp_hardware_breakpoint
13365            && tp->disposition == disp_del)
13366     fprintf_unfiltered (fp, "thbreak");
13367   else if (tp->type == bp_hardware_breakpoint)
13368     fprintf_unfiltered (fp, "hbreak");
13369   else
13370     internal_error (__FILE__, __LINE__,
13371                     _("unhandled breakpoint type %d"), (int) tp->type);
13372
13373   fprintf_unfiltered (fp, " %s", tp->addr_string);
13374   print_recreate_thread (tp, fp);
13375 }
13376
13377 static void
13378 bkpt_create_sals_from_address (char **arg,
13379                                struct linespec_result *canonical,
13380                                enum bptype type_wanted,
13381                                char *addr_start, char **copy_arg)
13382 {
13383   create_sals_from_address_default (arg, canonical, type_wanted,
13384                                     addr_start, copy_arg);
13385 }
13386
13387 static void
13388 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13389                              struct linespec_result *canonical,
13390                              char *cond_string,
13391                              char *extra_string,
13392                              enum bptype type_wanted,
13393                              enum bpdisp disposition,
13394                              int thread,
13395                              int task, int ignore_count,
13396                              const struct breakpoint_ops *ops,
13397                              int from_tty, int enabled,
13398                              int internal, unsigned flags)
13399 {
13400   create_breakpoints_sal_default (gdbarch, canonical,
13401                                   cond_string, extra_string,
13402                                   type_wanted,
13403                                   disposition, thread, task,
13404                                   ignore_count, ops, from_tty,
13405                                   enabled, internal, flags);
13406 }
13407
13408 static void
13409 bkpt_decode_linespec (struct breakpoint *b, char **s,
13410                       struct symtabs_and_lines *sals)
13411 {
13412   decode_linespec_default (b, s, sals);
13413 }
13414
13415 /* Virtual table for internal breakpoints.  */
13416
13417 static void
13418 internal_bkpt_re_set (struct breakpoint *b)
13419 {
13420   switch (b->type)
13421     {
13422       /* Delete overlay event and longjmp master breakpoints; they
13423          will be reset later by breakpoint_re_set.  */
13424     case bp_overlay_event:
13425     case bp_longjmp_master:
13426     case bp_std_terminate_master:
13427     case bp_exception_master:
13428       delete_breakpoint (b);
13429       break;
13430
13431       /* This breakpoint is special, it's set up when the inferior
13432          starts and we really don't want to touch it.  */
13433     case bp_shlib_event:
13434
13435       /* Like bp_shlib_event, this breakpoint type is special.  Once
13436          it is set up, we do not want to touch it.  */
13437     case bp_thread_event:
13438       break;
13439     }
13440 }
13441
13442 static void
13443 internal_bkpt_check_status (bpstat bs)
13444 {
13445   if (bs->breakpoint_at->type == bp_shlib_event)
13446     {
13447       /* If requested, stop when the dynamic linker notifies GDB of
13448          events.  This allows the user to get control and place
13449          breakpoints in initializer routines for dynamically loaded
13450          objects (among other things).  */
13451       bs->stop = stop_on_solib_events;
13452       bs->print = stop_on_solib_events;
13453     }
13454   else
13455     bs->stop = 0;
13456 }
13457
13458 static enum print_stop_action
13459 internal_bkpt_print_it (bpstat bs)
13460 {
13461   struct breakpoint *b;
13462
13463   b = bs->breakpoint_at;
13464
13465   switch (b->type)
13466     {
13467     case bp_shlib_event:
13468       /* Did we stop because the user set the stop_on_solib_events
13469          variable?  (If so, we report this as a generic, "Stopped due
13470          to shlib event" message.) */
13471       print_solib_event (0);
13472       break;
13473
13474     case bp_thread_event:
13475       /* Not sure how we will get here.
13476          GDB should not stop for these breakpoints.  */
13477       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13478       break;
13479
13480     case bp_overlay_event:
13481       /* By analogy with the thread event, GDB should not stop for these.  */
13482       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13483       break;
13484
13485     case bp_longjmp_master:
13486       /* These should never be enabled.  */
13487       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13488       break;
13489
13490     case bp_std_terminate_master:
13491       /* These should never be enabled.  */
13492       printf_filtered (_("std::terminate Master Breakpoint: "
13493                          "gdb should not stop!\n"));
13494       break;
13495
13496     case bp_exception_master:
13497       /* These should never be enabled.  */
13498       printf_filtered (_("Exception Master Breakpoint: "
13499                          "gdb should not stop!\n"));
13500       break;
13501     }
13502
13503   return PRINT_NOTHING;
13504 }
13505
13506 static void
13507 internal_bkpt_print_mention (struct breakpoint *b)
13508 {
13509   /* Nothing to mention.  These breakpoints are internal.  */
13510 }
13511
13512 /* Virtual table for momentary breakpoints  */
13513
13514 static void
13515 momentary_bkpt_re_set (struct breakpoint *b)
13516 {
13517   /* Keep temporary breakpoints, which can be encountered when we step
13518      over a dlopen call and solib_add is resetting the breakpoints.
13519      Otherwise these should have been blown away via the cleanup chain
13520      or by breakpoint_init_inferior when we rerun the executable.  */
13521 }
13522
13523 static void
13524 momentary_bkpt_check_status (bpstat bs)
13525 {
13526   /* Nothing.  The point of these breakpoints is causing a stop.  */
13527 }
13528
13529 static enum print_stop_action
13530 momentary_bkpt_print_it (bpstat bs)
13531 {
13532   struct ui_out *uiout = current_uiout;
13533
13534   if (ui_out_is_mi_like_p (uiout))
13535     {
13536       struct breakpoint *b = bs->breakpoint_at;
13537
13538       switch (b->type)
13539         {
13540         case bp_finish:
13541           ui_out_field_string
13542             (uiout, "reason",
13543              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13544           break;
13545
13546         case bp_until:
13547           ui_out_field_string
13548             (uiout, "reason",
13549              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13550           break;
13551         }
13552     }
13553
13554   return PRINT_UNKNOWN;
13555 }
13556
13557 static void
13558 momentary_bkpt_print_mention (struct breakpoint *b)
13559 {
13560   /* Nothing to mention.  These breakpoints are internal.  */
13561 }
13562
13563 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13564
13565    It gets cleared already on the removal of the first one of such placed
13566    breakpoints.  This is OK as they get all removed altogether.  */
13567
13568 static void
13569 longjmp_bkpt_dtor (struct breakpoint *self)
13570 {
13571   struct thread_info *tp = find_thread_id (self->thread);
13572
13573   if (tp)
13574     tp->initiating_frame = null_frame_id;
13575
13576   momentary_breakpoint_ops.dtor (self);
13577 }
13578
13579 /* Specific methods for probe breakpoints.  */
13580
13581 static int
13582 bkpt_probe_insert_location (struct bp_location *bl)
13583 {
13584   int v = bkpt_insert_location (bl);
13585
13586   if (v == 0)
13587     {
13588       /* The insertion was successful, now let's set the probe's semaphore
13589          if needed.  */
13590       if (bl->probe.probe->pops->set_semaphore != NULL)
13591         bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13592                                               bl->probe.objfile,
13593                                               bl->gdbarch);
13594     }
13595
13596   return v;
13597 }
13598
13599 static int
13600 bkpt_probe_remove_location (struct bp_location *bl)
13601 {
13602   /* Let's clear the semaphore before removing the location.  */
13603   if (bl->probe.probe->pops->clear_semaphore != NULL)
13604     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13605                                             bl->probe.objfile,
13606                                             bl->gdbarch);
13607
13608   return bkpt_remove_location (bl);
13609 }
13610
13611 static void
13612 bkpt_probe_create_sals_from_address (char **arg,
13613                                      struct linespec_result *canonical,
13614                                      enum bptype type_wanted,
13615                                      char *addr_start, char **copy_arg)
13616 {
13617   struct linespec_sals lsal;
13618
13619   lsal.sals = parse_probes (arg, canonical);
13620
13621   *copy_arg = xstrdup (canonical->addr_string);
13622   lsal.canonical = xstrdup (*copy_arg);
13623
13624   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13625 }
13626
13627 static void
13628 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13629                             struct symtabs_and_lines *sals)
13630 {
13631   *sals = parse_probes (s, NULL);
13632   if (!sals->sals)
13633     error (_("probe not found"));
13634 }
13635
13636 /* The breakpoint_ops structure to be used in tracepoints.  */
13637
13638 static void
13639 tracepoint_re_set (struct breakpoint *b)
13640 {
13641   breakpoint_re_set_default (b);
13642 }
13643
13644 static int
13645 tracepoint_breakpoint_hit (const struct bp_location *bl,
13646                            struct address_space *aspace, CORE_ADDR bp_addr,
13647                            const struct target_waitstatus *ws)
13648 {
13649   /* By definition, the inferior does not report stops at
13650      tracepoints.  */
13651   return 0;
13652 }
13653
13654 static void
13655 tracepoint_print_one_detail (const struct breakpoint *self,
13656                              struct ui_out *uiout)
13657 {
13658   struct tracepoint *tp = (struct tracepoint *) self;
13659   if (tp->static_trace_marker_id)
13660     {
13661       gdb_assert (self->type == bp_static_tracepoint);
13662
13663       ui_out_text (uiout, "\tmarker id is ");
13664       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13665                            tp->static_trace_marker_id);
13666       ui_out_text (uiout, "\n");
13667     }
13668 }
13669
13670 static void
13671 tracepoint_print_mention (struct breakpoint *b)
13672 {
13673   if (ui_out_is_mi_like_p (current_uiout))
13674     return;
13675
13676   switch (b->type)
13677     {
13678     case bp_tracepoint:
13679       printf_filtered (_("Tracepoint"));
13680       printf_filtered (_(" %d"), b->number);
13681       break;
13682     case bp_fast_tracepoint:
13683       printf_filtered (_("Fast tracepoint"));
13684       printf_filtered (_(" %d"), b->number);
13685       break;
13686     case bp_static_tracepoint:
13687       printf_filtered (_("Static tracepoint"));
13688       printf_filtered (_(" %d"), b->number);
13689       break;
13690     default:
13691       internal_error (__FILE__, __LINE__,
13692                       _("unhandled tracepoint type %d"), (int) b->type);
13693     }
13694
13695   say_where (b);
13696 }
13697
13698 static void
13699 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13700 {
13701   struct tracepoint *tp = (struct tracepoint *) self;
13702
13703   if (self->type == bp_fast_tracepoint)
13704     fprintf_unfiltered (fp, "ftrace");
13705   if (self->type == bp_static_tracepoint)
13706     fprintf_unfiltered (fp, "strace");
13707   else if (self->type == bp_tracepoint)
13708     fprintf_unfiltered (fp, "trace");
13709   else
13710     internal_error (__FILE__, __LINE__,
13711                     _("unhandled tracepoint type %d"), (int) self->type);
13712
13713   fprintf_unfiltered (fp, " %s", self->addr_string);
13714   print_recreate_thread (self, fp);
13715
13716   if (tp->pass_count)
13717     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13718 }
13719
13720 static void
13721 tracepoint_create_sals_from_address (char **arg,
13722                                      struct linespec_result *canonical,
13723                                      enum bptype type_wanted,
13724                                      char *addr_start, char **copy_arg)
13725 {
13726   create_sals_from_address_default (arg, canonical, type_wanted,
13727                                     addr_start, copy_arg);
13728 }
13729
13730 static void
13731 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13732                                    struct linespec_result *canonical,
13733                                    char *cond_string,
13734                                    char *extra_string,
13735                                    enum bptype type_wanted,
13736                                    enum bpdisp disposition,
13737                                    int thread,
13738                                    int task, int ignore_count,
13739                                    const struct breakpoint_ops *ops,
13740                                    int from_tty, int enabled,
13741                                    int internal, unsigned flags)
13742 {
13743   create_breakpoints_sal_default (gdbarch, canonical,
13744                                   cond_string, extra_string,
13745                                   type_wanted,
13746                                   disposition, thread, task,
13747                                   ignore_count, ops, from_tty,
13748                                   enabled, internal, flags);
13749 }
13750
13751 static void
13752 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13753                             struct symtabs_and_lines *sals)
13754 {
13755   decode_linespec_default (b, s, sals);
13756 }
13757
13758 struct breakpoint_ops tracepoint_breakpoint_ops;
13759
13760 /* The breakpoint_ops structure to be use on tracepoints placed in a
13761    static probe.  */
13762
13763 static void
13764 tracepoint_probe_create_sals_from_address (char **arg,
13765                                            struct linespec_result *canonical,
13766                                            enum bptype type_wanted,
13767                                            char *addr_start, char **copy_arg)
13768 {
13769   /* We use the same method for breakpoint on probes.  */
13770   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13771                                        addr_start, copy_arg);
13772 }
13773
13774 static void
13775 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13776                                   struct symtabs_and_lines *sals)
13777 {
13778   /* We use the same method for breakpoint on probes.  */
13779   bkpt_probe_decode_linespec (b, s, sals);
13780 }
13781
13782 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13783
13784 /* Dprintf breakpoint_ops methods.  */
13785
13786 static void
13787 dprintf_re_set (struct breakpoint *b)
13788 {
13789   breakpoint_re_set_default (b);
13790
13791   /* This breakpoint could have been pending, and be resolved now, and
13792      if so, we should now have the extra string.  If we don't, the
13793      dprintf was malformed when created, but we couldn't tell because
13794      we can't extract the extra string until the location is
13795      resolved.  */
13796   if (b->loc != NULL && b->extra_string == NULL)
13797     error (_("Format string required"));
13798
13799   /* 1 - connect to target 1, that can run breakpoint commands.
13800      2 - create a dprintf, which resolves fine.
13801      3 - disconnect from target 1
13802      4 - connect to target 2, that can NOT run breakpoint commands.
13803
13804      After steps #3/#4, you'll want the dprintf command list to
13805      be updated, because target 1 and 2 may well return different
13806      answers for target_can_run_breakpoint_commands().
13807      Given absence of finer grained resetting, we get to do
13808      it all the time.  */
13809   if (b->extra_string != NULL)
13810     update_dprintf_command_list (b);
13811 }
13812
13813 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13814
13815 static void
13816 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13817 {
13818   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13819                       tp->extra_string);
13820   print_recreate_thread (tp, fp);
13821 }
13822
13823 /* Implement the "after_condition_true" breakpoint_ops method for
13824    dprintf.
13825
13826    dprintf's are implemented with regular commands in their command
13827    list, but we run the commands here instead of before presenting the
13828    stop to the user, as dprintf's don't actually cause a stop.  This
13829    also makes it so that the commands of multiple dprintfs at the same
13830    address are all handled.  */
13831
13832 static void
13833 dprintf_after_condition_true (struct bpstats *bs)
13834 {
13835   struct cleanup *old_chain;
13836   struct bpstats tmp_bs = { NULL };
13837   struct bpstats *tmp_bs_p = &tmp_bs;
13838
13839   /* dprintf's never cause a stop.  This wasn't set in the
13840      check_status hook instead because that would make the dprintf's
13841      condition not be evaluated.  */
13842   bs->stop = 0;
13843
13844   /* Run the command list here.  Take ownership of it instead of
13845      copying.  We never want these commands to run later in
13846      bpstat_do_actions, if a breakpoint that causes a stop happens to
13847      be set at same address as this dprintf, or even if running the
13848      commands here throws.  */
13849   tmp_bs.commands = bs->commands;
13850   bs->commands = NULL;
13851   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13852
13853   bpstat_do_actions_1 (&tmp_bs_p);
13854
13855   /* 'tmp_bs.commands' will usually be NULL by now, but
13856      bpstat_do_actions_1 may return early without processing the whole
13857      list.  */
13858   do_cleanups (old_chain);
13859 }
13860
13861 /* The breakpoint_ops structure to be used on static tracepoints with
13862    markers (`-m').  */
13863
13864 static void
13865 strace_marker_create_sals_from_address (char **arg,
13866                                         struct linespec_result *canonical,
13867                                         enum bptype type_wanted,
13868                                         char *addr_start, char **copy_arg)
13869 {
13870   struct linespec_sals lsal;
13871
13872   lsal.sals = decode_static_tracepoint_spec (arg);
13873
13874   *copy_arg = savestring (addr_start, *arg - addr_start);
13875
13876   canonical->addr_string = xstrdup (*copy_arg);
13877   lsal.canonical = xstrdup (*copy_arg);
13878   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13879 }
13880
13881 static void
13882 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13883                                       struct linespec_result *canonical,
13884                                       char *cond_string,
13885                                       char *extra_string,
13886                                       enum bptype type_wanted,
13887                                       enum bpdisp disposition,
13888                                       int thread,
13889                                       int task, int ignore_count,
13890                                       const struct breakpoint_ops *ops,
13891                                       int from_tty, int enabled,
13892                                       int internal, unsigned flags)
13893 {
13894   int i;
13895   struct linespec_sals *lsal = VEC_index (linespec_sals,
13896                                           canonical->sals, 0);
13897
13898   /* If the user is creating a static tracepoint by marker id
13899      (strace -m MARKER_ID), then store the sals index, so that
13900      breakpoint_re_set can try to match up which of the newly
13901      found markers corresponds to this one, and, don't try to
13902      expand multiple locations for each sal, given than SALS
13903      already should contain all sals for MARKER_ID.  */
13904
13905   for (i = 0; i < lsal->sals.nelts; ++i)
13906     {
13907       struct symtabs_and_lines expanded;
13908       struct tracepoint *tp;
13909       struct cleanup *old_chain;
13910       char *addr_string;
13911
13912       expanded.nelts = 1;
13913       expanded.sals = &lsal->sals.sals[i];
13914
13915       addr_string = xstrdup (canonical->addr_string);
13916       old_chain = make_cleanup (xfree, addr_string);
13917
13918       tp = XCNEW (struct tracepoint);
13919       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13920                            addr_string, NULL,
13921                            cond_string, extra_string,
13922                            type_wanted, disposition,
13923                            thread, task, ignore_count, ops,
13924                            from_tty, enabled, internal, flags,
13925                            canonical->special_display);
13926       /* Given that its possible to have multiple markers with
13927          the same string id, if the user is creating a static
13928          tracepoint by marker id ("strace -m MARKER_ID"), then
13929          store the sals index, so that breakpoint_re_set can
13930          try to match up which of the newly found markers
13931          corresponds to this one  */
13932       tp->static_trace_marker_id_idx = i;
13933
13934       install_breakpoint (internal, &tp->base, 0);
13935
13936       discard_cleanups (old_chain);
13937     }
13938 }
13939
13940 static void
13941 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13942                                struct symtabs_and_lines *sals)
13943 {
13944   struct tracepoint *tp = (struct tracepoint *) b;
13945
13946   *sals = decode_static_tracepoint_spec (s);
13947   if (sals->nelts > tp->static_trace_marker_id_idx)
13948     {
13949       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13950       sals->nelts = 1;
13951     }
13952   else
13953     error (_("marker %s not found"), tp->static_trace_marker_id);
13954 }
13955
13956 static struct breakpoint_ops strace_marker_breakpoint_ops;
13957
13958 static int
13959 strace_marker_p (struct breakpoint *b)
13960 {
13961   return b->ops == &strace_marker_breakpoint_ops;
13962 }
13963
13964 /* Delete a breakpoint and clean up all traces of it in the data
13965    structures.  */
13966
13967 void
13968 delete_breakpoint (struct breakpoint *bpt)
13969 {
13970   struct breakpoint *b;
13971
13972   gdb_assert (bpt != NULL);
13973
13974   /* Has this bp already been deleted?  This can happen because
13975      multiple lists can hold pointers to bp's.  bpstat lists are
13976      especial culprits.
13977
13978      One example of this happening is a watchpoint's scope bp.  When
13979      the scope bp triggers, we notice that the watchpoint is out of
13980      scope, and delete it.  We also delete its scope bp.  But the
13981      scope bp is marked "auto-deleting", and is already on a bpstat.
13982      That bpstat is then checked for auto-deleting bp's, which are
13983      deleted.
13984
13985      A real solution to this problem might involve reference counts in
13986      bp's, and/or giving them pointers back to their referencing
13987      bpstat's, and teaching delete_breakpoint to only free a bp's
13988      storage when no more references were extent.  A cheaper bandaid
13989      was chosen.  */
13990   if (bpt->type == bp_none)
13991     return;
13992
13993   /* At least avoid this stale reference until the reference counting
13994      of breakpoints gets resolved.  */
13995   if (bpt->related_breakpoint != bpt)
13996     {
13997       struct breakpoint *related;
13998       struct watchpoint *w;
13999
14000       if (bpt->type == bp_watchpoint_scope)
14001         w = (struct watchpoint *) bpt->related_breakpoint;
14002       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
14003         w = (struct watchpoint *) bpt;
14004       else
14005         w = NULL;
14006       if (w != NULL)
14007         watchpoint_del_at_next_stop (w);
14008
14009       /* Unlink bpt from the bpt->related_breakpoint ring.  */
14010       for (related = bpt; related->related_breakpoint != bpt;
14011            related = related->related_breakpoint);
14012       related->related_breakpoint = bpt->related_breakpoint;
14013       bpt->related_breakpoint = bpt;
14014     }
14015
14016   /* watch_command_1 creates a watchpoint but only sets its number if
14017      update_watchpoint succeeds in creating its bp_locations.  If there's
14018      a problem in that process, we'll be asked to delete the half-created
14019      watchpoint.  In that case, don't announce the deletion.  */
14020   if (bpt->number)
14021     observer_notify_breakpoint_deleted (bpt);
14022
14023   if (breakpoint_chain == bpt)
14024     breakpoint_chain = bpt->next;
14025
14026   ALL_BREAKPOINTS (b)
14027     if (b->next == bpt)
14028     {
14029       b->next = bpt->next;
14030       break;
14031     }
14032
14033   /* Be sure no bpstat's are pointing at the breakpoint after it's
14034      been freed.  */
14035   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
14036      in all threads for now.  Note that we cannot just remove bpstats
14037      pointing at bpt from the stop_bpstat list entirely, as breakpoint
14038      commands are associated with the bpstat; if we remove it here,
14039      then the later call to bpstat_do_actions (&stop_bpstat); in
14040      event-top.c won't do anything, and temporary breakpoints with
14041      commands won't work.  */
14042
14043   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
14044
14045   /* Now that breakpoint is removed from breakpoint list, update the
14046      global location list.  This will remove locations that used to
14047      belong to this breakpoint.  Do this before freeing the breakpoint
14048      itself, since remove_breakpoint looks at location's owner.  It
14049      might be better design to have location completely
14050      self-contained, but it's not the case now.  */
14051   update_global_location_list (UGLL_DONT_INSERT);
14052
14053   bpt->ops->dtor (bpt);
14054   /* On the chance that someone will soon try again to delete this
14055      same bp, we mark it as deleted before freeing its storage.  */
14056   bpt->type = bp_none;
14057   xfree (bpt);
14058 }
14059
14060 static void
14061 do_delete_breakpoint_cleanup (void *b)
14062 {
14063   delete_breakpoint (b);
14064 }
14065
14066 struct cleanup *
14067 make_cleanup_delete_breakpoint (struct breakpoint *b)
14068 {
14069   return make_cleanup (do_delete_breakpoint_cleanup, b);
14070 }
14071
14072 /* Iterator function to call a user-provided callback function once
14073    for each of B and its related breakpoints.  */
14074
14075 static void
14076 iterate_over_related_breakpoints (struct breakpoint *b,
14077                                   void (*function) (struct breakpoint *,
14078                                                     void *),
14079                                   void *data)
14080 {
14081   struct breakpoint *related;
14082
14083   related = b;
14084   do
14085     {
14086       struct breakpoint *next;
14087
14088       /* FUNCTION may delete RELATED.  */
14089       next = related->related_breakpoint;
14090
14091       if (next == related)
14092         {
14093           /* RELATED is the last ring entry.  */
14094           function (related, data);
14095
14096           /* FUNCTION may have deleted it, so we'd never reach back to
14097              B.  There's nothing left to do anyway, so just break
14098              out.  */
14099           break;
14100         }
14101       else
14102         function (related, data);
14103
14104       related = next;
14105     }
14106   while (related != b);
14107 }
14108
14109 static void
14110 do_delete_breakpoint (struct breakpoint *b, void *ignore)
14111 {
14112   delete_breakpoint (b);
14113 }
14114
14115 /* A callback for map_breakpoint_numbers that calls
14116    delete_breakpoint.  */
14117
14118 static void
14119 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
14120 {
14121   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
14122 }
14123
14124 void
14125 delete_command (char *arg, int from_tty)
14126 {
14127   struct breakpoint *b, *b_tmp;
14128
14129   dont_repeat ();
14130
14131   if (arg == 0)
14132     {
14133       int breaks_to_delete = 0;
14134
14135       /* Delete all breakpoints if no argument.  Do not delete
14136          internal breakpoints, these have to be deleted with an
14137          explicit breakpoint number argument.  */
14138       ALL_BREAKPOINTS (b)
14139         if (user_breakpoint_p (b))
14140           {
14141             breaks_to_delete = 1;
14142             break;
14143           }
14144
14145       /* Ask user only if there are some breakpoints to delete.  */
14146       if (!from_tty
14147           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
14148         {
14149           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14150             if (user_breakpoint_p (b))
14151               delete_breakpoint (b);
14152         }
14153     }
14154   else
14155     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14156 }
14157
14158 static int
14159 all_locations_are_pending (struct bp_location *loc)
14160 {
14161   for (; loc; loc = loc->next)
14162     if (!loc->shlib_disabled
14163         && !loc->pspace->executing_startup)
14164       return 0;
14165   return 1;
14166 }
14167
14168 /* Subroutine of update_breakpoint_locations to simplify it.
14169    Return non-zero if multiple fns in list LOC have the same name.
14170    Null names are ignored.  */
14171
14172 static int
14173 ambiguous_names_p (struct bp_location *loc)
14174 {
14175   struct bp_location *l;
14176   htab_t htab = htab_create_alloc (13, htab_hash_string,
14177                                    (int (*) (const void *, 
14178                                              const void *)) streq,
14179                                    NULL, xcalloc, xfree);
14180
14181   for (l = loc; l != NULL; l = l->next)
14182     {
14183       const char **slot;
14184       const char *name = l->function_name;
14185
14186       /* Allow for some names to be NULL, ignore them.  */
14187       if (name == NULL)
14188         continue;
14189
14190       slot = (const char **) htab_find_slot (htab, (const void *) name,
14191                                              INSERT);
14192       /* NOTE: We can assume slot != NULL here because xcalloc never
14193          returns NULL.  */
14194       if (*slot != NULL)
14195         {
14196           htab_delete (htab);
14197           return 1;
14198         }
14199       *slot = name;
14200     }
14201
14202   htab_delete (htab);
14203   return 0;
14204 }
14205
14206 /* When symbols change, it probably means the sources changed as well,
14207    and it might mean the static tracepoint markers are no longer at
14208    the same address or line numbers they used to be at last we
14209    checked.  Losing your static tracepoints whenever you rebuild is
14210    undesirable.  This function tries to resync/rematch gdb static
14211    tracepoints with the markers on the target, for static tracepoints
14212    that have not been set by marker id.  Static tracepoint that have
14213    been set by marker id are reset by marker id in breakpoint_re_set.
14214    The heuristic is:
14215
14216    1) For a tracepoint set at a specific address, look for a marker at
14217    the old PC.  If one is found there, assume to be the same marker.
14218    If the name / string id of the marker found is different from the
14219    previous known name, assume that means the user renamed the marker
14220    in the sources, and output a warning.
14221
14222    2) For a tracepoint set at a given line number, look for a marker
14223    at the new address of the old line number.  If one is found there,
14224    assume to be the same marker.  If the name / string id of the
14225    marker found is different from the previous known name, assume that
14226    means the user renamed the marker in the sources, and output a
14227    warning.
14228
14229    3) If a marker is no longer found at the same address or line, it
14230    may mean the marker no longer exists.  But it may also just mean
14231    the code changed a bit.  Maybe the user added a few lines of code
14232    that made the marker move up or down (in line number terms).  Ask
14233    the target for info about the marker with the string id as we knew
14234    it.  If found, update line number and address in the matching
14235    static tracepoint.  This will get confused if there's more than one
14236    marker with the same ID (possible in UST, although unadvised
14237    precisely because it confuses tools).  */
14238
14239 static struct symtab_and_line
14240 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
14241 {
14242   struct tracepoint *tp = (struct tracepoint *) b;
14243   struct static_tracepoint_marker marker;
14244   CORE_ADDR pc;
14245
14246   pc = sal.pc;
14247   if (sal.line)
14248     find_line_pc (sal.symtab, sal.line, &pc);
14249
14250   if (target_static_tracepoint_marker_at (pc, &marker))
14251     {
14252       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
14253         warning (_("static tracepoint %d changed probed marker from %s to %s"),
14254                  b->number,
14255                  tp->static_trace_marker_id, marker.str_id);
14256
14257       xfree (tp->static_trace_marker_id);
14258       tp->static_trace_marker_id = xstrdup (marker.str_id);
14259       release_static_tracepoint_marker (&marker);
14260
14261       return sal;
14262     }
14263
14264   /* Old marker wasn't found on target at lineno.  Try looking it up
14265      by string ID.  */
14266   if (!sal.explicit_pc
14267       && sal.line != 0
14268       && sal.symtab != NULL
14269       && tp->static_trace_marker_id != NULL)
14270     {
14271       VEC(static_tracepoint_marker_p) *markers;
14272
14273       markers
14274         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
14275
14276       if (!VEC_empty(static_tracepoint_marker_p, markers))
14277         {
14278           struct symtab_and_line sal2;
14279           struct symbol *sym;
14280           struct static_tracepoint_marker *tpmarker;
14281           struct ui_out *uiout = current_uiout;
14282
14283           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
14284
14285           xfree (tp->static_trace_marker_id);
14286           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
14287
14288           warning (_("marker for static tracepoint %d (%s) not "
14289                      "found at previous line number"),
14290                    b->number, tp->static_trace_marker_id);
14291
14292           init_sal (&sal2);
14293
14294           sal2.pc = tpmarker->address;
14295
14296           sal2 = find_pc_line (tpmarker->address, 0);
14297           sym = find_pc_sect_function (tpmarker->address, NULL);
14298           ui_out_text (uiout, "Now in ");
14299           if (sym)
14300             {
14301               ui_out_field_string (uiout, "func",
14302                                    SYMBOL_PRINT_NAME (sym));
14303               ui_out_text (uiout, " at ");
14304             }
14305           ui_out_field_string (uiout, "file",
14306                                symtab_to_filename_for_display (sal2.symtab));
14307           ui_out_text (uiout, ":");
14308
14309           if (ui_out_is_mi_like_p (uiout))
14310             {
14311               const char *fullname = symtab_to_fullname (sal2.symtab);
14312
14313               ui_out_field_string (uiout, "fullname", fullname);
14314             }
14315
14316           ui_out_field_int (uiout, "line", sal2.line);
14317           ui_out_text (uiout, "\n");
14318
14319           b->loc->line_number = sal2.line;
14320           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14321
14322           xfree (b->addr_string);
14323           b->addr_string = xstrprintf ("%s:%d",
14324                                    symtab_to_filename_for_display (sal2.symtab),
14325                                        b->loc->line_number);
14326
14327           /* Might be nice to check if function changed, and warn if
14328              so.  */
14329
14330           release_static_tracepoint_marker (tpmarker);
14331         }
14332     }
14333   return sal;
14334 }
14335
14336 /* Returns 1 iff locations A and B are sufficiently same that
14337    we don't need to report breakpoint as changed.  */
14338
14339 static int
14340 locations_are_equal (struct bp_location *a, struct bp_location *b)
14341 {
14342   while (a && b)
14343     {
14344       if (a->address != b->address)
14345         return 0;
14346
14347       if (a->shlib_disabled != b->shlib_disabled)
14348         return 0;
14349
14350       if (a->enabled != b->enabled)
14351         return 0;
14352
14353       a = a->next;
14354       b = b->next;
14355     }
14356
14357   if ((a == NULL) != (b == NULL))
14358     return 0;
14359
14360   return 1;
14361 }
14362
14363 /* Create new breakpoint locations for B (a hardware or software breakpoint)
14364    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
14365    a ranged breakpoint.  */
14366
14367 void
14368 update_breakpoint_locations (struct breakpoint *b,
14369                              struct symtabs_and_lines sals,
14370                              struct symtabs_and_lines sals_end)
14371 {
14372   int i;
14373   struct bp_location *existing_locations = b->loc;
14374
14375   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14376     {
14377       /* Ranged breakpoints have only one start location and one end
14378          location.  */
14379       b->enable_state = bp_disabled;
14380       update_global_location_list (UGLL_MAY_INSERT);
14381       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14382                            "multiple locations found\n"),
14383                          b->number);
14384       return;
14385     }
14386
14387   /* If there's no new locations, and all existing locations are
14388      pending, don't do anything.  This optimizes the common case where
14389      all locations are in the same shared library, that was unloaded.
14390      We'd like to retain the location, so that when the library is
14391      loaded again, we don't loose the enabled/disabled status of the
14392      individual locations.  */
14393   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14394     return;
14395
14396   b->loc = NULL;
14397
14398   for (i = 0; i < sals.nelts; ++i)
14399     {
14400       struct bp_location *new_loc;
14401
14402       switch_to_program_space_and_thread (sals.sals[i].pspace);
14403
14404       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14405
14406       /* Reparse conditions, they might contain references to the
14407          old symtab.  */
14408       if (b->cond_string != NULL)
14409         {
14410           const char *s;
14411           volatile struct gdb_exception e;
14412
14413           s = b->cond_string;
14414           TRY_CATCH (e, RETURN_MASK_ERROR)
14415             {
14416               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14417                                            block_for_pc (sals.sals[i].pc), 
14418                                            0);
14419             }
14420           if (e.reason < 0)
14421             {
14422               warning (_("failed to reevaluate condition "
14423                          "for breakpoint %d: %s"), 
14424                        b->number, e.message);
14425               new_loc->enabled = 0;
14426             }
14427         }
14428
14429       if (sals_end.nelts)
14430         {
14431           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14432
14433           new_loc->length = end - sals.sals[0].pc + 1;
14434         }
14435     }
14436
14437   /* If possible, carry over 'disable' status from existing
14438      breakpoints.  */
14439   {
14440     struct bp_location *e = existing_locations;
14441     /* If there are multiple breakpoints with the same function name,
14442        e.g. for inline functions, comparing function names won't work.
14443        Instead compare pc addresses; this is just a heuristic as things
14444        may have moved, but in practice it gives the correct answer
14445        often enough until a better solution is found.  */
14446     int have_ambiguous_names = ambiguous_names_p (b->loc);
14447
14448     for (; e; e = e->next)
14449       {
14450         if (!e->enabled && e->function_name)
14451           {
14452             struct bp_location *l = b->loc;
14453             if (have_ambiguous_names)
14454               {
14455                 for (; l; l = l->next)
14456                   if (breakpoint_locations_match (e, l))
14457                     {
14458                       l->enabled = 0;
14459                       break;
14460                     }
14461               }
14462             else
14463               {
14464                 for (; l; l = l->next)
14465                   if (l->function_name
14466                       && strcmp (e->function_name, l->function_name) == 0)
14467                     {
14468                       l->enabled = 0;
14469                       break;
14470                     }
14471               }
14472           }
14473       }
14474   }
14475
14476   if (!locations_are_equal (existing_locations, b->loc))
14477     observer_notify_breakpoint_modified (b);
14478
14479   update_global_location_list (UGLL_MAY_INSERT);
14480 }
14481
14482 /* Find the SaL locations corresponding to the given ADDR_STRING.
14483    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14484
14485 static struct symtabs_and_lines
14486 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14487 {
14488   char *s;
14489   struct symtabs_and_lines sals = {0};
14490   volatile struct gdb_exception e;
14491
14492   gdb_assert (b->ops != NULL);
14493   s = addr_string;
14494
14495   TRY_CATCH (e, RETURN_MASK_ERROR)
14496     {
14497       b->ops->decode_linespec (b, &s, &sals);
14498     }
14499   if (e.reason < 0)
14500     {
14501       int not_found_and_ok = 0;
14502       /* For pending breakpoints, it's expected that parsing will
14503          fail until the right shared library is loaded.  User has
14504          already told to create pending breakpoints and don't need
14505          extra messages.  If breakpoint is in bp_shlib_disabled
14506          state, then user already saw the message about that
14507          breakpoint being disabled, and don't want to see more
14508          errors.  */
14509       if (e.error == NOT_FOUND_ERROR
14510           && (b->condition_not_parsed 
14511               || (b->loc && b->loc->shlib_disabled)
14512               || (b->loc && b->loc->pspace->executing_startup)
14513               || b->enable_state == bp_disabled))
14514         not_found_and_ok = 1;
14515
14516       if (!not_found_and_ok)
14517         {
14518           /* We surely don't want to warn about the same breakpoint
14519              10 times.  One solution, implemented here, is disable
14520              the breakpoint on error.  Another solution would be to
14521              have separate 'warning emitted' flag.  Since this
14522              happens only when a binary has changed, I don't know
14523              which approach is better.  */
14524           b->enable_state = bp_disabled;
14525           throw_exception (e);
14526         }
14527     }
14528
14529   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14530     {
14531       int i;
14532
14533       for (i = 0; i < sals.nelts; ++i)
14534         resolve_sal_pc (&sals.sals[i]);
14535       if (b->condition_not_parsed && s && s[0])
14536         {
14537           char *cond_string, *extra_string;
14538           int thread, task;
14539
14540           find_condition_and_thread (s, sals.sals[0].pc,
14541                                      &cond_string, &thread, &task,
14542                                      &extra_string);
14543           if (cond_string)
14544             b->cond_string = cond_string;
14545           b->thread = thread;
14546           b->task = task;
14547           if (extra_string)
14548             b->extra_string = extra_string;
14549           b->condition_not_parsed = 0;
14550         }
14551
14552       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14553         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14554
14555       *found = 1;
14556     }
14557   else
14558     *found = 0;
14559
14560   return sals;
14561 }
14562
14563 /* The default re_set method, for typical hardware or software
14564    breakpoints.  Reevaluate the breakpoint and recreate its
14565    locations.  */
14566
14567 static void
14568 breakpoint_re_set_default (struct breakpoint *b)
14569 {
14570   int found;
14571   struct symtabs_and_lines sals, sals_end;
14572   struct symtabs_and_lines expanded = {0};
14573   struct symtabs_and_lines expanded_end = {0};
14574
14575   sals = addr_string_to_sals (b, b->addr_string, &found);
14576   if (found)
14577     {
14578       make_cleanup (xfree, sals.sals);
14579       expanded = sals;
14580     }
14581
14582   if (b->addr_string_range_end)
14583     {
14584       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14585       if (found)
14586         {
14587           make_cleanup (xfree, sals_end.sals);
14588           expanded_end = sals_end;
14589         }
14590     }
14591
14592   update_breakpoint_locations (b, expanded, expanded_end);
14593 }
14594
14595 /* Default method for creating SALs from an address string.  It basically
14596    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14597
14598 static void
14599 create_sals_from_address_default (char **arg,
14600                                   struct linespec_result *canonical,
14601                                   enum bptype type_wanted,
14602                                   char *addr_start, char **copy_arg)
14603 {
14604   parse_breakpoint_sals (arg, canonical);
14605 }
14606
14607 /* Call create_breakpoints_sal for the given arguments.  This is the default
14608    function for the `create_breakpoints_sal' method of
14609    breakpoint_ops.  */
14610
14611 static void
14612 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14613                                 struct linespec_result *canonical,
14614                                 char *cond_string,
14615                                 char *extra_string,
14616                                 enum bptype type_wanted,
14617                                 enum bpdisp disposition,
14618                                 int thread,
14619                                 int task, int ignore_count,
14620                                 const struct breakpoint_ops *ops,
14621                                 int from_tty, int enabled,
14622                                 int internal, unsigned flags)
14623 {
14624   create_breakpoints_sal (gdbarch, canonical, cond_string,
14625                           extra_string,
14626                           type_wanted, disposition,
14627                           thread, task, ignore_count, ops, from_tty,
14628                           enabled, internal, flags);
14629 }
14630
14631 /* Decode the line represented by S by calling decode_line_full.  This is the
14632    default function for the `decode_linespec' method of breakpoint_ops.  */
14633
14634 static void
14635 decode_linespec_default (struct breakpoint *b, char **s,
14636                          struct symtabs_and_lines *sals)
14637 {
14638   struct linespec_result canonical;
14639
14640   init_linespec_result (&canonical);
14641   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14642                     (struct symtab *) NULL, 0,
14643                     &canonical, multiple_symbols_all,
14644                     b->filter);
14645
14646   /* We should get 0 or 1 resulting SALs.  */
14647   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14648
14649   if (VEC_length (linespec_sals, canonical.sals) > 0)
14650     {
14651       struct linespec_sals *lsal;
14652
14653       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14654       *sals = lsal->sals;
14655       /* Arrange it so the destructor does not free the
14656          contents.  */
14657       lsal->sals.sals = NULL;
14658     }
14659
14660   destroy_linespec_result (&canonical);
14661 }
14662
14663 /* Prepare the global context for a re-set of breakpoint B.  */
14664
14665 static struct cleanup *
14666 prepare_re_set_context (struct breakpoint *b)
14667 {
14668   struct cleanup *cleanups;
14669
14670   input_radix = b->input_radix;
14671   cleanups = save_current_space_and_thread ();
14672   if (b->pspace != NULL)
14673     switch_to_program_space_and_thread (b->pspace);
14674   set_language (b->language);
14675
14676   return cleanups;
14677 }
14678
14679 /* Reset a breakpoint given it's struct breakpoint * BINT.
14680    The value we return ends up being the return value from catch_errors.
14681    Unused in this case.  */
14682
14683 static int
14684 breakpoint_re_set_one (void *bint)
14685 {
14686   /* Get past catch_errs.  */
14687   struct breakpoint *b = (struct breakpoint *) bint;
14688   struct cleanup *cleanups;
14689
14690   cleanups = prepare_re_set_context (b);
14691   b->ops->re_set (b);
14692   do_cleanups (cleanups);
14693   return 0;
14694 }
14695
14696 /* Re-set all breakpoints after symbols have been re-loaded.  */
14697 void
14698 breakpoint_re_set (void)
14699 {
14700   struct breakpoint *b, *b_tmp;
14701   enum language save_language;
14702   int save_input_radix;
14703   struct cleanup *old_chain;
14704
14705   save_language = current_language->la_language;
14706   save_input_radix = input_radix;
14707   old_chain = save_current_program_space ();
14708
14709   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14710   {
14711     /* Format possible error msg.  */
14712     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14713                                 b->number);
14714     struct cleanup *cleanups = make_cleanup (xfree, message);
14715     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14716     do_cleanups (cleanups);
14717   }
14718   set_language (save_language);
14719   input_radix = save_input_radix;
14720
14721   jit_breakpoint_re_set ();
14722
14723   do_cleanups (old_chain);
14724
14725   create_overlay_event_breakpoint ();
14726   create_longjmp_master_breakpoint ();
14727   create_std_terminate_master_breakpoint ();
14728   create_exception_master_breakpoint ();
14729 }
14730 \f
14731 /* Reset the thread number of this breakpoint:
14732
14733    - If the breakpoint is for all threads, leave it as-is.
14734    - Else, reset it to the current thread for inferior_ptid.  */
14735 void
14736 breakpoint_re_set_thread (struct breakpoint *b)
14737 {
14738   if (b->thread != -1)
14739     {
14740       if (in_thread_list (inferior_ptid))
14741         b->thread = pid_to_thread_id (inferior_ptid);
14742
14743       /* We're being called after following a fork.  The new fork is
14744          selected as current, and unless this was a vfork will have a
14745          different program space from the original thread.  Reset that
14746          as well.  */
14747       b->loc->pspace = current_program_space;
14748     }
14749 }
14750
14751 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14752    If from_tty is nonzero, it prints a message to that effect,
14753    which ends with a period (no newline).  */
14754
14755 void
14756 set_ignore_count (int bptnum, int count, int from_tty)
14757 {
14758   struct breakpoint *b;
14759
14760   if (count < 0)
14761     count = 0;
14762
14763   ALL_BREAKPOINTS (b)
14764     if (b->number == bptnum)
14765     {
14766       if (is_tracepoint (b))
14767         {
14768           if (from_tty && count != 0)
14769             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14770                              bptnum);
14771           return;
14772         }
14773       
14774       b->ignore_count = count;
14775       if (from_tty)
14776         {
14777           if (count == 0)
14778             printf_filtered (_("Will stop next time "
14779                                "breakpoint %d is reached."),
14780                              bptnum);
14781           else if (count == 1)
14782             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14783                              bptnum);
14784           else
14785             printf_filtered (_("Will ignore next %d "
14786                                "crossings of breakpoint %d."),
14787                              count, bptnum);
14788         }
14789       observer_notify_breakpoint_modified (b);
14790       return;
14791     }
14792
14793   error (_("No breakpoint number %d."), bptnum);
14794 }
14795
14796 /* Command to set ignore-count of breakpoint N to COUNT.  */
14797
14798 static void
14799 ignore_command (char *args, int from_tty)
14800 {
14801   char *p = args;
14802   int num;
14803
14804   if (p == 0)
14805     error_no_arg (_("a breakpoint number"));
14806
14807   num = get_number (&p);
14808   if (num == 0)
14809     error (_("bad breakpoint number: '%s'"), args);
14810   if (*p == 0)
14811     error (_("Second argument (specified ignore-count) is missing."));
14812
14813   set_ignore_count (num,
14814                     longest_to_int (value_as_long (parse_and_eval (p))),
14815                     from_tty);
14816   if (from_tty)
14817     printf_filtered ("\n");
14818 }
14819 \f
14820 /* Call FUNCTION on each of the breakpoints
14821    whose numbers are given in ARGS.  */
14822
14823 static void
14824 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14825                                                       void *),
14826                         void *data)
14827 {
14828   int num;
14829   struct breakpoint *b, *tmp;
14830   int match;
14831   struct get_number_or_range_state state;
14832
14833   if (args == 0)
14834     error_no_arg (_("one or more breakpoint numbers"));
14835
14836   init_number_or_range (&state, args);
14837
14838   while (!state.finished)
14839     {
14840       const char *p = state.string;
14841
14842       match = 0;
14843
14844       num = get_number_or_range (&state);
14845       if (num == 0)
14846         {
14847           warning (_("bad breakpoint number at or near '%s'"), p);
14848         }
14849       else
14850         {
14851           ALL_BREAKPOINTS_SAFE (b, tmp)
14852             if (b->number == num)
14853               {
14854                 match = 1;
14855                 function (b, data);
14856                 break;
14857               }
14858           if (match == 0)
14859             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14860         }
14861     }
14862 }
14863
14864 static struct bp_location *
14865 find_location_by_number (char *number)
14866 {
14867   char *dot = strchr (number, '.');
14868   char *p1;
14869   int bp_num;
14870   int loc_num;
14871   struct breakpoint *b;
14872   struct bp_location *loc;  
14873
14874   *dot = '\0';
14875
14876   p1 = number;
14877   bp_num = get_number (&p1);
14878   if (bp_num == 0)
14879     error (_("Bad breakpoint number '%s'"), number);
14880
14881   ALL_BREAKPOINTS (b)
14882     if (b->number == bp_num)
14883       {
14884         break;
14885       }
14886
14887   if (!b || b->number != bp_num)
14888     error (_("Bad breakpoint number '%s'"), number);
14889   
14890   p1 = dot+1;
14891   loc_num = get_number (&p1);
14892   if (loc_num == 0)
14893     error (_("Bad breakpoint location number '%s'"), number);
14894
14895   --loc_num;
14896   loc = b->loc;
14897   for (;loc_num && loc; --loc_num, loc = loc->next)
14898     ;
14899   if (!loc)
14900     error (_("Bad breakpoint location number '%s'"), dot+1);
14901     
14902   return loc;  
14903 }
14904
14905
14906 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14907    If from_tty is nonzero, it prints a message to that effect,
14908    which ends with a period (no newline).  */
14909
14910 void
14911 disable_breakpoint (struct breakpoint *bpt)
14912 {
14913   /* Never disable a watchpoint scope breakpoint; we want to
14914      hit them when we leave scope so we can delete both the
14915      watchpoint and its scope breakpoint at that time.  */
14916   if (bpt->type == bp_watchpoint_scope)
14917     return;
14918
14919   bpt->enable_state = bp_disabled;
14920
14921   /* Mark breakpoint locations modified.  */
14922   mark_breakpoint_modified (bpt);
14923
14924   if (target_supports_enable_disable_tracepoint ()
14925       && current_trace_status ()->running && is_tracepoint (bpt))
14926     {
14927       struct bp_location *location;
14928      
14929       for (location = bpt->loc; location; location = location->next)
14930         target_disable_tracepoint (location);
14931     }
14932
14933   update_global_location_list (UGLL_DONT_INSERT);
14934
14935   observer_notify_breakpoint_modified (bpt);
14936 }
14937
14938 /* A callback for iterate_over_related_breakpoints.  */
14939
14940 static void
14941 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14942 {
14943   disable_breakpoint (b);
14944 }
14945
14946 /* A callback for map_breakpoint_numbers that calls
14947    disable_breakpoint.  */
14948
14949 static void
14950 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14951 {
14952   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14953 }
14954
14955 static void
14956 disable_command (char *args, int from_tty)
14957 {
14958   if (args == 0)
14959     {
14960       struct breakpoint *bpt;
14961
14962       ALL_BREAKPOINTS (bpt)
14963         if (user_breakpoint_p (bpt))
14964           disable_breakpoint (bpt);
14965     }
14966   else
14967     {
14968       char *num = extract_arg (&args);
14969
14970       while (num)
14971         {
14972           if (strchr (num, '.'))
14973             {
14974               struct bp_location *loc = find_location_by_number (num);
14975
14976               if (loc)
14977                 {
14978                   if (loc->enabled)
14979                     {
14980                       loc->enabled = 0;
14981                       mark_breakpoint_location_modified (loc);
14982                     }
14983                   if (target_supports_enable_disable_tracepoint ()
14984                       && current_trace_status ()->running && loc->owner
14985                       && is_tracepoint (loc->owner))
14986                     target_disable_tracepoint (loc);
14987                 }
14988               update_global_location_list (UGLL_DONT_INSERT);
14989             }
14990           else
14991             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14992           num = extract_arg (&args);
14993         }
14994     }
14995 }
14996
14997 static void
14998 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14999                         int count)
15000 {
15001   int target_resources_ok;
15002
15003   if (bpt->type == bp_hardware_breakpoint)
15004     {
15005       int i;
15006       i = hw_breakpoint_used_count ();
15007       target_resources_ok = 
15008         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
15009                                             i + 1, 0);
15010       if (target_resources_ok == 0)
15011         error (_("No hardware breakpoint support in the target."));
15012       else if (target_resources_ok < 0)
15013         error (_("Hardware breakpoints used exceeds limit."));
15014     }
15015
15016   if (is_watchpoint (bpt))
15017     {
15018       /* Initialize it just to avoid a GCC false warning.  */
15019       enum enable_state orig_enable_state = 0;
15020       volatile struct gdb_exception e;
15021
15022       TRY_CATCH (e, RETURN_MASK_ALL)
15023         {
15024           struct watchpoint *w = (struct watchpoint *) bpt;
15025
15026           orig_enable_state = bpt->enable_state;
15027           bpt->enable_state = bp_enabled;
15028           update_watchpoint (w, 1 /* reparse */);
15029         }
15030       if (e.reason < 0)
15031         {
15032           bpt->enable_state = orig_enable_state;
15033           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
15034                              bpt->number);
15035           return;
15036         }
15037     }
15038
15039   bpt->enable_state = bp_enabled;
15040
15041   /* Mark breakpoint locations modified.  */
15042   mark_breakpoint_modified (bpt);
15043
15044   if (target_supports_enable_disable_tracepoint ()
15045       && current_trace_status ()->running && is_tracepoint (bpt))
15046     {
15047       struct bp_location *location;
15048
15049       for (location = bpt->loc; location; location = location->next)
15050         target_enable_tracepoint (location);
15051     }
15052
15053   bpt->disposition = disposition;
15054   bpt->enable_count = count;
15055   update_global_location_list (UGLL_MAY_INSERT);
15056
15057   observer_notify_breakpoint_modified (bpt);
15058 }
15059
15060
15061 void
15062 enable_breakpoint (struct breakpoint *bpt)
15063 {
15064   enable_breakpoint_disp (bpt, bpt->disposition, 0);
15065 }
15066
15067 static void
15068 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
15069 {
15070   enable_breakpoint (bpt);
15071 }
15072
15073 /* A callback for map_breakpoint_numbers that calls
15074    enable_breakpoint.  */
15075
15076 static void
15077 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
15078 {
15079   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
15080 }
15081
15082 /* The enable command enables the specified breakpoints (or all defined
15083    breakpoints) so they once again become (or continue to be) effective
15084    in stopping the inferior.  */
15085
15086 static void
15087 enable_command (char *args, int from_tty)
15088 {
15089   if (args == 0)
15090     {
15091       struct breakpoint *bpt;
15092
15093       ALL_BREAKPOINTS (bpt)
15094         if (user_breakpoint_p (bpt))
15095           enable_breakpoint (bpt);
15096     }
15097   else
15098     {
15099       char *num = extract_arg (&args);
15100
15101       while (num)
15102         {
15103           if (strchr (num, '.'))
15104             {
15105               struct bp_location *loc = find_location_by_number (num);
15106
15107               if (loc)
15108                 {
15109                   if (!loc->enabled)
15110                     {
15111                       loc->enabled = 1;
15112                       mark_breakpoint_location_modified (loc);
15113                     }
15114                   if (target_supports_enable_disable_tracepoint ()
15115                       && current_trace_status ()->running && loc->owner
15116                       && is_tracepoint (loc->owner))
15117                     target_enable_tracepoint (loc);
15118                 }
15119               update_global_location_list (UGLL_MAY_INSERT);
15120             }
15121           else
15122             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
15123           num = extract_arg (&args);
15124         }
15125     }
15126 }
15127
15128 /* This struct packages up disposition data for application to multiple
15129    breakpoints.  */
15130
15131 struct disp_data
15132 {
15133   enum bpdisp disp;
15134   int count;
15135 };
15136
15137 static void
15138 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
15139 {
15140   struct disp_data disp_data = *(struct disp_data *) arg;
15141
15142   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
15143 }
15144
15145 static void
15146 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
15147 {
15148   struct disp_data disp = { disp_disable, 1 };
15149
15150   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15151 }
15152
15153 static void
15154 enable_once_command (char *args, int from_tty)
15155 {
15156   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
15157 }
15158
15159 static void
15160 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
15161 {
15162   struct disp_data disp = { disp_disable, *(int *) countptr };
15163
15164   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15165 }
15166
15167 static void
15168 enable_count_command (char *args, int from_tty)
15169 {
15170   int count = get_number (&args);
15171
15172   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
15173 }
15174
15175 static void
15176 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
15177 {
15178   struct disp_data disp = { disp_del, 1 };
15179
15180   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15181 }
15182
15183 static void
15184 enable_delete_command (char *args, int from_tty)
15185 {
15186   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
15187 }
15188 \f
15189 static void
15190 set_breakpoint_cmd (char *args, int from_tty)
15191 {
15192 }
15193
15194 static void
15195 show_breakpoint_cmd (char *args, int from_tty)
15196 {
15197 }
15198
15199 /* Invalidate last known value of any hardware watchpoint if
15200    the memory which that value represents has been written to by
15201    GDB itself.  */
15202
15203 static void
15204 invalidate_bp_value_on_memory_change (struct inferior *inferior,
15205                                       CORE_ADDR addr, ssize_t len,
15206                                       const bfd_byte *data)
15207 {
15208   struct breakpoint *bp;
15209
15210   ALL_BREAKPOINTS (bp)
15211     if (bp->enable_state == bp_enabled
15212         && bp->type == bp_hardware_watchpoint)
15213       {
15214         struct watchpoint *wp = (struct watchpoint *) bp;
15215
15216         if (wp->val_valid && wp->val)
15217           {
15218             struct bp_location *loc;
15219
15220             for (loc = bp->loc; loc != NULL; loc = loc->next)
15221               if (loc->loc_type == bp_loc_hardware_watchpoint
15222                   && loc->address + loc->length > addr
15223                   && addr + len > loc->address)
15224                 {
15225                   value_free (wp->val);
15226                   wp->val = NULL;
15227                   wp->val_valid = 0;
15228                 }
15229           }
15230       }
15231 }
15232
15233 /* Create and insert a breakpoint for software single step.  */
15234
15235 void
15236 insert_single_step_breakpoint (struct gdbarch *gdbarch,
15237                                struct address_space *aspace, 
15238                                CORE_ADDR next_pc)
15239 {
15240   struct thread_info *tp = inferior_thread ();
15241   struct symtab_and_line sal;
15242   CORE_ADDR pc = next_pc;
15243
15244   if (tp->control.single_step_breakpoints == NULL)
15245     {
15246       tp->control.single_step_breakpoints
15247         = new_single_step_breakpoint (tp->num, gdbarch);
15248     }
15249
15250   sal = find_pc_line (pc, 0);
15251   sal.pc = pc;
15252   sal.section = find_pc_overlay (pc);
15253   sal.explicit_pc = 1;
15254   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
15255
15256   update_global_location_list (UGLL_INSERT);
15257 }
15258
15259 /* See breakpoint.h.  */
15260
15261 int
15262 breakpoint_has_location_inserted_here (struct breakpoint *bp,
15263                                        struct address_space *aspace,
15264                                        CORE_ADDR pc)
15265 {
15266   struct bp_location *loc;
15267
15268   for (loc = bp->loc; loc != NULL; loc = loc->next)
15269     if (loc->inserted
15270         && breakpoint_location_address_match (loc, aspace, pc))
15271       return 1;
15272
15273   return 0;
15274 }
15275
15276 /* Check whether a software single-step breakpoint is inserted at
15277    PC.  */
15278
15279 int
15280 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15281                                         CORE_ADDR pc)
15282 {
15283   struct breakpoint *bpt;
15284
15285   ALL_BREAKPOINTS (bpt)
15286     {
15287       if (bpt->type == bp_single_step
15288           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
15289         return 1;
15290     }
15291   return 0;
15292 }
15293
15294 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15295    non-zero otherwise.  */
15296 static int
15297 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15298 {
15299   if (syscall_catchpoint_p (bp)
15300       && bp->enable_state != bp_disabled
15301       && bp->enable_state != bp_call_disabled)
15302     return 1;
15303   else
15304     return 0;
15305 }
15306
15307 int
15308 catch_syscall_enabled (void)
15309 {
15310   struct catch_syscall_inferior_data *inf_data
15311     = get_catch_syscall_inferior_data (current_inferior ());
15312
15313   return inf_data->total_syscalls_count != 0;
15314 }
15315
15316 int
15317 catching_syscall_number (int syscall_number)
15318 {
15319   struct breakpoint *bp;
15320
15321   ALL_BREAKPOINTS (bp)
15322     if (is_syscall_catchpoint_enabled (bp))
15323       {
15324         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15325
15326         if (c->syscalls_to_be_caught)
15327           {
15328             int i, iter;
15329             for (i = 0;
15330                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15331                  i++)
15332               if (syscall_number == iter)
15333                 return 1;
15334           }
15335         else
15336           return 1;
15337       }
15338
15339   return 0;
15340 }
15341
15342 /* Complete syscall names.  Used by "catch syscall".  */
15343 static VEC (char_ptr) *
15344 catch_syscall_completer (struct cmd_list_element *cmd,
15345                          const char *text, const char *word)
15346 {
15347   const char **list = get_syscall_names ();
15348   VEC (char_ptr) *retlist
15349     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15350
15351   xfree (list);
15352   return retlist;
15353 }
15354
15355 /* Tracepoint-specific operations.  */
15356
15357 /* Set tracepoint count to NUM.  */
15358 static void
15359 set_tracepoint_count (int num)
15360 {
15361   tracepoint_count = num;
15362   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15363 }
15364
15365 static void
15366 trace_command (char *arg, int from_tty)
15367 {
15368   struct breakpoint_ops *ops;
15369   const char *arg_cp = arg;
15370
15371   if (arg && probe_linespec_to_ops (&arg_cp))
15372     ops = &tracepoint_probe_breakpoint_ops;
15373   else
15374     ops = &tracepoint_breakpoint_ops;
15375
15376   create_breakpoint (get_current_arch (),
15377                      arg,
15378                      NULL, 0, NULL, 1 /* parse arg */,
15379                      0 /* tempflag */,
15380                      bp_tracepoint /* type_wanted */,
15381                      0 /* Ignore count */,
15382                      pending_break_support,
15383                      ops,
15384                      from_tty,
15385                      1 /* enabled */,
15386                      0 /* internal */, 0);
15387 }
15388
15389 static void
15390 ftrace_command (char *arg, int from_tty)
15391 {
15392   create_breakpoint (get_current_arch (),
15393                      arg,
15394                      NULL, 0, NULL, 1 /* parse arg */,
15395                      0 /* tempflag */,
15396                      bp_fast_tracepoint /* type_wanted */,
15397                      0 /* Ignore count */,
15398                      pending_break_support,
15399                      &tracepoint_breakpoint_ops,
15400                      from_tty,
15401                      1 /* enabled */,
15402                      0 /* internal */, 0);
15403 }
15404
15405 /* strace command implementation.  Creates a static tracepoint.  */
15406
15407 static void
15408 strace_command (char *arg, int from_tty)
15409 {
15410   struct breakpoint_ops *ops;
15411
15412   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15413      or with a normal static tracepoint.  */
15414   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15415     ops = &strace_marker_breakpoint_ops;
15416   else
15417     ops = &tracepoint_breakpoint_ops;
15418
15419   create_breakpoint (get_current_arch (),
15420                      arg,
15421                      NULL, 0, NULL, 1 /* parse arg */,
15422                      0 /* tempflag */,
15423                      bp_static_tracepoint /* type_wanted */,
15424                      0 /* Ignore count */,
15425                      pending_break_support,
15426                      ops,
15427                      from_tty,
15428                      1 /* enabled */,
15429                      0 /* internal */, 0);
15430 }
15431
15432 /* Set up a fake reader function that gets command lines from a linked
15433    list that was acquired during tracepoint uploading.  */
15434
15435 static struct uploaded_tp *this_utp;
15436 static int next_cmd;
15437
15438 static char *
15439 read_uploaded_action (void)
15440 {
15441   char *rslt;
15442
15443   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15444
15445   next_cmd++;
15446
15447   return rslt;
15448 }
15449
15450 /* Given information about a tracepoint as recorded on a target (which
15451    can be either a live system or a trace file), attempt to create an
15452    equivalent GDB tracepoint.  This is not a reliable process, since
15453    the target does not necessarily have all the information used when
15454    the tracepoint was originally defined.  */
15455   
15456 struct tracepoint *
15457 create_tracepoint_from_upload (struct uploaded_tp *utp)
15458 {
15459   char *addr_str, small_buf[100];
15460   struct tracepoint *tp;
15461
15462   if (utp->at_string)
15463     addr_str = utp->at_string;
15464   else
15465     {
15466       /* In the absence of a source location, fall back to raw
15467          address.  Since there is no way to confirm that the address
15468          means the same thing as when the trace was started, warn the
15469          user.  */
15470       warning (_("Uploaded tracepoint %d has no "
15471                  "source location, using raw address"),
15472                utp->number);
15473       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15474       addr_str = small_buf;
15475     }
15476
15477   /* There's not much we can do with a sequence of bytecodes.  */
15478   if (utp->cond && !utp->cond_string)
15479     warning (_("Uploaded tracepoint %d condition "
15480                "has no source form, ignoring it"),
15481              utp->number);
15482
15483   if (!create_breakpoint (get_current_arch (),
15484                           addr_str,
15485                           utp->cond_string, -1, NULL,
15486                           0 /* parse cond/thread */,
15487                           0 /* tempflag */,
15488                           utp->type /* type_wanted */,
15489                           0 /* Ignore count */,
15490                           pending_break_support,
15491                           &tracepoint_breakpoint_ops,
15492                           0 /* from_tty */,
15493                           utp->enabled /* enabled */,
15494                           0 /* internal */,
15495                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15496     return NULL;
15497
15498   /* Get the tracepoint we just created.  */
15499   tp = get_tracepoint (tracepoint_count);
15500   gdb_assert (tp != NULL);
15501
15502   if (utp->pass > 0)
15503     {
15504       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15505                  tp->base.number);
15506
15507       trace_pass_command (small_buf, 0);
15508     }
15509
15510   /* If we have uploaded versions of the original commands, set up a
15511      special-purpose "reader" function and call the usual command line
15512      reader, then pass the result to the breakpoint command-setting
15513      function.  */
15514   if (!VEC_empty (char_ptr, utp->cmd_strings))
15515     {
15516       struct command_line *cmd_list;
15517
15518       this_utp = utp;
15519       next_cmd = 0;
15520
15521       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15522
15523       breakpoint_set_commands (&tp->base, cmd_list);
15524     }
15525   else if (!VEC_empty (char_ptr, utp->actions)
15526            || !VEC_empty (char_ptr, utp->step_actions))
15527     warning (_("Uploaded tracepoint %d actions "
15528                "have no source form, ignoring them"),
15529              utp->number);
15530
15531   /* Copy any status information that might be available.  */
15532   tp->base.hit_count = utp->hit_count;
15533   tp->traceframe_usage = utp->traceframe_usage;
15534
15535   return tp;
15536 }
15537   
15538 /* Print information on tracepoint number TPNUM_EXP, or all if
15539    omitted.  */
15540
15541 static void
15542 tracepoints_info (char *args, int from_tty)
15543 {
15544   struct ui_out *uiout = current_uiout;
15545   int num_printed;
15546
15547   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15548
15549   if (num_printed == 0)
15550     {
15551       if (args == NULL || *args == '\0')
15552         ui_out_message (uiout, 0, "No tracepoints.\n");
15553       else
15554         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15555     }
15556
15557   default_collect_info ();
15558 }
15559
15560 /* The 'enable trace' command enables tracepoints.
15561    Not supported by all targets.  */
15562 static void
15563 enable_trace_command (char *args, int from_tty)
15564 {
15565   enable_command (args, from_tty);
15566 }
15567
15568 /* The 'disable trace' command disables tracepoints.
15569    Not supported by all targets.  */
15570 static void
15571 disable_trace_command (char *args, int from_tty)
15572 {
15573   disable_command (args, from_tty);
15574 }
15575
15576 /* Remove a tracepoint (or all if no argument).  */
15577 static void
15578 delete_trace_command (char *arg, int from_tty)
15579 {
15580   struct breakpoint *b, *b_tmp;
15581
15582   dont_repeat ();
15583
15584   if (arg == 0)
15585     {
15586       int breaks_to_delete = 0;
15587
15588       /* Delete all breakpoints if no argument.
15589          Do not delete internal or call-dummy breakpoints, these
15590          have to be deleted with an explicit breakpoint number 
15591          argument.  */
15592       ALL_TRACEPOINTS (b)
15593         if (is_tracepoint (b) && user_breakpoint_p (b))
15594           {
15595             breaks_to_delete = 1;
15596             break;
15597           }
15598
15599       /* Ask user only if there are some breakpoints to delete.  */
15600       if (!from_tty
15601           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15602         {
15603           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15604             if (is_tracepoint (b) && user_breakpoint_p (b))
15605               delete_breakpoint (b);
15606         }
15607     }
15608   else
15609     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15610 }
15611
15612 /* Helper function for trace_pass_command.  */
15613
15614 static void
15615 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15616 {
15617   tp->pass_count = count;
15618   observer_notify_breakpoint_modified (&tp->base);
15619   if (from_tty)
15620     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15621                      tp->base.number, count);
15622 }
15623
15624 /* Set passcount for tracepoint.
15625
15626    First command argument is passcount, second is tracepoint number.
15627    If tracepoint number omitted, apply to most recently defined.
15628    Also accepts special argument "all".  */
15629
15630 static void
15631 trace_pass_command (char *args, int from_tty)
15632 {
15633   struct tracepoint *t1;
15634   unsigned int count;
15635
15636   if (args == 0 || *args == 0)
15637     error (_("passcount command requires an "
15638              "argument (count + optional TP num)"));
15639
15640   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15641
15642   args = skip_spaces (args);
15643   if (*args && strncasecmp (args, "all", 3) == 0)
15644     {
15645       struct breakpoint *b;
15646
15647       args += 3;                        /* Skip special argument "all".  */
15648       if (*args)
15649         error (_("Junk at end of arguments."));
15650
15651       ALL_TRACEPOINTS (b)
15652       {
15653         t1 = (struct tracepoint *) b;
15654         trace_pass_set_count (t1, count, from_tty);
15655       }
15656     }
15657   else if (*args == '\0')
15658     {
15659       t1 = get_tracepoint_by_number (&args, NULL);
15660       if (t1)
15661         trace_pass_set_count (t1, count, from_tty);
15662     }
15663   else
15664     {
15665       struct get_number_or_range_state state;
15666
15667       init_number_or_range (&state, args);
15668       while (!state.finished)
15669         {
15670           t1 = get_tracepoint_by_number (&args, &state);
15671           if (t1)
15672             trace_pass_set_count (t1, count, from_tty);
15673         }
15674     }
15675 }
15676
15677 struct tracepoint *
15678 get_tracepoint (int num)
15679 {
15680   struct breakpoint *t;
15681
15682   ALL_TRACEPOINTS (t)
15683     if (t->number == num)
15684       return (struct tracepoint *) t;
15685
15686   return NULL;
15687 }
15688
15689 /* Find the tracepoint with the given target-side number (which may be
15690    different from the tracepoint number after disconnecting and
15691    reconnecting).  */
15692
15693 struct tracepoint *
15694 get_tracepoint_by_number_on_target (int num)
15695 {
15696   struct breakpoint *b;
15697
15698   ALL_TRACEPOINTS (b)
15699     {
15700       struct tracepoint *t = (struct tracepoint *) b;
15701
15702       if (t->number_on_target == num)
15703         return t;
15704     }
15705
15706   return NULL;
15707 }
15708
15709 /* Utility: parse a tracepoint number and look it up in the list.
15710    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15711    If the argument is missing, the most recent tracepoint
15712    (tracepoint_count) is returned.  */
15713
15714 struct tracepoint *
15715 get_tracepoint_by_number (char **arg,
15716                           struct get_number_or_range_state *state)
15717 {
15718   struct breakpoint *t;
15719   int tpnum;
15720   char *instring = arg == NULL ? NULL : *arg;
15721
15722   if (state)
15723     {
15724       gdb_assert (!state->finished);
15725       tpnum = get_number_or_range (state);
15726     }
15727   else if (arg == NULL || *arg == NULL || ! **arg)
15728     tpnum = tracepoint_count;
15729   else
15730     tpnum = get_number (arg);
15731
15732   if (tpnum <= 0)
15733     {
15734       if (instring && *instring)
15735         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15736                          instring);
15737       else
15738         printf_filtered (_("No previous tracepoint\n"));
15739       return NULL;
15740     }
15741
15742   ALL_TRACEPOINTS (t)
15743     if (t->number == tpnum)
15744     {
15745       return (struct tracepoint *) t;
15746     }
15747
15748   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15749   return NULL;
15750 }
15751
15752 void
15753 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15754 {
15755   if (b->thread != -1)
15756     fprintf_unfiltered (fp, " thread %d", b->thread);
15757
15758   if (b->task != 0)
15759     fprintf_unfiltered (fp, " task %d", b->task);
15760
15761   fprintf_unfiltered (fp, "\n");
15762 }
15763
15764 /* Save information on user settable breakpoints (watchpoints, etc) to
15765    a new script file named FILENAME.  If FILTER is non-NULL, call it
15766    on each breakpoint and only include the ones for which it returns
15767    non-zero.  */
15768
15769 static void
15770 save_breakpoints (char *filename, int from_tty,
15771                   int (*filter) (const struct breakpoint *))
15772 {
15773   struct breakpoint *tp;
15774   int any = 0;
15775   struct cleanup *cleanup;
15776   struct ui_file *fp;
15777   int extra_trace_bits = 0;
15778
15779   if (filename == 0 || *filename == 0)
15780     error (_("Argument required (file name in which to save)"));
15781
15782   /* See if we have anything to save.  */
15783   ALL_BREAKPOINTS (tp)
15784   {
15785     /* Skip internal and momentary breakpoints.  */
15786     if (!user_breakpoint_p (tp))
15787       continue;
15788
15789     /* If we have a filter, only save the breakpoints it accepts.  */
15790     if (filter && !filter (tp))
15791       continue;
15792
15793     any = 1;
15794
15795     if (is_tracepoint (tp))
15796       {
15797         extra_trace_bits = 1;
15798
15799         /* We can stop searching.  */
15800         break;
15801       }
15802   }
15803
15804   if (!any)
15805     {
15806       warning (_("Nothing to save."));
15807       return;
15808     }
15809
15810   filename = tilde_expand (filename);
15811   cleanup = make_cleanup (xfree, filename);
15812   fp = gdb_fopen (filename, "w");
15813   if (!fp)
15814     error (_("Unable to open file '%s' for saving (%s)"),
15815            filename, safe_strerror (errno));
15816   make_cleanup_ui_file_delete (fp);
15817
15818   if (extra_trace_bits)
15819     save_trace_state_variables (fp);
15820
15821   ALL_BREAKPOINTS (tp)
15822   {
15823     /* Skip internal and momentary breakpoints.  */
15824     if (!user_breakpoint_p (tp))
15825       continue;
15826
15827     /* If we have a filter, only save the breakpoints it accepts.  */
15828     if (filter && !filter (tp))
15829       continue;
15830
15831     tp->ops->print_recreate (tp, fp);
15832
15833     /* Note, we can't rely on tp->number for anything, as we can't
15834        assume the recreated breakpoint numbers will match.  Use $bpnum
15835        instead.  */
15836
15837     if (tp->cond_string)
15838       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15839
15840     if (tp->ignore_count)
15841       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15842
15843     if (tp->type != bp_dprintf && tp->commands)
15844       {
15845         volatile struct gdb_exception ex;       
15846
15847         fprintf_unfiltered (fp, "  commands\n");
15848         
15849         ui_out_redirect (current_uiout, fp);
15850         TRY_CATCH (ex, RETURN_MASK_ALL)
15851           {
15852             print_command_lines (current_uiout, tp->commands->commands, 2);
15853           }
15854         ui_out_redirect (current_uiout, NULL);
15855
15856         if (ex.reason < 0)
15857           throw_exception (ex);
15858
15859         fprintf_unfiltered (fp, "  end\n");
15860       }
15861
15862     if (tp->enable_state == bp_disabled)
15863       fprintf_unfiltered (fp, "disable $bpnum\n");
15864
15865     /* If this is a multi-location breakpoint, check if the locations
15866        should be individually disabled.  Watchpoint locations are
15867        special, and not user visible.  */
15868     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15869       {
15870         struct bp_location *loc;
15871         int n = 1;
15872
15873         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15874           if (!loc->enabled)
15875             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15876       }
15877   }
15878
15879   if (extra_trace_bits && *default_collect)
15880     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15881
15882   if (from_tty)
15883     printf_filtered (_("Saved to file '%s'.\n"), filename);
15884   do_cleanups (cleanup);
15885 }
15886
15887 /* The `save breakpoints' command.  */
15888
15889 static void
15890 save_breakpoints_command (char *args, int from_tty)
15891 {
15892   save_breakpoints (args, from_tty, NULL);
15893 }
15894
15895 /* The `save tracepoints' command.  */
15896
15897 static void
15898 save_tracepoints_command (char *args, int from_tty)
15899 {
15900   save_breakpoints (args, from_tty, is_tracepoint);
15901 }
15902
15903 /* Create a vector of all tracepoints.  */
15904
15905 VEC(breakpoint_p) *
15906 all_tracepoints (void)
15907 {
15908   VEC(breakpoint_p) *tp_vec = 0;
15909   struct breakpoint *tp;
15910
15911   ALL_TRACEPOINTS (tp)
15912   {
15913     VEC_safe_push (breakpoint_p, tp_vec, tp);
15914   }
15915
15916   return tp_vec;
15917 }
15918
15919 \f
15920 /* This help string is used for the break, hbreak, tbreak and thbreak
15921    commands.  It is defined as a macro to prevent duplication.
15922    COMMAND should be a string constant containing the name of the
15923    command.  */
15924 #define BREAK_ARGS_HELP(command) \
15925 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15926 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15927 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15928 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15929 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15930 If a line number is specified, break at start of code for that line.\n\
15931 If a function is specified, break at start of code for that function.\n\
15932 If an address is specified, break at that exact address.\n\
15933 With no LOCATION, uses current execution address of the selected\n\
15934 stack frame.  This is useful for breaking on return to a stack frame.\n\
15935 \n\
15936 THREADNUM is the number from \"info threads\".\n\
15937 CONDITION is a boolean expression.\n\
15938 \n\
15939 Multiple breakpoints at one place are permitted, and useful if their\n\
15940 conditions are different.\n\
15941 \n\
15942 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15943
15944 /* List of subcommands for "catch".  */
15945 static struct cmd_list_element *catch_cmdlist;
15946
15947 /* List of subcommands for "tcatch".  */
15948 static struct cmd_list_element *tcatch_cmdlist;
15949
15950 void
15951 add_catch_command (char *name, char *docstring,
15952                    cmd_sfunc_ftype *sfunc,
15953                    completer_ftype *completer,
15954                    void *user_data_catch,
15955                    void *user_data_tcatch)
15956 {
15957   struct cmd_list_element *command;
15958
15959   command = add_cmd (name, class_breakpoint, NULL, docstring,
15960                      &catch_cmdlist);
15961   set_cmd_sfunc (command, sfunc);
15962   set_cmd_context (command, user_data_catch);
15963   set_cmd_completer (command, completer);
15964
15965   command = add_cmd (name, class_breakpoint, NULL, docstring,
15966                      &tcatch_cmdlist);
15967   set_cmd_sfunc (command, sfunc);
15968   set_cmd_context (command, user_data_tcatch);
15969   set_cmd_completer (command, completer);
15970 }
15971
15972 static void
15973 clear_syscall_counts (struct inferior *inf)
15974 {
15975   struct catch_syscall_inferior_data *inf_data
15976     = get_catch_syscall_inferior_data (inf);
15977
15978   inf_data->total_syscalls_count = 0;
15979   inf_data->any_syscall_count = 0;
15980   VEC_free (int, inf_data->syscalls_counts);
15981 }
15982
15983 static void
15984 save_command (char *arg, int from_tty)
15985 {
15986   printf_unfiltered (_("\"save\" must be followed by "
15987                        "the name of a save subcommand.\n"));
15988   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15989 }
15990
15991 struct breakpoint *
15992 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15993                           void *data)
15994 {
15995   struct breakpoint *b, *b_tmp;
15996
15997   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15998     {
15999       if ((*callback) (b, data))
16000         return b;
16001     }
16002
16003   return NULL;
16004 }
16005
16006 /* Zero if any of the breakpoint's locations could be a location where
16007    functions have been inlined, nonzero otherwise.  */
16008
16009 static int
16010 is_non_inline_function (struct breakpoint *b)
16011 {
16012   /* The shared library event breakpoint is set on the address of a
16013      non-inline function.  */
16014   if (b->type == bp_shlib_event)
16015     return 1;
16016
16017   return 0;
16018 }
16019
16020 /* Nonzero if the specified PC cannot be a location where functions
16021    have been inlined.  */
16022
16023 int
16024 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
16025                            const struct target_waitstatus *ws)
16026 {
16027   struct breakpoint *b;
16028   struct bp_location *bl;
16029
16030   ALL_BREAKPOINTS (b)
16031     {
16032       if (!is_non_inline_function (b))
16033         continue;
16034
16035       for (bl = b->loc; bl != NULL; bl = bl->next)
16036         {
16037           if (!bl->shlib_disabled
16038               && bpstat_check_location (bl, aspace, pc, ws))
16039             return 1;
16040         }
16041     }
16042
16043   return 0;
16044 }
16045
16046 /* Remove any references to OBJFILE which is going to be freed.  */
16047
16048 void
16049 breakpoint_free_objfile (struct objfile *objfile)
16050 {
16051   struct bp_location **locp, *loc;
16052
16053   ALL_BP_LOCATIONS (loc, locp)
16054     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
16055       loc->symtab = NULL;
16056 }
16057
16058 void
16059 initialize_breakpoint_ops (void)
16060 {
16061   static int initialized = 0;
16062
16063   struct breakpoint_ops *ops;
16064
16065   if (initialized)
16066     return;
16067   initialized = 1;
16068
16069   /* The breakpoint_ops structure to be inherit by all kinds of
16070      breakpoints (real breakpoints, i.e., user "break" breakpoints,
16071      internal and momentary breakpoints, etc.).  */
16072   ops = &bkpt_base_breakpoint_ops;
16073   *ops = base_breakpoint_ops;
16074   ops->re_set = bkpt_re_set;
16075   ops->insert_location = bkpt_insert_location;
16076   ops->remove_location = bkpt_remove_location;
16077   ops->breakpoint_hit = bkpt_breakpoint_hit;
16078   ops->create_sals_from_address = bkpt_create_sals_from_address;
16079   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
16080   ops->decode_linespec = bkpt_decode_linespec;
16081
16082   /* The breakpoint_ops structure to be used in regular breakpoints.  */
16083   ops = &bkpt_breakpoint_ops;
16084   *ops = bkpt_base_breakpoint_ops;
16085   ops->re_set = bkpt_re_set;
16086   ops->resources_needed = bkpt_resources_needed;
16087   ops->print_it = bkpt_print_it;
16088   ops->print_mention = bkpt_print_mention;
16089   ops->print_recreate = bkpt_print_recreate;
16090
16091   /* Ranged breakpoints.  */
16092   ops = &ranged_breakpoint_ops;
16093   *ops = bkpt_breakpoint_ops;
16094   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
16095   ops->resources_needed = resources_needed_ranged_breakpoint;
16096   ops->print_it = print_it_ranged_breakpoint;
16097   ops->print_one = print_one_ranged_breakpoint;
16098   ops->print_one_detail = print_one_detail_ranged_breakpoint;
16099   ops->print_mention = print_mention_ranged_breakpoint;
16100   ops->print_recreate = print_recreate_ranged_breakpoint;
16101
16102   /* Internal breakpoints.  */
16103   ops = &internal_breakpoint_ops;
16104   *ops = bkpt_base_breakpoint_ops;
16105   ops->re_set = internal_bkpt_re_set;
16106   ops->check_status = internal_bkpt_check_status;
16107   ops->print_it = internal_bkpt_print_it;
16108   ops->print_mention = internal_bkpt_print_mention;
16109
16110   /* Momentary breakpoints.  */
16111   ops = &momentary_breakpoint_ops;
16112   *ops = bkpt_base_breakpoint_ops;
16113   ops->re_set = momentary_bkpt_re_set;
16114   ops->check_status = momentary_bkpt_check_status;
16115   ops->print_it = momentary_bkpt_print_it;
16116   ops->print_mention = momentary_bkpt_print_mention;
16117
16118   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
16119   ops = &longjmp_breakpoint_ops;
16120   *ops = momentary_breakpoint_ops;
16121   ops->dtor = longjmp_bkpt_dtor;
16122
16123   /* Probe breakpoints.  */
16124   ops = &bkpt_probe_breakpoint_ops;
16125   *ops = bkpt_breakpoint_ops;
16126   ops->insert_location = bkpt_probe_insert_location;
16127   ops->remove_location = bkpt_probe_remove_location;
16128   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
16129   ops->decode_linespec = bkpt_probe_decode_linespec;
16130
16131   /* Watchpoints.  */
16132   ops = &watchpoint_breakpoint_ops;
16133   *ops = base_breakpoint_ops;
16134   ops->dtor = dtor_watchpoint;
16135   ops->re_set = re_set_watchpoint;
16136   ops->insert_location = insert_watchpoint;
16137   ops->remove_location = remove_watchpoint;
16138   ops->breakpoint_hit = breakpoint_hit_watchpoint;
16139   ops->check_status = check_status_watchpoint;
16140   ops->resources_needed = resources_needed_watchpoint;
16141   ops->works_in_software_mode = works_in_software_mode_watchpoint;
16142   ops->print_it = print_it_watchpoint;
16143   ops->print_mention = print_mention_watchpoint;
16144   ops->print_recreate = print_recreate_watchpoint;
16145   ops->explains_signal = explains_signal_watchpoint;
16146
16147   /* Masked watchpoints.  */
16148   ops = &masked_watchpoint_breakpoint_ops;
16149   *ops = watchpoint_breakpoint_ops;
16150   ops->insert_location = insert_masked_watchpoint;
16151   ops->remove_location = remove_masked_watchpoint;
16152   ops->resources_needed = resources_needed_masked_watchpoint;
16153   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
16154   ops->print_it = print_it_masked_watchpoint;
16155   ops->print_one_detail = print_one_detail_masked_watchpoint;
16156   ops->print_mention = print_mention_masked_watchpoint;
16157   ops->print_recreate = print_recreate_masked_watchpoint;
16158
16159   /* Tracepoints.  */
16160   ops = &tracepoint_breakpoint_ops;
16161   *ops = base_breakpoint_ops;
16162   ops->re_set = tracepoint_re_set;
16163   ops->breakpoint_hit = tracepoint_breakpoint_hit;
16164   ops->print_one_detail = tracepoint_print_one_detail;
16165   ops->print_mention = tracepoint_print_mention;
16166   ops->print_recreate = tracepoint_print_recreate;
16167   ops->create_sals_from_address = tracepoint_create_sals_from_address;
16168   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
16169   ops->decode_linespec = tracepoint_decode_linespec;
16170
16171   /* Probe tracepoints.  */
16172   ops = &tracepoint_probe_breakpoint_ops;
16173   *ops = tracepoint_breakpoint_ops;
16174   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
16175   ops->decode_linespec = tracepoint_probe_decode_linespec;
16176
16177   /* Static tracepoints with marker (`-m').  */
16178   ops = &strace_marker_breakpoint_ops;
16179   *ops = tracepoint_breakpoint_ops;
16180   ops->create_sals_from_address = strace_marker_create_sals_from_address;
16181   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
16182   ops->decode_linespec = strace_marker_decode_linespec;
16183
16184   /* Fork catchpoints.  */
16185   ops = &catch_fork_breakpoint_ops;
16186   *ops = base_breakpoint_ops;
16187   ops->insert_location = insert_catch_fork;
16188   ops->remove_location = remove_catch_fork;
16189   ops->breakpoint_hit = breakpoint_hit_catch_fork;
16190   ops->print_it = print_it_catch_fork;
16191   ops->print_one = print_one_catch_fork;
16192   ops->print_mention = print_mention_catch_fork;
16193   ops->print_recreate = print_recreate_catch_fork;
16194
16195   /* Vfork catchpoints.  */
16196   ops = &catch_vfork_breakpoint_ops;
16197   *ops = base_breakpoint_ops;
16198   ops->insert_location = insert_catch_vfork;
16199   ops->remove_location = remove_catch_vfork;
16200   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16201   ops->print_it = print_it_catch_vfork;
16202   ops->print_one = print_one_catch_vfork;
16203   ops->print_mention = print_mention_catch_vfork;
16204   ops->print_recreate = print_recreate_catch_vfork;
16205
16206   /* Exec catchpoints.  */
16207   ops = &catch_exec_breakpoint_ops;
16208   *ops = base_breakpoint_ops;
16209   ops->dtor = dtor_catch_exec;
16210   ops->insert_location = insert_catch_exec;
16211   ops->remove_location = remove_catch_exec;
16212   ops->breakpoint_hit = breakpoint_hit_catch_exec;
16213   ops->print_it = print_it_catch_exec;
16214   ops->print_one = print_one_catch_exec;
16215   ops->print_mention = print_mention_catch_exec;
16216   ops->print_recreate = print_recreate_catch_exec;
16217
16218   /* Syscall catchpoints.  */
16219   ops = &catch_syscall_breakpoint_ops;
16220   *ops = base_breakpoint_ops;
16221   ops->dtor = dtor_catch_syscall;
16222   ops->insert_location = insert_catch_syscall;
16223   ops->remove_location = remove_catch_syscall;
16224   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
16225   ops->print_it = print_it_catch_syscall;
16226   ops->print_one = print_one_catch_syscall;
16227   ops->print_mention = print_mention_catch_syscall;
16228   ops->print_recreate = print_recreate_catch_syscall;
16229
16230   /* Solib-related catchpoints.  */
16231   ops = &catch_solib_breakpoint_ops;
16232   *ops = base_breakpoint_ops;
16233   ops->dtor = dtor_catch_solib;
16234   ops->insert_location = insert_catch_solib;
16235   ops->remove_location = remove_catch_solib;
16236   ops->breakpoint_hit = breakpoint_hit_catch_solib;
16237   ops->check_status = check_status_catch_solib;
16238   ops->print_it = print_it_catch_solib;
16239   ops->print_one = print_one_catch_solib;
16240   ops->print_mention = print_mention_catch_solib;
16241   ops->print_recreate = print_recreate_catch_solib;
16242
16243   ops = &dprintf_breakpoint_ops;
16244   *ops = bkpt_base_breakpoint_ops;
16245   ops->re_set = dprintf_re_set;
16246   ops->resources_needed = bkpt_resources_needed;
16247   ops->print_it = bkpt_print_it;
16248   ops->print_mention = bkpt_print_mention;
16249   ops->print_recreate = dprintf_print_recreate;
16250   ops->after_condition_true = dprintf_after_condition_true;
16251   ops->breakpoint_hit = dprintf_breakpoint_hit;
16252 }
16253
16254 /* Chain containing all defined "enable breakpoint" subcommands.  */
16255
16256 static struct cmd_list_element *enablebreaklist = NULL;
16257
16258 void
16259 _initialize_breakpoint (void)
16260 {
16261   struct cmd_list_element *c;
16262
16263   initialize_breakpoint_ops ();
16264
16265   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16266   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16267   observer_attach_inferior_exit (clear_syscall_counts);
16268   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16269
16270   breakpoint_objfile_key
16271     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16272
16273   catch_syscall_inferior_data
16274     = register_inferior_data_with_cleanup (NULL,
16275                                            catch_syscall_inferior_data_cleanup);
16276
16277   breakpoint_chain = 0;
16278   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16279      before a breakpoint is set.  */
16280   breakpoint_count = 0;
16281
16282   tracepoint_count = 0;
16283
16284   add_com ("ignore", class_breakpoint, ignore_command, _("\
16285 Set ignore-count of breakpoint number N to COUNT.\n\
16286 Usage is `ignore N COUNT'."));
16287   if (xdb_commands)
16288     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16289
16290   add_com ("commands", class_breakpoint, commands_command, _("\
16291 Set commands to be executed when a breakpoint is hit.\n\
16292 Give breakpoint number as argument after \"commands\".\n\
16293 With no argument, the targeted breakpoint is the last one set.\n\
16294 The commands themselves follow starting on the next line.\n\
16295 Type a line containing \"end\" to indicate the end of them.\n\
16296 Give \"silent\" as the first line to make the breakpoint silent;\n\
16297 then no output is printed when it is hit, except what the commands print."));
16298
16299   c = add_com ("condition", class_breakpoint, condition_command, _("\
16300 Specify breakpoint number N to break only if COND is true.\n\
16301 Usage is `condition N COND', where N is an integer and COND is an\n\
16302 expression to be evaluated whenever breakpoint N is reached."));
16303   set_cmd_completer (c, condition_completer);
16304
16305   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16306 Set a temporary breakpoint.\n\
16307 Like \"break\" except the breakpoint is only temporary,\n\
16308 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16309 by using \"enable delete\" on the breakpoint number.\n\
16310 \n"
16311 BREAK_ARGS_HELP ("tbreak")));
16312   set_cmd_completer (c, location_completer);
16313
16314   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16315 Set a hardware assisted breakpoint.\n\
16316 Like \"break\" except the breakpoint requires hardware support,\n\
16317 some target hardware may not have this support.\n\
16318 \n"
16319 BREAK_ARGS_HELP ("hbreak")));
16320   set_cmd_completer (c, location_completer);
16321
16322   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16323 Set a temporary hardware assisted breakpoint.\n\
16324 Like \"hbreak\" except the breakpoint is only temporary,\n\
16325 so it will be deleted when hit.\n\
16326 \n"
16327 BREAK_ARGS_HELP ("thbreak")));
16328   set_cmd_completer (c, location_completer);
16329
16330   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16331 Enable some breakpoints.\n\
16332 Give breakpoint numbers (separated by spaces) as arguments.\n\
16333 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16334 This is used to cancel the effect of the \"disable\" command.\n\
16335 With a subcommand you can enable temporarily."),
16336                   &enablelist, "enable ", 1, &cmdlist);
16337   if (xdb_commands)
16338     add_com ("ab", class_breakpoint, enable_command, _("\
16339 Enable some breakpoints.\n\
16340 Give breakpoint numbers (separated by spaces) as arguments.\n\
16341 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16342 This is used to cancel the effect of the \"disable\" command.\n\
16343 With a subcommand you can enable temporarily."));
16344
16345   add_com_alias ("en", "enable", class_breakpoint, 1);
16346
16347   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16348 Enable some breakpoints.\n\
16349 Give breakpoint numbers (separated by spaces) as arguments.\n\
16350 This is used to cancel the effect of the \"disable\" command.\n\
16351 May be abbreviated to simply \"enable\".\n"),
16352                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16353
16354   add_cmd ("once", no_class, enable_once_command, _("\
16355 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16356 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16357            &enablebreaklist);
16358
16359   add_cmd ("delete", no_class, enable_delete_command, _("\
16360 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16361 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16362            &enablebreaklist);
16363
16364   add_cmd ("count", no_class, enable_count_command, _("\
16365 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16366 If a breakpoint is hit while enabled in this fashion,\n\
16367 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16368            &enablebreaklist);
16369
16370   add_cmd ("delete", no_class, enable_delete_command, _("\
16371 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16372 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16373            &enablelist);
16374
16375   add_cmd ("once", no_class, enable_once_command, _("\
16376 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16377 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16378            &enablelist);
16379
16380   add_cmd ("count", no_class, enable_count_command, _("\
16381 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16382 If a breakpoint is hit while enabled in this fashion,\n\
16383 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16384            &enablelist);
16385
16386   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16387 Disable some breakpoints.\n\
16388 Arguments are breakpoint numbers with spaces in between.\n\
16389 To disable all breakpoints, give no argument.\n\
16390 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16391                   &disablelist, "disable ", 1, &cmdlist);
16392   add_com_alias ("dis", "disable", class_breakpoint, 1);
16393   add_com_alias ("disa", "disable", class_breakpoint, 1);
16394   if (xdb_commands)
16395     add_com ("sb", class_breakpoint, disable_command, _("\
16396 Disable some breakpoints.\n\
16397 Arguments are breakpoint numbers with spaces in between.\n\
16398 To disable all breakpoints, give no argument.\n\
16399 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16400
16401   add_cmd ("breakpoints", class_alias, disable_command, _("\
16402 Disable some breakpoints.\n\
16403 Arguments are breakpoint numbers with spaces in between.\n\
16404 To disable all breakpoints, give no argument.\n\
16405 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16406 This command may be abbreviated \"disable\"."),
16407            &disablelist);
16408
16409   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16410 Delete some breakpoints or auto-display expressions.\n\
16411 Arguments are breakpoint numbers with spaces in between.\n\
16412 To delete all breakpoints, give no argument.\n\
16413 \n\
16414 Also a prefix command for deletion of other GDB objects.\n\
16415 The \"unset\" command is also an alias for \"delete\"."),
16416                   &deletelist, "delete ", 1, &cmdlist);
16417   add_com_alias ("d", "delete", class_breakpoint, 1);
16418   add_com_alias ("del", "delete", class_breakpoint, 1);
16419   if (xdb_commands)
16420     add_com ("db", class_breakpoint, delete_command, _("\
16421 Delete some breakpoints.\n\
16422 Arguments are breakpoint numbers with spaces in between.\n\
16423 To delete all breakpoints, give no argument.\n"));
16424
16425   add_cmd ("breakpoints", class_alias, delete_command, _("\
16426 Delete some breakpoints or auto-display expressions.\n\
16427 Arguments are breakpoint numbers with spaces in between.\n\
16428 To delete all breakpoints, give no argument.\n\
16429 This command may be abbreviated \"delete\"."),
16430            &deletelist);
16431
16432   add_com ("clear", class_breakpoint, clear_command, _("\
16433 Clear breakpoint at specified line or function.\n\
16434 Argument may be line number, function name, or \"*\" and an address.\n\
16435 If line number is specified, all breakpoints in that line are cleared.\n\
16436 If function is specified, breakpoints at beginning of function are cleared.\n\
16437 If an address is specified, breakpoints at that address are cleared.\n\
16438 \n\
16439 With no argument, clears all breakpoints in the line that the selected frame\n\
16440 is executing in.\n\
16441 \n\
16442 See also the \"delete\" command which clears breakpoints by number."));
16443   add_com_alias ("cl", "clear", class_breakpoint, 1);
16444
16445   c = add_com ("break", class_breakpoint, break_command, _("\
16446 Set breakpoint at specified line or function.\n"
16447 BREAK_ARGS_HELP ("break")));
16448   set_cmd_completer (c, location_completer);
16449
16450   add_com_alias ("b", "break", class_run, 1);
16451   add_com_alias ("br", "break", class_run, 1);
16452   add_com_alias ("bre", "break", class_run, 1);
16453   add_com_alias ("brea", "break", class_run, 1);
16454
16455   if (xdb_commands)
16456    add_com_alias ("ba", "break", class_breakpoint, 1);
16457
16458   if (dbx_commands)
16459     {
16460       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16461 Break in function/address or break at a line in the current file."),
16462                              &stoplist, "stop ", 1, &cmdlist);
16463       add_cmd ("in", class_breakpoint, stopin_command,
16464                _("Break in function or address."), &stoplist);
16465       add_cmd ("at", class_breakpoint, stopat_command,
16466                _("Break at a line in the current file."), &stoplist);
16467       add_com ("status", class_info, breakpoints_info, _("\
16468 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16469 The \"Type\" column indicates one of:\n\
16470 \tbreakpoint     - normal breakpoint\n\
16471 \twatchpoint     - watchpoint\n\
16472 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16473 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16474 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16475 address and file/line number respectively.\n\
16476 \n\
16477 Convenience variable \"$_\" and default examine address for \"x\"\n\
16478 are set to the address of the last breakpoint listed unless the command\n\
16479 is prefixed with \"server \".\n\n\
16480 Convenience variable \"$bpnum\" contains the number of the last\n\
16481 breakpoint set."));
16482     }
16483
16484   add_info ("breakpoints", breakpoints_info, _("\
16485 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16486 The \"Type\" column indicates one of:\n\
16487 \tbreakpoint     - normal breakpoint\n\
16488 \twatchpoint     - watchpoint\n\
16489 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16490 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16491 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16492 address and file/line number respectively.\n\
16493 \n\
16494 Convenience variable \"$_\" and default examine address for \"x\"\n\
16495 are set to the address of the last breakpoint listed unless the command\n\
16496 is prefixed with \"server \".\n\n\
16497 Convenience variable \"$bpnum\" contains the number of the last\n\
16498 breakpoint set."));
16499
16500   add_info_alias ("b", "breakpoints", 1);
16501
16502   if (xdb_commands)
16503     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16504 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16505 The \"Type\" column indicates one of:\n\
16506 \tbreakpoint     - normal breakpoint\n\
16507 \twatchpoint     - watchpoint\n\
16508 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16509 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16510 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16511 address and file/line number respectively.\n\
16512 \n\
16513 Convenience variable \"$_\" and default examine address for \"x\"\n\
16514 are set to the address of the last breakpoint listed unless the command\n\
16515 is prefixed with \"server \".\n\n\
16516 Convenience variable \"$bpnum\" contains the number of the last\n\
16517 breakpoint set."));
16518
16519   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16520 Status of all breakpoints, or breakpoint number NUMBER.\n\
16521 The \"Type\" column indicates one of:\n\
16522 \tbreakpoint     - normal breakpoint\n\
16523 \twatchpoint     - watchpoint\n\
16524 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16525 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16526 \tuntil          - internal breakpoint used by the \"until\" command\n\
16527 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16528 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16529 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16530 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16531 address and file/line number respectively.\n\
16532 \n\
16533 Convenience variable \"$_\" and default examine address for \"x\"\n\
16534 are set to the address of the last breakpoint listed unless the command\n\
16535 is prefixed with \"server \".\n\n\
16536 Convenience variable \"$bpnum\" contains the number of the last\n\
16537 breakpoint set."),
16538            &maintenanceinfolist);
16539
16540   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16541 Set catchpoints to catch events."),
16542                   &catch_cmdlist, "catch ",
16543                   0/*allow-unknown*/, &cmdlist);
16544
16545   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16546 Set temporary catchpoints to catch events."),
16547                   &tcatch_cmdlist, "tcatch ",
16548                   0/*allow-unknown*/, &cmdlist);
16549
16550   add_catch_command ("fork", _("Catch calls to fork."),
16551                      catch_fork_command_1,
16552                      NULL,
16553                      (void *) (uintptr_t) catch_fork_permanent,
16554                      (void *) (uintptr_t) catch_fork_temporary);
16555   add_catch_command ("vfork", _("Catch calls to vfork."),
16556                      catch_fork_command_1,
16557                      NULL,
16558                      (void *) (uintptr_t) catch_vfork_permanent,
16559                      (void *) (uintptr_t) catch_vfork_temporary);
16560   add_catch_command ("exec", _("Catch calls to exec."),
16561                      catch_exec_command_1,
16562                      NULL,
16563                      CATCH_PERMANENT,
16564                      CATCH_TEMPORARY);
16565   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16566 Usage: catch load [REGEX]\n\
16567 If REGEX is given, only stop for libraries matching the regular expression."),
16568                      catch_load_command_1,
16569                      NULL,
16570                      CATCH_PERMANENT,
16571                      CATCH_TEMPORARY);
16572   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16573 Usage: catch unload [REGEX]\n\
16574 If REGEX is given, only stop for libraries matching the regular expression."),
16575                      catch_unload_command_1,
16576                      NULL,
16577                      CATCH_PERMANENT,
16578                      CATCH_TEMPORARY);
16579   add_catch_command ("syscall", _("\
16580 Catch system calls by their names and/or numbers.\n\
16581 Arguments say which system calls to catch.  If no arguments\n\
16582 are given, every system call will be caught.\n\
16583 Arguments, if given, should be one or more system call names\n\
16584 (if your system supports that), or system call numbers."),
16585                      catch_syscall_command_1,
16586                      catch_syscall_completer,
16587                      CATCH_PERMANENT,
16588                      CATCH_TEMPORARY);
16589
16590   c = add_com ("watch", class_breakpoint, watch_command, _("\
16591 Set a watchpoint for an expression.\n\
16592 Usage: watch [-l|-location] EXPRESSION\n\
16593 A watchpoint stops execution of your program whenever the value of\n\
16594 an expression changes.\n\
16595 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16596 the memory to which it refers."));
16597   set_cmd_completer (c, expression_completer);
16598
16599   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16600 Set a read watchpoint for an expression.\n\
16601 Usage: rwatch [-l|-location] EXPRESSION\n\
16602 A watchpoint stops execution of your program whenever the value of\n\
16603 an expression is read.\n\
16604 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16605 the memory to which it refers."));
16606   set_cmd_completer (c, expression_completer);
16607
16608   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16609 Set a watchpoint for an expression.\n\
16610 Usage: awatch [-l|-location] EXPRESSION\n\
16611 A watchpoint stops execution of your program whenever the value of\n\
16612 an expression is either read or written.\n\
16613 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16614 the memory to which it refers."));
16615   set_cmd_completer (c, expression_completer);
16616
16617   add_info ("watchpoints", watchpoints_info, _("\
16618 Status of specified watchpoints (all watchpoints if no argument)."));
16619
16620   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16621      respond to changes - contrary to the description.  */
16622   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16623                             &can_use_hw_watchpoints, _("\
16624 Set debugger's willingness to use watchpoint hardware."), _("\
16625 Show debugger's willingness to use watchpoint hardware."), _("\
16626 If zero, gdb will not use hardware for new watchpoints, even if\n\
16627 such is available.  (However, any hardware watchpoints that were\n\
16628 created before setting this to nonzero, will continue to use watchpoint\n\
16629 hardware.)"),
16630                             NULL,
16631                             show_can_use_hw_watchpoints,
16632                             &setlist, &showlist);
16633
16634   can_use_hw_watchpoints = 1;
16635
16636   /* Tracepoint manipulation commands.  */
16637
16638   c = add_com ("trace", class_breakpoint, trace_command, _("\
16639 Set a tracepoint at specified line or function.\n\
16640 \n"
16641 BREAK_ARGS_HELP ("trace") "\n\
16642 Do \"help tracepoints\" for info on other tracepoint commands."));
16643   set_cmd_completer (c, location_completer);
16644
16645   add_com_alias ("tp", "trace", class_alias, 0);
16646   add_com_alias ("tr", "trace", class_alias, 1);
16647   add_com_alias ("tra", "trace", class_alias, 1);
16648   add_com_alias ("trac", "trace", class_alias, 1);
16649
16650   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16651 Set a fast tracepoint at specified line or function.\n\
16652 \n"
16653 BREAK_ARGS_HELP ("ftrace") "\n\
16654 Do \"help tracepoints\" for info on other tracepoint commands."));
16655   set_cmd_completer (c, location_completer);
16656
16657   c = add_com ("strace", class_breakpoint, strace_command, _("\
16658 Set a static tracepoint at specified line, function or marker.\n\
16659 \n\
16660 strace [LOCATION] [if CONDITION]\n\
16661 LOCATION may be a line number, function name, \"*\" and an address,\n\
16662 or -m MARKER_ID.\n\
16663 If a line number is specified, probe the marker at start of code\n\
16664 for that line.  If a function is specified, probe the marker at start\n\
16665 of code for that function.  If an address is specified, probe the marker\n\
16666 at that exact address.  If a marker id is specified, probe the marker\n\
16667 with that name.  With no LOCATION, uses current execution address of\n\
16668 the selected stack frame.\n\
16669 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16670 This collects arbitrary user data passed in the probe point call to the\n\
16671 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16672 by printing the $_sdata variable like any other convenience variable.\n\
16673 \n\
16674 CONDITION is a boolean expression.\n\
16675 \n\
16676 Multiple tracepoints at one place are permitted, and useful if their\n\
16677 conditions are different.\n\
16678 \n\
16679 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16680 Do \"help tracepoints\" for info on other tracepoint commands."));
16681   set_cmd_completer (c, location_completer);
16682
16683   add_info ("tracepoints", tracepoints_info, _("\
16684 Status of specified tracepoints (all tracepoints if no argument).\n\
16685 Convenience variable \"$tpnum\" contains the number of the\n\
16686 last tracepoint set."));
16687
16688   add_info_alias ("tp", "tracepoints", 1);
16689
16690   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16691 Delete specified tracepoints.\n\
16692 Arguments are tracepoint numbers, separated by spaces.\n\
16693 No argument means delete all tracepoints."),
16694            &deletelist);
16695   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16696
16697   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16698 Disable specified tracepoints.\n\
16699 Arguments are tracepoint numbers, separated by spaces.\n\
16700 No argument means disable all tracepoints."),
16701            &disablelist);
16702   deprecate_cmd (c, "disable");
16703
16704   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16705 Enable specified tracepoints.\n\
16706 Arguments are tracepoint numbers, separated by spaces.\n\
16707 No argument means enable all tracepoints."),
16708            &enablelist);
16709   deprecate_cmd (c, "enable");
16710
16711   add_com ("passcount", class_trace, trace_pass_command, _("\
16712 Set the passcount for a tracepoint.\n\
16713 The trace will end when the tracepoint has been passed 'count' times.\n\
16714 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16715 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16716
16717   add_prefix_cmd ("save", class_breakpoint, save_command,
16718                   _("Save breakpoint definitions as a script."),
16719                   &save_cmdlist, "save ",
16720                   0/*allow-unknown*/, &cmdlist);
16721
16722   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16723 Save current breakpoint definitions as a script.\n\
16724 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16725 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16726 session to restore them."),
16727                &save_cmdlist);
16728   set_cmd_completer (c, filename_completer);
16729
16730   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16731 Save current tracepoint definitions as a script.\n\
16732 Use the 'source' command in another debug session to restore them."),
16733                &save_cmdlist);
16734   set_cmd_completer (c, filename_completer);
16735
16736   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16737   deprecate_cmd (c, "save tracepoints");
16738
16739   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16740 Breakpoint specific settings\n\
16741 Configure various breakpoint-specific variables such as\n\
16742 pending breakpoint behavior"),
16743                   &breakpoint_set_cmdlist, "set breakpoint ",
16744                   0/*allow-unknown*/, &setlist);
16745   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16746 Breakpoint specific settings\n\
16747 Configure various breakpoint-specific variables such as\n\
16748 pending breakpoint behavior"),
16749                   &breakpoint_show_cmdlist, "show breakpoint ",
16750                   0/*allow-unknown*/, &showlist);
16751
16752   add_setshow_auto_boolean_cmd ("pending", no_class,
16753                                 &pending_break_support, _("\
16754 Set debugger's behavior regarding pending breakpoints."), _("\
16755 Show debugger's behavior regarding pending breakpoints."), _("\
16756 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16757 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16758 an error.  If auto, an unrecognized breakpoint location results in a\n\
16759 user-query to see if a pending breakpoint should be created."),
16760                                 NULL,
16761                                 show_pending_break_support,
16762                                 &breakpoint_set_cmdlist,
16763                                 &breakpoint_show_cmdlist);
16764
16765   pending_break_support = AUTO_BOOLEAN_AUTO;
16766
16767   add_setshow_boolean_cmd ("auto-hw", no_class,
16768                            &automatic_hardware_breakpoints, _("\
16769 Set automatic usage of hardware breakpoints."), _("\
16770 Show automatic usage of hardware breakpoints."), _("\
16771 If set, the debugger will automatically use hardware breakpoints for\n\
16772 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16773 a warning will be emitted for such breakpoints."),
16774                            NULL,
16775                            show_automatic_hardware_breakpoints,
16776                            &breakpoint_set_cmdlist,
16777                            &breakpoint_show_cmdlist);
16778
16779   add_setshow_boolean_cmd ("always-inserted", class_support,
16780                            &always_inserted_mode, _("\
16781 Set mode for inserting breakpoints."), _("\
16782 Show mode for inserting breakpoints."), _("\
16783 When this mode is on, breakpoints are inserted immediately as soon as\n\
16784 they're created, kept inserted even when execution stops, and removed\n\
16785 only when the user deletes them.  When this mode is off (the default),\n\
16786 breakpoints are inserted only when execution continues, and removed\n\
16787 when execution stops."),
16788                                 NULL,
16789                                 &show_always_inserted_mode,
16790                                 &breakpoint_set_cmdlist,
16791                                 &breakpoint_show_cmdlist);
16792
16793   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16794                         condition_evaluation_enums,
16795                         &condition_evaluation_mode_1, _("\
16796 Set mode of breakpoint condition evaluation."), _("\
16797 Show mode of breakpoint condition evaluation."), _("\
16798 When this is set to \"host\", breakpoint conditions will be\n\
16799 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16800 breakpoint conditions will be downloaded to the target (if the target\n\
16801 supports such feature) and conditions will be evaluated on the target's side.\n\
16802 If this is set to \"auto\" (default), this will be automatically set to\n\
16803 \"target\" if it supports condition evaluation, otherwise it will\n\
16804 be set to \"gdb\""),
16805                            &set_condition_evaluation_mode,
16806                            &show_condition_evaluation_mode,
16807                            &breakpoint_set_cmdlist,
16808                            &breakpoint_show_cmdlist);
16809
16810   add_com ("break-range", class_breakpoint, break_range_command, _("\
16811 Set a breakpoint for an address range.\n\
16812 break-range START-LOCATION, END-LOCATION\n\
16813 where START-LOCATION and END-LOCATION can be one of the following:\n\
16814   LINENUM, for that line in the current file,\n\
16815   FILE:LINENUM, for that line in that file,\n\
16816   +OFFSET, for that number of lines after the current line\n\
16817            or the start of the range\n\
16818   FUNCTION, for the first line in that function,\n\
16819   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16820   *ADDRESS, for the instruction at that address.\n\
16821 \n\
16822 The breakpoint will stop execution of the inferior whenever it executes\n\
16823 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16824 range (including START-LOCATION and END-LOCATION)."));
16825
16826   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16827 Set a dynamic printf at specified line or function.\n\
16828 dprintf location,format string,arg1,arg2,...\n\
16829 location may be a line number, function name, or \"*\" and an address.\n\
16830 If a line number is specified, break at start of code for that line.\n\
16831 If a function is specified, break at start of code for that function."));
16832   set_cmd_completer (c, location_completer);
16833
16834   add_setshow_enum_cmd ("dprintf-style", class_support,
16835                         dprintf_style_enums, &dprintf_style, _("\
16836 Set the style of usage for dynamic printf."), _("\
16837 Show the style of usage for dynamic printf."), _("\
16838 This setting chooses how GDB will do a dynamic printf.\n\
16839 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16840 console, as with the \"printf\" command.\n\
16841 If the value is \"call\", the print is done by calling a function in your\n\
16842 program; by default printf(), but you can choose a different function or\n\
16843 output stream by setting dprintf-function and dprintf-channel."),
16844                         update_dprintf_commands, NULL,
16845                         &setlist, &showlist);
16846
16847   dprintf_function = xstrdup ("printf");
16848   add_setshow_string_cmd ("dprintf-function", class_support,
16849                           &dprintf_function, _("\
16850 Set the function to use for dynamic printf"), _("\
16851 Show the function to use for dynamic printf"), NULL,
16852                           update_dprintf_commands, NULL,
16853                           &setlist, &showlist);
16854
16855   dprintf_channel = xstrdup ("");
16856   add_setshow_string_cmd ("dprintf-channel", class_support,
16857                           &dprintf_channel, _("\
16858 Set the channel to use for dynamic printf"), _("\
16859 Show the channel to use for dynamic printf"), NULL,
16860                           update_dprintf_commands, NULL,
16861                           &setlist, &showlist);
16862
16863   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16864                            &disconnected_dprintf, _("\
16865 Set whether dprintf continues after GDB disconnects."), _("\
16866 Show whether dprintf continues after GDB disconnects."), _("\
16867 Use this to let dprintf commands continue to hit and produce output\n\
16868 even if GDB disconnects or detaches from the target."),
16869                            NULL,
16870                            NULL,
16871                            &setlist, &showlist);
16872
16873   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16874 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16875 (target agent only) This is useful for formatted output in user-defined commands."));
16876
16877   automatic_hardware_breakpoints = 1;
16878
16879   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16880   observer_attach_thread_exit (remove_threaded_breakpoints);
16881 }