gdb/
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2012 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "cli/cli-utils.h"
64 #include "continuations.h"
65 #include "stack.h"
66 #include "skip.h"
67 #include "record.h"
68 #include "gdb_regex.h"
69 #include "ax-gdb.h"
70
71 /* readline include files */
72 #include "readline/readline.h"
73 #include "readline/history.h"
74
75 /* readline defines this.  */
76 #undef savestring
77
78 #include "mi/mi-common.h"
79 #include "python/python.h"
80
81 /* Prototypes for local functions.  */
82
83 static void enable_delete_command (char *, int);
84
85 static void enable_once_command (char *, int);
86
87 static void enable_count_command (char *, int);
88
89 static void disable_command (char *, int);
90
91 static void enable_command (char *, int);
92
93 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
94                                                       void *),
95                                     void *);
96
97 static void ignore_command (char *, int);
98
99 static int breakpoint_re_set_one (void *);
100
101 static void breakpoint_re_set_default (struct breakpoint *);
102
103 static void create_sals_from_address_default (char **,
104                                               struct linespec_result *,
105                                               enum bptype, char *,
106                                               char **);
107
108 static void create_breakpoints_sal_default (struct gdbarch *,
109                                             struct linespec_result *,
110                                             struct linespec_sals *,
111                                             char *, enum bptype,
112                                             enum bpdisp, int, int,
113                                             int,
114                                             const struct breakpoint_ops *,
115                                             int, int, int);
116
117 static void decode_linespec_default (struct breakpoint *, char **,
118                                      struct symtabs_and_lines *);
119
120 static void clear_command (char *, int);
121
122 static void catch_command (char *, int);
123
124 static int can_use_hardware_watchpoint (struct value *);
125
126 static void break_command_1 (char *, int, int);
127
128 static void mention (struct breakpoint *);
129
130 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
131                                                                enum bptype,
132                                                                const struct breakpoint_ops *);
133 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
134                                                        const struct symtab_and_line *);
135
136 /* This function is used in gdbtk sources and thus can not be made
137    static.  */
138 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
139                                        struct symtab_and_line,
140                                        enum bptype,
141                                        const struct breakpoint_ops *);
142
143 static struct breakpoint *
144   momentary_breakpoint_from_master (struct breakpoint *orig,
145                                     enum bptype type,
146                                     const struct breakpoint_ops *ops);
147
148 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
149
150 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
151                                             CORE_ADDR bpaddr,
152                                             enum bptype bptype);
153
154 static void describe_other_breakpoints (struct gdbarch *,
155                                         struct program_space *, CORE_ADDR,
156                                         struct obj_section *, int);
157
158 static int breakpoint_address_match (struct address_space *aspace1,
159                                      CORE_ADDR addr1,
160                                      struct address_space *aspace2,
161                                      CORE_ADDR addr2);
162
163 static int watchpoint_locations_match (struct bp_location *loc1,
164                                        struct bp_location *loc2);
165
166 static int breakpoint_location_address_match (struct bp_location *bl,
167                                               struct address_space *aspace,
168                                               CORE_ADDR addr);
169
170 static void breakpoints_info (char *, int);
171
172 static void watchpoints_info (char *, int);
173
174 static int breakpoint_1 (char *, int, 
175                          int (*) (const struct breakpoint *));
176
177 static int breakpoint_cond_eval (void *);
178
179 static void cleanup_executing_breakpoints (void *);
180
181 static void commands_command (char *, int);
182
183 static void condition_command (char *, int);
184
185 typedef enum
186   {
187     mark_inserted,
188     mark_uninserted
189   }
190 insertion_state_t;
191
192 static int remove_breakpoint (struct bp_location *, insertion_state_t);
193 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
194
195 static enum print_stop_action print_bp_stop_message (bpstat bs);
196
197 static int watchpoint_check (void *);
198
199 static void maintenance_info_breakpoints (char *, int);
200
201 static int hw_breakpoint_used_count (void);
202
203 static int hw_watchpoint_use_count (struct breakpoint *);
204
205 static int hw_watchpoint_used_count_others (struct breakpoint *except,
206                                             enum bptype type,
207                                             int *other_type_used);
208
209 static void hbreak_command (char *, int);
210
211 static void thbreak_command (char *, int);
212
213 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
214                                     int count);
215
216 static void stop_command (char *arg, int from_tty);
217
218 static void stopin_command (char *arg, int from_tty);
219
220 static void stopat_command (char *arg, int from_tty);
221
222 static char *ep_parse_optional_if_clause (char **arg);
223
224 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
225                                        char *arg, int tempflag, int from_tty);
226
227 static void tcatch_command (char *arg, int from_tty);
228
229 static void detach_single_step_breakpoints (void);
230
231 static int single_step_breakpoint_inserted_here_p (struct address_space *,
232                                                    CORE_ADDR pc);
233
234 static void free_bp_location (struct bp_location *loc);
235 static void incref_bp_location (struct bp_location *loc);
236 static void decref_bp_location (struct bp_location **loc);
237
238 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
239
240 static void update_global_location_list (int);
241
242 static void update_global_location_list_nothrow (int);
243
244 static int is_hardware_watchpoint (const struct breakpoint *bpt);
245
246 static void insert_breakpoint_locations (void);
247
248 static int syscall_catchpoint_p (struct breakpoint *b);
249
250 static void tracepoints_info (char *, int);
251
252 static void delete_trace_command (char *, int);
253
254 static void enable_trace_command (char *, int);
255
256 static void disable_trace_command (char *, int);
257
258 static void trace_pass_command (char *, int);
259
260 static int is_masked_watchpoint (const struct breakpoint *b);
261
262 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
263
264 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
265    otherwise.  */
266
267 static int strace_marker_p (struct breakpoint *b);
268
269 static void init_catchpoint (struct breakpoint *b,
270                              struct gdbarch *gdbarch, int tempflag,
271                              char *cond_string,
272                              const struct breakpoint_ops *ops);
273
274 /* The abstract base class all breakpoint_ops structures inherit
275    from.  */
276 static struct breakpoint_ops base_breakpoint_ops;
277
278 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
279    that are implemented on top of software or hardware breakpoints
280    (user breakpoints, internal and momentary breakpoints, etc.).  */
281 static struct breakpoint_ops bkpt_base_breakpoint_ops;
282
283 /* Internal breakpoints class type.  */
284 static struct breakpoint_ops internal_breakpoint_ops;
285
286 /* Momentary breakpoints class type.  */
287 static struct breakpoint_ops momentary_breakpoint_ops;
288
289 /* The breakpoint_ops structure to be used in regular user created
290    breakpoints.  */
291 struct breakpoint_ops bkpt_breakpoint_ops;
292
293 /* A reference-counted struct command_line.  This lets multiple
294    breakpoints share a single command list.  */
295 struct counted_command_line
296 {
297   /* The reference count.  */
298   int refc;
299
300   /* The command list.  */
301   struct command_line *commands;
302 };
303
304 struct command_line *
305 breakpoint_commands (struct breakpoint *b)
306 {
307   return b->commands ? b->commands->commands : NULL;
308 }
309
310 /* Flag indicating that a command has proceeded the inferior past the
311    current breakpoint.  */
312
313 static int breakpoint_proceeded;
314
315 const char *
316 bpdisp_text (enum bpdisp disp)
317 {
318   /* NOTE: the following values are a part of MI protocol and
319      represent values of 'disp' field returned when inferior stops at
320      a breakpoint.  */
321   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
322
323   return bpdisps[(int) disp];
324 }
325
326 /* Prototypes for exported functions.  */
327 /* If FALSE, gdb will not use hardware support for watchpoints, even
328    if such is available.  */
329 static int can_use_hw_watchpoints;
330
331 static void
332 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
333                              struct cmd_list_element *c,
334                              const char *value)
335 {
336   fprintf_filtered (file,
337                     _("Debugger's willingness to use "
338                       "watchpoint hardware is %s.\n"),
339                     value);
340 }
341
342 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
343    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
344    for unrecognized breakpoint locations.
345    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
346 static enum auto_boolean pending_break_support;
347 static void
348 show_pending_break_support (struct ui_file *file, int from_tty,
349                             struct cmd_list_element *c,
350                             const char *value)
351 {
352   fprintf_filtered (file,
353                     _("Debugger's behavior regarding "
354                       "pending breakpoints is %s.\n"),
355                     value);
356 }
357
358 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
359    set with "break" but falling in read-only memory.
360    If 0, gdb will warn about such breakpoints, but won't automatically
361    use hardware breakpoints.  */
362 static int automatic_hardware_breakpoints;
363 static void
364 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
365                                      struct cmd_list_element *c,
366                                      const char *value)
367 {
368   fprintf_filtered (file,
369                     _("Automatic usage of hardware breakpoints is %s.\n"),
370                     value);
371 }
372
373 /* If on, gdb will keep breakpoints inserted even as inferior is
374    stopped, and immediately insert any new breakpoints.  If off, gdb
375    will insert breakpoints into inferior only when resuming it, and
376    will remove breakpoints upon stop.  If auto, GDB will behave as ON
377    if in non-stop mode, and as OFF if all-stop mode.*/
378
379 static const char always_inserted_auto[] = "auto";
380 static const char always_inserted_on[] = "on";
381 static const char always_inserted_off[] = "off";
382 static const char *const always_inserted_enums[] = {
383   always_inserted_auto,
384   always_inserted_off,
385   always_inserted_on,
386   NULL
387 };
388 static const char *always_inserted_mode = always_inserted_auto;
389 static void
390 show_always_inserted_mode (struct ui_file *file, int from_tty,
391                      struct cmd_list_element *c, const char *value)
392 {
393   if (always_inserted_mode == always_inserted_auto)
394     fprintf_filtered (file,
395                       _("Always inserted breakpoint "
396                         "mode is %s (currently %s).\n"),
397                       value,
398                       breakpoints_always_inserted_mode () ? "on" : "off");
399   else
400     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
401                       value);
402 }
403
404 int
405 breakpoints_always_inserted_mode (void)
406 {
407   return ((always_inserted_mode == always_inserted_on
408            || (always_inserted_mode == always_inserted_auto && non_stop))
409           && !RECORD_IS_USED);
410 }
411
412 static const char condition_evaluation_both[] = "host or target";
413
414 /* Modes for breakpoint condition evaluation.  */
415 static const char condition_evaluation_auto[] = "auto";
416 static const char condition_evaluation_host[] = "host";
417 static const char condition_evaluation_target[] = "target";
418 static const char *const condition_evaluation_enums[] = {
419   condition_evaluation_auto,
420   condition_evaluation_host,
421   condition_evaluation_target,
422   NULL
423 };
424
425 /* Global that holds the current mode for breakpoint condition evaluation.  */
426 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
427
428 /* Global that we use to display information to the user (gets its value from
429    condition_evaluation_mode_1.  */
430 static const char *condition_evaluation_mode = condition_evaluation_auto;
431
432 /* Translate a condition evaluation mode MODE into either "host"
433    or "target".  This is used mostly to translate from "auto" to the
434    real setting that is being used.  It returns the translated
435    evaluation mode.  */
436
437 static const char *
438 translate_condition_evaluation_mode (const char *mode)
439 {
440   if (mode == condition_evaluation_auto)
441     {
442       if (target_supports_evaluation_of_breakpoint_conditions ())
443         return condition_evaluation_target;
444       else
445         return condition_evaluation_host;
446     }
447   else
448     return mode;
449 }
450
451 /* Discovers what condition_evaluation_auto translates to.  */
452
453 static const char *
454 breakpoint_condition_evaluation_mode (void)
455 {
456   return translate_condition_evaluation_mode (condition_evaluation_mode);
457 }
458
459 /* Return true if GDB should evaluate breakpoint conditions or false
460    otherwise.  */
461
462 static int
463 gdb_evaluates_breakpoint_condition_p (void)
464 {
465   const char *mode = breakpoint_condition_evaluation_mode ();
466
467   return (mode == condition_evaluation_host);
468 }
469
470 void _initialize_breakpoint (void);
471
472 /* Are we executing breakpoint commands?  */
473 static int executing_breakpoint_commands;
474
475 /* Are overlay event breakpoints enabled? */
476 static int overlay_events_enabled;
477
478 /* See description in breakpoint.h. */
479 int target_exact_watchpoints = 0;
480
481 /* Walk the following statement or block through all breakpoints.
482    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
483    current breakpoint.  */
484
485 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
486
487 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
488         for (B = breakpoint_chain;      \
489              B ? (TMP=B->next, 1): 0;   \
490              B = TMP)
491
492 /* Similar iterator for the low-level breakpoints.  SAFE variant is
493    not provided so update_global_location_list must not be called
494    while executing the block of ALL_BP_LOCATIONS.  */
495
496 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
497         for (BP_TMP = bp_location;                                      \
498              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
499              BP_TMP++)
500
501 /* Iterates through locations with address ADDRESS for the currently selected
502    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
503    to where the loop should start from.
504    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
505    appropriate location to start with.  */
506
507 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
508         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
509              BP_LOCP_TMP = BP_LOCP_START;                               \
510              BP_LOCP_START                                              \
511              && (BP_LOCP_TMP < bp_location + bp_location_count          \
512              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
513              BP_LOCP_TMP++)
514
515 /* Iterator for tracepoints only.  */
516
517 #define ALL_TRACEPOINTS(B)  \
518   for (B = breakpoint_chain; B; B = B->next)  \
519     if (is_tracepoint (B))
520
521 /* Chains of all breakpoints defined.  */
522
523 struct breakpoint *breakpoint_chain;
524
525 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
526
527 static struct bp_location **bp_location;
528
529 /* Number of elements of BP_LOCATION.  */
530
531 static unsigned bp_location_count;
532
533 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
534    ADDRESS for the current elements of BP_LOCATION which get a valid
535    result from bp_location_has_shadow.  You can use it for roughly
536    limiting the subrange of BP_LOCATION to scan for shadow bytes for
537    an address you need to read.  */
538
539 static CORE_ADDR bp_location_placed_address_before_address_max;
540
541 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
542    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
543    BP_LOCATION which get a valid result from bp_location_has_shadow.
544    You can use it for roughly limiting the subrange of BP_LOCATION to
545    scan for shadow bytes for an address you need to read.  */
546
547 static CORE_ADDR bp_location_shadow_len_after_address_max;
548
549 /* The locations that no longer correspond to any breakpoint, unlinked
550    from bp_location array, but for which a hit may still be reported
551    by a target.  */
552 VEC(bp_location_p) *moribund_locations = NULL;
553
554 /* Number of last breakpoint made.  */
555
556 static int breakpoint_count;
557
558 /* The value of `breakpoint_count' before the last command that
559    created breakpoints.  If the last (break-like) command created more
560    than one breakpoint, then the difference between BREAKPOINT_COUNT
561    and PREV_BREAKPOINT_COUNT is more than one.  */
562 static int prev_breakpoint_count;
563
564 /* Number of last tracepoint made.  */
565
566 static int tracepoint_count;
567
568 static struct cmd_list_element *breakpoint_set_cmdlist;
569 static struct cmd_list_element *breakpoint_show_cmdlist;
570 struct cmd_list_element *save_cmdlist;
571
572 /* Return whether a breakpoint is an active enabled breakpoint.  */
573 static int
574 breakpoint_enabled (struct breakpoint *b)
575 {
576   return (b->enable_state == bp_enabled);
577 }
578
579 /* Set breakpoint count to NUM.  */
580
581 static void
582 set_breakpoint_count (int num)
583 {
584   prev_breakpoint_count = breakpoint_count;
585   breakpoint_count = num;
586   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
587 }
588
589 /* Used by `start_rbreak_breakpoints' below, to record the current
590    breakpoint count before "rbreak" creates any breakpoint.  */
591 static int rbreak_start_breakpoint_count;
592
593 /* Called at the start an "rbreak" command to record the first
594    breakpoint made.  */
595
596 void
597 start_rbreak_breakpoints (void)
598 {
599   rbreak_start_breakpoint_count = breakpoint_count;
600 }
601
602 /* Called at the end of an "rbreak" command to record the last
603    breakpoint made.  */
604
605 void
606 end_rbreak_breakpoints (void)
607 {
608   prev_breakpoint_count = rbreak_start_breakpoint_count;
609 }
610
611 /* Used in run_command to zero the hit count when a new run starts.  */
612
613 void
614 clear_breakpoint_hit_counts (void)
615 {
616   struct breakpoint *b;
617
618   ALL_BREAKPOINTS (b)
619     b->hit_count = 0;
620 }
621
622 /* Allocate a new counted_command_line with reference count of 1.
623    The new structure owns COMMANDS.  */
624
625 static struct counted_command_line *
626 alloc_counted_command_line (struct command_line *commands)
627 {
628   struct counted_command_line *result
629     = xmalloc (sizeof (struct counted_command_line));
630
631   result->refc = 1;
632   result->commands = commands;
633   return result;
634 }
635
636 /* Increment reference count.  This does nothing if CMD is NULL.  */
637
638 static void
639 incref_counted_command_line (struct counted_command_line *cmd)
640 {
641   if (cmd)
642     ++cmd->refc;
643 }
644
645 /* Decrement reference count.  If the reference count reaches 0,
646    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
647    nothing if *CMDP is NULL.  */
648
649 static void
650 decref_counted_command_line (struct counted_command_line **cmdp)
651 {
652   if (*cmdp)
653     {
654       if (--(*cmdp)->refc == 0)
655         {
656           free_command_lines (&(*cmdp)->commands);
657           xfree (*cmdp);
658         }
659       *cmdp = NULL;
660     }
661 }
662
663 /* A cleanup function that calls decref_counted_command_line.  */
664
665 static void
666 do_cleanup_counted_command_line (void *arg)
667 {
668   decref_counted_command_line (arg);
669 }
670
671 /* Create a cleanup that calls decref_counted_command_line on the
672    argument.  */
673
674 static struct cleanup *
675 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
676 {
677   return make_cleanup (do_cleanup_counted_command_line, cmdp);
678 }
679
680 \f
681 /* Return the breakpoint with the specified number, or NULL
682    if the number does not refer to an existing breakpoint.  */
683
684 struct breakpoint *
685 get_breakpoint (int num)
686 {
687   struct breakpoint *b;
688
689   ALL_BREAKPOINTS (b)
690     if (b->number == num)
691       return b;
692   
693   return NULL;
694 }
695
696 \f
697
698 /* Mark locations as "conditions have changed" in case the target supports
699    evaluating conditions on its side.  */
700
701 static void
702 mark_breakpoint_modified (struct breakpoint *b)
703 {
704   struct bp_location *loc;
705
706   /* This is only meaningful if the target is
707      evaluating conditions and if the user has
708      opted for condition evaluation on the target's
709      side.  */
710   if (gdb_evaluates_breakpoint_condition_p ()
711       || !target_supports_evaluation_of_breakpoint_conditions ())
712     return;
713
714   if (!is_breakpoint (b))
715     return;
716
717   for (loc = b->loc; loc; loc = loc->next)
718     loc->condition_changed = condition_modified;
719 }
720
721 /* Mark location as "conditions have changed" in case the target supports
722    evaluating conditions on its side.  */
723
724 static void
725 mark_breakpoint_location_modified (struct bp_location *loc)
726 {
727   /* This is only meaningful if the target is
728      evaluating conditions and if the user has
729      opted for condition evaluation on the target's
730      side.  */
731   if (gdb_evaluates_breakpoint_condition_p ()
732       || !target_supports_evaluation_of_breakpoint_conditions ())
733
734     return;
735
736   if (!is_breakpoint (loc->owner))
737     return;
738
739   loc->condition_changed = condition_modified;
740 }
741
742 /* Sets the condition-evaluation mode using the static global
743    condition_evaluation_mode.  */
744
745 static void
746 set_condition_evaluation_mode (char *args, int from_tty,
747                                struct cmd_list_element *c)
748 {
749   struct breakpoint *b;
750   const char *old_mode, *new_mode;
751
752   if ((condition_evaluation_mode_1 == condition_evaluation_target)
753       && !target_supports_evaluation_of_breakpoint_conditions ())
754     {
755       condition_evaluation_mode_1 = condition_evaluation_mode;
756       warning (_("Target does not support breakpoint condition evaluation.\n"
757                  "Using host evaluation mode instead."));
758       return;
759     }
760
761   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
762   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
763
764   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
765      settings was "auto".  */
766   condition_evaluation_mode = condition_evaluation_mode_1;
767
768   /* Only update the mode if the user picked a different one.  */
769   if (new_mode != old_mode)
770     {
771       struct bp_location *loc, **loc_tmp;
772       /* If the user switched to a different evaluation mode, we
773          need to synch the changes with the target as follows:
774
775          "host" -> "target": Send all (valid) conditions to the target.
776          "target" -> "host": Remove all the conditions from the target.
777       */
778
779       if (new_mode == condition_evaluation_target)
780         {
781           /* Mark everything modified and synch conditions with the
782              target.  */
783           ALL_BP_LOCATIONS (loc, loc_tmp)
784             mark_breakpoint_location_modified (loc);
785         }
786       else
787         {
788           /* Manually mark non-duplicate locations to synch conditions
789              with the target.  We do this to remove all the conditions the
790              target knows about.  */
791           ALL_BP_LOCATIONS (loc, loc_tmp)
792             if (is_breakpoint (loc->owner) && loc->inserted)
793               loc->needs_update = 1;
794         }
795
796       /* Do the update.  */
797       update_global_location_list (1);
798     }
799
800   return;
801 }
802
803 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
804    what "auto" is translating to.  */
805
806 static void
807 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
808                                 struct cmd_list_element *c, const char *value)
809 {
810   if (condition_evaluation_mode == condition_evaluation_auto)
811     fprintf_filtered (file,
812                       _("Breakpoint condition evaluation "
813                         "mode is %s (currently %s).\n"),
814                       value,
815                       breakpoint_condition_evaluation_mode ());
816   else
817     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
818                       value);
819 }
820
821 /* A comparison function for bp_location AP and BP that is used by
822    bsearch.  This comparison function only cares about addresses, unlike
823    the more general bp_location_compare function.  */
824
825 static int
826 bp_location_compare_addrs (const void *ap, const void *bp)
827 {
828   struct bp_location *a = *(void **) ap;
829   struct bp_location *b = *(void **) bp;
830
831   if (a->address == b->address)
832     return 0;
833   else
834     return ((a->address > b->address) - (a->address < b->address));
835 }
836
837 /* Helper function to skip all bp_locations with addresses
838    less than ADDRESS.  It returns the first bp_location that
839    is greater than or equal to ADDRESS.  If none is found, just
840    return NULL.  */
841
842 static struct bp_location **
843 get_first_locp_gte_addr (CORE_ADDR address)
844 {
845   struct bp_location dummy_loc;
846   struct bp_location *dummy_locp = &dummy_loc;
847   struct bp_location **locp_found = NULL;
848
849   /* Initialize the dummy location's address field.  */
850   memset (&dummy_loc, 0, sizeof (struct bp_location));
851   dummy_loc.address = address;
852
853   /* Find a close match to the first location at ADDRESS.  */
854   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
855                         sizeof (struct bp_location **),
856                         bp_location_compare_addrs);
857
858   /* Nothing was found, nothing left to do.  */
859   if (locp_found == NULL)
860     return NULL;
861
862   /* We may have found a location that is at ADDRESS but is not the first in the
863      location's list.  Go backwards (if possible) and locate the first one.  */
864   while ((locp_found - 1) >= bp_location
865          && (*(locp_found - 1))->address == address)
866     locp_found--;
867
868   return locp_found;
869 }
870
871 void
872 set_breakpoint_condition (struct breakpoint *b, char *exp,
873                           int from_tty)
874 {
875   xfree (b->cond_string);
876   b->cond_string = NULL;
877
878   if (is_watchpoint (b))
879     {
880       struct watchpoint *w = (struct watchpoint *) b;
881
882       xfree (w->cond_exp);
883       w->cond_exp = NULL;
884     }
885   else
886     {
887       struct bp_location *loc;
888
889       for (loc = b->loc; loc; loc = loc->next)
890         {
891           xfree (loc->cond);
892           loc->cond = NULL;
893
894           /* No need to free the condition agent expression
895              bytecode (if we have one).  We will handle this
896              when we go through update_global_location_list.  */
897         }
898     }
899
900   if (*exp == 0)
901     {
902       if (from_tty)
903         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
904     }
905   else
906     {
907       char *arg = exp;
908
909       /* I don't know if it matters whether this is the string the user
910          typed in or the decompiled expression.  */
911       b->cond_string = xstrdup (arg);
912       b->condition_not_parsed = 0;
913
914       if (is_watchpoint (b))
915         {
916           struct watchpoint *w = (struct watchpoint *) b;
917
918           innermost_block = NULL;
919           arg = exp;
920           w->cond_exp = parse_exp_1 (&arg, 0, 0);
921           if (*arg)
922             error (_("Junk at end of expression"));
923           w->cond_exp_valid_block = innermost_block;
924         }
925       else
926         {
927           struct bp_location *loc;
928
929           for (loc = b->loc; loc; loc = loc->next)
930             {
931               arg = exp;
932               loc->cond =
933                 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
934               if (*arg)
935                 error (_("Junk at end of expression"));
936             }
937         }
938     }
939   mark_breakpoint_modified (b);
940
941   breakpoints_changed ();
942   observer_notify_breakpoint_modified (b);
943 }
944
945 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
946
947 static void
948 condition_command (char *arg, int from_tty)
949 {
950   struct breakpoint *b;
951   char *p;
952   int bnum;
953
954   if (arg == 0)
955     error_no_arg (_("breakpoint number"));
956
957   p = arg;
958   bnum = get_number (&p);
959   if (bnum == 0)
960     error (_("Bad breakpoint argument: '%s'"), arg);
961
962   ALL_BREAKPOINTS (b)
963     if (b->number == bnum)
964       {
965         /* Check if this breakpoint has a Python object assigned to
966            it, and if it has a definition of the "stop"
967            method.  This method and conditions entered into GDB from
968            the CLI are mutually exclusive.  */
969         if (b->py_bp_object
970             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
971           error (_("Cannot set a condition where a Python 'stop' "
972                    "method has been defined in the breakpoint."));
973         set_breakpoint_condition (b, p, from_tty);
974
975         if (is_breakpoint (b))
976           update_global_location_list (1);
977
978         return;
979       }
980
981   error (_("No breakpoint number %d."), bnum);
982 }
983
984 /* Check that COMMAND do not contain commands that are suitable
985    only for tracepoints and not suitable for ordinary breakpoints.
986    Throw if any such commands is found.  */
987
988 static void
989 check_no_tracepoint_commands (struct command_line *commands)
990 {
991   struct command_line *c;
992
993   for (c = commands; c; c = c->next)
994     {
995       int i;
996
997       if (c->control_type == while_stepping_control)
998         error (_("The 'while-stepping' command can "
999                  "only be used for tracepoints"));
1000
1001       for (i = 0; i < c->body_count; ++i)
1002         check_no_tracepoint_commands ((c->body_list)[i]);
1003
1004       /* Not that command parsing removes leading whitespace and comment
1005          lines and also empty lines.  So, we only need to check for
1006          command directly.  */
1007       if (strstr (c->line, "collect ") == c->line)
1008         error (_("The 'collect' command can only be used for tracepoints"));
1009
1010       if (strstr (c->line, "teval ") == c->line)
1011         error (_("The 'teval' command can only be used for tracepoints"));
1012     }
1013 }
1014
1015 /* Encapsulate tests for different types of tracepoints.  */
1016
1017 static int
1018 is_tracepoint_type (enum bptype type)
1019 {
1020   return (type == bp_tracepoint
1021           || type == bp_fast_tracepoint
1022           || type == bp_static_tracepoint);
1023 }
1024
1025 int
1026 is_tracepoint (const struct breakpoint *b)
1027 {
1028   return is_tracepoint_type (b->type);
1029 }
1030
1031 /* A helper function that validates that COMMANDS are valid for a
1032    breakpoint.  This function will throw an exception if a problem is
1033    found.  */
1034
1035 static void
1036 validate_commands_for_breakpoint (struct breakpoint *b,
1037                                   struct command_line *commands)
1038 {
1039   if (is_tracepoint (b))
1040     {
1041       /* We need to verify that each top-level element of commands is
1042          valid for tracepoints, that there's at most one
1043          while-stepping element, and that while-stepping's body has
1044          valid tracing commands excluding nested while-stepping.  */
1045       struct command_line *c;
1046       struct command_line *while_stepping = 0;
1047       for (c = commands; c; c = c->next)
1048         {
1049           if (c->control_type == while_stepping_control)
1050             {
1051               if (b->type == bp_fast_tracepoint)
1052                 error (_("The 'while-stepping' command "
1053                          "cannot be used for fast tracepoint"));
1054               else if (b->type == bp_static_tracepoint)
1055                 error (_("The 'while-stepping' command "
1056                          "cannot be used for static tracepoint"));
1057
1058               if (while_stepping)
1059                 error (_("The 'while-stepping' command "
1060                          "can be used only once"));
1061               else
1062                 while_stepping = c;
1063             }
1064         }
1065       if (while_stepping)
1066         {
1067           struct command_line *c2;
1068
1069           gdb_assert (while_stepping->body_count == 1);
1070           c2 = while_stepping->body_list[0];
1071           for (; c2; c2 = c2->next)
1072             {
1073               if (c2->control_type == while_stepping_control)
1074                 error (_("The 'while-stepping' command cannot be nested"));
1075             }
1076         }
1077     }
1078   else
1079     {
1080       check_no_tracepoint_commands (commands);
1081     }
1082 }
1083
1084 /* Return a vector of all the static tracepoints set at ADDR.  The
1085    caller is responsible for releasing the vector.  */
1086
1087 VEC(breakpoint_p) *
1088 static_tracepoints_here (CORE_ADDR addr)
1089 {
1090   struct breakpoint *b;
1091   VEC(breakpoint_p) *found = 0;
1092   struct bp_location *loc;
1093
1094   ALL_BREAKPOINTS (b)
1095     if (b->type == bp_static_tracepoint)
1096       {
1097         for (loc = b->loc; loc; loc = loc->next)
1098           if (loc->address == addr)
1099             VEC_safe_push(breakpoint_p, found, b);
1100       }
1101
1102   return found;
1103 }
1104
1105 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1106    validate that only allowed commands are included.  */
1107
1108 void
1109 breakpoint_set_commands (struct breakpoint *b, 
1110                          struct command_line *commands)
1111 {
1112   validate_commands_for_breakpoint (b, commands);
1113
1114   decref_counted_command_line (&b->commands);
1115   b->commands = alloc_counted_command_line (commands);
1116   breakpoints_changed ();
1117   observer_notify_breakpoint_modified (b);
1118 }
1119
1120 /* Set the internal `silent' flag on the breakpoint.  Note that this
1121    is not the same as the "silent" that may appear in the breakpoint's
1122    commands.  */
1123
1124 void
1125 breakpoint_set_silent (struct breakpoint *b, int silent)
1126 {
1127   int old_silent = b->silent;
1128
1129   b->silent = silent;
1130   if (old_silent != silent)
1131     observer_notify_breakpoint_modified (b);
1132 }
1133
1134 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1135    breakpoint work for any thread.  */
1136
1137 void
1138 breakpoint_set_thread (struct breakpoint *b, int thread)
1139 {
1140   int old_thread = b->thread;
1141
1142   b->thread = thread;
1143   if (old_thread != thread)
1144     observer_notify_breakpoint_modified (b);
1145 }
1146
1147 /* Set the task for this breakpoint.  If TASK is 0, make the
1148    breakpoint work for any task.  */
1149
1150 void
1151 breakpoint_set_task (struct breakpoint *b, int task)
1152 {
1153   int old_task = b->task;
1154
1155   b->task = task;
1156   if (old_task != task)
1157     observer_notify_breakpoint_modified (b);
1158 }
1159
1160 void
1161 check_tracepoint_command (char *line, void *closure)
1162 {
1163   struct breakpoint *b = closure;
1164
1165   validate_actionline (&line, b);
1166 }
1167
1168 /* A structure used to pass information through
1169    map_breakpoint_numbers.  */
1170
1171 struct commands_info
1172 {
1173   /* True if the command was typed at a tty.  */
1174   int from_tty;
1175
1176   /* The breakpoint range spec.  */
1177   char *arg;
1178
1179   /* Non-NULL if the body of the commands are being read from this
1180      already-parsed command.  */
1181   struct command_line *control;
1182
1183   /* The command lines read from the user, or NULL if they have not
1184      yet been read.  */
1185   struct counted_command_line *cmd;
1186 };
1187
1188 /* A callback for map_breakpoint_numbers that sets the commands for
1189    commands_command.  */
1190
1191 static void
1192 do_map_commands_command (struct breakpoint *b, void *data)
1193 {
1194   struct commands_info *info = data;
1195
1196   if (info->cmd == NULL)
1197     {
1198       struct command_line *l;
1199
1200       if (info->control != NULL)
1201         l = copy_command_lines (info->control->body_list[0]);
1202       else
1203         {
1204           struct cleanup *old_chain;
1205           char *str;
1206
1207           str = xstrprintf (_("Type commands for breakpoint(s) "
1208                               "%s, one per line."),
1209                             info->arg);
1210
1211           old_chain = make_cleanup (xfree, str);
1212
1213           l = read_command_lines (str,
1214                                   info->from_tty, 1,
1215                                   (is_tracepoint (b)
1216                                    ? check_tracepoint_command : 0),
1217                                   b);
1218
1219           do_cleanups (old_chain);
1220         }
1221
1222       info->cmd = alloc_counted_command_line (l);
1223     }
1224
1225   /* If a breakpoint was on the list more than once, we don't need to
1226      do anything.  */
1227   if (b->commands != info->cmd)
1228     {
1229       validate_commands_for_breakpoint (b, info->cmd->commands);
1230       incref_counted_command_line (info->cmd);
1231       decref_counted_command_line (&b->commands);
1232       b->commands = info->cmd;
1233       breakpoints_changed ();
1234       observer_notify_breakpoint_modified (b);
1235     }
1236 }
1237
1238 static void
1239 commands_command_1 (char *arg, int from_tty, 
1240                     struct command_line *control)
1241 {
1242   struct cleanup *cleanups;
1243   struct commands_info info;
1244
1245   info.from_tty = from_tty;
1246   info.control = control;
1247   info.cmd = NULL;
1248   /* If we read command lines from the user, then `info' will hold an
1249      extra reference to the commands that we must clean up.  */
1250   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1251
1252   if (arg == NULL || !*arg)
1253     {
1254       if (breakpoint_count - prev_breakpoint_count > 1)
1255         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1256                           breakpoint_count);
1257       else if (breakpoint_count > 0)
1258         arg = xstrprintf ("%d", breakpoint_count);
1259       else
1260         {
1261           /* So that we don't try to free the incoming non-NULL
1262              argument in the cleanup below.  Mapping breakpoint
1263              numbers will fail in this case.  */
1264           arg = NULL;
1265         }
1266     }
1267   else
1268     /* The command loop has some static state, so we need to preserve
1269        our argument.  */
1270     arg = xstrdup (arg);
1271
1272   if (arg != NULL)
1273     make_cleanup (xfree, arg);
1274
1275   info.arg = arg;
1276
1277   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1278
1279   if (info.cmd == NULL)
1280     error (_("No breakpoints specified."));
1281
1282   do_cleanups (cleanups);
1283 }
1284
1285 static void
1286 commands_command (char *arg, int from_tty)
1287 {
1288   commands_command_1 (arg, from_tty, NULL);
1289 }
1290
1291 /* Like commands_command, but instead of reading the commands from
1292    input stream, takes them from an already parsed command structure.
1293
1294    This is used by cli-script.c to DTRT with breakpoint commands
1295    that are part of if and while bodies.  */
1296 enum command_control_type
1297 commands_from_control_command (char *arg, struct command_line *cmd)
1298 {
1299   commands_command_1 (arg, 0, cmd);
1300   return simple_control;
1301 }
1302
1303 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1304
1305 static int
1306 bp_location_has_shadow (struct bp_location *bl)
1307 {
1308   if (bl->loc_type != bp_loc_software_breakpoint)
1309     return 0;
1310   if (!bl->inserted)
1311     return 0;
1312   if (bl->target_info.shadow_len == 0)
1313     /* BL isn't valid, or doesn't shadow memory.  */
1314     return 0;
1315   return 1;
1316 }
1317
1318 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1319    by replacing any memory breakpoints with their shadowed contents.
1320
1321    The range of shadowed area by each bp_location is:
1322      bl->address - bp_location_placed_address_before_address_max
1323      up to bl->address + bp_location_shadow_len_after_address_max
1324    The range we were requested to resolve shadows for is:
1325      memaddr ... memaddr + len
1326    Thus the safe cutoff boundaries for performance optimization are
1327      memaddr + len <= (bl->address
1328                        - bp_location_placed_address_before_address_max)
1329    and:
1330      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1331
1332 void
1333 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1334                         const gdb_byte *writebuf_org,
1335                         ULONGEST memaddr, LONGEST len)
1336 {
1337   /* Left boundary, right boundary and median element of our binary
1338      search.  */
1339   unsigned bc_l, bc_r, bc;
1340
1341   /* Find BC_L which is a leftmost element which may affect BUF
1342      content.  It is safe to report lower value but a failure to
1343      report higher one.  */
1344
1345   bc_l = 0;
1346   bc_r = bp_location_count;
1347   while (bc_l + 1 < bc_r)
1348     {
1349       struct bp_location *bl;
1350
1351       bc = (bc_l + bc_r) / 2;
1352       bl = bp_location[bc];
1353
1354       /* Check first BL->ADDRESS will not overflow due to the added
1355          constant.  Then advance the left boundary only if we are sure
1356          the BC element can in no way affect the BUF content (MEMADDR
1357          to MEMADDR + LEN range).
1358
1359          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1360          offset so that we cannot miss a breakpoint with its shadow
1361          range tail still reaching MEMADDR.  */
1362
1363       if ((bl->address + bp_location_shadow_len_after_address_max
1364            >= bl->address)
1365           && (bl->address + bp_location_shadow_len_after_address_max
1366               <= memaddr))
1367         bc_l = bc;
1368       else
1369         bc_r = bc;
1370     }
1371
1372   /* Due to the binary search above, we need to make sure we pick the
1373      first location that's at BC_L's address.  E.g., if there are
1374      multiple locations at the same address, BC_L may end up pointing
1375      at a duplicate location, and miss the "master"/"inserted"
1376      location.  Say, given locations L1, L2 and L3 at addresses A and
1377      B:
1378
1379       L1@A, L2@A, L3@B, ...
1380
1381      BC_L could end up pointing at location L2, while the "master"
1382      location could be L1.  Since the `loc->inserted' flag is only set
1383      on "master" locations, we'd forget to restore the shadow of L1
1384      and L2.  */
1385   while (bc_l > 0
1386          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1387     bc_l--;
1388
1389   /* Now do full processing of the found relevant range of elements.  */
1390
1391   for (bc = bc_l; bc < bp_location_count; bc++)
1392   {
1393     struct bp_location *bl = bp_location[bc];
1394     CORE_ADDR bp_addr = 0;
1395     int bp_size = 0;
1396     int bptoffset = 0;
1397
1398     /* bp_location array has BL->OWNER always non-NULL.  */
1399     if (bl->owner->type == bp_none)
1400       warning (_("reading through apparently deleted breakpoint #%d?"),
1401                bl->owner->number);
1402
1403     /* Performance optimization: any further element can no longer affect BUF
1404        content.  */
1405
1406     if (bl->address >= bp_location_placed_address_before_address_max
1407         && memaddr + len <= (bl->address
1408                              - bp_location_placed_address_before_address_max))
1409       break;
1410
1411     if (!bp_location_has_shadow (bl))
1412       continue;
1413     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1414                                    current_program_space->aspace, 0))
1415       continue;
1416
1417     /* Addresses and length of the part of the breakpoint that
1418        we need to copy.  */
1419     bp_addr = bl->target_info.placed_address;
1420     bp_size = bl->target_info.shadow_len;
1421
1422     if (bp_addr + bp_size <= memaddr)
1423       /* The breakpoint is entirely before the chunk of memory we
1424          are reading.  */
1425       continue;
1426
1427     if (bp_addr >= memaddr + len)
1428       /* The breakpoint is entirely after the chunk of memory we are
1429          reading.  */
1430       continue;
1431
1432     /* Offset within shadow_contents.  */
1433     if (bp_addr < memaddr)
1434       {
1435         /* Only copy the second part of the breakpoint.  */
1436         bp_size -= memaddr - bp_addr;
1437         bptoffset = memaddr - bp_addr;
1438         bp_addr = memaddr;
1439       }
1440
1441     if (bp_addr + bp_size > memaddr + len)
1442       {
1443         /* Only copy the first part of the breakpoint.  */
1444         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1445       }
1446
1447     if (readbuf != NULL)
1448       {
1449         /* Update the read buffer with this inserted breakpoint's
1450            shadow.  */
1451         memcpy (readbuf + bp_addr - memaddr,
1452                 bl->target_info.shadow_contents + bptoffset, bp_size);
1453       }
1454     else
1455       {
1456         struct gdbarch *gdbarch = bl->gdbarch;
1457         const unsigned char *bp;
1458         CORE_ADDR placed_address = bl->target_info.placed_address;
1459         unsigned placed_size = bl->target_info.placed_size;
1460
1461         /* Update the shadow with what we want to write to memory.  */
1462         memcpy (bl->target_info.shadow_contents + bptoffset,
1463                 writebuf_org + bp_addr - memaddr, bp_size);
1464
1465         /* Determine appropriate breakpoint contents and size for this
1466            address.  */
1467         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1468
1469         /* Update the final write buffer with this inserted
1470            breakpoint's INSN.  */
1471         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1472       }
1473   }
1474 }
1475 \f
1476
1477 /* Return true if BPT is either a software breakpoint or a hardware
1478    breakpoint.  */
1479
1480 int
1481 is_breakpoint (const struct breakpoint *bpt)
1482 {
1483   return (bpt->type == bp_breakpoint
1484           || bpt->type == bp_hardware_breakpoint);
1485 }
1486
1487 /* Return true if BPT is of any hardware watchpoint kind.  */
1488
1489 static int
1490 is_hardware_watchpoint (const struct breakpoint *bpt)
1491 {
1492   return (bpt->type == bp_hardware_watchpoint
1493           || bpt->type == bp_read_watchpoint
1494           || bpt->type == bp_access_watchpoint);
1495 }
1496
1497 /* Return true if BPT is of any watchpoint kind, hardware or
1498    software.  */
1499
1500 int
1501 is_watchpoint (const struct breakpoint *bpt)
1502 {
1503   return (is_hardware_watchpoint (bpt)
1504           || bpt->type == bp_watchpoint);
1505 }
1506
1507 /* Returns true if the current thread and its running state are safe
1508    to evaluate or update watchpoint B.  Watchpoints on local
1509    expressions need to be evaluated in the context of the thread that
1510    was current when the watchpoint was created, and, that thread needs
1511    to be stopped to be able to select the correct frame context.
1512    Watchpoints on global expressions can be evaluated on any thread,
1513    and in any state.  It is presently left to the target allowing
1514    memory accesses when threads are running.  */
1515
1516 static int
1517 watchpoint_in_thread_scope (struct watchpoint *b)
1518 {
1519   return (b->base.pspace == current_program_space
1520           && (ptid_equal (b->watchpoint_thread, null_ptid)
1521               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1522                   && !is_executing (inferior_ptid))));
1523 }
1524
1525 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1526    associated bp_watchpoint_scope breakpoint.  */
1527
1528 static void
1529 watchpoint_del_at_next_stop (struct watchpoint *w)
1530 {
1531   struct breakpoint *b = &w->base;
1532
1533   if (b->related_breakpoint != b)
1534     {
1535       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1536       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1537       b->related_breakpoint->disposition = disp_del_at_next_stop;
1538       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1539       b->related_breakpoint = b;
1540     }
1541   b->disposition = disp_del_at_next_stop;
1542 }
1543
1544 /* Assuming that B is a watchpoint:
1545    - Reparse watchpoint expression, if REPARSE is non-zero
1546    - Evaluate expression and store the result in B->val
1547    - Evaluate the condition if there is one, and store the result
1548      in b->loc->cond.
1549    - Update the list of values that must be watched in B->loc.
1550
1551    If the watchpoint disposition is disp_del_at_next_stop, then do
1552    nothing.  If this is local watchpoint that is out of scope, delete
1553    it.
1554
1555    Even with `set breakpoint always-inserted on' the watchpoints are
1556    removed + inserted on each stop here.  Normal breakpoints must
1557    never be removed because they might be missed by a running thread
1558    when debugging in non-stop mode.  On the other hand, hardware
1559    watchpoints (is_hardware_watchpoint; processed here) are specific
1560    to each LWP since they are stored in each LWP's hardware debug
1561    registers.  Therefore, such LWP must be stopped first in order to
1562    be able to modify its hardware watchpoints.
1563
1564    Hardware watchpoints must be reset exactly once after being
1565    presented to the user.  It cannot be done sooner, because it would
1566    reset the data used to present the watchpoint hit to the user.  And
1567    it must not be done later because it could display the same single
1568    watchpoint hit during multiple GDB stops.  Note that the latter is
1569    relevant only to the hardware watchpoint types bp_read_watchpoint
1570    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1571    not user-visible - its hit is suppressed if the memory content has
1572    not changed.
1573
1574    The following constraints influence the location where we can reset
1575    hardware watchpoints:
1576
1577    * target_stopped_by_watchpoint and target_stopped_data_address are
1578      called several times when GDB stops.
1579
1580    [linux] 
1581    * Multiple hardware watchpoints can be hit at the same time,
1582      causing GDB to stop.  GDB only presents one hardware watchpoint
1583      hit at a time as the reason for stopping, and all the other hits
1584      are presented later, one after the other, each time the user
1585      requests the execution to be resumed.  Execution is not resumed
1586      for the threads still having pending hit event stored in
1587      LWP_INFO->STATUS.  While the watchpoint is already removed from
1588      the inferior on the first stop the thread hit event is kept being
1589      reported from its cached value by linux_nat_stopped_data_address
1590      until the real thread resume happens after the watchpoint gets
1591      presented and thus its LWP_INFO->STATUS gets reset.
1592
1593    Therefore the hardware watchpoint hit can get safely reset on the
1594    watchpoint removal from inferior.  */
1595
1596 static void
1597 update_watchpoint (struct watchpoint *b, int reparse)
1598 {
1599   int within_current_scope;
1600   struct frame_id saved_frame_id;
1601   int frame_saved;
1602
1603   /* If this is a local watchpoint, we only want to check if the
1604      watchpoint frame is in scope if the current thread is the thread
1605      that was used to create the watchpoint.  */
1606   if (!watchpoint_in_thread_scope (b))
1607     return;
1608
1609   if (b->base.disposition == disp_del_at_next_stop)
1610     return;
1611  
1612   frame_saved = 0;
1613
1614   /* Determine if the watchpoint is within scope.  */
1615   if (b->exp_valid_block == NULL)
1616     within_current_scope = 1;
1617   else
1618     {
1619       struct frame_info *fi = get_current_frame ();
1620       struct gdbarch *frame_arch = get_frame_arch (fi);
1621       CORE_ADDR frame_pc = get_frame_pc (fi);
1622
1623       /* If we're in a function epilogue, unwinding may not work
1624          properly, so do not attempt to recreate locations at this
1625          point.  See similar comments in watchpoint_check.  */
1626       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1627         return;
1628
1629       /* Save the current frame's ID so we can restore it after
1630          evaluating the watchpoint expression on its own frame.  */
1631       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1632          took a frame parameter, so that we didn't have to change the
1633          selected frame.  */
1634       frame_saved = 1;
1635       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1636
1637       fi = frame_find_by_id (b->watchpoint_frame);
1638       within_current_scope = (fi != NULL);
1639       if (within_current_scope)
1640         select_frame (fi);
1641     }
1642
1643   /* We don't free locations.  They are stored in the bp_location array
1644      and update_global_location_list will eventually delete them and
1645      remove breakpoints if needed.  */
1646   b->base.loc = NULL;
1647
1648   if (within_current_scope && reparse)
1649     {
1650       char *s;
1651
1652       if (b->exp)
1653         {
1654           xfree (b->exp);
1655           b->exp = NULL;
1656         }
1657       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1658       b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
1659       /* If the meaning of expression itself changed, the old value is
1660          no longer relevant.  We don't want to report a watchpoint hit
1661          to the user when the old value and the new value may actually
1662          be completely different objects.  */
1663       value_free (b->val);
1664       b->val = NULL;
1665       b->val_valid = 0;
1666
1667       /* Note that unlike with breakpoints, the watchpoint's condition
1668          expression is stored in the breakpoint object, not in the
1669          locations (re)created below.  */
1670       if (b->base.cond_string != NULL)
1671         {
1672           if (b->cond_exp != NULL)
1673             {
1674               xfree (b->cond_exp);
1675               b->cond_exp = NULL;
1676             }
1677
1678           s = b->base.cond_string;
1679           b->cond_exp = parse_exp_1 (&s, b->cond_exp_valid_block, 0);
1680         }
1681     }
1682
1683   /* If we failed to parse the expression, for example because
1684      it refers to a global variable in a not-yet-loaded shared library,
1685      don't try to insert watchpoint.  We don't automatically delete
1686      such watchpoint, though, since failure to parse expression
1687      is different from out-of-scope watchpoint.  */
1688   if ( !target_has_execution)
1689     {
1690       /* Without execution, memory can't change.  No use to try and
1691          set watchpoint locations.  The watchpoint will be reset when
1692          the target gains execution, through breakpoint_re_set.  */
1693     }
1694   else if (within_current_scope && b->exp)
1695     {
1696       int pc = 0;
1697       struct value *val_chain, *v, *result, *next;
1698       struct program_space *frame_pspace;
1699
1700       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1701
1702       /* Avoid setting b->val if it's already set.  The meaning of
1703          b->val is 'the last value' user saw, and we should update
1704          it only if we reported that last value to user.  As it
1705          happens, the code that reports it updates b->val directly.
1706          We don't keep track of the memory value for masked
1707          watchpoints.  */
1708       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1709         {
1710           b->val = v;
1711           b->val_valid = 1;
1712         }
1713
1714       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1715
1716       /* Look at each value on the value chain.  */
1717       for (v = val_chain; v; v = value_next (v))
1718         {
1719           /* If it's a memory location, and GDB actually needed
1720              its contents to evaluate the expression, then we
1721              must watch it.  If the first value returned is
1722              still lazy, that means an error occurred reading it;
1723              watch it anyway in case it becomes readable.  */
1724           if (VALUE_LVAL (v) == lval_memory
1725               && (v == val_chain || ! value_lazy (v)))
1726             {
1727               struct type *vtype = check_typedef (value_type (v));
1728
1729               /* We only watch structs and arrays if user asked
1730                  for it explicitly, never if they just happen to
1731                  appear in the middle of some value chain.  */
1732               if (v == result
1733                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1734                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1735                 {
1736                   CORE_ADDR addr;
1737                   int len, type;
1738                   struct bp_location *loc, **tmp;
1739
1740                   addr = value_address (v);
1741                   len = TYPE_LENGTH (value_type (v));
1742                   type = hw_write;
1743                   if (b->base.type == bp_read_watchpoint)
1744                     type = hw_read;
1745                   else if (b->base.type == bp_access_watchpoint)
1746                     type = hw_access;
1747
1748                   loc = allocate_bp_location (&b->base);
1749                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1750                     ;
1751                   *tmp = loc;
1752                   loc->gdbarch = get_type_arch (value_type (v));
1753
1754                   loc->pspace = frame_pspace;
1755                   loc->address = addr;
1756                   loc->length = len;
1757                   loc->watchpoint_type = type;
1758                 }
1759             }
1760         }
1761
1762       /* Change the type of breakpoint between hardware assisted or
1763          an ordinary watchpoint depending on the hardware support
1764          and free hardware slots.  REPARSE is set when the inferior
1765          is started.  */
1766       if (reparse)
1767         {
1768           int reg_cnt;
1769           enum bp_loc_type loc_type;
1770           struct bp_location *bl;
1771
1772           reg_cnt = can_use_hardware_watchpoint (val_chain);
1773
1774           if (reg_cnt)
1775             {
1776               int i, target_resources_ok, other_type_used;
1777               enum bptype type;
1778
1779               /* Use an exact watchpoint when there's only one memory region to be
1780                  watched, and only one debug register is needed to watch it.  */
1781               b->exact = target_exact_watchpoints && reg_cnt == 1;
1782
1783               /* We need to determine how many resources are already
1784                  used for all other hardware watchpoints plus this one
1785                  to see if we still have enough resources to also fit
1786                  this watchpoint in as well.  */
1787
1788               /* If this is a software watchpoint, we try to turn it
1789                  to a hardware one -- count resources as if B was of
1790                  hardware watchpoint type.  */
1791               type = b->base.type;
1792               if (type == bp_watchpoint)
1793                 type = bp_hardware_watchpoint;
1794
1795               /* This watchpoint may or may not have been placed on
1796                  the list yet at this point (it won't be in the list
1797                  if we're trying to create it for the first time,
1798                  through watch_command), so always account for it
1799                  manually.  */
1800
1801               /* Count resources used by all watchpoints except B.  */
1802               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1803
1804               /* Add in the resources needed for B.  */
1805               i += hw_watchpoint_use_count (&b->base);
1806
1807               target_resources_ok
1808                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1809               if (target_resources_ok <= 0)
1810                 {
1811                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1812
1813                   if (target_resources_ok == 0 && !sw_mode)
1814                     error (_("Target does not support this type of "
1815                              "hardware watchpoint."));
1816                   else if (target_resources_ok < 0 && !sw_mode)
1817                     error (_("There are not enough available hardware "
1818                              "resources for this watchpoint."));
1819
1820                   /* Downgrade to software watchpoint.  */
1821                   b->base.type = bp_watchpoint;
1822                 }
1823               else
1824                 {
1825                   /* If this was a software watchpoint, we've just
1826                      found we have enough resources to turn it to a
1827                      hardware watchpoint.  Otherwise, this is a
1828                      nop.  */
1829                   b->base.type = type;
1830                 }
1831             }
1832           else if (!b->base.ops->works_in_software_mode (&b->base))
1833             error (_("Expression cannot be implemented with "
1834                      "read/access watchpoint."));
1835           else
1836             b->base.type = bp_watchpoint;
1837
1838           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1839                       : bp_loc_hardware_watchpoint);
1840           for (bl = b->base.loc; bl; bl = bl->next)
1841             bl->loc_type = loc_type;
1842         }
1843
1844       for (v = val_chain; v; v = next)
1845         {
1846           next = value_next (v);
1847           if (v != b->val)
1848             value_free (v);
1849         }
1850
1851       /* If a software watchpoint is not watching any memory, then the
1852          above left it without any location set up.  But,
1853          bpstat_stop_status requires a location to be able to report
1854          stops, so make sure there's at least a dummy one.  */
1855       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1856         {
1857           struct breakpoint *base = &b->base;
1858           base->loc = allocate_bp_location (base);
1859           base->loc->pspace = frame_pspace;
1860           base->loc->address = -1;
1861           base->loc->length = -1;
1862           base->loc->watchpoint_type = -1;
1863         }
1864     }
1865   else if (!within_current_scope)
1866     {
1867       printf_filtered (_("\
1868 Watchpoint %d deleted because the program has left the block\n\
1869 in which its expression is valid.\n"),
1870                        b->base.number);
1871       watchpoint_del_at_next_stop (b);
1872     }
1873
1874   /* Restore the selected frame.  */
1875   if (frame_saved)
1876     select_frame (frame_find_by_id (saved_frame_id));
1877 }
1878
1879
1880 /* Returns 1 iff breakpoint location should be
1881    inserted in the inferior.  We don't differentiate the type of BL's owner
1882    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1883    breakpoint_ops is not defined, because in insert_bp_location,
1884    tracepoint's insert_location will not be called.  */
1885 static int
1886 should_be_inserted (struct bp_location *bl)
1887 {
1888   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1889     return 0;
1890
1891   if (bl->owner->disposition == disp_del_at_next_stop)
1892     return 0;
1893
1894   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1895     return 0;
1896
1897   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
1898     return 0;
1899
1900   /* This is set for example, when we're attached to the parent of a
1901      vfork, and have detached from the child.  The child is running
1902      free, and we expect it to do an exec or exit, at which point the
1903      OS makes the parent schedulable again (and the target reports
1904      that the vfork is done).  Until the child is done with the shared
1905      memory region, do not insert breakpoints in the parent, otherwise
1906      the child could still trip on the parent's breakpoints.  Since
1907      the parent is blocked anyway, it won't miss any breakpoint.  */
1908   if (bl->pspace->breakpoints_not_allowed)
1909     return 0;
1910
1911   return 1;
1912 }
1913
1914 /* Same as should_be_inserted but does the check assuming
1915    that the location is not duplicated.  */
1916
1917 static int
1918 unduplicated_should_be_inserted (struct bp_location *bl)
1919 {
1920   int result;
1921   const int save_duplicate = bl->duplicate;
1922
1923   bl->duplicate = 0;
1924   result = should_be_inserted (bl);
1925   bl->duplicate = save_duplicate;
1926   return result;
1927 }
1928
1929 /* Parses a conditional described by an expression COND into an
1930    agent expression bytecode suitable for evaluation
1931    by the bytecode interpreter.  Return NULL if there was
1932    any error during parsing.  */
1933
1934 static struct agent_expr *
1935 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
1936 {
1937   struct agent_expr *aexpr = NULL;
1938   struct cleanup *old_chain = NULL;
1939   volatile struct gdb_exception ex;
1940
1941   if (!cond)
1942     return NULL;
1943
1944   /* We don't want to stop processing, so catch any errors
1945      that may show up.  */
1946   TRY_CATCH (ex, RETURN_MASK_ERROR)
1947     {
1948       aexpr = gen_eval_for_expr (scope, cond);
1949     }
1950
1951   if (ex.reason < 0)
1952     {
1953       /* If we got here, it means the condition could not be parsed to a valid
1954          bytecode expression and thus can't be evaluated on the target's side.
1955          It's no use iterating through the conditions.  */
1956       return NULL;
1957     }
1958
1959   /* We have a valid agent expression.  */
1960   return aexpr;
1961 }
1962
1963 /* Based on location BL, create a list of breakpoint conditions to be
1964    passed on to the target.  If we have duplicated locations with different
1965    conditions, we will add such conditions to the list.  The idea is that the
1966    target will evaluate the list of conditions and will only notify GDB when
1967    one of them is true.  */
1968
1969 static void
1970 build_target_condition_list (struct bp_location *bl)
1971 {
1972   struct bp_location **locp = NULL, **loc2p;
1973   int null_condition_or_parse_error = 0;
1974   int modified = bl->needs_update;
1975   struct bp_location *loc;
1976
1977   /* This is only meaningful if the target is
1978      evaluating conditions and if the user has
1979      opted for condition evaluation on the target's
1980      side.  */
1981   if (gdb_evaluates_breakpoint_condition_p ()
1982       || !target_supports_evaluation_of_breakpoint_conditions ())
1983     return;
1984
1985   /* Do a first pass to check for locations with no assigned
1986      conditions or conditions that fail to parse to a valid agent expression
1987      bytecode.  If any of these happen, then it's no use to send conditions
1988      to the target since this location will always trigger and generate a
1989      response back to GDB.  */
1990   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
1991     {
1992       loc = (*loc2p);
1993       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
1994         {
1995           if (modified)
1996             {
1997               struct agent_expr *aexpr;
1998
1999               /* Re-parse the conditions since something changed.  In that
2000                  case we already freed the condition bytecodes (see
2001                  force_breakpoint_reinsertion).  We just
2002                  need to parse the condition to bytecodes again.  */
2003               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2004               loc->cond_bytecode = aexpr;
2005
2006               /* Check if we managed to parse the conditional expression
2007                  correctly.  If not, we will not send this condition
2008                  to the target.  */
2009               if (aexpr)
2010                 continue;
2011             }
2012
2013           /* If we have a NULL bytecode expression, it means something
2014              went wrong or we have a null condition expression.  */
2015           if (!loc->cond_bytecode)
2016             {
2017               null_condition_or_parse_error = 1;
2018               break;
2019             }
2020         }
2021     }
2022
2023   /* If any of these happened, it means we will have to evaluate the conditions
2024      for the location's address on gdb's side.  It is no use keeping bytecodes
2025      for all the other duplicate locations, thus we free all of them here.
2026
2027      This is so we have a finer control over which locations' conditions are
2028      being evaluated by GDB or the remote stub.  */
2029   if (null_condition_or_parse_error)
2030     {
2031       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2032         {
2033           loc = (*loc2p);
2034           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2035             {
2036               /* Only go as far as the first NULL bytecode is
2037                  located.  */
2038               if (!loc->cond_bytecode)
2039                 return;
2040
2041               free_agent_expr (loc->cond_bytecode);
2042               loc->cond_bytecode = NULL;
2043             }
2044         }
2045     }
2046
2047   /* No NULL conditions or failed bytecode generation.  Build a condition list
2048      for this location's address.  */
2049   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2050     {
2051       loc = (*loc2p);
2052       if (loc->cond
2053           && is_breakpoint (loc->owner)
2054           && loc->pspace->num == bl->pspace->num
2055           && loc->owner->enable_state == bp_enabled
2056           && loc->enabled)
2057         /* Add the condition to the vector.  This will be used later to send the
2058            conditions to the target.  */
2059         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2060                        loc->cond_bytecode);
2061     }
2062
2063   return;
2064 }
2065
2066 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2067    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2068    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2069    Returns 0 for success, 1 if the bp_location type is not supported or
2070    -1 for failure.
2071
2072    NOTE drow/2003-09-09: This routine could be broken down to an
2073    object-style method for each breakpoint or catchpoint type.  */
2074 static int
2075 insert_bp_location (struct bp_location *bl,
2076                     struct ui_file *tmp_error_stream,
2077                     int *disabled_breaks,
2078                     int *hw_breakpoint_error)
2079 {
2080   int val = 0;
2081
2082   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2083     return 0;
2084
2085   /* Initialize the target-specific information.  */
2086   memset (&bl->target_info, 0, sizeof (bl->target_info));
2087   bl->target_info.placed_address = bl->address;
2088   bl->target_info.placed_address_space = bl->pspace->aspace;
2089   bl->target_info.length = bl->length;
2090
2091   /* When working with target-side conditions, we must pass all the conditions
2092      for the same breakpoint address down to the target since GDB will not
2093      insert those locations.  With a list of breakpoint conditions, the target
2094      can decide when to stop and notify GDB.  */
2095
2096   if (is_breakpoint (bl->owner))
2097     {
2098       build_target_condition_list (bl);
2099       /* Reset the condition modification marker.  */
2100       bl->needs_update = 0;
2101     }
2102
2103   if (bl->loc_type == bp_loc_software_breakpoint
2104       || bl->loc_type == bp_loc_hardware_breakpoint)
2105     {
2106       if (bl->owner->type != bp_hardware_breakpoint)
2107         {
2108           /* If the explicitly specified breakpoint type
2109              is not hardware breakpoint, check the memory map to see
2110              if the breakpoint address is in read only memory or not.
2111
2112              Two important cases are:
2113              - location type is not hardware breakpoint, memory
2114              is readonly.  We change the type of the location to
2115              hardware breakpoint.
2116              - location type is hardware breakpoint, memory is
2117              read-write.  This means we've previously made the
2118              location hardware one, but then the memory map changed,
2119              so we undo.
2120              
2121              When breakpoints are removed, remove_breakpoints will use
2122              location types we've just set here, the only possible
2123              problem is that memory map has changed during running
2124              program, but it's not going to work anyway with current
2125              gdb.  */
2126           struct mem_region *mr 
2127             = lookup_mem_region (bl->target_info.placed_address);
2128           
2129           if (mr)
2130             {
2131               if (automatic_hardware_breakpoints)
2132                 {
2133                   enum bp_loc_type new_type;
2134                   
2135                   if (mr->attrib.mode != MEM_RW)
2136                     new_type = bp_loc_hardware_breakpoint;
2137                   else 
2138                     new_type = bp_loc_software_breakpoint;
2139                   
2140                   if (new_type != bl->loc_type)
2141                     {
2142                       static int said = 0;
2143
2144                       bl->loc_type = new_type;
2145                       if (!said)
2146                         {
2147                           fprintf_filtered (gdb_stdout,
2148                                             _("Note: automatically using "
2149                                               "hardware breakpoints for "
2150                                               "read-only addresses.\n"));
2151                           said = 1;
2152                         }
2153                     }
2154                 }
2155               else if (bl->loc_type == bp_loc_software_breakpoint
2156                        && mr->attrib.mode != MEM_RW)        
2157                 warning (_("cannot set software breakpoint "
2158                            "at readonly address %s"),
2159                          paddress (bl->gdbarch, bl->address));
2160             }
2161         }
2162         
2163       /* First check to see if we have to handle an overlay.  */
2164       if (overlay_debugging == ovly_off
2165           || bl->section == NULL
2166           || !(section_is_overlay (bl->section)))
2167         {
2168           /* No overlay handling: just set the breakpoint.  */
2169
2170           val = bl->owner->ops->insert_location (bl);
2171         }
2172       else
2173         {
2174           /* This breakpoint is in an overlay section.
2175              Shall we set a breakpoint at the LMA?  */
2176           if (!overlay_events_enabled)
2177             {
2178               /* Yes -- overlay event support is not active, 
2179                  so we must try to set a breakpoint at the LMA.
2180                  This will not work for a hardware breakpoint.  */
2181               if (bl->loc_type == bp_loc_hardware_breakpoint)
2182                 warning (_("hardware breakpoint %d not supported in overlay!"),
2183                          bl->owner->number);
2184               else
2185                 {
2186                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2187                                                              bl->section);
2188                   /* Set a software (trap) breakpoint at the LMA.  */
2189                   bl->overlay_target_info = bl->target_info;
2190                   bl->overlay_target_info.placed_address = addr;
2191                   val = target_insert_breakpoint (bl->gdbarch,
2192                                                   &bl->overlay_target_info);
2193                   if (val != 0)
2194                     fprintf_unfiltered (tmp_error_stream,
2195                                         "Overlay breakpoint %d "
2196                                         "failed: in ROM?\n",
2197                                         bl->owner->number);
2198                 }
2199             }
2200           /* Shall we set a breakpoint at the VMA? */
2201           if (section_is_mapped (bl->section))
2202             {
2203               /* Yes.  This overlay section is mapped into memory.  */
2204               val = bl->owner->ops->insert_location (bl);
2205             }
2206           else
2207             {
2208               /* No.  This breakpoint will not be inserted.  
2209                  No error, but do not mark the bp as 'inserted'.  */
2210               return 0;
2211             }
2212         }
2213
2214       if (val)
2215         {
2216           /* Can't set the breakpoint.  */
2217           if (solib_name_from_address (bl->pspace, bl->address))
2218             {
2219               /* See also: disable_breakpoints_in_shlibs.  */
2220               val = 0;
2221               bl->shlib_disabled = 1;
2222               observer_notify_breakpoint_modified (bl->owner);
2223               if (!*disabled_breaks)
2224                 {
2225                   fprintf_unfiltered (tmp_error_stream, 
2226                                       "Cannot insert breakpoint %d.\n", 
2227                                       bl->owner->number);
2228                   fprintf_unfiltered (tmp_error_stream, 
2229                                       "Temporarily disabling shared "
2230                                       "library breakpoints:\n");
2231                 }
2232               *disabled_breaks = 1;
2233               fprintf_unfiltered (tmp_error_stream,
2234                                   "breakpoint #%d\n", bl->owner->number);
2235             }
2236           else
2237             {
2238               if (bl->loc_type == bp_loc_hardware_breakpoint)
2239                 {
2240                   *hw_breakpoint_error = 1;
2241                   fprintf_unfiltered (tmp_error_stream,
2242                                       "Cannot insert hardware "
2243                                       "breakpoint %d.\n",
2244                                       bl->owner->number);
2245                 }
2246               else
2247                 {
2248                   fprintf_unfiltered (tmp_error_stream, 
2249                                       "Cannot insert breakpoint %d.\n", 
2250                                       bl->owner->number);
2251                   fprintf_filtered (tmp_error_stream, 
2252                                     "Error accessing memory address ");
2253                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2254                                   tmp_error_stream);
2255                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2256                                     safe_strerror (val));
2257                 }
2258
2259             }
2260         }
2261       else
2262         bl->inserted = 1;
2263
2264       return val;
2265     }
2266
2267   else if (bl->loc_type == bp_loc_hardware_watchpoint
2268            /* NOTE drow/2003-09-08: This state only exists for removing
2269               watchpoints.  It's not clear that it's necessary...  */
2270            && bl->owner->disposition != disp_del_at_next_stop)
2271     {
2272       gdb_assert (bl->owner->ops != NULL
2273                   && bl->owner->ops->insert_location != NULL);
2274
2275       val = bl->owner->ops->insert_location (bl);
2276
2277       /* If trying to set a read-watchpoint, and it turns out it's not
2278          supported, try emulating one with an access watchpoint.  */
2279       if (val == 1 && bl->watchpoint_type == hw_read)
2280         {
2281           struct bp_location *loc, **loc_temp;
2282
2283           /* But don't try to insert it, if there's already another
2284              hw_access location that would be considered a duplicate
2285              of this one.  */
2286           ALL_BP_LOCATIONS (loc, loc_temp)
2287             if (loc != bl
2288                 && loc->watchpoint_type == hw_access
2289                 && watchpoint_locations_match (bl, loc))
2290               {
2291                 bl->duplicate = 1;
2292                 bl->inserted = 1;
2293                 bl->target_info = loc->target_info;
2294                 bl->watchpoint_type = hw_access;
2295                 val = 0;
2296                 break;
2297               }
2298
2299           if (val == 1)
2300             {
2301               bl->watchpoint_type = hw_access;
2302               val = bl->owner->ops->insert_location (bl);
2303
2304               if (val)
2305                 /* Back to the original value.  */
2306                 bl->watchpoint_type = hw_read;
2307             }
2308         }
2309
2310       bl->inserted = (val == 0);
2311     }
2312
2313   else if (bl->owner->type == bp_catchpoint)
2314     {
2315       gdb_assert (bl->owner->ops != NULL
2316                   && bl->owner->ops->insert_location != NULL);
2317
2318       val = bl->owner->ops->insert_location (bl);
2319       if (val)
2320         {
2321           bl->owner->enable_state = bp_disabled;
2322
2323           if (val == 1)
2324             warning (_("\
2325 Error inserting catchpoint %d: Your system does not support this type\n\
2326 of catchpoint."), bl->owner->number);
2327           else
2328             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2329         }
2330
2331       bl->inserted = (val == 0);
2332
2333       /* We've already printed an error message if there was a problem
2334          inserting this catchpoint, and we've disabled the catchpoint,
2335          so just return success.  */
2336       return 0;
2337     }
2338
2339   return 0;
2340 }
2341
2342 /* This function is called when program space PSPACE is about to be
2343    deleted.  It takes care of updating breakpoints to not reference
2344    PSPACE anymore.  */
2345
2346 void
2347 breakpoint_program_space_exit (struct program_space *pspace)
2348 {
2349   struct breakpoint *b, *b_temp;
2350   struct bp_location *loc, **loc_temp;
2351
2352   /* Remove any breakpoint that was set through this program space.  */
2353   ALL_BREAKPOINTS_SAFE (b, b_temp)
2354     {
2355       if (b->pspace == pspace)
2356         delete_breakpoint (b);
2357     }
2358
2359   /* Breakpoints set through other program spaces could have locations
2360      bound to PSPACE as well.  Remove those.  */
2361   ALL_BP_LOCATIONS (loc, loc_temp)
2362     {
2363       struct bp_location *tmp;
2364
2365       if (loc->pspace == pspace)
2366         {
2367           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2368           if (loc->owner->loc == loc)
2369             loc->owner->loc = loc->next;
2370           else
2371             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2372               if (tmp->next == loc)
2373                 {
2374                   tmp->next = loc->next;
2375                   break;
2376                 }
2377         }
2378     }
2379
2380   /* Now update the global location list to permanently delete the
2381      removed locations above.  */
2382   update_global_location_list (0);
2383 }
2384
2385 /* Make sure all breakpoints are inserted in inferior.
2386    Throws exception on any error.
2387    A breakpoint that is already inserted won't be inserted
2388    again, so calling this function twice is safe.  */
2389 void
2390 insert_breakpoints (void)
2391 {
2392   struct breakpoint *bpt;
2393
2394   ALL_BREAKPOINTS (bpt)
2395     if (is_hardware_watchpoint (bpt))
2396       {
2397         struct watchpoint *w = (struct watchpoint *) bpt;
2398
2399         update_watchpoint (w, 0 /* don't reparse.  */);
2400       }
2401
2402   update_global_location_list (1);
2403
2404   /* update_global_location_list does not insert breakpoints when
2405      always_inserted_mode is not enabled.  Explicitly insert them
2406      now.  */
2407   if (!breakpoints_always_inserted_mode ())
2408     insert_breakpoint_locations ();
2409 }
2410
2411 /* This is used when we need to synch breakpoint conditions between GDB and the
2412    target.  It is the case with deleting and disabling of breakpoints when using
2413    always-inserted mode.  */
2414
2415 static void
2416 update_inserted_breakpoint_locations (void)
2417 {
2418   struct bp_location *bl, **blp_tmp;
2419   int error_flag = 0;
2420   int val = 0;
2421   int disabled_breaks = 0;
2422   int hw_breakpoint_error = 0;
2423
2424   struct ui_file *tmp_error_stream = mem_fileopen ();
2425   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2426
2427   /* Explicitly mark the warning -- this will only be printed if
2428      there was an error.  */
2429   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2430
2431   save_current_space_and_thread ();
2432
2433   ALL_BP_LOCATIONS (bl, blp_tmp)
2434     {
2435       /* We only want to update software breakpoints and hardware
2436          breakpoints.  */
2437       if (!is_breakpoint (bl->owner))
2438         continue;
2439
2440       /* We only want to update locations that are already inserted
2441          and need updating.  This is to avoid unwanted insertion during
2442          deletion of breakpoints.  */
2443       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2444         continue;
2445
2446       switch_to_program_space_and_thread (bl->pspace);
2447
2448       /* For targets that support global breakpoints, there's no need
2449          to select an inferior to insert breakpoint to.  In fact, even
2450          if we aren't attached to any process yet, we should still
2451          insert breakpoints.  */
2452       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2453           && ptid_equal (inferior_ptid, null_ptid))
2454         continue;
2455
2456       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2457                                     &hw_breakpoint_error);
2458       if (val)
2459         error_flag = val;
2460     }
2461
2462   if (error_flag)
2463     {
2464       target_terminal_ours_for_output ();
2465       error_stream (tmp_error_stream);
2466     }
2467
2468   do_cleanups (cleanups);
2469 }
2470
2471 /* Used when starting or continuing the program.  */
2472
2473 static void
2474 insert_breakpoint_locations (void)
2475 {
2476   struct breakpoint *bpt;
2477   struct bp_location *bl, **blp_tmp;
2478   int error_flag = 0;
2479   int val = 0;
2480   int disabled_breaks = 0;
2481   int hw_breakpoint_error = 0;
2482
2483   struct ui_file *tmp_error_stream = mem_fileopen ();
2484   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2485   
2486   /* Explicitly mark the warning -- this will only be printed if
2487      there was an error.  */
2488   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2489
2490   save_current_space_and_thread ();
2491
2492   ALL_BP_LOCATIONS (bl, blp_tmp)
2493     {
2494       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2495         continue;
2496
2497       /* There is no point inserting thread-specific breakpoints if
2498          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2499          has BL->OWNER always non-NULL.  */
2500       if (bl->owner->thread != -1
2501           && !valid_thread_id (bl->owner->thread))
2502         continue;
2503
2504       switch_to_program_space_and_thread (bl->pspace);
2505
2506       /* For targets that support global breakpoints, there's no need
2507          to select an inferior to insert breakpoint to.  In fact, even
2508          if we aren't attached to any process yet, we should still
2509          insert breakpoints.  */
2510       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2511           && ptid_equal (inferior_ptid, null_ptid))
2512         continue;
2513
2514       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2515                                     &hw_breakpoint_error);
2516       if (val)
2517         error_flag = val;
2518     }
2519
2520   /* If we failed to insert all locations of a watchpoint, remove
2521      them, as half-inserted watchpoint is of limited use.  */
2522   ALL_BREAKPOINTS (bpt)  
2523     {
2524       int some_failed = 0;
2525       struct bp_location *loc;
2526
2527       if (!is_hardware_watchpoint (bpt))
2528         continue;
2529
2530       if (!breakpoint_enabled (bpt))
2531         continue;
2532
2533       if (bpt->disposition == disp_del_at_next_stop)
2534         continue;
2535       
2536       for (loc = bpt->loc; loc; loc = loc->next)
2537         if (!loc->inserted && should_be_inserted (loc))
2538           {
2539             some_failed = 1;
2540             break;
2541           }
2542       if (some_failed)
2543         {
2544           for (loc = bpt->loc; loc; loc = loc->next)
2545             if (loc->inserted)
2546               remove_breakpoint (loc, mark_uninserted);
2547
2548           hw_breakpoint_error = 1;
2549           fprintf_unfiltered (tmp_error_stream,
2550                               "Could not insert hardware watchpoint %d.\n", 
2551                               bpt->number);
2552           error_flag = -1;
2553         }
2554     }
2555
2556   if (error_flag)
2557     {
2558       /* If a hardware breakpoint or watchpoint was inserted, add a
2559          message about possibly exhausted resources.  */
2560       if (hw_breakpoint_error)
2561         {
2562           fprintf_unfiltered (tmp_error_stream, 
2563                               "Could not insert hardware breakpoints:\n\
2564 You may have requested too many hardware breakpoints/watchpoints.\n");
2565         }
2566       target_terminal_ours_for_output ();
2567       error_stream (tmp_error_stream);
2568     }
2569
2570   do_cleanups (cleanups);
2571 }
2572
2573 /* Used when the program stops.
2574    Returns zero if successful, or non-zero if there was a problem
2575    removing a breakpoint location.  */
2576
2577 int
2578 remove_breakpoints (void)
2579 {
2580   struct bp_location *bl, **blp_tmp;
2581   int val = 0;
2582
2583   ALL_BP_LOCATIONS (bl, blp_tmp)
2584   {
2585     if (bl->inserted && !is_tracepoint (bl->owner))
2586       val |= remove_breakpoint (bl, mark_uninserted);
2587   }
2588   return val;
2589 }
2590
2591 /* Remove breakpoints of process PID.  */
2592
2593 int
2594 remove_breakpoints_pid (int pid)
2595 {
2596   struct bp_location *bl, **blp_tmp;
2597   int val;
2598   struct inferior *inf = find_inferior_pid (pid);
2599
2600   ALL_BP_LOCATIONS (bl, blp_tmp)
2601   {
2602     if (bl->pspace != inf->pspace)
2603       continue;
2604
2605     if (bl->inserted)
2606       {
2607         val = remove_breakpoint (bl, mark_uninserted);
2608         if (val != 0)
2609           return val;
2610       }
2611   }
2612   return 0;
2613 }
2614
2615 int
2616 reattach_breakpoints (int pid)
2617 {
2618   struct cleanup *old_chain;
2619   struct bp_location *bl, **blp_tmp;
2620   int val;
2621   struct ui_file *tmp_error_stream;
2622   int dummy1 = 0, dummy2 = 0;
2623   struct inferior *inf;
2624   struct thread_info *tp;
2625
2626   tp = any_live_thread_of_process (pid);
2627   if (tp == NULL)
2628     return 1;
2629
2630   inf = find_inferior_pid (pid);
2631   old_chain = save_inferior_ptid ();
2632
2633   inferior_ptid = tp->ptid;
2634
2635   tmp_error_stream = mem_fileopen ();
2636   make_cleanup_ui_file_delete (tmp_error_stream);
2637
2638   ALL_BP_LOCATIONS (bl, blp_tmp)
2639   {
2640     if (bl->pspace != inf->pspace)
2641       continue;
2642
2643     if (bl->inserted)
2644       {
2645         bl->inserted = 0;
2646         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2);
2647         if (val != 0)
2648           {
2649             do_cleanups (old_chain);
2650             return val;
2651           }
2652       }
2653   }
2654   do_cleanups (old_chain);
2655   return 0;
2656 }
2657
2658 static int internal_breakpoint_number = -1;
2659
2660 /* Set the breakpoint number of B, depending on the value of INTERNAL.
2661    If INTERNAL is non-zero, the breakpoint number will be populated
2662    from internal_breakpoint_number and that variable decremented.
2663    Otherwise the breakpoint number will be populated from
2664    breakpoint_count and that value incremented.  Internal breakpoints
2665    do not set the internal var bpnum.  */
2666 static void
2667 set_breakpoint_number (int internal, struct breakpoint *b)
2668 {
2669   if (internal)
2670     b->number = internal_breakpoint_number--;
2671   else
2672     {
2673       set_breakpoint_count (breakpoint_count + 1);
2674       b->number = breakpoint_count;
2675     }
2676 }
2677
2678 static struct breakpoint *
2679 create_internal_breakpoint (struct gdbarch *gdbarch,
2680                             CORE_ADDR address, enum bptype type,
2681                             const struct breakpoint_ops *ops)
2682 {
2683   struct symtab_and_line sal;
2684   struct breakpoint *b;
2685
2686   init_sal (&sal);              /* Initialize to zeroes.  */
2687
2688   sal.pc = address;
2689   sal.section = find_pc_overlay (sal.pc);
2690   sal.pspace = current_program_space;
2691
2692   b = set_raw_breakpoint (gdbarch, sal, type, ops);
2693   b->number = internal_breakpoint_number--;
2694   b->disposition = disp_donttouch;
2695
2696   return b;
2697 }
2698
2699 static const char *const longjmp_names[] =
2700   {
2701     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
2702   };
2703 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
2704
2705 /* Per-objfile data private to breakpoint.c.  */
2706 struct breakpoint_objfile_data
2707 {
2708   /* Minimal symbol for "_ovly_debug_event" (if any).  */
2709   struct minimal_symbol *overlay_msym;
2710
2711   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
2712   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
2713
2714   /* Minimal symbol for "std::terminate()" (if any).  */
2715   struct minimal_symbol *terminate_msym;
2716
2717   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
2718   struct minimal_symbol *exception_msym;
2719 };
2720
2721 static const struct objfile_data *breakpoint_objfile_key;
2722
2723 /* Minimal symbol not found sentinel.  */
2724 static struct minimal_symbol msym_not_found;
2725
2726 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
2727
2728 static int
2729 msym_not_found_p (const struct minimal_symbol *msym)
2730 {
2731   return msym == &msym_not_found;
2732 }
2733
2734 /* Return per-objfile data needed by breakpoint.c.
2735    Allocate the data if necessary.  */
2736
2737 static struct breakpoint_objfile_data *
2738 get_breakpoint_objfile_data (struct objfile *objfile)
2739 {
2740   struct breakpoint_objfile_data *bp_objfile_data;
2741
2742   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
2743   if (bp_objfile_data == NULL)
2744     {
2745       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
2746                                        sizeof (*bp_objfile_data));
2747
2748       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
2749       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
2750     }
2751   return bp_objfile_data;
2752 }
2753
2754 static void
2755 create_overlay_event_breakpoint (void)
2756 {
2757   struct objfile *objfile;
2758   const char *const func_name = "_ovly_debug_event";
2759
2760   ALL_OBJFILES (objfile)
2761     {
2762       struct breakpoint *b;
2763       struct breakpoint_objfile_data *bp_objfile_data;
2764       CORE_ADDR addr;
2765
2766       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2767
2768       if (msym_not_found_p (bp_objfile_data->overlay_msym))
2769         continue;
2770
2771       if (bp_objfile_data->overlay_msym == NULL)
2772         {
2773           struct minimal_symbol *m;
2774
2775           m = lookup_minimal_symbol_text (func_name, objfile);
2776           if (m == NULL)
2777             {
2778               /* Avoid future lookups in this objfile.  */
2779               bp_objfile_data->overlay_msym = &msym_not_found;
2780               continue;
2781             }
2782           bp_objfile_data->overlay_msym = m;
2783         }
2784
2785       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
2786       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2787                                       bp_overlay_event,
2788                                       &internal_breakpoint_ops);
2789       b->addr_string = xstrdup (func_name);
2790
2791       if (overlay_debugging == ovly_auto)
2792         {
2793           b->enable_state = bp_enabled;
2794           overlay_events_enabled = 1;
2795         }
2796       else
2797        {
2798          b->enable_state = bp_disabled;
2799          overlay_events_enabled = 0;
2800        }
2801     }
2802   update_global_location_list (1);
2803 }
2804
2805 static void
2806 create_longjmp_master_breakpoint (void)
2807 {
2808   struct program_space *pspace;
2809   struct cleanup *old_chain;
2810
2811   old_chain = save_current_program_space ();
2812
2813   ALL_PSPACES (pspace)
2814   {
2815     struct objfile *objfile;
2816
2817     set_current_program_space (pspace);
2818
2819     ALL_OBJFILES (objfile)
2820     {
2821       int i;
2822       struct gdbarch *gdbarch;
2823       struct breakpoint_objfile_data *bp_objfile_data;
2824
2825       gdbarch = get_objfile_arch (objfile);
2826       if (!gdbarch_get_longjmp_target_p (gdbarch))
2827         continue;
2828
2829       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2830
2831       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
2832         {
2833           struct breakpoint *b;
2834           const char *func_name;
2835           CORE_ADDR addr;
2836
2837           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
2838             continue;
2839
2840           func_name = longjmp_names[i];
2841           if (bp_objfile_data->longjmp_msym[i] == NULL)
2842             {
2843               struct minimal_symbol *m;
2844
2845               m = lookup_minimal_symbol_text (func_name, objfile);
2846               if (m == NULL)
2847                 {
2848                   /* Prevent future lookups in this objfile.  */
2849                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
2850                   continue;
2851                 }
2852               bp_objfile_data->longjmp_msym[i] = m;
2853             }
2854
2855           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
2856           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
2857                                           &internal_breakpoint_ops);
2858           b->addr_string = xstrdup (func_name);
2859           b->enable_state = bp_disabled;
2860         }
2861     }
2862   }
2863   update_global_location_list (1);
2864
2865   do_cleanups (old_chain);
2866 }
2867
2868 /* Create a master std::terminate breakpoint.  */
2869 static void
2870 create_std_terminate_master_breakpoint (void)
2871 {
2872   struct program_space *pspace;
2873   struct cleanup *old_chain;
2874   const char *const func_name = "std::terminate()";
2875
2876   old_chain = save_current_program_space ();
2877
2878   ALL_PSPACES (pspace)
2879   {
2880     struct objfile *objfile;
2881     CORE_ADDR addr;
2882
2883     set_current_program_space (pspace);
2884
2885     ALL_OBJFILES (objfile)
2886     {
2887       struct breakpoint *b;
2888       struct breakpoint_objfile_data *bp_objfile_data;
2889
2890       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2891
2892       if (msym_not_found_p (bp_objfile_data->terminate_msym))
2893         continue;
2894
2895       if (bp_objfile_data->terminate_msym == NULL)
2896         {
2897           struct minimal_symbol *m;
2898
2899           m = lookup_minimal_symbol (func_name, NULL, objfile);
2900           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
2901                             && MSYMBOL_TYPE (m) != mst_file_text))
2902             {
2903               /* Prevent future lookups in this objfile.  */
2904               bp_objfile_data->terminate_msym = &msym_not_found;
2905               continue;
2906             }
2907           bp_objfile_data->terminate_msym = m;
2908         }
2909
2910       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
2911       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2912                                       bp_std_terminate_master,
2913                                       &internal_breakpoint_ops);
2914       b->addr_string = xstrdup (func_name);
2915       b->enable_state = bp_disabled;
2916     }
2917   }
2918
2919   update_global_location_list (1);
2920
2921   do_cleanups (old_chain);
2922 }
2923
2924 /* Install a master breakpoint on the unwinder's debug hook.  */
2925
2926 static void
2927 create_exception_master_breakpoint (void)
2928 {
2929   struct objfile *objfile;
2930   const char *const func_name = "_Unwind_DebugHook";
2931
2932   ALL_OBJFILES (objfile)
2933     {
2934       struct breakpoint *b;
2935       struct gdbarch *gdbarch;
2936       struct breakpoint_objfile_data *bp_objfile_data;
2937       CORE_ADDR addr;
2938
2939       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2940
2941       if (msym_not_found_p (bp_objfile_data->exception_msym))
2942         continue;
2943
2944       gdbarch = get_objfile_arch (objfile);
2945
2946       if (bp_objfile_data->exception_msym == NULL)
2947         {
2948           struct minimal_symbol *debug_hook;
2949
2950           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
2951           if (debug_hook == NULL)
2952             {
2953               bp_objfile_data->exception_msym = &msym_not_found;
2954               continue;
2955             }
2956
2957           bp_objfile_data->exception_msym = debug_hook;
2958         }
2959
2960       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
2961       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
2962                                                  &current_target);
2963       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
2964                                       &internal_breakpoint_ops);
2965       b->addr_string = xstrdup (func_name);
2966       b->enable_state = bp_disabled;
2967     }
2968
2969   update_global_location_list (1);
2970 }
2971
2972 void
2973 update_breakpoints_after_exec (void)
2974 {
2975   struct breakpoint *b, *b_tmp;
2976   struct bp_location *bploc, **bplocp_tmp;
2977
2978   /* We're about to delete breakpoints from GDB's lists.  If the
2979      INSERTED flag is true, GDB will try to lift the breakpoints by
2980      writing the breakpoints' "shadow contents" back into memory.  The
2981      "shadow contents" are NOT valid after an exec, so GDB should not
2982      do that.  Instead, the target is responsible from marking
2983      breakpoints out as soon as it detects an exec.  We don't do that
2984      here instead, because there may be other attempts to delete
2985      breakpoints after detecting an exec and before reaching here.  */
2986   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
2987     if (bploc->pspace == current_program_space)
2988       gdb_assert (!bploc->inserted);
2989
2990   ALL_BREAKPOINTS_SAFE (b, b_tmp)
2991   {
2992     if (b->pspace != current_program_space)
2993       continue;
2994
2995     /* Solib breakpoints must be explicitly reset after an exec().  */
2996     if (b->type == bp_shlib_event)
2997       {
2998         delete_breakpoint (b);
2999         continue;
3000       }
3001
3002     /* JIT breakpoints must be explicitly reset after an exec().  */
3003     if (b->type == bp_jit_event)
3004       {
3005         delete_breakpoint (b);
3006         continue;
3007       }
3008
3009     /* Thread event breakpoints must be set anew after an exec(),
3010        as must overlay event and longjmp master breakpoints.  */
3011     if (b->type == bp_thread_event || b->type == bp_overlay_event
3012         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3013         || b->type == bp_exception_master)
3014       {
3015         delete_breakpoint (b);
3016         continue;
3017       }
3018
3019     /* Step-resume breakpoints are meaningless after an exec().  */
3020     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3021       {
3022         delete_breakpoint (b);
3023         continue;
3024       }
3025
3026     /* Longjmp and longjmp-resume breakpoints are also meaningless
3027        after an exec.  */
3028     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3029         || b->type == bp_exception || b->type == bp_exception_resume)
3030       {
3031         delete_breakpoint (b);
3032         continue;
3033       }
3034
3035     if (b->type == bp_catchpoint)
3036       {
3037         /* For now, none of the bp_catchpoint breakpoints need to
3038            do anything at this point.  In the future, if some of
3039            the catchpoints need to something, we will need to add
3040            a new method, and call this method from here.  */
3041         continue;
3042       }
3043
3044     /* bp_finish is a special case.  The only way we ought to be able
3045        to see one of these when an exec() has happened, is if the user
3046        caught a vfork, and then said "finish".  Ordinarily a finish just
3047        carries them to the call-site of the current callee, by setting
3048        a temporary bp there and resuming.  But in this case, the finish
3049        will carry them entirely through the vfork & exec.
3050
3051        We don't want to allow a bp_finish to remain inserted now.  But
3052        we can't safely delete it, 'cause finish_command has a handle to
3053        the bp on a bpstat, and will later want to delete it.  There's a
3054        chance (and I've seen it happen) that if we delete the bp_finish
3055        here, that its storage will get reused by the time finish_command
3056        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3057        We really must allow finish_command to delete a bp_finish.
3058
3059        In the absence of a general solution for the "how do we know
3060        it's safe to delete something others may have handles to?"
3061        problem, what we'll do here is just uninsert the bp_finish, and
3062        let finish_command delete it.
3063
3064        (We know the bp_finish is "doomed" in the sense that it's
3065        momentary, and will be deleted as soon as finish_command sees
3066        the inferior stopped.  So it doesn't matter that the bp's
3067        address is probably bogus in the new a.out, unlike e.g., the
3068        solib breakpoints.)  */
3069
3070     if (b->type == bp_finish)
3071       {
3072         continue;
3073       }
3074
3075     /* Without a symbolic address, we have little hope of the
3076        pre-exec() address meaning the same thing in the post-exec()
3077        a.out.  */
3078     if (b->addr_string == NULL)
3079       {
3080         delete_breakpoint (b);
3081         continue;
3082       }
3083   }
3084   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3085   create_overlay_event_breakpoint ();
3086   create_longjmp_master_breakpoint ();
3087   create_std_terminate_master_breakpoint ();
3088   create_exception_master_breakpoint ();
3089 }
3090
3091 int
3092 detach_breakpoints (int pid)
3093 {
3094   struct bp_location *bl, **blp_tmp;
3095   int val = 0;
3096   struct cleanup *old_chain = save_inferior_ptid ();
3097   struct inferior *inf = current_inferior ();
3098
3099   if (pid == PIDGET (inferior_ptid))
3100     error (_("Cannot detach breakpoints of inferior_ptid"));
3101
3102   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3103   inferior_ptid = pid_to_ptid (pid);
3104   ALL_BP_LOCATIONS (bl, blp_tmp)
3105   {
3106     if (bl->pspace != inf->pspace)
3107       continue;
3108
3109     if (bl->inserted)
3110       val |= remove_breakpoint_1 (bl, mark_inserted);
3111   }
3112
3113   /* Detach single-step breakpoints as well.  */
3114   detach_single_step_breakpoints ();
3115
3116   do_cleanups (old_chain);
3117   return val;
3118 }
3119
3120 /* Remove the breakpoint location BL from the current address space.
3121    Note that this is used to detach breakpoints from a child fork.
3122    When we get here, the child isn't in the inferior list, and neither
3123    do we have objects to represent its address space --- we should
3124    *not* look at bl->pspace->aspace here.  */
3125
3126 static int
3127 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3128 {
3129   int val;
3130
3131   /* BL is never in moribund_locations by our callers.  */
3132   gdb_assert (bl->owner != NULL);
3133
3134   if (bl->owner->enable_state == bp_permanent)
3135     /* Permanent breakpoints cannot be inserted or removed.  */
3136     return 0;
3137
3138   /* The type of none suggests that owner is actually deleted.
3139      This should not ever happen.  */
3140   gdb_assert (bl->owner->type != bp_none);
3141
3142   if (bl->loc_type == bp_loc_software_breakpoint
3143       || bl->loc_type == bp_loc_hardware_breakpoint)
3144     {
3145       /* "Normal" instruction breakpoint: either the standard
3146          trap-instruction bp (bp_breakpoint), or a
3147          bp_hardware_breakpoint.  */
3148
3149       /* First check to see if we have to handle an overlay.  */
3150       if (overlay_debugging == ovly_off
3151           || bl->section == NULL
3152           || !(section_is_overlay (bl->section)))
3153         {
3154           /* No overlay handling: just remove the breakpoint.  */
3155           val = bl->owner->ops->remove_location (bl);
3156         }
3157       else
3158         {
3159           /* This breakpoint is in an overlay section.
3160              Did we set a breakpoint at the LMA?  */
3161           if (!overlay_events_enabled)
3162               {
3163                 /* Yes -- overlay event support is not active, so we
3164                    should have set a breakpoint at the LMA.  Remove it.  
3165                 */
3166                 /* Ignore any failures: if the LMA is in ROM, we will
3167                    have already warned when we failed to insert it.  */
3168                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3169                   target_remove_hw_breakpoint (bl->gdbarch,
3170                                                &bl->overlay_target_info);
3171                 else
3172                   target_remove_breakpoint (bl->gdbarch,
3173                                             &bl->overlay_target_info);
3174               }
3175           /* Did we set a breakpoint at the VMA? 
3176              If so, we will have marked the breakpoint 'inserted'.  */
3177           if (bl->inserted)
3178             {
3179               /* Yes -- remove it.  Previously we did not bother to
3180                  remove the breakpoint if the section had been
3181                  unmapped, but let's not rely on that being safe.  We
3182                  don't know what the overlay manager might do.  */
3183
3184               /* However, we should remove *software* breakpoints only
3185                  if the section is still mapped, or else we overwrite
3186                  wrong code with the saved shadow contents.  */
3187               if (bl->loc_type == bp_loc_hardware_breakpoint
3188                   || section_is_mapped (bl->section))
3189                 val = bl->owner->ops->remove_location (bl);
3190               else
3191                 val = 0;
3192             }
3193           else
3194             {
3195               /* No -- not inserted, so no need to remove.  No error.  */
3196               val = 0;
3197             }
3198         }
3199
3200       /* In some cases, we might not be able to remove a breakpoint
3201          in a shared library that has already been removed, but we
3202          have not yet processed the shlib unload event.  */
3203       if (val && solib_name_from_address (bl->pspace, bl->address))
3204         val = 0;
3205
3206       if (val)
3207         return val;
3208       bl->inserted = (is == mark_inserted);
3209     }
3210   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3211     {
3212       gdb_assert (bl->owner->ops != NULL
3213                   && bl->owner->ops->remove_location != NULL);
3214
3215       bl->inserted = (is == mark_inserted);
3216       bl->owner->ops->remove_location (bl);
3217
3218       /* Failure to remove any of the hardware watchpoints comes here.  */
3219       if ((is == mark_uninserted) && (bl->inserted))
3220         warning (_("Could not remove hardware watchpoint %d."),
3221                  bl->owner->number);
3222     }
3223   else if (bl->owner->type == bp_catchpoint
3224            && breakpoint_enabled (bl->owner)
3225            && !bl->duplicate)
3226     {
3227       gdb_assert (bl->owner->ops != NULL
3228                   && bl->owner->ops->remove_location != NULL);
3229
3230       val = bl->owner->ops->remove_location (bl);
3231       if (val)
3232         return val;
3233
3234       bl->inserted = (is == mark_inserted);
3235     }
3236
3237   return 0;
3238 }
3239
3240 static int
3241 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3242 {
3243   int ret;
3244   struct cleanup *old_chain;
3245
3246   /* BL is never in moribund_locations by our callers.  */
3247   gdb_assert (bl->owner != NULL);
3248
3249   if (bl->owner->enable_state == bp_permanent)
3250     /* Permanent breakpoints cannot be inserted or removed.  */
3251     return 0;
3252
3253   /* The type of none suggests that owner is actually deleted.
3254      This should not ever happen.  */
3255   gdb_assert (bl->owner->type != bp_none);
3256
3257   old_chain = save_current_space_and_thread ();
3258
3259   switch_to_program_space_and_thread (bl->pspace);
3260
3261   ret = remove_breakpoint_1 (bl, is);
3262
3263   do_cleanups (old_chain);
3264   return ret;
3265 }
3266
3267 /* Clear the "inserted" flag in all breakpoints.  */
3268
3269 void
3270 mark_breakpoints_out (void)
3271 {
3272   struct bp_location *bl, **blp_tmp;
3273
3274   ALL_BP_LOCATIONS (bl, blp_tmp)
3275     if (bl->pspace == current_program_space)
3276       bl->inserted = 0;
3277 }
3278
3279 /* Clear the "inserted" flag in all breakpoints and delete any
3280    breakpoints which should go away between runs of the program.
3281
3282    Plus other such housekeeping that has to be done for breakpoints
3283    between runs.
3284
3285    Note: this function gets called at the end of a run (by
3286    generic_mourn_inferior) and when a run begins (by
3287    init_wait_for_inferior).  */
3288
3289
3290
3291 void
3292 breakpoint_init_inferior (enum inf_context context)
3293 {
3294   struct breakpoint *b, *b_tmp;
3295   struct bp_location *bl, **blp_tmp;
3296   int ix;
3297   struct program_space *pspace = current_program_space;
3298
3299   /* If breakpoint locations are shared across processes, then there's
3300      nothing to do.  */
3301   if (gdbarch_has_global_breakpoints (target_gdbarch))
3302     return;
3303
3304   ALL_BP_LOCATIONS (bl, blp_tmp)
3305   {
3306     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3307     if (bl->pspace == pspace
3308         && bl->owner->enable_state != bp_permanent)
3309       bl->inserted = 0;
3310   }
3311
3312   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3313   {
3314     if (b->loc && b->loc->pspace != pspace)
3315       continue;
3316
3317     switch (b->type)
3318       {
3319       case bp_call_dummy:
3320
3321         /* If the call dummy breakpoint is at the entry point it will
3322            cause problems when the inferior is rerun, so we better get
3323            rid of it.  */
3324
3325       case bp_watchpoint_scope:
3326
3327         /* Also get rid of scope breakpoints.  */
3328
3329       case bp_shlib_event:
3330
3331         /* Also remove solib event breakpoints.  Their addresses may
3332            have changed since the last time we ran the program.
3333            Actually we may now be debugging against different target;
3334            and so the solib backend that installed this breakpoint may
3335            not be used in by the target.  E.g.,
3336
3337            (gdb) file prog-linux
3338            (gdb) run               # native linux target
3339            ...
3340            (gdb) kill
3341            (gdb) file prog-win.exe
3342            (gdb) tar rem :9999     # remote Windows gdbserver.
3343         */
3344
3345       case bp_step_resume:
3346
3347         /* Also remove step-resume breakpoints.  */
3348
3349         delete_breakpoint (b);
3350         break;
3351
3352       case bp_watchpoint:
3353       case bp_hardware_watchpoint:
3354       case bp_read_watchpoint:
3355       case bp_access_watchpoint:
3356         {
3357           struct watchpoint *w = (struct watchpoint *) b;
3358
3359           /* Likewise for watchpoints on local expressions.  */
3360           if (w->exp_valid_block != NULL)
3361             delete_breakpoint (b);
3362           else if (context == inf_starting)
3363             {
3364               /* Reset val field to force reread of starting value in
3365                  insert_breakpoints.  */
3366               if (w->val)
3367                 value_free (w->val);
3368               w->val = NULL;
3369               w->val_valid = 0;
3370           }
3371         }
3372         break;
3373       default:
3374         break;
3375       }
3376   }
3377
3378   /* Get rid of the moribund locations.  */
3379   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3380     decref_bp_location (&bl);
3381   VEC_free (bp_location_p, moribund_locations);
3382 }
3383
3384 /* These functions concern about actual breakpoints inserted in the
3385    target --- to e.g. check if we need to do decr_pc adjustment or if
3386    we need to hop over the bkpt --- so we check for address space
3387    match, not program space.  */
3388
3389 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3390    exists at PC.  It returns ordinary_breakpoint_here if it's an
3391    ordinary breakpoint, or permanent_breakpoint_here if it's a
3392    permanent breakpoint.
3393    - When continuing from a location with an ordinary breakpoint, we
3394      actually single step once before calling insert_breakpoints.
3395    - When continuing from a location with a permanent breakpoint, we
3396      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3397      the target, to advance the PC past the breakpoint.  */
3398
3399 enum breakpoint_here
3400 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3401 {
3402   struct bp_location *bl, **blp_tmp;
3403   int any_breakpoint_here = 0;
3404
3405   ALL_BP_LOCATIONS (bl, blp_tmp)
3406     {
3407       if (bl->loc_type != bp_loc_software_breakpoint
3408           && bl->loc_type != bp_loc_hardware_breakpoint)
3409         continue;
3410
3411       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3412       if ((breakpoint_enabled (bl->owner)
3413            || bl->owner->enable_state == bp_permanent)
3414           && breakpoint_location_address_match (bl, aspace, pc))
3415         {
3416           if (overlay_debugging 
3417               && section_is_overlay (bl->section)
3418               && !section_is_mapped (bl->section))
3419             continue;           /* unmapped overlay -- can't be a match */
3420           else if (bl->owner->enable_state == bp_permanent)
3421             return permanent_breakpoint_here;
3422           else
3423             any_breakpoint_here = 1;
3424         }
3425     }
3426
3427   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3428 }
3429
3430 /* Return true if there's a moribund breakpoint at PC.  */
3431
3432 int
3433 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3434 {
3435   struct bp_location *loc;
3436   int ix;
3437
3438   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3439     if (breakpoint_location_address_match (loc, aspace, pc))
3440       return 1;
3441
3442   return 0;
3443 }
3444
3445 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3446    inserted using regular breakpoint_chain / bp_location array
3447    mechanism.  This does not check for single-step breakpoints, which
3448    are inserted and removed using direct target manipulation.  */
3449
3450 int
3451 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3452                                     CORE_ADDR pc)
3453 {
3454   struct bp_location *bl, **blp_tmp;
3455
3456   ALL_BP_LOCATIONS (bl, blp_tmp)
3457     {
3458       if (bl->loc_type != bp_loc_software_breakpoint
3459           && bl->loc_type != bp_loc_hardware_breakpoint)
3460         continue;
3461
3462       if (bl->inserted
3463           && breakpoint_location_address_match (bl, aspace, pc))
3464         {
3465           if (overlay_debugging 
3466               && section_is_overlay (bl->section)
3467               && !section_is_mapped (bl->section))
3468             continue;           /* unmapped overlay -- can't be a match */
3469           else
3470             return 1;
3471         }
3472     }
3473   return 0;
3474 }
3475
3476 /* Returns non-zero iff there's either regular breakpoint
3477    or a single step breakpoint inserted at PC.  */
3478
3479 int
3480 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3481 {
3482   if (regular_breakpoint_inserted_here_p (aspace, pc))
3483     return 1;
3484
3485   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3486     return 1;
3487
3488   return 0;
3489 }
3490
3491 /* This function returns non-zero iff there is a software breakpoint
3492    inserted at PC.  */
3493
3494 int
3495 software_breakpoint_inserted_here_p (struct address_space *aspace,
3496                                      CORE_ADDR pc)
3497 {
3498   struct bp_location *bl, **blp_tmp;
3499
3500   ALL_BP_LOCATIONS (bl, blp_tmp)
3501     {
3502       if (bl->loc_type != bp_loc_software_breakpoint)
3503         continue;
3504
3505       if (bl->inserted
3506           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3507                                        aspace, pc))
3508         {
3509           if (overlay_debugging 
3510               && section_is_overlay (bl->section)
3511               && !section_is_mapped (bl->section))
3512             continue;           /* unmapped overlay -- can't be a match */
3513           else
3514             return 1;
3515         }
3516     }
3517
3518   /* Also check for software single-step breakpoints.  */
3519   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3520     return 1;
3521
3522   return 0;
3523 }
3524
3525 int
3526 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3527                                        CORE_ADDR addr, ULONGEST len)
3528 {
3529   struct breakpoint *bpt;
3530
3531   ALL_BREAKPOINTS (bpt)
3532     {
3533       struct bp_location *loc;
3534
3535       if (bpt->type != bp_hardware_watchpoint
3536           && bpt->type != bp_access_watchpoint)
3537         continue;
3538
3539       if (!breakpoint_enabled (bpt))
3540         continue;
3541
3542       for (loc = bpt->loc; loc; loc = loc->next)
3543         if (loc->pspace->aspace == aspace && loc->inserted)
3544           {
3545             CORE_ADDR l, h;
3546
3547             /* Check for intersection.  */
3548             l = max (loc->address, addr);
3549             h = min (loc->address + loc->length, addr + len);
3550             if (l < h)
3551               return 1;
3552           }
3553     }
3554   return 0;
3555 }
3556
3557 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3558    PC is valid for process/thread PTID.  */
3559
3560 int
3561 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3562                          ptid_t ptid)
3563 {
3564   struct bp_location *bl, **blp_tmp;
3565   /* The thread and task IDs associated to PTID, computed lazily.  */
3566   int thread = -1;
3567   int task = 0;
3568   
3569   ALL_BP_LOCATIONS (bl, blp_tmp)
3570     {
3571       if (bl->loc_type != bp_loc_software_breakpoint
3572           && bl->loc_type != bp_loc_hardware_breakpoint)
3573         continue;
3574
3575       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
3576       if (!breakpoint_enabled (bl->owner)
3577           && bl->owner->enable_state != bp_permanent)
3578         continue;
3579
3580       if (!breakpoint_location_address_match (bl, aspace, pc))
3581         continue;
3582
3583       if (bl->owner->thread != -1)
3584         {
3585           /* This is a thread-specific breakpoint.  Check that ptid
3586              matches that thread.  If thread hasn't been computed yet,
3587              it is now time to do so.  */
3588           if (thread == -1)
3589             thread = pid_to_thread_id (ptid);
3590           if (bl->owner->thread != thread)
3591             continue;
3592         }
3593
3594       if (bl->owner->task != 0)
3595         {
3596           /* This is a task-specific breakpoint.  Check that ptid
3597              matches that task.  If task hasn't been computed yet,
3598              it is now time to do so.  */
3599           if (task == 0)
3600             task = ada_get_task_number (ptid);
3601           if (bl->owner->task != task)
3602             continue;
3603         }
3604
3605       if (overlay_debugging 
3606           && section_is_overlay (bl->section)
3607           && !section_is_mapped (bl->section))
3608         continue;           /* unmapped overlay -- can't be a match */
3609
3610       return 1;
3611     }
3612
3613   return 0;
3614 }
3615 \f
3616
3617 /* bpstat stuff.  External routines' interfaces are documented
3618    in breakpoint.h.  */
3619
3620 int
3621 ep_is_catchpoint (struct breakpoint *ep)
3622 {
3623   return (ep->type == bp_catchpoint);
3624 }
3625
3626 /* Frees any storage that is part of a bpstat.  Does not walk the
3627    'next' chain.  */
3628
3629 static void
3630 bpstat_free (bpstat bs)
3631 {
3632   if (bs->old_val != NULL)
3633     value_free (bs->old_val);
3634   decref_counted_command_line (&bs->commands);
3635   decref_bp_location (&bs->bp_location_at);
3636   xfree (bs);
3637 }
3638
3639 /* Clear a bpstat so that it says we are not at any breakpoint.
3640    Also free any storage that is part of a bpstat.  */
3641
3642 void
3643 bpstat_clear (bpstat *bsp)
3644 {
3645   bpstat p;
3646   bpstat q;
3647
3648   if (bsp == 0)
3649     return;
3650   p = *bsp;
3651   while (p != NULL)
3652     {
3653       q = p->next;
3654       bpstat_free (p);
3655       p = q;
3656     }
3657   *bsp = NULL;
3658 }
3659
3660 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
3661    is part of the bpstat is copied as well.  */
3662
3663 bpstat
3664 bpstat_copy (bpstat bs)
3665 {
3666   bpstat p = NULL;
3667   bpstat tmp;
3668   bpstat retval = NULL;
3669
3670   if (bs == NULL)
3671     return bs;
3672
3673   for (; bs != NULL; bs = bs->next)
3674     {
3675       tmp = (bpstat) xmalloc (sizeof (*tmp));
3676       memcpy (tmp, bs, sizeof (*tmp));
3677       incref_counted_command_line (tmp->commands);
3678       incref_bp_location (tmp->bp_location_at);
3679       if (bs->old_val != NULL)
3680         {
3681           tmp->old_val = value_copy (bs->old_val);
3682           release_value (tmp->old_val);
3683         }
3684
3685       if (p == NULL)
3686         /* This is the first thing in the chain.  */
3687         retval = tmp;
3688       else
3689         p->next = tmp;
3690       p = tmp;
3691     }
3692   p->next = NULL;
3693   return retval;
3694 }
3695
3696 /* Find the bpstat associated with this breakpoint.  */
3697
3698 bpstat
3699 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
3700 {
3701   if (bsp == NULL)
3702     return NULL;
3703
3704   for (; bsp != NULL; bsp = bsp->next)
3705     {
3706       if (bsp->breakpoint_at == breakpoint)
3707         return bsp;
3708     }
3709   return NULL;
3710 }
3711
3712 /* Put in *NUM the breakpoint number of the first breakpoint we are
3713    stopped at.  *BSP upon return is a bpstat which points to the
3714    remaining breakpoints stopped at (but which is not guaranteed to be
3715    good for anything but further calls to bpstat_num).
3716
3717    Return 0 if passed a bpstat which does not indicate any breakpoints.
3718    Return -1 if stopped at a breakpoint that has been deleted since
3719    we set it.
3720    Return 1 otherwise.  */
3721
3722 int
3723 bpstat_num (bpstat *bsp, int *num)
3724 {
3725   struct breakpoint *b;
3726
3727   if ((*bsp) == NULL)
3728     return 0;                   /* No more breakpoint values */
3729
3730   /* We assume we'll never have several bpstats that correspond to a
3731      single breakpoint -- otherwise, this function might return the
3732      same number more than once and this will look ugly.  */
3733   b = (*bsp)->breakpoint_at;
3734   *bsp = (*bsp)->next;
3735   if (b == NULL)
3736     return -1;                  /* breakpoint that's been deleted since */
3737
3738   *num = b->number;             /* We have its number */
3739   return 1;
3740 }
3741
3742 /* See breakpoint.h.  */
3743
3744 void
3745 bpstat_clear_actions (void)
3746 {
3747   struct thread_info *tp;
3748   bpstat bs;
3749
3750   if (ptid_equal (inferior_ptid, null_ptid))
3751     return;
3752
3753   tp = find_thread_ptid (inferior_ptid);
3754   if (tp == NULL)
3755     return;
3756
3757   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
3758     {
3759       decref_counted_command_line (&bs->commands);
3760
3761       if (bs->old_val != NULL)
3762         {
3763           value_free (bs->old_val);
3764           bs->old_val = NULL;
3765         }
3766     }
3767 }
3768
3769 /* Called when a command is about to proceed the inferior.  */
3770
3771 static void
3772 breakpoint_about_to_proceed (void)
3773 {
3774   if (!ptid_equal (inferior_ptid, null_ptid))
3775     {
3776       struct thread_info *tp = inferior_thread ();
3777
3778       /* Allow inferior function calls in breakpoint commands to not
3779          interrupt the command list.  When the call finishes
3780          successfully, the inferior will be standing at the same
3781          breakpoint as if nothing happened.  */
3782       if (tp->control.in_infcall)
3783         return;
3784     }
3785
3786   breakpoint_proceeded = 1;
3787 }
3788
3789 /* Stub for cleaning up our state if we error-out of a breakpoint
3790    command.  */
3791 static void
3792 cleanup_executing_breakpoints (void *ignore)
3793 {
3794   executing_breakpoint_commands = 0;
3795 }
3796
3797 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
3798    or its equivalent.  */
3799
3800 static int
3801 command_line_is_silent (struct command_line *cmd)
3802 {
3803   return cmd && (strcmp ("silent", cmd->line) == 0
3804                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
3805 }
3806
3807 /* Execute all the commands associated with all the breakpoints at
3808    this location.  Any of these commands could cause the process to
3809    proceed beyond this point, etc.  We look out for such changes by
3810    checking the global "breakpoint_proceeded" after each command.
3811
3812    Returns true if a breakpoint command resumed the inferior.  In that
3813    case, it is the caller's responsibility to recall it again with the
3814    bpstat of the current thread.  */
3815
3816 static int
3817 bpstat_do_actions_1 (bpstat *bsp)
3818 {
3819   bpstat bs;
3820   struct cleanup *old_chain;
3821   int again = 0;
3822
3823   /* Avoid endless recursion if a `source' command is contained
3824      in bs->commands.  */
3825   if (executing_breakpoint_commands)
3826     return 0;
3827
3828   executing_breakpoint_commands = 1;
3829   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
3830
3831   prevent_dont_repeat ();
3832
3833   /* This pointer will iterate over the list of bpstat's.  */
3834   bs = *bsp;
3835
3836   breakpoint_proceeded = 0;
3837   for (; bs != NULL; bs = bs->next)
3838     {
3839       struct counted_command_line *ccmd;
3840       struct command_line *cmd;
3841       struct cleanup *this_cmd_tree_chain;
3842
3843       /* Take ownership of the BSP's command tree, if it has one.
3844
3845          The command tree could legitimately contain commands like
3846          'step' and 'next', which call clear_proceed_status, which
3847          frees stop_bpstat's command tree.  To make sure this doesn't
3848          free the tree we're executing out from under us, we need to
3849          take ownership of the tree ourselves.  Since a given bpstat's
3850          commands are only executed once, we don't need to copy it; we
3851          can clear the pointer in the bpstat, and make sure we free
3852          the tree when we're done.  */
3853       ccmd = bs->commands;
3854       bs->commands = NULL;
3855       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
3856       cmd = ccmd ? ccmd->commands : NULL;
3857       if (command_line_is_silent (cmd))
3858         {
3859           /* The action has been already done by bpstat_stop_status.  */
3860           cmd = cmd->next;
3861         }
3862
3863       while (cmd != NULL)
3864         {
3865           execute_control_command (cmd);
3866
3867           if (breakpoint_proceeded)
3868             break;
3869           else
3870             cmd = cmd->next;
3871         }
3872
3873       /* We can free this command tree now.  */
3874       do_cleanups (this_cmd_tree_chain);
3875
3876       if (breakpoint_proceeded)
3877         {
3878           if (target_can_async_p ())
3879             /* If we are in async mode, then the target might be still
3880                running, not stopped at any breakpoint, so nothing for
3881                us to do here -- just return to the event loop.  */
3882             ;
3883           else
3884             /* In sync mode, when execute_control_command returns
3885                we're already standing on the next breakpoint.
3886                Breakpoint commands for that stop were not run, since
3887                execute_command does not run breakpoint commands --
3888                only command_line_handler does, but that one is not
3889                involved in execution of breakpoint commands.  So, we
3890                can now execute breakpoint commands.  It should be
3891                noted that making execute_command do bpstat actions is
3892                not an option -- in this case we'll have recursive
3893                invocation of bpstat for each breakpoint with a
3894                command, and can easily blow up GDB stack.  Instead, we
3895                return true, which will trigger the caller to recall us
3896                with the new stop_bpstat.  */
3897             again = 1;
3898           break;
3899         }
3900     }
3901   do_cleanups (old_chain);
3902   return again;
3903 }
3904
3905 void
3906 bpstat_do_actions (void)
3907 {
3908   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
3909
3910   /* Do any commands attached to breakpoint we are stopped at.  */
3911   while (!ptid_equal (inferior_ptid, null_ptid)
3912          && target_has_execution
3913          && !is_exited (inferior_ptid)
3914          && !is_executing (inferior_ptid))
3915     /* Since in sync mode, bpstat_do_actions may resume the inferior,
3916        and only return when it is stopped at the next breakpoint, we
3917        keep doing breakpoint actions until it returns false to
3918        indicate the inferior was not resumed.  */
3919     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
3920       break;
3921
3922   discard_cleanups (cleanup_if_error);
3923 }
3924
3925 /* Print out the (old or new) value associated with a watchpoint.  */
3926
3927 static void
3928 watchpoint_value_print (struct value *val, struct ui_file *stream)
3929 {
3930   if (val == NULL)
3931     fprintf_unfiltered (stream, _("<unreadable>"));
3932   else
3933     {
3934       struct value_print_options opts;
3935       get_user_print_options (&opts);
3936       value_print (val, stream, &opts);
3937     }
3938 }
3939
3940 /* Generic routine for printing messages indicating why we
3941    stopped.  The behavior of this function depends on the value
3942    'print_it' in the bpstat structure.  Under some circumstances we
3943    may decide not to print anything here and delegate the task to
3944    normal_stop().  */
3945
3946 static enum print_stop_action
3947 print_bp_stop_message (bpstat bs)
3948 {
3949   switch (bs->print_it)
3950     {
3951     case print_it_noop:
3952       /* Nothing should be printed for this bpstat entry.  */
3953       return PRINT_UNKNOWN;
3954       break;
3955
3956     case print_it_done:
3957       /* We still want to print the frame, but we already printed the
3958          relevant messages.  */
3959       return PRINT_SRC_AND_LOC;
3960       break;
3961
3962     case print_it_normal:
3963       {
3964         struct breakpoint *b = bs->breakpoint_at;
3965
3966         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
3967            which has since been deleted.  */
3968         if (b == NULL)
3969           return PRINT_UNKNOWN;
3970
3971         /* Normal case.  Call the breakpoint's print_it method.  */
3972         return b->ops->print_it (bs);
3973       }
3974       break;
3975
3976     default:
3977       internal_error (__FILE__, __LINE__,
3978                       _("print_bp_stop_message: unrecognized enum value"));
3979       break;
3980     }
3981 }
3982
3983 /* A helper function that prints a shared library stopped event.  */
3984
3985 static void
3986 print_solib_event (int is_catchpoint)
3987 {
3988   int any_deleted
3989     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
3990   int any_added
3991     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
3992
3993   if (!is_catchpoint)
3994     {
3995       if (any_added || any_deleted)
3996         ui_out_text (current_uiout,
3997                      _("Stopped due to shared library event:\n"));
3998       else
3999         ui_out_text (current_uiout,
4000                      _("Stopped due to shared library event (no "
4001                        "libraries added or removed)\n"));
4002     }
4003
4004   if (ui_out_is_mi_like_p (current_uiout))
4005     ui_out_field_string (current_uiout, "reason",
4006                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4007
4008   if (any_deleted)
4009     {
4010       struct cleanup *cleanup;
4011       char *name;
4012       int ix;
4013
4014       ui_out_text (current_uiout, _("  Inferior unloaded "));
4015       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4016                                                     "removed");
4017       for (ix = 0;
4018            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4019                         ix, name);
4020            ++ix)
4021         {
4022           if (ix > 0)
4023             ui_out_text (current_uiout, "    ");
4024           ui_out_field_string (current_uiout, "library", name);
4025           ui_out_text (current_uiout, "\n");
4026         }
4027
4028       do_cleanups (cleanup);
4029     }
4030
4031   if (any_added)
4032     {
4033       struct so_list *iter;
4034       int ix;
4035       struct cleanup *cleanup;
4036
4037       ui_out_text (current_uiout, _("  Inferior loaded "));
4038       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4039                                                     "added");
4040       for (ix = 0;
4041            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4042                         ix, iter);
4043            ++ix)
4044         {
4045           if (ix > 0)
4046             ui_out_text (current_uiout, "    ");
4047           ui_out_field_string (current_uiout, "library", iter->so_name);
4048           ui_out_text (current_uiout, "\n");
4049         }
4050
4051       do_cleanups (cleanup);
4052     }
4053 }
4054
4055 /* Print a message indicating what happened.  This is called from
4056    normal_stop().  The input to this routine is the head of the bpstat
4057    list - a list of the eventpoints that caused this stop.  KIND is
4058    the target_waitkind for the stopping event.  This
4059    routine calls the generic print routine for printing a message
4060    about reasons for stopping.  This will print (for example) the
4061    "Breakpoint n," part of the output.  The return value of this
4062    routine is one of:
4063
4064    PRINT_UNKNOWN: Means we printed nothing.
4065    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4066    code to print the location.  An example is 
4067    "Breakpoint 1, " which should be followed by
4068    the location.
4069    PRINT_SRC_ONLY: Means we printed something, but there is no need
4070    to also print the location part of the message.
4071    An example is the catch/throw messages, which
4072    don't require a location appended to the end.
4073    PRINT_NOTHING: We have done some printing and we don't need any 
4074    further info to be printed.  */
4075
4076 enum print_stop_action
4077 bpstat_print (bpstat bs, int kind)
4078 {
4079   int val;
4080
4081   /* Maybe another breakpoint in the chain caused us to stop.
4082      (Currently all watchpoints go on the bpstat whether hit or not.
4083      That probably could (should) be changed, provided care is taken
4084      with respect to bpstat_explains_signal).  */
4085   for (; bs; bs = bs->next)
4086     {
4087       val = print_bp_stop_message (bs);
4088       if (val == PRINT_SRC_ONLY 
4089           || val == PRINT_SRC_AND_LOC 
4090           || val == PRINT_NOTHING)
4091         return val;
4092     }
4093
4094   /* If we had hit a shared library event breakpoint,
4095      print_bp_stop_message would print out this message.  If we hit an
4096      OS-level shared library event, do the same thing.  */
4097   if (kind == TARGET_WAITKIND_LOADED)
4098     {
4099       print_solib_event (0);
4100       return PRINT_NOTHING;
4101     }
4102
4103   /* We reached the end of the chain, or we got a null BS to start
4104      with and nothing was printed.  */
4105   return PRINT_UNKNOWN;
4106 }
4107
4108 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4109    used inside a catch_errors to evaluate the breakpoint condition.
4110    The argument is a "struct expression *" that has been cast to a
4111    "char *" to make it pass through catch_errors.  */
4112
4113 static int
4114 breakpoint_cond_eval (void *exp)
4115 {
4116   struct value *mark = value_mark ();
4117   int i = !value_true (evaluate_expression ((struct expression *) exp));
4118
4119   value_free_to_mark (mark);
4120   return i;
4121 }
4122
4123 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4124
4125 static bpstat
4126 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4127 {
4128   bpstat bs;
4129
4130   bs = (bpstat) xmalloc (sizeof (*bs));
4131   bs->next = NULL;
4132   **bs_link_pointer = bs;
4133   *bs_link_pointer = &bs->next;
4134   bs->breakpoint_at = bl->owner;
4135   bs->bp_location_at = bl;
4136   incref_bp_location (bl);
4137   /* If the condition is false, etc., don't do the commands.  */
4138   bs->commands = NULL;
4139   bs->old_val = NULL;
4140   bs->print_it = print_it_normal;
4141   return bs;
4142 }
4143 \f
4144 /* The target has stopped with waitstatus WS.  Check if any hardware
4145    watchpoints have triggered, according to the target.  */
4146
4147 int
4148 watchpoints_triggered (struct target_waitstatus *ws)
4149 {
4150   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4151   CORE_ADDR addr;
4152   struct breakpoint *b;
4153
4154   if (!stopped_by_watchpoint)
4155     {
4156       /* We were not stopped by a watchpoint.  Mark all watchpoints
4157          as not triggered.  */
4158       ALL_BREAKPOINTS (b)
4159         if (is_hardware_watchpoint (b))
4160           {
4161             struct watchpoint *w = (struct watchpoint *) b;
4162
4163             w->watchpoint_triggered = watch_triggered_no;
4164           }
4165
4166       return 0;
4167     }
4168
4169   if (!target_stopped_data_address (&current_target, &addr))
4170     {
4171       /* We were stopped by a watchpoint, but we don't know where.
4172          Mark all watchpoints as unknown.  */
4173       ALL_BREAKPOINTS (b)
4174         if (is_hardware_watchpoint (b))
4175           {
4176             struct watchpoint *w = (struct watchpoint *) b;
4177
4178             w->watchpoint_triggered = watch_triggered_unknown;
4179           }
4180
4181       return stopped_by_watchpoint;
4182     }
4183
4184   /* The target could report the data address.  Mark watchpoints
4185      affected by this data address as triggered, and all others as not
4186      triggered.  */
4187
4188   ALL_BREAKPOINTS (b)
4189     if (is_hardware_watchpoint (b))
4190       {
4191         struct watchpoint *w = (struct watchpoint *) b;
4192         struct bp_location *loc;
4193
4194         w->watchpoint_triggered = watch_triggered_no;
4195         for (loc = b->loc; loc; loc = loc->next)
4196           {
4197             if (is_masked_watchpoint (b))
4198               {
4199                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4200                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4201
4202                 if (newaddr == start)
4203                   {
4204                     w->watchpoint_triggered = watch_triggered_yes;
4205                     break;
4206                   }
4207               }
4208             /* Exact match not required.  Within range is sufficient.  */
4209             else if (target_watchpoint_addr_within_range (&current_target,
4210                                                          addr, loc->address,
4211                                                          loc->length))
4212               {
4213                 w->watchpoint_triggered = watch_triggered_yes;
4214                 break;
4215               }
4216           }
4217       }
4218
4219   return 1;
4220 }
4221
4222 /* Possible return values for watchpoint_check (this can't be an enum
4223    because of check_errors).  */
4224 /* The watchpoint has been deleted.  */
4225 #define WP_DELETED 1
4226 /* The value has changed.  */
4227 #define WP_VALUE_CHANGED 2
4228 /* The value has not changed.  */
4229 #define WP_VALUE_NOT_CHANGED 3
4230 /* Ignore this watchpoint, no matter if the value changed or not.  */
4231 #define WP_IGNORE 4
4232
4233 #define BP_TEMPFLAG 1
4234 #define BP_HARDWAREFLAG 2
4235
4236 /* Evaluate watchpoint condition expression and check if its value
4237    changed.
4238
4239    P should be a pointer to struct bpstat, but is defined as a void *
4240    in order for this function to be usable with catch_errors.  */
4241
4242 static int
4243 watchpoint_check (void *p)
4244 {
4245   bpstat bs = (bpstat) p;
4246   struct watchpoint *b;
4247   struct frame_info *fr;
4248   int within_current_scope;
4249
4250   /* BS is built from an existing struct breakpoint.  */
4251   gdb_assert (bs->breakpoint_at != NULL);
4252   b = (struct watchpoint *) bs->breakpoint_at;
4253
4254   /* If this is a local watchpoint, we only want to check if the
4255      watchpoint frame is in scope if the current thread is the thread
4256      that was used to create the watchpoint.  */
4257   if (!watchpoint_in_thread_scope (b))
4258     return WP_IGNORE;
4259
4260   if (b->exp_valid_block == NULL)
4261     within_current_scope = 1;
4262   else
4263     {
4264       struct frame_info *frame = get_current_frame ();
4265       struct gdbarch *frame_arch = get_frame_arch (frame);
4266       CORE_ADDR frame_pc = get_frame_pc (frame);
4267
4268       /* in_function_epilogue_p() returns a non-zero value if we're
4269          still in the function but the stack frame has already been
4270          invalidated.  Since we can't rely on the values of local
4271          variables after the stack has been destroyed, we are treating
4272          the watchpoint in that state as `not changed' without further
4273          checking.  Don't mark watchpoints as changed if the current
4274          frame is in an epilogue - even if they are in some other
4275          frame, our view of the stack is likely to be wrong and
4276          frame_find_by_id could error out.  */
4277       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4278         return WP_IGNORE;
4279
4280       fr = frame_find_by_id (b->watchpoint_frame);
4281       within_current_scope = (fr != NULL);
4282
4283       /* If we've gotten confused in the unwinder, we might have
4284          returned a frame that can't describe this variable.  */
4285       if (within_current_scope)
4286         {
4287           struct symbol *function;
4288
4289           function = get_frame_function (fr);
4290           if (function == NULL
4291               || !contained_in (b->exp_valid_block,
4292                                 SYMBOL_BLOCK_VALUE (function)))
4293             within_current_scope = 0;
4294         }
4295
4296       if (within_current_scope)
4297         /* If we end up stopping, the current frame will get selected
4298            in normal_stop.  So this call to select_frame won't affect
4299            the user.  */
4300         select_frame (fr);
4301     }
4302
4303   if (within_current_scope)
4304     {
4305       /* We use value_{,free_to_}mark because it could be a *long*
4306          time before we return to the command level and call
4307          free_all_values.  We can't call free_all_values because we
4308          might be in the middle of evaluating a function call.  */
4309
4310       int pc = 0;
4311       struct value *mark;
4312       struct value *new_val;
4313
4314       if (is_masked_watchpoint (&b->base))
4315         /* Since we don't know the exact trigger address (from
4316            stopped_data_address), just tell the user we've triggered
4317            a mask watchpoint.  */
4318         return WP_VALUE_CHANGED;
4319
4320       mark = value_mark ();
4321       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4322
4323       /* We use value_equal_contents instead of value_equal because
4324          the latter coerces an array to a pointer, thus comparing just
4325          the address of the array instead of its contents.  This is
4326          not what we want.  */
4327       if ((b->val != NULL) != (new_val != NULL)
4328           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4329         {
4330           if (new_val != NULL)
4331             {
4332               release_value (new_val);
4333               value_free_to_mark (mark);
4334             }
4335           bs->old_val = b->val;
4336           b->val = new_val;
4337           b->val_valid = 1;
4338           return WP_VALUE_CHANGED;
4339         }
4340       else
4341         {
4342           /* Nothing changed.  */
4343           value_free_to_mark (mark);
4344           return WP_VALUE_NOT_CHANGED;
4345         }
4346     }
4347   else
4348     {
4349       struct ui_out *uiout = current_uiout;
4350
4351       /* This seems like the only logical thing to do because
4352          if we temporarily ignored the watchpoint, then when
4353          we reenter the block in which it is valid it contains
4354          garbage (in the case of a function, it may have two
4355          garbage values, one before and one after the prologue).
4356          So we can't even detect the first assignment to it and
4357          watch after that (since the garbage may or may not equal
4358          the first value assigned).  */
4359       /* We print all the stop information in
4360          breakpoint_ops->print_it, but in this case, by the time we
4361          call breakpoint_ops->print_it this bp will be deleted
4362          already.  So we have no choice but print the information
4363          here.  */
4364       if (ui_out_is_mi_like_p (uiout))
4365         ui_out_field_string
4366           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4367       ui_out_text (uiout, "\nWatchpoint ");
4368       ui_out_field_int (uiout, "wpnum", b->base.number);
4369       ui_out_text (uiout,
4370                    " deleted because the program has left the block in\n\
4371 which its expression is valid.\n");     
4372
4373       /* Make sure the watchpoint's commands aren't executed.  */
4374       decref_counted_command_line (&b->base.commands);
4375       watchpoint_del_at_next_stop (b);
4376
4377       return WP_DELETED;
4378     }
4379 }
4380
4381 /* Return true if it looks like target has stopped due to hitting
4382    breakpoint location BL.  This function does not check if we should
4383    stop, only if BL explains the stop.  */
4384
4385 static int
4386 bpstat_check_location (const struct bp_location *bl,
4387                        struct address_space *aspace, CORE_ADDR bp_addr,
4388                        const struct target_waitstatus *ws)
4389 {
4390   struct breakpoint *b = bl->owner;
4391
4392   /* BL is from an existing breakpoint.  */
4393   gdb_assert (b != NULL);
4394
4395   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4396 }
4397
4398 /* Determine if the watched values have actually changed, and we
4399    should stop.  If not, set BS->stop to 0.  */
4400
4401 static void
4402 bpstat_check_watchpoint (bpstat bs)
4403 {
4404   const struct bp_location *bl;
4405   struct watchpoint *b;
4406
4407   /* BS is built for existing struct breakpoint.  */
4408   bl = bs->bp_location_at;
4409   gdb_assert (bl != NULL);
4410   b = (struct watchpoint *) bs->breakpoint_at;
4411   gdb_assert (b != NULL);
4412
4413     {
4414       int must_check_value = 0;
4415       
4416       if (b->base.type == bp_watchpoint)
4417         /* For a software watchpoint, we must always check the
4418            watched value.  */
4419         must_check_value = 1;
4420       else if (b->watchpoint_triggered == watch_triggered_yes)
4421         /* We have a hardware watchpoint (read, write, or access)
4422            and the target earlier reported an address watched by
4423            this watchpoint.  */
4424         must_check_value = 1;
4425       else if (b->watchpoint_triggered == watch_triggered_unknown
4426                && b->base.type == bp_hardware_watchpoint)
4427         /* We were stopped by a hardware watchpoint, but the target could
4428            not report the data address.  We must check the watchpoint's
4429            value.  Access and read watchpoints are out of luck; without
4430            a data address, we can't figure it out.  */
4431         must_check_value = 1;
4432
4433       if (must_check_value)
4434         {
4435           char *message
4436             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4437                           b->base.number);
4438           struct cleanup *cleanups = make_cleanup (xfree, message);
4439           int e = catch_errors (watchpoint_check, bs, message,
4440                                 RETURN_MASK_ALL);
4441           do_cleanups (cleanups);
4442           switch (e)
4443             {
4444             case WP_DELETED:
4445               /* We've already printed what needs to be printed.  */
4446               bs->print_it = print_it_done;
4447               /* Stop.  */
4448               break;
4449             case WP_IGNORE:
4450               bs->print_it = print_it_noop;
4451               bs->stop = 0;
4452               break;
4453             case WP_VALUE_CHANGED:
4454               if (b->base.type == bp_read_watchpoint)
4455                 {
4456                   /* There are two cases to consider here:
4457
4458                      1. We're watching the triggered memory for reads.
4459                      In that case, trust the target, and always report
4460                      the watchpoint hit to the user.  Even though
4461                      reads don't cause value changes, the value may
4462                      have changed since the last time it was read, and
4463                      since we're not trapping writes, we will not see
4464                      those, and as such we should ignore our notion of
4465                      old value.
4466
4467                      2. We're watching the triggered memory for both
4468                      reads and writes.  There are two ways this may
4469                      happen:
4470
4471                      2.1. This is a target that can't break on data
4472                      reads only, but can break on accesses (reads or
4473                      writes), such as e.g., x86.  We detect this case
4474                      at the time we try to insert read watchpoints.
4475
4476                      2.2. Otherwise, the target supports read
4477                      watchpoints, but, the user set an access or write
4478                      watchpoint watching the same memory as this read
4479                      watchpoint.
4480
4481                      If we're watching memory writes as well as reads,
4482                      ignore watchpoint hits when we find that the
4483                      value hasn't changed, as reads don't cause
4484                      changes.  This still gives false positives when
4485                      the program writes the same value to memory as
4486                      what there was already in memory (we will confuse
4487                      it for a read), but it's much better than
4488                      nothing.  */
4489
4490                   int other_write_watchpoint = 0;
4491
4492                   if (bl->watchpoint_type == hw_read)
4493                     {
4494                       struct breakpoint *other_b;
4495
4496                       ALL_BREAKPOINTS (other_b)
4497                         if (other_b->type == bp_hardware_watchpoint
4498                             || other_b->type == bp_access_watchpoint)
4499                           {
4500                             struct watchpoint *other_w =
4501                               (struct watchpoint *) other_b;
4502
4503                             if (other_w->watchpoint_triggered
4504                                 == watch_triggered_yes)
4505                               {
4506                                 other_write_watchpoint = 1;
4507                                 break;
4508                               }
4509                           }
4510                     }
4511
4512                   if (other_write_watchpoint
4513                       || bl->watchpoint_type == hw_access)
4514                     {
4515                       /* We're watching the same memory for writes,
4516                          and the value changed since the last time we
4517                          updated it, so this trap must be for a write.
4518                          Ignore it.  */
4519                       bs->print_it = print_it_noop;
4520                       bs->stop = 0;
4521                     }
4522                 }
4523               break;
4524             case WP_VALUE_NOT_CHANGED:
4525               if (b->base.type == bp_hardware_watchpoint
4526                   || b->base.type == bp_watchpoint)
4527                 {
4528                   /* Don't stop: write watchpoints shouldn't fire if
4529                      the value hasn't changed.  */
4530                   bs->print_it = print_it_noop;
4531                   bs->stop = 0;
4532                 }
4533               /* Stop.  */
4534               break;
4535             default:
4536               /* Can't happen.  */
4537             case 0:
4538               /* Error from catch_errors.  */
4539               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4540               watchpoint_del_at_next_stop (b);
4541               /* We've already printed what needs to be printed.  */
4542               bs->print_it = print_it_done;
4543               break;
4544             }
4545         }
4546       else      /* must_check_value == 0 */
4547         {
4548           /* This is a case where some watchpoint(s) triggered, but
4549              not at the address of this watchpoint, or else no
4550              watchpoint triggered after all.  So don't print
4551              anything for this watchpoint.  */
4552           bs->print_it = print_it_noop;
4553           bs->stop = 0;
4554         }
4555     }
4556 }
4557
4558
4559 /* Check conditions (condition proper, frame, thread and ignore count)
4560    of breakpoint referred to by BS.  If we should not stop for this
4561    breakpoint, set BS->stop to 0.  */
4562
4563 static void
4564 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4565 {
4566   int thread_id = pid_to_thread_id (ptid);
4567   const struct bp_location *bl;
4568   struct breakpoint *b;
4569
4570   /* BS is built for existing struct breakpoint.  */
4571   bl = bs->bp_location_at;
4572   gdb_assert (bl != NULL);
4573   b = bs->breakpoint_at;
4574   gdb_assert (b != NULL);
4575
4576   /* Even if the target evaluated the condition on its end and notified GDB, we
4577      need to do so again since GDB does not know if we stopped due to a
4578      breakpoint or a single step breakpoint.  */
4579
4580   if (frame_id_p (b->frame_id)
4581       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
4582     bs->stop = 0;
4583   else if (bs->stop)
4584     {
4585       int value_is_zero = 0;
4586       struct expression *cond;
4587
4588       /* Evaluate Python breakpoints that have a "stop"
4589          method implemented.  */
4590       if (b->py_bp_object)
4591         bs->stop = gdbpy_should_stop (b->py_bp_object);
4592
4593       if (is_watchpoint (b))
4594         {
4595           struct watchpoint *w = (struct watchpoint *) b;
4596
4597           cond = w->cond_exp;
4598         }
4599       else
4600         cond = bl->cond;
4601
4602       if (cond && b->disposition != disp_del_at_next_stop)
4603         {
4604           int within_current_scope = 1;
4605           struct watchpoint * w;
4606
4607           /* We use value_mark and value_free_to_mark because it could
4608              be a long time before we return to the command level and
4609              call free_all_values.  We can't call free_all_values
4610              because we might be in the middle of evaluating a
4611              function call.  */
4612           struct value *mark = value_mark ();
4613
4614           if (is_watchpoint (b))
4615             w = (struct watchpoint *) b;
4616           else
4617             w = NULL;
4618
4619           /* Need to select the frame, with all that implies so that
4620              the conditions will have the right context.  Because we
4621              use the frame, we will not see an inlined function's
4622              variables when we arrive at a breakpoint at the start
4623              of the inlined function; the current frame will be the
4624              call site.  */
4625           if (w == NULL || w->cond_exp_valid_block == NULL)
4626             select_frame (get_current_frame ());
4627           else
4628             {
4629               struct frame_info *frame;
4630
4631               /* For local watchpoint expressions, which particular
4632                  instance of a local is being watched matters, so we
4633                  keep track of the frame to evaluate the expression
4634                  in.  To evaluate the condition however, it doesn't
4635                  really matter which instantiation of the function
4636                  where the condition makes sense triggers the
4637                  watchpoint.  This allows an expression like "watch
4638                  global if q > 10" set in `func', catch writes to
4639                  global on all threads that call `func', or catch
4640                  writes on all recursive calls of `func' by a single
4641                  thread.  We simply always evaluate the condition in
4642                  the innermost frame that's executing where it makes
4643                  sense to evaluate the condition.  It seems
4644                  intuitive.  */
4645               frame = block_innermost_frame (w->cond_exp_valid_block);
4646               if (frame != NULL)
4647                 select_frame (frame);
4648               else
4649                 within_current_scope = 0;
4650             }
4651           if (within_current_scope)
4652             value_is_zero
4653               = catch_errors (breakpoint_cond_eval, cond,
4654                               "Error in testing breakpoint condition:\n",
4655                               RETURN_MASK_ALL);
4656           else
4657             {
4658               warning (_("Watchpoint condition cannot be tested "
4659                          "in the current scope"));
4660               /* If we failed to set the right context for this
4661                  watchpoint, unconditionally report it.  */
4662               value_is_zero = 0;
4663             }
4664           /* FIXME-someday, should give breakpoint #.  */
4665           value_free_to_mark (mark);
4666         }
4667
4668       if (cond && value_is_zero)
4669         {
4670           bs->stop = 0;
4671         }
4672       else if (b->thread != -1 && b->thread != thread_id)
4673         {
4674           bs->stop = 0;
4675         }
4676       else if (b->ignore_count > 0)
4677         {
4678           b->ignore_count--;
4679           annotate_ignore_count_change ();
4680           bs->stop = 0;
4681           /* Increase the hit count even though we don't stop.  */
4682           ++(b->hit_count);
4683           observer_notify_breakpoint_modified (b);
4684         }       
4685     }
4686 }
4687
4688
4689 /* Get a bpstat associated with having just stopped at address
4690    BP_ADDR in thread PTID.
4691
4692    Determine whether we stopped at a breakpoint, etc, or whether we
4693    don't understand this stop.  Result is a chain of bpstat's such
4694    that:
4695
4696    if we don't understand the stop, the result is a null pointer.
4697
4698    if we understand why we stopped, the result is not null.
4699
4700    Each element of the chain refers to a particular breakpoint or
4701    watchpoint at which we have stopped.  (We may have stopped for
4702    several reasons concurrently.)
4703
4704    Each element of the chain has valid next, breakpoint_at,
4705    commands, FIXME??? fields.  */
4706
4707 bpstat
4708 bpstat_stop_status (struct address_space *aspace,
4709                     CORE_ADDR bp_addr, ptid_t ptid,
4710                     const struct target_waitstatus *ws)
4711 {
4712   struct breakpoint *b = NULL;
4713   struct bp_location *bl;
4714   struct bp_location *loc;
4715   /* First item of allocated bpstat's.  */
4716   bpstat bs_head = NULL, *bs_link = &bs_head;
4717   /* Pointer to the last thing in the chain currently.  */
4718   bpstat bs;
4719   int ix;
4720   int need_remove_insert;
4721   int removed_any;
4722
4723   /* First, build the bpstat chain with locations that explain a
4724      target stop, while being careful to not set the target running,
4725      as that may invalidate locations (in particular watchpoint
4726      locations are recreated).  Resuming will happen here with
4727      breakpoint conditions or watchpoint expressions that include
4728      inferior function calls.  */
4729
4730   ALL_BREAKPOINTS (b)
4731     {
4732       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
4733         continue;
4734
4735       for (bl = b->loc; bl != NULL; bl = bl->next)
4736         {
4737           /* For hardware watchpoints, we look only at the first
4738              location.  The watchpoint_check function will work on the
4739              entire expression, not the individual locations.  For
4740              read watchpoints, the watchpoints_triggered function has
4741              checked all locations already.  */
4742           if (b->type == bp_hardware_watchpoint && bl != b->loc)
4743             break;
4744
4745           if (bl->shlib_disabled)
4746             continue;
4747
4748           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
4749             continue;
4750
4751           /* Come here if it's a watchpoint, or if the break address
4752              matches.  */
4753
4754           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
4755                                                    explain stop.  */
4756
4757           /* Assume we stop.  Should we find a watchpoint that is not
4758              actually triggered, or if the condition of the breakpoint
4759              evaluates as false, we'll reset 'stop' to 0.  */
4760           bs->stop = 1;
4761           bs->print = 1;
4762
4763           /* If this is a scope breakpoint, mark the associated
4764              watchpoint as triggered so that we will handle the
4765              out-of-scope event.  We'll get to the watchpoint next
4766              iteration.  */
4767           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
4768             {
4769               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
4770
4771               w->watchpoint_triggered = watch_triggered_yes;
4772             }
4773         }
4774     }
4775
4776   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4777     {
4778       if (breakpoint_location_address_match (loc, aspace, bp_addr))
4779         {
4780           bs = bpstat_alloc (loc, &bs_link);
4781           /* For hits of moribund locations, we should just proceed.  */
4782           bs->stop = 0;
4783           bs->print = 0;
4784           bs->print_it = print_it_noop;
4785         }
4786     }
4787
4788   /* A bit of special processing for shlib breakpoints.  We need to
4789      process solib loading here, so that the lists of loaded and
4790      unloaded libraries are correct before we handle "catch load" and
4791      "catch unload".  */
4792   for (bs = bs_head; bs != NULL; bs = bs->next)
4793     {
4794       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
4795         {
4796           handle_solib_event ();
4797           break;
4798         }
4799     }
4800
4801   /* Now go through the locations that caused the target to stop, and
4802      check whether we're interested in reporting this stop to higher
4803      layers, or whether we should resume the target transparently.  */
4804
4805   removed_any = 0;
4806
4807   for (bs = bs_head; bs != NULL; bs = bs->next)
4808     {
4809       if (!bs->stop)
4810         continue;
4811
4812       b = bs->breakpoint_at;
4813       b->ops->check_status (bs);
4814       if (bs->stop)
4815         {
4816           bpstat_check_breakpoint_conditions (bs, ptid);
4817
4818           if (bs->stop)
4819             {
4820               ++(b->hit_count);
4821               observer_notify_breakpoint_modified (b);
4822
4823               /* We will stop here.  */
4824               if (b->disposition == disp_disable)
4825                 {
4826                   --(b->enable_count);
4827                   if (b->enable_count <= 0
4828                       && b->enable_state != bp_permanent)
4829                     b->enable_state = bp_disabled;
4830                   removed_any = 1;
4831                 }
4832               if (b->silent)
4833                 bs->print = 0;
4834               bs->commands = b->commands;
4835               incref_counted_command_line (bs->commands);
4836               if (command_line_is_silent (bs->commands
4837                                           ? bs->commands->commands : NULL))
4838                 bs->print = 0;
4839             }
4840
4841         }
4842
4843       /* Print nothing for this entry if we don't stop or don't
4844          print.  */
4845       if (!bs->stop || !bs->print)
4846         bs->print_it = print_it_noop;
4847     }
4848
4849   /* If we aren't stopping, the value of some hardware watchpoint may
4850      not have changed, but the intermediate memory locations we are
4851      watching may have.  Don't bother if we're stopping; this will get
4852      done later.  */
4853   need_remove_insert = 0;
4854   if (! bpstat_causes_stop (bs_head))
4855     for (bs = bs_head; bs != NULL; bs = bs->next)
4856       if (!bs->stop
4857           && bs->breakpoint_at
4858           && is_hardware_watchpoint (bs->breakpoint_at))
4859         {
4860           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
4861
4862           update_watchpoint (w, 0 /* don't reparse.  */);
4863           need_remove_insert = 1;
4864         }
4865
4866   if (need_remove_insert)
4867     update_global_location_list (1);
4868   else if (removed_any)
4869     update_global_location_list (0);
4870
4871   return bs_head;
4872 }
4873
4874 static void
4875 handle_jit_event (void)
4876 {
4877   struct frame_info *frame;
4878   struct gdbarch *gdbarch;
4879
4880   /* Switch terminal for any messages produced by
4881      breakpoint_re_set.  */
4882   target_terminal_ours_for_output ();
4883
4884   frame = get_current_frame ();
4885   gdbarch = get_frame_arch (frame);
4886
4887   jit_event_handler (gdbarch);
4888
4889   target_terminal_inferior ();
4890 }
4891
4892 /* Handle an solib event by calling solib_add.  */
4893
4894 void
4895 handle_solib_event (void)
4896 {
4897   clear_program_space_solib_cache (current_inferior ()->pspace);
4898
4899   /* Check for any newly added shared libraries if we're supposed to
4900      be adding them automatically.  Switch terminal for any messages
4901      produced by breakpoint_re_set.  */
4902   target_terminal_ours_for_output ();
4903 #ifdef SOLIB_ADD
4904   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
4905 #else
4906   solib_add (NULL, 0, &current_target, auto_solib_add);
4907 #endif
4908   target_terminal_inferior ();
4909 }
4910
4911 /* Prepare WHAT final decision for infrun.  */
4912
4913 /* Decide what infrun needs to do with this bpstat.  */
4914
4915 struct bpstat_what
4916 bpstat_what (bpstat bs_head)
4917 {
4918   struct bpstat_what retval;
4919   int jit_event = 0;
4920   bpstat bs;
4921
4922   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
4923   retval.call_dummy = STOP_NONE;
4924   retval.is_longjmp = 0;
4925
4926   for (bs = bs_head; bs != NULL; bs = bs->next)
4927     {
4928       /* Extract this BS's action.  After processing each BS, we check
4929          if its action overrides all we've seem so far.  */
4930       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
4931       enum bptype bptype;
4932
4933       if (bs->breakpoint_at == NULL)
4934         {
4935           /* I suspect this can happen if it was a momentary
4936              breakpoint which has since been deleted.  */
4937           bptype = bp_none;
4938         }
4939       else
4940         bptype = bs->breakpoint_at->type;
4941
4942       switch (bptype)
4943         {
4944         case bp_none:
4945           break;
4946         case bp_breakpoint:
4947         case bp_hardware_breakpoint:
4948         case bp_until:
4949         case bp_finish:
4950         case bp_shlib_event:
4951           if (bs->stop)
4952             {
4953               if (bs->print)
4954                 this_action = BPSTAT_WHAT_STOP_NOISY;
4955               else
4956                 this_action = BPSTAT_WHAT_STOP_SILENT;
4957             }
4958           else
4959             this_action = BPSTAT_WHAT_SINGLE;
4960           break;
4961         case bp_watchpoint:
4962         case bp_hardware_watchpoint:
4963         case bp_read_watchpoint:
4964         case bp_access_watchpoint:
4965           if (bs->stop)
4966             {
4967               if (bs->print)
4968                 this_action = BPSTAT_WHAT_STOP_NOISY;
4969               else
4970                 this_action = BPSTAT_WHAT_STOP_SILENT;
4971             }
4972           else
4973             {
4974               /* There was a watchpoint, but we're not stopping.
4975                  This requires no further action.  */
4976             }
4977           break;
4978         case bp_longjmp:
4979         case bp_exception:
4980           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
4981           retval.is_longjmp = bptype == bp_longjmp;
4982           break;
4983         case bp_longjmp_resume:
4984         case bp_exception_resume:
4985           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
4986           retval.is_longjmp = bptype == bp_longjmp_resume;
4987           break;
4988         case bp_step_resume:
4989           if (bs->stop)
4990             this_action = BPSTAT_WHAT_STEP_RESUME;
4991           else
4992             {
4993               /* It is for the wrong frame.  */
4994               this_action = BPSTAT_WHAT_SINGLE;
4995             }
4996           break;
4997         case bp_hp_step_resume:
4998           if (bs->stop)
4999             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5000           else
5001             {
5002               /* It is for the wrong frame.  */
5003               this_action = BPSTAT_WHAT_SINGLE;
5004             }
5005           break;
5006         case bp_watchpoint_scope:
5007         case bp_thread_event:
5008         case bp_overlay_event:
5009         case bp_longjmp_master:
5010         case bp_std_terminate_master:
5011         case bp_exception_master:
5012           this_action = BPSTAT_WHAT_SINGLE;
5013           break;
5014         case bp_catchpoint:
5015           if (bs->stop)
5016             {
5017               if (bs->print)
5018                 this_action = BPSTAT_WHAT_STOP_NOISY;
5019               else
5020                 this_action = BPSTAT_WHAT_STOP_SILENT;
5021             }
5022           else
5023             {
5024               /* There was a catchpoint, but we're not stopping.
5025                  This requires no further action.  */
5026             }
5027           break;
5028         case bp_jit_event:
5029           jit_event = 1;
5030           this_action = BPSTAT_WHAT_SINGLE;
5031           break;
5032         case bp_call_dummy:
5033           /* Make sure the action is stop (silent or noisy),
5034              so infrun.c pops the dummy frame.  */
5035           retval.call_dummy = STOP_STACK_DUMMY;
5036           this_action = BPSTAT_WHAT_STOP_SILENT;
5037           break;
5038         case bp_std_terminate:
5039           /* Make sure the action is stop (silent or noisy),
5040              so infrun.c pops the dummy frame.  */
5041           retval.call_dummy = STOP_STD_TERMINATE;
5042           this_action = BPSTAT_WHAT_STOP_SILENT;
5043           break;
5044         case bp_tracepoint:
5045         case bp_fast_tracepoint:
5046         case bp_static_tracepoint:
5047           /* Tracepoint hits should not be reported back to GDB, and
5048              if one got through somehow, it should have been filtered
5049              out already.  */
5050           internal_error (__FILE__, __LINE__,
5051                           _("bpstat_what: tracepoint encountered"));
5052           break;
5053         case bp_gnu_ifunc_resolver:
5054           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5055           this_action = BPSTAT_WHAT_SINGLE;
5056           break;
5057         case bp_gnu_ifunc_resolver_return:
5058           /* The breakpoint will be removed, execution will restart from the
5059              PC of the former breakpoint.  */
5060           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5061           break;
5062         default:
5063           internal_error (__FILE__, __LINE__,
5064                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5065         }
5066
5067       retval.main_action = max (retval.main_action, this_action);
5068     }
5069
5070   /* These operations may affect the bs->breakpoint_at state so they are
5071      delayed after MAIN_ACTION is decided above.  */
5072
5073   if (jit_event)
5074     {
5075       if (debug_infrun)
5076         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5077
5078       handle_jit_event ();
5079     }
5080
5081   for (bs = bs_head; bs != NULL; bs = bs->next)
5082     {
5083       struct breakpoint *b = bs->breakpoint_at;
5084
5085       if (b == NULL)
5086         continue;
5087       switch (b->type)
5088         {
5089         case bp_gnu_ifunc_resolver:
5090           gnu_ifunc_resolver_stop (b);
5091           break;
5092         case bp_gnu_ifunc_resolver_return:
5093           gnu_ifunc_resolver_return_stop (b);
5094           break;
5095         }
5096     }
5097
5098   return retval;
5099 }
5100
5101 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5102    without hardware support).  This isn't related to a specific bpstat,
5103    just to things like whether watchpoints are set.  */
5104
5105 int
5106 bpstat_should_step (void)
5107 {
5108   struct breakpoint *b;
5109
5110   ALL_BREAKPOINTS (b)
5111     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5112       return 1;
5113   return 0;
5114 }
5115
5116 int
5117 bpstat_causes_stop (bpstat bs)
5118 {
5119   for (; bs != NULL; bs = bs->next)
5120     if (bs->stop)
5121       return 1;
5122
5123   return 0;
5124 }
5125
5126 \f
5127
5128 /* Compute a string of spaces suitable to indent the next line
5129    so it starts at the position corresponding to the table column
5130    named COL_NAME in the currently active table of UIOUT.  */
5131
5132 static char *
5133 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5134 {
5135   static char wrap_indent[80];
5136   int i, total_width, width, align;
5137   char *text;
5138
5139   total_width = 0;
5140   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5141     {
5142       if (strcmp (text, col_name) == 0)
5143         {
5144           gdb_assert (total_width < sizeof wrap_indent);
5145           memset (wrap_indent, ' ', total_width);
5146           wrap_indent[total_width] = 0;
5147
5148           return wrap_indent;
5149         }
5150
5151       total_width += width + 1;
5152     }
5153
5154   return NULL;
5155 }
5156
5157 /* Determine if the locations of this breakpoint will have their conditions
5158    evaluated by the target, host or a mix of both.  Returns the following:
5159
5160     "host": Host evals condition.
5161     "host or target": Host or Target evals condition.
5162     "target": Target evals condition.
5163 */
5164
5165 static const char *
5166 bp_condition_evaluator (struct breakpoint *b)
5167 {
5168   struct bp_location *bl;
5169   char host_evals = 0;
5170   char target_evals = 0;
5171
5172   if (!b)
5173     return NULL;
5174
5175   if (!is_breakpoint (b))
5176     return NULL;
5177
5178   if (gdb_evaluates_breakpoint_condition_p ()
5179       || !target_supports_evaluation_of_breakpoint_conditions ())
5180     return condition_evaluation_host;
5181
5182   for (bl = b->loc; bl; bl = bl->next)
5183     {
5184       if (bl->cond_bytecode)
5185         target_evals++;
5186       else
5187         host_evals++;
5188     }
5189
5190   if (host_evals && target_evals)
5191     return condition_evaluation_both;
5192   else if (target_evals)
5193     return condition_evaluation_target;
5194   else
5195     return condition_evaluation_host;
5196 }
5197
5198 /* Determine the breakpoint location's condition evaluator.  This is
5199    similar to bp_condition_evaluator, but for locations.  */
5200
5201 static const char *
5202 bp_location_condition_evaluator (struct bp_location *bl)
5203 {
5204   if (bl && !is_breakpoint (bl->owner))
5205     return NULL;
5206
5207   if (gdb_evaluates_breakpoint_condition_p ()
5208       || !target_supports_evaluation_of_breakpoint_conditions ())
5209     return condition_evaluation_host;
5210
5211   if (bl && bl->cond_bytecode)
5212     return condition_evaluation_target;
5213   else
5214     return condition_evaluation_host;
5215 }
5216
5217 /* Print the LOC location out of the list of B->LOC locations.  */
5218
5219 static void
5220 print_breakpoint_location (struct breakpoint *b,
5221                            struct bp_location *loc)
5222 {
5223   struct ui_out *uiout = current_uiout;
5224   struct cleanup *old_chain = save_current_program_space ();
5225
5226   if (loc != NULL && loc->shlib_disabled)
5227     loc = NULL;
5228
5229   if (loc != NULL)
5230     set_current_program_space (loc->pspace);
5231
5232   if (b->display_canonical)
5233     ui_out_field_string (uiout, "what", b->addr_string);
5234   else if (loc && loc->source_file)
5235     {
5236       struct symbol *sym 
5237         = find_pc_sect_function (loc->address, loc->section);
5238       if (sym)
5239         {
5240           ui_out_text (uiout, "in ");
5241           ui_out_field_string (uiout, "func",
5242                                SYMBOL_PRINT_NAME (sym));
5243           ui_out_text (uiout, " ");
5244           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5245           ui_out_text (uiout, "at ");
5246         }
5247       ui_out_field_string (uiout, "file", loc->source_file);
5248       ui_out_text (uiout, ":");
5249       
5250       if (ui_out_is_mi_like_p (uiout))
5251         {
5252           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5253           char *fullname = symtab_to_fullname (sal.symtab);
5254           
5255           if (fullname)
5256             ui_out_field_string (uiout, "fullname", fullname);
5257         }
5258       
5259       ui_out_field_int (uiout, "line", loc->line_number);
5260     }
5261   else if (loc)
5262     {
5263       struct ui_stream *stb = ui_out_stream_new (uiout);
5264       struct cleanup *stb_chain = make_cleanup_ui_out_stream_delete (stb);
5265
5266       print_address_symbolic (loc->gdbarch, loc->address, stb->stream,
5267                               demangle, "");
5268       ui_out_field_stream (uiout, "at", stb);
5269
5270       do_cleanups (stb_chain);
5271     }
5272   else
5273     ui_out_field_string (uiout, "pending", b->addr_string);
5274
5275   if (loc && is_breakpoint (b)
5276       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5277       && bp_condition_evaluator (b) == condition_evaluation_both)
5278     {
5279       ui_out_text (uiout, " (");
5280       ui_out_field_string (uiout, "evaluated-by",
5281                            bp_location_condition_evaluator (loc));
5282       ui_out_text (uiout, ")");
5283     }
5284
5285   do_cleanups (old_chain);
5286 }
5287
5288 static const char *
5289 bptype_string (enum bptype type)
5290 {
5291   struct ep_type_description
5292     {
5293       enum bptype type;
5294       char *description;
5295     };
5296   static struct ep_type_description bptypes[] =
5297   {
5298     {bp_none, "?deleted?"},
5299     {bp_breakpoint, "breakpoint"},
5300     {bp_hardware_breakpoint, "hw breakpoint"},
5301     {bp_until, "until"},
5302     {bp_finish, "finish"},
5303     {bp_watchpoint, "watchpoint"},
5304     {bp_hardware_watchpoint, "hw watchpoint"},
5305     {bp_read_watchpoint, "read watchpoint"},
5306     {bp_access_watchpoint, "acc watchpoint"},
5307     {bp_longjmp, "longjmp"},
5308     {bp_longjmp_resume, "longjmp resume"},
5309     {bp_exception, "exception"},
5310     {bp_exception_resume, "exception resume"},
5311     {bp_step_resume, "step resume"},
5312     {bp_hp_step_resume, "high-priority step resume"},
5313     {bp_watchpoint_scope, "watchpoint scope"},
5314     {bp_call_dummy, "call dummy"},
5315     {bp_std_terminate, "std::terminate"},
5316     {bp_shlib_event, "shlib events"},
5317     {bp_thread_event, "thread events"},
5318     {bp_overlay_event, "overlay events"},
5319     {bp_longjmp_master, "longjmp master"},
5320     {bp_std_terminate_master, "std::terminate master"},
5321     {bp_exception_master, "exception master"},
5322     {bp_catchpoint, "catchpoint"},
5323     {bp_tracepoint, "tracepoint"},
5324     {bp_fast_tracepoint, "fast tracepoint"},
5325     {bp_static_tracepoint, "static tracepoint"},
5326     {bp_jit_event, "jit events"},
5327     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5328     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5329   };
5330
5331   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5332       || ((int) type != bptypes[(int) type].type))
5333     internal_error (__FILE__, __LINE__,
5334                     _("bptypes table does not describe type #%d."),
5335                     (int) type);
5336
5337   return bptypes[(int) type].description;
5338 }
5339
5340 /* Print B to gdb_stdout.  */
5341
5342 static void
5343 print_one_breakpoint_location (struct breakpoint *b,
5344                                struct bp_location *loc,
5345                                int loc_number,
5346                                struct bp_location **last_loc,
5347                                int allflag)
5348 {
5349   struct command_line *l;
5350   static char bpenables[] = "nynny";
5351
5352   struct ui_out *uiout = current_uiout;
5353   int header_of_multiple = 0;
5354   int part_of_multiple = (loc != NULL);
5355   struct value_print_options opts;
5356
5357   get_user_print_options (&opts);
5358
5359   gdb_assert (!loc || loc_number != 0);
5360   /* See comment in print_one_breakpoint concerning treatment of
5361      breakpoints with single disabled location.  */
5362   if (loc == NULL 
5363       && (b->loc != NULL 
5364           && (b->loc->next != NULL || !b->loc->enabled)))
5365     header_of_multiple = 1;
5366   if (loc == NULL)
5367     loc = b->loc;
5368
5369   annotate_record ();
5370
5371   /* 1 */
5372   annotate_field (0);
5373   if (part_of_multiple)
5374     {
5375       char *formatted;
5376       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5377       ui_out_field_string (uiout, "number", formatted);
5378       xfree (formatted);
5379     }
5380   else
5381     {
5382       ui_out_field_int (uiout, "number", b->number);
5383     }
5384
5385   /* 2 */
5386   annotate_field (1);
5387   if (part_of_multiple)
5388     ui_out_field_skip (uiout, "type");
5389   else
5390     ui_out_field_string (uiout, "type", bptype_string (b->type));
5391
5392   /* 3 */
5393   annotate_field (2);
5394   if (part_of_multiple)
5395     ui_out_field_skip (uiout, "disp");
5396   else
5397     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5398
5399
5400   /* 4 */
5401   annotate_field (3);
5402   if (part_of_multiple)
5403     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5404   else
5405     ui_out_field_fmt (uiout, "enabled", "%c", 
5406                       bpenables[(int) b->enable_state]);
5407   ui_out_spaces (uiout, 2);
5408
5409   
5410   /* 5 and 6 */
5411   if (b->ops != NULL && b->ops->print_one != NULL)
5412     {
5413       /* Although the print_one can possibly print all locations,
5414          calling it here is not likely to get any nice result.  So,
5415          make sure there's just one location.  */
5416       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5417       b->ops->print_one (b, last_loc);
5418     }
5419   else
5420     switch (b->type)
5421       {
5422       case bp_none:
5423         internal_error (__FILE__, __LINE__,
5424                         _("print_one_breakpoint: bp_none encountered\n"));
5425         break;
5426
5427       case bp_watchpoint:
5428       case bp_hardware_watchpoint:
5429       case bp_read_watchpoint:
5430       case bp_access_watchpoint:
5431         {
5432           struct watchpoint *w = (struct watchpoint *) b;
5433
5434           /* Field 4, the address, is omitted (which makes the columns
5435              not line up too nicely with the headers, but the effect
5436              is relatively readable).  */
5437           if (opts.addressprint)
5438             ui_out_field_skip (uiout, "addr");
5439           annotate_field (5);
5440           ui_out_field_string (uiout, "what", w->exp_string);
5441         }
5442         break;
5443
5444       case bp_breakpoint:
5445       case bp_hardware_breakpoint:
5446       case bp_until:
5447       case bp_finish:
5448       case bp_longjmp:
5449       case bp_longjmp_resume:
5450       case bp_exception:
5451       case bp_exception_resume:
5452       case bp_step_resume:
5453       case bp_hp_step_resume:
5454       case bp_watchpoint_scope:
5455       case bp_call_dummy:
5456       case bp_std_terminate:
5457       case bp_shlib_event:
5458       case bp_thread_event:
5459       case bp_overlay_event:
5460       case bp_longjmp_master:
5461       case bp_std_terminate_master:
5462       case bp_exception_master:
5463       case bp_tracepoint:
5464       case bp_fast_tracepoint:
5465       case bp_static_tracepoint:
5466       case bp_jit_event:
5467       case bp_gnu_ifunc_resolver:
5468       case bp_gnu_ifunc_resolver_return:
5469         if (opts.addressprint)
5470           {
5471             annotate_field (4);
5472             if (header_of_multiple)
5473               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5474             else if (b->loc == NULL || loc->shlib_disabled)
5475               ui_out_field_string (uiout, "addr", "<PENDING>");
5476             else
5477               ui_out_field_core_addr (uiout, "addr",
5478                                       loc->gdbarch, loc->address);
5479           }
5480         annotate_field (5);
5481         if (!header_of_multiple)
5482           print_breakpoint_location (b, loc);
5483         if (b->loc)
5484           *last_loc = b->loc;
5485         break;
5486       }
5487
5488
5489   /* For backward compatibility, don't display inferiors unless there
5490      are several.  */
5491   if (loc != NULL
5492       && !header_of_multiple
5493       && (allflag
5494           || (!gdbarch_has_global_breakpoints (target_gdbarch)
5495               && (number_of_program_spaces () > 1
5496                   || number_of_inferiors () > 1)
5497               /* LOC is for existing B, it cannot be in
5498                  moribund_locations and thus having NULL OWNER.  */
5499               && loc->owner->type != bp_catchpoint)))
5500     {
5501       struct inferior *inf;
5502       int first = 1;
5503
5504       for (inf = inferior_list; inf != NULL; inf = inf->next)
5505         {
5506           if (inf->pspace == loc->pspace)
5507             {
5508               if (first)
5509                 {
5510                   first = 0;
5511                   ui_out_text (uiout, " inf ");
5512                 }
5513               else
5514                 ui_out_text (uiout, ", ");
5515               ui_out_text (uiout, plongest (inf->num));
5516             }
5517         }
5518     }
5519
5520   if (!part_of_multiple)
5521     {
5522       if (b->thread != -1)
5523         {
5524           /* FIXME: This seems to be redundant and lost here; see the
5525              "stop only in" line a little further down.  */
5526           ui_out_text (uiout, " thread ");
5527           ui_out_field_int (uiout, "thread", b->thread);
5528         }
5529       else if (b->task != 0)
5530         {
5531           ui_out_text (uiout, " task ");
5532           ui_out_field_int (uiout, "task", b->task);
5533         }
5534     }
5535
5536   ui_out_text (uiout, "\n");
5537
5538   if (!part_of_multiple)
5539     b->ops->print_one_detail (b, uiout);
5540
5541   if (part_of_multiple && frame_id_p (b->frame_id))
5542     {
5543       annotate_field (6);
5544       ui_out_text (uiout, "\tstop only in stack frame at ");
5545       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5546          the frame ID.  */
5547       ui_out_field_core_addr (uiout, "frame",
5548                               b->gdbarch, b->frame_id.stack_addr);
5549       ui_out_text (uiout, "\n");
5550     }
5551   
5552   if (!part_of_multiple && b->cond_string)
5553     {
5554       annotate_field (7);
5555       if (is_tracepoint (b))
5556         ui_out_text (uiout, "\ttrace only if ");
5557       else
5558         ui_out_text (uiout, "\tstop only if ");
5559       ui_out_field_string (uiout, "cond", b->cond_string);
5560
5561       /* Print whether the target is doing the breakpoint's condition
5562          evaluation.  If GDB is doing the evaluation, don't print anything.  */
5563       if (is_breakpoint (b)
5564           && breakpoint_condition_evaluation_mode ()
5565           == condition_evaluation_target)
5566         {
5567           ui_out_text (uiout, " (");
5568           ui_out_field_string (uiout, "evaluated-by",
5569                                bp_condition_evaluator (b));
5570           ui_out_text (uiout, " evals)");
5571         }
5572       ui_out_text (uiout, "\n");
5573     }
5574
5575   if (!part_of_multiple && b->thread != -1)
5576     {
5577       /* FIXME should make an annotation for this.  */
5578       ui_out_text (uiout, "\tstop only in thread ");
5579       ui_out_field_int (uiout, "thread", b->thread);
5580       ui_out_text (uiout, "\n");
5581     }
5582   
5583   if (!part_of_multiple && b->hit_count)
5584     {
5585       /* FIXME should make an annotation for this.  */
5586       if (ep_is_catchpoint (b))
5587         ui_out_text (uiout, "\tcatchpoint");
5588       else if (is_tracepoint (b))
5589         ui_out_text (uiout, "\ttracepoint");
5590       else
5591         ui_out_text (uiout, "\tbreakpoint");
5592       ui_out_text (uiout, " already hit ");
5593       ui_out_field_int (uiout, "times", b->hit_count);
5594       if (b->hit_count == 1)
5595         ui_out_text (uiout, " time\n");
5596       else
5597         ui_out_text (uiout, " times\n");
5598     }
5599   
5600   /* Output the count also if it is zero, but only if this is mi.
5601      FIXME: Should have a better test for this.  */
5602   if (ui_out_is_mi_like_p (uiout))
5603     if (!part_of_multiple && b->hit_count == 0)
5604       ui_out_field_int (uiout, "times", b->hit_count);
5605
5606   if (!part_of_multiple && b->ignore_count)
5607     {
5608       annotate_field (8);
5609       ui_out_text (uiout, "\tignore next ");
5610       ui_out_field_int (uiout, "ignore", b->ignore_count);
5611       ui_out_text (uiout, " hits\n");
5612     }
5613
5614   /* Note that an enable count of 1 corresponds to "enable once"
5615      behavior, which is reported by the combination of enablement and
5616      disposition, so we don't need to mention it here.  */
5617   if (!part_of_multiple && b->enable_count > 1)
5618     {
5619       annotate_field (8);
5620       ui_out_text (uiout, "\tdisable after ");
5621       /* Tweak the wording to clarify that ignore and enable counts
5622          are distinct, and have additive effect.  */
5623       if (b->ignore_count)
5624         ui_out_text (uiout, "additional ");
5625       else
5626         ui_out_text (uiout, "next ");
5627       ui_out_field_int (uiout, "enable", b->enable_count);
5628       ui_out_text (uiout, " hits\n");
5629     }
5630
5631   if (!part_of_multiple && is_tracepoint (b))
5632     {
5633       struct tracepoint *tp = (struct tracepoint *) b;
5634
5635       if (tp->traceframe_usage)
5636         {
5637           ui_out_text (uiout, "\ttrace buffer usage ");
5638           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
5639           ui_out_text (uiout, " bytes\n");
5640         }
5641     }
5642   
5643   l = b->commands ? b->commands->commands : NULL;
5644   if (!part_of_multiple && l)
5645     {
5646       struct cleanup *script_chain;
5647
5648       annotate_field (9);
5649       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
5650       print_command_lines (uiout, l, 4);
5651       do_cleanups (script_chain);
5652     }
5653
5654   if (is_tracepoint (b))
5655     {
5656       struct tracepoint *t = (struct tracepoint *) b;
5657
5658       if (!part_of_multiple && t->pass_count)
5659         {
5660           annotate_field (10);
5661           ui_out_text (uiout, "\tpass count ");
5662           ui_out_field_int (uiout, "pass", t->pass_count);
5663           ui_out_text (uiout, " \n");
5664         }
5665     }
5666
5667   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
5668     {
5669       if (is_watchpoint (b))
5670         {
5671           struct watchpoint *w = (struct watchpoint *) b;
5672
5673           ui_out_field_string (uiout, "original-location", w->exp_string);
5674         }
5675       else if (b->addr_string)
5676         ui_out_field_string (uiout, "original-location", b->addr_string);
5677     }
5678 }
5679
5680 static void
5681 print_one_breakpoint (struct breakpoint *b,
5682                       struct bp_location **last_loc, 
5683                       int allflag)
5684 {
5685   struct cleanup *bkpt_chain;
5686   struct ui_out *uiout = current_uiout;
5687
5688   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
5689
5690   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
5691   do_cleanups (bkpt_chain);
5692
5693   /* If this breakpoint has custom print function,
5694      it's already printed.  Otherwise, print individual
5695      locations, if any.  */
5696   if (b->ops == NULL || b->ops->print_one == NULL)
5697     {
5698       /* If breakpoint has a single location that is disabled, we
5699          print it as if it had several locations, since otherwise it's
5700          hard to represent "breakpoint enabled, location disabled"
5701          situation.
5702
5703          Note that while hardware watchpoints have several locations
5704          internally, that's not a property exposed to user.  */
5705       if (b->loc 
5706           && !is_hardware_watchpoint (b)
5707           && (b->loc->next || !b->loc->enabled))
5708         {
5709           struct bp_location *loc;
5710           int n = 1;
5711
5712           for (loc = b->loc; loc; loc = loc->next, ++n)
5713             {
5714               struct cleanup *inner2 =
5715                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
5716               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
5717               do_cleanups (inner2);
5718             }
5719         }
5720     }
5721 }
5722
5723 static int
5724 breakpoint_address_bits (struct breakpoint *b)
5725 {
5726   int print_address_bits = 0;
5727   struct bp_location *loc;
5728
5729   for (loc = b->loc; loc; loc = loc->next)
5730     {
5731       int addr_bit;
5732
5733       /* Software watchpoints that aren't watching memory don't have
5734          an address to print.  */
5735       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
5736         continue;
5737
5738       addr_bit = gdbarch_addr_bit (loc->gdbarch);
5739       if (addr_bit > print_address_bits)
5740         print_address_bits = addr_bit;
5741     }
5742
5743   return print_address_bits;
5744 }
5745
5746 struct captured_breakpoint_query_args
5747   {
5748     int bnum;
5749   };
5750
5751 static int
5752 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
5753 {
5754   struct captured_breakpoint_query_args *args = data;
5755   struct breakpoint *b;
5756   struct bp_location *dummy_loc = NULL;
5757
5758   ALL_BREAKPOINTS (b)
5759     {
5760       if (args->bnum == b->number)
5761         {
5762           print_one_breakpoint (b, &dummy_loc, 0);
5763           return GDB_RC_OK;
5764         }
5765     }
5766   return GDB_RC_NONE;
5767 }
5768
5769 enum gdb_rc
5770 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
5771                       char **error_message)
5772 {
5773   struct captured_breakpoint_query_args args;
5774
5775   args.bnum = bnum;
5776   /* For the moment we don't trust print_one_breakpoint() to not throw
5777      an error.  */
5778   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
5779                                  error_message, RETURN_MASK_ALL) < 0)
5780     return GDB_RC_FAIL;
5781   else
5782     return GDB_RC_OK;
5783 }
5784
5785 /* Return true if this breakpoint was set by the user, false if it is
5786    internal or momentary.  */
5787
5788 int
5789 user_breakpoint_p (struct breakpoint *b)
5790 {
5791   return b->number > 0;
5792 }
5793
5794 /* Print information on user settable breakpoint (watchpoint, etc)
5795    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
5796    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
5797    FILTER is non-NULL, call it on each breakpoint and only include the
5798    ones for which it returns non-zero.  Return the total number of
5799    breakpoints listed.  */
5800
5801 static int
5802 breakpoint_1 (char *args, int allflag, 
5803               int (*filter) (const struct breakpoint *))
5804 {
5805   struct breakpoint *b;
5806   struct bp_location *last_loc = NULL;
5807   int nr_printable_breakpoints;
5808   struct cleanup *bkpttbl_chain;
5809   struct value_print_options opts;
5810   int print_address_bits = 0;
5811   int print_type_col_width = 14;
5812   struct ui_out *uiout = current_uiout;
5813
5814   get_user_print_options (&opts);
5815
5816   /* Compute the number of rows in the table, as well as the size
5817      required for address fields.  */
5818   nr_printable_breakpoints = 0;
5819   ALL_BREAKPOINTS (b)
5820     {
5821       /* If we have a filter, only list the breakpoints it accepts.  */
5822       if (filter && !filter (b))
5823         continue;
5824
5825       /* If we have an "args" string, it is a list of breakpoints to 
5826          accept.  Skip the others.  */
5827       if (args != NULL && *args != '\0')
5828         {
5829           if (allflag && parse_and_eval_long (args) != b->number)
5830             continue;
5831           if (!allflag && !number_is_in_list (args, b->number))
5832             continue;
5833         }
5834
5835       if (allflag || user_breakpoint_p (b))
5836         {
5837           int addr_bit, type_len;
5838
5839           addr_bit = breakpoint_address_bits (b);
5840           if (addr_bit > print_address_bits)
5841             print_address_bits = addr_bit;
5842
5843           type_len = strlen (bptype_string (b->type));
5844           if (type_len > print_type_col_width)
5845             print_type_col_width = type_len;
5846
5847           nr_printable_breakpoints++;
5848         }
5849     }
5850
5851   if (opts.addressprint)
5852     bkpttbl_chain 
5853       = make_cleanup_ui_out_table_begin_end (uiout, 6,
5854                                              nr_printable_breakpoints,
5855                                              "BreakpointTable");
5856   else
5857     bkpttbl_chain 
5858       = make_cleanup_ui_out_table_begin_end (uiout, 5,
5859                                              nr_printable_breakpoints,
5860                                              "BreakpointTable");
5861
5862   if (nr_printable_breakpoints > 0)
5863     annotate_breakpoints_headers ();
5864   if (nr_printable_breakpoints > 0)
5865     annotate_field (0);
5866   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
5867   if (nr_printable_breakpoints > 0)
5868     annotate_field (1);
5869   ui_out_table_header (uiout, print_type_col_width, ui_left,
5870                        "type", "Type");                         /* 2 */
5871   if (nr_printable_breakpoints > 0)
5872     annotate_field (2);
5873   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
5874   if (nr_printable_breakpoints > 0)
5875     annotate_field (3);
5876   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
5877   if (opts.addressprint)
5878     {
5879       if (nr_printable_breakpoints > 0)
5880         annotate_field (4);
5881       if (print_address_bits <= 32)
5882         ui_out_table_header (uiout, 10, ui_left, 
5883                              "addr", "Address");                /* 5 */
5884       else
5885         ui_out_table_header (uiout, 18, ui_left, 
5886                              "addr", "Address");                /* 5 */
5887     }
5888   if (nr_printable_breakpoints > 0)
5889     annotate_field (5);
5890   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
5891   ui_out_table_body (uiout);
5892   if (nr_printable_breakpoints > 0)
5893     annotate_breakpoints_table ();
5894
5895   ALL_BREAKPOINTS (b)
5896     {
5897       QUIT;
5898       /* If we have a filter, only list the breakpoints it accepts.  */
5899       if (filter && !filter (b))
5900         continue;
5901
5902       /* If we have an "args" string, it is a list of breakpoints to 
5903          accept.  Skip the others.  */
5904
5905       if (args != NULL && *args != '\0')
5906         {
5907           if (allflag)  /* maintenance info breakpoint */
5908             {
5909               if (parse_and_eval_long (args) != b->number)
5910                 continue;
5911             }
5912           else          /* all others */
5913             {
5914               if (!number_is_in_list (args, b->number))
5915                 continue;
5916             }
5917         }
5918       /* We only print out user settable breakpoints unless the
5919          allflag is set.  */
5920       if (allflag || user_breakpoint_p (b))
5921         print_one_breakpoint (b, &last_loc, allflag);
5922     }
5923
5924   do_cleanups (bkpttbl_chain);
5925
5926   if (nr_printable_breakpoints == 0)
5927     {
5928       /* If there's a filter, let the caller decide how to report
5929          empty list.  */
5930       if (!filter)
5931         {
5932           if (args == NULL || *args == '\0')
5933             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
5934           else
5935             ui_out_message (uiout, 0, 
5936                             "No breakpoint or watchpoint matching '%s'.\n",
5937                             args);
5938         }
5939     }
5940   else
5941     {
5942       if (last_loc && !server_command)
5943         set_next_address (last_loc->gdbarch, last_loc->address);
5944     }
5945
5946   /* FIXME?  Should this be moved up so that it is only called when
5947      there have been breakpoints? */
5948   annotate_breakpoints_table_end ();
5949
5950   return nr_printable_breakpoints;
5951 }
5952
5953 /* Display the value of default-collect in a way that is generally
5954    compatible with the breakpoint list.  */
5955
5956 static void
5957 default_collect_info (void)
5958 {
5959   struct ui_out *uiout = current_uiout;
5960
5961   /* If it has no value (which is frequently the case), say nothing; a
5962      message like "No default-collect." gets in user's face when it's
5963      not wanted.  */
5964   if (!*default_collect)
5965     return;
5966
5967   /* The following phrase lines up nicely with per-tracepoint collect
5968      actions.  */
5969   ui_out_text (uiout, "default collect ");
5970   ui_out_field_string (uiout, "default-collect", default_collect);
5971   ui_out_text (uiout, " \n");
5972 }
5973   
5974 static void
5975 breakpoints_info (char *args, int from_tty)
5976 {
5977   breakpoint_1 (args, 0, NULL);
5978
5979   default_collect_info ();
5980 }
5981
5982 static void
5983 watchpoints_info (char *args, int from_tty)
5984 {
5985   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
5986   struct ui_out *uiout = current_uiout;
5987
5988   if (num_printed == 0)
5989     {
5990       if (args == NULL || *args == '\0')
5991         ui_out_message (uiout, 0, "No watchpoints.\n");
5992       else
5993         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
5994     }
5995 }
5996
5997 static void
5998 maintenance_info_breakpoints (char *args, int from_tty)
5999 {
6000   breakpoint_1 (args, 1, NULL);
6001
6002   default_collect_info ();
6003 }
6004
6005 static int
6006 breakpoint_has_pc (struct breakpoint *b,
6007                    struct program_space *pspace,
6008                    CORE_ADDR pc, struct obj_section *section)
6009 {
6010   struct bp_location *bl = b->loc;
6011
6012   for (; bl; bl = bl->next)
6013     {
6014       if (bl->pspace == pspace
6015           && bl->address == pc
6016           && (!overlay_debugging || bl->section == section))
6017         return 1;         
6018     }
6019   return 0;
6020 }
6021
6022 /* Print a message describing any user-breakpoints set at PC.  This
6023    concerns with logical breakpoints, so we match program spaces, not
6024    address spaces.  */
6025
6026 static void
6027 describe_other_breakpoints (struct gdbarch *gdbarch,
6028                             struct program_space *pspace, CORE_ADDR pc,
6029                             struct obj_section *section, int thread)
6030 {
6031   int others = 0;
6032   struct breakpoint *b;
6033
6034   ALL_BREAKPOINTS (b)
6035     others += (user_breakpoint_p (b)
6036                && breakpoint_has_pc (b, pspace, pc, section));
6037   if (others > 0)
6038     {
6039       if (others == 1)
6040         printf_filtered (_("Note: breakpoint "));
6041       else /* if (others == ???) */
6042         printf_filtered (_("Note: breakpoints "));
6043       ALL_BREAKPOINTS (b)
6044         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6045           {
6046             others--;
6047             printf_filtered ("%d", b->number);
6048             if (b->thread == -1 && thread != -1)
6049               printf_filtered (" (all threads)");
6050             else if (b->thread != -1)
6051               printf_filtered (" (thread %d)", b->thread);
6052             printf_filtered ("%s%s ",
6053                              ((b->enable_state == bp_disabled
6054                                || b->enable_state == bp_call_disabled)
6055                               ? " (disabled)"
6056                               : b->enable_state == bp_permanent 
6057                               ? " (permanent)"
6058                               : ""),
6059                              (others > 1) ? "," 
6060                              : ((others == 1) ? " and" : ""));
6061           }
6062       printf_filtered (_("also set at pc "));
6063       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6064       printf_filtered (".\n");
6065     }
6066 }
6067 \f
6068
6069 /* Return true iff it is meaningful to use the address member of
6070    BPT.  For some breakpoint types, the address member is irrelevant
6071    and it makes no sense to attempt to compare it to other addresses
6072    (or use it for any other purpose either).
6073
6074    More specifically, each of the following breakpoint types will
6075    always have a zero valued address and we don't want to mark
6076    breakpoints of any of these types to be a duplicate of an actual
6077    breakpoint at address zero:
6078
6079       bp_watchpoint
6080       bp_catchpoint
6081
6082 */
6083
6084 static int
6085 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6086 {
6087   enum bptype type = bpt->type;
6088
6089   return (type != bp_watchpoint && type != bp_catchpoint);
6090 }
6091
6092 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6093    true if LOC1 and LOC2 represent the same watchpoint location.  */
6094
6095 static int
6096 watchpoint_locations_match (struct bp_location *loc1, 
6097                             struct bp_location *loc2)
6098 {
6099   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6100   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6101
6102   /* Both of them must exist.  */
6103   gdb_assert (w1 != NULL);
6104   gdb_assert (w2 != NULL);
6105
6106   /* If the target can evaluate the condition expression in hardware,
6107      then we we need to insert both watchpoints even if they are at
6108      the same place.  Otherwise the watchpoint will only trigger when
6109      the condition of whichever watchpoint was inserted evaluates to
6110      true, not giving a chance for GDB to check the condition of the
6111      other watchpoint.  */
6112   if ((w1->cond_exp
6113        && target_can_accel_watchpoint_condition (loc1->address, 
6114                                                  loc1->length,
6115                                                  loc1->watchpoint_type,
6116                                                  w1->cond_exp))
6117       || (w2->cond_exp
6118           && target_can_accel_watchpoint_condition (loc2->address, 
6119                                                     loc2->length,
6120                                                     loc2->watchpoint_type,
6121                                                     w2->cond_exp)))
6122     return 0;
6123
6124   /* Note that this checks the owner's type, not the location's.  In
6125      case the target does not support read watchpoints, but does
6126      support access watchpoints, we'll have bp_read_watchpoint
6127      watchpoints with hw_access locations.  Those should be considered
6128      duplicates of hw_read locations.  The hw_read locations will
6129      become hw_access locations later.  */
6130   return (loc1->owner->type == loc2->owner->type
6131           && loc1->pspace->aspace == loc2->pspace->aspace
6132           && loc1->address == loc2->address
6133           && loc1->length == loc2->length);
6134 }
6135
6136 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6137    same breakpoint location.  In most targets, this can only be true
6138    if ASPACE1 matches ASPACE2.  On targets that have global
6139    breakpoints, the address space doesn't really matter.  */
6140
6141 static int
6142 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6143                           struct address_space *aspace2, CORE_ADDR addr2)
6144 {
6145   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6146            || aspace1 == aspace2)
6147           && addr1 == addr2);
6148 }
6149
6150 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6151    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6152    matches ASPACE2.  On targets that have global breakpoints, the address
6153    space doesn't really matter.  */
6154
6155 static int
6156 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6157                                 int len1, struct address_space *aspace2,
6158                                 CORE_ADDR addr2)
6159 {
6160   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6161            || aspace1 == aspace2)
6162           && addr2 >= addr1 && addr2 < addr1 + len1);
6163 }
6164
6165 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6166    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6167    matches the breakpoint's address space.  On targets that have global
6168    breakpoints, the address space doesn't really matter.  */
6169
6170 static int
6171 breakpoint_location_address_match (struct bp_location *bl,
6172                                    struct address_space *aspace,
6173                                    CORE_ADDR addr)
6174 {
6175   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6176                                     aspace, addr)
6177           || (bl->length
6178               && breakpoint_address_match_range (bl->pspace->aspace,
6179                                                  bl->address, bl->length,
6180                                                  aspace, addr)));
6181 }
6182
6183 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6184    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6185    true, otherwise returns false.  */
6186
6187 static int
6188 tracepoint_locations_match (struct bp_location *loc1,
6189                             struct bp_location *loc2)
6190 {
6191   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6192     /* Since tracepoint locations are never duplicated with others', tracepoint
6193        locations at the same address of different tracepoints are regarded as
6194        different locations.  */
6195     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6196   else
6197     return 0;
6198 }
6199
6200 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6201    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6202    represent the same location.  */
6203
6204 static int
6205 breakpoint_locations_match (struct bp_location *loc1, 
6206                             struct bp_location *loc2)
6207 {
6208   int hw_point1, hw_point2;
6209
6210   /* Both of them must not be in moribund_locations.  */
6211   gdb_assert (loc1->owner != NULL);
6212   gdb_assert (loc2->owner != NULL);
6213
6214   hw_point1 = is_hardware_watchpoint (loc1->owner);
6215   hw_point2 = is_hardware_watchpoint (loc2->owner);
6216
6217   if (hw_point1 != hw_point2)
6218     return 0;
6219   else if (hw_point1)
6220     return watchpoint_locations_match (loc1, loc2);
6221   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6222     return tracepoint_locations_match (loc1, loc2);
6223   else
6224     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6225     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6226                                      loc2->pspace->aspace, loc2->address)
6227             && loc1->length == loc2->length);
6228 }
6229
6230 static void
6231 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6232                                int bnum, int have_bnum)
6233 {
6234   /* The longest string possibly returned by hex_string_custom
6235      is 50 chars.  These must be at least that big for safety.  */
6236   char astr1[64];
6237   char astr2[64];
6238
6239   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6240   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6241   if (have_bnum)
6242     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6243              bnum, astr1, astr2);
6244   else
6245     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6246 }
6247
6248 /* Adjust a breakpoint's address to account for architectural
6249    constraints on breakpoint placement.  Return the adjusted address.
6250    Note: Very few targets require this kind of adjustment.  For most
6251    targets, this function is simply the identity function.  */
6252
6253 static CORE_ADDR
6254 adjust_breakpoint_address (struct gdbarch *gdbarch,
6255                            CORE_ADDR bpaddr, enum bptype bptype)
6256 {
6257   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6258     {
6259       /* Very few targets need any kind of breakpoint adjustment.  */
6260       return bpaddr;
6261     }
6262   else if (bptype == bp_watchpoint
6263            || bptype == bp_hardware_watchpoint
6264            || bptype == bp_read_watchpoint
6265            || bptype == bp_access_watchpoint
6266            || bptype == bp_catchpoint)
6267     {
6268       /* Watchpoints and the various bp_catch_* eventpoints should not
6269          have their addresses modified.  */
6270       return bpaddr;
6271     }
6272   else
6273     {
6274       CORE_ADDR adjusted_bpaddr;
6275
6276       /* Some targets have architectural constraints on the placement
6277          of breakpoint instructions.  Obtain the adjusted address.  */
6278       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6279
6280       /* An adjusted breakpoint address can significantly alter
6281          a user's expectations.  Print a warning if an adjustment
6282          is required.  */
6283       if (adjusted_bpaddr != bpaddr)
6284         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6285
6286       return adjusted_bpaddr;
6287     }
6288 }
6289
6290 void
6291 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6292                   struct breakpoint *owner)
6293 {
6294   memset (loc, 0, sizeof (*loc));
6295
6296   gdb_assert (ops != NULL);
6297
6298   loc->ops = ops;
6299   loc->owner = owner;
6300   loc->cond = NULL;
6301   loc->cond_bytecode = NULL;
6302   loc->shlib_disabled = 0;
6303   loc->enabled = 1;
6304
6305   switch (owner->type)
6306     {
6307     case bp_breakpoint:
6308     case bp_until:
6309     case bp_finish:
6310     case bp_longjmp:
6311     case bp_longjmp_resume:
6312     case bp_exception:
6313     case bp_exception_resume:
6314     case bp_step_resume:
6315     case bp_hp_step_resume:
6316     case bp_watchpoint_scope:
6317     case bp_call_dummy:
6318     case bp_std_terminate:
6319     case bp_shlib_event:
6320     case bp_thread_event:
6321     case bp_overlay_event:
6322     case bp_jit_event:
6323     case bp_longjmp_master:
6324     case bp_std_terminate_master:
6325     case bp_exception_master:
6326     case bp_gnu_ifunc_resolver:
6327     case bp_gnu_ifunc_resolver_return:
6328       loc->loc_type = bp_loc_software_breakpoint;
6329       mark_breakpoint_location_modified (loc);
6330       break;
6331     case bp_hardware_breakpoint:
6332       loc->loc_type = bp_loc_hardware_breakpoint;
6333       mark_breakpoint_location_modified (loc);
6334       break;
6335     case bp_hardware_watchpoint:
6336     case bp_read_watchpoint:
6337     case bp_access_watchpoint:
6338       loc->loc_type = bp_loc_hardware_watchpoint;
6339       break;
6340     case bp_watchpoint:
6341     case bp_catchpoint:
6342     case bp_tracepoint:
6343     case bp_fast_tracepoint:
6344     case bp_static_tracepoint:
6345       loc->loc_type = bp_loc_other;
6346       break;
6347     default:
6348       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6349     }
6350
6351   loc->refc = 1;
6352 }
6353
6354 /* Allocate a struct bp_location.  */
6355
6356 static struct bp_location *
6357 allocate_bp_location (struct breakpoint *bpt)
6358 {
6359   return bpt->ops->allocate_location (bpt);
6360 }
6361
6362 static void
6363 free_bp_location (struct bp_location *loc)
6364 {
6365   loc->ops->dtor (loc);
6366   xfree (loc);
6367 }
6368
6369 /* Increment reference count.  */
6370
6371 static void
6372 incref_bp_location (struct bp_location *bl)
6373 {
6374   ++bl->refc;
6375 }
6376
6377 /* Decrement reference count.  If the reference count reaches 0,
6378    destroy the bp_location.  Sets *BLP to NULL.  */
6379
6380 static void
6381 decref_bp_location (struct bp_location **blp)
6382 {
6383   gdb_assert ((*blp)->refc > 0);
6384
6385   if (--(*blp)->refc == 0)
6386     free_bp_location (*blp);
6387   *blp = NULL;
6388 }
6389
6390 /* Add breakpoint B at the end of the global breakpoint chain.  */
6391
6392 static void
6393 add_to_breakpoint_chain (struct breakpoint *b)
6394 {
6395   struct breakpoint *b1;
6396
6397   /* Add this breakpoint to the end of the chain so that a list of
6398      breakpoints will come out in order of increasing numbers.  */
6399
6400   b1 = breakpoint_chain;
6401   if (b1 == 0)
6402     breakpoint_chain = b;
6403   else
6404     {
6405       while (b1->next)
6406         b1 = b1->next;
6407       b1->next = b;
6408     }
6409 }
6410
6411 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6412
6413 static void
6414 init_raw_breakpoint_without_location (struct breakpoint *b,
6415                                       struct gdbarch *gdbarch,
6416                                       enum bptype bptype,
6417                                       const struct breakpoint_ops *ops)
6418 {
6419   memset (b, 0, sizeof (*b));
6420
6421   gdb_assert (ops != NULL);
6422
6423   b->ops = ops;
6424   b->type = bptype;
6425   b->gdbarch = gdbarch;
6426   b->language = current_language->la_language;
6427   b->input_radix = input_radix;
6428   b->thread = -1;
6429   b->enable_state = bp_enabled;
6430   b->next = 0;
6431   b->silent = 0;
6432   b->ignore_count = 0;
6433   b->commands = NULL;
6434   b->frame_id = null_frame_id;
6435   b->condition_not_parsed = 0;
6436   b->py_bp_object = NULL;
6437   b->related_breakpoint = b;
6438 }
6439
6440 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6441    that has type BPTYPE and has no locations as yet.  */
6442
6443 static struct breakpoint *
6444 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6445                                      enum bptype bptype,
6446                                      const struct breakpoint_ops *ops)
6447 {
6448   struct breakpoint *b = XNEW (struct breakpoint);
6449
6450   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6451   add_to_breakpoint_chain (b);
6452   return b;
6453 }
6454
6455 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6456    resolutions should be made as the user specified the location explicitly
6457    enough.  */
6458
6459 static void
6460 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6461 {
6462   gdb_assert (loc->owner != NULL);
6463
6464   if (loc->owner->type == bp_breakpoint
6465       || loc->owner->type == bp_hardware_breakpoint
6466       || is_tracepoint (loc->owner))
6467     {
6468       int is_gnu_ifunc;
6469       const char *function_name;
6470
6471       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6472                                           NULL, NULL, &is_gnu_ifunc);
6473
6474       if (is_gnu_ifunc && !explicit_loc)
6475         {
6476           struct breakpoint *b = loc->owner;
6477
6478           gdb_assert (loc->pspace == current_program_space);
6479           if (gnu_ifunc_resolve_name (function_name,
6480                                       &loc->requested_address))
6481             {
6482               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6483               loc->address = adjust_breakpoint_address (loc->gdbarch,
6484                                                         loc->requested_address,
6485                                                         b->type);
6486             }
6487           else if (b->type == bp_breakpoint && b->loc == loc
6488                    && loc->next == NULL && b->related_breakpoint == b)
6489             {
6490               /* Create only the whole new breakpoint of this type but do not
6491                  mess more complicated breakpoints with multiple locations.  */
6492               b->type = bp_gnu_ifunc_resolver;
6493             }
6494         }
6495
6496       if (function_name)
6497         loc->function_name = xstrdup (function_name);
6498     }
6499 }
6500
6501 /* Attempt to determine architecture of location identified by SAL.  */
6502 struct gdbarch *
6503 get_sal_arch (struct symtab_and_line sal)
6504 {
6505   if (sal.section)
6506     return get_objfile_arch (sal.section->objfile);
6507   if (sal.symtab)
6508     return get_objfile_arch (sal.symtab->objfile);
6509
6510   return NULL;
6511 }
6512
6513 /* Low level routine for partially initializing a breakpoint of type
6514    BPTYPE.  The newly created breakpoint's address, section, source
6515    file name, and line number are provided by SAL.
6516
6517    It is expected that the caller will complete the initialization of
6518    the newly created breakpoint struct as well as output any status
6519    information regarding the creation of a new breakpoint.  */
6520
6521 static void
6522 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
6523                      struct symtab_and_line sal, enum bptype bptype,
6524                      const struct breakpoint_ops *ops)
6525 {
6526   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6527
6528   add_location_to_breakpoint (b, &sal);
6529
6530   if (bptype != bp_catchpoint)
6531     gdb_assert (sal.pspace != NULL);
6532
6533   /* Store the program space that was used to set the breakpoint,
6534      except for ordinary breakpoints, which are independent of the
6535      program space.  */
6536   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
6537     b->pspace = sal.pspace;
6538
6539   breakpoints_changed ();
6540 }
6541
6542 /* set_raw_breakpoint is a low level routine for allocating and
6543    partially initializing a breakpoint of type BPTYPE.  The newly
6544    created breakpoint's address, section, source file name, and line
6545    number are provided by SAL.  The newly created and partially
6546    initialized breakpoint is added to the breakpoint chain and
6547    is also returned as the value of this function.
6548
6549    It is expected that the caller will complete the initialization of
6550    the newly created breakpoint struct as well as output any status
6551    information regarding the creation of a new breakpoint.  In
6552    particular, set_raw_breakpoint does NOT set the breakpoint
6553    number!  Care should be taken to not allow an error to occur
6554    prior to completing the initialization of the breakpoint.  If this
6555    should happen, a bogus breakpoint will be left on the chain.  */
6556
6557 struct breakpoint *
6558 set_raw_breakpoint (struct gdbarch *gdbarch,
6559                     struct symtab_and_line sal, enum bptype bptype,
6560                     const struct breakpoint_ops *ops)
6561 {
6562   struct breakpoint *b = XNEW (struct breakpoint);
6563
6564   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
6565   add_to_breakpoint_chain (b);
6566   return b;
6567 }
6568
6569
6570 /* Note that the breakpoint object B describes a permanent breakpoint
6571    instruction, hard-wired into the inferior's code.  */
6572 void
6573 make_breakpoint_permanent (struct breakpoint *b)
6574 {
6575   struct bp_location *bl;
6576
6577   b->enable_state = bp_permanent;
6578
6579   /* By definition, permanent breakpoints are already present in the
6580      code.  Mark all locations as inserted.  For now,
6581      make_breakpoint_permanent is called in just one place, so it's
6582      hard to say if it's reasonable to have permanent breakpoint with
6583      multiple locations or not, but it's easy to implement.  */
6584   for (bl = b->loc; bl; bl = bl->next)
6585     bl->inserted = 1;
6586 }
6587
6588 /* Call this routine when stepping and nexting to enable a breakpoint
6589    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
6590    initiated the operation.  */
6591
6592 void
6593 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
6594 {
6595   struct breakpoint *b, *b_tmp;
6596   int thread = tp->num;
6597
6598   /* To avoid having to rescan all objfile symbols at every step,
6599      we maintain a list of continually-inserted but always disabled
6600      longjmp "master" breakpoints.  Here, we simply create momentary
6601      clones of those and enable them for the requested thread.  */
6602   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6603     if (b->pspace == current_program_space
6604         && (b->type == bp_longjmp_master
6605             || b->type == bp_exception_master))
6606       {
6607         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
6608         struct breakpoint *clone;
6609
6610         clone = momentary_breakpoint_from_master (b, type,
6611                                                   &momentary_breakpoint_ops);
6612         clone->thread = thread;
6613       }
6614
6615   tp->initiating_frame = frame;
6616 }
6617
6618 /* Delete all longjmp breakpoints from THREAD.  */
6619 void
6620 delete_longjmp_breakpoint (int thread)
6621 {
6622   struct breakpoint *b, *b_tmp;
6623
6624   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6625     if (b->type == bp_longjmp || b->type == bp_exception)
6626       {
6627         if (b->thread == thread)
6628           delete_breakpoint (b);
6629       }
6630 }
6631
6632 void
6633 delete_longjmp_breakpoint_at_next_stop (int thread)
6634 {
6635   struct breakpoint *b, *b_tmp;
6636
6637   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6638     if (b->type == bp_longjmp || b->type == bp_exception)
6639       {
6640         if (b->thread == thread)
6641           b->disposition = disp_del_at_next_stop;
6642       }
6643 }
6644
6645 void
6646 enable_overlay_breakpoints (void)
6647 {
6648   struct breakpoint *b;
6649
6650   ALL_BREAKPOINTS (b)
6651     if (b->type == bp_overlay_event)
6652     {
6653       b->enable_state = bp_enabled;
6654       update_global_location_list (1);
6655       overlay_events_enabled = 1;
6656     }
6657 }
6658
6659 void
6660 disable_overlay_breakpoints (void)
6661 {
6662   struct breakpoint *b;
6663
6664   ALL_BREAKPOINTS (b)
6665     if (b->type == bp_overlay_event)
6666     {
6667       b->enable_state = bp_disabled;
6668       update_global_location_list (0);
6669       overlay_events_enabled = 0;
6670     }
6671 }
6672
6673 /* Set an active std::terminate breakpoint for each std::terminate
6674    master breakpoint.  */
6675 void
6676 set_std_terminate_breakpoint (void)
6677 {
6678   struct breakpoint *b, *b_tmp;
6679
6680   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6681     if (b->pspace == current_program_space
6682         && b->type == bp_std_terminate_master)
6683       {
6684         momentary_breakpoint_from_master (b, bp_std_terminate,
6685                                           &momentary_breakpoint_ops);
6686       }
6687 }
6688
6689 /* Delete all the std::terminate breakpoints.  */
6690 void
6691 delete_std_terminate_breakpoint (void)
6692 {
6693   struct breakpoint *b, *b_tmp;
6694
6695   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6696     if (b->type == bp_std_terminate)
6697       delete_breakpoint (b);
6698 }
6699
6700 struct breakpoint *
6701 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6702 {
6703   struct breakpoint *b;
6704
6705   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
6706                                   &internal_breakpoint_ops);
6707
6708   b->enable_state = bp_enabled;
6709   /* addr_string has to be used or breakpoint_re_set will delete me.  */
6710   b->addr_string
6711     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
6712
6713   update_global_location_list_nothrow (1);
6714
6715   return b;
6716 }
6717
6718 void
6719 remove_thread_event_breakpoints (void)
6720 {
6721   struct breakpoint *b, *b_tmp;
6722
6723   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6724     if (b->type == bp_thread_event
6725         && b->loc->pspace == current_program_space)
6726       delete_breakpoint (b);
6727 }
6728
6729 struct lang_and_radix
6730   {
6731     enum language lang;
6732     int radix;
6733   };
6734
6735 /* Create a breakpoint for JIT code registration and unregistration.  */
6736
6737 struct breakpoint *
6738 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6739 {
6740   struct breakpoint *b;
6741
6742   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
6743                                   &internal_breakpoint_ops);
6744   update_global_location_list_nothrow (1);
6745   return b;
6746 }
6747
6748 /* Remove JIT code registration and unregistration breakpoint(s).  */
6749
6750 void
6751 remove_jit_event_breakpoints (void)
6752 {
6753   struct breakpoint *b, *b_tmp;
6754
6755   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6756     if (b->type == bp_jit_event
6757         && b->loc->pspace == current_program_space)
6758       delete_breakpoint (b);
6759 }
6760
6761 void
6762 remove_solib_event_breakpoints (void)
6763 {
6764   struct breakpoint *b, *b_tmp;
6765
6766   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6767     if (b->type == bp_shlib_event
6768         && b->loc->pspace == current_program_space)
6769       delete_breakpoint (b);
6770 }
6771
6772 struct breakpoint *
6773 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6774 {
6775   struct breakpoint *b;
6776
6777   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
6778                                   &internal_breakpoint_ops);
6779   update_global_location_list_nothrow (1);
6780   return b;
6781 }
6782
6783 /* Disable any breakpoints that are on code in shared libraries.  Only
6784    apply to enabled breakpoints, disabled ones can just stay disabled.  */
6785
6786 void
6787 disable_breakpoints_in_shlibs (void)
6788 {
6789   struct bp_location *loc, **locp_tmp;
6790
6791   ALL_BP_LOCATIONS (loc, locp_tmp)
6792   {
6793     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6794     struct breakpoint *b = loc->owner;
6795
6796     /* We apply the check to all breakpoints, including disabled for
6797        those with loc->duplicate set.  This is so that when breakpoint
6798        becomes enabled, or the duplicate is removed, gdb will try to
6799        insert all breakpoints.  If we don't set shlib_disabled here,
6800        we'll try to insert those breakpoints and fail.  */
6801     if (((b->type == bp_breakpoint)
6802          || (b->type == bp_jit_event)
6803          || (b->type == bp_hardware_breakpoint)
6804          || (is_tracepoint (b)))
6805         && loc->pspace == current_program_space
6806         && !loc->shlib_disabled
6807 #ifdef PC_SOLIB
6808         && PC_SOLIB (loc->address)
6809 #else
6810         && solib_name_from_address (loc->pspace, loc->address)
6811 #endif
6812         )
6813       {
6814         loc->shlib_disabled = 1;
6815       }
6816   }
6817 }
6818
6819 /* Disable any breakpoints and tracepoints that are in an unloaded shared
6820    library.  Only apply to enabled breakpoints, disabled ones can just stay
6821    disabled.  */
6822
6823 static void
6824 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
6825 {
6826   struct bp_location *loc, **locp_tmp;
6827   int disabled_shlib_breaks = 0;
6828
6829   /* SunOS a.out shared libraries are always mapped, so do not
6830      disable breakpoints; they will only be reported as unloaded
6831      through clear_solib when GDB discards its shared library
6832      list.  See clear_solib for more information.  */
6833   if (exec_bfd != NULL
6834       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
6835     return;
6836
6837   ALL_BP_LOCATIONS (loc, locp_tmp)
6838   {
6839     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6840     struct breakpoint *b = loc->owner;
6841
6842     if (solib->pspace == loc->pspace
6843         && !loc->shlib_disabled
6844         && (((b->type == bp_breakpoint
6845               || b->type == bp_jit_event
6846               || b->type == bp_hardware_breakpoint)
6847              && (loc->loc_type == bp_loc_hardware_breakpoint
6848                  || loc->loc_type == bp_loc_software_breakpoint))
6849             || is_tracepoint (b))
6850         && solib_contains_address_p (solib, loc->address))
6851       {
6852         loc->shlib_disabled = 1;
6853         /* At this point, we cannot rely on remove_breakpoint
6854            succeeding so we must mark the breakpoint as not inserted
6855            to prevent future errors occurring in remove_breakpoints.  */
6856         loc->inserted = 0;
6857
6858         /* This may cause duplicate notifications for the same breakpoint.  */
6859         observer_notify_breakpoint_modified (b);
6860
6861         if (!disabled_shlib_breaks)
6862           {
6863             target_terminal_ours_for_output ();
6864             warning (_("Temporarily disabling breakpoints "
6865                        "for unloaded shared library \"%s\""),
6866                      solib->so_name);
6867           }
6868         disabled_shlib_breaks = 1;
6869       }
6870   }
6871 }
6872
6873 /* FORK & VFORK catchpoints.  */
6874
6875 /* An instance of this type is used to represent a fork or vfork
6876    catchpoint.  It includes a "struct breakpoint" as a kind of base
6877    class; users downcast to "struct breakpoint *" when needed.  A
6878    breakpoint is really of this type iff its ops pointer points to
6879    CATCH_FORK_BREAKPOINT_OPS.  */
6880
6881 struct fork_catchpoint
6882 {
6883   /* The base class.  */
6884   struct breakpoint base;
6885
6886   /* Process id of a child process whose forking triggered this
6887      catchpoint.  This field is only valid immediately after this
6888      catchpoint has triggered.  */
6889   ptid_t forked_inferior_pid;
6890 };
6891
6892 /* Implement the "insert" breakpoint_ops method for fork
6893    catchpoints.  */
6894
6895 static int
6896 insert_catch_fork (struct bp_location *bl)
6897 {
6898   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
6899 }
6900
6901 /* Implement the "remove" breakpoint_ops method for fork
6902    catchpoints.  */
6903
6904 static int
6905 remove_catch_fork (struct bp_location *bl)
6906 {
6907   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
6908 }
6909
6910 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
6911    catchpoints.  */
6912
6913 static int
6914 breakpoint_hit_catch_fork (const struct bp_location *bl,
6915                            struct address_space *aspace, CORE_ADDR bp_addr,
6916                            const struct target_waitstatus *ws)
6917 {
6918   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
6919
6920   if (ws->kind != TARGET_WAITKIND_FORKED)
6921     return 0;
6922
6923   c->forked_inferior_pid = ws->value.related_pid;
6924   return 1;
6925 }
6926
6927 /* Implement the "print_it" breakpoint_ops method for fork
6928    catchpoints.  */
6929
6930 static enum print_stop_action
6931 print_it_catch_fork (bpstat bs)
6932 {
6933   struct ui_out *uiout = current_uiout;
6934   struct breakpoint *b = bs->breakpoint_at;
6935   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
6936
6937   annotate_catchpoint (b->number);
6938   if (b->disposition == disp_del)
6939     ui_out_text (uiout, "\nTemporary catchpoint ");
6940   else
6941     ui_out_text (uiout, "\nCatchpoint ");
6942   if (ui_out_is_mi_like_p (uiout))
6943     {
6944       ui_out_field_string (uiout, "reason",
6945                            async_reason_lookup (EXEC_ASYNC_FORK));
6946       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6947     }
6948   ui_out_field_int (uiout, "bkptno", b->number);
6949   ui_out_text (uiout, " (forked process ");
6950   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
6951   ui_out_text (uiout, "), ");
6952   return PRINT_SRC_AND_LOC;
6953 }
6954
6955 /* Implement the "print_one" breakpoint_ops method for fork
6956    catchpoints.  */
6957
6958 static void
6959 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
6960 {
6961   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
6962   struct value_print_options opts;
6963   struct ui_out *uiout = current_uiout;
6964
6965   get_user_print_options (&opts);
6966
6967   /* Field 4, the address, is omitted (which makes the columns not
6968      line up too nicely with the headers, but the effect is relatively
6969      readable).  */
6970   if (opts.addressprint)
6971     ui_out_field_skip (uiout, "addr");
6972   annotate_field (5);
6973   ui_out_text (uiout, "fork");
6974   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
6975     {
6976       ui_out_text (uiout, ", process ");
6977       ui_out_field_int (uiout, "what",
6978                         ptid_get_pid (c->forked_inferior_pid));
6979       ui_out_spaces (uiout, 1);
6980     }
6981 }
6982
6983 /* Implement the "print_mention" breakpoint_ops method for fork
6984    catchpoints.  */
6985
6986 static void
6987 print_mention_catch_fork (struct breakpoint *b)
6988 {
6989   printf_filtered (_("Catchpoint %d (fork)"), b->number);
6990 }
6991
6992 /* Implement the "print_recreate" breakpoint_ops method for fork
6993    catchpoints.  */
6994
6995 static void
6996 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
6997 {
6998   fprintf_unfiltered (fp, "catch fork");
6999   print_recreate_thread (b, fp);
7000 }
7001
7002 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7003
7004 static struct breakpoint_ops catch_fork_breakpoint_ops;
7005
7006 /* Implement the "insert" breakpoint_ops method for vfork
7007    catchpoints.  */
7008
7009 static int
7010 insert_catch_vfork (struct bp_location *bl)
7011 {
7012   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7013 }
7014
7015 /* Implement the "remove" breakpoint_ops method for vfork
7016    catchpoints.  */
7017
7018 static int
7019 remove_catch_vfork (struct bp_location *bl)
7020 {
7021   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7022 }
7023
7024 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7025    catchpoints.  */
7026
7027 static int
7028 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7029                             struct address_space *aspace, CORE_ADDR bp_addr,
7030                             const struct target_waitstatus *ws)
7031 {
7032   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7033
7034   if (ws->kind != TARGET_WAITKIND_VFORKED)
7035     return 0;
7036
7037   c->forked_inferior_pid = ws->value.related_pid;
7038   return 1;
7039 }
7040
7041 /* Implement the "print_it" breakpoint_ops method for vfork
7042    catchpoints.  */
7043
7044 static enum print_stop_action
7045 print_it_catch_vfork (bpstat bs)
7046 {
7047   struct ui_out *uiout = current_uiout;
7048   struct breakpoint *b = bs->breakpoint_at;
7049   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7050
7051   annotate_catchpoint (b->number);
7052   if (b->disposition == disp_del)
7053     ui_out_text (uiout, "\nTemporary catchpoint ");
7054   else
7055     ui_out_text (uiout, "\nCatchpoint ");
7056   if (ui_out_is_mi_like_p (uiout))
7057     {
7058       ui_out_field_string (uiout, "reason",
7059                            async_reason_lookup (EXEC_ASYNC_VFORK));
7060       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7061     }
7062   ui_out_field_int (uiout, "bkptno", b->number);
7063   ui_out_text (uiout, " (vforked process ");
7064   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7065   ui_out_text (uiout, "), ");
7066   return PRINT_SRC_AND_LOC;
7067 }
7068
7069 /* Implement the "print_one" breakpoint_ops method for vfork
7070    catchpoints.  */
7071
7072 static void
7073 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7074 {
7075   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7076   struct value_print_options opts;
7077   struct ui_out *uiout = current_uiout;
7078
7079   get_user_print_options (&opts);
7080   /* Field 4, the address, is omitted (which makes the columns not
7081      line up too nicely with the headers, but the effect is relatively
7082      readable).  */
7083   if (opts.addressprint)
7084     ui_out_field_skip (uiout, "addr");
7085   annotate_field (5);
7086   ui_out_text (uiout, "vfork");
7087   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7088     {
7089       ui_out_text (uiout, ", process ");
7090       ui_out_field_int (uiout, "what",
7091                         ptid_get_pid (c->forked_inferior_pid));
7092       ui_out_spaces (uiout, 1);
7093     }
7094 }
7095
7096 /* Implement the "print_mention" breakpoint_ops method for vfork
7097    catchpoints.  */
7098
7099 static void
7100 print_mention_catch_vfork (struct breakpoint *b)
7101 {
7102   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7103 }
7104
7105 /* Implement the "print_recreate" breakpoint_ops method for vfork
7106    catchpoints.  */
7107
7108 static void
7109 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7110 {
7111   fprintf_unfiltered (fp, "catch vfork");
7112   print_recreate_thread (b, fp);
7113 }
7114
7115 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7116
7117 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7118
7119 /* An instance of this type is used to represent an solib catchpoint.
7120    It includes a "struct breakpoint" as a kind of base class; users
7121    downcast to "struct breakpoint *" when needed.  A breakpoint is
7122    really of this type iff its ops pointer points to
7123    CATCH_SOLIB_BREAKPOINT_OPS.  */
7124
7125 struct solib_catchpoint
7126 {
7127   /* The base class.  */
7128   struct breakpoint base;
7129
7130   /* True for "catch load", false for "catch unload".  */
7131   unsigned char is_load;
7132
7133   /* Regular expression to match, if any.  COMPILED is only valid when
7134      REGEX is non-NULL.  */
7135   char *regex;
7136   regex_t compiled;
7137 };
7138
7139 static void
7140 dtor_catch_solib (struct breakpoint *b)
7141 {
7142   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7143
7144   if (self->regex)
7145     regfree (&self->compiled);
7146   xfree (self->regex);
7147
7148   base_breakpoint_ops.dtor (b);
7149 }
7150
7151 static int
7152 insert_catch_solib (struct bp_location *ignore)
7153 {
7154   return 0;
7155 }
7156
7157 static int
7158 remove_catch_solib (struct bp_location *ignore)
7159 {
7160   return 0;
7161 }
7162
7163 static int
7164 breakpoint_hit_catch_solib (const struct bp_location *bl,
7165                             struct address_space *aspace,
7166                             CORE_ADDR bp_addr,
7167                             const struct target_waitstatus *ws)
7168 {
7169   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7170   struct breakpoint *other;
7171
7172   if (ws->kind == TARGET_WAITKIND_LOADED)
7173     return 1;
7174
7175   ALL_BREAKPOINTS (other)
7176   {
7177     struct bp_location *other_bl;
7178
7179     if (other == bl->owner)
7180       continue;
7181
7182     if (other->type != bp_shlib_event)
7183       continue;
7184
7185     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7186       continue;
7187
7188     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7189       {
7190         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7191           return 1;
7192       }
7193   }
7194
7195   return 0;
7196 }
7197
7198 static void
7199 check_status_catch_solib (struct bpstats *bs)
7200 {
7201   struct solib_catchpoint *self
7202     = (struct solib_catchpoint *) bs->breakpoint_at;
7203   int ix;
7204
7205   if (self->is_load)
7206     {
7207       struct so_list *iter;
7208
7209       for (ix = 0;
7210            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7211                         ix, iter);
7212            ++ix)
7213         {
7214           if (!self->regex
7215               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7216             return;
7217         }
7218     }
7219   else
7220     {
7221       char *iter;
7222
7223       for (ix = 0;
7224            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7225                         ix, iter);
7226            ++ix)
7227         {
7228           if (!self->regex
7229               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7230             return;
7231         }
7232     }
7233
7234   bs->stop = 0;
7235   bs->print_it = print_it_noop;
7236 }
7237
7238 static enum print_stop_action
7239 print_it_catch_solib (bpstat bs)
7240 {
7241   struct breakpoint *b = bs->breakpoint_at;
7242   struct ui_out *uiout = current_uiout;
7243
7244   annotate_catchpoint (b->number);
7245   if (b->disposition == disp_del)
7246     ui_out_text (uiout, "\nTemporary catchpoint ");
7247   else
7248     ui_out_text (uiout, "\nCatchpoint ");
7249   ui_out_field_int (uiout, "bkptno", b->number);
7250   ui_out_text (uiout, "\n");
7251   if (ui_out_is_mi_like_p (uiout))
7252     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7253   print_solib_event (1);
7254   return PRINT_SRC_AND_LOC;
7255 }
7256
7257 static void
7258 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7259 {
7260   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7261   struct value_print_options opts;
7262   struct ui_out *uiout = current_uiout;
7263   char *msg;
7264
7265   get_user_print_options (&opts);
7266   /* Field 4, the address, is omitted (which makes the columns not
7267      line up too nicely with the headers, but the effect is relatively
7268      readable).  */
7269   if (opts.addressprint)
7270     {
7271       annotate_field (4);
7272       ui_out_field_skip (uiout, "addr");
7273     }
7274
7275   annotate_field (5);
7276   if (self->is_load)
7277     {
7278       if (self->regex)
7279         msg = xstrprintf (_("load of library matching %s"), self->regex);
7280       else
7281         msg = xstrdup (_("load of library"));
7282     }
7283   else
7284     {
7285       if (self->regex)
7286         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7287       else
7288         msg = xstrdup (_("unload of library"));
7289     }
7290   ui_out_field_string (uiout, "what", msg);
7291   xfree (msg);
7292 }
7293
7294 static void
7295 print_mention_catch_solib (struct breakpoint *b)
7296 {
7297   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7298
7299   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7300                    self->is_load ? "load" : "unload");
7301 }
7302
7303 static void
7304 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7305 {
7306   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7307
7308   fprintf_unfiltered (fp, "%s %s",
7309                       b->disposition == disp_del ? "tcatch" : "catch",
7310                       self->is_load ? "load" : "unload");
7311   if (self->regex)
7312     fprintf_unfiltered (fp, " %s", self->regex);
7313   fprintf_unfiltered (fp, "\n");
7314 }
7315
7316 static struct breakpoint_ops catch_solib_breakpoint_ops;
7317
7318 /* A helper function that does all the work for "catch load" and
7319    "catch unload".  */
7320
7321 static void
7322 catch_load_or_unload (char *arg, int from_tty, int is_load,
7323                       struct cmd_list_element *command)
7324 {
7325   struct solib_catchpoint *c;
7326   struct gdbarch *gdbarch = get_current_arch ();
7327   int tempflag;
7328   regex_t compiled;
7329   struct cleanup *cleanup;
7330
7331   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7332
7333   if (!arg)
7334     arg = "";
7335   arg = skip_spaces (arg);
7336
7337   c = XCNEW (struct solib_catchpoint);
7338   cleanup = make_cleanup (xfree, c);
7339
7340   if (*arg != '\0')
7341     {
7342       int errcode;
7343
7344       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7345       if (errcode != 0)
7346         {
7347           char *err = get_regcomp_error (errcode, &c->compiled);
7348
7349           make_cleanup (xfree, err);
7350           error (_("Invalid regexp (%s): %s"), err, arg);
7351         }
7352       c->regex = xstrdup (arg);
7353     }
7354
7355   c->is_load = is_load;
7356   init_catchpoint (&c->base, gdbarch, tempflag, NULL,
7357                    &catch_solib_breakpoint_ops);
7358
7359   discard_cleanups (cleanup);
7360   install_breakpoint (0, &c->base, 1);
7361 }
7362
7363 static void
7364 catch_load_command_1 (char *arg, int from_tty,
7365                       struct cmd_list_element *command)
7366 {
7367   catch_load_or_unload (arg, from_tty, 1, command);
7368 }
7369
7370 static void
7371 catch_unload_command_1 (char *arg, int from_tty,
7372                         struct cmd_list_element *command)
7373 {
7374   catch_load_or_unload (arg, from_tty, 0, command);
7375 }
7376
7377 /* An instance of this type is used to represent a syscall catchpoint.
7378    It includes a "struct breakpoint" as a kind of base class; users
7379    downcast to "struct breakpoint *" when needed.  A breakpoint is
7380    really of this type iff its ops pointer points to
7381    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7382
7383 struct syscall_catchpoint
7384 {
7385   /* The base class.  */
7386   struct breakpoint base;
7387
7388   /* Syscall numbers used for the 'catch syscall' feature.  If no
7389      syscall has been specified for filtering, its value is NULL.
7390      Otherwise, it holds a list of all syscalls to be caught.  The
7391      list elements are allocated with xmalloc.  */
7392   VEC(int) *syscalls_to_be_caught;
7393 };
7394
7395 /* Implement the "dtor" breakpoint_ops method for syscall
7396    catchpoints.  */
7397
7398 static void
7399 dtor_catch_syscall (struct breakpoint *b)
7400 {
7401   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7402
7403   VEC_free (int, c->syscalls_to_be_caught);
7404
7405   base_breakpoint_ops.dtor (b);
7406 }
7407
7408 /* Implement the "insert" breakpoint_ops method for syscall
7409    catchpoints.  */
7410
7411 static int
7412 insert_catch_syscall (struct bp_location *bl)
7413 {
7414   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7415   struct inferior *inf = current_inferior ();
7416
7417   ++inf->total_syscalls_count;
7418   if (!c->syscalls_to_be_caught)
7419     ++inf->any_syscall_count;
7420   else
7421     {
7422       int i, iter;
7423
7424       for (i = 0;
7425            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7426            i++)
7427         {
7428           int elem;
7429
7430           if (iter >= VEC_length (int, inf->syscalls_counts))
7431             {
7432               int old_size = VEC_length (int, inf->syscalls_counts);
7433               uintptr_t vec_addr_offset
7434                 = old_size * ((uintptr_t) sizeof (int));
7435               uintptr_t vec_addr;
7436               VEC_safe_grow (int, inf->syscalls_counts, iter + 1);
7437               vec_addr = (uintptr_t) VEC_address (int, inf->syscalls_counts) +
7438                 vec_addr_offset;
7439               memset ((void *) vec_addr, 0,
7440                       (iter + 1 - old_size) * sizeof (int));
7441             }
7442           elem = VEC_index (int, inf->syscalls_counts, iter);
7443           VEC_replace (int, inf->syscalls_counts, iter, ++elem);
7444         }
7445     }
7446
7447   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
7448                                         inf->total_syscalls_count != 0,
7449                                         inf->any_syscall_count,
7450                                         VEC_length (int, inf->syscalls_counts),
7451                                         VEC_address (int, inf->syscalls_counts));
7452 }
7453
7454 /* Implement the "remove" breakpoint_ops method for syscall
7455    catchpoints.  */
7456
7457 static int
7458 remove_catch_syscall (struct bp_location *bl)
7459 {
7460   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7461   struct inferior *inf = current_inferior ();
7462
7463   --inf->total_syscalls_count;
7464   if (!c->syscalls_to_be_caught)
7465     --inf->any_syscall_count;
7466   else
7467     {
7468       int i, iter;
7469
7470       for (i = 0;
7471            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7472            i++)
7473         {
7474           int elem;
7475           if (iter >= VEC_length (int, inf->syscalls_counts))
7476             /* Shouldn't happen.  */
7477             continue;
7478           elem = VEC_index (int, inf->syscalls_counts, iter);
7479           VEC_replace (int, inf->syscalls_counts, iter, --elem);
7480         }
7481     }
7482
7483   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
7484                                         inf->total_syscalls_count != 0,
7485                                         inf->any_syscall_count,
7486                                         VEC_length (int, inf->syscalls_counts),
7487                                         VEC_address (int,
7488                                                      inf->syscalls_counts));
7489 }
7490
7491 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
7492    catchpoints.  */
7493
7494 static int
7495 breakpoint_hit_catch_syscall (const struct bp_location *bl,
7496                               struct address_space *aspace, CORE_ADDR bp_addr,
7497                               const struct target_waitstatus *ws)
7498 {
7499   /* We must check if we are catching specific syscalls in this
7500      breakpoint.  If we are, then we must guarantee that the called
7501      syscall is the same syscall we are catching.  */
7502   int syscall_number = 0;
7503   const struct syscall_catchpoint *c
7504     = (const struct syscall_catchpoint *) bl->owner;
7505
7506   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
7507       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
7508     return 0;
7509
7510   syscall_number = ws->value.syscall_number;
7511
7512   /* Now, checking if the syscall is the same.  */
7513   if (c->syscalls_to_be_caught)
7514     {
7515       int i, iter;
7516
7517       for (i = 0;
7518            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7519            i++)
7520         if (syscall_number == iter)
7521           break;
7522       /* Not the same.  */
7523       if (!iter)
7524         return 0;
7525     }
7526
7527   return 1;
7528 }
7529
7530 /* Implement the "print_it" breakpoint_ops method for syscall
7531    catchpoints.  */
7532
7533 static enum print_stop_action
7534 print_it_catch_syscall (bpstat bs)
7535 {
7536   struct ui_out *uiout = current_uiout;
7537   struct breakpoint *b = bs->breakpoint_at;
7538   /* These are needed because we want to know in which state a
7539      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
7540      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
7541      must print "called syscall" or "returned from syscall".  */
7542   ptid_t ptid;
7543   struct target_waitstatus last;
7544   struct syscall s;
7545   char *syscall_id;
7546
7547   get_last_target_status (&ptid, &last);
7548
7549   get_syscall_by_number (last.value.syscall_number, &s);
7550
7551   annotate_catchpoint (b->number);
7552
7553   if (b->disposition == disp_del)
7554     ui_out_text (uiout, "\nTemporary catchpoint ");
7555   else
7556     ui_out_text (uiout, "\nCatchpoint ");
7557   if (ui_out_is_mi_like_p (uiout))
7558     {
7559       ui_out_field_string (uiout, "reason",
7560                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
7561                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
7562                                                 : EXEC_ASYNC_SYSCALL_RETURN));
7563       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7564     }
7565   ui_out_field_int (uiout, "bkptno", b->number);
7566
7567   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
7568     ui_out_text (uiout, " (call to syscall ");
7569   else
7570     ui_out_text (uiout, " (returned from syscall ");
7571
7572   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
7573     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
7574   if (s.name != NULL)
7575     ui_out_field_string (uiout, "syscall-name", s.name);
7576
7577   ui_out_text (uiout, "), ");
7578
7579   return PRINT_SRC_AND_LOC;
7580 }
7581
7582 /* Implement the "print_one" breakpoint_ops method for syscall
7583    catchpoints.  */
7584
7585 static void
7586 print_one_catch_syscall (struct breakpoint *b,
7587                          struct bp_location **last_loc)
7588 {
7589   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7590   struct value_print_options opts;
7591   struct ui_out *uiout = current_uiout;
7592
7593   get_user_print_options (&opts);
7594   /* Field 4, the address, is omitted (which makes the columns not
7595      line up too nicely with the headers, but the effect is relatively
7596      readable).  */
7597   if (opts.addressprint)
7598     ui_out_field_skip (uiout, "addr");
7599   annotate_field (5);
7600
7601   if (c->syscalls_to_be_caught
7602       && VEC_length (int, c->syscalls_to_be_caught) > 1)
7603     ui_out_text (uiout, "syscalls \"");
7604   else
7605     ui_out_text (uiout, "syscall \"");
7606
7607   if (c->syscalls_to_be_caught)
7608     {
7609       int i, iter;
7610       char *text = xstrprintf ("%s", "");
7611
7612       for (i = 0;
7613            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7614            i++)
7615         {
7616           char *x = text;
7617           struct syscall s;
7618           get_syscall_by_number (iter, &s);
7619
7620           if (s.name != NULL)
7621             text = xstrprintf ("%s%s, ", text, s.name);
7622           else
7623             text = xstrprintf ("%s%d, ", text, iter);
7624
7625           /* We have to xfree the last 'text' (now stored at 'x')
7626              because xstrprintf dynamically allocates new space for it
7627              on every call.  */
7628           xfree (x);
7629         }
7630       /* Remove the last comma.  */
7631       text[strlen (text) - 2] = '\0';
7632       ui_out_field_string (uiout, "what", text);
7633     }
7634   else
7635     ui_out_field_string (uiout, "what", "<any syscall>");
7636   ui_out_text (uiout, "\" ");
7637 }
7638
7639 /* Implement the "print_mention" breakpoint_ops method for syscall
7640    catchpoints.  */
7641
7642 static void
7643 print_mention_catch_syscall (struct breakpoint *b)
7644 {
7645   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7646
7647   if (c->syscalls_to_be_caught)
7648     {
7649       int i, iter;
7650
7651       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
7652         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
7653       else
7654         printf_filtered (_("Catchpoint %d (syscall"), b->number);
7655
7656       for (i = 0;
7657            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7658            i++)
7659         {
7660           struct syscall s;
7661           get_syscall_by_number (iter, &s);
7662
7663           if (s.name)
7664             printf_filtered (" '%s' [%d]", s.name, s.number);
7665           else
7666             printf_filtered (" %d", s.number);
7667         }
7668       printf_filtered (")");
7669     }
7670   else
7671     printf_filtered (_("Catchpoint %d (any syscall)"),
7672                      b->number);
7673 }
7674
7675 /* Implement the "print_recreate" breakpoint_ops method for syscall
7676    catchpoints.  */
7677
7678 static void
7679 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
7680 {
7681   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7682
7683   fprintf_unfiltered (fp, "catch syscall");
7684
7685   if (c->syscalls_to_be_caught)
7686     {
7687       int i, iter;
7688
7689       for (i = 0;
7690            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7691            i++)
7692         {
7693           struct syscall s;
7694
7695           get_syscall_by_number (iter, &s);
7696           if (s.name)
7697             fprintf_unfiltered (fp, " %s", s.name);
7698           else
7699             fprintf_unfiltered (fp, " %d", s.number);
7700         }
7701     }
7702   print_recreate_thread (b, fp);
7703 }
7704
7705 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
7706
7707 static struct breakpoint_ops catch_syscall_breakpoint_ops;
7708
7709 /* Returns non-zero if 'b' is a syscall catchpoint.  */
7710
7711 static int
7712 syscall_catchpoint_p (struct breakpoint *b)
7713 {
7714   return (b->ops == &catch_syscall_breakpoint_ops);
7715 }
7716
7717 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
7718    is non-zero, then make the breakpoint temporary.  If COND_STRING is
7719    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
7720    the breakpoint_ops structure associated to the catchpoint.  */
7721
7722 static void
7723 init_catchpoint (struct breakpoint *b,
7724                  struct gdbarch *gdbarch, int tempflag,
7725                  char *cond_string,
7726                  const struct breakpoint_ops *ops)
7727 {
7728   struct symtab_and_line sal;
7729
7730   init_sal (&sal);
7731   sal.pspace = current_program_space;
7732
7733   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
7734
7735   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
7736   b->disposition = tempflag ? disp_del : disp_donttouch;
7737 }
7738
7739 void
7740 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
7741 {
7742   add_to_breakpoint_chain (b);
7743   set_breakpoint_number (internal, b);
7744   if (!internal)
7745     mention (b);
7746   observer_notify_breakpoint_created (b);
7747
7748   if (update_gll)
7749     update_global_location_list (1);
7750 }
7751
7752 static void
7753 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
7754                                     int tempflag, char *cond_string,
7755                                     const struct breakpoint_ops *ops)
7756 {
7757   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
7758
7759   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
7760
7761   c->forked_inferior_pid = null_ptid;
7762
7763   install_breakpoint (0, &c->base, 1);
7764 }
7765
7766 /* Exec catchpoints.  */
7767
7768 /* An instance of this type is used to represent an exec catchpoint.
7769    It includes a "struct breakpoint" as a kind of base class; users
7770    downcast to "struct breakpoint *" when needed.  A breakpoint is
7771    really of this type iff its ops pointer points to
7772    CATCH_EXEC_BREAKPOINT_OPS.  */
7773
7774 struct exec_catchpoint
7775 {
7776   /* The base class.  */
7777   struct breakpoint base;
7778
7779   /* Filename of a program whose exec triggered this catchpoint.
7780      This field is only valid immediately after this catchpoint has
7781      triggered.  */
7782   char *exec_pathname;
7783 };
7784
7785 /* Implement the "dtor" breakpoint_ops method for exec
7786    catchpoints.  */
7787
7788 static void
7789 dtor_catch_exec (struct breakpoint *b)
7790 {
7791   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
7792
7793   xfree (c->exec_pathname);
7794
7795   base_breakpoint_ops.dtor (b);
7796 }
7797
7798 static int
7799 insert_catch_exec (struct bp_location *bl)
7800 {
7801   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
7802 }
7803
7804 static int
7805 remove_catch_exec (struct bp_location *bl)
7806 {
7807   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
7808 }
7809
7810 static int
7811 breakpoint_hit_catch_exec (const struct bp_location *bl,
7812                            struct address_space *aspace, CORE_ADDR bp_addr,
7813                            const struct target_waitstatus *ws)
7814 {
7815   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
7816
7817   if (ws->kind != TARGET_WAITKIND_EXECD)
7818     return 0;
7819
7820   c->exec_pathname = xstrdup (ws->value.execd_pathname);
7821   return 1;
7822 }
7823
7824 static enum print_stop_action
7825 print_it_catch_exec (bpstat bs)
7826 {
7827   struct ui_out *uiout = current_uiout;
7828   struct breakpoint *b = bs->breakpoint_at;
7829   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
7830
7831   annotate_catchpoint (b->number);
7832   if (b->disposition == disp_del)
7833     ui_out_text (uiout, "\nTemporary catchpoint ");
7834   else
7835     ui_out_text (uiout, "\nCatchpoint ");
7836   if (ui_out_is_mi_like_p (uiout))
7837     {
7838       ui_out_field_string (uiout, "reason",
7839                            async_reason_lookup (EXEC_ASYNC_EXEC));
7840       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7841     }
7842   ui_out_field_int (uiout, "bkptno", b->number);
7843   ui_out_text (uiout, " (exec'd ");
7844   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
7845   ui_out_text (uiout, "), ");
7846
7847   return PRINT_SRC_AND_LOC;
7848 }
7849
7850 static void
7851 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
7852 {
7853   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
7854   struct value_print_options opts;
7855   struct ui_out *uiout = current_uiout;
7856
7857   get_user_print_options (&opts);
7858
7859   /* Field 4, the address, is omitted (which makes the columns
7860      not line up too nicely with the headers, but the effect
7861      is relatively readable).  */
7862   if (opts.addressprint)
7863     ui_out_field_skip (uiout, "addr");
7864   annotate_field (5);
7865   ui_out_text (uiout, "exec");
7866   if (c->exec_pathname != NULL)
7867     {
7868       ui_out_text (uiout, ", program \"");
7869       ui_out_field_string (uiout, "what", c->exec_pathname);
7870       ui_out_text (uiout, "\" ");
7871     }
7872 }
7873
7874 static void
7875 print_mention_catch_exec (struct breakpoint *b)
7876 {
7877   printf_filtered (_("Catchpoint %d (exec)"), b->number);
7878 }
7879
7880 /* Implement the "print_recreate" breakpoint_ops method for exec
7881    catchpoints.  */
7882
7883 static void
7884 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
7885 {
7886   fprintf_unfiltered (fp, "catch exec");
7887   print_recreate_thread (b, fp);
7888 }
7889
7890 static struct breakpoint_ops catch_exec_breakpoint_ops;
7891
7892 static void
7893 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
7894                                  const struct breakpoint_ops *ops)
7895 {
7896   struct syscall_catchpoint *c;
7897   struct gdbarch *gdbarch = get_current_arch ();
7898
7899   c = XNEW (struct syscall_catchpoint);
7900   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
7901   c->syscalls_to_be_caught = filter;
7902
7903   install_breakpoint (0, &c->base, 1);
7904 }
7905
7906 static int
7907 hw_breakpoint_used_count (void)
7908 {
7909   int i = 0;
7910   struct breakpoint *b;
7911   struct bp_location *bl;
7912
7913   ALL_BREAKPOINTS (b)
7914   {
7915     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
7916       for (bl = b->loc; bl; bl = bl->next)
7917         {
7918           /* Special types of hardware breakpoints may use more than
7919              one register.  */
7920           i += b->ops->resources_needed (bl);
7921         }
7922   }
7923
7924   return i;
7925 }
7926
7927 /* Returns the resources B would use if it were a hardware
7928    watchpoint.  */
7929
7930 static int
7931 hw_watchpoint_use_count (struct breakpoint *b)
7932 {
7933   int i = 0;
7934   struct bp_location *bl;
7935
7936   if (!breakpoint_enabled (b))
7937     return 0;
7938
7939   for (bl = b->loc; bl; bl = bl->next)
7940     {
7941       /* Special types of hardware watchpoints may use more than
7942          one register.  */
7943       i += b->ops->resources_needed (bl);
7944     }
7945
7946   return i;
7947 }
7948
7949 /* Returns the sum the used resources of all hardware watchpoints of
7950    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
7951    the sum of the used resources of all hardware watchpoints of other
7952    types _not_ TYPE.  */
7953
7954 static int
7955 hw_watchpoint_used_count_others (struct breakpoint *except,
7956                                  enum bptype type, int *other_type_used)
7957 {
7958   int i = 0;
7959   struct breakpoint *b;
7960
7961   *other_type_used = 0;
7962   ALL_BREAKPOINTS (b)
7963     {
7964       if (b == except)
7965         continue;
7966       if (!breakpoint_enabled (b))
7967         continue;
7968
7969       if (b->type == type)
7970         i += hw_watchpoint_use_count (b);
7971       else if (is_hardware_watchpoint (b))
7972         *other_type_used = 1;
7973     }
7974
7975   return i;
7976 }
7977
7978 void
7979 disable_watchpoints_before_interactive_call_start (void)
7980 {
7981   struct breakpoint *b;
7982
7983   ALL_BREAKPOINTS (b)
7984   {
7985     if (is_watchpoint (b) && breakpoint_enabled (b))
7986       {
7987         b->enable_state = bp_call_disabled;
7988         update_global_location_list (0);
7989       }
7990   }
7991 }
7992
7993 void
7994 enable_watchpoints_after_interactive_call_stop (void)
7995 {
7996   struct breakpoint *b;
7997
7998   ALL_BREAKPOINTS (b)
7999   {
8000     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8001       {
8002         b->enable_state = bp_enabled;
8003         update_global_location_list (1);
8004       }
8005   }
8006 }
8007
8008 void
8009 disable_breakpoints_before_startup (void)
8010 {
8011   current_program_space->executing_startup = 1;
8012   update_global_location_list (0);
8013 }
8014
8015 void
8016 enable_breakpoints_after_startup (void)
8017 {
8018   current_program_space->executing_startup = 0;
8019   breakpoint_re_set ();
8020 }
8021
8022
8023 /* Set a breakpoint that will evaporate an end of command
8024    at address specified by SAL.
8025    Restrict it to frame FRAME if FRAME is nonzero.  */
8026
8027 struct breakpoint *
8028 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8029                           struct frame_id frame_id, enum bptype type)
8030 {
8031   struct breakpoint *b;
8032
8033   /* If FRAME_ID is valid, it should be a real frame, not an inlined
8034      one.  */
8035   gdb_assert (!frame_id_inlined_p (frame_id));
8036
8037   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8038   b->enable_state = bp_enabled;
8039   b->disposition = disp_donttouch;
8040   b->frame_id = frame_id;
8041
8042   /* If we're debugging a multi-threaded program, then we want
8043      momentary breakpoints to be active in only a single thread of
8044      control.  */
8045   if (in_thread_list (inferior_ptid))
8046     b->thread = pid_to_thread_id (inferior_ptid);
8047
8048   update_global_location_list_nothrow (1);
8049
8050   return b;
8051 }
8052
8053 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8054    The new breakpoint will have type TYPE, and use OPS as it
8055    breakpoint_ops.  */
8056
8057 static struct breakpoint *
8058 momentary_breakpoint_from_master (struct breakpoint *orig,
8059                                   enum bptype type,
8060                                   const struct breakpoint_ops *ops)
8061 {
8062   struct breakpoint *copy;
8063
8064   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8065   copy->loc = allocate_bp_location (copy);
8066   set_breakpoint_location_function (copy->loc, 1);
8067
8068   copy->loc->gdbarch = orig->loc->gdbarch;
8069   copy->loc->requested_address = orig->loc->requested_address;
8070   copy->loc->address = orig->loc->address;
8071   copy->loc->section = orig->loc->section;
8072   copy->loc->pspace = orig->loc->pspace;
8073
8074   if (orig->loc->source_file != NULL)
8075     copy->loc->source_file = xstrdup (orig->loc->source_file);
8076
8077   copy->loc->line_number = orig->loc->line_number;
8078   copy->frame_id = orig->frame_id;
8079   copy->thread = orig->thread;
8080   copy->pspace = orig->pspace;
8081
8082   copy->enable_state = bp_enabled;
8083   copy->disposition = disp_donttouch;
8084   copy->number = internal_breakpoint_number--;
8085
8086   update_global_location_list_nothrow (0);
8087   return copy;
8088 }
8089
8090 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8091    ORIG is NULL.  */
8092
8093 struct breakpoint *
8094 clone_momentary_breakpoint (struct breakpoint *orig)
8095 {
8096   /* If there's nothing to clone, then return nothing.  */
8097   if (orig == NULL)
8098     return NULL;
8099
8100   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8101 }
8102
8103 struct breakpoint *
8104 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8105                                 enum bptype type)
8106 {
8107   struct symtab_and_line sal;
8108
8109   sal = find_pc_line (pc, 0);
8110   sal.pc = pc;
8111   sal.section = find_pc_overlay (pc);
8112   sal.explicit_pc = 1;
8113
8114   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8115 }
8116 \f
8117
8118 /* Tell the user we have just set a breakpoint B.  */
8119
8120 static void
8121 mention (struct breakpoint *b)
8122 {
8123   b->ops->print_mention (b);
8124   if (ui_out_is_mi_like_p (current_uiout))
8125     return;
8126   printf_filtered ("\n");
8127 }
8128 \f
8129
8130 static struct bp_location *
8131 add_location_to_breakpoint (struct breakpoint *b,
8132                             const struct symtab_and_line *sal)
8133 {
8134   struct bp_location *loc, **tmp;
8135   CORE_ADDR adjusted_address;
8136   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8137
8138   if (loc_gdbarch == NULL)
8139     loc_gdbarch = b->gdbarch;
8140
8141   /* Adjust the breakpoint's address prior to allocating a location.
8142      Once we call allocate_bp_location(), that mostly uninitialized
8143      location will be placed on the location chain.  Adjustment of the
8144      breakpoint may cause target_read_memory() to be called and we do
8145      not want its scan of the location chain to find a breakpoint and
8146      location that's only been partially initialized.  */
8147   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8148                                                 sal->pc, b->type);
8149
8150   loc = allocate_bp_location (b);
8151   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8152     ;
8153   *tmp = loc;
8154
8155   loc->requested_address = sal->pc;
8156   loc->address = adjusted_address;
8157   loc->pspace = sal->pspace;
8158   gdb_assert (loc->pspace != NULL);
8159   loc->section = sal->section;
8160   loc->gdbarch = loc_gdbarch;
8161
8162   if (sal->symtab != NULL)
8163     loc->source_file = xstrdup (sal->symtab->filename);
8164   loc->line_number = sal->line;
8165
8166   set_breakpoint_location_function (loc,
8167                                     sal->explicit_pc || sal->explicit_line);
8168   return loc;
8169 }
8170 \f
8171
8172 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8173    return 0 otherwise.  */
8174
8175 static int
8176 bp_loc_is_permanent (struct bp_location *loc)
8177 {
8178   int len;
8179   CORE_ADDR addr;
8180   const gdb_byte *bpoint;
8181   gdb_byte *target_mem;
8182   struct cleanup *cleanup;
8183   int retval = 0;
8184
8185   gdb_assert (loc != NULL);
8186
8187   addr = loc->address;
8188   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8189
8190   /* Software breakpoints unsupported?  */
8191   if (bpoint == NULL)
8192     return 0;
8193
8194   target_mem = alloca (len);
8195
8196   /* Enable the automatic memory restoration from breakpoints while
8197      we read the memory.  Otherwise we could say about our temporary
8198      breakpoints they are permanent.  */
8199   cleanup = save_current_space_and_thread ();
8200
8201   switch_to_program_space_and_thread (loc->pspace);
8202   make_show_memory_breakpoints_cleanup (0);
8203
8204   if (target_read_memory (loc->address, target_mem, len) == 0
8205       && memcmp (target_mem, bpoint, len) == 0)
8206     retval = 1;
8207
8208   do_cleanups (cleanup);
8209
8210   return retval;
8211 }
8212
8213
8214
8215 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8216    as textual description of the location, and COND_STRING
8217    as condition expression.  */
8218
8219 static void
8220 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8221                      struct symtabs_and_lines sals, char *addr_string,
8222                      char *filter, char *cond_string,
8223                      enum bptype type, enum bpdisp disposition,
8224                      int thread, int task, int ignore_count,
8225                      const struct breakpoint_ops *ops, int from_tty,
8226                      int enabled, int internal, int display_canonical)
8227 {
8228   int i;
8229
8230   if (type == bp_hardware_breakpoint)
8231     {
8232       int target_resources_ok;
8233
8234       i = hw_breakpoint_used_count ();
8235       target_resources_ok =
8236         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8237                                             i + 1, 0);
8238       if (target_resources_ok == 0)
8239         error (_("No hardware breakpoint support in the target."));
8240       else if (target_resources_ok < 0)
8241         error (_("Hardware breakpoints used exceeds limit."));
8242     }
8243
8244   gdb_assert (sals.nelts > 0);
8245
8246   for (i = 0; i < sals.nelts; ++i)
8247     {
8248       struct symtab_and_line sal = sals.sals[i];
8249       struct bp_location *loc;
8250
8251       if (from_tty)
8252         {
8253           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8254           if (!loc_gdbarch)
8255             loc_gdbarch = gdbarch;
8256
8257           describe_other_breakpoints (loc_gdbarch,
8258                                       sal.pspace, sal.pc, sal.section, thread);
8259         }
8260
8261       if (i == 0)
8262         {
8263           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8264           b->thread = thread;
8265           b->task = task;
8266   
8267           b->cond_string = cond_string;
8268           b->ignore_count = ignore_count;
8269           b->enable_state = enabled ? bp_enabled : bp_disabled;
8270           b->disposition = disposition;
8271
8272           if (type == bp_static_tracepoint)
8273             {
8274               struct tracepoint *t = (struct tracepoint *) b;
8275               struct static_tracepoint_marker marker;
8276
8277               if (strace_marker_p (b))
8278                 {
8279                   /* We already know the marker exists, otherwise, we
8280                      wouldn't see a sal for it.  */
8281                   char *p = &addr_string[3];
8282                   char *endp;
8283                   char *marker_str;
8284
8285                   p = skip_spaces (p);
8286
8287                   endp = skip_to_space (p);
8288
8289                   marker_str = savestring (p, endp - p);
8290                   t->static_trace_marker_id = marker_str;
8291
8292                   printf_filtered (_("Probed static tracepoint "
8293                                      "marker \"%s\"\n"),
8294                                    t->static_trace_marker_id);
8295                 }
8296               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8297                 {
8298                   t->static_trace_marker_id = xstrdup (marker.str_id);
8299                   release_static_tracepoint_marker (&marker);
8300
8301                   printf_filtered (_("Probed static tracepoint "
8302                                      "marker \"%s\"\n"),
8303                                    t->static_trace_marker_id);
8304                 }
8305               else
8306                 warning (_("Couldn't determine the static "
8307                            "tracepoint marker to probe"));
8308             }
8309
8310           loc = b->loc;
8311         }
8312       else
8313         {
8314           loc = add_location_to_breakpoint (b, &sal);
8315         }
8316
8317       if (bp_loc_is_permanent (loc))
8318         make_breakpoint_permanent (b);
8319
8320       if (b->cond_string)
8321         {
8322           char *arg = b->cond_string;
8323           loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
8324           if (*arg)
8325               error (_("Garbage %s follows condition"), arg);
8326         }
8327     }   
8328
8329   b->display_canonical = display_canonical;
8330   if (addr_string)
8331     b->addr_string = addr_string;
8332   else
8333     /* addr_string has to be used or breakpoint_re_set will delete
8334        me.  */
8335     b->addr_string
8336       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
8337   b->filter = filter;
8338 }
8339
8340 static void
8341 create_breakpoint_sal (struct gdbarch *gdbarch,
8342                        struct symtabs_and_lines sals, char *addr_string,
8343                        char *filter, char *cond_string,
8344                        enum bptype type, enum bpdisp disposition,
8345                        int thread, int task, int ignore_count,
8346                        const struct breakpoint_ops *ops, int from_tty,
8347                        int enabled, int internal, int display_canonical)
8348 {
8349   struct breakpoint *b;
8350   struct cleanup *old_chain;
8351
8352   if (is_tracepoint_type (type))
8353     {
8354       struct tracepoint *t;
8355
8356       t = XCNEW (struct tracepoint);
8357       b = &t->base;
8358     }
8359   else
8360     b = XNEW (struct breakpoint);
8361
8362   old_chain = make_cleanup (xfree, b);
8363
8364   init_breakpoint_sal (b, gdbarch,
8365                        sals, addr_string,
8366                        filter, cond_string,
8367                        type, disposition,
8368                        thread, task, ignore_count,
8369                        ops, from_tty,
8370                        enabled, internal, display_canonical);
8371   discard_cleanups (old_chain);
8372
8373   install_breakpoint (internal, b, 0);
8374 }
8375
8376 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8377    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8378    value.  COND_STRING, if not NULL, specified the condition to be
8379    used for all breakpoints.  Essentially the only case where
8380    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8381    function.  In that case, it's still not possible to specify
8382    separate conditions for different overloaded functions, so
8383    we take just a single condition string.
8384    
8385    NOTE: If the function succeeds, the caller is expected to cleanup
8386    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8387    array contents).  If the function fails (error() is called), the
8388    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8389    COND and SALS arrays and each of those arrays contents.  */
8390
8391 static void
8392 create_breakpoints_sal (struct gdbarch *gdbarch,
8393                         struct linespec_result *canonical,
8394                         char *cond_string,
8395                         enum bptype type, enum bpdisp disposition,
8396                         int thread, int task, int ignore_count,
8397                         const struct breakpoint_ops *ops, int from_tty,
8398                         int enabled, int internal)
8399 {
8400   int i;
8401   struct linespec_sals *lsal;
8402
8403   if (canonical->pre_expanded)
8404     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
8405
8406   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
8407     {
8408       /* Note that 'addr_string' can be NULL in the case of a plain
8409          'break', without arguments.  */
8410       char *addr_string = (canonical->addr_string
8411                            ? xstrdup (canonical->addr_string)
8412                            : NULL);
8413       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
8414       struct cleanup *inner = make_cleanup (xfree, addr_string);
8415
8416       make_cleanup (xfree, filter_string);
8417       create_breakpoint_sal (gdbarch, lsal->sals,
8418                              addr_string,
8419                              filter_string,
8420                              cond_string, type, disposition,
8421                              thread, task, ignore_count, ops,
8422                              from_tty, enabled, internal,
8423                              canonical->special_display);
8424       discard_cleanups (inner);
8425     }
8426 }
8427
8428 /* Parse ADDRESS which is assumed to be a SAL specification possibly
8429    followed by conditionals.  On return, SALS contains an array of SAL
8430    addresses found.  ADDR_STRING contains a vector of (canonical)
8431    address strings.  ADDRESS points to the end of the SAL.
8432
8433    The array and the line spec strings are allocated on the heap, it is
8434    the caller's responsibility to free them.  */
8435
8436 static void
8437 parse_breakpoint_sals (char **address,
8438                        struct linespec_result *canonical)
8439 {
8440   char *addr_start = *address;
8441
8442   /* If no arg given, or if first arg is 'if ', use the default
8443      breakpoint.  */
8444   if ((*address) == NULL
8445       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
8446     {
8447       /* The last displayed codepoint, if it's valid, is our default breakpoint
8448          address.  */
8449       if (last_displayed_sal_is_valid ())
8450         {
8451           struct linespec_sals lsal;
8452           struct symtab_and_line sal;
8453
8454           init_sal (&sal);              /* Initialize to zeroes.  */
8455           lsal.sals.sals = (struct symtab_and_line *)
8456             xmalloc (sizeof (struct symtab_and_line));
8457
8458           /* Set sal's pspace, pc, symtab, and line to the values
8459              corresponding to the last call to print_frame_info.  */
8460           get_last_displayed_sal (&sal);
8461           sal.section = find_pc_overlay (sal.pc);
8462
8463           /* "break" without arguments is equivalent to "break *PC"
8464              where PC is the last displayed codepoint's address.  So
8465              make sure to set sal.explicit_pc to prevent GDB from
8466              trying to expand the list of sals to include all other
8467              instances with the same symtab and line.  */
8468           sal.explicit_pc = 1;
8469
8470           lsal.sals.sals[0] = sal;
8471           lsal.sals.nelts = 1;
8472           lsal.canonical = NULL;
8473
8474           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
8475         }
8476       else
8477         error (_("No default breakpoint address now."));
8478     }
8479   else
8480     {
8481       /* Force almost all breakpoints to be in terms of the
8482          current_source_symtab (which is decode_line_1's default).
8483          This should produce the results we want almost all of the
8484          time while leaving default_breakpoint_* alone.  */
8485       if (last_displayed_sal_is_valid ())
8486         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8487                           get_last_displayed_symtab (),
8488                           get_last_displayed_line (),
8489                           canonical, NULL, NULL);
8490       else
8491         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8492                           (struct symtab *) NULL, 0,
8493                           canonical, NULL, NULL);
8494     }
8495 }
8496
8497
8498 /* Convert each SAL into a real PC.  Verify that the PC can be
8499    inserted as a breakpoint.  If it can't throw an error.  */
8500
8501 static void
8502 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
8503 {    
8504   int i;
8505
8506   for (i = 0; i < sals->nelts; i++)
8507     resolve_sal_pc (&sals->sals[i]);
8508 }
8509
8510 /* Fast tracepoints may have restrictions on valid locations.  For
8511    instance, a fast tracepoint using a jump instead of a trap will
8512    likely have to overwrite more bytes than a trap would, and so can
8513    only be placed where the instruction is longer than the jump, or a
8514    multi-instruction sequence does not have a jump into the middle of
8515    it, etc.  */
8516
8517 static void
8518 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
8519                             struct symtabs_and_lines *sals)
8520 {
8521   int i, rslt;
8522   struct symtab_and_line *sal;
8523   char *msg;
8524   struct cleanup *old_chain;
8525
8526   for (i = 0; i < sals->nelts; i++)
8527     {
8528       struct gdbarch *sarch;
8529
8530       sal = &sals->sals[i];
8531
8532       sarch = get_sal_arch (*sal);
8533       /* We fall back to GDBARCH if there is no architecture
8534          associated with SAL.  */
8535       if (sarch == NULL)
8536         sarch = gdbarch;
8537       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
8538                                                NULL, &msg);
8539       old_chain = make_cleanup (xfree, msg);
8540
8541       if (!rslt)
8542         error (_("May not have a fast tracepoint at 0x%s%s"),
8543                paddress (sarch, sal->pc), (msg ? msg : ""));
8544
8545       do_cleanups (old_chain);
8546     }
8547 }
8548
8549 /* Given TOK, a string specification of condition and thread, as
8550    accepted by the 'break' command, extract the condition
8551    string and thread number and set *COND_STRING and *THREAD.
8552    PC identifies the context at which the condition should be parsed.
8553    If no condition is found, *COND_STRING is set to NULL.
8554    If no thread is found, *THREAD is set to -1.  */
8555 static void 
8556 find_condition_and_thread (char *tok, CORE_ADDR pc, 
8557                            char **cond_string, int *thread, int *task)
8558 {
8559   *cond_string = NULL;
8560   *thread = -1;
8561   while (tok && *tok)
8562     {
8563       char *end_tok;
8564       int toklen;
8565       char *cond_start = NULL;
8566       char *cond_end = NULL;
8567
8568       tok = skip_spaces (tok);
8569       
8570       end_tok = skip_to_space (tok);
8571       
8572       toklen = end_tok - tok;
8573       
8574       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8575         {
8576           struct expression *expr;
8577
8578           tok = cond_start = end_tok + 1;
8579           expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
8580           xfree (expr);
8581           cond_end = tok;
8582           *cond_string = savestring (cond_start, 
8583                                      cond_end - cond_start);
8584         }
8585       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8586         {
8587           char *tmptok;
8588           
8589           tok = end_tok + 1;
8590           tmptok = tok;
8591           *thread = strtol (tok, &tok, 0);
8592           if (tok == tmptok)
8593             error (_("Junk after thread keyword."));
8594           if (!valid_thread_id (*thread))
8595             error (_("Unknown thread %d."), *thread);
8596         }
8597       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
8598         {
8599           char *tmptok;
8600
8601           tok = end_tok + 1;
8602           tmptok = tok;
8603           *task = strtol (tok, &tok, 0);
8604           if (tok == tmptok)
8605             error (_("Junk after task keyword."));
8606           if (!valid_task_id (*task))
8607             error (_("Unknown task %d."), *task);
8608         }
8609       else
8610         error (_("Junk at end of arguments."));
8611     }
8612 }
8613
8614 /* Decode a static tracepoint marker spec.  */
8615
8616 static struct symtabs_and_lines
8617 decode_static_tracepoint_spec (char **arg_p)
8618 {
8619   VEC(static_tracepoint_marker_p) *markers = NULL;
8620   struct symtabs_and_lines sals;
8621   struct symtab_and_line sal;
8622   struct symbol *sym;
8623   struct cleanup *old_chain;
8624   char *p = &(*arg_p)[3];
8625   char *endp;
8626   char *marker_str;
8627   int i;
8628
8629   p = skip_spaces (p);
8630
8631   endp = skip_to_space (p);
8632
8633   marker_str = savestring (p, endp - p);
8634   old_chain = make_cleanup (xfree, marker_str);
8635
8636   markers = target_static_tracepoint_markers_by_strid (marker_str);
8637   if (VEC_empty(static_tracepoint_marker_p, markers))
8638     error (_("No known static tracepoint marker named %s"), marker_str);
8639
8640   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
8641   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
8642
8643   for (i = 0; i < sals.nelts; i++)
8644     {
8645       struct static_tracepoint_marker *marker;
8646
8647       marker = VEC_index (static_tracepoint_marker_p, markers, i);
8648
8649       init_sal (&sals.sals[i]);
8650
8651       sals.sals[i] = find_pc_line (marker->address, 0);
8652       sals.sals[i].pc = marker->address;
8653
8654       release_static_tracepoint_marker (marker);
8655     }
8656
8657   do_cleanups (old_chain);
8658
8659   *arg_p = endp;
8660   return sals;
8661 }
8662
8663 /* Set a breakpoint.  This function is shared between CLI and MI
8664    functions for setting a breakpoint.  This function has two major
8665    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
8666    parameter.  If non-zero, the function will parse arg, extracting
8667    breakpoint location, address and thread.  Otherwise, ARG is just
8668    the location of breakpoint, with condition and thread specified by
8669    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
8670    the breakpoint number will be allocated from the internal
8671    breakpoint count.  Returns true if any breakpoint was created;
8672    false otherwise.  */
8673
8674 int
8675 create_breakpoint (struct gdbarch *gdbarch,
8676                    char *arg, char *cond_string, int thread,
8677                    int parse_condition_and_thread,
8678                    int tempflag, enum bptype type_wanted,
8679                    int ignore_count,
8680                    enum auto_boolean pending_break_support,
8681                    const struct breakpoint_ops *ops,
8682                    int from_tty, int enabled, int internal)
8683 {
8684   volatile struct gdb_exception e;
8685   char *copy_arg = NULL;
8686   char *addr_start = arg;
8687   struct linespec_result canonical;
8688   struct cleanup *old_chain;
8689   struct cleanup *bkpt_chain = NULL;
8690   int i;
8691   int pending = 0;
8692   int task = 0;
8693   int prev_bkpt_count = breakpoint_count;
8694
8695   gdb_assert (ops != NULL);
8696
8697   init_linespec_result (&canonical);
8698
8699   TRY_CATCH (e, RETURN_MASK_ALL)
8700     {
8701       ops->create_sals_from_address (&arg, &canonical, type_wanted,
8702                                      addr_start, &copy_arg);
8703     }
8704
8705   /* If caller is interested in rc value from parse, set value.  */
8706   switch (e.reason)
8707     {
8708     case GDB_NO_ERROR:
8709       if (VEC_empty (linespec_sals, canonical.sals))
8710         return 0;
8711       break;
8712     case RETURN_ERROR:
8713       switch (e.error)
8714         {
8715         case NOT_FOUND_ERROR:
8716
8717           /* If pending breakpoint support is turned off, throw
8718              error.  */
8719
8720           if (pending_break_support == AUTO_BOOLEAN_FALSE)
8721             throw_exception (e);
8722
8723           exception_print (gdb_stderr, e);
8724
8725           /* If pending breakpoint support is auto query and the user
8726              selects no, then simply return the error code.  */
8727           if (pending_break_support == AUTO_BOOLEAN_AUTO
8728               && !nquery (_("Make %s pending on future shared library load? "),
8729                           bptype_string (type_wanted)))
8730             return 0;
8731
8732           /* At this point, either the user was queried about setting
8733              a pending breakpoint and selected yes, or pending
8734              breakpoint behavior is on and thus a pending breakpoint
8735              is defaulted on behalf of the user.  */
8736           {
8737             struct linespec_sals lsal;
8738
8739             copy_arg = xstrdup (addr_start);
8740             lsal.canonical = xstrdup (copy_arg);
8741             lsal.sals.nelts = 1;
8742             lsal.sals.sals = XNEW (struct symtab_and_line);
8743             init_sal (&lsal.sals.sals[0]);
8744             pending = 1;
8745             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
8746           }
8747           break;
8748         default:
8749           throw_exception (e);
8750         }
8751       break;
8752     default:
8753       throw_exception (e);
8754     }
8755
8756   /* Create a chain of things that always need to be cleaned up.  */
8757   old_chain = make_cleanup_destroy_linespec_result (&canonical);
8758
8759   /* ----------------------------- SNIP -----------------------------
8760      Anything added to the cleanup chain beyond this point is assumed
8761      to be part of a breakpoint.  If the breakpoint create succeeds
8762      then the memory is not reclaimed.  */
8763   bkpt_chain = make_cleanup (null_cleanup, 0);
8764
8765   /* Resolve all line numbers to PC's and verify that the addresses
8766      are ok for the target.  */
8767   if (!pending)
8768     {
8769       int ix;
8770       struct linespec_sals *iter;
8771
8772       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
8773         breakpoint_sals_to_pc (&iter->sals);
8774     }
8775
8776   /* Fast tracepoints may have additional restrictions on location.  */
8777   if (!pending && type_wanted == bp_fast_tracepoint)
8778     {
8779       int ix;
8780       struct linespec_sals *iter;
8781
8782       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
8783         check_fast_tracepoint_sals (gdbarch, &iter->sals);
8784     }
8785
8786   /* Verify that condition can be parsed, before setting any
8787      breakpoints.  Allocate a separate condition expression for each
8788      breakpoint.  */
8789   if (!pending)
8790     {
8791       struct linespec_sals *lsal;
8792
8793       lsal = VEC_index (linespec_sals, canonical.sals, 0);
8794
8795       if (parse_condition_and_thread)
8796         {
8797             /* Here we only parse 'arg' to separate condition
8798                from thread number, so parsing in context of first
8799                sal is OK.  When setting the breakpoint we'll 
8800                re-parse it in context of each sal.  */
8801             cond_string = NULL;
8802             thread = -1;
8803             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
8804                                        &thread, &task);
8805             if (cond_string)
8806                 make_cleanup (xfree, cond_string);
8807         }
8808       else
8809         {
8810             /* Create a private copy of condition string.  */
8811             if (cond_string)
8812             {
8813                 cond_string = xstrdup (cond_string);
8814                 make_cleanup (xfree, cond_string);
8815             }
8816         }
8817
8818       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
8819                                    cond_string, type_wanted,
8820                                    tempflag ? disp_del : disp_donttouch,
8821                                    thread, task, ignore_count, ops,
8822                                    from_tty, enabled, internal);
8823     }
8824   else
8825     {
8826       struct breakpoint *b;
8827
8828       make_cleanup (xfree, copy_arg);
8829
8830       if (is_tracepoint_type (type_wanted))
8831         {
8832           struct tracepoint *t;
8833
8834           t = XCNEW (struct tracepoint);
8835           b = &t->base;
8836         }
8837       else
8838         b = XNEW (struct breakpoint);
8839
8840       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
8841
8842       b->addr_string = copy_arg;
8843       b->cond_string = NULL;
8844       b->ignore_count = ignore_count;
8845       b->disposition = tempflag ? disp_del : disp_donttouch;
8846       b->condition_not_parsed = 1;
8847       b->enable_state = enabled ? bp_enabled : bp_disabled;
8848       if ((type_wanted != bp_breakpoint
8849            && type_wanted != bp_hardware_breakpoint) || thread != -1)
8850         b->pspace = current_program_space;
8851
8852       install_breakpoint (internal, b, 0);
8853     }
8854   
8855   if (VEC_length (linespec_sals, canonical.sals) > 1)
8856     {
8857       warning (_("Multiple breakpoints were set.\nUse the "
8858                  "\"delete\" command to delete unwanted breakpoints."));
8859       prev_breakpoint_count = prev_bkpt_count;
8860     }
8861
8862   /* That's it.  Discard the cleanups for data inserted into the
8863      breakpoint.  */
8864   discard_cleanups (bkpt_chain);
8865   /* But cleanup everything else.  */
8866   do_cleanups (old_chain);
8867
8868   /* error call may happen here - have BKPT_CHAIN already discarded.  */
8869   update_global_location_list (1);
8870
8871   return 1;
8872 }
8873
8874 /* Set a breakpoint.
8875    ARG is a string describing breakpoint address,
8876    condition, and thread.
8877    FLAG specifies if a breakpoint is hardware on,
8878    and if breakpoint is temporary, using BP_HARDWARE_FLAG
8879    and BP_TEMPFLAG.  */
8880
8881 static void
8882 break_command_1 (char *arg, int flag, int from_tty)
8883 {
8884   int tempflag = flag & BP_TEMPFLAG;
8885   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
8886                              ? bp_hardware_breakpoint
8887                              : bp_breakpoint);
8888
8889   create_breakpoint (get_current_arch (),
8890                      arg,
8891                      NULL, 0, 1 /* parse arg */,
8892                      tempflag, type_wanted,
8893                      0 /* Ignore count */,
8894                      pending_break_support,
8895                      &bkpt_breakpoint_ops,
8896                      from_tty,
8897                      1 /* enabled */,
8898                      0 /* internal */);
8899 }
8900
8901 /* Helper function for break_command_1 and disassemble_command.  */
8902
8903 void
8904 resolve_sal_pc (struct symtab_and_line *sal)
8905 {
8906   CORE_ADDR pc;
8907
8908   if (sal->pc == 0 && sal->symtab != NULL)
8909     {
8910       if (!find_line_pc (sal->symtab, sal->line, &pc))
8911         error (_("No line %d in file \"%s\"."),
8912                sal->line, sal->symtab->filename);
8913       sal->pc = pc;
8914
8915       /* If this SAL corresponds to a breakpoint inserted using a line
8916          number, then skip the function prologue if necessary.  */
8917       if (sal->explicit_line)
8918         skip_prologue_sal (sal);
8919     }
8920
8921   if (sal->section == 0 && sal->symtab != NULL)
8922     {
8923       struct blockvector *bv;
8924       struct block *b;
8925       struct symbol *sym;
8926
8927       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
8928       if (bv != NULL)
8929         {
8930           sym = block_linkage_function (b);
8931           if (sym != NULL)
8932             {
8933               fixup_symbol_section (sym, sal->symtab->objfile);
8934               sal->section = SYMBOL_OBJ_SECTION (sym);
8935             }
8936           else
8937             {
8938               /* It really is worthwhile to have the section, so we'll
8939                  just have to look harder. This case can be executed
8940                  if we have line numbers but no functions (as can
8941                  happen in assembly source).  */
8942
8943               struct minimal_symbol *msym;
8944               struct cleanup *old_chain = save_current_space_and_thread ();
8945
8946               switch_to_program_space_and_thread (sal->pspace);
8947
8948               msym = lookup_minimal_symbol_by_pc (sal->pc);
8949               if (msym)
8950                 sal->section = SYMBOL_OBJ_SECTION (msym);
8951
8952               do_cleanups (old_chain);
8953             }
8954         }
8955     }
8956 }
8957
8958 void
8959 break_command (char *arg, int from_tty)
8960 {
8961   break_command_1 (arg, 0, from_tty);
8962 }
8963
8964 void
8965 tbreak_command (char *arg, int from_tty)
8966 {
8967   break_command_1 (arg, BP_TEMPFLAG, from_tty);
8968 }
8969
8970 static void
8971 hbreak_command (char *arg, int from_tty)
8972 {
8973   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
8974 }
8975
8976 static void
8977 thbreak_command (char *arg, int from_tty)
8978 {
8979   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
8980 }
8981
8982 static void
8983 stop_command (char *arg, int from_tty)
8984 {
8985   printf_filtered (_("Specify the type of breakpoint to set.\n\
8986 Usage: stop in <function | address>\n\
8987        stop at <line>\n"));
8988 }
8989
8990 static void
8991 stopin_command (char *arg, int from_tty)
8992 {
8993   int badInput = 0;
8994
8995   if (arg == (char *) NULL)
8996     badInput = 1;
8997   else if (*arg != '*')
8998     {
8999       char *argptr = arg;
9000       int hasColon = 0;
9001
9002       /* Look for a ':'.  If this is a line number specification, then
9003          say it is bad, otherwise, it should be an address or
9004          function/method name.  */
9005       while (*argptr && !hasColon)
9006         {
9007           hasColon = (*argptr == ':');
9008           argptr++;
9009         }
9010
9011       if (hasColon)
9012         badInput = (*argptr != ':');    /* Not a class::method */
9013       else
9014         badInput = isdigit (*arg);      /* a simple line number */
9015     }
9016
9017   if (badInput)
9018     printf_filtered (_("Usage: stop in <function | address>\n"));
9019   else
9020     break_command_1 (arg, 0, from_tty);
9021 }
9022
9023 static void
9024 stopat_command (char *arg, int from_tty)
9025 {
9026   int badInput = 0;
9027
9028   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9029     badInput = 1;
9030   else
9031     {
9032       char *argptr = arg;
9033       int hasColon = 0;
9034
9035       /* Look for a ':'.  If there is a '::' then get out, otherwise
9036          it is probably a line number.  */
9037       while (*argptr && !hasColon)
9038         {
9039           hasColon = (*argptr == ':');
9040           argptr++;
9041         }
9042
9043       if (hasColon)
9044         badInput = (*argptr == ':');    /* we have class::method */
9045       else
9046         badInput = !isdigit (*arg);     /* not a line number */
9047     }
9048
9049   if (badInput)
9050     printf_filtered (_("Usage: stop at <line>\n"));
9051   else
9052     break_command_1 (arg, 0, from_tty);
9053 }
9054
9055 /* Implement the "breakpoint_hit" breakpoint_ops method for
9056    ranged breakpoints.  */
9057
9058 static int
9059 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9060                                   struct address_space *aspace,
9061                                   CORE_ADDR bp_addr,
9062                                   const struct target_waitstatus *ws)
9063 {
9064   if (ws->kind != TARGET_WAITKIND_STOPPED
9065       || ws->value.sig != TARGET_SIGNAL_TRAP)
9066     return 0;
9067
9068   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9069                                          bl->length, aspace, bp_addr);
9070 }
9071
9072 /* Implement the "resources_needed" breakpoint_ops method for
9073    ranged breakpoints.  */
9074
9075 static int
9076 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9077 {
9078   return target_ranged_break_num_registers ();
9079 }
9080
9081 /* Implement the "print_it" breakpoint_ops method for
9082    ranged breakpoints.  */
9083
9084 static enum print_stop_action
9085 print_it_ranged_breakpoint (bpstat bs)
9086 {
9087   struct breakpoint *b = bs->breakpoint_at;
9088   struct bp_location *bl = b->loc;
9089   struct ui_out *uiout = current_uiout;
9090
9091   gdb_assert (b->type == bp_hardware_breakpoint);
9092
9093   /* Ranged breakpoints have only one location.  */
9094   gdb_assert (bl && bl->next == NULL);
9095
9096   annotate_breakpoint (b->number);
9097   if (b->disposition == disp_del)
9098     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9099   else
9100     ui_out_text (uiout, "\nRanged breakpoint ");
9101   if (ui_out_is_mi_like_p (uiout))
9102     {
9103       ui_out_field_string (uiout, "reason",
9104                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9105       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9106     }
9107   ui_out_field_int (uiout, "bkptno", b->number);
9108   ui_out_text (uiout, ", ");
9109
9110   return PRINT_SRC_AND_LOC;
9111 }
9112
9113 /* Implement the "print_one" breakpoint_ops method for
9114    ranged breakpoints.  */
9115
9116 static void
9117 print_one_ranged_breakpoint (struct breakpoint *b,
9118                              struct bp_location **last_loc)
9119 {
9120   struct bp_location *bl = b->loc;
9121   struct value_print_options opts;
9122   struct ui_out *uiout = current_uiout;
9123
9124   /* Ranged breakpoints have only one location.  */
9125   gdb_assert (bl && bl->next == NULL);
9126
9127   get_user_print_options (&opts);
9128
9129   if (opts.addressprint)
9130     /* We don't print the address range here, it will be printed later
9131        by print_one_detail_ranged_breakpoint.  */
9132     ui_out_field_skip (uiout, "addr");
9133   annotate_field (5);
9134   print_breakpoint_location (b, bl);
9135   *last_loc = bl;
9136 }
9137
9138 /* Implement the "print_one_detail" breakpoint_ops method for
9139    ranged breakpoints.  */
9140
9141 static void
9142 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9143                                     struct ui_out *uiout)
9144 {
9145   CORE_ADDR address_start, address_end;
9146   struct bp_location *bl = b->loc;
9147   struct ui_stream *stb = ui_out_stream_new (uiout);
9148   struct cleanup *cleanup = make_cleanup_ui_out_stream_delete (stb);
9149
9150   gdb_assert (bl);
9151
9152   address_start = bl->address;
9153   address_end = address_start + bl->length - 1;
9154
9155   ui_out_text (uiout, "\taddress range: ");
9156   fprintf_unfiltered (stb->stream, "[%s, %s]",
9157                       print_core_address (bl->gdbarch, address_start),
9158                       print_core_address (bl->gdbarch, address_end));
9159   ui_out_field_stream (uiout, "addr", stb);
9160   ui_out_text (uiout, "\n");
9161
9162   do_cleanups (cleanup);
9163 }
9164
9165 /* Implement the "print_mention" breakpoint_ops method for
9166    ranged breakpoints.  */
9167
9168 static void
9169 print_mention_ranged_breakpoint (struct breakpoint *b)
9170 {
9171   struct bp_location *bl = b->loc;
9172   struct ui_out *uiout = current_uiout;
9173
9174   gdb_assert (bl);
9175   gdb_assert (b->type == bp_hardware_breakpoint);
9176
9177   if (ui_out_is_mi_like_p (uiout))
9178     return;
9179
9180   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9181                    b->number, paddress (bl->gdbarch, bl->address),
9182                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9183 }
9184
9185 /* Implement the "print_recreate" breakpoint_ops method for
9186    ranged breakpoints.  */
9187
9188 static void
9189 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9190 {
9191   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9192                       b->addr_string_range_end);
9193   print_recreate_thread (b, fp);
9194 }
9195
9196 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9197
9198 static struct breakpoint_ops ranged_breakpoint_ops;
9199
9200 /* Find the address where the end of the breakpoint range should be
9201    placed, given the SAL of the end of the range.  This is so that if
9202    the user provides a line number, the end of the range is set to the
9203    last instruction of the given line.  */
9204
9205 static CORE_ADDR
9206 find_breakpoint_range_end (struct symtab_and_line sal)
9207 {
9208   CORE_ADDR end;
9209
9210   /* If the user provided a PC value, use it.  Otherwise,
9211      find the address of the end of the given location.  */
9212   if (sal.explicit_pc)
9213     end = sal.pc;
9214   else
9215     {
9216       int ret;
9217       CORE_ADDR start;
9218
9219       ret = find_line_pc_range (sal, &start, &end);
9220       if (!ret)
9221         error (_("Could not find location of the end of the range."));
9222
9223       /* find_line_pc_range returns the start of the next line.  */
9224       end--;
9225     }
9226
9227   return end;
9228 }
9229
9230 /* Implement the "break-range" CLI command.  */
9231
9232 static void
9233 break_range_command (char *arg, int from_tty)
9234 {
9235   char *arg_start, *addr_string_start, *addr_string_end;
9236   struct linespec_result canonical_start, canonical_end;
9237   int bp_count, can_use_bp, length;
9238   CORE_ADDR end;
9239   struct breakpoint *b;
9240   struct symtab_and_line sal_start, sal_end;
9241   struct cleanup *cleanup_bkpt;
9242   struct linespec_sals *lsal_start, *lsal_end;
9243
9244   /* We don't support software ranged breakpoints.  */
9245   if (target_ranged_break_num_registers () < 0)
9246     error (_("This target does not support hardware ranged breakpoints."));
9247
9248   bp_count = hw_breakpoint_used_count ();
9249   bp_count += target_ranged_break_num_registers ();
9250   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9251                                                    bp_count, 0);
9252   if (can_use_bp < 0)
9253     error (_("Hardware breakpoints used exceeds limit."));
9254
9255   arg = skip_spaces (arg);
9256   if (arg == NULL || arg[0] == '\0')
9257     error(_("No address range specified."));
9258
9259   init_linespec_result (&canonical_start);
9260
9261   arg_start = arg;
9262   parse_breakpoint_sals (&arg, &canonical_start);
9263
9264   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
9265
9266   if (arg[0] != ',')
9267     error (_("Too few arguments."));
9268   else if (VEC_empty (linespec_sals, canonical_start.sals))
9269     error (_("Could not find location of the beginning of the range."));
9270
9271   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
9272
9273   if (VEC_length (linespec_sals, canonical_start.sals) > 1
9274       || lsal_start->sals.nelts != 1)
9275     error (_("Cannot create a ranged breakpoint with multiple locations."));
9276
9277   sal_start = lsal_start->sals.sals[0];
9278   addr_string_start = savestring (arg_start, arg - arg_start);
9279   make_cleanup (xfree, addr_string_start);
9280
9281   arg++;        /* Skip the comma.  */
9282   arg = skip_spaces (arg);
9283
9284   /* Parse the end location.  */
9285
9286   init_linespec_result (&canonical_end);
9287   arg_start = arg;
9288
9289   /* We call decode_line_full directly here instead of using
9290      parse_breakpoint_sals because we need to specify the start location's
9291      symtab and line as the default symtab and line for the end of the
9292      range.  This makes it possible to have ranges like "foo.c:27, +14",
9293      where +14 means 14 lines from the start location.  */
9294   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
9295                     sal_start.symtab, sal_start.line,
9296                     &canonical_end, NULL, NULL);
9297
9298   make_cleanup_destroy_linespec_result (&canonical_end);
9299
9300   if (VEC_empty (linespec_sals, canonical_end.sals))
9301     error (_("Could not find location of the end of the range."));
9302
9303   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
9304   if (VEC_length (linespec_sals, canonical_end.sals) > 1
9305       || lsal_end->sals.nelts != 1)
9306     error (_("Cannot create a ranged breakpoint with multiple locations."));
9307
9308   sal_end = lsal_end->sals.sals[0];
9309   addr_string_end = savestring (arg_start, arg - arg_start);
9310   make_cleanup (xfree, addr_string_end);
9311
9312   end = find_breakpoint_range_end (sal_end);
9313   if (sal_start.pc > end)
9314     error (_("Invalid address range, end precedes start."));
9315
9316   length = end - sal_start.pc + 1;
9317   if (length < 0)
9318     /* Length overflowed.  */
9319     error (_("Address range too large."));
9320   else if (length == 1)
9321     {
9322       /* This range is simple enough to be handled by
9323          the `hbreak' command.  */
9324       hbreak_command (addr_string_start, 1);
9325
9326       do_cleanups (cleanup_bkpt);
9327
9328       return;
9329     }
9330
9331   /* Now set up the breakpoint.  */
9332   b = set_raw_breakpoint (get_current_arch (), sal_start,
9333                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9334   set_breakpoint_count (breakpoint_count + 1);
9335   b->number = breakpoint_count;
9336   b->disposition = disp_donttouch;
9337   b->addr_string = xstrdup (addr_string_start);
9338   b->addr_string_range_end = xstrdup (addr_string_end);
9339   b->loc->length = length;
9340
9341   do_cleanups (cleanup_bkpt);
9342
9343   mention (b);
9344   observer_notify_breakpoint_created (b);
9345   update_global_location_list (1);
9346 }
9347
9348 /*  Return non-zero if EXP is verified as constant.  Returned zero
9349     means EXP is variable.  Also the constant detection may fail for
9350     some constant expressions and in such case still falsely return
9351     zero.  */
9352
9353 static int
9354 watchpoint_exp_is_const (const struct expression *exp)
9355 {
9356   int i = exp->nelts;
9357
9358   while (i > 0)
9359     {
9360       int oplenp, argsp;
9361
9362       /* We are only interested in the descriptor of each element.  */
9363       operator_length (exp, i, &oplenp, &argsp);
9364       i -= oplenp;
9365
9366       switch (exp->elts[i].opcode)
9367         {
9368         case BINOP_ADD:
9369         case BINOP_SUB:
9370         case BINOP_MUL:
9371         case BINOP_DIV:
9372         case BINOP_REM:
9373         case BINOP_MOD:
9374         case BINOP_LSH:
9375         case BINOP_RSH:
9376         case BINOP_LOGICAL_AND:
9377         case BINOP_LOGICAL_OR:
9378         case BINOP_BITWISE_AND:
9379         case BINOP_BITWISE_IOR:
9380         case BINOP_BITWISE_XOR:
9381         case BINOP_EQUAL:
9382         case BINOP_NOTEQUAL:
9383         case BINOP_LESS:
9384         case BINOP_GTR:
9385         case BINOP_LEQ:
9386         case BINOP_GEQ:
9387         case BINOP_REPEAT:
9388         case BINOP_COMMA:
9389         case BINOP_EXP:
9390         case BINOP_MIN:
9391         case BINOP_MAX:
9392         case BINOP_INTDIV:
9393         case BINOP_CONCAT:
9394         case BINOP_IN:
9395         case BINOP_RANGE:
9396         case TERNOP_COND:
9397         case TERNOP_SLICE:
9398         case TERNOP_SLICE_COUNT:
9399
9400         case OP_LONG:
9401         case OP_DOUBLE:
9402         case OP_DECFLOAT:
9403         case OP_LAST:
9404         case OP_COMPLEX:
9405         case OP_STRING:
9406         case OP_BITSTRING:
9407         case OP_ARRAY:
9408         case OP_TYPE:
9409         case OP_NAME:
9410         case OP_OBJC_NSSTRING:
9411
9412         case UNOP_NEG:
9413         case UNOP_LOGICAL_NOT:
9414         case UNOP_COMPLEMENT:
9415         case UNOP_ADDR:
9416         case UNOP_HIGH:
9417         case UNOP_CAST:
9418           /* Unary, binary and ternary operators: We have to check
9419              their operands.  If they are constant, then so is the
9420              result of that operation.  For instance, if A and B are
9421              determined to be constants, then so is "A + B".
9422
9423              UNOP_IND is one exception to the rule above, because the
9424              value of *ADDR is not necessarily a constant, even when
9425              ADDR is.  */
9426           break;
9427
9428         case OP_VAR_VALUE:
9429           /* Check whether the associated symbol is a constant.
9430
9431              We use SYMBOL_CLASS rather than TYPE_CONST because it's
9432              possible that a buggy compiler could mark a variable as
9433              constant even when it is not, and TYPE_CONST would return
9434              true in this case, while SYMBOL_CLASS wouldn't.
9435
9436              We also have to check for function symbols because they
9437              are always constant.  */
9438           {
9439             struct symbol *s = exp->elts[i + 2].symbol;
9440
9441             if (SYMBOL_CLASS (s) != LOC_BLOCK
9442                 && SYMBOL_CLASS (s) != LOC_CONST
9443                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9444               return 0;
9445             break;
9446           }
9447
9448         /* The default action is to return 0 because we are using
9449            the optimistic approach here: If we don't know something,
9450            then it is not a constant.  */
9451         default:
9452           return 0;
9453         }
9454     }
9455
9456   return 1;
9457 }
9458
9459 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
9460
9461 static void
9462 dtor_watchpoint (struct breakpoint *self)
9463 {
9464   struct watchpoint *w = (struct watchpoint *) self;
9465
9466   xfree (w->cond_exp);
9467   xfree (w->exp);
9468   xfree (w->exp_string);
9469   xfree (w->exp_string_reparse);
9470   value_free (w->val);
9471
9472   base_breakpoint_ops.dtor (self);
9473 }
9474
9475 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
9476
9477 static void
9478 re_set_watchpoint (struct breakpoint *b)
9479 {
9480   struct watchpoint *w = (struct watchpoint *) b;
9481
9482   /* Watchpoint can be either on expression using entirely global
9483      variables, or it can be on local variables.
9484
9485      Watchpoints of the first kind are never auto-deleted, and even
9486      persist across program restarts.  Since they can use variables
9487      from shared libraries, we need to reparse expression as libraries
9488      are loaded and unloaded.
9489
9490      Watchpoints on local variables can also change meaning as result
9491      of solib event.  For example, if a watchpoint uses both a local
9492      and a global variables in expression, it's a local watchpoint,
9493      but unloading of a shared library will make the expression
9494      invalid.  This is not a very common use case, but we still
9495      re-evaluate expression, to avoid surprises to the user.
9496
9497      Note that for local watchpoints, we re-evaluate it only if
9498      watchpoints frame id is still valid.  If it's not, it means the
9499      watchpoint is out of scope and will be deleted soon.  In fact,
9500      I'm not sure we'll ever be called in this case.
9501
9502      If a local watchpoint's frame id is still valid, then
9503      w->exp_valid_block is likewise valid, and we can safely use it.
9504
9505      Don't do anything about disabled watchpoints, since they will be
9506      reevaluated again when enabled.  */
9507   update_watchpoint (w, 1 /* reparse */);
9508 }
9509
9510 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
9511
9512 static int
9513 insert_watchpoint (struct bp_location *bl)
9514 {
9515   struct watchpoint *w = (struct watchpoint *) bl->owner;
9516   int length = w->exact ? 1 : bl->length;
9517
9518   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
9519                                    w->cond_exp);
9520 }
9521
9522 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
9523
9524 static int
9525 remove_watchpoint (struct bp_location *bl)
9526 {
9527   struct watchpoint *w = (struct watchpoint *) bl->owner;
9528   int length = w->exact ? 1 : bl->length;
9529
9530   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
9531                                    w->cond_exp);
9532 }
9533
9534 static int
9535 breakpoint_hit_watchpoint (const struct bp_location *bl,
9536                            struct address_space *aspace, CORE_ADDR bp_addr,
9537                            const struct target_waitstatus *ws)
9538 {
9539   struct breakpoint *b = bl->owner;
9540   struct watchpoint *w = (struct watchpoint *) b;
9541
9542   /* Continuable hardware watchpoints are treated as non-existent if the
9543      reason we stopped wasn't a hardware watchpoint (we didn't stop on
9544      some data address).  Otherwise gdb won't stop on a break instruction
9545      in the code (not from a breakpoint) when a hardware watchpoint has
9546      been defined.  Also skip watchpoints which we know did not trigger
9547      (did not match the data address).  */
9548   if (is_hardware_watchpoint (b)
9549       && w->watchpoint_triggered == watch_triggered_no)
9550     return 0;
9551
9552   return 1;
9553 }
9554
9555 static void
9556 check_status_watchpoint (bpstat bs)
9557 {
9558   gdb_assert (is_watchpoint (bs->breakpoint_at));
9559
9560   bpstat_check_watchpoint (bs);
9561 }
9562
9563 /* Implement the "resources_needed" breakpoint_ops method for
9564    hardware watchpoints.  */
9565
9566 static int
9567 resources_needed_watchpoint (const struct bp_location *bl)
9568 {
9569   struct watchpoint *w = (struct watchpoint *) bl->owner;
9570   int length = w->exact? 1 : bl->length;
9571
9572   return target_region_ok_for_hw_watchpoint (bl->address, length);
9573 }
9574
9575 /* Implement the "works_in_software_mode" breakpoint_ops method for
9576    hardware watchpoints.  */
9577
9578 static int
9579 works_in_software_mode_watchpoint (const struct breakpoint *b)
9580 {
9581   /* Read and access watchpoints only work with hardware support.  */
9582   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9583 }
9584
9585 static enum print_stop_action
9586 print_it_watchpoint (bpstat bs)
9587 {
9588   struct cleanup *old_chain;
9589   struct breakpoint *b;
9590   const struct bp_location *bl;
9591   struct ui_stream *stb;
9592   enum print_stop_action result;
9593   struct watchpoint *w;
9594   struct ui_out *uiout = current_uiout;
9595
9596   gdb_assert (bs->bp_location_at != NULL);
9597
9598   bl = bs->bp_location_at;
9599   b = bs->breakpoint_at;
9600   w = (struct watchpoint *) b;
9601
9602   stb = ui_out_stream_new (uiout);
9603   old_chain = make_cleanup_ui_out_stream_delete (stb);
9604
9605   switch (b->type)
9606     {
9607     case bp_watchpoint:
9608     case bp_hardware_watchpoint:
9609       annotate_watchpoint (b->number);
9610       if (ui_out_is_mi_like_p (uiout))
9611         ui_out_field_string
9612           (uiout, "reason",
9613            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9614       mention (b);
9615       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9616       ui_out_text (uiout, "\nOld value = ");
9617       watchpoint_value_print (bs->old_val, stb->stream);
9618       ui_out_field_stream (uiout, "old", stb);
9619       ui_out_text (uiout, "\nNew value = ");
9620       watchpoint_value_print (w->val, stb->stream);
9621       ui_out_field_stream (uiout, "new", stb);
9622       ui_out_text (uiout, "\n");
9623       /* More than one watchpoint may have been triggered.  */
9624       result = PRINT_UNKNOWN;
9625       break;
9626
9627     case bp_read_watchpoint:
9628       if (ui_out_is_mi_like_p (uiout))
9629         ui_out_field_string
9630           (uiout, "reason",
9631            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
9632       mention (b);
9633       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9634       ui_out_text (uiout, "\nValue = ");
9635       watchpoint_value_print (w->val, stb->stream);
9636       ui_out_field_stream (uiout, "value", stb);
9637       ui_out_text (uiout, "\n");
9638       result = PRINT_UNKNOWN;
9639       break;
9640
9641     case bp_access_watchpoint:
9642       if (bs->old_val != NULL)
9643         {
9644           annotate_watchpoint (b->number);
9645           if (ui_out_is_mi_like_p (uiout))
9646             ui_out_field_string
9647               (uiout, "reason",
9648                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9649           mention (b);
9650           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9651           ui_out_text (uiout, "\nOld value = ");
9652           watchpoint_value_print (bs->old_val, stb->stream);
9653           ui_out_field_stream (uiout, "old", stb);
9654           ui_out_text (uiout, "\nNew value = ");
9655         }
9656       else
9657         {
9658           mention (b);
9659           if (ui_out_is_mi_like_p (uiout))
9660             ui_out_field_string
9661               (uiout, "reason",
9662                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9663           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9664           ui_out_text (uiout, "\nValue = ");
9665         }
9666       watchpoint_value_print (w->val, stb->stream);
9667       ui_out_field_stream (uiout, "new", stb);
9668       ui_out_text (uiout, "\n");
9669       result = PRINT_UNKNOWN;
9670       break;
9671     default:
9672       result = PRINT_UNKNOWN;
9673     }
9674
9675   do_cleanups (old_chain);
9676   return result;
9677 }
9678
9679 /* Implement the "print_mention" breakpoint_ops method for hardware
9680    watchpoints.  */
9681
9682 static void
9683 print_mention_watchpoint (struct breakpoint *b)
9684 {
9685   struct cleanup *ui_out_chain;
9686   struct watchpoint *w = (struct watchpoint *) b;
9687   struct ui_out *uiout = current_uiout;
9688
9689   switch (b->type)
9690     {
9691     case bp_watchpoint:
9692       ui_out_text (uiout, "Watchpoint ");
9693       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
9694       break;
9695     case bp_hardware_watchpoint:
9696       ui_out_text (uiout, "Hardware watchpoint ");
9697       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
9698       break;
9699     case bp_read_watchpoint:
9700       ui_out_text (uiout, "Hardware read watchpoint ");
9701       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
9702       break;
9703     case bp_access_watchpoint:
9704       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
9705       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
9706       break;
9707     default:
9708       internal_error (__FILE__, __LINE__,
9709                       _("Invalid hardware watchpoint type."));
9710     }
9711
9712   ui_out_field_int (uiout, "number", b->number);
9713   ui_out_text (uiout, ": ");
9714   ui_out_field_string (uiout, "exp", w->exp_string);
9715   do_cleanups (ui_out_chain);
9716 }
9717
9718 /* Implement the "print_recreate" breakpoint_ops method for
9719    watchpoints.  */
9720
9721 static void
9722 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
9723 {
9724   struct watchpoint *w = (struct watchpoint *) b;
9725
9726   switch (b->type)
9727     {
9728     case bp_watchpoint:
9729     case bp_hardware_watchpoint:
9730       fprintf_unfiltered (fp, "watch");
9731       break;
9732     case bp_read_watchpoint:
9733       fprintf_unfiltered (fp, "rwatch");
9734       break;
9735     case bp_access_watchpoint:
9736       fprintf_unfiltered (fp, "awatch");
9737       break;
9738     default:
9739       internal_error (__FILE__, __LINE__,
9740                       _("Invalid watchpoint type."));
9741     }
9742
9743   fprintf_unfiltered (fp, " %s", w->exp_string);
9744   print_recreate_thread (b, fp);
9745 }
9746
9747 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
9748
9749 static struct breakpoint_ops watchpoint_breakpoint_ops;
9750
9751 /* Implement the "insert" breakpoint_ops method for
9752    masked hardware watchpoints.  */
9753
9754 static int
9755 insert_masked_watchpoint (struct bp_location *bl)
9756 {
9757   struct watchpoint *w = (struct watchpoint *) bl->owner;
9758
9759   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
9760                                         bl->watchpoint_type);
9761 }
9762
9763 /* Implement the "remove" breakpoint_ops method for
9764    masked hardware watchpoints.  */
9765
9766 static int
9767 remove_masked_watchpoint (struct bp_location *bl)
9768 {
9769   struct watchpoint *w = (struct watchpoint *) bl->owner;
9770
9771   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
9772                                         bl->watchpoint_type);
9773 }
9774
9775 /* Implement the "resources_needed" breakpoint_ops method for
9776    masked hardware watchpoints.  */
9777
9778 static int
9779 resources_needed_masked_watchpoint (const struct bp_location *bl)
9780 {
9781   struct watchpoint *w = (struct watchpoint *) bl->owner;
9782
9783   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
9784 }
9785
9786 /* Implement the "works_in_software_mode" breakpoint_ops method for
9787    masked hardware watchpoints.  */
9788
9789 static int
9790 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
9791 {
9792   return 0;
9793 }
9794
9795 /* Implement the "print_it" breakpoint_ops method for
9796    masked hardware watchpoints.  */
9797
9798 static enum print_stop_action
9799 print_it_masked_watchpoint (bpstat bs)
9800 {
9801   struct breakpoint *b = bs->breakpoint_at;
9802   struct ui_out *uiout = current_uiout;
9803
9804   /* Masked watchpoints have only one location.  */
9805   gdb_assert (b->loc && b->loc->next == NULL);
9806
9807   switch (b->type)
9808     {
9809     case bp_hardware_watchpoint:
9810       annotate_watchpoint (b->number);
9811       if (ui_out_is_mi_like_p (uiout))
9812         ui_out_field_string
9813           (uiout, "reason",
9814            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9815       break;
9816
9817     case bp_read_watchpoint:
9818       if (ui_out_is_mi_like_p (uiout))
9819         ui_out_field_string
9820           (uiout, "reason",
9821            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
9822       break;
9823
9824     case bp_access_watchpoint:
9825       if (ui_out_is_mi_like_p (uiout))
9826         ui_out_field_string
9827           (uiout, "reason",
9828            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9829       break;
9830     default:
9831       internal_error (__FILE__, __LINE__,
9832                       _("Invalid hardware watchpoint type."));
9833     }
9834
9835   mention (b);
9836   ui_out_text (uiout, _("\n\
9837 Check the underlying instruction at PC for the memory\n\
9838 address and value which triggered this watchpoint.\n"));
9839   ui_out_text (uiout, "\n");
9840
9841   /* More than one watchpoint may have been triggered.  */
9842   return PRINT_UNKNOWN;
9843 }
9844
9845 /* Implement the "print_one_detail" breakpoint_ops method for
9846    masked hardware watchpoints.  */
9847
9848 static void
9849 print_one_detail_masked_watchpoint (const struct breakpoint *b,
9850                                     struct ui_out *uiout)
9851 {
9852   struct watchpoint *w = (struct watchpoint *) b;
9853
9854   /* Masked watchpoints have only one location.  */
9855   gdb_assert (b->loc && b->loc->next == NULL);
9856
9857   ui_out_text (uiout, "\tmask ");
9858   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
9859   ui_out_text (uiout, "\n");
9860 }
9861
9862 /* Implement the "print_mention" breakpoint_ops method for
9863    masked hardware watchpoints.  */
9864
9865 static void
9866 print_mention_masked_watchpoint (struct breakpoint *b)
9867 {
9868   struct watchpoint *w = (struct watchpoint *) b;
9869   struct ui_out *uiout = current_uiout;
9870   struct cleanup *ui_out_chain;
9871
9872   switch (b->type)
9873     {
9874     case bp_hardware_watchpoint:
9875       ui_out_text (uiout, "Masked hardware watchpoint ");
9876       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
9877       break;
9878     case bp_read_watchpoint:
9879       ui_out_text (uiout, "Masked hardware read watchpoint ");
9880       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
9881       break;
9882     case bp_access_watchpoint:
9883       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
9884       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
9885       break;
9886     default:
9887       internal_error (__FILE__, __LINE__,
9888                       _("Invalid hardware watchpoint type."));
9889     }
9890
9891   ui_out_field_int (uiout, "number", b->number);
9892   ui_out_text (uiout, ": ");
9893   ui_out_field_string (uiout, "exp", w->exp_string);
9894   do_cleanups (ui_out_chain);
9895 }
9896
9897 /* Implement the "print_recreate" breakpoint_ops method for
9898    masked hardware watchpoints.  */
9899
9900 static void
9901 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
9902 {
9903   struct watchpoint *w = (struct watchpoint *) b;
9904   char tmp[40];
9905
9906   switch (b->type)
9907     {
9908     case bp_hardware_watchpoint:
9909       fprintf_unfiltered (fp, "watch");
9910       break;
9911     case bp_read_watchpoint:
9912       fprintf_unfiltered (fp, "rwatch");
9913       break;
9914     case bp_access_watchpoint:
9915       fprintf_unfiltered (fp, "awatch");
9916       break;
9917     default:
9918       internal_error (__FILE__, __LINE__,
9919                       _("Invalid hardware watchpoint type."));
9920     }
9921
9922   sprintf_vma (tmp, w->hw_wp_mask);
9923   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
9924   print_recreate_thread (b, fp);
9925 }
9926
9927 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
9928
9929 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9930
9931 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
9932
9933 static int
9934 is_masked_watchpoint (const struct breakpoint *b)
9935 {
9936   return b->ops == &masked_watchpoint_breakpoint_ops;
9937 }
9938
9939 /* accessflag:  hw_write:  watch write, 
9940                 hw_read:   watch read, 
9941                 hw_access: watch access (read or write) */
9942 static void
9943 watch_command_1 (char *arg, int accessflag, int from_tty,
9944                  int just_location, int internal)
9945 {
9946   volatile struct gdb_exception e;
9947   struct breakpoint *b, *scope_breakpoint = NULL;
9948   struct expression *exp;
9949   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
9950   struct value *val, *mark, *result;
9951   struct frame_info *frame;
9952   char *exp_start = NULL;
9953   char *exp_end = NULL;
9954   char *tok, *end_tok;
9955   int toklen = -1;
9956   char *cond_start = NULL;
9957   char *cond_end = NULL;
9958   enum bptype bp_type;
9959   int thread = -1;
9960   int pc = 0;
9961   /* Flag to indicate whether we are going to use masks for
9962      the hardware watchpoint.  */
9963   int use_mask = 0;
9964   CORE_ADDR mask = 0;
9965   struct watchpoint *w;
9966
9967   /* Make sure that we actually have parameters to parse.  */
9968   if (arg != NULL && arg[0] != '\0')
9969     {
9970       char *value_start;
9971
9972       /* Look for "parameter value" pairs at the end
9973          of the arguments string.  */
9974       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
9975         {
9976           /* Skip whitespace at the end of the argument list.  */
9977           while (tok > arg && (*tok == ' ' || *tok == '\t'))
9978             tok--;
9979
9980           /* Find the beginning of the last token.
9981              This is the value of the parameter.  */
9982           while (tok > arg && (*tok != ' ' && *tok != '\t'))
9983             tok--;
9984           value_start = tok + 1;
9985
9986           /* Skip whitespace.  */
9987           while (tok > arg && (*tok == ' ' || *tok == '\t'))
9988             tok--;
9989
9990           end_tok = tok;
9991
9992           /* Find the beginning of the second to last token.
9993              This is the parameter itself.  */
9994           while (tok > arg && (*tok != ' ' && *tok != '\t'))
9995             tok--;
9996           tok++;
9997           toklen = end_tok - tok + 1;
9998
9999           if (toklen == 6 && !strncmp (tok, "thread", 6))
10000             {
10001               /* At this point we've found a "thread" token, which means
10002                  the user is trying to set a watchpoint that triggers
10003                  only in a specific thread.  */
10004               char *endp;
10005
10006               if (thread != -1)
10007                 error(_("You can specify only one thread."));
10008
10009               /* Extract the thread ID from the next token.  */
10010               thread = strtol (value_start, &endp, 0);
10011
10012               /* Check if the user provided a valid numeric value for the
10013                  thread ID.  */
10014               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10015                 error (_("Invalid thread ID specification %s."), value_start);
10016
10017               /* Check if the thread actually exists.  */
10018               if (!valid_thread_id (thread))
10019                 error (_("Unknown thread %d."), thread);
10020             }
10021           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10022             {
10023               /* We've found a "mask" token, which means the user wants to
10024                  create a hardware watchpoint that is going to have the mask
10025                  facility.  */
10026               struct value *mask_value, *mark;
10027
10028               if (use_mask)
10029                 error(_("You can specify only one mask."));
10030
10031               use_mask = just_location = 1;
10032
10033               mark = value_mark ();
10034               mask_value = parse_to_comma_and_eval (&value_start);
10035               mask = value_as_address (mask_value);
10036               value_free_to_mark (mark);
10037             }
10038           else
10039             /* We didn't recognize what we found.  We should stop here.  */
10040             break;
10041
10042           /* Truncate the string and get rid of the "parameter value" pair before
10043              the arguments string is parsed by the parse_exp_1 function.  */
10044           *tok = '\0';
10045         }
10046     }
10047
10048   /* Parse the rest of the arguments.  */
10049   innermost_block = NULL;
10050   exp_start = arg;
10051   exp = parse_exp_1 (&arg, 0, 0);
10052   exp_end = arg;
10053   /* Remove trailing whitespace from the expression before saving it.
10054      This makes the eventual display of the expression string a bit
10055      prettier.  */
10056   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10057     --exp_end;
10058
10059   /* Checking if the expression is not constant.  */
10060   if (watchpoint_exp_is_const (exp))
10061     {
10062       int len;
10063
10064       len = exp_end - exp_start;
10065       while (len > 0 && isspace (exp_start[len - 1]))
10066         len--;
10067       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10068     }
10069
10070   exp_valid_block = innermost_block;
10071   mark = value_mark ();
10072   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10073
10074   if (just_location)
10075     {
10076       int ret;
10077
10078       exp_valid_block = NULL;
10079       val = value_addr (result);
10080       release_value (val);
10081       value_free_to_mark (mark);
10082
10083       if (use_mask)
10084         {
10085           ret = target_masked_watch_num_registers (value_as_address (val),
10086                                                    mask);
10087           if (ret == -1)
10088             error (_("This target does not support masked watchpoints."));
10089           else if (ret == -2)
10090             error (_("Invalid mask or memory region."));
10091         }
10092     }
10093   else if (val != NULL)
10094     release_value (val);
10095
10096   tok = skip_spaces (arg);
10097   end_tok = skip_to_space (tok);
10098
10099   toklen = end_tok - tok;
10100   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10101     {
10102       struct expression *cond;
10103
10104       innermost_block = NULL;
10105       tok = cond_start = end_tok + 1;
10106       cond = parse_exp_1 (&tok, 0, 0);
10107
10108       /* The watchpoint expression may not be local, but the condition
10109          may still be.  E.g.: `watch global if local > 0'.  */
10110       cond_exp_valid_block = innermost_block;
10111
10112       xfree (cond);
10113       cond_end = tok;
10114     }
10115   if (*tok)
10116     error (_("Junk at end of command."));
10117
10118   if (accessflag == hw_read)
10119     bp_type = bp_read_watchpoint;
10120   else if (accessflag == hw_access)
10121     bp_type = bp_access_watchpoint;
10122   else
10123     bp_type = bp_hardware_watchpoint;
10124
10125   frame = block_innermost_frame (exp_valid_block);
10126
10127   /* If the expression is "local", then set up a "watchpoint scope"
10128      breakpoint at the point where we've left the scope of the watchpoint
10129      expression.  Create the scope breakpoint before the watchpoint, so
10130      that we will encounter it first in bpstat_stop_status.  */
10131   if (exp_valid_block && frame)
10132     {
10133       if (frame_id_p (frame_unwind_caller_id (frame)))
10134         {
10135           scope_breakpoint
10136             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10137                                           frame_unwind_caller_pc (frame),
10138                                           bp_watchpoint_scope,
10139                                           &momentary_breakpoint_ops);
10140
10141           scope_breakpoint->enable_state = bp_enabled;
10142
10143           /* Automatically delete the breakpoint when it hits.  */
10144           scope_breakpoint->disposition = disp_del;
10145
10146           /* Only break in the proper frame (help with recursion).  */
10147           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10148
10149           /* Set the address at which we will stop.  */
10150           scope_breakpoint->loc->gdbarch
10151             = frame_unwind_caller_arch (frame);
10152           scope_breakpoint->loc->requested_address
10153             = frame_unwind_caller_pc (frame);
10154           scope_breakpoint->loc->address
10155             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10156                                          scope_breakpoint->loc->requested_address,
10157                                          scope_breakpoint->type);
10158         }
10159     }
10160
10161   /* Now set up the breakpoint.  */
10162
10163   w = XCNEW (struct watchpoint);
10164   b = &w->base;
10165   if (use_mask)
10166     init_raw_breakpoint_without_location (b, NULL, bp_type,
10167                                           &masked_watchpoint_breakpoint_ops);
10168   else
10169     init_raw_breakpoint_without_location (b, NULL, bp_type,
10170                                           &watchpoint_breakpoint_ops);
10171   b->thread = thread;
10172   b->disposition = disp_donttouch;
10173   b->pspace = current_program_space;
10174   w->exp = exp;
10175   w->exp_valid_block = exp_valid_block;
10176   w->cond_exp_valid_block = cond_exp_valid_block;
10177   if (just_location)
10178     {
10179       struct type *t = value_type (val);
10180       CORE_ADDR addr = value_as_address (val);
10181       char *name;
10182
10183       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10184       name = type_to_string (t);
10185
10186       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10187                                           core_addr_to_string (addr));
10188       xfree (name);
10189
10190       w->exp_string = xstrprintf ("-location %.*s",
10191                                   (int) (exp_end - exp_start), exp_start);
10192
10193       /* The above expression is in C.  */
10194       b->language = language_c;
10195     }
10196   else
10197     w->exp_string = savestring (exp_start, exp_end - exp_start);
10198
10199   if (use_mask)
10200     {
10201       w->hw_wp_mask = mask;
10202     }
10203   else
10204     {
10205       w->val = val;
10206       w->val_valid = 1;
10207     }
10208
10209   if (cond_start)
10210     b->cond_string = savestring (cond_start, cond_end - cond_start);
10211   else
10212     b->cond_string = 0;
10213
10214   if (frame)
10215     {
10216       w->watchpoint_frame = get_frame_id (frame);
10217       w->watchpoint_thread = inferior_ptid;
10218     }
10219   else
10220     {
10221       w->watchpoint_frame = null_frame_id;
10222       w->watchpoint_thread = null_ptid;
10223     }
10224
10225   if (scope_breakpoint != NULL)
10226     {
10227       /* The scope breakpoint is related to the watchpoint.  We will
10228          need to act on them together.  */
10229       b->related_breakpoint = scope_breakpoint;
10230       scope_breakpoint->related_breakpoint = b;
10231     }
10232
10233   if (!just_location)
10234     value_free_to_mark (mark);
10235
10236   TRY_CATCH (e, RETURN_MASK_ALL)
10237     {
10238       /* Finally update the new watchpoint.  This creates the locations
10239          that should be inserted.  */
10240       update_watchpoint (w, 1);
10241     }
10242   if (e.reason < 0)
10243     {
10244       delete_breakpoint (b);
10245       throw_exception (e);
10246     }
10247
10248   install_breakpoint (internal, b, 1);
10249 }
10250
10251 /* Return count of debug registers needed to watch the given expression.
10252    If the watchpoint cannot be handled in hardware return zero.  */
10253
10254 static int
10255 can_use_hardware_watchpoint (struct value *v)
10256 {
10257   int found_memory_cnt = 0;
10258   struct value *head = v;
10259
10260   /* Did the user specifically forbid us to use hardware watchpoints? */
10261   if (!can_use_hw_watchpoints)
10262     return 0;
10263
10264   /* Make sure that the value of the expression depends only upon
10265      memory contents, and values computed from them within GDB.  If we
10266      find any register references or function calls, we can't use a
10267      hardware watchpoint.
10268
10269      The idea here is that evaluating an expression generates a series
10270      of values, one holding the value of every subexpression.  (The
10271      expression a*b+c has five subexpressions: a, b, a*b, c, and
10272      a*b+c.)  GDB's values hold almost enough information to establish
10273      the criteria given above --- they identify memory lvalues,
10274      register lvalues, computed values, etcetera.  So we can evaluate
10275      the expression, and then scan the chain of values that leaves
10276      behind to decide whether we can detect any possible change to the
10277      expression's final value using only hardware watchpoints.
10278
10279      However, I don't think that the values returned by inferior
10280      function calls are special in any way.  So this function may not
10281      notice that an expression involving an inferior function call
10282      can't be watched with hardware watchpoints.  FIXME.  */
10283   for (; v; v = value_next (v))
10284     {
10285       if (VALUE_LVAL (v) == lval_memory)
10286         {
10287           if (v != head && value_lazy (v))
10288             /* A lazy memory lvalue in the chain is one that GDB never
10289                needed to fetch; we either just used its address (e.g.,
10290                `a' in `a.b') or we never needed it at all (e.g., `a'
10291                in `a,b').  This doesn't apply to HEAD; if that is
10292                lazy then it was not readable, but watch it anyway.  */
10293             ;
10294           else
10295             {
10296               /* Ahh, memory we actually used!  Check if we can cover
10297                  it with hardware watchpoints.  */
10298               struct type *vtype = check_typedef (value_type (v));
10299
10300               /* We only watch structs and arrays if user asked for it
10301                  explicitly, never if they just happen to appear in a
10302                  middle of some value chain.  */
10303               if (v == head
10304                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10305                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10306                 {
10307                   CORE_ADDR vaddr = value_address (v);
10308                   int len;
10309                   int num_regs;
10310
10311                   len = (target_exact_watchpoints
10312                          && is_scalar_type_recursive (vtype))?
10313                     1 : TYPE_LENGTH (value_type (v));
10314
10315                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10316                   if (!num_regs)
10317                     return 0;
10318                   else
10319                     found_memory_cnt += num_regs;
10320                 }
10321             }
10322         }
10323       else if (VALUE_LVAL (v) != not_lval
10324                && deprecated_value_modifiable (v) == 0)
10325         return 0;       /* These are values from the history (e.g., $1).  */
10326       else if (VALUE_LVAL (v) == lval_register)
10327         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10328     }
10329
10330   /* The expression itself looks suitable for using a hardware
10331      watchpoint, but give the target machine a chance to reject it.  */
10332   return found_memory_cnt;
10333 }
10334
10335 void
10336 watch_command_wrapper (char *arg, int from_tty, int internal)
10337 {
10338   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10339 }
10340
10341 /* A helper function that looks for an argument at the start of a
10342    string.  The argument must also either be at the end of the string,
10343    or be followed by whitespace.  Returns 1 if it finds the argument,
10344    0 otherwise.  If the argument is found, it updates *STR.  */
10345
10346 static int
10347 check_for_argument (char **str, char *arg, int arg_len)
10348 {
10349   if (strncmp (*str, arg, arg_len) == 0
10350       && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len])))
10351     {
10352       *str += arg_len;
10353       return 1;
10354     }
10355   return 0;
10356 }
10357
10358 /* A helper function that looks for the "-location" argument and then
10359    calls watch_command_1.  */
10360
10361 static void
10362 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
10363 {
10364   int just_location = 0;
10365
10366   if (arg
10367       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10368           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10369     {
10370       arg = skip_spaces (arg);
10371       just_location = 1;
10372     }
10373
10374   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10375 }
10376
10377 static void
10378 watch_command (char *arg, int from_tty)
10379 {
10380   watch_maybe_just_location (arg, hw_write, from_tty);
10381 }
10382
10383 void
10384 rwatch_command_wrapper (char *arg, int from_tty, int internal)
10385 {
10386   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10387 }
10388
10389 static void
10390 rwatch_command (char *arg, int from_tty)
10391 {
10392   watch_maybe_just_location (arg, hw_read, from_tty);
10393 }
10394
10395 void
10396 awatch_command_wrapper (char *arg, int from_tty, int internal)
10397 {
10398   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10399 }
10400
10401 static void
10402 awatch_command (char *arg, int from_tty)
10403 {
10404   watch_maybe_just_location (arg, hw_access, from_tty);
10405 }
10406 \f
10407
10408 /* Helper routines for the until_command routine in infcmd.c.  Here
10409    because it uses the mechanisms of breakpoints.  */
10410
10411 struct until_break_command_continuation_args
10412 {
10413   struct breakpoint *breakpoint;
10414   struct breakpoint *breakpoint2;
10415   int thread_num;
10416 };
10417
10418 /* This function is called by fetch_inferior_event via the
10419    cmd_continuation pointer, to complete the until command.  It takes
10420    care of cleaning up the temporary breakpoints set up by the until
10421    command.  */
10422 static void
10423 until_break_command_continuation (void *arg, int err)
10424 {
10425   struct until_break_command_continuation_args *a = arg;
10426
10427   delete_breakpoint (a->breakpoint);
10428   if (a->breakpoint2)
10429     delete_breakpoint (a->breakpoint2);
10430   delete_longjmp_breakpoint (a->thread_num);
10431 }
10432
10433 void
10434 until_break_command (char *arg, int from_tty, int anywhere)
10435 {
10436   struct symtabs_and_lines sals;
10437   struct symtab_and_line sal;
10438   struct frame_info *frame = get_selected_frame (NULL);
10439   struct gdbarch *frame_gdbarch = get_frame_arch (frame);
10440   struct frame_id stack_frame_id = get_stack_frame_id (frame);
10441   struct frame_id caller_frame_id = frame_unwind_caller_id (frame);
10442   struct breakpoint *breakpoint;
10443   struct breakpoint *breakpoint2 = NULL;
10444   struct cleanup *old_chain;
10445   int thread;
10446   struct thread_info *tp;
10447
10448   clear_proceed_status ();
10449
10450   /* Set a breakpoint where the user wants it and at return from
10451      this function.  */
10452
10453   if (last_displayed_sal_is_valid ())
10454     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10455                           get_last_displayed_symtab (),
10456                           get_last_displayed_line ());
10457   else
10458     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10459                           (struct symtab *) NULL, 0);
10460
10461   if (sals.nelts != 1)
10462     error (_("Couldn't get information on specified line."));
10463
10464   sal = sals.sals[0];
10465   xfree (sals.sals);    /* malloc'd, so freed.  */
10466
10467   if (*arg)
10468     error (_("Junk at end of arguments."));
10469
10470   resolve_sal_pc (&sal);
10471
10472   tp = inferior_thread ();
10473   thread = tp->num;
10474
10475   old_chain = make_cleanup (null_cleanup, NULL);
10476
10477   /* Installing a breakpoint invalidates the frame chain (as it may
10478      need to switch threads), so do any frame handling first.  */
10479
10480   /* Keep within the current frame, or in frames called by the current
10481      one.  */
10482
10483   if (frame_id_p (caller_frame_id))
10484     {
10485       struct symtab_and_line sal2;
10486
10487       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
10488       sal2.pc = frame_unwind_caller_pc (frame);
10489       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
10490                                               sal2,
10491                                               caller_frame_id,
10492                                               bp_until);
10493       make_cleanup_delete_breakpoint (breakpoint2);
10494
10495       set_longjmp_breakpoint (tp, caller_frame_id);
10496       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
10497     }
10498
10499   /* set_momentary_breakpoint could invalidate FRAME.  */
10500   frame = NULL;
10501
10502   if (anywhere)
10503     /* If the user told us to continue until a specified location,
10504        we don't specify a frame at which we need to stop.  */
10505     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10506                                            null_frame_id, bp_until);
10507   else
10508     /* Otherwise, specify the selected frame, because we want to stop
10509        only at the very same frame.  */
10510     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10511                                            stack_frame_id, bp_until);
10512   make_cleanup_delete_breakpoint (breakpoint);
10513
10514   proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
10515
10516   /* If we are running asynchronously, and proceed call above has
10517      actually managed to start the target, arrange for breakpoints to
10518      be deleted when the target stops.  Otherwise, we're already
10519      stopped and delete breakpoints via cleanup chain.  */
10520
10521   if (target_can_async_p () && is_running (inferior_ptid))
10522     {
10523       struct until_break_command_continuation_args *args;
10524       args = xmalloc (sizeof (*args));
10525
10526       args->breakpoint = breakpoint;
10527       args->breakpoint2 = breakpoint2;
10528       args->thread_num = thread;
10529
10530       discard_cleanups (old_chain);
10531       add_continuation (inferior_thread (),
10532                         until_break_command_continuation, args,
10533                         xfree);
10534     }
10535   else
10536     do_cleanups (old_chain);
10537 }
10538
10539 /* This function attempts to parse an optional "if <cond>" clause
10540    from the arg string.  If one is not found, it returns NULL.
10541
10542    Else, it returns a pointer to the condition string.  (It does not
10543    attempt to evaluate the string against a particular block.)  And,
10544    it updates arg to point to the first character following the parsed
10545    if clause in the arg string.  */
10546
10547 static char *
10548 ep_parse_optional_if_clause (char **arg)
10549 {
10550   char *cond_string;
10551
10552   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
10553     return NULL;
10554
10555   /* Skip the "if" keyword.  */
10556   (*arg) += 2;
10557
10558   /* Skip any extra leading whitespace, and record the start of the
10559      condition string.  */
10560   *arg = skip_spaces (*arg);
10561   cond_string = *arg;
10562
10563   /* Assume that the condition occupies the remainder of the arg
10564      string.  */
10565   (*arg) += strlen (cond_string);
10566
10567   return cond_string;
10568 }
10569
10570 /* Commands to deal with catching events, such as signals, exceptions,
10571    process start/exit, etc.  */
10572
10573 typedef enum
10574 {
10575   catch_fork_temporary, catch_vfork_temporary,
10576   catch_fork_permanent, catch_vfork_permanent
10577 }
10578 catch_fork_kind;
10579
10580 static void
10581 catch_fork_command_1 (char *arg, int from_tty, 
10582                       struct cmd_list_element *command)
10583 {
10584   struct gdbarch *gdbarch = get_current_arch ();
10585   char *cond_string = NULL;
10586   catch_fork_kind fork_kind;
10587   int tempflag;
10588
10589   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
10590   tempflag = (fork_kind == catch_fork_temporary
10591               || fork_kind == catch_vfork_temporary);
10592
10593   if (!arg)
10594     arg = "";
10595   arg = skip_spaces (arg);
10596
10597   /* The allowed syntax is:
10598      catch [v]fork
10599      catch [v]fork if <cond>
10600
10601      First, check if there's an if clause.  */
10602   cond_string = ep_parse_optional_if_clause (&arg);
10603
10604   if ((*arg != '\0') && !isspace (*arg))
10605     error (_("Junk at end of arguments."));
10606
10607   /* If this target supports it, create a fork or vfork catchpoint
10608      and enable reporting of such events.  */
10609   switch (fork_kind)
10610     {
10611     case catch_fork_temporary:
10612     case catch_fork_permanent:
10613       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
10614                                           &catch_fork_breakpoint_ops);
10615       break;
10616     case catch_vfork_temporary:
10617     case catch_vfork_permanent:
10618       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
10619                                           &catch_vfork_breakpoint_ops);
10620       break;
10621     default:
10622       error (_("unsupported or unknown fork kind; cannot catch it"));
10623       break;
10624     }
10625 }
10626
10627 static void
10628 catch_exec_command_1 (char *arg, int from_tty, 
10629                       struct cmd_list_element *command)
10630 {
10631   struct exec_catchpoint *c;
10632   struct gdbarch *gdbarch = get_current_arch ();
10633   int tempflag;
10634   char *cond_string = NULL;
10635
10636   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10637
10638   if (!arg)
10639     arg = "";
10640   arg = skip_spaces (arg);
10641
10642   /* The allowed syntax is:
10643      catch exec
10644      catch exec if <cond>
10645
10646      First, check if there's an if clause.  */
10647   cond_string = ep_parse_optional_if_clause (&arg);
10648
10649   if ((*arg != '\0') && !isspace (*arg))
10650     error (_("Junk at end of arguments."));
10651
10652   c = XNEW (struct exec_catchpoint);
10653   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
10654                    &catch_exec_breakpoint_ops);
10655   c->exec_pathname = NULL;
10656
10657   install_breakpoint (0, &c->base, 1);
10658 }
10659
10660 static enum print_stop_action
10661 print_it_exception_catchpoint (bpstat bs)
10662 {
10663   struct ui_out *uiout = current_uiout;
10664   struct breakpoint *b = bs->breakpoint_at;
10665   int bp_temp, bp_throw;
10666
10667   annotate_catchpoint (b->number);
10668
10669   bp_throw = strstr (b->addr_string, "throw") != NULL;
10670   if (b->loc->address != b->loc->requested_address)
10671     breakpoint_adjustment_warning (b->loc->requested_address,
10672                                    b->loc->address,
10673                                    b->number, 1);
10674   bp_temp = b->disposition == disp_del;
10675   ui_out_text (uiout, 
10676                bp_temp ? "Temporary catchpoint "
10677                        : "Catchpoint ");
10678   if (!ui_out_is_mi_like_p (uiout))
10679     ui_out_field_int (uiout, "bkptno", b->number);
10680   ui_out_text (uiout,
10681                bp_throw ? " (exception thrown), "
10682                         : " (exception caught), ");
10683   if (ui_out_is_mi_like_p (uiout))
10684     {
10685       ui_out_field_string (uiout, "reason", 
10686                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10687       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10688       ui_out_field_int (uiout, "bkptno", b->number);
10689     }
10690   return PRINT_SRC_AND_LOC;
10691 }
10692
10693 static void
10694 print_one_exception_catchpoint (struct breakpoint *b, 
10695                                 struct bp_location **last_loc)
10696 {
10697   struct value_print_options opts;
10698   struct ui_out *uiout = current_uiout;
10699
10700   get_user_print_options (&opts);
10701   if (opts.addressprint)
10702     {
10703       annotate_field (4);
10704       if (b->loc == NULL || b->loc->shlib_disabled)
10705         ui_out_field_string (uiout, "addr", "<PENDING>");
10706       else
10707         ui_out_field_core_addr (uiout, "addr",
10708                                 b->loc->gdbarch, b->loc->address);
10709     }
10710   annotate_field (5);
10711   if (b->loc)
10712     *last_loc = b->loc;
10713   if (strstr (b->addr_string, "throw") != NULL)
10714     ui_out_field_string (uiout, "what", "exception throw");
10715   else
10716     ui_out_field_string (uiout, "what", "exception catch");
10717 }
10718
10719 static void
10720 print_mention_exception_catchpoint (struct breakpoint *b)
10721 {
10722   struct ui_out *uiout = current_uiout;
10723   int bp_temp;
10724   int bp_throw;
10725
10726   bp_temp = b->disposition == disp_del;
10727   bp_throw = strstr (b->addr_string, "throw") != NULL;
10728   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
10729                               : _("Catchpoint "));
10730   ui_out_field_int (uiout, "bkptno", b->number);
10731   ui_out_text (uiout, bp_throw ? _(" (throw)")
10732                                : _(" (catch)"));
10733 }
10734
10735 /* Implement the "print_recreate" breakpoint_ops method for throw and
10736    catch catchpoints.  */
10737
10738 static void
10739 print_recreate_exception_catchpoint (struct breakpoint *b, 
10740                                      struct ui_file *fp)
10741 {
10742   int bp_temp;
10743   int bp_throw;
10744
10745   bp_temp = b->disposition == disp_del;
10746   bp_throw = strstr (b->addr_string, "throw") != NULL;
10747   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
10748   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
10749   print_recreate_thread (b, fp);
10750 }
10751
10752 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
10753
10754 static int
10755 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
10756                           enum exception_event_kind ex_event, int from_tty)
10757 {
10758   char *trigger_func_name;
10759  
10760   if (ex_event == EX_EVENT_CATCH)
10761     trigger_func_name = "__cxa_begin_catch";
10762   else
10763     trigger_func_name = "__cxa_throw";
10764
10765   create_breakpoint (get_current_arch (),
10766                      trigger_func_name, cond_string, -1,
10767                      0 /* condition and thread are valid.  */,
10768                      tempflag, bp_breakpoint,
10769                      0,
10770                      AUTO_BOOLEAN_TRUE /* pending */,
10771                      &gnu_v3_exception_catchpoint_ops, from_tty,
10772                      1 /* enabled */,
10773                      0 /* internal */);
10774
10775   return 1;
10776 }
10777
10778 /* Deal with "catch catch" and "catch throw" commands.  */
10779
10780 static void
10781 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
10782                            int tempflag, int from_tty)
10783 {
10784   char *cond_string = NULL;
10785
10786   if (!arg)
10787     arg = "";
10788   arg = skip_spaces (arg);
10789
10790   cond_string = ep_parse_optional_if_clause (&arg);
10791
10792   if ((*arg != '\0') && !isspace (*arg))
10793     error (_("Junk at end of arguments."));
10794
10795   if (ex_event != EX_EVENT_THROW
10796       && ex_event != EX_EVENT_CATCH)
10797     error (_("Unsupported or unknown exception event; cannot catch it"));
10798
10799   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
10800     return;
10801
10802   warning (_("Unsupported with this platform/compiler combination."));
10803 }
10804
10805 /* Implementation of "catch catch" command.  */
10806
10807 static void
10808 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
10809 {
10810   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10811
10812   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
10813 }
10814
10815 /* Implementation of "catch throw" command.  */
10816
10817 static void
10818 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
10819 {
10820   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10821
10822   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
10823 }
10824
10825 void
10826 init_ada_exception_breakpoint (struct breakpoint *b,
10827                                struct gdbarch *gdbarch,
10828                                struct symtab_and_line sal,
10829                                char *addr_string,
10830                                const struct breakpoint_ops *ops,
10831                                int tempflag,
10832                                int from_tty)
10833 {
10834   if (from_tty)
10835     {
10836       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
10837       if (!loc_gdbarch)
10838         loc_gdbarch = gdbarch;
10839
10840       describe_other_breakpoints (loc_gdbarch,
10841                                   sal.pspace, sal.pc, sal.section, -1);
10842       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
10843          version for exception catchpoints, because two catchpoints
10844          used for different exception names will use the same address.
10845          In this case, a "breakpoint ... also set at..." warning is
10846          unproductive.  Besides, the warning phrasing is also a bit
10847          inappropriate, we should use the word catchpoint, and tell
10848          the user what type of catchpoint it is.  The above is good
10849          enough for now, though.  */
10850     }
10851
10852   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
10853
10854   b->enable_state = bp_enabled;
10855   b->disposition = tempflag ? disp_del : disp_donttouch;
10856   b->addr_string = addr_string;
10857   b->language = language_ada;
10858 }
10859
10860 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
10861    filter list, or NULL if no filtering is required.  */
10862 static VEC(int) *
10863 catch_syscall_split_args (char *arg)
10864 {
10865   VEC(int) *result = NULL;
10866   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
10867
10868   while (*arg != '\0')
10869     {
10870       int i, syscall_number;
10871       char *endptr;
10872       char cur_name[128];
10873       struct syscall s;
10874
10875       /* Skip whitespace.  */
10876       while (isspace (*arg))
10877         arg++;
10878
10879       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
10880         cur_name[i] = arg[i];
10881       cur_name[i] = '\0';
10882       arg += i;
10883
10884       /* Check if the user provided a syscall name or a number.  */
10885       syscall_number = (int) strtol (cur_name, &endptr, 0);
10886       if (*endptr == '\0')
10887         get_syscall_by_number (syscall_number, &s);
10888       else
10889         {
10890           /* We have a name.  Let's check if it's valid and convert it
10891              to a number.  */
10892           get_syscall_by_name (cur_name, &s);
10893
10894           if (s.number == UNKNOWN_SYSCALL)
10895             /* Here we have to issue an error instead of a warning,
10896                because GDB cannot do anything useful if there's no
10897                syscall number to be caught.  */
10898             error (_("Unknown syscall name '%s'."), cur_name);
10899         }
10900
10901       /* Ok, it's valid.  */
10902       VEC_safe_push (int, result, s.number);
10903     }
10904
10905   discard_cleanups (cleanup);
10906   return result;
10907 }
10908
10909 /* Implement the "catch syscall" command.  */
10910
10911 static void
10912 catch_syscall_command_1 (char *arg, int from_tty, 
10913                          struct cmd_list_element *command)
10914 {
10915   int tempflag;
10916   VEC(int) *filter;
10917   struct syscall s;
10918   struct gdbarch *gdbarch = get_current_arch ();
10919
10920   /* Checking if the feature if supported.  */
10921   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
10922     error (_("The feature 'catch syscall' is not supported on \
10923 this architecture yet."));
10924
10925   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
10926
10927   arg = skip_spaces (arg);
10928
10929   /* We need to do this first "dummy" translation in order
10930      to get the syscall XML file loaded or, most important,
10931      to display a warning to the user if there's no XML file
10932      for his/her architecture.  */
10933   get_syscall_by_number (0, &s);
10934
10935   /* The allowed syntax is:
10936      catch syscall
10937      catch syscall <name | number> [<name | number> ... <name | number>]
10938
10939      Let's check if there's a syscall name.  */
10940
10941   if (arg != NULL)
10942     filter = catch_syscall_split_args (arg);
10943   else
10944     filter = NULL;
10945
10946   create_syscall_event_catchpoint (tempflag, filter,
10947                                    &catch_syscall_breakpoint_ops);
10948 }
10949
10950 static void
10951 catch_command (char *arg, int from_tty)
10952 {
10953   error (_("Catch requires an event name."));
10954 }
10955 \f
10956
10957 static void
10958 tcatch_command (char *arg, int from_tty)
10959 {
10960   error (_("Catch requires an event name."));
10961 }
10962
10963 /* A qsort comparison function that sorts breakpoints in order.  */
10964
10965 static int
10966 compare_breakpoints (const void *a, const void *b)
10967 {
10968   const breakpoint_p *ba = a;
10969   uintptr_t ua = (uintptr_t) *ba;
10970   const breakpoint_p *bb = b;
10971   uintptr_t ub = (uintptr_t) *bb;
10972
10973   if ((*ba)->number < (*bb)->number)
10974     return -1;
10975   else if ((*ba)->number > (*bb)->number)
10976     return 1;
10977
10978   /* Now sort by address, in case we see, e..g, two breakpoints with
10979      the number 0.  */
10980   if (ua < ub)
10981     return -1;
10982   return ub > ub ? 1 : 0;
10983 }
10984
10985 /* Delete breakpoints by address or line.  */
10986
10987 static void
10988 clear_command (char *arg, int from_tty)
10989 {
10990   struct breakpoint *b, *prev;
10991   VEC(breakpoint_p) *found = 0;
10992   int ix;
10993   int default_match;
10994   struct symtabs_and_lines sals;
10995   struct symtab_and_line sal;
10996   int i;
10997   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
10998
10999   if (arg)
11000     {
11001       sals = decode_line_spec (arg, (DECODE_LINE_FUNFIRSTLINE
11002                                      | DECODE_LINE_LIST_MODE));
11003       default_match = 0;
11004     }
11005   else
11006     {
11007       sals.sals = (struct symtab_and_line *)
11008         xmalloc (sizeof (struct symtab_and_line));
11009       make_cleanup (xfree, sals.sals);
11010       init_sal (&sal);          /* Initialize to zeroes.  */
11011
11012       /* Set sal's line, symtab, pc, and pspace to the values
11013          corresponding to the last call to print_frame_info.  If the
11014          codepoint is not valid, this will set all the fields to 0.  */
11015       get_last_displayed_sal (&sal);
11016       if (sal.symtab == 0)
11017         error (_("No source file specified."));
11018
11019       sals.sals[0] = sal;
11020       sals.nelts = 1;
11021
11022       default_match = 1;
11023     }
11024
11025   /* We don't call resolve_sal_pc here.  That's not as bad as it
11026      seems, because all existing breakpoints typically have both
11027      file/line and pc set.  So, if clear is given file/line, we can
11028      match this to existing breakpoint without obtaining pc at all.
11029
11030      We only support clearing given the address explicitly 
11031      present in breakpoint table.  Say, we've set breakpoint 
11032      at file:line.  There were several PC values for that file:line,
11033      due to optimization, all in one block.
11034
11035      We've picked one PC value.  If "clear" is issued with another
11036      PC corresponding to the same file:line, the breakpoint won't
11037      be cleared.  We probably can still clear the breakpoint, but 
11038      since the other PC value is never presented to user, user
11039      can only find it by guessing, and it does not seem important
11040      to support that.  */
11041
11042   /* For each line spec given, delete bps which correspond to it.  Do
11043      it in two passes, solely to preserve the current behavior that
11044      from_tty is forced true if we delete more than one
11045      breakpoint.  */
11046
11047   found = NULL;
11048   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11049   for (i = 0; i < sals.nelts; i++)
11050     {
11051       int is_abs, sal_name_len;
11052
11053       /* If exact pc given, clear bpts at that pc.
11054          If line given (pc == 0), clear all bpts on specified line.
11055          If defaulting, clear all bpts on default line
11056          or at default pc.
11057
11058          defaulting    sal.pc != 0    tests to do
11059
11060          0              1             pc
11061          1              1             pc _and_ line
11062          0              0             line
11063          1              0             <can't happen> */
11064
11065       sal = sals.sals[i];
11066       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11067       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11068
11069       /* Find all matching breakpoints and add them to 'found'.  */
11070       ALL_BREAKPOINTS (b)
11071         {
11072           int match = 0;
11073           /* Are we going to delete b?  */
11074           if (b->type != bp_none && !is_watchpoint (b))
11075             {
11076               struct bp_location *loc = b->loc;
11077               for (; loc; loc = loc->next)
11078                 {
11079                   /* If the user specified file:line, don't allow a PC
11080                      match.  This matches historical gdb behavior.  */
11081                   int pc_match = (!sal.explicit_line
11082                                   && sal.pc
11083                                   && (loc->pspace == sal.pspace)
11084                                   && (loc->address == sal.pc)
11085                                   && (!section_is_overlay (loc->section)
11086                                       || loc->section == sal.section));
11087                   int line_match = 0;
11088
11089                   if ((default_match || sal.explicit_line)
11090                       && loc->source_file != NULL
11091                       && sal.symtab != NULL
11092                       && sal.pspace == loc->pspace
11093                       && loc->line_number == sal.line)
11094                     {
11095                       if (filename_cmp (loc->source_file,
11096                                         sal.symtab->filename) == 0)
11097                         line_match = 1;
11098                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11099                                && compare_filenames_for_search (loc->source_file,
11100                                                                 sal.symtab->filename,
11101                                                                 sal_name_len))
11102                         line_match = 1;
11103                     }
11104
11105                   if (pc_match || line_match)
11106                     {
11107                       match = 1;
11108                       break;
11109                     }
11110                 }
11111             }
11112
11113           if (match)
11114             VEC_safe_push(breakpoint_p, found, b);
11115         }
11116     }
11117
11118   /* Now go thru the 'found' chain and delete them.  */
11119   if (VEC_empty(breakpoint_p, found))
11120     {
11121       if (arg)
11122         error (_("No breakpoint at %s."), arg);
11123       else
11124         error (_("No breakpoint at this line."));
11125     }
11126
11127   /* Remove duplicates from the vec.  */
11128   qsort (VEC_address (breakpoint_p, found),
11129          VEC_length (breakpoint_p, found),
11130          sizeof (breakpoint_p),
11131          compare_breakpoints);
11132   prev = VEC_index (breakpoint_p, found, 0);
11133   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11134     {
11135       if (b == prev)
11136         {
11137           VEC_ordered_remove (breakpoint_p, found, ix);
11138           --ix;
11139         }
11140     }
11141
11142   if (VEC_length(breakpoint_p, found) > 1)
11143     from_tty = 1;       /* Always report if deleted more than one.  */
11144   if (from_tty)
11145     {
11146       if (VEC_length(breakpoint_p, found) == 1)
11147         printf_unfiltered (_("Deleted breakpoint "));
11148       else
11149         printf_unfiltered (_("Deleted breakpoints "));
11150     }
11151   breakpoints_changed ();
11152
11153   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11154     {
11155       if (from_tty)
11156         printf_unfiltered ("%d ", b->number);
11157       delete_breakpoint (b);
11158     }
11159   if (from_tty)
11160     putchar_unfiltered ('\n');
11161
11162   do_cleanups (cleanups);
11163 }
11164 \f
11165 /* Delete breakpoint in BS if they are `delete' breakpoints and
11166    all breakpoints that are marked for deletion, whether hit or not.
11167    This is called after any breakpoint is hit, or after errors.  */
11168
11169 void
11170 breakpoint_auto_delete (bpstat bs)
11171 {
11172   struct breakpoint *b, *b_tmp;
11173
11174   for (; bs; bs = bs->next)
11175     if (bs->breakpoint_at
11176         && bs->breakpoint_at->disposition == disp_del
11177         && bs->stop)
11178       delete_breakpoint (bs->breakpoint_at);
11179
11180   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11181   {
11182     if (b->disposition == disp_del_at_next_stop)
11183       delete_breakpoint (b);
11184   }
11185 }
11186
11187 /* A comparison function for bp_location AP and BP being interfaced to
11188    qsort.  Sort elements primarily by their ADDRESS (no matter what
11189    does breakpoint_address_is_meaningful say for its OWNER),
11190    secondarily by ordering first bp_permanent OWNERed elements and
11191    terciarily just ensuring the array is sorted stable way despite
11192    qsort being an unstable algorithm.  */
11193
11194 static int
11195 bp_location_compare (const void *ap, const void *bp)
11196 {
11197   struct bp_location *a = *(void **) ap;
11198   struct bp_location *b = *(void **) bp;
11199   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11200   int a_perm = a->owner->enable_state == bp_permanent;
11201   int b_perm = b->owner->enable_state == bp_permanent;
11202
11203   if (a->address != b->address)
11204     return (a->address > b->address) - (a->address < b->address);
11205
11206   /* Sort locations at the same address by their pspace number, keeping
11207      locations of the same inferior (in a multi-inferior environment)
11208      grouped.  */
11209
11210   if (a->pspace->num != b->pspace->num)
11211     return ((a->pspace->num > b->pspace->num)
11212             - (a->pspace->num < b->pspace->num));
11213
11214   /* Sort permanent breakpoints first.  */
11215   if (a_perm != b_perm)
11216     return (a_perm < b_perm) - (a_perm > b_perm);
11217
11218   /* Make the internal GDB representation stable across GDB runs
11219      where A and B memory inside GDB can differ.  Breakpoint locations of
11220      the same type at the same address can be sorted in arbitrary order.  */
11221
11222   if (a->owner->number != b->owner->number)
11223     return ((a->owner->number > b->owner->number)
11224             - (a->owner->number < b->owner->number));
11225
11226   return (a > b) - (a < b);
11227 }
11228
11229 /* Set bp_location_placed_address_before_address_max and
11230    bp_location_shadow_len_after_address_max according to the current
11231    content of the bp_location array.  */
11232
11233 static void
11234 bp_location_target_extensions_update (void)
11235 {
11236   struct bp_location *bl, **blp_tmp;
11237
11238   bp_location_placed_address_before_address_max = 0;
11239   bp_location_shadow_len_after_address_max = 0;
11240
11241   ALL_BP_LOCATIONS (bl, blp_tmp)
11242     {
11243       CORE_ADDR start, end, addr;
11244
11245       if (!bp_location_has_shadow (bl))
11246         continue;
11247
11248       start = bl->target_info.placed_address;
11249       end = start + bl->target_info.shadow_len;
11250
11251       gdb_assert (bl->address >= start);
11252       addr = bl->address - start;
11253       if (addr > bp_location_placed_address_before_address_max)
11254         bp_location_placed_address_before_address_max = addr;
11255
11256       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11257
11258       gdb_assert (bl->address < end);
11259       addr = end - bl->address;
11260       if (addr > bp_location_shadow_len_after_address_max)
11261         bp_location_shadow_len_after_address_max = addr;
11262     }
11263 }
11264
11265 /* Download tracepoint locations if they haven't been.  */
11266
11267 static void
11268 download_tracepoint_locations (void)
11269 {
11270   struct bp_location *bl, **blp_tmp;
11271   struct cleanup *old_chain;
11272
11273   if (!target_can_download_tracepoint ())
11274     return;
11275
11276   old_chain = save_current_space_and_thread ();
11277
11278   ALL_BP_LOCATIONS (bl, blp_tmp)
11279     {
11280       struct tracepoint *t;
11281
11282       if (!is_tracepoint (bl->owner))
11283         continue;
11284
11285       if ((bl->owner->type == bp_fast_tracepoint
11286            ? !may_insert_fast_tracepoints
11287            : !may_insert_tracepoints))
11288         continue;
11289
11290       /* In tracepoint, locations are _never_ duplicated, so
11291          should_be_inserted is equivalent to
11292          unduplicated_should_be_inserted.  */
11293       if (!should_be_inserted (bl) || bl->inserted)
11294         continue;
11295
11296       switch_to_program_space_and_thread (bl->pspace);
11297
11298       target_download_tracepoint (bl);
11299
11300       bl->inserted = 1;
11301       t = (struct tracepoint *) bl->owner;
11302       t->number_on_target = bl->owner->number;
11303     }
11304
11305   do_cleanups (old_chain);
11306 }
11307
11308 /* Swap the insertion/duplication state between two locations.  */
11309
11310 static void
11311 swap_insertion (struct bp_location *left, struct bp_location *right)
11312 {
11313   const int left_inserted = left->inserted;
11314   const int left_duplicate = left->duplicate;
11315   const int left_needs_update = left->needs_update;
11316   const struct bp_target_info left_target_info = left->target_info;
11317
11318   /* Locations of tracepoints can never be duplicated.  */
11319   if (is_tracepoint (left->owner))
11320     gdb_assert (!left->duplicate);
11321   if (is_tracepoint (right->owner))
11322     gdb_assert (!right->duplicate);
11323
11324   left->inserted = right->inserted;
11325   left->duplicate = right->duplicate;
11326   left->needs_update = right->needs_update;
11327   left->target_info = right->target_info;
11328   right->inserted = left_inserted;
11329   right->duplicate = left_duplicate;
11330   right->needs_update = left_needs_update;
11331   right->target_info = left_target_info;
11332 }
11333
11334 /* Force the re-insertion of the locations at ADDRESS.  This is called
11335    once a new/deleted/modified duplicate location is found and we are evaluating
11336    conditions on the target's side.  Such conditions need to be updated on
11337    the target.  */
11338
11339 static void
11340 force_breakpoint_reinsertion (struct bp_location *bl)
11341 {
11342   struct bp_location **locp = NULL, **loc2p;
11343   struct bp_location *loc;
11344   CORE_ADDR address = 0;
11345   int pspace_num;
11346
11347   address = bl->address;
11348   pspace_num = bl->pspace->num;
11349
11350   /* This is only meaningful if the target is
11351      evaluating conditions and if the user has
11352      opted for condition evaluation on the target's
11353      side.  */
11354   if (gdb_evaluates_breakpoint_condition_p ()
11355       || !target_supports_evaluation_of_breakpoint_conditions ())
11356     return;
11357
11358   /* Flag all breakpoint locations with this address and
11359      the same program space as the location
11360      as "its condition has changed".  We need to
11361      update the conditions on the target's side.  */
11362   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11363     {
11364       loc = *loc2p;
11365
11366       if (!is_breakpoint (loc->owner)
11367           || pspace_num != loc->pspace->num)
11368         continue;
11369
11370       /* Flag the location appropriately.  We use a different state to
11371          let everyone know that we already updated the set of locations
11372          with addr bl->address and program space bl->pspace.  This is so
11373          we don't have to keep calling these functions just to mark locations
11374          that have already been marked.  */
11375       loc->condition_changed = condition_updated;
11376
11377       /* Free the agent expression bytecode as well.  We will compute
11378          it later on.  */
11379       if (loc->cond_bytecode)
11380         {
11381           free_agent_expr (loc->cond_bytecode);
11382           loc->cond_bytecode = NULL;
11383         }
11384     }
11385 }
11386
11387 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
11388    into the inferior, only remove already-inserted locations that no
11389    longer should be inserted.  Functions that delete a breakpoint or
11390    breakpoints should pass false, so that deleting a breakpoint
11391    doesn't have the side effect of inserting the locations of other
11392    breakpoints that are marked not-inserted, but should_be_inserted
11393    returns true on them.
11394
11395    This behaviour is useful is situations close to tear-down -- e.g.,
11396    after an exec, while the target still has execution, but breakpoint
11397    shadows of the previous executable image should *NOT* be restored
11398    to the new image; or before detaching, where the target still has
11399    execution and wants to delete breakpoints from GDB's lists, and all
11400    breakpoints had already been removed from the inferior.  */
11401
11402 static void
11403 update_global_location_list (int should_insert)
11404 {
11405   struct breakpoint *b;
11406   struct bp_location **locp, *loc;
11407   struct cleanup *cleanups;
11408   /* Last breakpoint location address that was marked for update.  */
11409   CORE_ADDR last_addr = 0;
11410   /* Last breakpoint location program space that was marked for update.  */
11411   int last_pspace_num = -1;
11412
11413   /* Used in the duplicates detection below.  When iterating over all
11414      bp_locations, points to the first bp_location of a given address.
11415      Breakpoints and watchpoints of different types are never
11416      duplicates of each other.  Keep one pointer for each type of
11417      breakpoint/watchpoint, so we only need to loop over all locations
11418      once.  */
11419   struct bp_location *bp_loc_first;  /* breakpoint */
11420   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11421   struct bp_location *awp_loc_first; /* access watchpoint */
11422   struct bp_location *rwp_loc_first; /* read watchpoint */
11423
11424   /* Saved former bp_location array which we compare against the newly
11425      built bp_location from the current state of ALL_BREAKPOINTS.  */
11426   struct bp_location **old_location, **old_locp;
11427   unsigned old_location_count;
11428
11429   old_location = bp_location;
11430   old_location_count = bp_location_count;
11431   bp_location = NULL;
11432   bp_location_count = 0;
11433   cleanups = make_cleanup (xfree, old_location);
11434
11435   ALL_BREAKPOINTS (b)
11436     for (loc = b->loc; loc; loc = loc->next)
11437       bp_location_count++;
11438
11439   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
11440   locp = bp_location;
11441   ALL_BREAKPOINTS (b)
11442     for (loc = b->loc; loc; loc = loc->next)
11443       *locp++ = loc;
11444   qsort (bp_location, bp_location_count, sizeof (*bp_location),
11445          bp_location_compare);
11446
11447   bp_location_target_extensions_update ();
11448
11449   /* Identify bp_location instances that are no longer present in the
11450      new list, and therefore should be freed.  Note that it's not
11451      necessary that those locations should be removed from inferior --
11452      if there's another location at the same address (previously
11453      marked as duplicate), we don't need to remove/insert the
11454      location.
11455      
11456      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11457      and former bp_location array state respectively.  */
11458
11459   locp = bp_location;
11460   for (old_locp = old_location; old_locp < old_location + old_location_count;
11461        old_locp++)
11462     {
11463       struct bp_location *old_loc = *old_locp;
11464       struct bp_location **loc2p;
11465
11466       /* Tells if 'old_loc' is found among the new locations.  If
11467          not, we have to free it.  */
11468       int found_object = 0;
11469       /* Tells if the location should remain inserted in the target.  */
11470       int keep_in_target = 0;
11471       int removed = 0;
11472
11473       /* Skip LOCP entries which will definitely never be needed.
11474          Stop either at or being the one matching OLD_LOC.  */
11475       while (locp < bp_location + bp_location_count
11476              && (*locp)->address < old_loc->address)
11477         locp++;
11478
11479       for (loc2p = locp;
11480            (loc2p < bp_location + bp_location_count
11481             && (*loc2p)->address == old_loc->address);
11482            loc2p++)
11483         {
11484           /* Check if this is a new/duplicated location or a duplicated
11485              location that had its condition modified.  If so, we want to send
11486              its condition to the target if evaluation of conditions is taking
11487              place there.  */
11488           if ((*loc2p)->condition_changed == condition_modified
11489               && (last_addr != old_loc->address
11490                   || last_pspace_num != old_loc->pspace->num))
11491             {
11492               force_breakpoint_reinsertion (*loc2p);
11493               last_pspace_num = old_loc->pspace->num;
11494             }
11495
11496           if (*loc2p == old_loc)
11497             found_object = 1;
11498         }
11499
11500       /* We have already handled this address, update it so that we don't
11501          have to go through updates again.  */
11502       last_addr = old_loc->address;
11503
11504       /* Target-side condition evaluation: Handle deleted locations.  */
11505       if (!found_object)
11506         force_breakpoint_reinsertion (old_loc);
11507
11508       /* If this location is no longer present, and inserted, look if
11509          there's maybe a new location at the same address.  If so,
11510          mark that one inserted, and don't remove this one.  This is
11511          needed so that we don't have a time window where a breakpoint
11512          at certain location is not inserted.  */
11513
11514       if (old_loc->inserted)
11515         {
11516           /* If the location is inserted now, we might have to remove
11517              it.  */
11518
11519           if (found_object && should_be_inserted (old_loc))
11520             {
11521               /* The location is still present in the location list,
11522                  and still should be inserted.  Don't do anything.  */
11523               keep_in_target = 1;
11524             }
11525           else
11526             {
11527               /* This location still exists, but it won't be kept in the
11528                  target since it may have been disabled.  We proceed to
11529                  remove its target-side condition.  */
11530
11531               /* The location is either no longer present, or got
11532                  disabled.  See if there's another location at the
11533                  same address, in which case we don't need to remove
11534                  this one from the target.  */
11535
11536               /* OLD_LOC comes from existing struct breakpoint.  */
11537               if (breakpoint_address_is_meaningful (old_loc->owner))
11538                 {
11539                   for (loc2p = locp;
11540                        (loc2p < bp_location + bp_location_count
11541                         && (*loc2p)->address == old_loc->address);
11542                        loc2p++)
11543                     {
11544                       struct bp_location *loc2 = *loc2p;
11545
11546                       if (breakpoint_locations_match (loc2, old_loc))
11547                         {
11548                           /* Read watchpoint locations are switched to
11549                              access watchpoints, if the former are not
11550                              supported, but the latter are.  */
11551                           if (is_hardware_watchpoint (old_loc->owner))
11552                             {
11553                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11554                               loc2->watchpoint_type = old_loc->watchpoint_type;
11555                             }
11556
11557                           /* loc2 is a duplicated location. We need to check
11558                              if it should be inserted in case it will be
11559                              unduplicated.  */
11560                           if (loc2 != old_loc
11561                               && unduplicated_should_be_inserted (loc2))
11562                             {
11563                               swap_insertion (old_loc, loc2);
11564                               keep_in_target = 1;
11565                               break;
11566                             }
11567                         }
11568                     }
11569                 }
11570             }
11571
11572           if (!keep_in_target)
11573             {
11574               if (remove_breakpoint (old_loc, mark_uninserted))
11575                 {
11576                   /* This is just about all we can do.  We could keep
11577                      this location on the global list, and try to
11578                      remove it next time, but there's no particular
11579                      reason why we will succeed next time.
11580                      
11581                      Note that at this point, old_loc->owner is still
11582                      valid, as delete_breakpoint frees the breakpoint
11583                      only after calling us.  */
11584                   printf_filtered (_("warning: Error removing "
11585                                      "breakpoint %d\n"), 
11586                                    old_loc->owner->number);
11587                 }
11588               removed = 1;
11589             }
11590         }
11591
11592       if (!found_object)
11593         {
11594           if (removed && non_stop
11595               && breakpoint_address_is_meaningful (old_loc->owner)
11596               && !is_hardware_watchpoint (old_loc->owner))
11597             {
11598               /* This location was removed from the target.  In
11599                  non-stop mode, a race condition is possible where
11600                  we've removed a breakpoint, but stop events for that
11601                  breakpoint are already queued and will arrive later.
11602                  We apply an heuristic to be able to distinguish such
11603                  SIGTRAPs from other random SIGTRAPs: we keep this
11604                  breakpoint location for a bit, and will retire it
11605                  after we see some number of events.  The theory here
11606                  is that reporting of events should, "on the average",
11607                  be fair, so after a while we'll see events from all
11608                  threads that have anything of interest, and no longer
11609                  need to keep this breakpoint location around.  We
11610                  don't hold locations forever so to reduce chances of
11611                  mistaking a non-breakpoint SIGTRAP for a breakpoint
11612                  SIGTRAP.
11613
11614                  The heuristic failing can be disastrous on
11615                  decr_pc_after_break targets.
11616
11617                  On decr_pc_after_break targets, like e.g., x86-linux,
11618                  if we fail to recognize a late breakpoint SIGTRAP,
11619                  because events_till_retirement has reached 0 too
11620                  soon, we'll fail to do the PC adjustment, and report
11621                  a random SIGTRAP to the user.  When the user resumes
11622                  the inferior, it will most likely immediately crash
11623                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11624                  corrupted, because of being resumed e.g., in the
11625                  middle of a multi-byte instruction, or skipped a
11626                  one-byte instruction.  This was actually seen happen
11627                  on native x86-linux, and should be less rare on
11628                  targets that do not support new thread events, like
11629                  remote, due to the heuristic depending on
11630                  thread_count.
11631
11632                  Mistaking a random SIGTRAP for a breakpoint trap
11633                  causes similar symptoms (PC adjustment applied when
11634                  it shouldn't), but then again, playing with SIGTRAPs
11635                  behind the debugger's back is asking for trouble.
11636
11637                  Since hardware watchpoint traps are always
11638                  distinguishable from other traps, so we don't need to
11639                  apply keep hardware watchpoint moribund locations
11640                  around.  We simply always ignore hardware watchpoint
11641                  traps we can no longer explain.  */
11642
11643               old_loc->events_till_retirement = 3 * (thread_count () + 1);
11644               old_loc->owner = NULL;
11645
11646               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
11647             }
11648           else
11649             {
11650               old_loc->owner = NULL;
11651               decref_bp_location (&old_loc);
11652             }
11653         }
11654     }
11655
11656   /* Rescan breakpoints at the same address and section, marking the
11657      first one as "first" and any others as "duplicates".  This is so
11658      that the bpt instruction is only inserted once.  If we have a
11659      permanent breakpoint at the same place as BPT, make that one the
11660      official one, and the rest as duplicates.  Permanent breakpoints
11661      are sorted first for the same address.
11662
11663      Do the same for hardware watchpoints, but also considering the
11664      watchpoint's type (regular/access/read) and length.  */
11665
11666   bp_loc_first = NULL;
11667   wp_loc_first = NULL;
11668   awp_loc_first = NULL;
11669   rwp_loc_first = NULL;
11670   ALL_BP_LOCATIONS (loc, locp)
11671     {
11672       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11673          non-NULL.  */
11674       struct bp_location **loc_first_p;
11675       b = loc->owner;
11676
11677       if (!should_be_inserted (loc)
11678           || !breakpoint_address_is_meaningful (b)
11679           /* Don't detect duplicate for tracepoint locations because they are
11680            never duplicated.  See the comments in field `duplicate' of
11681            `struct bp_location'.  */
11682           || is_tracepoint (b))
11683         {
11684           /* Clear the condition modification flag.  */
11685           loc->condition_changed = condition_unchanged;
11686           continue;
11687         }
11688
11689       /* Permanent breakpoint should always be inserted.  */
11690       if (b->enable_state == bp_permanent && ! loc->inserted)
11691         internal_error (__FILE__, __LINE__,
11692                         _("allegedly permanent breakpoint is not "
11693                         "actually inserted"));
11694
11695       if (b->type == bp_hardware_watchpoint)
11696         loc_first_p = &wp_loc_first;
11697       else if (b->type == bp_read_watchpoint)
11698         loc_first_p = &rwp_loc_first;
11699       else if (b->type == bp_access_watchpoint)
11700         loc_first_p = &awp_loc_first;
11701       else
11702         loc_first_p = &bp_loc_first;
11703
11704       if (*loc_first_p == NULL
11705           || (overlay_debugging && loc->section != (*loc_first_p)->section)
11706           || !breakpoint_locations_match (loc, *loc_first_p))
11707         {
11708           *loc_first_p = loc;
11709           loc->duplicate = 0;
11710
11711           if (is_breakpoint (loc->owner) && loc->condition_changed)
11712             {
11713               loc->needs_update = 1;
11714               /* Clear the condition modification flag.  */
11715               loc->condition_changed = condition_unchanged;
11716             }
11717           continue;
11718         }
11719
11720
11721       /* This and the above ensure the invariant that the first location
11722          is not duplicated, and is the inserted one.
11723          All following are marked as duplicated, and are not inserted.  */
11724       if (loc->inserted)
11725         swap_insertion (loc, *loc_first_p);
11726       loc->duplicate = 1;
11727
11728       /* Clear the condition modification flag.  */
11729       loc->condition_changed = condition_unchanged;
11730
11731       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
11732           && b->enable_state != bp_permanent)
11733         internal_error (__FILE__, __LINE__,
11734                         _("another breakpoint was inserted on top of "
11735                         "a permanent breakpoint"));
11736     }
11737
11738   if (breakpoints_always_inserted_mode ()
11739       && (have_live_inferiors ()
11740           || (gdbarch_has_global_breakpoints (target_gdbarch))))
11741     {
11742       if (should_insert)
11743         insert_breakpoint_locations ();
11744       else
11745         {
11746           /* Though should_insert is false, we may need to update conditions
11747              on the target's side if it is evaluating such conditions.  We
11748              only update conditions for locations that are marked
11749              "needs_update".  */
11750           update_inserted_breakpoint_locations ();
11751         }
11752     }
11753
11754   if (should_insert)
11755     download_tracepoint_locations ();
11756
11757   do_cleanups (cleanups);
11758 }
11759
11760 void
11761 breakpoint_retire_moribund (void)
11762 {
11763   struct bp_location *loc;
11764   int ix;
11765
11766   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
11767     if (--(loc->events_till_retirement) == 0)
11768       {
11769         decref_bp_location (&loc);
11770         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
11771         --ix;
11772       }
11773 }
11774
11775 static void
11776 update_global_location_list_nothrow (int inserting)
11777 {
11778   volatile struct gdb_exception e;
11779
11780   TRY_CATCH (e, RETURN_MASK_ERROR)
11781     update_global_location_list (inserting);
11782 }
11783
11784 /* Clear BKP from a BPS.  */
11785
11786 static void
11787 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
11788 {
11789   bpstat bs;
11790
11791   for (bs = bps; bs; bs = bs->next)
11792     if (bs->breakpoint_at == bpt)
11793       {
11794         bs->breakpoint_at = NULL;
11795         bs->old_val = NULL;
11796         /* bs->commands will be freed later.  */
11797       }
11798 }
11799
11800 /* Callback for iterate_over_threads.  */
11801 static int
11802 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
11803 {
11804   struct breakpoint *bpt = data;
11805
11806   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
11807   return 0;
11808 }
11809
11810 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
11811    callbacks.  */
11812
11813 static void
11814 say_where (struct breakpoint *b)
11815 {
11816   struct ui_out *uiout = current_uiout;
11817   struct value_print_options opts;
11818
11819   get_user_print_options (&opts);
11820
11821   /* i18n: cagney/2005-02-11: Below needs to be merged into a
11822      single string.  */
11823   if (b->loc == NULL)
11824     {
11825       printf_filtered (_(" (%s) pending."), b->addr_string);
11826     }
11827   else
11828     {
11829       if (opts.addressprint || b->loc->source_file == NULL)
11830         {
11831           printf_filtered (" at ");
11832           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
11833                           gdb_stdout);
11834         }
11835       if (b->loc->source_file)
11836         {
11837           /* If there is a single location, we can print the location
11838              more nicely.  */
11839           if (b->loc->next == NULL)
11840             printf_filtered (": file %s, line %d.",
11841                              b->loc->source_file, b->loc->line_number);
11842           else
11843             /* This is not ideal, but each location may have a
11844                different file name, and this at least reflects the
11845                real situation somewhat.  */
11846             printf_filtered (": %s.", b->addr_string);
11847         }
11848
11849       if (b->loc->next)
11850         {
11851           struct bp_location *loc = b->loc;
11852           int n = 0;
11853           for (; loc; loc = loc->next)
11854             ++n;
11855           printf_filtered (" (%d locations)", n);
11856         }
11857     }
11858 }
11859
11860 /* Default bp_location_ops methods.  */
11861
11862 static void
11863 bp_location_dtor (struct bp_location *self)
11864 {
11865   xfree (self->cond);
11866   if (self->cond_bytecode)
11867     free_agent_expr (self->cond_bytecode);
11868   xfree (self->function_name);
11869   xfree (self->source_file);
11870 }
11871
11872 static const struct bp_location_ops bp_location_ops =
11873 {
11874   bp_location_dtor
11875 };
11876
11877 /* Default breakpoint_ops methods all breakpoint_ops ultimately
11878    inherit from.  */
11879
11880 static void
11881 base_breakpoint_dtor (struct breakpoint *self)
11882 {
11883   decref_counted_command_line (&self->commands);
11884   xfree (self->cond_string);
11885   xfree (self->addr_string);
11886   xfree (self->filter);
11887   xfree (self->addr_string_range_end);
11888 }
11889
11890 static struct bp_location *
11891 base_breakpoint_allocate_location (struct breakpoint *self)
11892 {
11893   struct bp_location *loc;
11894
11895   loc = XNEW (struct bp_location);
11896   init_bp_location (loc, &bp_location_ops, self);
11897   return loc;
11898 }
11899
11900 static void
11901 base_breakpoint_re_set (struct breakpoint *b)
11902 {
11903   /* Nothing to re-set. */
11904 }
11905
11906 #define internal_error_pure_virtual_called() \
11907   gdb_assert_not_reached ("pure virtual function called")
11908
11909 static int
11910 base_breakpoint_insert_location (struct bp_location *bl)
11911 {
11912   internal_error_pure_virtual_called ();
11913 }
11914
11915 static int
11916 base_breakpoint_remove_location (struct bp_location *bl)
11917 {
11918   internal_error_pure_virtual_called ();
11919 }
11920
11921 static int
11922 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
11923                                 struct address_space *aspace,
11924                                 CORE_ADDR bp_addr,
11925                                 const struct target_waitstatus *ws)
11926 {
11927   internal_error_pure_virtual_called ();
11928 }
11929
11930 static void
11931 base_breakpoint_check_status (bpstat bs)
11932 {
11933   /* Always stop.   */
11934 }
11935
11936 /* A "works_in_software_mode" breakpoint_ops method that just internal
11937    errors.  */
11938
11939 static int
11940 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
11941 {
11942   internal_error_pure_virtual_called ();
11943 }
11944
11945 /* A "resources_needed" breakpoint_ops method that just internal
11946    errors.  */
11947
11948 static int
11949 base_breakpoint_resources_needed (const struct bp_location *bl)
11950 {
11951   internal_error_pure_virtual_called ();
11952 }
11953
11954 static enum print_stop_action
11955 base_breakpoint_print_it (bpstat bs)
11956 {
11957   internal_error_pure_virtual_called ();
11958 }
11959
11960 static void
11961 base_breakpoint_print_one_detail (const struct breakpoint *self,
11962                                   struct ui_out *uiout)
11963 {
11964   /* nothing */
11965 }
11966
11967 static void
11968 base_breakpoint_print_mention (struct breakpoint *b)
11969 {
11970   internal_error_pure_virtual_called ();
11971 }
11972
11973 static void
11974 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
11975 {
11976   internal_error_pure_virtual_called ();
11977 }
11978
11979 static void
11980 base_breakpoint_create_sals_from_address (char **arg,
11981                                           struct linespec_result *canonical,
11982                                           enum bptype type_wanted,
11983                                           char *addr_start,
11984                                           char **copy_arg)
11985 {
11986   internal_error_pure_virtual_called ();
11987 }
11988
11989 static void
11990 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
11991                                         struct linespec_result *c,
11992                                         struct linespec_sals *lsal,
11993                                         char *cond_string,
11994                                         enum bptype type_wanted,
11995                                         enum bpdisp disposition,
11996                                         int thread,
11997                                         int task, int ignore_count,
11998                                         const struct breakpoint_ops *o,
11999                                         int from_tty, int enabled,
12000                                         int internal)
12001 {
12002   internal_error_pure_virtual_called ();
12003 }
12004
12005 static void
12006 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12007                                  struct symtabs_and_lines *sals)
12008 {
12009   internal_error_pure_virtual_called ();
12010 }
12011
12012 static struct breakpoint_ops base_breakpoint_ops =
12013 {
12014   base_breakpoint_dtor,
12015   base_breakpoint_allocate_location,
12016   base_breakpoint_re_set,
12017   base_breakpoint_insert_location,
12018   base_breakpoint_remove_location,
12019   base_breakpoint_breakpoint_hit,
12020   base_breakpoint_check_status,
12021   base_breakpoint_resources_needed,
12022   base_breakpoint_works_in_software_mode,
12023   base_breakpoint_print_it,
12024   NULL,
12025   base_breakpoint_print_one_detail,
12026   base_breakpoint_print_mention,
12027   base_breakpoint_print_recreate,
12028   base_breakpoint_create_sals_from_address,
12029   base_breakpoint_create_breakpoints_sal,
12030   base_breakpoint_decode_linespec,
12031 };
12032
12033 /* Default breakpoint_ops methods.  */
12034
12035 static void
12036 bkpt_re_set (struct breakpoint *b)
12037 {
12038   /* FIXME: is this still reachable?  */
12039   if (b->addr_string == NULL)
12040     {
12041       /* Anything without a string can't be re-set.  */
12042       delete_breakpoint (b);
12043       return;
12044     }
12045
12046   breakpoint_re_set_default (b);
12047 }
12048
12049 static int
12050 bkpt_insert_location (struct bp_location *bl)
12051 {
12052   if (bl->loc_type == bp_loc_hardware_breakpoint)
12053     return target_insert_hw_breakpoint (bl->gdbarch,
12054                                         &bl->target_info);
12055   else
12056     return target_insert_breakpoint (bl->gdbarch,
12057                                      &bl->target_info);
12058 }
12059
12060 static int
12061 bkpt_remove_location (struct bp_location *bl)
12062 {
12063   if (bl->loc_type == bp_loc_hardware_breakpoint)
12064     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12065   else
12066     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12067 }
12068
12069 static int
12070 bkpt_breakpoint_hit (const struct bp_location *bl,
12071                      struct address_space *aspace, CORE_ADDR bp_addr,
12072                      const struct target_waitstatus *ws)
12073 {
12074   struct breakpoint *b = bl->owner;
12075
12076   if (ws->kind != TARGET_WAITKIND_STOPPED
12077       || ws->value.sig != TARGET_SIGNAL_TRAP)
12078     return 0;
12079
12080   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12081                                  aspace, bp_addr))
12082     return 0;
12083
12084   if (overlay_debugging         /* unmapped overlay section */
12085       && section_is_overlay (bl->section)
12086       && !section_is_mapped (bl->section))
12087     return 0;
12088
12089   return 1;
12090 }
12091
12092 static int
12093 bkpt_resources_needed (const struct bp_location *bl)
12094 {
12095   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12096
12097   return 1;
12098 }
12099
12100 static enum print_stop_action
12101 bkpt_print_it (bpstat bs)
12102 {
12103   struct breakpoint *b;
12104   const struct bp_location *bl;
12105   int bp_temp;
12106   struct ui_out *uiout = current_uiout;
12107
12108   gdb_assert (bs->bp_location_at != NULL);
12109
12110   bl = bs->bp_location_at;
12111   b = bs->breakpoint_at;
12112
12113   bp_temp = b->disposition == disp_del;
12114   if (bl->address != bl->requested_address)
12115     breakpoint_adjustment_warning (bl->requested_address,
12116                                    bl->address,
12117                                    b->number, 1);
12118   annotate_breakpoint (b->number);
12119   if (bp_temp)
12120     ui_out_text (uiout, "\nTemporary breakpoint ");
12121   else
12122     ui_out_text (uiout, "\nBreakpoint ");
12123   if (ui_out_is_mi_like_p (uiout))
12124     {
12125       ui_out_field_string (uiout, "reason",
12126                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12127       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12128     }
12129   ui_out_field_int (uiout, "bkptno", b->number);
12130   ui_out_text (uiout, ", ");
12131
12132   return PRINT_SRC_AND_LOC;
12133 }
12134
12135 static void
12136 bkpt_print_mention (struct breakpoint *b)
12137 {
12138   if (ui_out_is_mi_like_p (current_uiout))
12139     return;
12140
12141   switch (b->type)
12142     {
12143     case bp_breakpoint:
12144     case bp_gnu_ifunc_resolver:
12145       if (b->disposition == disp_del)
12146         printf_filtered (_("Temporary breakpoint"));
12147       else
12148         printf_filtered (_("Breakpoint"));
12149       printf_filtered (_(" %d"), b->number);
12150       if (b->type == bp_gnu_ifunc_resolver)
12151         printf_filtered (_(" at gnu-indirect-function resolver"));
12152       break;
12153     case bp_hardware_breakpoint:
12154       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12155       break;
12156     }
12157
12158   say_where (b);
12159 }
12160
12161 static void
12162 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12163 {
12164   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12165     fprintf_unfiltered (fp, "tbreak");
12166   else if (tp->type == bp_breakpoint)
12167     fprintf_unfiltered (fp, "break");
12168   else if (tp->type == bp_hardware_breakpoint
12169            && tp->disposition == disp_del)
12170     fprintf_unfiltered (fp, "thbreak");
12171   else if (tp->type == bp_hardware_breakpoint)
12172     fprintf_unfiltered (fp, "hbreak");
12173   else
12174     internal_error (__FILE__, __LINE__,
12175                     _("unhandled breakpoint type %d"), (int) tp->type);
12176
12177   fprintf_unfiltered (fp, " %s", tp->addr_string);
12178   print_recreate_thread (tp, fp);
12179 }
12180
12181 static void
12182 bkpt_create_sals_from_address (char **arg,
12183                                struct linespec_result *canonical,
12184                                enum bptype type_wanted,
12185                                char *addr_start, char **copy_arg)
12186 {
12187   create_sals_from_address_default (arg, canonical, type_wanted,
12188                                     addr_start, copy_arg);
12189 }
12190
12191 static void
12192 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12193                              struct linespec_result *canonical,
12194                              struct linespec_sals *lsal,
12195                              char *cond_string,
12196                              enum bptype type_wanted,
12197                              enum bpdisp disposition,
12198                              int thread,
12199                              int task, int ignore_count,
12200                              const struct breakpoint_ops *ops,
12201                              int from_tty, int enabled,
12202                              int internal)
12203 {
12204   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12205                                   cond_string, type_wanted,
12206                                   disposition, thread, task,
12207                                   ignore_count, ops, from_tty,
12208                                   enabled, internal);
12209 }
12210
12211 static void
12212 bkpt_decode_linespec (struct breakpoint *b, char **s,
12213                       struct symtabs_and_lines *sals)
12214 {
12215   decode_linespec_default (b, s, sals);
12216 }
12217
12218 /* Virtual table for internal breakpoints.  */
12219
12220 static void
12221 internal_bkpt_re_set (struct breakpoint *b)
12222 {
12223   switch (b->type)
12224     {
12225       /* Delete overlay event and longjmp master breakpoints; they
12226          will be reset later by breakpoint_re_set.  */
12227     case bp_overlay_event:
12228     case bp_longjmp_master:
12229     case bp_std_terminate_master:
12230     case bp_exception_master:
12231       delete_breakpoint (b);
12232       break;
12233
12234       /* This breakpoint is special, it's set up when the inferior
12235          starts and we really don't want to touch it.  */
12236     case bp_shlib_event:
12237
12238       /* Like bp_shlib_event, this breakpoint type is special.  Once
12239          it is set up, we do not want to touch it.  */
12240     case bp_thread_event:
12241       break;
12242     }
12243 }
12244
12245 static void
12246 internal_bkpt_check_status (bpstat bs)
12247 {
12248   if (bs->breakpoint_at->type == bp_shlib_event)
12249     {
12250       /* If requested, stop when the dynamic linker notifies GDB of
12251          events.  This allows the user to get control and place
12252          breakpoints in initializer routines for dynamically loaded
12253          objects (among other things).  */
12254       bs->stop = stop_on_solib_events;
12255       bs->print = stop_on_solib_events;
12256     }
12257   else
12258     bs->stop = 0;
12259 }
12260
12261 static enum print_stop_action
12262 internal_bkpt_print_it (bpstat bs)
12263 {
12264   struct ui_out *uiout = current_uiout;
12265   struct breakpoint *b;
12266
12267   b = bs->breakpoint_at;
12268
12269   switch (b->type)
12270     {
12271     case bp_shlib_event:
12272       /* Did we stop because the user set the stop_on_solib_events
12273          variable?  (If so, we report this as a generic, "Stopped due
12274          to shlib event" message.) */
12275       print_solib_event (0);
12276       break;
12277
12278     case bp_thread_event:
12279       /* Not sure how we will get here.
12280          GDB should not stop for these breakpoints.  */
12281       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12282       break;
12283
12284     case bp_overlay_event:
12285       /* By analogy with the thread event, GDB should not stop for these.  */
12286       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12287       break;
12288
12289     case bp_longjmp_master:
12290       /* These should never be enabled.  */
12291       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12292       break;
12293
12294     case bp_std_terminate_master:
12295       /* These should never be enabled.  */
12296       printf_filtered (_("std::terminate Master Breakpoint: "
12297                          "gdb should not stop!\n"));
12298       break;
12299
12300     case bp_exception_master:
12301       /* These should never be enabled.  */
12302       printf_filtered (_("Exception Master Breakpoint: "
12303                          "gdb should not stop!\n"));
12304       break;
12305     }
12306
12307   return PRINT_NOTHING;
12308 }
12309
12310 static void
12311 internal_bkpt_print_mention (struct breakpoint *b)
12312 {
12313   /* Nothing to mention.  These breakpoints are internal.  */
12314 }
12315
12316 /* Virtual table for momentary breakpoints  */
12317
12318 static void
12319 momentary_bkpt_re_set (struct breakpoint *b)
12320 {
12321   /* Keep temporary breakpoints, which can be encountered when we step
12322      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
12323      Otherwise these should have been blown away via the cleanup chain
12324      or by breakpoint_init_inferior when we rerun the executable.  */
12325 }
12326
12327 static void
12328 momentary_bkpt_check_status (bpstat bs)
12329 {
12330   /* Nothing.  The point of these breakpoints is causing a stop.  */
12331 }
12332
12333 static enum print_stop_action
12334 momentary_bkpt_print_it (bpstat bs)
12335 {
12336   struct ui_out *uiout = current_uiout;
12337
12338   if (ui_out_is_mi_like_p (uiout))
12339     {
12340       struct breakpoint *b = bs->breakpoint_at;
12341
12342       switch (b->type)
12343         {
12344         case bp_finish:
12345           ui_out_field_string
12346             (uiout, "reason",
12347              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
12348           break;
12349
12350         case bp_until:
12351           ui_out_field_string
12352             (uiout, "reason",
12353              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
12354           break;
12355         }
12356     }
12357
12358   return PRINT_UNKNOWN;
12359 }
12360
12361 static void
12362 momentary_bkpt_print_mention (struct breakpoint *b)
12363 {
12364   /* Nothing to mention.  These breakpoints are internal.  */
12365 }
12366
12367 /* The breakpoint_ops structure to be used in tracepoints.  */
12368
12369 static void
12370 tracepoint_re_set (struct breakpoint *b)
12371 {
12372   breakpoint_re_set_default (b);
12373 }
12374
12375 static int
12376 tracepoint_breakpoint_hit (const struct bp_location *bl,
12377                            struct address_space *aspace, CORE_ADDR bp_addr,
12378                            const struct target_waitstatus *ws)
12379 {
12380   /* By definition, the inferior does not report stops at
12381      tracepoints.  */
12382   return 0;
12383 }
12384
12385 static void
12386 tracepoint_print_one_detail (const struct breakpoint *self,
12387                              struct ui_out *uiout)
12388 {
12389   struct tracepoint *tp = (struct tracepoint *) self;
12390   if (tp->static_trace_marker_id)
12391     {
12392       gdb_assert (self->type == bp_static_tracepoint);
12393
12394       ui_out_text (uiout, "\tmarker id is ");
12395       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
12396                            tp->static_trace_marker_id);
12397       ui_out_text (uiout, "\n");
12398     }
12399 }
12400
12401 static void
12402 tracepoint_print_mention (struct breakpoint *b)
12403 {
12404   if (ui_out_is_mi_like_p (current_uiout))
12405     return;
12406
12407   switch (b->type)
12408     {
12409     case bp_tracepoint:
12410       printf_filtered (_("Tracepoint"));
12411       printf_filtered (_(" %d"), b->number);
12412       break;
12413     case bp_fast_tracepoint:
12414       printf_filtered (_("Fast tracepoint"));
12415       printf_filtered (_(" %d"), b->number);
12416       break;
12417     case bp_static_tracepoint:
12418       printf_filtered (_("Static tracepoint"));
12419       printf_filtered (_(" %d"), b->number);
12420       break;
12421     default:
12422       internal_error (__FILE__, __LINE__,
12423                       _("unhandled tracepoint type %d"), (int) b->type);
12424     }
12425
12426   say_where (b);
12427 }
12428
12429 static void
12430 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12431 {
12432   struct tracepoint *tp = (struct tracepoint *) self;
12433
12434   if (self->type == bp_fast_tracepoint)
12435     fprintf_unfiltered (fp, "ftrace");
12436   if (self->type == bp_static_tracepoint)
12437     fprintf_unfiltered (fp, "strace");
12438   else if (self->type == bp_tracepoint)
12439     fprintf_unfiltered (fp, "trace");
12440   else
12441     internal_error (__FILE__, __LINE__,
12442                     _("unhandled tracepoint type %d"), (int) self->type);
12443
12444   fprintf_unfiltered (fp, " %s", self->addr_string);
12445   print_recreate_thread (self, fp);
12446
12447   if (tp->pass_count)
12448     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12449 }
12450
12451 static void
12452 tracepoint_create_sals_from_address (char **arg,
12453                                      struct linespec_result *canonical,
12454                                      enum bptype type_wanted,
12455                                      char *addr_start, char **copy_arg)
12456 {
12457   create_sals_from_address_default (arg, canonical, type_wanted,
12458                                     addr_start, copy_arg);
12459 }
12460
12461 static void
12462 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12463                                    struct linespec_result *canonical,
12464                                    struct linespec_sals *lsal,
12465                                    char *cond_string,
12466                                    enum bptype type_wanted,
12467                                    enum bpdisp disposition,
12468                                    int thread,
12469                                    int task, int ignore_count,
12470                                    const struct breakpoint_ops *ops,
12471                                    int from_tty, int enabled,
12472                                    int internal)
12473 {
12474   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12475                                   cond_string, type_wanted,
12476                                   disposition, thread, task,
12477                                   ignore_count, ops, from_tty,
12478                                   enabled, internal);
12479 }
12480
12481 static void
12482 tracepoint_decode_linespec (struct breakpoint *b, char **s,
12483                             struct symtabs_and_lines *sals)
12484 {
12485   decode_linespec_default (b, s, sals);
12486 }
12487
12488 struct breakpoint_ops tracepoint_breakpoint_ops;
12489
12490 /* The breakpoint_ops structure to be used on static tracepoints with
12491    markers (`-m').  */
12492
12493 static void
12494 strace_marker_create_sals_from_address (char **arg,
12495                                         struct linespec_result *canonical,
12496                                         enum bptype type_wanted,
12497                                         char *addr_start, char **copy_arg)
12498 {
12499   struct linespec_sals lsal;
12500
12501   lsal.sals = decode_static_tracepoint_spec (arg);
12502
12503   *copy_arg = savestring (addr_start, *arg - addr_start);
12504
12505   canonical->addr_string = xstrdup (*copy_arg);
12506   lsal.canonical = xstrdup (*copy_arg);
12507   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
12508 }
12509
12510 static void
12511 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12512                                       struct linespec_result *canonical,
12513                                       struct linespec_sals *lsal,
12514                                       char *cond_string,
12515                                       enum bptype type_wanted,
12516                                       enum bpdisp disposition,
12517                                       int thread,
12518                                       int task, int ignore_count,
12519                                       const struct breakpoint_ops *ops,
12520                                       int from_tty, int enabled,
12521                                       int internal)
12522 {
12523   int i;
12524
12525   /* If the user is creating a static tracepoint by marker id
12526      (strace -m MARKER_ID), then store the sals index, so that
12527      breakpoint_re_set can try to match up which of the newly
12528      found markers corresponds to this one, and, don't try to
12529      expand multiple locations for each sal, given than SALS
12530      already should contain all sals for MARKER_ID.  */
12531
12532   for (i = 0; i < lsal->sals.nelts; ++i)
12533     {
12534       struct symtabs_and_lines expanded;
12535       struct tracepoint *tp;
12536       struct cleanup *old_chain;
12537       char *addr_string;
12538
12539       expanded.nelts = 1;
12540       expanded.sals = &lsal->sals.sals[i];
12541
12542       addr_string = xstrdup (canonical->addr_string);
12543       old_chain = make_cleanup (xfree, addr_string);
12544
12545       tp = XCNEW (struct tracepoint);
12546       init_breakpoint_sal (&tp->base, gdbarch, expanded,
12547                            addr_string, NULL,
12548                            cond_string, type_wanted, disposition,
12549                            thread, task, ignore_count, ops,
12550                            from_tty, enabled, internal,
12551                            canonical->special_display);
12552       /* Given that its possible to have multiple markers with
12553          the same string id, if the user is creating a static
12554          tracepoint by marker id ("strace -m MARKER_ID"), then
12555          store the sals index, so that breakpoint_re_set can
12556          try to match up which of the newly found markers
12557          corresponds to this one  */
12558       tp->static_trace_marker_id_idx = i;
12559
12560       install_breakpoint (internal, &tp->base, 0);
12561
12562       discard_cleanups (old_chain);
12563     }
12564 }
12565
12566 static void
12567 strace_marker_decode_linespec (struct breakpoint *b, char **s,
12568                                struct symtabs_and_lines *sals)
12569 {
12570   struct tracepoint *tp = (struct tracepoint *) b;
12571
12572   *sals = decode_static_tracepoint_spec (s);
12573   if (sals->nelts > tp->static_trace_marker_id_idx)
12574     {
12575       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
12576       sals->nelts = 1;
12577     }
12578   else
12579     error (_("marker %s not found"), tp->static_trace_marker_id);
12580 }
12581
12582 static struct breakpoint_ops strace_marker_breakpoint_ops;
12583
12584 static int
12585 strace_marker_p (struct breakpoint *b)
12586 {
12587   return b->ops == &strace_marker_breakpoint_ops;
12588 }
12589
12590 /* Delete a breakpoint and clean up all traces of it in the data
12591    structures.  */
12592
12593 void
12594 delete_breakpoint (struct breakpoint *bpt)
12595 {
12596   struct breakpoint *b;
12597
12598   gdb_assert (bpt != NULL);
12599
12600   /* Has this bp already been deleted?  This can happen because
12601      multiple lists can hold pointers to bp's.  bpstat lists are
12602      especial culprits.
12603
12604      One example of this happening is a watchpoint's scope bp.  When
12605      the scope bp triggers, we notice that the watchpoint is out of
12606      scope, and delete it.  We also delete its scope bp.  But the
12607      scope bp is marked "auto-deleting", and is already on a bpstat.
12608      That bpstat is then checked for auto-deleting bp's, which are
12609      deleted.
12610
12611      A real solution to this problem might involve reference counts in
12612      bp's, and/or giving them pointers back to their referencing
12613      bpstat's, and teaching delete_breakpoint to only free a bp's
12614      storage when no more references were extent.  A cheaper bandaid
12615      was chosen.  */
12616   if (bpt->type == bp_none)
12617     return;
12618
12619   /* At least avoid this stale reference until the reference counting
12620      of breakpoints gets resolved.  */
12621   if (bpt->related_breakpoint != bpt)
12622     {
12623       struct breakpoint *related;
12624       struct watchpoint *w;
12625
12626       if (bpt->type == bp_watchpoint_scope)
12627         w = (struct watchpoint *) bpt->related_breakpoint;
12628       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
12629         w = (struct watchpoint *) bpt;
12630       else
12631         w = NULL;
12632       if (w != NULL)
12633         watchpoint_del_at_next_stop (w);
12634
12635       /* Unlink bpt from the bpt->related_breakpoint ring.  */
12636       for (related = bpt; related->related_breakpoint != bpt;
12637            related = related->related_breakpoint);
12638       related->related_breakpoint = bpt->related_breakpoint;
12639       bpt->related_breakpoint = bpt;
12640     }
12641
12642   /* watch_command_1 creates a watchpoint but only sets its number if
12643      update_watchpoint succeeds in creating its bp_locations.  If there's
12644      a problem in that process, we'll be asked to delete the half-created
12645      watchpoint.  In that case, don't announce the deletion.  */
12646   if (bpt->number)
12647     observer_notify_breakpoint_deleted (bpt);
12648
12649   if (breakpoint_chain == bpt)
12650     breakpoint_chain = bpt->next;
12651
12652   ALL_BREAKPOINTS (b)
12653     if (b->next == bpt)
12654     {
12655       b->next = bpt->next;
12656       break;
12657     }
12658
12659   /* Be sure no bpstat's are pointing at the breakpoint after it's
12660      been freed.  */
12661   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
12662      in all threads for now.  Note that we cannot just remove bpstats
12663      pointing at bpt from the stop_bpstat list entirely, as breakpoint
12664      commands are associated with the bpstat; if we remove it here,
12665      then the later call to bpstat_do_actions (&stop_bpstat); in
12666      event-top.c won't do anything, and temporary breakpoints with
12667      commands won't work.  */
12668
12669   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
12670
12671   /* Now that breakpoint is removed from breakpoint list, update the
12672      global location list.  This will remove locations that used to
12673      belong to this breakpoint.  Do this before freeing the breakpoint
12674      itself, since remove_breakpoint looks at location's owner.  It
12675      might be better design to have location completely
12676      self-contained, but it's not the case now.  */
12677   update_global_location_list (0);
12678
12679   bpt->ops->dtor (bpt);
12680   /* On the chance that someone will soon try again to delete this
12681      same bp, we mark it as deleted before freeing its storage.  */
12682   bpt->type = bp_none;
12683   xfree (bpt);
12684 }
12685
12686 static void
12687 do_delete_breakpoint_cleanup (void *b)
12688 {
12689   delete_breakpoint (b);
12690 }
12691
12692 struct cleanup *
12693 make_cleanup_delete_breakpoint (struct breakpoint *b)
12694 {
12695   return make_cleanup (do_delete_breakpoint_cleanup, b);
12696 }
12697
12698 /* Iterator function to call a user-provided callback function once
12699    for each of B and its related breakpoints.  */
12700
12701 static void
12702 iterate_over_related_breakpoints (struct breakpoint *b,
12703                                   void (*function) (struct breakpoint *,
12704                                                     void *),
12705                                   void *data)
12706 {
12707   struct breakpoint *related;
12708
12709   related = b;
12710   do
12711     {
12712       struct breakpoint *next;
12713
12714       /* FUNCTION may delete RELATED.  */
12715       next = related->related_breakpoint;
12716
12717       if (next == related)
12718         {
12719           /* RELATED is the last ring entry.  */
12720           function (related, data);
12721
12722           /* FUNCTION may have deleted it, so we'd never reach back to
12723              B.  There's nothing left to do anyway, so just break
12724              out.  */
12725           break;
12726         }
12727       else
12728         function (related, data);
12729
12730       related = next;
12731     }
12732   while (related != b);
12733 }
12734
12735 static void
12736 do_delete_breakpoint (struct breakpoint *b, void *ignore)
12737 {
12738   delete_breakpoint (b);
12739 }
12740
12741 /* A callback for map_breakpoint_numbers that calls
12742    delete_breakpoint.  */
12743
12744 static void
12745 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
12746 {
12747   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
12748 }
12749
12750 void
12751 delete_command (char *arg, int from_tty)
12752 {
12753   struct breakpoint *b, *b_tmp;
12754
12755   dont_repeat ();
12756
12757   if (arg == 0)
12758     {
12759       int breaks_to_delete = 0;
12760
12761       /* Delete all breakpoints if no argument.  Do not delete
12762          internal breakpoints, these have to be deleted with an
12763          explicit breakpoint number argument.  */
12764       ALL_BREAKPOINTS (b)
12765         if (user_breakpoint_p (b))
12766           {
12767             breaks_to_delete = 1;
12768             break;
12769           }
12770
12771       /* Ask user only if there are some breakpoints to delete.  */
12772       if (!from_tty
12773           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
12774         {
12775           ALL_BREAKPOINTS_SAFE (b, b_tmp)
12776             if (user_breakpoint_p (b))
12777               delete_breakpoint (b);
12778         }
12779     }
12780   else
12781     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
12782 }
12783
12784 static int
12785 all_locations_are_pending (struct bp_location *loc)
12786 {
12787   for (; loc; loc = loc->next)
12788     if (!loc->shlib_disabled
12789         && !loc->pspace->executing_startup)
12790       return 0;
12791   return 1;
12792 }
12793
12794 /* Subroutine of update_breakpoint_locations to simplify it.
12795    Return non-zero if multiple fns in list LOC have the same name.
12796    Null names are ignored.  */
12797
12798 static int
12799 ambiguous_names_p (struct bp_location *loc)
12800 {
12801   struct bp_location *l;
12802   htab_t htab = htab_create_alloc (13, htab_hash_string,
12803                                    (int (*) (const void *, 
12804                                              const void *)) streq,
12805                                    NULL, xcalloc, xfree);
12806
12807   for (l = loc; l != NULL; l = l->next)
12808     {
12809       const char **slot;
12810       const char *name = l->function_name;
12811
12812       /* Allow for some names to be NULL, ignore them.  */
12813       if (name == NULL)
12814         continue;
12815
12816       slot = (const char **) htab_find_slot (htab, (const void *) name,
12817                                              INSERT);
12818       /* NOTE: We can assume slot != NULL here because xcalloc never
12819          returns NULL.  */
12820       if (*slot != NULL)
12821         {
12822           htab_delete (htab);
12823           return 1;
12824         }
12825       *slot = name;
12826     }
12827
12828   htab_delete (htab);
12829   return 0;
12830 }
12831
12832 /* When symbols change, it probably means the sources changed as well,
12833    and it might mean the static tracepoint markers are no longer at
12834    the same address or line numbers they used to be at last we
12835    checked.  Losing your static tracepoints whenever you rebuild is
12836    undesirable.  This function tries to resync/rematch gdb static
12837    tracepoints with the markers on the target, for static tracepoints
12838    that have not been set by marker id.  Static tracepoint that have
12839    been set by marker id are reset by marker id in breakpoint_re_set.
12840    The heuristic is:
12841
12842    1) For a tracepoint set at a specific address, look for a marker at
12843    the old PC.  If one is found there, assume to be the same marker.
12844    If the name / string id of the marker found is different from the
12845    previous known name, assume that means the user renamed the marker
12846    in the sources, and output a warning.
12847
12848    2) For a tracepoint set at a given line number, look for a marker
12849    at the new address of the old line number.  If one is found there,
12850    assume to be the same marker.  If the name / string id of the
12851    marker found is different from the previous known name, assume that
12852    means the user renamed the marker in the sources, and output a
12853    warning.
12854
12855    3) If a marker is no longer found at the same address or line, it
12856    may mean the marker no longer exists.  But it may also just mean
12857    the code changed a bit.  Maybe the user added a few lines of code
12858    that made the marker move up or down (in line number terms).  Ask
12859    the target for info about the marker with the string id as we knew
12860    it.  If found, update line number and address in the matching
12861    static tracepoint.  This will get confused if there's more than one
12862    marker with the same ID (possible in UST, although unadvised
12863    precisely because it confuses tools).  */
12864
12865 static struct symtab_and_line
12866 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
12867 {
12868   struct tracepoint *tp = (struct tracepoint *) b;
12869   struct static_tracepoint_marker marker;
12870   CORE_ADDR pc;
12871   int i;
12872
12873   pc = sal.pc;
12874   if (sal.line)
12875     find_line_pc (sal.symtab, sal.line, &pc);
12876
12877   if (target_static_tracepoint_marker_at (pc, &marker))
12878     {
12879       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
12880         warning (_("static tracepoint %d changed probed marker from %s to %s"),
12881                  b->number,
12882                  tp->static_trace_marker_id, marker.str_id);
12883
12884       xfree (tp->static_trace_marker_id);
12885       tp->static_trace_marker_id = xstrdup (marker.str_id);
12886       release_static_tracepoint_marker (&marker);
12887
12888       return sal;
12889     }
12890
12891   /* Old marker wasn't found on target at lineno.  Try looking it up
12892      by string ID.  */
12893   if (!sal.explicit_pc
12894       && sal.line != 0
12895       && sal.symtab != NULL
12896       && tp->static_trace_marker_id != NULL)
12897     {
12898       VEC(static_tracepoint_marker_p) *markers;
12899
12900       markers
12901         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
12902
12903       if (!VEC_empty(static_tracepoint_marker_p, markers))
12904         {
12905           struct symtab_and_line sal2;
12906           struct symbol *sym;
12907           struct static_tracepoint_marker *tpmarker;
12908           struct ui_out *uiout = current_uiout;
12909
12910           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
12911
12912           xfree (tp->static_trace_marker_id);
12913           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
12914
12915           warning (_("marker for static tracepoint %d (%s) not "
12916                      "found at previous line number"),
12917                    b->number, tp->static_trace_marker_id);
12918
12919           init_sal (&sal2);
12920
12921           sal2.pc = tpmarker->address;
12922
12923           sal2 = find_pc_line (tpmarker->address, 0);
12924           sym = find_pc_sect_function (tpmarker->address, NULL);
12925           ui_out_text (uiout, "Now in ");
12926           if (sym)
12927             {
12928               ui_out_field_string (uiout, "func",
12929                                    SYMBOL_PRINT_NAME (sym));
12930               ui_out_text (uiout, " at ");
12931             }
12932           ui_out_field_string (uiout, "file", sal2.symtab->filename);
12933           ui_out_text (uiout, ":");
12934
12935           if (ui_out_is_mi_like_p (uiout))
12936             {
12937               char *fullname = symtab_to_fullname (sal2.symtab);
12938
12939               if (fullname)
12940                 ui_out_field_string (uiout, "fullname", fullname);
12941             }
12942
12943           ui_out_field_int (uiout, "line", sal2.line);
12944           ui_out_text (uiout, "\n");
12945
12946           b->loc->line_number = sal2.line;
12947
12948           xfree (b->loc->source_file);
12949           if (sym)
12950             b->loc->source_file = xstrdup (sal2.symtab->filename);
12951           else
12952             b->loc->source_file = NULL;
12953
12954           xfree (b->addr_string);
12955           b->addr_string = xstrprintf ("%s:%d",
12956                                        sal2.symtab->filename,
12957                                        b->loc->line_number);
12958
12959           /* Might be nice to check if function changed, and warn if
12960              so.  */
12961
12962           release_static_tracepoint_marker (tpmarker);
12963         }
12964     }
12965   return sal;
12966 }
12967
12968 /* Returns 1 iff locations A and B are sufficiently same that
12969    we don't need to report breakpoint as changed.  */
12970
12971 static int
12972 locations_are_equal (struct bp_location *a, struct bp_location *b)
12973 {
12974   while (a && b)
12975     {
12976       if (a->address != b->address)
12977         return 0;
12978
12979       if (a->shlib_disabled != b->shlib_disabled)
12980         return 0;
12981
12982       if (a->enabled != b->enabled)
12983         return 0;
12984
12985       a = a->next;
12986       b = b->next;
12987     }
12988
12989   if ((a == NULL) != (b == NULL))
12990     return 0;
12991
12992   return 1;
12993 }
12994
12995 /* Create new breakpoint locations for B (a hardware or software breakpoint)
12996    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
12997    a ranged breakpoint.  */
12998
12999 void
13000 update_breakpoint_locations (struct breakpoint *b,
13001                              struct symtabs_and_lines sals,
13002                              struct symtabs_and_lines sals_end)
13003 {
13004   int i;
13005   struct bp_location *existing_locations = b->loc;
13006
13007   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13008     {
13009       /* Ranged breakpoints have only one start location and one end
13010          location.  */
13011       b->enable_state = bp_disabled;
13012       update_global_location_list (1);
13013       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13014                            "multiple locations found\n"),
13015                          b->number);
13016       return;
13017     }
13018
13019   /* If there's no new locations, and all existing locations are
13020      pending, don't do anything.  This optimizes the common case where
13021      all locations are in the same shared library, that was unloaded.
13022      We'd like to retain the location, so that when the library is
13023      loaded again, we don't loose the enabled/disabled status of the
13024      individual locations.  */
13025   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13026     return;
13027
13028   b->loc = NULL;
13029
13030   for (i = 0; i < sals.nelts; ++i)
13031     {
13032       struct bp_location *new_loc;
13033
13034       switch_to_program_space_and_thread (sals.sals[i].pspace);
13035
13036       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13037
13038       /* Reparse conditions, they might contain references to the
13039          old symtab.  */
13040       if (b->cond_string != NULL)
13041         {
13042           char *s;
13043           volatile struct gdb_exception e;
13044
13045           s = b->cond_string;
13046           TRY_CATCH (e, RETURN_MASK_ERROR)
13047             {
13048               new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 
13049                                            0);
13050             }
13051           if (e.reason < 0)
13052             {
13053               warning (_("failed to reevaluate condition "
13054                          "for breakpoint %d: %s"), 
13055                        b->number, e.message);
13056               new_loc->enabled = 0;
13057             }
13058         }
13059
13060       if (sals_end.nelts)
13061         {
13062           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13063
13064           new_loc->length = end - sals.sals[0].pc + 1;
13065         }
13066     }
13067
13068   /* Update locations of permanent breakpoints.  */
13069   if (b->enable_state == bp_permanent)
13070     make_breakpoint_permanent (b);
13071
13072   /* If possible, carry over 'disable' status from existing
13073      breakpoints.  */
13074   {
13075     struct bp_location *e = existing_locations;
13076     /* If there are multiple breakpoints with the same function name,
13077        e.g. for inline functions, comparing function names won't work.
13078        Instead compare pc addresses; this is just a heuristic as things
13079        may have moved, but in practice it gives the correct answer
13080        often enough until a better solution is found.  */
13081     int have_ambiguous_names = ambiguous_names_p (b->loc);
13082
13083     for (; e; e = e->next)
13084       {
13085         if (!e->enabled && e->function_name)
13086           {
13087             struct bp_location *l = b->loc;
13088             if (have_ambiguous_names)
13089               {
13090                 for (; l; l = l->next)
13091                   if (breakpoint_locations_match (e, l))
13092                     {
13093                       l->enabled = 0;
13094                       break;
13095                     }
13096               }
13097             else
13098               {
13099                 for (; l; l = l->next)
13100                   if (l->function_name
13101                       && strcmp (e->function_name, l->function_name) == 0)
13102                     {
13103                       l->enabled = 0;
13104                       break;
13105                     }
13106               }
13107           }
13108       }
13109   }
13110
13111   if (!locations_are_equal (existing_locations, b->loc))
13112     observer_notify_breakpoint_modified (b);
13113
13114   update_global_location_list (1);
13115 }
13116
13117 /* Find the SaL locations corresponding to the given ADDR_STRING.
13118    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13119
13120 static struct symtabs_and_lines
13121 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13122 {
13123   char *s;
13124   struct symtabs_and_lines sals = {0};
13125   volatile struct gdb_exception e;
13126
13127   gdb_assert (b->ops != NULL);
13128   s = addr_string;
13129
13130   TRY_CATCH (e, RETURN_MASK_ERROR)
13131     {
13132       b->ops->decode_linespec (b, &s, &sals);
13133     }
13134   if (e.reason < 0)
13135     {
13136       int not_found_and_ok = 0;
13137       /* For pending breakpoints, it's expected that parsing will
13138          fail until the right shared library is loaded.  User has
13139          already told to create pending breakpoints and don't need
13140          extra messages.  If breakpoint is in bp_shlib_disabled
13141          state, then user already saw the message about that
13142          breakpoint being disabled, and don't want to see more
13143          errors.  */
13144       if (e.error == NOT_FOUND_ERROR
13145           && (b->condition_not_parsed 
13146               || (b->loc && b->loc->shlib_disabled)
13147               || (b->loc && b->loc->pspace->executing_startup)
13148               || b->enable_state == bp_disabled))
13149         not_found_and_ok = 1;
13150
13151       if (!not_found_and_ok)
13152         {
13153           /* We surely don't want to warn about the same breakpoint
13154              10 times.  One solution, implemented here, is disable
13155              the breakpoint on error.  Another solution would be to
13156              have separate 'warning emitted' flag.  Since this
13157              happens only when a binary has changed, I don't know
13158              which approach is better.  */
13159           b->enable_state = bp_disabled;
13160           throw_exception (e);
13161         }
13162     }
13163
13164   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
13165     {
13166       int i;
13167
13168       for (i = 0; i < sals.nelts; ++i)
13169         resolve_sal_pc (&sals.sals[i]);
13170       if (b->condition_not_parsed && s && s[0])
13171         {
13172           char *cond_string = 0;
13173           int thread = -1;
13174           int task = 0;
13175
13176           find_condition_and_thread (s, sals.sals[0].pc,
13177                                      &cond_string, &thread, &task);
13178           if (cond_string)
13179             b->cond_string = cond_string;
13180           b->thread = thread;
13181           b->task = task;
13182           b->condition_not_parsed = 0;
13183         }
13184
13185       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13186         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
13187
13188       *found = 1;
13189     }
13190   else
13191     *found = 0;
13192
13193   return sals;
13194 }
13195
13196 /* The default re_set method, for typical hardware or software
13197    breakpoints.  Reevaluate the breakpoint and recreate its
13198    locations.  */
13199
13200 static void
13201 breakpoint_re_set_default (struct breakpoint *b)
13202 {
13203   int found;
13204   struct symtabs_and_lines sals, sals_end;
13205   struct symtabs_and_lines expanded = {0};
13206   struct symtabs_and_lines expanded_end = {0};
13207
13208   sals = addr_string_to_sals (b, b->addr_string, &found);
13209   if (found)
13210     {
13211       make_cleanup (xfree, sals.sals);
13212       expanded = sals;
13213     }
13214
13215   if (b->addr_string_range_end)
13216     {
13217       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
13218       if (found)
13219         {
13220           make_cleanup (xfree, sals_end.sals);
13221           expanded_end = sals_end;
13222         }
13223     }
13224
13225   update_breakpoint_locations (b, expanded, expanded_end);
13226 }
13227
13228 /* Default method for creating SALs from an address string.  It basically
13229    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13230
13231 static void
13232 create_sals_from_address_default (char **arg,
13233                                   struct linespec_result *canonical,
13234                                   enum bptype type_wanted,
13235                                   char *addr_start, char **copy_arg)
13236 {
13237   parse_breakpoint_sals (arg, canonical);
13238 }
13239
13240 /* Call create_breakpoints_sal for the given arguments.  This is the default
13241    function for the `create_breakpoints_sal' method of
13242    breakpoint_ops.  */
13243
13244 static void
13245 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13246                                 struct linespec_result *canonical,
13247                                 struct linespec_sals *lsal,
13248                                 char *cond_string,
13249                                 enum bptype type_wanted,
13250                                 enum bpdisp disposition,
13251                                 int thread,
13252                                 int task, int ignore_count,
13253                                 const struct breakpoint_ops *ops,
13254                                 int from_tty, int enabled,
13255                                 int internal)
13256 {
13257   create_breakpoints_sal (gdbarch, canonical, cond_string,
13258                           type_wanted, disposition,
13259                           thread, task, ignore_count, ops, from_tty,
13260                           enabled, internal);
13261 }
13262
13263 /* Decode the line represented by S by calling decode_line_full.  This is the
13264    default function for the `decode_linespec' method of breakpoint_ops.  */
13265
13266 static void
13267 decode_linespec_default (struct breakpoint *b, char **s,
13268                          struct symtabs_and_lines *sals)
13269 {
13270   struct linespec_result canonical;
13271
13272   init_linespec_result (&canonical);
13273   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
13274                     (struct symtab *) NULL, 0,
13275                     &canonical, multiple_symbols_all,
13276                     b->filter);
13277
13278   /* We should get 0 or 1 resulting SALs.  */
13279   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
13280
13281   if (VEC_length (linespec_sals, canonical.sals) > 0)
13282     {
13283       struct linespec_sals *lsal;
13284
13285       lsal = VEC_index (linespec_sals, canonical.sals, 0);
13286       *sals = lsal->sals;
13287       /* Arrange it so the destructor does not free the
13288          contents.  */
13289       lsal->sals.sals = NULL;
13290     }
13291
13292   destroy_linespec_result (&canonical);
13293 }
13294
13295 /* Prepare the global context for a re-set of breakpoint B.  */
13296
13297 static struct cleanup *
13298 prepare_re_set_context (struct breakpoint *b)
13299 {
13300   struct cleanup *cleanups;
13301
13302   input_radix = b->input_radix;
13303   cleanups = save_current_space_and_thread ();
13304   if (b->pspace != NULL)
13305     switch_to_program_space_and_thread (b->pspace);
13306   set_language (b->language);
13307
13308   return cleanups;
13309 }
13310
13311 /* Reset a breakpoint given it's struct breakpoint * BINT.
13312    The value we return ends up being the return value from catch_errors.
13313    Unused in this case.  */
13314
13315 static int
13316 breakpoint_re_set_one (void *bint)
13317 {
13318   /* Get past catch_errs.  */
13319   struct breakpoint *b = (struct breakpoint *) bint;
13320   struct cleanup *cleanups;
13321
13322   cleanups = prepare_re_set_context (b);
13323   b->ops->re_set (b);
13324   do_cleanups (cleanups);
13325   return 0;
13326 }
13327
13328 /* Re-set all breakpoints after symbols have been re-loaded.  */
13329 void
13330 breakpoint_re_set (void)
13331 {
13332   struct breakpoint *b, *b_tmp;
13333   enum language save_language;
13334   int save_input_radix;
13335   struct cleanup *old_chain;
13336
13337   save_language = current_language->la_language;
13338   save_input_radix = input_radix;
13339   old_chain = save_current_program_space ();
13340
13341   ALL_BREAKPOINTS_SAFE (b, b_tmp)
13342   {
13343     /* Format possible error msg.  */
13344     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
13345                                 b->number);
13346     struct cleanup *cleanups = make_cleanup (xfree, message);
13347     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
13348     do_cleanups (cleanups);
13349   }
13350   set_language (save_language);
13351   input_radix = save_input_radix;
13352
13353   jit_breakpoint_re_set ();
13354
13355   do_cleanups (old_chain);
13356
13357   create_overlay_event_breakpoint ();
13358   create_longjmp_master_breakpoint ();
13359   create_std_terminate_master_breakpoint ();
13360   create_exception_master_breakpoint ();
13361
13362   /* While we're at it, reset the skip list too.  */
13363   skip_re_set ();
13364 }
13365 \f
13366 /* Reset the thread number of this breakpoint:
13367
13368    - If the breakpoint is for all threads, leave it as-is.
13369    - Else, reset it to the current thread for inferior_ptid.  */
13370 void
13371 breakpoint_re_set_thread (struct breakpoint *b)
13372 {
13373   if (b->thread != -1)
13374     {
13375       if (in_thread_list (inferior_ptid))
13376         b->thread = pid_to_thread_id (inferior_ptid);
13377
13378       /* We're being called after following a fork.  The new fork is
13379          selected as current, and unless this was a vfork will have a
13380          different program space from the original thread.  Reset that
13381          as well.  */
13382       b->loc->pspace = current_program_space;
13383     }
13384 }
13385
13386 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13387    If from_tty is nonzero, it prints a message to that effect,
13388    which ends with a period (no newline).  */
13389
13390 void
13391 set_ignore_count (int bptnum, int count, int from_tty)
13392 {
13393   struct breakpoint *b;
13394
13395   if (count < 0)
13396     count = 0;
13397
13398   ALL_BREAKPOINTS (b)
13399     if (b->number == bptnum)
13400     {
13401       if (is_tracepoint (b))
13402         {
13403           if (from_tty && count != 0)
13404             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13405                              bptnum);
13406           return;
13407         }
13408       
13409       b->ignore_count = count;
13410       if (from_tty)
13411         {
13412           if (count == 0)
13413             printf_filtered (_("Will stop next time "
13414                                "breakpoint %d is reached."),
13415                              bptnum);
13416           else if (count == 1)
13417             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13418                              bptnum);
13419           else
13420             printf_filtered (_("Will ignore next %d "
13421                                "crossings of breakpoint %d."),
13422                              count, bptnum);
13423         }
13424       breakpoints_changed ();
13425       observer_notify_breakpoint_modified (b);
13426       return;
13427     }
13428
13429   error (_("No breakpoint number %d."), bptnum);
13430 }
13431
13432 /* Command to set ignore-count of breakpoint N to COUNT.  */
13433
13434 static void
13435 ignore_command (char *args, int from_tty)
13436 {
13437   char *p = args;
13438   int num;
13439
13440   if (p == 0)
13441     error_no_arg (_("a breakpoint number"));
13442
13443   num = get_number (&p);
13444   if (num == 0)
13445     error (_("bad breakpoint number: '%s'"), args);
13446   if (*p == 0)
13447     error (_("Second argument (specified ignore-count) is missing."));
13448
13449   set_ignore_count (num,
13450                     longest_to_int (value_as_long (parse_and_eval (p))),
13451                     from_tty);
13452   if (from_tty)
13453     printf_filtered ("\n");
13454 }
13455 \f
13456 /* Call FUNCTION on each of the breakpoints
13457    whose numbers are given in ARGS.  */
13458
13459 static void
13460 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
13461                                                       void *),
13462                         void *data)
13463 {
13464   int num;
13465   struct breakpoint *b, *tmp;
13466   int match;
13467   struct get_number_or_range_state state;
13468
13469   if (args == 0)
13470     error_no_arg (_("one or more breakpoint numbers"));
13471
13472   init_number_or_range (&state, args);
13473
13474   while (!state.finished)
13475     {
13476       char *p = state.string;
13477
13478       match = 0;
13479
13480       num = get_number_or_range (&state);
13481       if (num == 0)
13482         {
13483           warning (_("bad breakpoint number at or near '%s'"), p);
13484         }
13485       else
13486         {
13487           ALL_BREAKPOINTS_SAFE (b, tmp)
13488             if (b->number == num)
13489               {
13490                 match = 1;
13491                 function (b, data);
13492                 break;
13493               }
13494           if (match == 0)
13495             printf_unfiltered (_("No breakpoint number %d.\n"), num);
13496         }
13497     }
13498 }
13499
13500 static struct bp_location *
13501 find_location_by_number (char *number)
13502 {
13503   char *dot = strchr (number, '.');
13504   char *p1;
13505   int bp_num;
13506   int loc_num;
13507   struct breakpoint *b;
13508   struct bp_location *loc;  
13509
13510   *dot = '\0';
13511
13512   p1 = number;
13513   bp_num = get_number (&p1);
13514   if (bp_num == 0)
13515     error (_("Bad breakpoint number '%s'"), number);
13516
13517   ALL_BREAKPOINTS (b)
13518     if (b->number == bp_num)
13519       {
13520         break;
13521       }
13522
13523   if (!b || b->number != bp_num)
13524     error (_("Bad breakpoint number '%s'"), number);
13525   
13526   p1 = dot+1;
13527   loc_num = get_number (&p1);
13528   if (loc_num == 0)
13529     error (_("Bad breakpoint location number '%s'"), number);
13530
13531   --loc_num;
13532   loc = b->loc;
13533   for (;loc_num && loc; --loc_num, loc = loc->next)
13534     ;
13535   if (!loc)
13536     error (_("Bad breakpoint location number '%s'"), dot+1);
13537     
13538   return loc;  
13539 }
13540
13541
13542 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13543    If from_tty is nonzero, it prints a message to that effect,
13544    which ends with a period (no newline).  */
13545
13546 void
13547 disable_breakpoint (struct breakpoint *bpt)
13548 {
13549   /* Never disable a watchpoint scope breakpoint; we want to
13550      hit them when we leave scope so we can delete both the
13551      watchpoint and its scope breakpoint at that time.  */
13552   if (bpt->type == bp_watchpoint_scope)
13553     return;
13554
13555   /* You can't disable permanent breakpoints.  */
13556   if (bpt->enable_state == bp_permanent)
13557     return;
13558
13559   bpt->enable_state = bp_disabled;
13560
13561   /* Mark breakpoint locations modified.  */
13562   mark_breakpoint_modified (bpt);
13563
13564   if (target_supports_enable_disable_tracepoint ()
13565       && current_trace_status ()->running && is_tracepoint (bpt))
13566     {
13567       struct bp_location *location;
13568      
13569       for (location = bpt->loc; location; location = location->next)
13570         target_disable_tracepoint (location);
13571     }
13572
13573   update_global_location_list (0);
13574
13575   observer_notify_breakpoint_modified (bpt);
13576 }
13577
13578 /* A callback for iterate_over_related_breakpoints.  */
13579
13580 static void
13581 do_disable_breakpoint (struct breakpoint *b, void *ignore)
13582 {
13583   disable_breakpoint (b);
13584 }
13585
13586 /* A callback for map_breakpoint_numbers that calls
13587    disable_breakpoint.  */
13588
13589 static void
13590 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
13591 {
13592   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
13593 }
13594
13595 static void
13596 disable_command (char *args, int from_tty)
13597 {
13598   if (args == 0)
13599     {
13600       struct breakpoint *bpt;
13601
13602       ALL_BREAKPOINTS (bpt)
13603         if (user_breakpoint_p (bpt))
13604           disable_breakpoint (bpt);
13605     }
13606   else if (strchr (args, '.'))
13607     {
13608       struct bp_location *loc = find_location_by_number (args);
13609       if (loc)
13610         {
13611           if (loc->enabled)
13612             {
13613               loc->enabled = 0;
13614               mark_breakpoint_location_modified (loc);
13615             }
13616           if (target_supports_enable_disable_tracepoint ()
13617               && current_trace_status ()->running && loc->owner
13618               && is_tracepoint (loc->owner))
13619             target_disable_tracepoint (loc);
13620         }
13621       update_global_location_list (0);
13622     }
13623   else
13624     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
13625 }
13626
13627 static void
13628 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
13629                         int count)
13630 {
13631   int target_resources_ok;
13632
13633   if (bpt->type == bp_hardware_breakpoint)
13634     {
13635       int i;
13636       i = hw_breakpoint_used_count ();
13637       target_resources_ok = 
13638         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
13639                                             i + 1, 0);
13640       if (target_resources_ok == 0)
13641         error (_("No hardware breakpoint support in the target."));
13642       else if (target_resources_ok < 0)
13643         error (_("Hardware breakpoints used exceeds limit."));
13644     }
13645
13646   if (is_watchpoint (bpt))
13647     {
13648       /* Initialize it just to avoid a GCC false warning.  */
13649       enum enable_state orig_enable_state = 0;
13650       volatile struct gdb_exception e;
13651
13652       TRY_CATCH (e, RETURN_MASK_ALL)
13653         {
13654           struct watchpoint *w = (struct watchpoint *) bpt;
13655
13656           orig_enable_state = bpt->enable_state;
13657           bpt->enable_state = bp_enabled;
13658           update_watchpoint (w, 1 /* reparse */);
13659         }
13660       if (e.reason < 0)
13661         {
13662           bpt->enable_state = orig_enable_state;
13663           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
13664                              bpt->number);
13665           return;
13666         }
13667     }
13668
13669   if (bpt->enable_state != bp_permanent)
13670     bpt->enable_state = bp_enabled;
13671
13672   bpt->enable_state = bp_enabled;
13673
13674   /* Mark breakpoint locations modified.  */
13675   mark_breakpoint_modified (bpt);
13676
13677   if (target_supports_enable_disable_tracepoint ()
13678       && current_trace_status ()->running && is_tracepoint (bpt))
13679     {
13680       struct bp_location *location;
13681
13682       for (location = bpt->loc; location; location = location->next)
13683         target_enable_tracepoint (location);
13684     }
13685
13686   bpt->disposition = disposition;
13687   bpt->enable_count = count;
13688   update_global_location_list (1);
13689   breakpoints_changed ();
13690   
13691   observer_notify_breakpoint_modified (bpt);
13692 }
13693
13694
13695 void
13696 enable_breakpoint (struct breakpoint *bpt)
13697 {
13698   enable_breakpoint_disp (bpt, bpt->disposition, 0);
13699 }
13700
13701 static void
13702 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
13703 {
13704   enable_breakpoint (bpt);
13705 }
13706
13707 /* A callback for map_breakpoint_numbers that calls
13708    enable_breakpoint.  */
13709
13710 static void
13711 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
13712 {
13713   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
13714 }
13715
13716 /* The enable command enables the specified breakpoints (or all defined
13717    breakpoints) so they once again become (or continue to be) effective
13718    in stopping the inferior.  */
13719
13720 static void
13721 enable_command (char *args, int from_tty)
13722 {
13723   if (args == 0)
13724     {
13725       struct breakpoint *bpt;
13726
13727       ALL_BREAKPOINTS (bpt)
13728         if (user_breakpoint_p (bpt))
13729           enable_breakpoint (bpt);
13730     }
13731   else if (strchr (args, '.'))
13732     {
13733       struct bp_location *loc = find_location_by_number (args);
13734       if (loc)
13735         {
13736           if (!loc->enabled)
13737             {
13738               loc->enabled = 1;
13739               mark_breakpoint_location_modified (loc);
13740             }
13741           if (target_supports_enable_disable_tracepoint ()
13742               && current_trace_status ()->running && loc->owner
13743               && is_tracepoint (loc->owner))
13744             target_enable_tracepoint (loc);
13745         }
13746       update_global_location_list (1);
13747     }
13748   else
13749     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
13750 }
13751
13752 /* This struct packages up disposition data for application to multiple
13753    breakpoints.  */
13754
13755 struct disp_data
13756 {
13757   enum bpdisp disp;
13758   int count;
13759 };
13760
13761 static void
13762 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
13763 {
13764   struct disp_data disp_data = *(struct disp_data *) arg;
13765
13766   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
13767 }
13768
13769 static void
13770 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
13771 {
13772   struct disp_data disp = { disp_disable, 1 };
13773
13774   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
13775 }
13776
13777 static void
13778 enable_once_command (char *args, int from_tty)
13779 {
13780   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
13781 }
13782
13783 static void
13784 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
13785 {
13786   struct disp_data disp = { disp_disable, *(int *) countptr };
13787
13788   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
13789 }
13790
13791 static void
13792 enable_count_command (char *args, int from_tty)
13793 {
13794   int count = get_number (&args);
13795
13796   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
13797 }
13798
13799 static void
13800 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
13801 {
13802   struct disp_data disp = { disp_del, 1 };
13803
13804   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
13805 }
13806
13807 static void
13808 enable_delete_command (char *args, int from_tty)
13809 {
13810   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
13811 }
13812 \f
13813 static void
13814 set_breakpoint_cmd (char *args, int from_tty)
13815 {
13816 }
13817
13818 static void
13819 show_breakpoint_cmd (char *args, int from_tty)
13820 {
13821 }
13822
13823 /* Invalidate last known value of any hardware watchpoint if
13824    the memory which that value represents has been written to by
13825    GDB itself.  */
13826
13827 static void
13828 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
13829                                       const bfd_byte *data)
13830 {
13831   struct breakpoint *bp;
13832
13833   ALL_BREAKPOINTS (bp)
13834     if (bp->enable_state == bp_enabled
13835         && bp->type == bp_hardware_watchpoint)
13836       {
13837         struct watchpoint *wp = (struct watchpoint *) bp;
13838
13839         if (wp->val_valid && wp->val)
13840           {
13841             struct bp_location *loc;
13842
13843             for (loc = bp->loc; loc != NULL; loc = loc->next)
13844               if (loc->loc_type == bp_loc_hardware_watchpoint
13845                   && loc->address + loc->length > addr
13846                   && addr + len > loc->address)
13847                 {
13848                   value_free (wp->val);
13849                   wp->val = NULL;
13850                   wp->val_valid = 0;
13851                 }
13852           }
13853       }
13854 }
13855
13856 /* Use the last displayed codepoint's values, or nothing
13857    if they aren't valid.  */
13858
13859 struct symtabs_and_lines
13860 decode_line_spec_1 (char *string, int flags)
13861 {
13862   struct symtabs_and_lines sals;
13863
13864   if (string == 0)
13865     error (_("Empty line specification."));
13866   if (last_displayed_sal_is_valid ())
13867     sals = decode_line_1 (&string, flags,
13868                           get_last_displayed_symtab (),
13869                           get_last_displayed_line ());
13870   else
13871     sals = decode_line_1 (&string, flags, (struct symtab *) NULL, 0);
13872   if (*string)
13873     error (_("Junk at end of line specification: %s"), string);
13874   return sals;
13875 }
13876
13877 /* Create and insert a raw software breakpoint at PC.  Return an
13878    identifier, which should be used to remove the breakpoint later.
13879    In general, places which call this should be using something on the
13880    breakpoint chain instead; this function should be eliminated
13881    someday.  */
13882
13883 void *
13884 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
13885                                   struct address_space *aspace, CORE_ADDR pc)
13886 {
13887   struct bp_target_info *bp_tgt;
13888
13889   bp_tgt = XZALLOC (struct bp_target_info);
13890
13891   bp_tgt->placed_address_space = aspace;
13892   bp_tgt->placed_address = pc;
13893
13894   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
13895     {
13896       /* Could not insert the breakpoint.  */
13897       xfree (bp_tgt);
13898       return NULL;
13899     }
13900
13901   return bp_tgt;
13902 }
13903
13904 /* Remove a breakpoint BP inserted by
13905    deprecated_insert_raw_breakpoint.  */
13906
13907 int
13908 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
13909 {
13910   struct bp_target_info *bp_tgt = bp;
13911   int ret;
13912
13913   ret = target_remove_breakpoint (gdbarch, bp_tgt);
13914   xfree (bp_tgt);
13915
13916   return ret;
13917 }
13918
13919 /* One (or perhaps two) breakpoints used for software single
13920    stepping.  */
13921
13922 static void *single_step_breakpoints[2];
13923 static struct gdbarch *single_step_gdbarch[2];
13924
13925 /* Create and insert a breakpoint for software single step.  */
13926
13927 void
13928 insert_single_step_breakpoint (struct gdbarch *gdbarch,
13929                                struct address_space *aspace, 
13930                                CORE_ADDR next_pc)
13931 {
13932   void **bpt_p;
13933
13934   if (single_step_breakpoints[0] == NULL)
13935     {
13936       bpt_p = &single_step_breakpoints[0];
13937       single_step_gdbarch[0] = gdbarch;
13938     }
13939   else
13940     {
13941       gdb_assert (single_step_breakpoints[1] == NULL);
13942       bpt_p = &single_step_breakpoints[1];
13943       single_step_gdbarch[1] = gdbarch;
13944     }
13945
13946   /* NOTE drow/2006-04-11: A future improvement to this function would
13947      be to only create the breakpoints once, and actually put them on
13948      the breakpoint chain.  That would let us use set_raw_breakpoint.
13949      We could adjust the addresses each time they were needed.  Doing
13950      this requires corresponding changes elsewhere where single step
13951      breakpoints are handled, however.  So, for now, we use this.  */
13952
13953   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
13954   if (*bpt_p == NULL)
13955     error (_("Could not insert single-step breakpoint at %s"),
13956              paddress (gdbarch, next_pc));
13957 }
13958
13959 /* Check if the breakpoints used for software single stepping
13960    were inserted or not.  */
13961
13962 int
13963 single_step_breakpoints_inserted (void)
13964 {
13965   return (single_step_breakpoints[0] != NULL
13966           || single_step_breakpoints[1] != NULL);
13967 }
13968
13969 /* Remove and delete any breakpoints used for software single step.  */
13970
13971 void
13972 remove_single_step_breakpoints (void)
13973 {
13974   gdb_assert (single_step_breakpoints[0] != NULL);
13975
13976   /* See insert_single_step_breakpoint for more about this deprecated
13977      call.  */
13978   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
13979                                     single_step_breakpoints[0]);
13980   single_step_gdbarch[0] = NULL;
13981   single_step_breakpoints[0] = NULL;
13982
13983   if (single_step_breakpoints[1] != NULL)
13984     {
13985       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
13986                                         single_step_breakpoints[1]);
13987       single_step_gdbarch[1] = NULL;
13988       single_step_breakpoints[1] = NULL;
13989     }
13990 }
13991
13992 /* Delete software single step breakpoints without removing them from
13993    the inferior.  This is intended to be used if the inferior's address
13994    space where they were inserted is already gone, e.g. after exit or
13995    exec.  */
13996
13997 void
13998 cancel_single_step_breakpoints (void)
13999 {
14000   int i;
14001
14002   for (i = 0; i < 2; i++)
14003     if (single_step_breakpoints[i])
14004       {
14005         xfree (single_step_breakpoints[i]);
14006         single_step_breakpoints[i] = NULL;
14007         single_step_gdbarch[i] = NULL;
14008       }
14009 }
14010
14011 /* Detach software single-step breakpoints from INFERIOR_PTID without
14012    removing them.  */
14013
14014 static void
14015 detach_single_step_breakpoints (void)
14016 {
14017   int i;
14018
14019   for (i = 0; i < 2; i++)
14020     if (single_step_breakpoints[i])
14021       target_remove_breakpoint (single_step_gdbarch[i],
14022                                 single_step_breakpoints[i]);
14023 }
14024
14025 /* Check whether a software single-step breakpoint is inserted at
14026    PC.  */
14027
14028 static int
14029 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14030                                         CORE_ADDR pc)
14031 {
14032   int i;
14033
14034   for (i = 0; i < 2; i++)
14035     {
14036       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14037       if (bp_tgt
14038           && breakpoint_address_match (bp_tgt->placed_address_space,
14039                                        bp_tgt->placed_address,
14040                                        aspace, pc))
14041         return 1;
14042     }
14043
14044   return 0;
14045 }
14046
14047 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14048    non-zero otherwise.  */
14049 static int
14050 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14051 {
14052   if (syscall_catchpoint_p (bp)
14053       && bp->enable_state != bp_disabled
14054       && bp->enable_state != bp_call_disabled)
14055     return 1;
14056   else
14057     return 0;
14058 }
14059
14060 int
14061 catch_syscall_enabled (void)
14062 {
14063   struct inferior *inf = current_inferior ();
14064
14065   return inf->total_syscalls_count != 0;
14066 }
14067
14068 int
14069 catching_syscall_number (int syscall_number)
14070 {
14071   struct breakpoint *bp;
14072
14073   ALL_BREAKPOINTS (bp)
14074     if (is_syscall_catchpoint_enabled (bp))
14075       {
14076         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14077
14078         if (c->syscalls_to_be_caught)
14079           {
14080             int i, iter;
14081             for (i = 0;
14082                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14083                  i++)
14084               if (syscall_number == iter)
14085                 return 1;
14086           }
14087         else
14088           return 1;
14089       }
14090
14091   return 0;
14092 }
14093
14094 /* Complete syscall names.  Used by "catch syscall".  */
14095 static char **
14096 catch_syscall_completer (struct cmd_list_element *cmd,
14097                          char *text, char *word)
14098 {
14099   const char **list = get_syscall_names ();
14100   char **retlist
14101     = (list == NULL) ? NULL : complete_on_enum (list, text, word);
14102
14103   xfree (list);
14104   return retlist;
14105 }
14106
14107 /* Tracepoint-specific operations.  */
14108
14109 /* Set tracepoint count to NUM.  */
14110 static void
14111 set_tracepoint_count (int num)
14112 {
14113   tracepoint_count = num;
14114   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14115 }
14116
14117 static void
14118 trace_command (char *arg, int from_tty)
14119 {
14120   if (create_breakpoint (get_current_arch (),
14121                          arg,
14122                          NULL, 0, 1 /* parse arg */,
14123                          0 /* tempflag */,
14124                          bp_tracepoint /* type_wanted */,
14125                          0 /* Ignore count */,
14126                          pending_break_support,
14127                          &tracepoint_breakpoint_ops,
14128                          from_tty,
14129                          1 /* enabled */,
14130                          0 /* internal */))
14131     set_tracepoint_count (breakpoint_count);
14132 }
14133
14134 static void
14135 ftrace_command (char *arg, int from_tty)
14136 {
14137   if (create_breakpoint (get_current_arch (),
14138                          arg,
14139                          NULL, 0, 1 /* parse arg */,
14140                          0 /* tempflag */,
14141                          bp_fast_tracepoint /* type_wanted */,
14142                          0 /* Ignore count */,
14143                          pending_break_support,
14144                          &tracepoint_breakpoint_ops,
14145                          from_tty,
14146                          1 /* enabled */,
14147                          0 /* internal */))
14148     set_tracepoint_count (breakpoint_count);
14149 }
14150
14151 /* strace command implementation.  Creates a static tracepoint.  */
14152
14153 static void
14154 strace_command (char *arg, int from_tty)
14155 {
14156   struct breakpoint_ops *ops;
14157
14158   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14159      or with a normal static tracepoint.  */
14160   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
14161     ops = &strace_marker_breakpoint_ops;
14162   else
14163     ops = &tracepoint_breakpoint_ops;
14164
14165   if (create_breakpoint (get_current_arch (),
14166                          arg,
14167                          NULL, 0, 1 /* parse arg */,
14168                          0 /* tempflag */,
14169                          bp_static_tracepoint /* type_wanted */,
14170                          0 /* Ignore count */,
14171                          pending_break_support,
14172                          ops,
14173                          from_tty,
14174                          1 /* enabled */,
14175                          0 /* internal */))
14176     set_tracepoint_count (breakpoint_count);
14177 }
14178
14179 /* Set up a fake reader function that gets command lines from a linked
14180    list that was acquired during tracepoint uploading.  */
14181
14182 static struct uploaded_tp *this_utp;
14183 static int next_cmd;
14184
14185 static char *
14186 read_uploaded_action (void)
14187 {
14188   char *rslt;
14189
14190   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
14191
14192   next_cmd++;
14193
14194   return rslt;
14195 }
14196
14197 /* Given information about a tracepoint as recorded on a target (which
14198    can be either a live system or a trace file), attempt to create an
14199    equivalent GDB tracepoint.  This is not a reliable process, since
14200    the target does not necessarily have all the information used when
14201    the tracepoint was originally defined.  */
14202   
14203 struct tracepoint *
14204 create_tracepoint_from_upload (struct uploaded_tp *utp)
14205 {
14206   char *addr_str, small_buf[100];
14207   struct tracepoint *tp;
14208
14209   if (utp->at_string)
14210     addr_str = utp->at_string;
14211   else
14212     {
14213       /* In the absence of a source location, fall back to raw
14214          address.  Since there is no way to confirm that the address
14215          means the same thing as when the trace was started, warn the
14216          user.  */
14217       warning (_("Uploaded tracepoint %d has no "
14218                  "source location, using raw address"),
14219                utp->number);
14220       sprintf (small_buf, "*%s", hex_string (utp->addr));
14221       addr_str = small_buf;
14222     }
14223
14224   /* There's not much we can do with a sequence of bytecodes.  */
14225   if (utp->cond && !utp->cond_string)
14226     warning (_("Uploaded tracepoint %d condition "
14227                "has no source form, ignoring it"),
14228              utp->number);
14229
14230   if (!create_breakpoint (get_current_arch (),
14231                           addr_str,
14232                           utp->cond_string, -1, 0 /* parse cond/thread */,
14233                           0 /* tempflag */,
14234                           utp->type /* type_wanted */,
14235                           0 /* Ignore count */,
14236                           pending_break_support,
14237                           &tracepoint_breakpoint_ops,
14238                           0 /* from_tty */,
14239                           utp->enabled /* enabled */,
14240                           0 /* internal */))
14241     return NULL;
14242
14243   set_tracepoint_count (breakpoint_count);
14244   
14245   /* Get the tracepoint we just created.  */
14246   tp = get_tracepoint (tracepoint_count);
14247   gdb_assert (tp != NULL);
14248
14249   if (utp->pass > 0)
14250     {
14251       sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
14252
14253       trace_pass_command (small_buf, 0);
14254     }
14255
14256   /* If we have uploaded versions of the original commands, set up a
14257      special-purpose "reader" function and call the usual command line
14258      reader, then pass the result to the breakpoint command-setting
14259      function.  */
14260   if (!VEC_empty (char_ptr, utp->cmd_strings))
14261     {
14262       struct command_line *cmd_list;
14263
14264       this_utp = utp;
14265       next_cmd = 0;
14266
14267       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14268
14269       breakpoint_set_commands (&tp->base, cmd_list);
14270     }
14271   else if (!VEC_empty (char_ptr, utp->actions)
14272            || !VEC_empty (char_ptr, utp->step_actions))
14273     warning (_("Uploaded tracepoint %d actions "
14274                "have no source form, ignoring them"),
14275              utp->number);
14276
14277   /* Copy any status information that might be available.  */
14278   tp->base.hit_count = utp->hit_count;
14279   tp->traceframe_usage = utp->traceframe_usage;
14280
14281   return tp;
14282 }
14283   
14284 /* Print information on tracepoint number TPNUM_EXP, or all if
14285    omitted.  */
14286
14287 static void
14288 tracepoints_info (char *args, int from_tty)
14289 {
14290   struct ui_out *uiout = current_uiout;
14291   int num_printed;
14292
14293   num_printed = breakpoint_1 (args, 0, is_tracepoint);
14294
14295   if (num_printed == 0)
14296     {
14297       if (args == NULL || *args == '\0')
14298         ui_out_message (uiout, 0, "No tracepoints.\n");
14299       else
14300         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
14301     }
14302
14303   default_collect_info ();
14304 }
14305
14306 /* The 'enable trace' command enables tracepoints.
14307    Not supported by all targets.  */
14308 static void
14309 enable_trace_command (char *args, int from_tty)
14310 {
14311   enable_command (args, from_tty);
14312 }
14313
14314 /* The 'disable trace' command disables tracepoints.
14315    Not supported by all targets.  */
14316 static void
14317 disable_trace_command (char *args, int from_tty)
14318 {
14319   disable_command (args, from_tty);
14320 }
14321
14322 /* Remove a tracepoint (or all if no argument).  */
14323 static void
14324 delete_trace_command (char *arg, int from_tty)
14325 {
14326   struct breakpoint *b, *b_tmp;
14327
14328   dont_repeat ();
14329
14330   if (arg == 0)
14331     {
14332       int breaks_to_delete = 0;
14333
14334       /* Delete all breakpoints if no argument.
14335          Do not delete internal or call-dummy breakpoints, these
14336          have to be deleted with an explicit breakpoint number 
14337          argument.  */
14338       ALL_TRACEPOINTS (b)
14339         if (is_tracepoint (b) && user_breakpoint_p (b))
14340           {
14341             breaks_to_delete = 1;
14342             break;
14343           }
14344
14345       /* Ask user only if there are some breakpoints to delete.  */
14346       if (!from_tty
14347           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14348         {
14349           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14350             if (is_tracepoint (b) && user_breakpoint_p (b))
14351               delete_breakpoint (b);
14352         }
14353     }
14354   else
14355     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14356 }
14357
14358 /* Helper function for trace_pass_command.  */
14359
14360 static void
14361 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14362 {
14363   tp->pass_count = count;
14364   observer_notify_tracepoint_modified (tp->base.number);
14365   if (from_tty)
14366     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14367                      tp->base.number, count);
14368 }
14369
14370 /* Set passcount for tracepoint.
14371
14372    First command argument is passcount, second is tracepoint number.
14373    If tracepoint number omitted, apply to most recently defined.
14374    Also accepts special argument "all".  */
14375
14376 static void
14377 trace_pass_command (char *args, int from_tty)
14378 {
14379   struct tracepoint *t1;
14380   unsigned int count;
14381
14382   if (args == 0 || *args == 0)
14383     error (_("passcount command requires an "
14384              "argument (count + optional TP num)"));
14385
14386   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
14387
14388   while (*args && isspace ((int) *args))
14389     args++;
14390
14391   if (*args && strncasecmp (args, "all", 3) == 0)
14392     {
14393       struct breakpoint *b;
14394
14395       args += 3;                        /* Skip special argument "all".  */
14396       if (*args)
14397         error (_("Junk at end of arguments."));
14398
14399       ALL_TRACEPOINTS (b)
14400       {
14401         t1 = (struct tracepoint *) b;
14402         trace_pass_set_count (t1, count, from_tty);
14403       }
14404     }
14405   else if (*args == '\0')
14406     {
14407       t1 = get_tracepoint_by_number (&args, NULL, 1);
14408       if (t1)
14409         trace_pass_set_count (t1, count, from_tty);
14410     }
14411   else
14412     {
14413       struct get_number_or_range_state state;
14414
14415       init_number_or_range (&state, args);
14416       while (!state.finished)
14417         {
14418           t1 = get_tracepoint_by_number (&args, &state, 1);
14419           if (t1)
14420             trace_pass_set_count (t1, count, from_tty);
14421         }
14422     }
14423 }
14424
14425 struct tracepoint *
14426 get_tracepoint (int num)
14427 {
14428   struct breakpoint *t;
14429
14430   ALL_TRACEPOINTS (t)
14431     if (t->number == num)
14432       return (struct tracepoint *) t;
14433
14434   return NULL;
14435 }
14436
14437 /* Find the tracepoint with the given target-side number (which may be
14438    different from the tracepoint number after disconnecting and
14439    reconnecting).  */
14440
14441 struct tracepoint *
14442 get_tracepoint_by_number_on_target (int num)
14443 {
14444   struct breakpoint *b;
14445
14446   ALL_TRACEPOINTS (b)
14447     {
14448       struct tracepoint *t = (struct tracepoint *) b;
14449
14450       if (t->number_on_target == num)
14451         return t;
14452     }
14453
14454   return NULL;
14455 }
14456
14457 /* Utility: parse a tracepoint number and look it up in the list.
14458    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14459    If OPTIONAL_P is true, then if the argument is missing, the most
14460    recent tracepoint (tracepoint_count) is returned.  */
14461 struct tracepoint *
14462 get_tracepoint_by_number (char **arg,
14463                           struct get_number_or_range_state *state,
14464                           int optional_p)
14465 {
14466   extern int tracepoint_count;
14467   struct breakpoint *t;
14468   int tpnum;
14469   char *instring = arg == NULL ? NULL : *arg;
14470
14471   if (state)
14472     {
14473       gdb_assert (!state->finished);
14474       tpnum = get_number_or_range (state);
14475     }
14476   else if (arg == NULL || *arg == NULL || ! **arg)
14477     {
14478       if (optional_p)
14479         tpnum = tracepoint_count;
14480       else
14481         error_no_arg (_("tracepoint number"));
14482     }
14483   else
14484     tpnum = get_number (arg);
14485
14486   if (tpnum <= 0)
14487     {
14488       if (instring && *instring)
14489         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14490                          instring);
14491       else
14492         printf_filtered (_("Tracepoint argument missing "
14493                            "and no previous tracepoint\n"));
14494       return NULL;
14495     }
14496
14497   ALL_TRACEPOINTS (t)
14498     if (t->number == tpnum)
14499     {
14500       return (struct tracepoint *) t;
14501     }
14502
14503   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14504   return NULL;
14505 }
14506
14507 void
14508 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14509 {
14510   if (b->thread != -1)
14511     fprintf_unfiltered (fp, " thread %d", b->thread);
14512
14513   if (b->task != 0)
14514     fprintf_unfiltered (fp, " task %d", b->task);
14515
14516   fprintf_unfiltered (fp, "\n");
14517 }
14518
14519 /* Save information on user settable breakpoints (watchpoints, etc) to
14520    a new script file named FILENAME.  If FILTER is non-NULL, call it
14521    on each breakpoint and only include the ones for which it returns
14522    non-zero.  */
14523
14524 static void
14525 save_breakpoints (char *filename, int from_tty,
14526                   int (*filter) (const struct breakpoint *))
14527 {
14528   struct breakpoint *tp;
14529   int any = 0;
14530   char *pathname;
14531   struct cleanup *cleanup;
14532   struct ui_file *fp;
14533   int extra_trace_bits = 0;
14534
14535   if (filename == 0 || *filename == 0)
14536     error (_("Argument required (file name in which to save)"));
14537
14538   /* See if we have anything to save.  */
14539   ALL_BREAKPOINTS (tp)
14540   {
14541     /* Skip internal and momentary breakpoints.  */
14542     if (!user_breakpoint_p (tp))
14543       continue;
14544
14545     /* If we have a filter, only save the breakpoints it accepts.  */
14546     if (filter && !filter (tp))
14547       continue;
14548
14549     any = 1;
14550
14551     if (is_tracepoint (tp))
14552       {
14553         extra_trace_bits = 1;
14554
14555         /* We can stop searching.  */
14556         break;
14557       }
14558   }
14559
14560   if (!any)
14561     {
14562       warning (_("Nothing to save."));
14563       return;
14564     }
14565
14566   pathname = tilde_expand (filename);
14567   cleanup = make_cleanup (xfree, pathname);
14568   fp = gdb_fopen (pathname, "w");
14569   if (!fp)
14570     error (_("Unable to open file '%s' for saving (%s)"),
14571            filename, safe_strerror (errno));
14572   make_cleanup_ui_file_delete (fp);
14573
14574   if (extra_trace_bits)
14575     save_trace_state_variables (fp);
14576
14577   ALL_BREAKPOINTS (tp)
14578   {
14579     /* Skip internal and momentary breakpoints.  */
14580     if (!user_breakpoint_p (tp))
14581       continue;
14582
14583     /* If we have a filter, only save the breakpoints it accepts.  */
14584     if (filter && !filter (tp))
14585       continue;
14586
14587     tp->ops->print_recreate (tp, fp);
14588
14589     /* Note, we can't rely on tp->number for anything, as we can't
14590        assume the recreated breakpoint numbers will match.  Use $bpnum
14591        instead.  */
14592
14593     if (tp->cond_string)
14594       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
14595
14596     if (tp->ignore_count)
14597       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
14598
14599     if (tp->commands)
14600       {
14601         volatile struct gdb_exception ex;       
14602
14603         fprintf_unfiltered (fp, "  commands\n");
14604         
14605         ui_out_redirect (current_uiout, fp);
14606         TRY_CATCH (ex, RETURN_MASK_ALL)
14607           {
14608             print_command_lines (current_uiout, tp->commands->commands, 2);
14609           }
14610         ui_out_redirect (current_uiout, NULL);
14611
14612         if (ex.reason < 0)
14613           throw_exception (ex);
14614
14615         fprintf_unfiltered (fp, "  end\n");
14616       }
14617
14618     if (tp->enable_state == bp_disabled)
14619       fprintf_unfiltered (fp, "disable\n");
14620
14621     /* If this is a multi-location breakpoint, check if the locations
14622        should be individually disabled.  Watchpoint locations are
14623        special, and not user visible.  */
14624     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
14625       {
14626         struct bp_location *loc;
14627         int n = 1;
14628
14629         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
14630           if (!loc->enabled)
14631             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
14632       }
14633   }
14634
14635   if (extra_trace_bits && *default_collect)
14636     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
14637
14638   do_cleanups (cleanup);
14639   if (from_tty)
14640     printf_filtered (_("Saved to file '%s'.\n"), filename);
14641 }
14642
14643 /* The `save breakpoints' command.  */
14644
14645 static void
14646 save_breakpoints_command (char *args, int from_tty)
14647 {
14648   save_breakpoints (args, from_tty, NULL);
14649 }
14650
14651 /* The `save tracepoints' command.  */
14652
14653 static void
14654 save_tracepoints_command (char *args, int from_tty)
14655 {
14656   save_breakpoints (args, from_tty, is_tracepoint);
14657 }
14658
14659 /* Create a vector of all tracepoints.  */
14660
14661 VEC(breakpoint_p) *
14662 all_tracepoints (void)
14663 {
14664   VEC(breakpoint_p) *tp_vec = 0;
14665   struct breakpoint *tp;
14666
14667   ALL_TRACEPOINTS (tp)
14668   {
14669     VEC_safe_push (breakpoint_p, tp_vec, tp);
14670   }
14671
14672   return tp_vec;
14673 }
14674
14675 \f
14676 /* This help string is used for the break, hbreak, tbreak and thbreak
14677    commands.  It is defined as a macro to prevent duplication.
14678    COMMAND should be a string constant containing the name of the
14679    command.  */
14680 #define BREAK_ARGS_HELP(command) \
14681 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
14682 LOCATION may be a line number, function name, or \"*\" and an address.\n\
14683 If a line number is specified, break at start of code for that line.\n\
14684 If a function is specified, break at start of code for that function.\n\
14685 If an address is specified, break at that exact address.\n\
14686 With no LOCATION, uses current execution address of the selected\n\
14687 stack frame.  This is useful for breaking on return to a stack frame.\n\
14688 \n\
14689 THREADNUM is the number from \"info threads\".\n\
14690 CONDITION is a boolean expression.\n\
14691 \n\
14692 Multiple breakpoints at one place are permitted, and useful if their\n\
14693 conditions are different.\n\
14694 \n\
14695 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
14696
14697 /* List of subcommands for "catch".  */
14698 static struct cmd_list_element *catch_cmdlist;
14699
14700 /* List of subcommands for "tcatch".  */
14701 static struct cmd_list_element *tcatch_cmdlist;
14702
14703 void
14704 add_catch_command (char *name, char *docstring,
14705                    void (*sfunc) (char *args, int from_tty,
14706                                   struct cmd_list_element *command),
14707                    char **(*completer) (struct cmd_list_element *cmd,
14708                                          char *text, char *word),
14709                    void *user_data_catch,
14710                    void *user_data_tcatch)
14711 {
14712   struct cmd_list_element *command;
14713
14714   command = add_cmd (name, class_breakpoint, NULL, docstring,
14715                      &catch_cmdlist);
14716   set_cmd_sfunc (command, sfunc);
14717   set_cmd_context (command, user_data_catch);
14718   set_cmd_completer (command, completer);
14719
14720   command = add_cmd (name, class_breakpoint, NULL, docstring,
14721                      &tcatch_cmdlist);
14722   set_cmd_sfunc (command, sfunc);
14723   set_cmd_context (command, user_data_tcatch);
14724   set_cmd_completer (command, completer);
14725 }
14726
14727 static void
14728 clear_syscall_counts (struct inferior *inf)
14729 {
14730   inf->total_syscalls_count = 0;
14731   inf->any_syscall_count = 0;
14732   VEC_free (int, inf->syscalls_counts);
14733 }
14734
14735 static void
14736 save_command (char *arg, int from_tty)
14737 {
14738   printf_unfiltered (_("\"save\" must be followed by "
14739                        "the name of a save subcommand.\n"));
14740   help_list (save_cmdlist, "save ", -1, gdb_stdout);
14741 }
14742
14743 struct breakpoint *
14744 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
14745                           void *data)
14746 {
14747   struct breakpoint *b, *b_tmp;
14748
14749   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14750     {
14751       if ((*callback) (b, data))
14752         return b;
14753     }
14754
14755   return NULL;
14756 }
14757
14758 /* Zero if any of the breakpoint's locations could be a location where
14759    functions have been inlined, nonzero otherwise.  */
14760
14761 static int
14762 is_non_inline_function (struct breakpoint *b)
14763 {
14764   /* The shared library event breakpoint is set on the address of a
14765      non-inline function.  */
14766   if (b->type == bp_shlib_event)
14767     return 1;
14768
14769   return 0;
14770 }
14771
14772 /* Nonzero if the specified PC cannot be a location where functions
14773    have been inlined.  */
14774
14775 int
14776 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
14777                            const struct target_waitstatus *ws)
14778 {
14779   struct breakpoint *b;
14780   struct bp_location *bl;
14781
14782   ALL_BREAKPOINTS (b)
14783     {
14784       if (!is_non_inline_function (b))
14785         continue;
14786
14787       for (bl = b->loc; bl != NULL; bl = bl->next)
14788         {
14789           if (!bl->shlib_disabled
14790               && bpstat_check_location (bl, aspace, pc, ws))
14791             return 1;
14792         }
14793     }
14794
14795   return 0;
14796 }
14797
14798 void
14799 initialize_breakpoint_ops (void)
14800 {
14801   static int initialized = 0;
14802
14803   struct breakpoint_ops *ops;
14804
14805   if (initialized)
14806     return;
14807   initialized = 1;
14808
14809   /* The breakpoint_ops structure to be inherit by all kinds of
14810      breakpoints (real breakpoints, i.e., user "break" breakpoints,
14811      internal and momentary breakpoints, etc.).  */
14812   ops = &bkpt_base_breakpoint_ops;
14813   *ops = base_breakpoint_ops;
14814   ops->re_set = bkpt_re_set;
14815   ops->insert_location = bkpt_insert_location;
14816   ops->remove_location = bkpt_remove_location;
14817   ops->breakpoint_hit = bkpt_breakpoint_hit;
14818   ops->create_sals_from_address = bkpt_create_sals_from_address;
14819   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
14820   ops->decode_linespec = bkpt_decode_linespec;
14821
14822   /* The breakpoint_ops structure to be used in regular breakpoints.  */
14823   ops = &bkpt_breakpoint_ops;
14824   *ops = bkpt_base_breakpoint_ops;
14825   ops->re_set = bkpt_re_set;
14826   ops->resources_needed = bkpt_resources_needed;
14827   ops->print_it = bkpt_print_it;
14828   ops->print_mention = bkpt_print_mention;
14829   ops->print_recreate = bkpt_print_recreate;
14830
14831   /* Ranged breakpoints.  */
14832   ops = &ranged_breakpoint_ops;
14833   *ops = bkpt_breakpoint_ops;
14834   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
14835   ops->resources_needed = resources_needed_ranged_breakpoint;
14836   ops->print_it = print_it_ranged_breakpoint;
14837   ops->print_one = print_one_ranged_breakpoint;
14838   ops->print_one_detail = print_one_detail_ranged_breakpoint;
14839   ops->print_mention = print_mention_ranged_breakpoint;
14840   ops->print_recreate = print_recreate_ranged_breakpoint;
14841
14842   /* Internal breakpoints.  */
14843   ops = &internal_breakpoint_ops;
14844   *ops = bkpt_base_breakpoint_ops;
14845   ops->re_set = internal_bkpt_re_set;
14846   ops->check_status = internal_bkpt_check_status;
14847   ops->print_it = internal_bkpt_print_it;
14848   ops->print_mention = internal_bkpt_print_mention;
14849
14850   /* Momentary breakpoints.  */
14851   ops = &momentary_breakpoint_ops;
14852   *ops = bkpt_base_breakpoint_ops;
14853   ops->re_set = momentary_bkpt_re_set;
14854   ops->check_status = momentary_bkpt_check_status;
14855   ops->print_it = momentary_bkpt_print_it;
14856   ops->print_mention = momentary_bkpt_print_mention;
14857
14858   /* GNU v3 exception catchpoints.  */
14859   ops = &gnu_v3_exception_catchpoint_ops;
14860   *ops = bkpt_breakpoint_ops;
14861   ops->print_it = print_it_exception_catchpoint;
14862   ops->print_one = print_one_exception_catchpoint;
14863   ops->print_mention = print_mention_exception_catchpoint;
14864   ops->print_recreate = print_recreate_exception_catchpoint;
14865
14866   /* Watchpoints.  */
14867   ops = &watchpoint_breakpoint_ops;
14868   *ops = base_breakpoint_ops;
14869   ops->dtor = dtor_watchpoint;
14870   ops->re_set = re_set_watchpoint;
14871   ops->insert_location = insert_watchpoint;
14872   ops->remove_location = remove_watchpoint;
14873   ops->breakpoint_hit = breakpoint_hit_watchpoint;
14874   ops->check_status = check_status_watchpoint;
14875   ops->resources_needed = resources_needed_watchpoint;
14876   ops->works_in_software_mode = works_in_software_mode_watchpoint;
14877   ops->print_it = print_it_watchpoint;
14878   ops->print_mention = print_mention_watchpoint;
14879   ops->print_recreate = print_recreate_watchpoint;
14880
14881   /* Masked watchpoints.  */
14882   ops = &masked_watchpoint_breakpoint_ops;
14883   *ops = watchpoint_breakpoint_ops;
14884   ops->insert_location = insert_masked_watchpoint;
14885   ops->remove_location = remove_masked_watchpoint;
14886   ops->resources_needed = resources_needed_masked_watchpoint;
14887   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
14888   ops->print_it = print_it_masked_watchpoint;
14889   ops->print_one_detail = print_one_detail_masked_watchpoint;
14890   ops->print_mention = print_mention_masked_watchpoint;
14891   ops->print_recreate = print_recreate_masked_watchpoint;
14892
14893   /* Tracepoints.  */
14894   ops = &tracepoint_breakpoint_ops;
14895   *ops = base_breakpoint_ops;
14896   ops->re_set = tracepoint_re_set;
14897   ops->breakpoint_hit = tracepoint_breakpoint_hit;
14898   ops->print_one_detail = tracepoint_print_one_detail;
14899   ops->print_mention = tracepoint_print_mention;
14900   ops->print_recreate = tracepoint_print_recreate;
14901   ops->create_sals_from_address = tracepoint_create_sals_from_address;
14902   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
14903   ops->decode_linespec = tracepoint_decode_linespec;
14904
14905   /* Static tracepoints with marker (`-m').  */
14906   ops = &strace_marker_breakpoint_ops;
14907   *ops = tracepoint_breakpoint_ops;
14908   ops->create_sals_from_address = strace_marker_create_sals_from_address;
14909   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
14910   ops->decode_linespec = strace_marker_decode_linespec;
14911
14912   /* Fork catchpoints.  */
14913   ops = &catch_fork_breakpoint_ops;
14914   *ops = base_breakpoint_ops;
14915   ops->insert_location = insert_catch_fork;
14916   ops->remove_location = remove_catch_fork;
14917   ops->breakpoint_hit = breakpoint_hit_catch_fork;
14918   ops->print_it = print_it_catch_fork;
14919   ops->print_one = print_one_catch_fork;
14920   ops->print_mention = print_mention_catch_fork;
14921   ops->print_recreate = print_recreate_catch_fork;
14922
14923   /* Vfork catchpoints.  */
14924   ops = &catch_vfork_breakpoint_ops;
14925   *ops = base_breakpoint_ops;
14926   ops->insert_location = insert_catch_vfork;
14927   ops->remove_location = remove_catch_vfork;
14928   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
14929   ops->print_it = print_it_catch_vfork;
14930   ops->print_one = print_one_catch_vfork;
14931   ops->print_mention = print_mention_catch_vfork;
14932   ops->print_recreate = print_recreate_catch_vfork;
14933
14934   /* Exec catchpoints.  */
14935   ops = &catch_exec_breakpoint_ops;
14936   *ops = base_breakpoint_ops;
14937   ops->dtor = dtor_catch_exec;
14938   ops->insert_location = insert_catch_exec;
14939   ops->remove_location = remove_catch_exec;
14940   ops->breakpoint_hit = breakpoint_hit_catch_exec;
14941   ops->print_it = print_it_catch_exec;
14942   ops->print_one = print_one_catch_exec;
14943   ops->print_mention = print_mention_catch_exec;
14944   ops->print_recreate = print_recreate_catch_exec;
14945
14946   /* Syscall catchpoints.  */
14947   ops = &catch_syscall_breakpoint_ops;
14948   *ops = base_breakpoint_ops;
14949   ops->dtor = dtor_catch_syscall;
14950   ops->insert_location = insert_catch_syscall;
14951   ops->remove_location = remove_catch_syscall;
14952   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
14953   ops->print_it = print_it_catch_syscall;
14954   ops->print_one = print_one_catch_syscall;
14955   ops->print_mention = print_mention_catch_syscall;
14956   ops->print_recreate = print_recreate_catch_syscall;
14957
14958   /* Solib-related catchpoints.  */
14959   ops = &catch_solib_breakpoint_ops;
14960   *ops = base_breakpoint_ops;
14961   ops->dtor = dtor_catch_solib;
14962   ops->insert_location = insert_catch_solib;
14963   ops->remove_location = remove_catch_solib;
14964   ops->breakpoint_hit = breakpoint_hit_catch_solib;
14965   ops->check_status = check_status_catch_solib;
14966   ops->print_it = print_it_catch_solib;
14967   ops->print_one = print_one_catch_solib;
14968   ops->print_mention = print_mention_catch_solib;
14969   ops->print_recreate = print_recreate_catch_solib;
14970 }
14971
14972 void
14973 _initialize_breakpoint (void)
14974 {
14975   struct cmd_list_element *c;
14976
14977   initialize_breakpoint_ops ();
14978
14979   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
14980   observer_attach_inferior_exit (clear_syscall_counts);
14981   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
14982
14983   breakpoint_objfile_key = register_objfile_data ();
14984
14985   breakpoint_chain = 0;
14986   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
14987      before a breakpoint is set.  */
14988   breakpoint_count = 0;
14989
14990   tracepoint_count = 0;
14991
14992   add_com ("ignore", class_breakpoint, ignore_command, _("\
14993 Set ignore-count of breakpoint number N to COUNT.\n\
14994 Usage is `ignore N COUNT'."));
14995   if (xdb_commands)
14996     add_com_alias ("bc", "ignore", class_breakpoint, 1);
14997
14998   add_com ("commands", class_breakpoint, commands_command, _("\
14999 Set commands to be executed when a breakpoint is hit.\n\
15000 Give breakpoint number as argument after \"commands\".\n\
15001 With no argument, the targeted breakpoint is the last one set.\n\
15002 The commands themselves follow starting on the next line.\n\
15003 Type a line containing \"end\" to indicate the end of them.\n\
15004 Give \"silent\" as the first line to make the breakpoint silent;\n\
15005 then no output is printed when it is hit, except what the commands print."));
15006
15007   add_com ("condition", class_breakpoint, condition_command, _("\
15008 Specify breakpoint number N to break only if COND is true.\n\
15009 Usage is `condition N COND', where N is an integer and COND is an\n\
15010 expression to be evaluated whenever breakpoint N is reached."));
15011
15012   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15013 Set a temporary breakpoint.\n\
15014 Like \"break\" except the breakpoint is only temporary,\n\
15015 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15016 by using \"enable delete\" on the breakpoint number.\n\
15017 \n"
15018 BREAK_ARGS_HELP ("tbreak")));
15019   set_cmd_completer (c, location_completer);
15020
15021   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15022 Set a hardware assisted breakpoint.\n\
15023 Like \"break\" except the breakpoint requires hardware support,\n\
15024 some target hardware may not have this support.\n\
15025 \n"
15026 BREAK_ARGS_HELP ("hbreak")));
15027   set_cmd_completer (c, location_completer);
15028
15029   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15030 Set a temporary hardware assisted breakpoint.\n\
15031 Like \"hbreak\" except the breakpoint is only temporary,\n\
15032 so it will be deleted when hit.\n\
15033 \n"
15034 BREAK_ARGS_HELP ("thbreak")));
15035   set_cmd_completer (c, location_completer);
15036
15037   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15038 Enable some breakpoints.\n\
15039 Give breakpoint numbers (separated by spaces) as arguments.\n\
15040 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15041 This is used to cancel the effect of the \"disable\" command.\n\
15042 With a subcommand you can enable temporarily."),
15043                   &enablelist, "enable ", 1, &cmdlist);
15044   if (xdb_commands)
15045     add_com ("ab", class_breakpoint, enable_command, _("\
15046 Enable some breakpoints.\n\
15047 Give breakpoint numbers (separated by spaces) as arguments.\n\
15048 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15049 This is used to cancel the effect of the \"disable\" command.\n\
15050 With a subcommand you can enable temporarily."));
15051
15052   add_com_alias ("en", "enable", class_breakpoint, 1);
15053
15054   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15055 Enable some breakpoints.\n\
15056 Give breakpoint numbers (separated by spaces) as arguments.\n\
15057 This is used to cancel the effect of the \"disable\" command.\n\
15058 May be abbreviated to simply \"enable\".\n"),
15059                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15060
15061   add_cmd ("once", no_class, enable_once_command, _("\
15062 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15063 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15064            &enablebreaklist);
15065
15066   add_cmd ("delete", no_class, enable_delete_command, _("\
15067 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15068 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15069            &enablebreaklist);
15070
15071   add_cmd ("count", no_class, enable_count_command, _("\
15072 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15073 If a breakpoint is hit while enabled in this fashion,\n\
15074 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15075            &enablebreaklist);
15076
15077   add_cmd ("delete", no_class, enable_delete_command, _("\
15078 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15079 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15080            &enablelist);
15081
15082   add_cmd ("once", no_class, enable_once_command, _("\
15083 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15084 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15085            &enablelist);
15086
15087   add_cmd ("count", no_class, enable_count_command, _("\
15088 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15089 If a breakpoint is hit while enabled in this fashion,\n\
15090 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15091            &enablelist);
15092
15093   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15094 Disable some breakpoints.\n\
15095 Arguments are breakpoint numbers with spaces in between.\n\
15096 To disable all breakpoints, give no argument.\n\
15097 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15098                   &disablelist, "disable ", 1, &cmdlist);
15099   add_com_alias ("dis", "disable", class_breakpoint, 1);
15100   add_com_alias ("disa", "disable", class_breakpoint, 1);
15101   if (xdb_commands)
15102     add_com ("sb", class_breakpoint, disable_command, _("\
15103 Disable some breakpoints.\n\
15104 Arguments are breakpoint numbers with spaces in between.\n\
15105 To disable all breakpoints, give no argument.\n\
15106 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
15107
15108   add_cmd ("breakpoints", class_alias, disable_command, _("\
15109 Disable some breakpoints.\n\
15110 Arguments are breakpoint numbers with spaces in between.\n\
15111 To disable all breakpoints, give no argument.\n\
15112 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15113 This command may be abbreviated \"disable\"."),
15114            &disablelist);
15115
15116   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15117 Delete some breakpoints or auto-display expressions.\n\
15118 Arguments are breakpoint numbers with spaces in between.\n\
15119 To delete all breakpoints, give no argument.\n\
15120 \n\
15121 Also a prefix command for deletion of other GDB objects.\n\
15122 The \"unset\" command is also an alias for \"delete\"."),
15123                   &deletelist, "delete ", 1, &cmdlist);
15124   add_com_alias ("d", "delete", class_breakpoint, 1);
15125   add_com_alias ("del", "delete", class_breakpoint, 1);
15126   if (xdb_commands)
15127     add_com ("db", class_breakpoint, delete_command, _("\
15128 Delete some breakpoints.\n\
15129 Arguments are breakpoint numbers with spaces in between.\n\
15130 To delete all breakpoints, give no argument.\n"));
15131
15132   add_cmd ("breakpoints", class_alias, delete_command, _("\
15133 Delete some breakpoints or auto-display expressions.\n\
15134 Arguments are breakpoint numbers with spaces in between.\n\
15135 To delete all breakpoints, give no argument.\n\
15136 This command may be abbreviated \"delete\"."),
15137            &deletelist);
15138
15139   add_com ("clear", class_breakpoint, clear_command, _("\
15140 Clear breakpoint at specified line or function.\n\
15141 Argument may be line number, function name, or \"*\" and an address.\n\
15142 If line number is specified, all breakpoints in that line are cleared.\n\
15143 If function is specified, breakpoints at beginning of function are cleared.\n\
15144 If an address is specified, breakpoints at that address are cleared.\n\
15145 \n\
15146 With no argument, clears all breakpoints in the line that the selected frame\n\
15147 is executing in.\n\
15148 \n\
15149 See also the \"delete\" command which clears breakpoints by number."));
15150   add_com_alias ("cl", "clear", class_breakpoint, 1);
15151
15152   c = add_com ("break", class_breakpoint, break_command, _("\
15153 Set breakpoint at specified line or function.\n"
15154 BREAK_ARGS_HELP ("break")));
15155   set_cmd_completer (c, location_completer);
15156
15157   add_com_alias ("b", "break", class_run, 1);
15158   add_com_alias ("br", "break", class_run, 1);
15159   add_com_alias ("bre", "break", class_run, 1);
15160   add_com_alias ("brea", "break", class_run, 1);
15161
15162   if (xdb_commands)
15163    add_com_alias ("ba", "break", class_breakpoint, 1);
15164
15165   if (dbx_commands)
15166     {
15167       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15168 Break in function/address or break at a line in the current file."),
15169                              &stoplist, "stop ", 1, &cmdlist);
15170       add_cmd ("in", class_breakpoint, stopin_command,
15171                _("Break in function or address."), &stoplist);
15172       add_cmd ("at", class_breakpoint, stopat_command,
15173                _("Break at a line in the current file."), &stoplist);
15174       add_com ("status", class_info, breakpoints_info, _("\
15175 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15176 The \"Type\" column indicates one of:\n\
15177 \tbreakpoint     - normal breakpoint\n\
15178 \twatchpoint     - watchpoint\n\
15179 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15180 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15181 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15182 address and file/line number respectively.\n\
15183 \n\
15184 Convenience variable \"$_\" and default examine address for \"x\"\n\
15185 are set to the address of the last breakpoint listed unless the command\n\
15186 is prefixed with \"server \".\n\n\
15187 Convenience variable \"$bpnum\" contains the number of the last\n\
15188 breakpoint set."));
15189     }
15190
15191   add_info ("breakpoints", breakpoints_info, _("\
15192 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15193 The \"Type\" column indicates one of:\n\
15194 \tbreakpoint     - normal breakpoint\n\
15195 \twatchpoint     - watchpoint\n\
15196 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15197 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15198 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15199 address and file/line number respectively.\n\
15200 \n\
15201 Convenience variable \"$_\" and default examine address for \"x\"\n\
15202 are set to the address of the last breakpoint listed unless the command\n\
15203 is prefixed with \"server \".\n\n\
15204 Convenience variable \"$bpnum\" contains the number of the last\n\
15205 breakpoint set."));
15206
15207   add_info_alias ("b", "breakpoints", 1);
15208
15209   if (xdb_commands)
15210     add_com ("lb", class_breakpoint, breakpoints_info, _("\
15211 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15212 The \"Type\" column indicates one of:\n\
15213 \tbreakpoint     - normal breakpoint\n\
15214 \twatchpoint     - watchpoint\n\
15215 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15216 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15217 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15218 address and file/line number respectively.\n\
15219 \n\
15220 Convenience variable \"$_\" and default examine address for \"x\"\n\
15221 are set to the address of the last breakpoint listed unless the command\n\
15222 is prefixed with \"server \".\n\n\
15223 Convenience variable \"$bpnum\" contains the number of the last\n\
15224 breakpoint set."));
15225
15226   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15227 Status of all breakpoints, or breakpoint number NUMBER.\n\
15228 The \"Type\" column indicates one of:\n\
15229 \tbreakpoint     - normal breakpoint\n\
15230 \twatchpoint     - watchpoint\n\
15231 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15232 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15233 \tuntil          - internal breakpoint used by the \"until\" command\n\
15234 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15235 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15236 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15237 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15238 address and file/line number respectively.\n\
15239 \n\
15240 Convenience variable \"$_\" and default examine address for \"x\"\n\
15241 are set to the address of the last breakpoint listed unless the command\n\
15242 is prefixed with \"server \".\n\n\
15243 Convenience variable \"$bpnum\" contains the number of the last\n\
15244 breakpoint set."),
15245            &maintenanceinfolist);
15246
15247   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15248 Set catchpoints to catch events."),
15249                   &catch_cmdlist, "catch ",
15250                   0/*allow-unknown*/, &cmdlist);
15251
15252   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15253 Set temporary catchpoints to catch events."),
15254                   &tcatch_cmdlist, "tcatch ",
15255                   0/*allow-unknown*/, &cmdlist);
15256
15257   /* Add catch and tcatch sub-commands.  */
15258   add_catch_command ("catch", _("\
15259 Catch an exception, when caught."),
15260                      catch_catch_command,
15261                      NULL,
15262                      CATCH_PERMANENT,
15263                      CATCH_TEMPORARY);
15264   add_catch_command ("throw", _("\
15265 Catch an exception, when thrown."),
15266                      catch_throw_command,
15267                      NULL,
15268                      CATCH_PERMANENT,
15269                      CATCH_TEMPORARY);
15270   add_catch_command ("fork", _("Catch calls to fork."),
15271                      catch_fork_command_1,
15272                      NULL,
15273                      (void *) (uintptr_t) catch_fork_permanent,
15274                      (void *) (uintptr_t) catch_fork_temporary);
15275   add_catch_command ("vfork", _("Catch calls to vfork."),
15276                      catch_fork_command_1,
15277                      NULL,
15278                      (void *) (uintptr_t) catch_vfork_permanent,
15279                      (void *) (uintptr_t) catch_vfork_temporary);
15280   add_catch_command ("exec", _("Catch calls to exec."),
15281                      catch_exec_command_1,
15282                      NULL,
15283                      CATCH_PERMANENT,
15284                      CATCH_TEMPORARY);
15285   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15286 Usage: catch load [REGEX]\n\
15287 If REGEX is given, only stop for libraries matching the regular expression."),
15288                      catch_load_command_1,
15289                      NULL,
15290                      CATCH_PERMANENT,
15291                      CATCH_TEMPORARY);
15292   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15293 Usage: catch unload [REGEX]\n\
15294 If REGEX is given, only stop for libraries matching the regular expression."),
15295                      catch_unload_command_1,
15296                      NULL,
15297                      CATCH_PERMANENT,
15298                      CATCH_TEMPORARY);
15299   add_catch_command ("syscall", _("\
15300 Catch system calls by their names and/or numbers.\n\
15301 Arguments say which system calls to catch.  If no arguments\n\
15302 are given, every system call will be caught.\n\
15303 Arguments, if given, should be one or more system call names\n\
15304 (if your system supports that), or system call numbers."),
15305                      catch_syscall_command_1,
15306                      catch_syscall_completer,
15307                      CATCH_PERMANENT,
15308                      CATCH_TEMPORARY);
15309
15310   c = add_com ("watch", class_breakpoint, watch_command, _("\
15311 Set a watchpoint for an expression.\n\
15312 Usage: watch [-l|-location] EXPRESSION\n\
15313 A watchpoint stops execution of your program whenever the value of\n\
15314 an expression changes.\n\
15315 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15316 the memory to which it refers."));
15317   set_cmd_completer (c, expression_completer);
15318
15319   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15320 Set a read watchpoint for an expression.\n\
15321 Usage: rwatch [-l|-location] EXPRESSION\n\
15322 A watchpoint stops execution of your program whenever the value of\n\
15323 an expression is read.\n\
15324 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15325 the memory to which it refers."));
15326   set_cmd_completer (c, expression_completer);
15327
15328   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15329 Set a watchpoint for an expression.\n\
15330 Usage: awatch [-l|-location] EXPRESSION\n\
15331 A watchpoint stops execution of your program whenever the value of\n\
15332 an expression is either read or written.\n\
15333 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15334 the memory to which it refers."));
15335   set_cmd_completer (c, expression_completer);
15336
15337   add_info ("watchpoints", watchpoints_info, _("\
15338 Status of specified watchpoints (all watchpoints if no argument)."));
15339
15340   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15341      respond to changes - contrary to the description.  */
15342   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15343                             &can_use_hw_watchpoints, _("\
15344 Set debugger's willingness to use watchpoint hardware."), _("\
15345 Show debugger's willingness to use watchpoint hardware."), _("\
15346 If zero, gdb will not use hardware for new watchpoints, even if\n\
15347 such is available.  (However, any hardware watchpoints that were\n\
15348 created before setting this to nonzero, will continue to use watchpoint\n\
15349 hardware.)"),
15350                             NULL,
15351                             show_can_use_hw_watchpoints,
15352                             &setlist, &showlist);
15353
15354   can_use_hw_watchpoints = 1;
15355
15356   /* Tracepoint manipulation commands.  */
15357
15358   c = add_com ("trace", class_breakpoint, trace_command, _("\
15359 Set a tracepoint at specified line or function.\n\
15360 \n"
15361 BREAK_ARGS_HELP ("trace") "\n\
15362 Do \"help tracepoints\" for info on other tracepoint commands."));
15363   set_cmd_completer (c, location_completer);
15364
15365   add_com_alias ("tp", "trace", class_alias, 0);
15366   add_com_alias ("tr", "trace", class_alias, 1);
15367   add_com_alias ("tra", "trace", class_alias, 1);
15368   add_com_alias ("trac", "trace", class_alias, 1);
15369
15370   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15371 Set a fast tracepoint at specified line or function.\n\
15372 \n"
15373 BREAK_ARGS_HELP ("ftrace") "\n\
15374 Do \"help tracepoints\" for info on other tracepoint commands."));
15375   set_cmd_completer (c, location_completer);
15376
15377   c = add_com ("strace", class_breakpoint, strace_command, _("\
15378 Set a static tracepoint at specified line, function or marker.\n\
15379 \n\
15380 strace [LOCATION] [if CONDITION]\n\
15381 LOCATION may be a line number, function name, \"*\" and an address,\n\
15382 or -m MARKER_ID.\n\
15383 If a line number is specified, probe the marker at start of code\n\
15384 for that line.  If a function is specified, probe the marker at start\n\
15385 of code for that function.  If an address is specified, probe the marker\n\
15386 at that exact address.  If a marker id is specified, probe the marker\n\
15387 with that name.  With no LOCATION, uses current execution address of\n\
15388 the selected stack frame.\n\
15389 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15390 This collects arbitrary user data passed in the probe point call to the\n\
15391 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15392 by printing the $_sdata variable like any other convenience variable.\n\
15393 \n\
15394 CONDITION is a boolean expression.\n\
15395 \n\
15396 Multiple tracepoints at one place are permitted, and useful if their\n\
15397 conditions are different.\n\
15398 \n\
15399 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15400 Do \"help tracepoints\" for info on other tracepoint commands."));
15401   set_cmd_completer (c, location_completer);
15402
15403   add_info ("tracepoints", tracepoints_info, _("\
15404 Status of specified tracepoints (all tracepoints if no argument).\n\
15405 Convenience variable \"$tpnum\" contains the number of the\n\
15406 last tracepoint set."));
15407
15408   add_info_alias ("tp", "tracepoints", 1);
15409
15410   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15411 Delete specified tracepoints.\n\
15412 Arguments are tracepoint numbers, separated by spaces.\n\
15413 No argument means delete all tracepoints."),
15414            &deletelist);
15415
15416   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15417 Disable specified tracepoints.\n\
15418 Arguments are tracepoint numbers, separated by spaces.\n\
15419 No argument means disable all tracepoints."),
15420            &disablelist);
15421   deprecate_cmd (c, "disable");
15422
15423   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15424 Enable specified tracepoints.\n\
15425 Arguments are tracepoint numbers, separated by spaces.\n\
15426 No argument means enable all tracepoints."),
15427            &enablelist);
15428   deprecate_cmd (c, "enable");
15429
15430   add_com ("passcount", class_trace, trace_pass_command, _("\
15431 Set the passcount for a tracepoint.\n\
15432 The trace will end when the tracepoint has been passed 'count' times.\n\
15433 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15434 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15435
15436   add_prefix_cmd ("save", class_breakpoint, save_command,
15437                   _("Save breakpoint definitions as a script."),
15438                   &save_cmdlist, "save ",
15439                   0/*allow-unknown*/, &cmdlist);
15440
15441   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15442 Save current breakpoint definitions as a script.\n\
15443 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15444 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15445 session to restore them."),
15446                &save_cmdlist);
15447   set_cmd_completer (c, filename_completer);
15448
15449   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15450 Save current tracepoint definitions as a script.\n\
15451 Use the 'source' command in another debug session to restore them."),
15452                &save_cmdlist);
15453   set_cmd_completer (c, filename_completer);
15454
15455   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15456   deprecate_cmd (c, "save tracepoints");
15457
15458   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15459 Breakpoint specific settings\n\
15460 Configure various breakpoint-specific variables such as\n\
15461 pending breakpoint behavior"),
15462                   &breakpoint_set_cmdlist, "set breakpoint ",
15463                   0/*allow-unknown*/, &setlist);
15464   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15465 Breakpoint specific settings\n\
15466 Configure various breakpoint-specific variables such as\n\
15467 pending breakpoint behavior"),
15468                   &breakpoint_show_cmdlist, "show breakpoint ",
15469                   0/*allow-unknown*/, &showlist);
15470
15471   add_setshow_auto_boolean_cmd ("pending", no_class,
15472                                 &pending_break_support, _("\
15473 Set debugger's behavior regarding pending breakpoints."), _("\
15474 Show debugger's behavior regarding pending breakpoints."), _("\
15475 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15476 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15477 an error.  If auto, an unrecognized breakpoint location results in a\n\
15478 user-query to see if a pending breakpoint should be created."),
15479                                 NULL,
15480                                 show_pending_break_support,
15481                                 &breakpoint_set_cmdlist,
15482                                 &breakpoint_show_cmdlist);
15483
15484   pending_break_support = AUTO_BOOLEAN_AUTO;
15485
15486   add_setshow_boolean_cmd ("auto-hw", no_class,
15487                            &automatic_hardware_breakpoints, _("\
15488 Set automatic usage of hardware breakpoints."), _("\
15489 Show automatic usage of hardware breakpoints."), _("\
15490 If set, the debugger will automatically use hardware breakpoints for\n\
15491 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15492 a warning will be emitted for such breakpoints."),
15493                            NULL,
15494                            show_automatic_hardware_breakpoints,
15495                            &breakpoint_set_cmdlist,
15496                            &breakpoint_show_cmdlist);
15497
15498   add_setshow_enum_cmd ("always-inserted", class_support,
15499                         always_inserted_enums, &always_inserted_mode, _("\
15500 Set mode for inserting breakpoints."), _("\
15501 Show mode for inserting breakpoints."), _("\
15502 When this mode is off, breakpoints are inserted in inferior when it is\n\
15503 resumed, and removed when execution stops.  When this mode is on,\n\
15504 breakpoints are inserted immediately and removed only when the user\n\
15505 deletes the breakpoint.  When this mode is auto (which is the default),\n\
15506 the behaviour depends on the non-stop setting (see help set non-stop).\n\
15507 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
15508 behaves as if always-inserted mode is on; if gdb is controlling the\n\
15509 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
15510                            NULL,
15511                            &show_always_inserted_mode,
15512                            &breakpoint_set_cmdlist,
15513                            &breakpoint_show_cmdlist);
15514
15515   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15516                         condition_evaluation_enums,
15517                         &condition_evaluation_mode_1, _("\
15518 Set mode of breakpoint condition evaluation."), _("\
15519 Show mode of breakpoint condition evaluation."), _("\
15520 When this is set to \"gdb\", breakpoint conditions will be\n\
15521 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
15522 breakpoint conditions will be downloaded to the target (if the target\n\
15523 supports such feature) and conditions will be evaluated on the target's side.\n\
15524 If this is set to \"auto\" (default), this will be automatically set to\n\
15525 \"target\" if it supports condition evaluation, otherwise it will\n\
15526 be set to \"gdb\""),
15527                            &set_condition_evaluation_mode,
15528                            &show_condition_evaluation_mode,
15529                            &breakpoint_set_cmdlist,
15530                            &breakpoint_show_cmdlist);
15531
15532   add_com ("break-range", class_breakpoint, break_range_command, _("\
15533 Set a breakpoint for an address range.\n\
15534 break-range START-LOCATION, END-LOCATION\n\
15535 where START-LOCATION and END-LOCATION can be one of the following:\n\
15536   LINENUM, for that line in the current file,\n\
15537   FILE:LINENUM, for that line in that file,\n\
15538   +OFFSET, for that number of lines after the current line\n\
15539            or the start of the range\n\
15540   FUNCTION, for the first line in that function,\n\
15541   FILE:FUNCTION, to distinguish among like-named static functions.\n\
15542   *ADDRESS, for the instruction at that address.\n\
15543 \n\
15544 The breakpoint will stop execution of the inferior whenever it executes\n\
15545 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15546 range (including START-LOCATION and END-LOCATION)."));
15547
15548   automatic_hardware_breakpoints = 1;
15549
15550   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
15551 }