2012-01-24 Pedro Alves <palves@redhat.com>
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2012 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "cli/cli-utils.h"
64 #include "continuations.h"
65 #include "stack.h"
66 #include "skip.h"
67 #include "record.h"
68
69 /* readline include files */
70 #include "readline/readline.h"
71 #include "readline/history.h"
72
73 /* readline defines this.  */
74 #undef savestring
75
76 #include "mi/mi-common.h"
77 #include "python/python.h"
78
79 /* Prototypes for local functions.  */
80
81 static void enable_delete_command (char *, int);
82
83 static void enable_once_command (char *, int);
84
85 static void disable_command (char *, int);
86
87 static void enable_command (char *, int);
88
89 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
90                                                       void *),
91                                     void *);
92
93 static void ignore_command (char *, int);
94
95 static int breakpoint_re_set_one (void *);
96
97 static void breakpoint_re_set_default (struct breakpoint *);
98
99 static void create_sals_from_address_default (char **,
100                                               struct linespec_result *,
101                                               enum bptype, char *,
102                                               char **);
103
104 static void create_breakpoints_sal_default (struct gdbarch *,
105                                             struct linespec_result *,
106                                             struct linespec_sals *,
107                                             char *, enum bptype,
108                                             enum bpdisp, int, int,
109                                             int,
110                                             const struct breakpoint_ops *,
111                                             int, int, int);
112
113 static void decode_linespec_default (struct breakpoint *, char **,
114                                      struct symtabs_and_lines *);
115
116 static void clear_command (char *, int);
117
118 static void catch_command (char *, int);
119
120 static int can_use_hardware_watchpoint (struct value *);
121
122 static void break_command_1 (char *, int, int);
123
124 static void mention (struct breakpoint *);
125
126 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
127                                                                enum bptype,
128                                                                const struct breakpoint_ops *);
129 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
130                                                        const struct symtab_and_line *);
131
132 /* This function is used in gdbtk sources and thus can not be made
133    static.  */
134 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
135                                        struct symtab_and_line,
136                                        enum bptype,
137                                        const struct breakpoint_ops *);
138
139 static struct breakpoint *
140   momentary_breakpoint_from_master (struct breakpoint *orig,
141                                     enum bptype type,
142                                     const struct breakpoint_ops *ops);
143
144 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
145
146 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
147                                             CORE_ADDR bpaddr,
148                                             enum bptype bptype);
149
150 static void describe_other_breakpoints (struct gdbarch *,
151                                         struct program_space *, CORE_ADDR,
152                                         struct obj_section *, int);
153
154 static int breakpoint_address_match (struct address_space *aspace1,
155                                      CORE_ADDR addr1,
156                                      struct address_space *aspace2,
157                                      CORE_ADDR addr2);
158
159 static int watchpoint_locations_match (struct bp_location *loc1,
160                                        struct bp_location *loc2);
161
162 static int breakpoint_location_address_match (struct bp_location *bl,
163                                               struct address_space *aspace,
164                                               CORE_ADDR addr);
165
166 static void breakpoints_info (char *, int);
167
168 static void watchpoints_info (char *, int);
169
170 static int breakpoint_1 (char *, int, 
171                          int (*) (const struct breakpoint *));
172
173 static int breakpoint_cond_eval (void *);
174
175 static void cleanup_executing_breakpoints (void *);
176
177 static void commands_command (char *, int);
178
179 static void condition_command (char *, int);
180
181 typedef enum
182   {
183     mark_inserted,
184     mark_uninserted
185   }
186 insertion_state_t;
187
188 static int remove_breakpoint (struct bp_location *, insertion_state_t);
189 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
190
191 static enum print_stop_action print_bp_stop_message (bpstat bs);
192
193 static int watchpoint_check (void *);
194
195 static void maintenance_info_breakpoints (char *, int);
196
197 static int hw_breakpoint_used_count (void);
198
199 static int hw_watchpoint_use_count (struct breakpoint *);
200
201 static int hw_watchpoint_used_count_others (struct breakpoint *except,
202                                             enum bptype type,
203                                             int *other_type_used);
204
205 static void hbreak_command (char *, int);
206
207 static void thbreak_command (char *, int);
208
209 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp);
210
211 static void stop_command (char *arg, int from_tty);
212
213 static void stopin_command (char *arg, int from_tty);
214
215 static void stopat_command (char *arg, int from_tty);
216
217 static char *ep_parse_optional_if_clause (char **arg);
218
219 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
220                                        char *arg, int tempflag, int from_tty);
221
222 static void tcatch_command (char *arg, int from_tty);
223
224 static void detach_single_step_breakpoints (void);
225
226 static int single_step_breakpoint_inserted_here_p (struct address_space *,
227                                                    CORE_ADDR pc);
228
229 static void free_bp_location (struct bp_location *loc);
230 static void incref_bp_location (struct bp_location *loc);
231 static void decref_bp_location (struct bp_location **loc);
232
233 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
234
235 static void update_global_location_list (int);
236
237 static void update_global_location_list_nothrow (int);
238
239 static int is_hardware_watchpoint (const struct breakpoint *bpt);
240
241 static void insert_breakpoint_locations (void);
242
243 static int syscall_catchpoint_p (struct breakpoint *b);
244
245 static void tracepoints_info (char *, int);
246
247 static void delete_trace_command (char *, int);
248
249 static void enable_trace_command (char *, int);
250
251 static void disable_trace_command (char *, int);
252
253 static void trace_pass_command (char *, int);
254
255 static int is_masked_watchpoint (const struct breakpoint *b);
256
257 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
258    otherwise.  */
259
260 static int strace_marker_p (struct breakpoint *b);
261
262 /* The abstract base class all breakpoint_ops structures inherit
263    from.  */
264 static struct breakpoint_ops base_breakpoint_ops;
265
266 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
267    that are implemented on top of software or hardware breakpoints
268    (user breakpoints, internal and momentary breakpoints, etc.).  */
269 static struct breakpoint_ops bkpt_base_breakpoint_ops;
270
271 /* Internal breakpoints class type.  */
272 static struct breakpoint_ops internal_breakpoint_ops;
273
274 /* Momentary breakpoints class type.  */
275 static struct breakpoint_ops momentary_breakpoint_ops;
276
277 /* The breakpoint_ops structure to be used in regular user created
278    breakpoints.  */
279 struct breakpoint_ops bkpt_breakpoint_ops;
280
281 /* A reference-counted struct command_line.  This lets multiple
282    breakpoints share a single command list.  */
283 struct counted_command_line
284 {
285   /* The reference count.  */
286   int refc;
287
288   /* The command list.  */
289   struct command_line *commands;
290 };
291
292 struct command_line *
293 breakpoint_commands (struct breakpoint *b)
294 {
295   return b->commands ? b->commands->commands : NULL;
296 }
297
298 /* Flag indicating that a command has proceeded the inferior past the
299    current breakpoint.  */
300
301 static int breakpoint_proceeded;
302
303 const char *
304 bpdisp_text (enum bpdisp disp)
305 {
306   /* NOTE: the following values are a part of MI protocol and
307      represent values of 'disp' field returned when inferior stops at
308      a breakpoint.  */
309   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
310
311   return bpdisps[(int) disp];
312 }
313
314 /* Prototypes for exported functions.  */
315 /* If FALSE, gdb will not use hardware support for watchpoints, even
316    if such is available.  */
317 static int can_use_hw_watchpoints;
318
319 static void
320 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
321                              struct cmd_list_element *c,
322                              const char *value)
323 {
324   fprintf_filtered (file,
325                     _("Debugger's willingness to use "
326                       "watchpoint hardware is %s.\n"),
327                     value);
328 }
329
330 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
331    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
332    for unrecognized breakpoint locations.
333    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
334 static enum auto_boolean pending_break_support;
335 static void
336 show_pending_break_support (struct ui_file *file, int from_tty,
337                             struct cmd_list_element *c,
338                             const char *value)
339 {
340   fprintf_filtered (file,
341                     _("Debugger's behavior regarding "
342                       "pending breakpoints is %s.\n"),
343                     value);
344 }
345
346 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
347    set with "break" but falling in read-only memory.
348    If 0, gdb will warn about such breakpoints, but won't automatically
349    use hardware breakpoints.  */
350 static int automatic_hardware_breakpoints;
351 static void
352 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
353                                      struct cmd_list_element *c,
354                                      const char *value)
355 {
356   fprintf_filtered (file,
357                     _("Automatic usage of hardware breakpoints is %s.\n"),
358                     value);
359 }
360
361 /* If on, gdb will keep breakpoints inserted even as inferior is
362    stopped, and immediately insert any new breakpoints.  If off, gdb
363    will insert breakpoints into inferior only when resuming it, and
364    will remove breakpoints upon stop.  If auto, GDB will behave as ON
365    if in non-stop mode, and as OFF if all-stop mode.*/
366
367 static const char always_inserted_auto[] = "auto";
368 static const char always_inserted_on[] = "on";
369 static const char always_inserted_off[] = "off";
370 static const char *always_inserted_enums[] = {
371   always_inserted_auto,
372   always_inserted_off,
373   always_inserted_on,
374   NULL
375 };
376 static const char *always_inserted_mode = always_inserted_auto;
377 static void
378 show_always_inserted_mode (struct ui_file *file, int from_tty,
379                      struct cmd_list_element *c, const char *value)
380 {
381   if (always_inserted_mode == always_inserted_auto)
382     fprintf_filtered (file,
383                       _("Always inserted breakpoint "
384                         "mode is %s (currently %s).\n"),
385                       value,
386                       breakpoints_always_inserted_mode () ? "on" : "off");
387   else
388     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
389                       value);
390 }
391
392 int
393 breakpoints_always_inserted_mode (void)
394 {
395   return ((always_inserted_mode == always_inserted_on
396            || (always_inserted_mode == always_inserted_auto && non_stop))
397           && !RECORD_IS_USED);
398 }
399
400 void _initialize_breakpoint (void);
401
402 /* Are we executing breakpoint commands?  */
403 static int executing_breakpoint_commands;
404
405 /* Are overlay event breakpoints enabled? */
406 static int overlay_events_enabled;
407
408 /* See description in breakpoint.h. */
409 int target_exact_watchpoints = 0;
410
411 /* Walk the following statement or block through all breakpoints.
412    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
413    current breakpoint.  */
414
415 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
416
417 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
418         for (B = breakpoint_chain;      \
419              B ? (TMP=B->next, 1): 0;   \
420              B = TMP)
421
422 /* Similar iterator for the low-level breakpoints.  SAFE variant is
423    not provided so update_global_location_list must not be called
424    while executing the block of ALL_BP_LOCATIONS.  */
425
426 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
427         for (BP_TMP = bp_location;                                      \
428              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
429              BP_TMP++)
430
431 /* Iterator for tracepoints only.  */
432
433 #define ALL_TRACEPOINTS(B)  \
434   for (B = breakpoint_chain; B; B = B->next)  \
435     if (is_tracepoint (B))
436
437 /* Chains of all breakpoints defined.  */
438
439 struct breakpoint *breakpoint_chain;
440
441 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
442
443 static struct bp_location **bp_location;
444
445 /* Number of elements of BP_LOCATION.  */
446
447 static unsigned bp_location_count;
448
449 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
450    ADDRESS for the current elements of BP_LOCATION which get a valid
451    result from bp_location_has_shadow.  You can use it for roughly
452    limiting the subrange of BP_LOCATION to scan for shadow bytes for
453    an address you need to read.  */
454
455 static CORE_ADDR bp_location_placed_address_before_address_max;
456
457 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
458    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
459    BP_LOCATION which get a valid result from bp_location_has_shadow.
460    You can use it for roughly limiting the subrange of BP_LOCATION to
461    scan for shadow bytes for an address you need to read.  */
462
463 static CORE_ADDR bp_location_shadow_len_after_address_max;
464
465 /* The locations that no longer correspond to any breakpoint, unlinked
466    from bp_location array, but for which a hit may still be reported
467    by a target.  */
468 VEC(bp_location_p) *moribund_locations = NULL;
469
470 /* Number of last breakpoint made.  */
471
472 static int breakpoint_count;
473
474 /* The value of `breakpoint_count' before the last command that
475    created breakpoints.  If the last (break-like) command created more
476    than one breakpoint, then the difference between BREAKPOINT_COUNT
477    and PREV_BREAKPOINT_COUNT is more than one.  */
478 static int prev_breakpoint_count;
479
480 /* Number of last tracepoint made.  */
481
482 static int tracepoint_count;
483
484 static struct cmd_list_element *breakpoint_set_cmdlist;
485 static struct cmd_list_element *breakpoint_show_cmdlist;
486 struct cmd_list_element *save_cmdlist;
487
488 /* Return whether a breakpoint is an active enabled breakpoint.  */
489 static int
490 breakpoint_enabled (struct breakpoint *b)
491 {
492   return (b->enable_state == bp_enabled);
493 }
494
495 /* Set breakpoint count to NUM.  */
496
497 static void
498 set_breakpoint_count (int num)
499 {
500   prev_breakpoint_count = breakpoint_count;
501   breakpoint_count = num;
502   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
503 }
504
505 /* Used by `start_rbreak_breakpoints' below, to record the current
506    breakpoint count before "rbreak" creates any breakpoint.  */
507 static int rbreak_start_breakpoint_count;
508
509 /* Called at the start an "rbreak" command to record the first
510    breakpoint made.  */
511
512 void
513 start_rbreak_breakpoints (void)
514 {
515   rbreak_start_breakpoint_count = breakpoint_count;
516 }
517
518 /* Called at the end of an "rbreak" command to record the last
519    breakpoint made.  */
520
521 void
522 end_rbreak_breakpoints (void)
523 {
524   prev_breakpoint_count = rbreak_start_breakpoint_count;
525 }
526
527 /* Used in run_command to zero the hit count when a new run starts.  */
528
529 void
530 clear_breakpoint_hit_counts (void)
531 {
532   struct breakpoint *b;
533
534   ALL_BREAKPOINTS (b)
535     b->hit_count = 0;
536 }
537
538 /* Allocate a new counted_command_line with reference count of 1.
539    The new structure owns COMMANDS.  */
540
541 static struct counted_command_line *
542 alloc_counted_command_line (struct command_line *commands)
543 {
544   struct counted_command_line *result
545     = xmalloc (sizeof (struct counted_command_line));
546
547   result->refc = 1;
548   result->commands = commands;
549   return result;
550 }
551
552 /* Increment reference count.  This does nothing if CMD is NULL.  */
553
554 static void
555 incref_counted_command_line (struct counted_command_line *cmd)
556 {
557   if (cmd)
558     ++cmd->refc;
559 }
560
561 /* Decrement reference count.  If the reference count reaches 0,
562    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
563    nothing if *CMDP is NULL.  */
564
565 static void
566 decref_counted_command_line (struct counted_command_line **cmdp)
567 {
568   if (*cmdp)
569     {
570       if (--(*cmdp)->refc == 0)
571         {
572           free_command_lines (&(*cmdp)->commands);
573           xfree (*cmdp);
574         }
575       *cmdp = NULL;
576     }
577 }
578
579 /* A cleanup function that calls decref_counted_command_line.  */
580
581 static void
582 do_cleanup_counted_command_line (void *arg)
583 {
584   decref_counted_command_line (arg);
585 }
586
587 /* Create a cleanup that calls decref_counted_command_line on the
588    argument.  */
589
590 static struct cleanup *
591 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
592 {
593   return make_cleanup (do_cleanup_counted_command_line, cmdp);
594 }
595
596 \f
597 /* Return the breakpoint with the specified number, or NULL
598    if the number does not refer to an existing breakpoint.  */
599
600 struct breakpoint *
601 get_breakpoint (int num)
602 {
603   struct breakpoint *b;
604
605   ALL_BREAKPOINTS (b)
606     if (b->number == num)
607       return b;
608   
609   return NULL;
610 }
611
612 \f
613
614 void
615 set_breakpoint_condition (struct breakpoint *b, char *exp,
616                           int from_tty)
617 {
618   xfree (b->cond_string);
619   b->cond_string = NULL;
620
621   if (is_watchpoint (b))
622     {
623       struct watchpoint *w = (struct watchpoint *) b;
624
625       xfree (w->cond_exp);
626       w->cond_exp = NULL;
627     }
628   else
629     {
630       struct bp_location *loc;
631
632       for (loc = b->loc; loc; loc = loc->next)
633         {
634           xfree (loc->cond);
635           loc->cond = NULL;
636         }
637     }
638
639   if (*exp == 0)
640     {
641       if (from_tty)
642         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
643     }
644   else
645     {
646       char *arg = exp;
647
648       /* I don't know if it matters whether this is the string the user
649          typed in or the decompiled expression.  */
650       b->cond_string = xstrdup (arg);
651       b->condition_not_parsed = 0;
652
653       if (is_watchpoint (b))
654         {
655           struct watchpoint *w = (struct watchpoint *) b;
656
657           innermost_block = NULL;
658           arg = exp;
659           w->cond_exp = parse_exp_1 (&arg, 0, 0);
660           if (*arg)
661             error (_("Junk at end of expression"));
662           w->cond_exp_valid_block = innermost_block;
663         }
664       else
665         {
666           struct bp_location *loc;
667
668           for (loc = b->loc; loc; loc = loc->next)
669             {
670               arg = exp;
671               loc->cond =
672                 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
673               if (*arg)
674                 error (_("Junk at end of expression"));
675             }
676         }
677     }
678   breakpoints_changed ();
679   observer_notify_breakpoint_modified (b);
680 }
681
682 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
683
684 static void
685 condition_command (char *arg, int from_tty)
686 {
687   struct breakpoint *b;
688   char *p;
689   int bnum;
690
691   if (arg == 0)
692     error_no_arg (_("breakpoint number"));
693
694   p = arg;
695   bnum = get_number (&p);
696   if (bnum == 0)
697     error (_("Bad breakpoint argument: '%s'"), arg);
698
699   ALL_BREAKPOINTS (b)
700     if (b->number == bnum)
701       {
702         /* Check if this breakpoint has a Python object assigned to
703            it, and if it has a definition of the "stop"
704            method.  This method and conditions entered into GDB from
705            the CLI are mutually exclusive.  */
706         if (b->py_bp_object
707             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
708           error (_("Cannot set a condition where a Python 'stop' "
709                    "method has been defined in the breakpoint."));
710         set_breakpoint_condition (b, p, from_tty);
711         return;
712       }
713
714   error (_("No breakpoint number %d."), bnum);
715 }
716
717 /* Check that COMMAND do not contain commands that are suitable
718    only for tracepoints and not suitable for ordinary breakpoints.
719    Throw if any such commands is found.  */
720
721 static void
722 check_no_tracepoint_commands (struct command_line *commands)
723 {
724   struct command_line *c;
725
726   for (c = commands; c; c = c->next)
727     {
728       int i;
729
730       if (c->control_type == while_stepping_control)
731         error (_("The 'while-stepping' command can "
732                  "only be used for tracepoints"));
733
734       for (i = 0; i < c->body_count; ++i)
735         check_no_tracepoint_commands ((c->body_list)[i]);
736
737       /* Not that command parsing removes leading whitespace and comment
738          lines and also empty lines.  So, we only need to check for
739          command directly.  */
740       if (strstr (c->line, "collect ") == c->line)
741         error (_("The 'collect' command can only be used for tracepoints"));
742
743       if (strstr (c->line, "teval ") == c->line)
744         error (_("The 'teval' command can only be used for tracepoints"));
745     }
746 }
747
748 /* Encapsulate tests for different types of tracepoints.  */
749
750 static int
751 is_tracepoint_type (enum bptype type)
752 {
753   return (type == bp_tracepoint
754           || type == bp_fast_tracepoint
755           || type == bp_static_tracepoint);
756 }
757
758 int
759 is_tracepoint (const struct breakpoint *b)
760 {
761   return is_tracepoint_type (b->type);
762 }
763
764 /* A helper function that validates that COMMANDS are valid for a
765    breakpoint.  This function will throw an exception if a problem is
766    found.  */
767
768 static void
769 validate_commands_for_breakpoint (struct breakpoint *b,
770                                   struct command_line *commands)
771 {
772   if (is_tracepoint (b))
773     {
774       /* We need to verify that each top-level element of commands is
775          valid for tracepoints, that there's at most one
776          while-stepping element, and that while-stepping's body has
777          valid tracing commands excluding nested while-stepping.  */
778       struct command_line *c;
779       struct command_line *while_stepping = 0;
780       for (c = commands; c; c = c->next)
781         {
782           if (c->control_type == while_stepping_control)
783             {
784               if (b->type == bp_fast_tracepoint)
785                 error (_("The 'while-stepping' command "
786                          "cannot be used for fast tracepoint"));
787               else if (b->type == bp_static_tracepoint)
788                 error (_("The 'while-stepping' command "
789                          "cannot be used for static tracepoint"));
790
791               if (while_stepping)
792                 error (_("The 'while-stepping' command "
793                          "can be used only once"));
794               else
795                 while_stepping = c;
796             }
797         }
798       if (while_stepping)
799         {
800           struct command_line *c2;
801
802           gdb_assert (while_stepping->body_count == 1);
803           c2 = while_stepping->body_list[0];
804           for (; c2; c2 = c2->next)
805             {
806               if (c2->control_type == while_stepping_control)
807                 error (_("The 'while-stepping' command cannot be nested"));
808             }
809         }
810     }
811   else
812     {
813       check_no_tracepoint_commands (commands);
814     }
815 }
816
817 /* Return a vector of all the static tracepoints set at ADDR.  The
818    caller is responsible for releasing the vector.  */
819
820 VEC(breakpoint_p) *
821 static_tracepoints_here (CORE_ADDR addr)
822 {
823   struct breakpoint *b;
824   VEC(breakpoint_p) *found = 0;
825   struct bp_location *loc;
826
827   ALL_BREAKPOINTS (b)
828     if (b->type == bp_static_tracepoint)
829       {
830         for (loc = b->loc; loc; loc = loc->next)
831           if (loc->address == addr)
832             VEC_safe_push(breakpoint_p, found, b);
833       }
834
835   return found;
836 }
837
838 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
839    validate that only allowed commands are included.  */
840
841 void
842 breakpoint_set_commands (struct breakpoint *b, 
843                          struct command_line *commands)
844 {
845   validate_commands_for_breakpoint (b, commands);
846
847   decref_counted_command_line (&b->commands);
848   b->commands = alloc_counted_command_line (commands);
849   breakpoints_changed ();
850   observer_notify_breakpoint_modified (b);
851 }
852
853 /* Set the internal `silent' flag on the breakpoint.  Note that this
854    is not the same as the "silent" that may appear in the breakpoint's
855    commands.  */
856
857 void
858 breakpoint_set_silent (struct breakpoint *b, int silent)
859 {
860   int old_silent = b->silent;
861
862   b->silent = silent;
863   if (old_silent != silent)
864     observer_notify_breakpoint_modified (b);
865 }
866
867 /* Set the thread for this breakpoint.  If THREAD is -1, make the
868    breakpoint work for any thread.  */
869
870 void
871 breakpoint_set_thread (struct breakpoint *b, int thread)
872 {
873   int old_thread = b->thread;
874
875   b->thread = thread;
876   if (old_thread != thread)
877     observer_notify_breakpoint_modified (b);
878 }
879
880 /* Set the task for this breakpoint.  If TASK is 0, make the
881    breakpoint work for any task.  */
882
883 void
884 breakpoint_set_task (struct breakpoint *b, int task)
885 {
886   int old_task = b->task;
887
888   b->task = task;
889   if (old_task != task)
890     observer_notify_breakpoint_modified (b);
891 }
892
893 void
894 check_tracepoint_command (char *line, void *closure)
895 {
896   struct breakpoint *b = closure;
897
898   validate_actionline (&line, b);
899 }
900
901 /* A structure used to pass information through
902    map_breakpoint_numbers.  */
903
904 struct commands_info
905 {
906   /* True if the command was typed at a tty.  */
907   int from_tty;
908
909   /* The breakpoint range spec.  */
910   char *arg;
911
912   /* Non-NULL if the body of the commands are being read from this
913      already-parsed command.  */
914   struct command_line *control;
915
916   /* The command lines read from the user, or NULL if they have not
917      yet been read.  */
918   struct counted_command_line *cmd;
919 };
920
921 /* A callback for map_breakpoint_numbers that sets the commands for
922    commands_command.  */
923
924 static void
925 do_map_commands_command (struct breakpoint *b, void *data)
926 {
927   struct commands_info *info = data;
928
929   if (info->cmd == NULL)
930     {
931       struct command_line *l;
932
933       if (info->control != NULL)
934         l = copy_command_lines (info->control->body_list[0]);
935       else
936         {
937           struct cleanup *old_chain;
938           char *str;
939
940           str = xstrprintf (_("Type commands for breakpoint(s) "
941                               "%s, one per line."),
942                             info->arg);
943
944           old_chain = make_cleanup (xfree, str);
945
946           l = read_command_lines (str,
947                                   info->from_tty, 1,
948                                   (is_tracepoint (b)
949                                    ? check_tracepoint_command : 0),
950                                   b);
951
952           do_cleanups (old_chain);
953         }
954
955       info->cmd = alloc_counted_command_line (l);
956     }
957
958   /* If a breakpoint was on the list more than once, we don't need to
959      do anything.  */
960   if (b->commands != info->cmd)
961     {
962       validate_commands_for_breakpoint (b, info->cmd->commands);
963       incref_counted_command_line (info->cmd);
964       decref_counted_command_line (&b->commands);
965       b->commands = info->cmd;
966       breakpoints_changed ();
967       observer_notify_breakpoint_modified (b);
968     }
969 }
970
971 static void
972 commands_command_1 (char *arg, int from_tty, 
973                     struct command_line *control)
974 {
975   struct cleanup *cleanups;
976   struct commands_info info;
977
978   info.from_tty = from_tty;
979   info.control = control;
980   info.cmd = NULL;
981   /* If we read command lines from the user, then `info' will hold an
982      extra reference to the commands that we must clean up.  */
983   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
984
985   if (arg == NULL || !*arg)
986     {
987       if (breakpoint_count - prev_breakpoint_count > 1)
988         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
989                           breakpoint_count);
990       else if (breakpoint_count > 0)
991         arg = xstrprintf ("%d", breakpoint_count);
992       else
993         {
994           /* So that we don't try to free the incoming non-NULL
995              argument in the cleanup below.  Mapping breakpoint
996              numbers will fail in this case.  */
997           arg = NULL;
998         }
999     }
1000   else
1001     /* The command loop has some static state, so we need to preserve
1002        our argument.  */
1003     arg = xstrdup (arg);
1004
1005   if (arg != NULL)
1006     make_cleanup (xfree, arg);
1007
1008   info.arg = arg;
1009
1010   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1011
1012   if (info.cmd == NULL)
1013     error (_("No breakpoints specified."));
1014
1015   do_cleanups (cleanups);
1016 }
1017
1018 static void
1019 commands_command (char *arg, int from_tty)
1020 {
1021   commands_command_1 (arg, from_tty, NULL);
1022 }
1023
1024 /* Like commands_command, but instead of reading the commands from
1025    input stream, takes them from an already parsed command structure.
1026
1027    This is used by cli-script.c to DTRT with breakpoint commands
1028    that are part of if and while bodies.  */
1029 enum command_control_type
1030 commands_from_control_command (char *arg, struct command_line *cmd)
1031 {
1032   commands_command_1 (arg, 0, cmd);
1033   return simple_control;
1034 }
1035
1036 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1037
1038 static int
1039 bp_location_has_shadow (struct bp_location *bl)
1040 {
1041   if (bl->loc_type != bp_loc_software_breakpoint)
1042     return 0;
1043   if (!bl->inserted)
1044     return 0;
1045   if (bl->target_info.shadow_len == 0)
1046     /* BL isn't valid, or doesn't shadow memory.  */
1047     return 0;
1048   return 1;
1049 }
1050
1051 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1052    by replacing any memory breakpoints with their shadowed contents.
1053
1054    The range of shadowed area by each bp_location is:
1055      bl->address - bp_location_placed_address_before_address_max
1056      up to bl->address + bp_location_shadow_len_after_address_max
1057    The range we were requested to resolve shadows for is:
1058      memaddr ... memaddr + len
1059    Thus the safe cutoff boundaries for performance optimization are
1060      memaddr + len <= (bl->address
1061                        - bp_location_placed_address_before_address_max)
1062    and:
1063      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1064
1065 void
1066 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1067                         const gdb_byte *writebuf_org,
1068                         ULONGEST memaddr, LONGEST len)
1069 {
1070   /* Left boundary, right boundary and median element of our binary
1071      search.  */
1072   unsigned bc_l, bc_r, bc;
1073
1074   /* Find BC_L which is a leftmost element which may affect BUF
1075      content.  It is safe to report lower value but a failure to
1076      report higher one.  */
1077
1078   bc_l = 0;
1079   bc_r = bp_location_count;
1080   while (bc_l + 1 < bc_r)
1081     {
1082       struct bp_location *bl;
1083
1084       bc = (bc_l + bc_r) / 2;
1085       bl = bp_location[bc];
1086
1087       /* Check first BL->ADDRESS will not overflow due to the added
1088          constant.  Then advance the left boundary only if we are sure
1089          the BC element can in no way affect the BUF content (MEMADDR
1090          to MEMADDR + LEN range).
1091
1092          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1093          offset so that we cannot miss a breakpoint with its shadow
1094          range tail still reaching MEMADDR.  */
1095
1096       if ((bl->address + bp_location_shadow_len_after_address_max
1097            >= bl->address)
1098           && (bl->address + bp_location_shadow_len_after_address_max
1099               <= memaddr))
1100         bc_l = bc;
1101       else
1102         bc_r = bc;
1103     }
1104
1105   /* Due to the binary search above, we need to make sure we pick the
1106      first location that's at BC_L's address.  E.g., if there are
1107      multiple locations at the same address, BC_L may end up pointing
1108      at a duplicate location, and miss the "master"/"inserted"
1109      location.  Say, given locations L1, L2 and L3 at addresses A and
1110      B:
1111
1112       L1@A, L2@A, L3@B, ...
1113
1114      BC_L could end up pointing at location L2, while the "master"
1115      location could be L1.  Since the `loc->inserted' flag is only set
1116      on "master" locations, we'd forget to restore the shadow of L1
1117      and L2.  */
1118   while (bc_l > 0
1119          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1120     bc_l--;
1121
1122   /* Now do full processing of the found relevant range of elements.  */
1123
1124   for (bc = bc_l; bc < bp_location_count; bc++)
1125   {
1126     struct bp_location *bl = bp_location[bc];
1127     CORE_ADDR bp_addr = 0;
1128     int bp_size = 0;
1129     int bptoffset = 0;
1130
1131     /* bp_location array has BL->OWNER always non-NULL.  */
1132     if (bl->owner->type == bp_none)
1133       warning (_("reading through apparently deleted breakpoint #%d?"),
1134                bl->owner->number);
1135
1136     /* Performance optimization: any further element can no longer affect BUF
1137        content.  */
1138
1139     if (bl->address >= bp_location_placed_address_before_address_max
1140         && memaddr + len <= (bl->address
1141                              - bp_location_placed_address_before_address_max))
1142       break;
1143
1144     if (!bp_location_has_shadow (bl))
1145       continue;
1146     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1147                                    current_program_space->aspace, 0))
1148       continue;
1149
1150     /* Addresses and length of the part of the breakpoint that
1151        we need to copy.  */
1152     bp_addr = bl->target_info.placed_address;
1153     bp_size = bl->target_info.shadow_len;
1154
1155     if (bp_addr + bp_size <= memaddr)
1156       /* The breakpoint is entirely before the chunk of memory we
1157          are reading.  */
1158       continue;
1159
1160     if (bp_addr >= memaddr + len)
1161       /* The breakpoint is entirely after the chunk of memory we are
1162          reading.  */
1163       continue;
1164
1165     /* Offset within shadow_contents.  */
1166     if (bp_addr < memaddr)
1167       {
1168         /* Only copy the second part of the breakpoint.  */
1169         bp_size -= memaddr - bp_addr;
1170         bptoffset = memaddr - bp_addr;
1171         bp_addr = memaddr;
1172       }
1173
1174     if (bp_addr + bp_size > memaddr + len)
1175       {
1176         /* Only copy the first part of the breakpoint.  */
1177         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1178       }
1179
1180     if (readbuf != NULL)
1181       {
1182         /* Update the read buffer with this inserted breakpoint's
1183            shadow.  */
1184         memcpy (readbuf + bp_addr - memaddr,
1185                 bl->target_info.shadow_contents + bptoffset, bp_size);
1186       }
1187     else
1188       {
1189         struct gdbarch *gdbarch = bl->gdbarch;
1190         const unsigned char *bp;
1191         CORE_ADDR placed_address = bl->target_info.placed_address;
1192         unsigned placed_size = bl->target_info.placed_size;
1193
1194         /* Update the shadow with what we want to write to memory.  */
1195         memcpy (bl->target_info.shadow_contents + bptoffset,
1196                 writebuf_org + bp_addr - memaddr, bp_size);
1197
1198         /* Determine appropriate breakpoint contents and size for this
1199            address.  */
1200         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1201
1202         /* Update the final write buffer with this inserted
1203            breakpoint's INSN.  */
1204         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1205       }
1206   }
1207 }
1208 \f
1209
1210 /* Return true if BPT is of any hardware watchpoint kind.  */
1211
1212 static int
1213 is_hardware_watchpoint (const struct breakpoint *bpt)
1214 {
1215   return (bpt->type == bp_hardware_watchpoint
1216           || bpt->type == bp_read_watchpoint
1217           || bpt->type == bp_access_watchpoint);
1218 }
1219
1220 /* Return true if BPT is of any watchpoint kind, hardware or
1221    software.  */
1222
1223 int
1224 is_watchpoint (const struct breakpoint *bpt)
1225 {
1226   return (is_hardware_watchpoint (bpt)
1227           || bpt->type == bp_watchpoint);
1228 }
1229
1230 /* Returns true if the current thread and its running state are safe
1231    to evaluate or update watchpoint B.  Watchpoints on local
1232    expressions need to be evaluated in the context of the thread that
1233    was current when the watchpoint was created, and, that thread needs
1234    to be stopped to be able to select the correct frame context.
1235    Watchpoints on global expressions can be evaluated on any thread,
1236    and in any state.  It is presently left to the target allowing
1237    memory accesses when threads are running.  */
1238
1239 static int
1240 watchpoint_in_thread_scope (struct watchpoint *b)
1241 {
1242   return (b->base.pspace == current_program_space
1243           && (ptid_equal (b->watchpoint_thread, null_ptid)
1244               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1245                   && !is_executing (inferior_ptid))));
1246 }
1247
1248 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1249    associated bp_watchpoint_scope breakpoint.  */
1250
1251 static void
1252 watchpoint_del_at_next_stop (struct watchpoint *w)
1253 {
1254   struct breakpoint *b = &w->base;
1255
1256   if (b->related_breakpoint != b)
1257     {
1258       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1259       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1260       b->related_breakpoint->disposition = disp_del_at_next_stop;
1261       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1262       b->related_breakpoint = b;
1263     }
1264   b->disposition = disp_del_at_next_stop;
1265 }
1266
1267 /* Assuming that B is a watchpoint:
1268    - Reparse watchpoint expression, if REPARSE is non-zero
1269    - Evaluate expression and store the result in B->val
1270    - Evaluate the condition if there is one, and store the result
1271      in b->loc->cond.
1272    - Update the list of values that must be watched in B->loc.
1273
1274    If the watchpoint disposition is disp_del_at_next_stop, then do
1275    nothing.  If this is local watchpoint that is out of scope, delete
1276    it.
1277
1278    Even with `set breakpoint always-inserted on' the watchpoints are
1279    removed + inserted on each stop here.  Normal breakpoints must
1280    never be removed because they might be missed by a running thread
1281    when debugging in non-stop mode.  On the other hand, hardware
1282    watchpoints (is_hardware_watchpoint; processed here) are specific
1283    to each LWP since they are stored in each LWP's hardware debug
1284    registers.  Therefore, such LWP must be stopped first in order to
1285    be able to modify its hardware watchpoints.
1286
1287    Hardware watchpoints must be reset exactly once after being
1288    presented to the user.  It cannot be done sooner, because it would
1289    reset the data used to present the watchpoint hit to the user.  And
1290    it must not be done later because it could display the same single
1291    watchpoint hit during multiple GDB stops.  Note that the latter is
1292    relevant only to the hardware watchpoint types bp_read_watchpoint
1293    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1294    not user-visible - its hit is suppressed if the memory content has
1295    not changed.
1296
1297    The following constraints influence the location where we can reset
1298    hardware watchpoints:
1299
1300    * target_stopped_by_watchpoint and target_stopped_data_address are
1301      called several times when GDB stops.
1302
1303    [linux] 
1304    * Multiple hardware watchpoints can be hit at the same time,
1305      causing GDB to stop.  GDB only presents one hardware watchpoint
1306      hit at a time as the reason for stopping, and all the other hits
1307      are presented later, one after the other, each time the user
1308      requests the execution to be resumed.  Execution is not resumed
1309      for the threads still having pending hit event stored in
1310      LWP_INFO->STATUS.  While the watchpoint is already removed from
1311      the inferior on the first stop the thread hit event is kept being
1312      reported from its cached value by linux_nat_stopped_data_address
1313      until the real thread resume happens after the watchpoint gets
1314      presented and thus its LWP_INFO->STATUS gets reset.
1315
1316    Therefore the hardware watchpoint hit can get safely reset on the
1317    watchpoint removal from inferior.  */
1318
1319 static void
1320 update_watchpoint (struct watchpoint *b, int reparse)
1321 {
1322   int within_current_scope;
1323   struct frame_id saved_frame_id;
1324   int frame_saved;
1325
1326   /* If this is a local watchpoint, we only want to check if the
1327      watchpoint frame is in scope if the current thread is the thread
1328      that was used to create the watchpoint.  */
1329   if (!watchpoint_in_thread_scope (b))
1330     return;
1331
1332   if (b->base.disposition == disp_del_at_next_stop)
1333     return;
1334  
1335   frame_saved = 0;
1336
1337   /* Determine if the watchpoint is within scope.  */
1338   if (b->exp_valid_block == NULL)
1339     within_current_scope = 1;
1340   else
1341     {
1342       struct frame_info *fi = get_current_frame ();
1343       struct gdbarch *frame_arch = get_frame_arch (fi);
1344       CORE_ADDR frame_pc = get_frame_pc (fi);
1345
1346       /* If we're in a function epilogue, unwinding may not work
1347          properly, so do not attempt to recreate locations at this
1348          point.  See similar comments in watchpoint_check.  */
1349       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1350         return;
1351
1352       /* Save the current frame's ID so we can restore it after
1353          evaluating the watchpoint expression on its own frame.  */
1354       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1355          took a frame parameter, so that we didn't have to change the
1356          selected frame.  */
1357       frame_saved = 1;
1358       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1359
1360       fi = frame_find_by_id (b->watchpoint_frame);
1361       within_current_scope = (fi != NULL);
1362       if (within_current_scope)
1363         select_frame (fi);
1364     }
1365
1366   /* We don't free locations.  They are stored in the bp_location array
1367      and update_global_location_list will eventually delete them and
1368      remove breakpoints if needed.  */
1369   b->base.loc = NULL;
1370
1371   if (within_current_scope && reparse)
1372     {
1373       char *s;
1374
1375       if (b->exp)
1376         {
1377           xfree (b->exp);
1378           b->exp = NULL;
1379         }
1380       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1381       b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
1382       /* If the meaning of expression itself changed, the old value is
1383          no longer relevant.  We don't want to report a watchpoint hit
1384          to the user when the old value and the new value may actually
1385          be completely different objects.  */
1386       value_free (b->val);
1387       b->val = NULL;
1388       b->val_valid = 0;
1389
1390       /* Note that unlike with breakpoints, the watchpoint's condition
1391          expression is stored in the breakpoint object, not in the
1392          locations (re)created below.  */
1393       if (b->base.cond_string != NULL)
1394         {
1395           if (b->cond_exp != NULL)
1396             {
1397               xfree (b->cond_exp);
1398               b->cond_exp = NULL;
1399             }
1400
1401           s = b->base.cond_string;
1402           b->cond_exp = parse_exp_1 (&s, b->cond_exp_valid_block, 0);
1403         }
1404     }
1405
1406   /* If we failed to parse the expression, for example because
1407      it refers to a global variable in a not-yet-loaded shared library,
1408      don't try to insert watchpoint.  We don't automatically delete
1409      such watchpoint, though, since failure to parse expression
1410      is different from out-of-scope watchpoint.  */
1411   if ( !target_has_execution)
1412     {
1413       /* Without execution, memory can't change.  No use to try and
1414          set watchpoint locations.  The watchpoint will be reset when
1415          the target gains execution, through breakpoint_re_set.  */
1416     }
1417   else if (within_current_scope && b->exp)
1418     {
1419       int pc = 0;
1420       struct value *val_chain, *v, *result, *next;
1421       struct program_space *frame_pspace;
1422
1423       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1424
1425       /* Avoid setting b->val if it's already set.  The meaning of
1426          b->val is 'the last value' user saw, and we should update
1427          it only if we reported that last value to user.  As it
1428          happens, the code that reports it updates b->val directly.
1429          We don't keep track of the memory value for masked
1430          watchpoints.  */
1431       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1432         {
1433           b->val = v;
1434           b->val_valid = 1;
1435         }
1436
1437       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1438
1439       /* Look at each value on the value chain.  */
1440       for (v = val_chain; v; v = value_next (v))
1441         {
1442           /* If it's a memory location, and GDB actually needed
1443              its contents to evaluate the expression, then we
1444              must watch it.  If the first value returned is
1445              still lazy, that means an error occurred reading it;
1446              watch it anyway in case it becomes readable.  */
1447           if (VALUE_LVAL (v) == lval_memory
1448               && (v == val_chain || ! value_lazy (v)))
1449             {
1450               struct type *vtype = check_typedef (value_type (v));
1451
1452               /* We only watch structs and arrays if user asked
1453                  for it explicitly, never if they just happen to
1454                  appear in the middle of some value chain.  */
1455               if (v == result
1456                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1457                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1458                 {
1459                   CORE_ADDR addr;
1460                   int len, type;
1461                   struct bp_location *loc, **tmp;
1462
1463                   addr = value_address (v);
1464                   len = TYPE_LENGTH (value_type (v));
1465                   type = hw_write;
1466                   if (b->base.type == bp_read_watchpoint)
1467                     type = hw_read;
1468                   else if (b->base.type == bp_access_watchpoint)
1469                     type = hw_access;
1470
1471                   loc = allocate_bp_location (&b->base);
1472                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1473                     ;
1474                   *tmp = loc;
1475                   loc->gdbarch = get_type_arch (value_type (v));
1476
1477                   loc->pspace = frame_pspace;
1478                   loc->address = addr;
1479                   loc->length = len;
1480                   loc->watchpoint_type = type;
1481                 }
1482             }
1483         }
1484
1485       /* Change the type of breakpoint between hardware assisted or
1486          an ordinary watchpoint depending on the hardware support
1487          and free hardware slots.  REPARSE is set when the inferior
1488          is started.  */
1489       if (reparse)
1490         {
1491           int reg_cnt;
1492           enum bp_loc_type loc_type;
1493           struct bp_location *bl;
1494
1495           reg_cnt = can_use_hardware_watchpoint (val_chain);
1496
1497           if (reg_cnt)
1498             {
1499               int i, target_resources_ok, other_type_used;
1500               enum bptype type;
1501
1502               /* Use an exact watchpoint when there's only one memory region to be
1503                  watched, and only one debug register is needed to watch it.  */
1504               b->exact = target_exact_watchpoints && reg_cnt == 1;
1505
1506               /* We need to determine how many resources are already
1507                  used for all other hardware watchpoints plus this one
1508                  to see if we still have enough resources to also fit
1509                  this watchpoint in as well.  */
1510
1511               /* If this is a software watchpoint, we try to turn it
1512                  to a hardware one -- count resources as if B was of
1513                  hardware watchpoint type.  */
1514               type = b->base.type;
1515               if (type == bp_watchpoint)
1516                 type = bp_hardware_watchpoint;
1517
1518               /* This watchpoint may or may not have been placed on
1519                  the list yet at this point (it won't be in the list
1520                  if we're trying to create it for the first time,
1521                  through watch_command), so always account for it
1522                  manually.  */
1523
1524               /* Count resources used by all watchpoints except B.  */
1525               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1526
1527               /* Add in the resources needed for B.  */
1528               i += hw_watchpoint_use_count (&b->base);
1529
1530               target_resources_ok
1531                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1532               if (target_resources_ok <= 0)
1533                 {
1534                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1535
1536                   if (target_resources_ok == 0 && !sw_mode)
1537                     error (_("Target does not support this type of "
1538                              "hardware watchpoint."));
1539                   else if (target_resources_ok < 0 && !sw_mode)
1540                     error (_("There are not enough available hardware "
1541                              "resources for this watchpoint."));
1542
1543                   /* Downgrade to software watchpoint.  */
1544                   b->base.type = bp_watchpoint;
1545                 }
1546               else
1547                 {
1548                   /* If this was a software watchpoint, we've just
1549                      found we have enough resources to turn it to a
1550                      hardware watchpoint.  Otherwise, this is a
1551                      nop.  */
1552                   b->base.type = type;
1553                 }
1554             }
1555           else if (!b->base.ops->works_in_software_mode (&b->base))
1556             error (_("Expression cannot be implemented with "
1557                      "read/access watchpoint."));
1558           else
1559             b->base.type = bp_watchpoint;
1560
1561           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1562                       : bp_loc_hardware_watchpoint);
1563           for (bl = b->base.loc; bl; bl = bl->next)
1564             bl->loc_type = loc_type;
1565         }
1566
1567       for (v = val_chain; v; v = next)
1568         {
1569           next = value_next (v);
1570           if (v != b->val)
1571             value_free (v);
1572         }
1573
1574       /* If a software watchpoint is not watching any memory, then the
1575          above left it without any location set up.  But,
1576          bpstat_stop_status requires a location to be able to report
1577          stops, so make sure there's at least a dummy one.  */
1578       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1579         {
1580           struct breakpoint *base = &b->base;
1581           base->loc = allocate_bp_location (base);
1582           base->loc->pspace = frame_pspace;
1583           base->loc->address = -1;
1584           base->loc->length = -1;
1585           base->loc->watchpoint_type = -1;
1586         }
1587     }
1588   else if (!within_current_scope)
1589     {
1590       printf_filtered (_("\
1591 Watchpoint %d deleted because the program has left the block\n\
1592 in which its expression is valid.\n"),
1593                        b->base.number);
1594       watchpoint_del_at_next_stop (b);
1595     }
1596
1597   /* Restore the selected frame.  */
1598   if (frame_saved)
1599     select_frame (frame_find_by_id (saved_frame_id));
1600 }
1601
1602
1603 /* Returns 1 iff breakpoint location should be
1604    inserted in the inferior.  We don't differentiate the type of BL's owner
1605    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1606    breakpoint_ops is not defined, because in insert_bp_location,
1607    tracepoint's insert_location will not be called.  */
1608 static int
1609 should_be_inserted (struct bp_location *bl)
1610 {
1611   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1612     return 0;
1613
1614   if (bl->owner->disposition == disp_del_at_next_stop)
1615     return 0;
1616
1617   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1618     return 0;
1619
1620   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
1621     return 0;
1622
1623   /* This is set for example, when we're attached to the parent of a
1624      vfork, and have detached from the child.  The child is running
1625      free, and we expect it to do an exec or exit, at which point the
1626      OS makes the parent schedulable again (and the target reports
1627      that the vfork is done).  Until the child is done with the shared
1628      memory region, do not insert breakpoints in the parent, otherwise
1629      the child could still trip on the parent's breakpoints.  Since
1630      the parent is blocked anyway, it won't miss any breakpoint.  */
1631   if (bl->pspace->breakpoints_not_allowed)
1632     return 0;
1633
1634   return 1;
1635 }
1636
1637 /* Same as should_be_inserted but does the check assuming
1638    that the location is not duplicated.  */
1639
1640 static int
1641 unduplicated_should_be_inserted (struct bp_location *bl)
1642 {
1643   int result;
1644   const int save_duplicate = bl->duplicate;
1645
1646   bl->duplicate = 0;
1647   result = should_be_inserted (bl);
1648   bl->duplicate = save_duplicate;
1649   return result;
1650 }
1651
1652 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
1653    location.  Any error messages are printed to TMP_ERROR_STREAM; and
1654    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
1655    Returns 0 for success, 1 if the bp_location type is not supported or
1656    -1 for failure.
1657
1658    NOTE drow/2003-09-09: This routine could be broken down to an
1659    object-style method for each breakpoint or catchpoint type.  */
1660 static int
1661 insert_bp_location (struct bp_location *bl,
1662                     struct ui_file *tmp_error_stream,
1663                     int *disabled_breaks,
1664                     int *hw_breakpoint_error)
1665 {
1666   int val = 0;
1667
1668   if (!should_be_inserted (bl) || bl->inserted)
1669     return 0;
1670
1671   /* Initialize the target-specific information.  */
1672   memset (&bl->target_info, 0, sizeof (bl->target_info));
1673   bl->target_info.placed_address = bl->address;
1674   bl->target_info.placed_address_space = bl->pspace->aspace;
1675   bl->target_info.length = bl->length;
1676
1677   if (bl->loc_type == bp_loc_software_breakpoint
1678       || bl->loc_type == bp_loc_hardware_breakpoint)
1679     {
1680       if (bl->owner->type != bp_hardware_breakpoint)
1681         {
1682           /* If the explicitly specified breakpoint type
1683              is not hardware breakpoint, check the memory map to see
1684              if the breakpoint address is in read only memory or not.
1685
1686              Two important cases are:
1687              - location type is not hardware breakpoint, memory
1688              is readonly.  We change the type of the location to
1689              hardware breakpoint.
1690              - location type is hardware breakpoint, memory is
1691              read-write.  This means we've previously made the
1692              location hardware one, but then the memory map changed,
1693              so we undo.
1694              
1695              When breakpoints are removed, remove_breakpoints will use
1696              location types we've just set here, the only possible
1697              problem is that memory map has changed during running
1698              program, but it's not going to work anyway with current
1699              gdb.  */
1700           struct mem_region *mr 
1701             = lookup_mem_region (bl->target_info.placed_address);
1702           
1703           if (mr)
1704             {
1705               if (automatic_hardware_breakpoints)
1706                 {
1707                   enum bp_loc_type new_type;
1708                   
1709                   if (mr->attrib.mode != MEM_RW)
1710                     new_type = bp_loc_hardware_breakpoint;
1711                   else 
1712                     new_type = bp_loc_software_breakpoint;
1713                   
1714                   if (new_type != bl->loc_type)
1715                     {
1716                       static int said = 0;
1717
1718                       bl->loc_type = new_type;
1719                       if (!said)
1720                         {
1721                           fprintf_filtered (gdb_stdout,
1722                                             _("Note: automatically using "
1723                                               "hardware breakpoints for "
1724                                               "read-only addresses.\n"));
1725                           said = 1;
1726                         }
1727                     }
1728                 }
1729               else if (bl->loc_type == bp_loc_software_breakpoint
1730                        && mr->attrib.mode != MEM_RW)        
1731                 warning (_("cannot set software breakpoint "
1732                            "at readonly address %s"),
1733                          paddress (bl->gdbarch, bl->address));
1734             }
1735         }
1736         
1737       /* First check to see if we have to handle an overlay.  */
1738       if (overlay_debugging == ovly_off
1739           || bl->section == NULL
1740           || !(section_is_overlay (bl->section)))
1741         {
1742           /* No overlay handling: just set the breakpoint.  */
1743
1744           val = bl->owner->ops->insert_location (bl);
1745         }
1746       else
1747         {
1748           /* This breakpoint is in an overlay section.
1749              Shall we set a breakpoint at the LMA?  */
1750           if (!overlay_events_enabled)
1751             {
1752               /* Yes -- overlay event support is not active, 
1753                  so we must try to set a breakpoint at the LMA.
1754                  This will not work for a hardware breakpoint.  */
1755               if (bl->loc_type == bp_loc_hardware_breakpoint)
1756                 warning (_("hardware breakpoint %d not supported in overlay!"),
1757                          bl->owner->number);
1758               else
1759                 {
1760                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
1761                                                              bl->section);
1762                   /* Set a software (trap) breakpoint at the LMA.  */
1763                   bl->overlay_target_info = bl->target_info;
1764                   bl->overlay_target_info.placed_address = addr;
1765                   val = target_insert_breakpoint (bl->gdbarch,
1766                                                   &bl->overlay_target_info);
1767                   if (val != 0)
1768                     fprintf_unfiltered (tmp_error_stream,
1769                                         "Overlay breakpoint %d "
1770                                         "failed: in ROM?\n",
1771                                         bl->owner->number);
1772                 }
1773             }
1774           /* Shall we set a breakpoint at the VMA? */
1775           if (section_is_mapped (bl->section))
1776             {
1777               /* Yes.  This overlay section is mapped into memory.  */
1778               val = bl->owner->ops->insert_location (bl);
1779             }
1780           else
1781             {
1782               /* No.  This breakpoint will not be inserted.  
1783                  No error, but do not mark the bp as 'inserted'.  */
1784               return 0;
1785             }
1786         }
1787
1788       if (val)
1789         {
1790           /* Can't set the breakpoint.  */
1791           if (solib_name_from_address (bl->pspace, bl->address))
1792             {
1793               /* See also: disable_breakpoints_in_shlibs.  */
1794               val = 0;
1795               bl->shlib_disabled = 1;
1796               observer_notify_breakpoint_modified (bl->owner);
1797               if (!*disabled_breaks)
1798                 {
1799                   fprintf_unfiltered (tmp_error_stream, 
1800                                       "Cannot insert breakpoint %d.\n", 
1801                                       bl->owner->number);
1802                   fprintf_unfiltered (tmp_error_stream, 
1803                                       "Temporarily disabling shared "
1804                                       "library breakpoints:\n");
1805                 }
1806               *disabled_breaks = 1;
1807               fprintf_unfiltered (tmp_error_stream,
1808                                   "breakpoint #%d\n", bl->owner->number);
1809             }
1810           else
1811             {
1812               if (bl->loc_type == bp_loc_hardware_breakpoint)
1813                 {
1814                   *hw_breakpoint_error = 1;
1815                   fprintf_unfiltered (tmp_error_stream,
1816                                       "Cannot insert hardware "
1817                                       "breakpoint %d.\n",
1818                                       bl->owner->number);
1819                 }
1820               else
1821                 {
1822                   fprintf_unfiltered (tmp_error_stream, 
1823                                       "Cannot insert breakpoint %d.\n", 
1824                                       bl->owner->number);
1825                   fprintf_filtered (tmp_error_stream, 
1826                                     "Error accessing memory address ");
1827                   fputs_filtered (paddress (bl->gdbarch, bl->address),
1828                                   tmp_error_stream);
1829                   fprintf_filtered (tmp_error_stream, ": %s.\n",
1830                                     safe_strerror (val));
1831                 }
1832
1833             }
1834         }
1835       else
1836         bl->inserted = 1;
1837
1838       return val;
1839     }
1840
1841   else if (bl->loc_type == bp_loc_hardware_watchpoint
1842            /* NOTE drow/2003-09-08: This state only exists for removing
1843               watchpoints.  It's not clear that it's necessary...  */
1844            && bl->owner->disposition != disp_del_at_next_stop)
1845     {
1846       gdb_assert (bl->owner->ops != NULL
1847                   && bl->owner->ops->insert_location != NULL);
1848
1849       val = bl->owner->ops->insert_location (bl);
1850
1851       /* If trying to set a read-watchpoint, and it turns out it's not
1852          supported, try emulating one with an access watchpoint.  */
1853       if (val == 1 && bl->watchpoint_type == hw_read)
1854         {
1855           struct bp_location *loc, **loc_temp;
1856
1857           /* But don't try to insert it, if there's already another
1858              hw_access location that would be considered a duplicate
1859              of this one.  */
1860           ALL_BP_LOCATIONS (loc, loc_temp)
1861             if (loc != bl
1862                 && loc->watchpoint_type == hw_access
1863                 && watchpoint_locations_match (bl, loc))
1864               {
1865                 bl->duplicate = 1;
1866                 bl->inserted = 1;
1867                 bl->target_info = loc->target_info;
1868                 bl->watchpoint_type = hw_access;
1869                 val = 0;
1870                 break;
1871               }
1872
1873           if (val == 1)
1874             {
1875               bl->watchpoint_type = hw_access;
1876               val = bl->owner->ops->insert_location (bl);
1877
1878               if (val)
1879                 /* Back to the original value.  */
1880                 bl->watchpoint_type = hw_read;
1881             }
1882         }
1883
1884       bl->inserted = (val == 0);
1885     }
1886
1887   else if (bl->owner->type == bp_catchpoint)
1888     {
1889       gdb_assert (bl->owner->ops != NULL
1890                   && bl->owner->ops->insert_location != NULL);
1891
1892       val = bl->owner->ops->insert_location (bl);
1893       if (val)
1894         {
1895           bl->owner->enable_state = bp_disabled;
1896
1897           if (val == 1)
1898             warning (_("\
1899 Error inserting catchpoint %d: Your system does not support this type\n\
1900 of catchpoint."), bl->owner->number);
1901           else
1902             warning (_("Error inserting catchpoint %d."), bl->owner->number);
1903         }
1904
1905       bl->inserted = (val == 0);
1906
1907       /* We've already printed an error message if there was a problem
1908          inserting this catchpoint, and we've disabled the catchpoint,
1909          so just return success.  */
1910       return 0;
1911     }
1912
1913   return 0;
1914 }
1915
1916 /* This function is called when program space PSPACE is about to be
1917    deleted.  It takes care of updating breakpoints to not reference
1918    PSPACE anymore.  */
1919
1920 void
1921 breakpoint_program_space_exit (struct program_space *pspace)
1922 {
1923   struct breakpoint *b, *b_temp;
1924   struct bp_location *loc, **loc_temp;
1925
1926   /* Remove any breakpoint that was set through this program space.  */
1927   ALL_BREAKPOINTS_SAFE (b, b_temp)
1928     {
1929       if (b->pspace == pspace)
1930         delete_breakpoint (b);
1931     }
1932
1933   /* Breakpoints set through other program spaces could have locations
1934      bound to PSPACE as well.  Remove those.  */
1935   ALL_BP_LOCATIONS (loc, loc_temp)
1936     {
1937       struct bp_location *tmp;
1938
1939       if (loc->pspace == pspace)
1940         {
1941           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
1942           if (loc->owner->loc == loc)
1943             loc->owner->loc = loc->next;
1944           else
1945             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
1946               if (tmp->next == loc)
1947                 {
1948                   tmp->next = loc->next;
1949                   break;
1950                 }
1951         }
1952     }
1953
1954   /* Now update the global location list to permanently delete the
1955      removed locations above.  */
1956   update_global_location_list (0);
1957 }
1958
1959 /* Make sure all breakpoints are inserted in inferior.
1960    Throws exception on any error.
1961    A breakpoint that is already inserted won't be inserted
1962    again, so calling this function twice is safe.  */
1963 void
1964 insert_breakpoints (void)
1965 {
1966   struct breakpoint *bpt;
1967
1968   ALL_BREAKPOINTS (bpt)
1969     if (is_hardware_watchpoint (bpt))
1970       {
1971         struct watchpoint *w = (struct watchpoint *) bpt;
1972
1973         update_watchpoint (w, 0 /* don't reparse.  */);
1974       }
1975
1976   update_global_location_list (1);
1977
1978   /* update_global_location_list does not insert breakpoints when
1979      always_inserted_mode is not enabled.  Explicitly insert them
1980      now.  */
1981   if (!breakpoints_always_inserted_mode ())
1982     insert_breakpoint_locations ();
1983 }
1984
1985 /* Used when starting or continuing the program.  */
1986
1987 static void
1988 insert_breakpoint_locations (void)
1989 {
1990   struct breakpoint *bpt;
1991   struct bp_location *bl, **blp_tmp;
1992   int error_flag = 0;
1993   int val = 0;
1994   int disabled_breaks = 0;
1995   int hw_breakpoint_error = 0;
1996
1997   struct ui_file *tmp_error_stream = mem_fileopen ();
1998   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
1999   
2000   /* Explicitly mark the warning -- this will only be printed if
2001      there was an error.  */
2002   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2003
2004   save_current_space_and_thread ();
2005
2006   ALL_BP_LOCATIONS (bl, blp_tmp)
2007     {
2008       if (!should_be_inserted (bl) || bl->inserted)
2009         continue;
2010
2011       /* There is no point inserting thread-specific breakpoints if
2012          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2013          has BL->OWNER always non-NULL.  */
2014       if (bl->owner->thread != -1
2015           && !valid_thread_id (bl->owner->thread))
2016         continue;
2017
2018       switch_to_program_space_and_thread (bl->pspace);
2019
2020       /* For targets that support global breakpoints, there's no need
2021          to select an inferior to insert breakpoint to.  In fact, even
2022          if we aren't attached to any process yet, we should still
2023          insert breakpoints.  */
2024       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2025           && ptid_equal (inferior_ptid, null_ptid))
2026         continue;
2027
2028       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2029                                     &hw_breakpoint_error);
2030       if (val)
2031         error_flag = val;
2032     }
2033
2034   /* If we failed to insert all locations of a watchpoint, remove
2035      them, as half-inserted watchpoint is of limited use.  */
2036   ALL_BREAKPOINTS (bpt)  
2037     {
2038       int some_failed = 0;
2039       struct bp_location *loc;
2040
2041       if (!is_hardware_watchpoint (bpt))
2042         continue;
2043
2044       if (!breakpoint_enabled (bpt))
2045         continue;
2046
2047       if (bpt->disposition == disp_del_at_next_stop)
2048         continue;
2049       
2050       for (loc = bpt->loc; loc; loc = loc->next)
2051         if (!loc->inserted && should_be_inserted (loc))
2052           {
2053             some_failed = 1;
2054             break;
2055           }
2056       if (some_failed)
2057         {
2058           for (loc = bpt->loc; loc; loc = loc->next)
2059             if (loc->inserted)
2060               remove_breakpoint (loc, mark_uninserted);
2061
2062           hw_breakpoint_error = 1;
2063           fprintf_unfiltered (tmp_error_stream,
2064                               "Could not insert hardware watchpoint %d.\n", 
2065                               bpt->number);
2066           error_flag = -1;
2067         }
2068     }
2069
2070   if (error_flag)
2071     {
2072       /* If a hardware breakpoint or watchpoint was inserted, add a
2073          message about possibly exhausted resources.  */
2074       if (hw_breakpoint_error)
2075         {
2076           fprintf_unfiltered (tmp_error_stream, 
2077                               "Could not insert hardware breakpoints:\n\
2078 You may have requested too many hardware breakpoints/watchpoints.\n");
2079         }
2080       target_terminal_ours_for_output ();
2081       error_stream (tmp_error_stream);
2082     }
2083
2084   do_cleanups (cleanups);
2085 }
2086
2087 /* Used when the program stops.
2088    Returns zero if successful, or non-zero if there was a problem
2089    removing a breakpoint location.  */
2090
2091 int
2092 remove_breakpoints (void)
2093 {
2094   struct bp_location *bl, **blp_tmp;
2095   int val = 0;
2096
2097   ALL_BP_LOCATIONS (bl, blp_tmp)
2098   {
2099     if (bl->inserted && !is_tracepoint (bl->owner))
2100       val |= remove_breakpoint (bl, mark_uninserted);
2101   }
2102   return val;
2103 }
2104
2105 /* Remove breakpoints of process PID.  */
2106
2107 int
2108 remove_breakpoints_pid (int pid)
2109 {
2110   struct bp_location *bl, **blp_tmp;
2111   int val;
2112   struct inferior *inf = find_inferior_pid (pid);
2113
2114   ALL_BP_LOCATIONS (bl, blp_tmp)
2115   {
2116     if (bl->pspace != inf->pspace)
2117       continue;
2118
2119     if (bl->inserted)
2120       {
2121         val = remove_breakpoint (bl, mark_uninserted);
2122         if (val != 0)
2123           return val;
2124       }
2125   }
2126   return 0;
2127 }
2128
2129 int
2130 reattach_breakpoints (int pid)
2131 {
2132   struct cleanup *old_chain;
2133   struct bp_location *bl, **blp_tmp;
2134   int val;
2135   struct ui_file *tmp_error_stream;
2136   int dummy1 = 0, dummy2 = 0;
2137   struct inferior *inf;
2138   struct thread_info *tp;
2139
2140   tp = any_live_thread_of_process (pid);
2141   if (tp == NULL)
2142     return 1;
2143
2144   inf = find_inferior_pid (pid);
2145   old_chain = save_inferior_ptid ();
2146
2147   inferior_ptid = tp->ptid;
2148
2149   tmp_error_stream = mem_fileopen ();
2150   make_cleanup_ui_file_delete (tmp_error_stream);
2151
2152   ALL_BP_LOCATIONS (bl, blp_tmp)
2153   {
2154     if (bl->pspace != inf->pspace)
2155       continue;
2156
2157     if (bl->inserted)
2158       {
2159         bl->inserted = 0;
2160         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2);
2161         if (val != 0)
2162           {
2163             do_cleanups (old_chain);
2164             return val;
2165           }
2166       }
2167   }
2168   do_cleanups (old_chain);
2169   return 0;
2170 }
2171
2172 static int internal_breakpoint_number = -1;
2173
2174 /* Set the breakpoint number of B, depending on the value of INTERNAL.
2175    If INTERNAL is non-zero, the breakpoint number will be populated
2176    from internal_breakpoint_number and that variable decremented.
2177    Otherwise the breakpoint number will be populated from
2178    breakpoint_count and that value incremented.  Internal breakpoints
2179    do not set the internal var bpnum.  */
2180 static void
2181 set_breakpoint_number (int internal, struct breakpoint *b)
2182 {
2183   if (internal)
2184     b->number = internal_breakpoint_number--;
2185   else
2186     {
2187       set_breakpoint_count (breakpoint_count + 1);
2188       b->number = breakpoint_count;
2189     }
2190 }
2191
2192 static struct breakpoint *
2193 create_internal_breakpoint (struct gdbarch *gdbarch,
2194                             CORE_ADDR address, enum bptype type,
2195                             const struct breakpoint_ops *ops)
2196 {
2197   struct symtab_and_line sal;
2198   struct breakpoint *b;
2199
2200   init_sal (&sal);              /* Initialize to zeroes.  */
2201
2202   sal.pc = address;
2203   sal.section = find_pc_overlay (sal.pc);
2204   sal.pspace = current_program_space;
2205
2206   b = set_raw_breakpoint (gdbarch, sal, type, ops);
2207   b->number = internal_breakpoint_number--;
2208   b->disposition = disp_donttouch;
2209
2210   return b;
2211 }
2212
2213 static const char *const longjmp_names[] =
2214   {
2215     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
2216   };
2217 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
2218
2219 /* Per-objfile data private to breakpoint.c.  */
2220 struct breakpoint_objfile_data
2221 {
2222   /* Minimal symbol for "_ovly_debug_event" (if any).  */
2223   struct minimal_symbol *overlay_msym;
2224
2225   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
2226   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
2227
2228   /* Minimal symbol for "std::terminate()" (if any).  */
2229   struct minimal_symbol *terminate_msym;
2230
2231   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
2232   struct minimal_symbol *exception_msym;
2233 };
2234
2235 static const struct objfile_data *breakpoint_objfile_key;
2236
2237 /* Minimal symbol not found sentinel.  */
2238 static struct minimal_symbol msym_not_found;
2239
2240 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
2241
2242 static int
2243 msym_not_found_p (const struct minimal_symbol *msym)
2244 {
2245   return msym == &msym_not_found;
2246 }
2247
2248 /* Return per-objfile data needed by breakpoint.c.
2249    Allocate the data if necessary.  */
2250
2251 static struct breakpoint_objfile_data *
2252 get_breakpoint_objfile_data (struct objfile *objfile)
2253 {
2254   struct breakpoint_objfile_data *bp_objfile_data;
2255
2256   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
2257   if (bp_objfile_data == NULL)
2258     {
2259       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
2260                                        sizeof (*bp_objfile_data));
2261
2262       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
2263       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
2264     }
2265   return bp_objfile_data;
2266 }
2267
2268 static void
2269 create_overlay_event_breakpoint (void)
2270 {
2271   struct objfile *objfile;
2272   const char *const func_name = "_ovly_debug_event";
2273
2274   ALL_OBJFILES (objfile)
2275     {
2276       struct breakpoint *b;
2277       struct breakpoint_objfile_data *bp_objfile_data;
2278       CORE_ADDR addr;
2279
2280       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2281
2282       if (msym_not_found_p (bp_objfile_data->overlay_msym))
2283         continue;
2284
2285       if (bp_objfile_data->overlay_msym == NULL)
2286         {
2287           struct minimal_symbol *m;
2288
2289           m = lookup_minimal_symbol_text (func_name, objfile);
2290           if (m == NULL)
2291             {
2292               /* Avoid future lookups in this objfile.  */
2293               bp_objfile_data->overlay_msym = &msym_not_found;
2294               continue;
2295             }
2296           bp_objfile_data->overlay_msym = m;
2297         }
2298
2299       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
2300       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2301                                       bp_overlay_event,
2302                                       &internal_breakpoint_ops);
2303       b->addr_string = xstrdup (func_name);
2304
2305       if (overlay_debugging == ovly_auto)
2306         {
2307           b->enable_state = bp_enabled;
2308           overlay_events_enabled = 1;
2309         }
2310       else
2311        {
2312          b->enable_state = bp_disabled;
2313          overlay_events_enabled = 0;
2314        }
2315     }
2316   update_global_location_list (1);
2317 }
2318
2319 static void
2320 create_longjmp_master_breakpoint (void)
2321 {
2322   struct program_space *pspace;
2323   struct cleanup *old_chain;
2324
2325   old_chain = save_current_program_space ();
2326
2327   ALL_PSPACES (pspace)
2328   {
2329     struct objfile *objfile;
2330
2331     set_current_program_space (pspace);
2332
2333     ALL_OBJFILES (objfile)
2334     {
2335       int i;
2336       struct gdbarch *gdbarch;
2337       struct breakpoint_objfile_data *bp_objfile_data;
2338
2339       gdbarch = get_objfile_arch (objfile);
2340       if (!gdbarch_get_longjmp_target_p (gdbarch))
2341         continue;
2342
2343       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2344
2345       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
2346         {
2347           struct breakpoint *b;
2348           const char *func_name;
2349           CORE_ADDR addr;
2350
2351           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
2352             continue;
2353
2354           func_name = longjmp_names[i];
2355           if (bp_objfile_data->longjmp_msym[i] == NULL)
2356             {
2357               struct minimal_symbol *m;
2358
2359               m = lookup_minimal_symbol_text (func_name, objfile);
2360               if (m == NULL)
2361                 {
2362                   /* Prevent future lookups in this objfile.  */
2363                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
2364                   continue;
2365                 }
2366               bp_objfile_data->longjmp_msym[i] = m;
2367             }
2368
2369           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
2370           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
2371                                           &internal_breakpoint_ops);
2372           b->addr_string = xstrdup (func_name);
2373           b->enable_state = bp_disabled;
2374         }
2375     }
2376   }
2377   update_global_location_list (1);
2378
2379   do_cleanups (old_chain);
2380 }
2381
2382 /* Create a master std::terminate breakpoint.  */
2383 static void
2384 create_std_terminate_master_breakpoint (void)
2385 {
2386   struct program_space *pspace;
2387   struct cleanup *old_chain;
2388   const char *const func_name = "std::terminate()";
2389
2390   old_chain = save_current_program_space ();
2391
2392   ALL_PSPACES (pspace)
2393   {
2394     struct objfile *objfile;
2395     CORE_ADDR addr;
2396
2397     set_current_program_space (pspace);
2398
2399     ALL_OBJFILES (objfile)
2400     {
2401       struct breakpoint *b;
2402       struct breakpoint_objfile_data *bp_objfile_data;
2403
2404       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2405
2406       if (msym_not_found_p (bp_objfile_data->terminate_msym))
2407         continue;
2408
2409       if (bp_objfile_data->terminate_msym == NULL)
2410         {
2411           struct minimal_symbol *m;
2412
2413           m = lookup_minimal_symbol (func_name, NULL, objfile);
2414           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
2415                             && MSYMBOL_TYPE (m) != mst_file_text))
2416             {
2417               /* Prevent future lookups in this objfile.  */
2418               bp_objfile_data->terminate_msym = &msym_not_found;
2419               continue;
2420             }
2421           bp_objfile_data->terminate_msym = m;
2422         }
2423
2424       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
2425       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2426                                       bp_std_terminate_master,
2427                                       &internal_breakpoint_ops);
2428       b->addr_string = xstrdup (func_name);
2429       b->enable_state = bp_disabled;
2430     }
2431   }
2432
2433   update_global_location_list (1);
2434
2435   do_cleanups (old_chain);
2436 }
2437
2438 /* Install a master breakpoint on the unwinder's debug hook.  */
2439
2440 void
2441 create_exception_master_breakpoint (void)
2442 {
2443   struct objfile *objfile;
2444   const char *const func_name = "_Unwind_DebugHook";
2445
2446   ALL_OBJFILES (objfile)
2447     {
2448       struct breakpoint *b;
2449       struct gdbarch *gdbarch;
2450       struct breakpoint_objfile_data *bp_objfile_data;
2451       CORE_ADDR addr;
2452
2453       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2454
2455       if (msym_not_found_p (bp_objfile_data->exception_msym))
2456         continue;
2457
2458       gdbarch = get_objfile_arch (objfile);
2459
2460       if (bp_objfile_data->exception_msym == NULL)
2461         {
2462           struct minimal_symbol *debug_hook;
2463
2464           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
2465           if (debug_hook == NULL)
2466             {
2467               bp_objfile_data->exception_msym = &msym_not_found;
2468               continue;
2469             }
2470
2471           bp_objfile_data->exception_msym = debug_hook;
2472         }
2473
2474       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
2475       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
2476                                                  &current_target);
2477       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
2478                                       &internal_breakpoint_ops);
2479       b->addr_string = xstrdup (func_name);
2480       b->enable_state = bp_disabled;
2481     }
2482
2483   update_global_location_list (1);
2484 }
2485
2486 void
2487 update_breakpoints_after_exec (void)
2488 {
2489   struct breakpoint *b, *b_tmp;
2490   struct bp_location *bploc, **bplocp_tmp;
2491
2492   /* We're about to delete breakpoints from GDB's lists.  If the
2493      INSERTED flag is true, GDB will try to lift the breakpoints by
2494      writing the breakpoints' "shadow contents" back into memory.  The
2495      "shadow contents" are NOT valid after an exec, so GDB should not
2496      do that.  Instead, the target is responsible from marking
2497      breakpoints out as soon as it detects an exec.  We don't do that
2498      here instead, because there may be other attempts to delete
2499      breakpoints after detecting an exec and before reaching here.  */
2500   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
2501     if (bploc->pspace == current_program_space)
2502       gdb_assert (!bploc->inserted);
2503
2504   ALL_BREAKPOINTS_SAFE (b, b_tmp)
2505   {
2506     if (b->pspace != current_program_space)
2507       continue;
2508
2509     /* Solib breakpoints must be explicitly reset after an exec().  */
2510     if (b->type == bp_shlib_event)
2511       {
2512         delete_breakpoint (b);
2513         continue;
2514       }
2515
2516     /* JIT breakpoints must be explicitly reset after an exec().  */
2517     if (b->type == bp_jit_event)
2518       {
2519         delete_breakpoint (b);
2520         continue;
2521       }
2522
2523     /* Thread event breakpoints must be set anew after an exec(),
2524        as must overlay event and longjmp master breakpoints.  */
2525     if (b->type == bp_thread_event || b->type == bp_overlay_event
2526         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
2527         || b->type == bp_exception_master)
2528       {
2529         delete_breakpoint (b);
2530         continue;
2531       }
2532
2533     /* Step-resume breakpoints are meaningless after an exec().  */
2534     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
2535       {
2536         delete_breakpoint (b);
2537         continue;
2538       }
2539
2540     /* Longjmp and longjmp-resume breakpoints are also meaningless
2541        after an exec.  */
2542     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
2543         || b->type == bp_exception || b->type == bp_exception_resume)
2544       {
2545         delete_breakpoint (b);
2546         continue;
2547       }
2548
2549     if (b->type == bp_catchpoint)
2550       {
2551         /* For now, none of the bp_catchpoint breakpoints need to
2552            do anything at this point.  In the future, if some of
2553            the catchpoints need to something, we will need to add
2554            a new method, and call this method from here.  */
2555         continue;
2556       }
2557
2558     /* bp_finish is a special case.  The only way we ought to be able
2559        to see one of these when an exec() has happened, is if the user
2560        caught a vfork, and then said "finish".  Ordinarily a finish just
2561        carries them to the call-site of the current callee, by setting
2562        a temporary bp there and resuming.  But in this case, the finish
2563        will carry them entirely through the vfork & exec.
2564
2565        We don't want to allow a bp_finish to remain inserted now.  But
2566        we can't safely delete it, 'cause finish_command has a handle to
2567        the bp on a bpstat, and will later want to delete it.  There's a
2568        chance (and I've seen it happen) that if we delete the bp_finish
2569        here, that its storage will get reused by the time finish_command
2570        gets 'round to deleting the "use to be a bp_finish" breakpoint.
2571        We really must allow finish_command to delete a bp_finish.
2572
2573        In the absence of a general solution for the "how do we know
2574        it's safe to delete something others may have handles to?"
2575        problem, what we'll do here is just uninsert the bp_finish, and
2576        let finish_command delete it.
2577
2578        (We know the bp_finish is "doomed" in the sense that it's
2579        momentary, and will be deleted as soon as finish_command sees
2580        the inferior stopped.  So it doesn't matter that the bp's
2581        address is probably bogus in the new a.out, unlike e.g., the
2582        solib breakpoints.)  */
2583
2584     if (b->type == bp_finish)
2585       {
2586         continue;
2587       }
2588
2589     /* Without a symbolic address, we have little hope of the
2590        pre-exec() address meaning the same thing in the post-exec()
2591        a.out.  */
2592     if (b->addr_string == NULL)
2593       {
2594         delete_breakpoint (b);
2595         continue;
2596       }
2597   }
2598   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
2599   create_overlay_event_breakpoint ();
2600   create_longjmp_master_breakpoint ();
2601   create_std_terminate_master_breakpoint ();
2602   create_exception_master_breakpoint ();
2603 }
2604
2605 int
2606 detach_breakpoints (int pid)
2607 {
2608   struct bp_location *bl, **blp_tmp;
2609   int val = 0;
2610   struct cleanup *old_chain = save_inferior_ptid ();
2611   struct inferior *inf = current_inferior ();
2612
2613   if (pid == PIDGET (inferior_ptid))
2614     error (_("Cannot detach breakpoints of inferior_ptid"));
2615
2616   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
2617   inferior_ptid = pid_to_ptid (pid);
2618   ALL_BP_LOCATIONS (bl, blp_tmp)
2619   {
2620     if (bl->pspace != inf->pspace)
2621       continue;
2622
2623     if (bl->inserted)
2624       val |= remove_breakpoint_1 (bl, mark_inserted);
2625   }
2626
2627   /* Detach single-step breakpoints as well.  */
2628   detach_single_step_breakpoints ();
2629
2630   do_cleanups (old_chain);
2631   return val;
2632 }
2633
2634 /* Remove the breakpoint location BL from the current address space.
2635    Note that this is used to detach breakpoints from a child fork.
2636    When we get here, the child isn't in the inferior list, and neither
2637    do we have objects to represent its address space --- we should
2638    *not* look at bl->pspace->aspace here.  */
2639
2640 static int
2641 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
2642 {
2643   int val;
2644
2645   /* BL is never in moribund_locations by our callers.  */
2646   gdb_assert (bl->owner != NULL);
2647
2648   if (bl->owner->enable_state == bp_permanent)
2649     /* Permanent breakpoints cannot be inserted or removed.  */
2650     return 0;
2651
2652   /* The type of none suggests that owner is actually deleted.
2653      This should not ever happen.  */
2654   gdb_assert (bl->owner->type != bp_none);
2655
2656   if (bl->loc_type == bp_loc_software_breakpoint
2657       || bl->loc_type == bp_loc_hardware_breakpoint)
2658     {
2659       /* "Normal" instruction breakpoint: either the standard
2660          trap-instruction bp (bp_breakpoint), or a
2661          bp_hardware_breakpoint.  */
2662
2663       /* First check to see if we have to handle an overlay.  */
2664       if (overlay_debugging == ovly_off
2665           || bl->section == NULL
2666           || !(section_is_overlay (bl->section)))
2667         {
2668           /* No overlay handling: just remove the breakpoint.  */
2669           val = bl->owner->ops->remove_location (bl);
2670         }
2671       else
2672         {
2673           /* This breakpoint is in an overlay section.
2674              Did we set a breakpoint at the LMA?  */
2675           if (!overlay_events_enabled)
2676               {
2677                 /* Yes -- overlay event support is not active, so we
2678                    should have set a breakpoint at the LMA.  Remove it.  
2679                 */
2680                 /* Ignore any failures: if the LMA is in ROM, we will
2681                    have already warned when we failed to insert it.  */
2682                 if (bl->loc_type == bp_loc_hardware_breakpoint)
2683                   target_remove_hw_breakpoint (bl->gdbarch,
2684                                                &bl->overlay_target_info);
2685                 else
2686                   target_remove_breakpoint (bl->gdbarch,
2687                                             &bl->overlay_target_info);
2688               }
2689           /* Did we set a breakpoint at the VMA? 
2690              If so, we will have marked the breakpoint 'inserted'.  */
2691           if (bl->inserted)
2692             {
2693               /* Yes -- remove it.  Previously we did not bother to
2694                  remove the breakpoint if the section had been
2695                  unmapped, but let's not rely on that being safe.  We
2696                  don't know what the overlay manager might do.  */
2697
2698               /* However, we should remove *software* breakpoints only
2699                  if the section is still mapped, or else we overwrite
2700                  wrong code with the saved shadow contents.  */
2701               if (bl->loc_type == bp_loc_hardware_breakpoint
2702                   || section_is_mapped (bl->section))
2703                 val = bl->owner->ops->remove_location (bl);
2704               else
2705                 val = 0;
2706             }
2707           else
2708             {
2709               /* No -- not inserted, so no need to remove.  No error.  */
2710               val = 0;
2711             }
2712         }
2713
2714       /* In some cases, we might not be able to remove a breakpoint
2715          in a shared library that has already been removed, but we
2716          have not yet processed the shlib unload event.  */
2717       if (val && solib_name_from_address (bl->pspace, bl->address))
2718         val = 0;
2719
2720       if (val)
2721         return val;
2722       bl->inserted = (is == mark_inserted);
2723     }
2724   else if (bl->loc_type == bp_loc_hardware_watchpoint)
2725     {
2726       gdb_assert (bl->owner->ops != NULL
2727                   && bl->owner->ops->remove_location != NULL);
2728
2729       bl->inserted = (is == mark_inserted);
2730       bl->owner->ops->remove_location (bl);
2731
2732       /* Failure to remove any of the hardware watchpoints comes here.  */
2733       if ((is == mark_uninserted) && (bl->inserted))
2734         warning (_("Could not remove hardware watchpoint %d."),
2735                  bl->owner->number);
2736     }
2737   else if (bl->owner->type == bp_catchpoint
2738            && breakpoint_enabled (bl->owner)
2739            && !bl->duplicate)
2740     {
2741       gdb_assert (bl->owner->ops != NULL
2742                   && bl->owner->ops->remove_location != NULL);
2743
2744       val = bl->owner->ops->remove_location (bl);
2745       if (val)
2746         return val;
2747
2748       bl->inserted = (is == mark_inserted);
2749     }
2750
2751   return 0;
2752 }
2753
2754 static int
2755 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
2756 {
2757   int ret;
2758   struct cleanup *old_chain;
2759
2760   /* BL is never in moribund_locations by our callers.  */
2761   gdb_assert (bl->owner != NULL);
2762
2763   if (bl->owner->enable_state == bp_permanent)
2764     /* Permanent breakpoints cannot be inserted or removed.  */
2765     return 0;
2766
2767   /* The type of none suggests that owner is actually deleted.
2768      This should not ever happen.  */
2769   gdb_assert (bl->owner->type != bp_none);
2770
2771   old_chain = save_current_space_and_thread ();
2772
2773   switch_to_program_space_and_thread (bl->pspace);
2774
2775   ret = remove_breakpoint_1 (bl, is);
2776
2777   do_cleanups (old_chain);
2778   return ret;
2779 }
2780
2781 /* Clear the "inserted" flag in all breakpoints.  */
2782
2783 void
2784 mark_breakpoints_out (void)
2785 {
2786   struct bp_location *bl, **blp_tmp;
2787
2788   ALL_BP_LOCATIONS (bl, blp_tmp)
2789     if (bl->pspace == current_program_space)
2790       bl->inserted = 0;
2791 }
2792
2793 /* Clear the "inserted" flag in all breakpoints and delete any
2794    breakpoints which should go away between runs of the program.
2795
2796    Plus other such housekeeping that has to be done for breakpoints
2797    between runs.
2798
2799    Note: this function gets called at the end of a run (by
2800    generic_mourn_inferior) and when a run begins (by
2801    init_wait_for_inferior).  */
2802
2803
2804
2805 void
2806 breakpoint_init_inferior (enum inf_context context)
2807 {
2808   struct breakpoint *b, *b_tmp;
2809   struct bp_location *bl, **blp_tmp;
2810   int ix;
2811   struct program_space *pspace = current_program_space;
2812
2813   /* If breakpoint locations are shared across processes, then there's
2814      nothing to do.  */
2815   if (gdbarch_has_global_breakpoints (target_gdbarch))
2816     return;
2817
2818   ALL_BP_LOCATIONS (bl, blp_tmp)
2819   {
2820     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
2821     if (bl->pspace == pspace
2822         && bl->owner->enable_state != bp_permanent)
2823       bl->inserted = 0;
2824   }
2825
2826   ALL_BREAKPOINTS_SAFE (b, b_tmp)
2827   {
2828     if (b->loc && b->loc->pspace != pspace)
2829       continue;
2830
2831     switch (b->type)
2832       {
2833       case bp_call_dummy:
2834
2835         /* If the call dummy breakpoint is at the entry point it will
2836            cause problems when the inferior is rerun, so we better get
2837            rid of it.  */
2838
2839       case bp_watchpoint_scope:
2840
2841         /* Also get rid of scope breakpoints.  */
2842
2843       case bp_shlib_event:
2844
2845         /* Also remove solib event breakpoints.  Their addresses may
2846            have changed since the last time we ran the program.
2847            Actually we may now be debugging against different target;
2848            and so the solib backend that installed this breakpoint may
2849            not be used in by the target.  E.g.,
2850
2851            (gdb) file prog-linux
2852            (gdb) run               # native linux target
2853            ...
2854            (gdb) kill
2855            (gdb) file prog-win.exe
2856            (gdb) tar rem :9999     # remote Windows gdbserver.
2857         */
2858
2859         delete_breakpoint (b);
2860         break;
2861
2862       case bp_watchpoint:
2863       case bp_hardware_watchpoint:
2864       case bp_read_watchpoint:
2865       case bp_access_watchpoint:
2866         {
2867           struct watchpoint *w = (struct watchpoint *) b;
2868
2869           /* Likewise for watchpoints on local expressions.  */
2870           if (w->exp_valid_block != NULL)
2871             delete_breakpoint (b);
2872           else if (context == inf_starting)
2873             {
2874               /* Reset val field to force reread of starting value in
2875                  insert_breakpoints.  */
2876               if (w->val)
2877                 value_free (w->val);
2878               w->val = NULL;
2879               w->val_valid = 0;
2880           }
2881         }
2882         break;
2883       default:
2884         break;
2885       }
2886   }
2887
2888   /* Get rid of the moribund locations.  */
2889   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
2890     decref_bp_location (&bl);
2891   VEC_free (bp_location_p, moribund_locations);
2892 }
2893
2894 /* These functions concern about actual breakpoints inserted in the
2895    target --- to e.g. check if we need to do decr_pc adjustment or if
2896    we need to hop over the bkpt --- so we check for address space
2897    match, not program space.  */
2898
2899 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
2900    exists at PC.  It returns ordinary_breakpoint_here if it's an
2901    ordinary breakpoint, or permanent_breakpoint_here if it's a
2902    permanent breakpoint.
2903    - When continuing from a location with an ordinary breakpoint, we
2904      actually single step once before calling insert_breakpoints.
2905    - When continuing from a location with a permanent breakpoint, we
2906      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
2907      the target, to advance the PC past the breakpoint.  */
2908
2909 enum breakpoint_here
2910 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
2911 {
2912   struct bp_location *bl, **blp_tmp;
2913   int any_breakpoint_here = 0;
2914
2915   ALL_BP_LOCATIONS (bl, blp_tmp)
2916     {
2917       if (bl->loc_type != bp_loc_software_breakpoint
2918           && bl->loc_type != bp_loc_hardware_breakpoint)
2919         continue;
2920
2921       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
2922       if ((breakpoint_enabled (bl->owner)
2923            || bl->owner->enable_state == bp_permanent)
2924           && breakpoint_location_address_match (bl, aspace, pc))
2925         {
2926           if (overlay_debugging 
2927               && section_is_overlay (bl->section)
2928               && !section_is_mapped (bl->section))
2929             continue;           /* unmapped overlay -- can't be a match */
2930           else if (bl->owner->enable_state == bp_permanent)
2931             return permanent_breakpoint_here;
2932           else
2933             any_breakpoint_here = 1;
2934         }
2935     }
2936
2937   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
2938 }
2939
2940 /* Return true if there's a moribund breakpoint at PC.  */
2941
2942 int
2943 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
2944 {
2945   struct bp_location *loc;
2946   int ix;
2947
2948   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
2949     if (breakpoint_location_address_match (loc, aspace, pc))
2950       return 1;
2951
2952   return 0;
2953 }
2954
2955 /* Returns non-zero if there's a breakpoint inserted at PC, which is
2956    inserted using regular breakpoint_chain / bp_location array
2957    mechanism.  This does not check for single-step breakpoints, which
2958    are inserted and removed using direct target manipulation.  */
2959
2960 int
2961 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
2962                                     CORE_ADDR pc)
2963 {
2964   struct bp_location *bl, **blp_tmp;
2965
2966   ALL_BP_LOCATIONS (bl, blp_tmp)
2967     {
2968       if (bl->loc_type != bp_loc_software_breakpoint
2969           && bl->loc_type != bp_loc_hardware_breakpoint)
2970         continue;
2971
2972       if (bl->inserted
2973           && breakpoint_location_address_match (bl, aspace, pc))
2974         {
2975           if (overlay_debugging 
2976               && section_is_overlay (bl->section)
2977               && !section_is_mapped (bl->section))
2978             continue;           /* unmapped overlay -- can't be a match */
2979           else
2980             return 1;
2981         }
2982     }
2983   return 0;
2984 }
2985
2986 /* Returns non-zero iff there's either regular breakpoint
2987    or a single step breakpoint inserted at PC.  */
2988
2989 int
2990 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
2991 {
2992   if (regular_breakpoint_inserted_here_p (aspace, pc))
2993     return 1;
2994
2995   if (single_step_breakpoint_inserted_here_p (aspace, pc))
2996     return 1;
2997
2998   return 0;
2999 }
3000
3001 /* This function returns non-zero iff there is a software breakpoint
3002    inserted at PC.  */
3003
3004 int
3005 software_breakpoint_inserted_here_p (struct address_space *aspace,
3006                                      CORE_ADDR pc)
3007 {
3008   struct bp_location *bl, **blp_tmp;
3009
3010   ALL_BP_LOCATIONS (bl, blp_tmp)
3011     {
3012       if (bl->loc_type != bp_loc_software_breakpoint)
3013         continue;
3014
3015       if (bl->inserted
3016           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3017                                        aspace, pc))
3018         {
3019           if (overlay_debugging 
3020               && section_is_overlay (bl->section)
3021               && !section_is_mapped (bl->section))
3022             continue;           /* unmapped overlay -- can't be a match */
3023           else
3024             return 1;
3025         }
3026     }
3027
3028   /* Also check for software single-step breakpoints.  */
3029   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3030     return 1;
3031
3032   return 0;
3033 }
3034
3035 int
3036 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3037                                        CORE_ADDR addr, ULONGEST len)
3038 {
3039   struct breakpoint *bpt;
3040
3041   ALL_BREAKPOINTS (bpt)
3042     {
3043       struct bp_location *loc;
3044
3045       if (bpt->type != bp_hardware_watchpoint
3046           && bpt->type != bp_access_watchpoint)
3047         continue;
3048
3049       if (!breakpoint_enabled (bpt))
3050         continue;
3051
3052       for (loc = bpt->loc; loc; loc = loc->next)
3053         if (loc->pspace->aspace == aspace && loc->inserted)
3054           {
3055             CORE_ADDR l, h;
3056
3057             /* Check for intersection.  */
3058             l = max (loc->address, addr);
3059             h = min (loc->address + loc->length, addr + len);
3060             if (l < h)
3061               return 1;
3062           }
3063     }
3064   return 0;
3065 }
3066
3067 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3068    PC is valid for process/thread PTID.  */
3069
3070 int
3071 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3072                          ptid_t ptid)
3073 {
3074   struct bp_location *bl, **blp_tmp;
3075   /* The thread and task IDs associated to PTID, computed lazily.  */
3076   int thread = -1;
3077   int task = 0;
3078   
3079   ALL_BP_LOCATIONS (bl, blp_tmp)
3080     {
3081       if (bl->loc_type != bp_loc_software_breakpoint
3082           && bl->loc_type != bp_loc_hardware_breakpoint)
3083         continue;
3084
3085       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
3086       if (!breakpoint_enabled (bl->owner)
3087           && bl->owner->enable_state != bp_permanent)
3088         continue;
3089
3090       if (!breakpoint_location_address_match (bl, aspace, pc))
3091         continue;
3092
3093       if (bl->owner->thread != -1)
3094         {
3095           /* This is a thread-specific breakpoint.  Check that ptid
3096              matches that thread.  If thread hasn't been computed yet,
3097              it is now time to do so.  */
3098           if (thread == -1)
3099             thread = pid_to_thread_id (ptid);
3100           if (bl->owner->thread != thread)
3101             continue;
3102         }
3103
3104       if (bl->owner->task != 0)
3105         {
3106           /* This is a task-specific breakpoint.  Check that ptid
3107              matches that task.  If task hasn't been computed yet,
3108              it is now time to do so.  */
3109           if (task == 0)
3110             task = ada_get_task_number (ptid);
3111           if (bl->owner->task != task)
3112             continue;
3113         }
3114
3115       if (overlay_debugging 
3116           && section_is_overlay (bl->section)
3117           && !section_is_mapped (bl->section))
3118         continue;           /* unmapped overlay -- can't be a match */
3119
3120       return 1;
3121     }
3122
3123   return 0;
3124 }
3125 \f
3126
3127 /* bpstat stuff.  External routines' interfaces are documented
3128    in breakpoint.h.  */
3129
3130 int
3131 ep_is_catchpoint (struct breakpoint *ep)
3132 {
3133   return (ep->type == bp_catchpoint);
3134 }
3135
3136 /* Frees any storage that is part of a bpstat.  Does not walk the
3137    'next' chain.  */
3138
3139 static void
3140 bpstat_free (bpstat bs)
3141 {
3142   if (bs->old_val != NULL)
3143     value_free (bs->old_val);
3144   decref_counted_command_line (&bs->commands);
3145   decref_bp_location (&bs->bp_location_at);
3146   xfree (bs);
3147 }
3148
3149 /* Clear a bpstat so that it says we are not at any breakpoint.
3150    Also free any storage that is part of a bpstat.  */
3151
3152 void
3153 bpstat_clear (bpstat *bsp)
3154 {
3155   bpstat p;
3156   bpstat q;
3157
3158   if (bsp == 0)
3159     return;
3160   p = *bsp;
3161   while (p != NULL)
3162     {
3163       q = p->next;
3164       bpstat_free (p);
3165       p = q;
3166     }
3167   *bsp = NULL;
3168 }
3169
3170 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
3171    is part of the bpstat is copied as well.  */
3172
3173 bpstat
3174 bpstat_copy (bpstat bs)
3175 {
3176   bpstat p = NULL;
3177   bpstat tmp;
3178   bpstat retval = NULL;
3179
3180   if (bs == NULL)
3181     return bs;
3182
3183   for (; bs != NULL; bs = bs->next)
3184     {
3185       tmp = (bpstat) xmalloc (sizeof (*tmp));
3186       memcpy (tmp, bs, sizeof (*tmp));
3187       incref_counted_command_line (tmp->commands);
3188       incref_bp_location (tmp->bp_location_at);
3189       if (bs->old_val != NULL)
3190         {
3191           tmp->old_val = value_copy (bs->old_val);
3192           release_value (tmp->old_val);
3193         }
3194
3195       if (p == NULL)
3196         /* This is the first thing in the chain.  */
3197         retval = tmp;
3198       else
3199         p->next = tmp;
3200       p = tmp;
3201     }
3202   p->next = NULL;
3203   return retval;
3204 }
3205
3206 /* Find the bpstat associated with this breakpoint.  */
3207
3208 bpstat
3209 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
3210 {
3211   if (bsp == NULL)
3212     return NULL;
3213
3214   for (; bsp != NULL; bsp = bsp->next)
3215     {
3216       if (bsp->breakpoint_at == breakpoint)
3217         return bsp;
3218     }
3219   return NULL;
3220 }
3221
3222 /* Put in *NUM the breakpoint number of the first breakpoint we are
3223    stopped at.  *BSP upon return is a bpstat which points to the
3224    remaining breakpoints stopped at (but which is not guaranteed to be
3225    good for anything but further calls to bpstat_num).
3226
3227    Return 0 if passed a bpstat which does not indicate any breakpoints.
3228    Return -1 if stopped at a breakpoint that has been deleted since
3229    we set it.
3230    Return 1 otherwise.  */
3231
3232 int
3233 bpstat_num (bpstat *bsp, int *num)
3234 {
3235   struct breakpoint *b;
3236
3237   if ((*bsp) == NULL)
3238     return 0;                   /* No more breakpoint values */
3239
3240   /* We assume we'll never have several bpstats that correspond to a
3241      single breakpoint -- otherwise, this function might return the
3242      same number more than once and this will look ugly.  */
3243   b = (*bsp)->breakpoint_at;
3244   *bsp = (*bsp)->next;
3245   if (b == NULL)
3246     return -1;                  /* breakpoint that's been deleted since */
3247
3248   *num = b->number;             /* We have its number */
3249   return 1;
3250 }
3251
3252 /* See breakpoint.h.  */
3253
3254 void
3255 bpstat_clear_actions (void)
3256 {
3257   struct thread_info *tp;
3258   bpstat bs;
3259
3260   if (ptid_equal (inferior_ptid, null_ptid))
3261     return;
3262
3263   tp = find_thread_ptid (inferior_ptid);
3264   if (tp == NULL)
3265     return;
3266
3267   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
3268     {
3269       decref_counted_command_line (&bs->commands);
3270
3271       if (bs->old_val != NULL)
3272         {
3273           value_free (bs->old_val);
3274           bs->old_val = NULL;
3275         }
3276     }
3277 }
3278
3279 /* Called when a command is about to proceed the inferior.  */
3280
3281 static void
3282 breakpoint_about_to_proceed (void)
3283 {
3284   if (!ptid_equal (inferior_ptid, null_ptid))
3285     {
3286       struct thread_info *tp = inferior_thread ();
3287
3288       /* Allow inferior function calls in breakpoint commands to not
3289          interrupt the command list.  When the call finishes
3290          successfully, the inferior will be standing at the same
3291          breakpoint as if nothing happened.  */
3292       if (tp->control.in_infcall)
3293         return;
3294     }
3295
3296   breakpoint_proceeded = 1;
3297 }
3298
3299 /* Stub for cleaning up our state if we error-out of a breakpoint
3300    command.  */
3301 static void
3302 cleanup_executing_breakpoints (void *ignore)
3303 {
3304   executing_breakpoint_commands = 0;
3305 }
3306
3307 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
3308    or its equivalent.  */
3309
3310 static int
3311 command_line_is_silent (struct command_line *cmd)
3312 {
3313   return cmd && (strcmp ("silent", cmd->line) == 0
3314                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
3315 }
3316
3317 /* Execute all the commands associated with all the breakpoints at
3318    this location.  Any of these commands could cause the process to
3319    proceed beyond this point, etc.  We look out for such changes by
3320    checking the global "breakpoint_proceeded" after each command.
3321
3322    Returns true if a breakpoint command resumed the inferior.  In that
3323    case, it is the caller's responsibility to recall it again with the
3324    bpstat of the current thread.  */
3325
3326 static int
3327 bpstat_do_actions_1 (bpstat *bsp)
3328 {
3329   bpstat bs;
3330   struct cleanup *old_chain;
3331   int again = 0;
3332
3333   /* Avoid endless recursion if a `source' command is contained
3334      in bs->commands.  */
3335   if (executing_breakpoint_commands)
3336     return 0;
3337
3338   executing_breakpoint_commands = 1;
3339   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
3340
3341   prevent_dont_repeat ();
3342
3343   /* This pointer will iterate over the list of bpstat's.  */
3344   bs = *bsp;
3345
3346   breakpoint_proceeded = 0;
3347   for (; bs != NULL; bs = bs->next)
3348     {
3349       struct counted_command_line *ccmd;
3350       struct command_line *cmd;
3351       struct cleanup *this_cmd_tree_chain;
3352
3353       /* Take ownership of the BSP's command tree, if it has one.
3354
3355          The command tree could legitimately contain commands like
3356          'step' and 'next', which call clear_proceed_status, which
3357          frees stop_bpstat's command tree.  To make sure this doesn't
3358          free the tree we're executing out from under us, we need to
3359          take ownership of the tree ourselves.  Since a given bpstat's
3360          commands are only executed once, we don't need to copy it; we
3361          can clear the pointer in the bpstat, and make sure we free
3362          the tree when we're done.  */
3363       ccmd = bs->commands;
3364       bs->commands = NULL;
3365       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
3366       cmd = ccmd ? ccmd->commands : NULL;
3367       if (command_line_is_silent (cmd))
3368         {
3369           /* The action has been already done by bpstat_stop_status.  */
3370           cmd = cmd->next;
3371         }
3372
3373       while (cmd != NULL)
3374         {
3375           execute_control_command (cmd);
3376
3377           if (breakpoint_proceeded)
3378             break;
3379           else
3380             cmd = cmd->next;
3381         }
3382
3383       /* We can free this command tree now.  */
3384       do_cleanups (this_cmd_tree_chain);
3385
3386       if (breakpoint_proceeded)
3387         {
3388           if (target_can_async_p ())
3389             /* If we are in async mode, then the target might be still
3390                running, not stopped at any breakpoint, so nothing for
3391                us to do here -- just return to the event loop.  */
3392             ;
3393           else
3394             /* In sync mode, when execute_control_command returns
3395                we're already standing on the next breakpoint.
3396                Breakpoint commands for that stop were not run, since
3397                execute_command does not run breakpoint commands --
3398                only command_line_handler does, but that one is not
3399                involved in execution of breakpoint commands.  So, we
3400                can now execute breakpoint commands.  It should be
3401                noted that making execute_command do bpstat actions is
3402                not an option -- in this case we'll have recursive
3403                invocation of bpstat for each breakpoint with a
3404                command, and can easily blow up GDB stack.  Instead, we
3405                return true, which will trigger the caller to recall us
3406                with the new stop_bpstat.  */
3407             again = 1;
3408           break;
3409         }
3410     }
3411   do_cleanups (old_chain);
3412   return again;
3413 }
3414
3415 void
3416 bpstat_do_actions (void)
3417 {
3418   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
3419
3420   /* Do any commands attached to breakpoint we are stopped at.  */
3421   while (!ptid_equal (inferior_ptid, null_ptid)
3422          && target_has_execution
3423          && !is_exited (inferior_ptid)
3424          && !is_executing (inferior_ptid))
3425     /* Since in sync mode, bpstat_do_actions may resume the inferior,
3426        and only return when it is stopped at the next breakpoint, we
3427        keep doing breakpoint actions until it returns false to
3428        indicate the inferior was not resumed.  */
3429     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
3430       break;
3431
3432   discard_cleanups (cleanup_if_error);
3433 }
3434
3435 /* Print out the (old or new) value associated with a watchpoint.  */
3436
3437 static void
3438 watchpoint_value_print (struct value *val, struct ui_file *stream)
3439 {
3440   if (val == NULL)
3441     fprintf_unfiltered (stream, _("<unreadable>"));
3442   else
3443     {
3444       struct value_print_options opts;
3445       get_user_print_options (&opts);
3446       value_print (val, stream, &opts);
3447     }
3448 }
3449
3450 /* Generic routine for printing messages indicating why we
3451    stopped.  The behavior of this function depends on the value
3452    'print_it' in the bpstat structure.  Under some circumstances we
3453    may decide not to print anything here and delegate the task to
3454    normal_stop().  */
3455
3456 static enum print_stop_action
3457 print_bp_stop_message (bpstat bs)
3458 {
3459   switch (bs->print_it)
3460     {
3461     case print_it_noop:
3462       /* Nothing should be printed for this bpstat entry.  */
3463       return PRINT_UNKNOWN;
3464       break;
3465
3466     case print_it_done:
3467       /* We still want to print the frame, but we already printed the
3468          relevant messages.  */
3469       return PRINT_SRC_AND_LOC;
3470       break;
3471
3472     case print_it_normal:
3473       {
3474         struct breakpoint *b = bs->breakpoint_at;
3475
3476         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
3477            which has since been deleted.  */
3478         if (b == NULL)
3479           return PRINT_UNKNOWN;
3480
3481         /* Normal case.  Call the breakpoint's print_it method.  */
3482         return b->ops->print_it (bs);
3483       }
3484       break;
3485
3486     default:
3487       internal_error (__FILE__, __LINE__,
3488                       _("print_bp_stop_message: unrecognized enum value"));
3489       break;
3490     }
3491 }
3492
3493 /* Print a message indicating what happened.  This is called from
3494    normal_stop().  The input to this routine is the head of the bpstat
3495    list - a list of the eventpoints that caused this stop.  KIND is
3496    the target_waitkind for the stopping event.  This
3497    routine calls the generic print routine for printing a message
3498    about reasons for stopping.  This will print (for example) the
3499    "Breakpoint n," part of the output.  The return value of this
3500    routine is one of:
3501
3502    PRINT_UNKNOWN: Means we printed nothing.
3503    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
3504    code to print the location.  An example is 
3505    "Breakpoint 1, " which should be followed by
3506    the location.
3507    PRINT_SRC_ONLY: Means we printed something, but there is no need
3508    to also print the location part of the message.
3509    An example is the catch/throw messages, which
3510    don't require a location appended to the end.
3511    PRINT_NOTHING: We have done some printing and we don't need any 
3512    further info to be printed.  */
3513
3514 enum print_stop_action
3515 bpstat_print (bpstat bs, int kind)
3516 {
3517   int val;
3518
3519   /* Maybe another breakpoint in the chain caused us to stop.
3520      (Currently all watchpoints go on the bpstat whether hit or not.
3521      That probably could (should) be changed, provided care is taken
3522      with respect to bpstat_explains_signal).  */
3523   for (; bs; bs = bs->next)
3524     {
3525       val = print_bp_stop_message (bs);
3526       if (val == PRINT_SRC_ONLY 
3527           || val == PRINT_SRC_AND_LOC 
3528           || val == PRINT_NOTHING)
3529         return val;
3530     }
3531
3532   /* If we had hit a shared library event breakpoint,
3533      print_bp_stop_message would print out this message.  If we hit an
3534      OS-level shared library event, do the same thing.  */
3535   if (kind == TARGET_WAITKIND_LOADED)
3536     {
3537       ui_out_text (current_uiout, _("Stopped due to shared library event\n"));
3538       if (ui_out_is_mi_like_p (current_uiout))
3539         ui_out_field_string (current_uiout, "reason",
3540                              async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
3541       return PRINT_NOTHING;
3542     }
3543
3544   /* We reached the end of the chain, or we got a null BS to start
3545      with and nothing was printed.  */
3546   return PRINT_UNKNOWN;
3547 }
3548
3549 /* Evaluate the expression EXP and return 1 if value is zero.  This is
3550    used inside a catch_errors to evaluate the breakpoint condition.
3551    The argument is a "struct expression *" that has been cast to a
3552    "char *" to make it pass through catch_errors.  */
3553
3554 static int
3555 breakpoint_cond_eval (void *exp)
3556 {
3557   struct value *mark = value_mark ();
3558   int i = !value_true (evaluate_expression ((struct expression *) exp));
3559
3560   value_free_to_mark (mark);
3561   return i;
3562 }
3563
3564 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
3565
3566 static bpstat
3567 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
3568 {
3569   bpstat bs;
3570
3571   bs = (bpstat) xmalloc (sizeof (*bs));
3572   bs->next = NULL;
3573   **bs_link_pointer = bs;
3574   *bs_link_pointer = &bs->next;
3575   bs->breakpoint_at = bl->owner;
3576   bs->bp_location_at = bl;
3577   incref_bp_location (bl);
3578   /* If the condition is false, etc., don't do the commands.  */
3579   bs->commands = NULL;
3580   bs->old_val = NULL;
3581   bs->print_it = print_it_normal;
3582   return bs;
3583 }
3584 \f
3585 /* The target has stopped with waitstatus WS.  Check if any hardware
3586    watchpoints have triggered, according to the target.  */
3587
3588 int
3589 watchpoints_triggered (struct target_waitstatus *ws)
3590 {
3591   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
3592   CORE_ADDR addr;
3593   struct breakpoint *b;
3594
3595   if (!stopped_by_watchpoint)
3596     {
3597       /* We were not stopped by a watchpoint.  Mark all watchpoints
3598          as not triggered.  */
3599       ALL_BREAKPOINTS (b)
3600         if (is_hardware_watchpoint (b))
3601           {
3602             struct watchpoint *w = (struct watchpoint *) b;
3603
3604             w->watchpoint_triggered = watch_triggered_no;
3605           }
3606
3607       return 0;
3608     }
3609
3610   if (!target_stopped_data_address (&current_target, &addr))
3611     {
3612       /* We were stopped by a watchpoint, but we don't know where.
3613          Mark all watchpoints as unknown.  */
3614       ALL_BREAKPOINTS (b)
3615         if (is_hardware_watchpoint (b))
3616           {
3617             struct watchpoint *w = (struct watchpoint *) b;
3618
3619             w->watchpoint_triggered = watch_triggered_unknown;
3620           }
3621
3622       return stopped_by_watchpoint;
3623     }
3624
3625   /* The target could report the data address.  Mark watchpoints
3626      affected by this data address as triggered, and all others as not
3627      triggered.  */
3628
3629   ALL_BREAKPOINTS (b)
3630     if (is_hardware_watchpoint (b))
3631       {
3632         struct watchpoint *w = (struct watchpoint *) b;
3633         struct bp_location *loc;
3634
3635         w->watchpoint_triggered = watch_triggered_no;
3636         for (loc = b->loc; loc; loc = loc->next)
3637           {
3638             if (is_masked_watchpoint (b))
3639               {
3640                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
3641                 CORE_ADDR start = loc->address & w->hw_wp_mask;
3642
3643                 if (newaddr == start)
3644                   {
3645                     w->watchpoint_triggered = watch_triggered_yes;
3646                     break;
3647                   }
3648               }
3649             /* Exact match not required.  Within range is sufficient.  */
3650             else if (target_watchpoint_addr_within_range (&current_target,
3651                                                          addr, loc->address,
3652                                                          loc->length))
3653               {
3654                 w->watchpoint_triggered = watch_triggered_yes;
3655                 break;
3656               }
3657           }
3658       }
3659
3660   return 1;
3661 }
3662
3663 /* Possible return values for watchpoint_check (this can't be an enum
3664    because of check_errors).  */
3665 /* The watchpoint has been deleted.  */
3666 #define WP_DELETED 1
3667 /* The value has changed.  */
3668 #define WP_VALUE_CHANGED 2
3669 /* The value has not changed.  */
3670 #define WP_VALUE_NOT_CHANGED 3
3671 /* Ignore this watchpoint, no matter if the value changed or not.  */
3672 #define WP_IGNORE 4
3673
3674 #define BP_TEMPFLAG 1
3675 #define BP_HARDWAREFLAG 2
3676
3677 /* Evaluate watchpoint condition expression and check if its value
3678    changed.
3679
3680    P should be a pointer to struct bpstat, but is defined as a void *
3681    in order for this function to be usable with catch_errors.  */
3682
3683 static int
3684 watchpoint_check (void *p)
3685 {
3686   bpstat bs = (bpstat) p;
3687   struct watchpoint *b;
3688   struct frame_info *fr;
3689   int within_current_scope;
3690
3691   /* BS is built from an existing struct breakpoint.  */
3692   gdb_assert (bs->breakpoint_at != NULL);
3693   b = (struct watchpoint *) bs->breakpoint_at;
3694
3695   /* If this is a local watchpoint, we only want to check if the
3696      watchpoint frame is in scope if the current thread is the thread
3697      that was used to create the watchpoint.  */
3698   if (!watchpoint_in_thread_scope (b))
3699     return WP_IGNORE;
3700
3701   if (b->exp_valid_block == NULL)
3702     within_current_scope = 1;
3703   else
3704     {
3705       struct frame_info *frame = get_current_frame ();
3706       struct gdbarch *frame_arch = get_frame_arch (frame);
3707       CORE_ADDR frame_pc = get_frame_pc (frame);
3708
3709       /* in_function_epilogue_p() returns a non-zero value if we're
3710          still in the function but the stack frame has already been
3711          invalidated.  Since we can't rely on the values of local
3712          variables after the stack has been destroyed, we are treating
3713          the watchpoint in that state as `not changed' without further
3714          checking.  Don't mark watchpoints as changed if the current
3715          frame is in an epilogue - even if they are in some other
3716          frame, our view of the stack is likely to be wrong and
3717          frame_find_by_id could error out.  */
3718       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
3719         return WP_IGNORE;
3720
3721       fr = frame_find_by_id (b->watchpoint_frame);
3722       within_current_scope = (fr != NULL);
3723
3724       /* If we've gotten confused in the unwinder, we might have
3725          returned a frame that can't describe this variable.  */
3726       if (within_current_scope)
3727         {
3728           struct symbol *function;
3729
3730           function = get_frame_function (fr);
3731           if (function == NULL
3732               || !contained_in (b->exp_valid_block,
3733                                 SYMBOL_BLOCK_VALUE (function)))
3734             within_current_scope = 0;
3735         }
3736
3737       if (within_current_scope)
3738         /* If we end up stopping, the current frame will get selected
3739            in normal_stop.  So this call to select_frame won't affect
3740            the user.  */
3741         select_frame (fr);
3742     }
3743
3744   if (within_current_scope)
3745     {
3746       /* We use value_{,free_to_}mark because it could be a *long*
3747          time before we return to the command level and call
3748          free_all_values.  We can't call free_all_values because we
3749          might be in the middle of evaluating a function call.  */
3750
3751       int pc = 0;
3752       struct value *mark;
3753       struct value *new_val;
3754
3755       if (is_masked_watchpoint (&b->base))
3756         /* Since we don't know the exact trigger address (from
3757            stopped_data_address), just tell the user we've triggered
3758            a mask watchpoint.  */
3759         return WP_VALUE_CHANGED;
3760
3761       mark = value_mark ();
3762       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
3763
3764       /* We use value_equal_contents instead of value_equal because
3765          the latter coerces an array to a pointer, thus comparing just
3766          the address of the array instead of its contents.  This is
3767          not what we want.  */
3768       if ((b->val != NULL) != (new_val != NULL)
3769           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
3770         {
3771           if (new_val != NULL)
3772             {
3773               release_value (new_val);
3774               value_free_to_mark (mark);
3775             }
3776           bs->old_val = b->val;
3777           b->val = new_val;
3778           b->val_valid = 1;
3779           return WP_VALUE_CHANGED;
3780         }
3781       else
3782         {
3783           /* Nothing changed.  */
3784           value_free_to_mark (mark);
3785           return WP_VALUE_NOT_CHANGED;
3786         }
3787     }
3788   else
3789     {
3790       struct ui_out *uiout = current_uiout;
3791
3792       /* This seems like the only logical thing to do because
3793          if we temporarily ignored the watchpoint, then when
3794          we reenter the block in which it is valid it contains
3795          garbage (in the case of a function, it may have two
3796          garbage values, one before and one after the prologue).
3797          So we can't even detect the first assignment to it and
3798          watch after that (since the garbage may or may not equal
3799          the first value assigned).  */
3800       /* We print all the stop information in
3801          breakpoint_ops->print_it, but in this case, by the time we
3802          call breakpoint_ops->print_it this bp will be deleted
3803          already.  So we have no choice but print the information
3804          here.  */
3805       if (ui_out_is_mi_like_p (uiout))
3806         ui_out_field_string
3807           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
3808       ui_out_text (uiout, "\nWatchpoint ");
3809       ui_out_field_int (uiout, "wpnum", b->base.number);
3810       ui_out_text (uiout,
3811                    " deleted because the program has left the block in\n\
3812 which its expression is valid.\n");     
3813
3814       /* Make sure the watchpoint's commands aren't executed.  */
3815       decref_counted_command_line (&b->base.commands);
3816       watchpoint_del_at_next_stop (b);
3817
3818       return WP_DELETED;
3819     }
3820 }
3821
3822 /* Return true if it looks like target has stopped due to hitting
3823    breakpoint location BL.  This function does not check if we should
3824    stop, only if BL explains the stop.  */
3825
3826 static int
3827 bpstat_check_location (const struct bp_location *bl,
3828                        struct address_space *aspace, CORE_ADDR bp_addr,
3829                        const struct target_waitstatus *ws)
3830 {
3831   struct breakpoint *b = bl->owner;
3832
3833   /* BL is from an existing breakpoint.  */
3834   gdb_assert (b != NULL);
3835
3836   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
3837 }
3838
3839 /* Determine if the watched values have actually changed, and we
3840    should stop.  If not, set BS->stop to 0.  */
3841
3842 static void
3843 bpstat_check_watchpoint (bpstat bs)
3844 {
3845   const struct bp_location *bl;
3846   struct watchpoint *b;
3847
3848   /* BS is built for existing struct breakpoint.  */
3849   bl = bs->bp_location_at;
3850   gdb_assert (bl != NULL);
3851   b = (struct watchpoint *) bs->breakpoint_at;
3852   gdb_assert (b != NULL);
3853
3854     {
3855       int must_check_value = 0;
3856       
3857       if (b->base.type == bp_watchpoint)
3858         /* For a software watchpoint, we must always check the
3859            watched value.  */
3860         must_check_value = 1;
3861       else if (b->watchpoint_triggered == watch_triggered_yes)
3862         /* We have a hardware watchpoint (read, write, or access)
3863            and the target earlier reported an address watched by
3864            this watchpoint.  */
3865         must_check_value = 1;
3866       else if (b->watchpoint_triggered == watch_triggered_unknown
3867                && b->base.type == bp_hardware_watchpoint)
3868         /* We were stopped by a hardware watchpoint, but the target could
3869            not report the data address.  We must check the watchpoint's
3870            value.  Access and read watchpoints are out of luck; without
3871            a data address, we can't figure it out.  */
3872         must_check_value = 1;
3873
3874       if (must_check_value)
3875         {
3876           char *message
3877             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
3878                           b->base.number);
3879           struct cleanup *cleanups = make_cleanup (xfree, message);
3880           int e = catch_errors (watchpoint_check, bs, message,
3881                                 RETURN_MASK_ALL);
3882           do_cleanups (cleanups);
3883           switch (e)
3884             {
3885             case WP_DELETED:
3886               /* We've already printed what needs to be printed.  */
3887               bs->print_it = print_it_done;
3888               /* Stop.  */
3889               break;
3890             case WP_IGNORE:
3891               bs->print_it = print_it_noop;
3892               bs->stop = 0;
3893               break;
3894             case WP_VALUE_CHANGED:
3895               if (b->base.type == bp_read_watchpoint)
3896                 {
3897                   /* There are two cases to consider here:
3898
3899                      1. We're watching the triggered memory for reads.
3900                      In that case, trust the target, and always report
3901                      the watchpoint hit to the user.  Even though
3902                      reads don't cause value changes, the value may
3903                      have changed since the last time it was read, and
3904                      since we're not trapping writes, we will not see
3905                      those, and as such we should ignore our notion of
3906                      old value.
3907
3908                      2. We're watching the triggered memory for both
3909                      reads and writes.  There are two ways this may
3910                      happen:
3911
3912                      2.1. This is a target that can't break on data
3913                      reads only, but can break on accesses (reads or
3914                      writes), such as e.g., x86.  We detect this case
3915                      at the time we try to insert read watchpoints.
3916
3917                      2.2. Otherwise, the target supports read
3918                      watchpoints, but, the user set an access or write
3919                      watchpoint watching the same memory as this read
3920                      watchpoint.
3921
3922                      If we're watching memory writes as well as reads,
3923                      ignore watchpoint hits when we find that the
3924                      value hasn't changed, as reads don't cause
3925                      changes.  This still gives false positives when
3926                      the program writes the same value to memory as
3927                      what there was already in memory (we will confuse
3928                      it for a read), but it's much better than
3929                      nothing.  */
3930
3931                   int other_write_watchpoint = 0;
3932
3933                   if (bl->watchpoint_type == hw_read)
3934                     {
3935                       struct breakpoint *other_b;
3936
3937                       ALL_BREAKPOINTS (other_b)
3938                         if (other_b->type == bp_hardware_watchpoint
3939                             || other_b->type == bp_access_watchpoint)
3940                           {
3941                             struct watchpoint *other_w =
3942                               (struct watchpoint *) other_b;
3943
3944                             if (other_w->watchpoint_triggered
3945                                 == watch_triggered_yes)
3946                               {
3947                                 other_write_watchpoint = 1;
3948                                 break;
3949                               }
3950                           }
3951                     }
3952
3953                   if (other_write_watchpoint
3954                       || bl->watchpoint_type == hw_access)
3955                     {
3956                       /* We're watching the same memory for writes,
3957                          and the value changed since the last time we
3958                          updated it, so this trap must be for a write.
3959                          Ignore it.  */
3960                       bs->print_it = print_it_noop;
3961                       bs->stop = 0;
3962                     }
3963                 }
3964               break;
3965             case WP_VALUE_NOT_CHANGED:
3966               if (b->base.type == bp_hardware_watchpoint
3967                   || b->base.type == bp_watchpoint)
3968                 {
3969                   /* Don't stop: write watchpoints shouldn't fire if
3970                      the value hasn't changed.  */
3971                   bs->print_it = print_it_noop;
3972                   bs->stop = 0;
3973                 }
3974               /* Stop.  */
3975               break;
3976             default:
3977               /* Can't happen.  */
3978             case 0:
3979               /* Error from catch_errors.  */
3980               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
3981               watchpoint_del_at_next_stop (b);
3982               /* We've already printed what needs to be printed.  */
3983               bs->print_it = print_it_done;
3984               break;
3985             }
3986         }
3987       else      /* must_check_value == 0 */
3988         {
3989           /* This is a case where some watchpoint(s) triggered, but
3990              not at the address of this watchpoint, or else no
3991              watchpoint triggered after all.  So don't print
3992              anything for this watchpoint.  */
3993           bs->print_it = print_it_noop;
3994           bs->stop = 0;
3995         }
3996     }
3997 }
3998
3999
4000 /* Check conditions (condition proper, frame, thread and ignore count)
4001    of breakpoint referred to by BS.  If we should not stop for this
4002    breakpoint, set BS->stop to 0.  */
4003
4004 static void
4005 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4006 {
4007   int thread_id = pid_to_thread_id (ptid);
4008   const struct bp_location *bl;
4009   struct breakpoint *b;
4010
4011   /* BS is built for existing struct breakpoint.  */
4012   bl = bs->bp_location_at;
4013   gdb_assert (bl != NULL);
4014   b = bs->breakpoint_at;
4015   gdb_assert (b != NULL);
4016
4017   if (frame_id_p (b->frame_id)
4018       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
4019     bs->stop = 0;
4020   else if (bs->stop)
4021     {
4022       int value_is_zero = 0;
4023       struct expression *cond;
4024
4025       /* Evaluate Python breakpoints that have a "stop"
4026          method implemented.  */
4027       if (b->py_bp_object)
4028         bs->stop = gdbpy_should_stop (b->py_bp_object);
4029
4030       if (is_watchpoint (b))
4031         {
4032           struct watchpoint *w = (struct watchpoint *) b;
4033
4034           cond = w->cond_exp;
4035         }
4036       else
4037         cond = bl->cond;
4038
4039       if (cond && b->disposition != disp_del_at_next_stop)
4040         {
4041           int within_current_scope = 1;
4042           struct watchpoint * w;
4043
4044           /* We use value_mark and value_free_to_mark because it could
4045              be a long time before we return to the command level and
4046              call free_all_values.  We can't call free_all_values
4047              because we might be in the middle of evaluating a
4048              function call.  */
4049           struct value *mark = value_mark ();
4050
4051           if (is_watchpoint (b))
4052             w = (struct watchpoint *) b;
4053           else
4054             w = NULL;
4055
4056           /* Need to select the frame, with all that implies so that
4057              the conditions will have the right context.  Because we
4058              use the frame, we will not see an inlined function's
4059              variables when we arrive at a breakpoint at the start
4060              of the inlined function; the current frame will be the
4061              call site.  */
4062           if (w == NULL || w->cond_exp_valid_block == NULL)
4063             select_frame (get_current_frame ());
4064           else
4065             {
4066               struct frame_info *frame;
4067
4068               /* For local watchpoint expressions, which particular
4069                  instance of a local is being watched matters, so we
4070                  keep track of the frame to evaluate the expression
4071                  in.  To evaluate the condition however, it doesn't
4072                  really matter which instantiation of the function
4073                  where the condition makes sense triggers the
4074                  watchpoint.  This allows an expression like "watch
4075                  global if q > 10" set in `func', catch writes to
4076                  global on all threads that call `func', or catch
4077                  writes on all recursive calls of `func' by a single
4078                  thread.  We simply always evaluate the condition in
4079                  the innermost frame that's executing where it makes
4080                  sense to evaluate the condition.  It seems
4081                  intuitive.  */
4082               frame = block_innermost_frame (w->cond_exp_valid_block);
4083               if (frame != NULL)
4084                 select_frame (frame);
4085               else
4086                 within_current_scope = 0;
4087             }
4088           if (within_current_scope)
4089             value_is_zero
4090               = catch_errors (breakpoint_cond_eval, cond,
4091                               "Error in testing breakpoint condition:\n",
4092                               RETURN_MASK_ALL);
4093           else
4094             {
4095               warning (_("Watchpoint condition cannot be tested "
4096                          "in the current scope"));
4097               /* If we failed to set the right context for this
4098                  watchpoint, unconditionally report it.  */
4099               value_is_zero = 0;
4100             }
4101           /* FIXME-someday, should give breakpoint #.  */
4102           value_free_to_mark (mark);
4103         }
4104
4105       if (cond && value_is_zero)
4106         {
4107           bs->stop = 0;
4108         }
4109       else if (b->thread != -1 && b->thread != thread_id)
4110         {
4111           bs->stop = 0;
4112         }
4113       else if (b->ignore_count > 0)
4114         {
4115           b->ignore_count--;
4116           annotate_ignore_count_change ();
4117           bs->stop = 0;
4118           /* Increase the hit count even though we don't stop.  */
4119           ++(b->hit_count);
4120           observer_notify_breakpoint_modified (b);
4121         }       
4122     }
4123 }
4124
4125
4126 /* Get a bpstat associated with having just stopped at address
4127    BP_ADDR in thread PTID.
4128
4129    Determine whether we stopped at a breakpoint, etc, or whether we
4130    don't understand this stop.  Result is a chain of bpstat's such
4131    that:
4132
4133    if we don't understand the stop, the result is a null pointer.
4134
4135    if we understand why we stopped, the result is not null.
4136
4137    Each element of the chain refers to a particular breakpoint or
4138    watchpoint at which we have stopped.  (We may have stopped for
4139    several reasons concurrently.)
4140
4141    Each element of the chain has valid next, breakpoint_at,
4142    commands, FIXME??? fields.  */
4143
4144 bpstat
4145 bpstat_stop_status (struct address_space *aspace,
4146                     CORE_ADDR bp_addr, ptid_t ptid,
4147                     const struct target_waitstatus *ws)
4148 {
4149   struct breakpoint *b = NULL;
4150   struct bp_location *bl;
4151   struct bp_location *loc;
4152   /* First item of allocated bpstat's.  */
4153   bpstat bs_head = NULL, *bs_link = &bs_head;
4154   /* Pointer to the last thing in the chain currently.  */
4155   bpstat bs;
4156   int ix;
4157   int need_remove_insert;
4158   int removed_any;
4159
4160   /* First, build the bpstat chain with locations that explain a
4161      target stop, while being careful to not set the target running,
4162      as that may invalidate locations (in particular watchpoint
4163      locations are recreated).  Resuming will happen here with
4164      breakpoint conditions or watchpoint expressions that include
4165      inferior function calls.  */
4166
4167   ALL_BREAKPOINTS (b)
4168     {
4169       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
4170         continue;
4171
4172       for (bl = b->loc; bl != NULL; bl = bl->next)
4173         {
4174           /* For hardware watchpoints, we look only at the first
4175              location.  The watchpoint_check function will work on the
4176              entire expression, not the individual locations.  For
4177              read watchpoints, the watchpoints_triggered function has
4178              checked all locations already.  */
4179           if (b->type == bp_hardware_watchpoint && bl != b->loc)
4180             break;
4181
4182           if (bl->shlib_disabled)
4183             continue;
4184
4185           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
4186             continue;
4187
4188           /* Come here if it's a watchpoint, or if the break address
4189              matches.  */
4190
4191           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
4192                                                    explain stop.  */
4193
4194           /* Assume we stop.  Should we find a watchpoint that is not
4195              actually triggered, or if the condition of the breakpoint
4196              evaluates as false, we'll reset 'stop' to 0.  */
4197           bs->stop = 1;
4198           bs->print = 1;
4199
4200           /* If this is a scope breakpoint, mark the associated
4201              watchpoint as triggered so that we will handle the
4202              out-of-scope event.  We'll get to the watchpoint next
4203              iteration.  */
4204           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
4205             {
4206               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
4207
4208               w->watchpoint_triggered = watch_triggered_yes;
4209             }
4210         }
4211     }
4212
4213   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4214     {
4215       if (breakpoint_location_address_match (loc, aspace, bp_addr))
4216         {
4217           bs = bpstat_alloc (loc, &bs_link);
4218           /* For hits of moribund locations, we should just proceed.  */
4219           bs->stop = 0;
4220           bs->print = 0;
4221           bs->print_it = print_it_noop;
4222         }
4223     }
4224
4225   /* Now go through the locations that caused the target to stop, and
4226      check whether we're interested in reporting this stop to higher
4227      layers, or whether we should resume the target transparently.  */
4228
4229   removed_any = 0;
4230
4231   for (bs = bs_head; bs != NULL; bs = bs->next)
4232     {
4233       if (!bs->stop)
4234         continue;
4235
4236       b = bs->breakpoint_at;
4237       b->ops->check_status (bs);
4238       if (bs->stop)
4239         {
4240           bpstat_check_breakpoint_conditions (bs, ptid);
4241
4242           if (bs->stop)
4243             {
4244               ++(b->hit_count);
4245               observer_notify_breakpoint_modified (b);
4246
4247               /* We will stop here.  */
4248               if (b->disposition == disp_disable)
4249                 {
4250                   if (b->enable_state != bp_permanent)
4251                     b->enable_state = bp_disabled;
4252                   removed_any = 1;
4253                 }
4254               if (b->silent)
4255                 bs->print = 0;
4256               bs->commands = b->commands;
4257               incref_counted_command_line (bs->commands);
4258               if (command_line_is_silent (bs->commands
4259                                           ? bs->commands->commands : NULL))
4260                 bs->print = 0;
4261             }
4262
4263         }
4264
4265       /* Print nothing for this entry if we don't stop or don't
4266          print.  */
4267       if (!bs->stop || !bs->print)
4268         bs->print_it = print_it_noop;
4269     }
4270
4271   /* If we aren't stopping, the value of some hardware watchpoint may
4272      not have changed, but the intermediate memory locations we are
4273      watching may have.  Don't bother if we're stopping; this will get
4274      done later.  */
4275   need_remove_insert = 0;
4276   if (! bpstat_causes_stop (bs_head))
4277     for (bs = bs_head; bs != NULL; bs = bs->next)
4278       if (!bs->stop
4279           && bs->breakpoint_at
4280           && is_hardware_watchpoint (bs->breakpoint_at))
4281         {
4282           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
4283
4284           update_watchpoint (w, 0 /* don't reparse.  */);
4285           need_remove_insert = 1;
4286         }
4287
4288   if (need_remove_insert)
4289     update_global_location_list (1);
4290   else if (removed_any)
4291     update_global_location_list (0);
4292
4293   return bs_head;
4294 }
4295
4296 static void
4297 handle_jit_event (void)
4298 {
4299   struct frame_info *frame;
4300   struct gdbarch *gdbarch;
4301
4302   /* Switch terminal for any messages produced by
4303      breakpoint_re_set.  */
4304   target_terminal_ours_for_output ();
4305
4306   frame = get_current_frame ();
4307   gdbarch = get_frame_arch (frame);
4308
4309   jit_event_handler (gdbarch);
4310
4311   target_terminal_inferior ();
4312 }
4313
4314 /* Prepare WHAT final decision for infrun.  */
4315
4316 /* Decide what infrun needs to do with this bpstat.  */
4317
4318 struct bpstat_what
4319 bpstat_what (bpstat bs_head)
4320 {
4321   struct bpstat_what retval;
4322   /* We need to defer calling `solib_add', as adding new symbols
4323      resets breakpoints, which in turn deletes breakpoint locations,
4324      and hence may clear unprocessed entries in the BS chain.  */
4325   int shlib_event = 0;
4326   int jit_event = 0;
4327   bpstat bs;
4328
4329   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
4330   retval.call_dummy = STOP_NONE;
4331   retval.is_longjmp = 0;
4332
4333   for (bs = bs_head; bs != NULL; bs = bs->next)
4334     {
4335       /* Extract this BS's action.  After processing each BS, we check
4336          if its action overrides all we've seem so far.  */
4337       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
4338       enum bptype bptype;
4339
4340       if (bs->breakpoint_at == NULL)
4341         {
4342           /* I suspect this can happen if it was a momentary
4343              breakpoint which has since been deleted.  */
4344           bptype = bp_none;
4345         }
4346       else
4347         bptype = bs->breakpoint_at->type;
4348
4349       if (bptype == bp_shlib_event)
4350         shlib_event = 1;
4351
4352       switch (bptype)
4353         {
4354         case bp_none:
4355           break;
4356         case bp_breakpoint:
4357         case bp_hardware_breakpoint:
4358         case bp_until:
4359         case bp_finish:
4360         case bp_shlib_event:
4361           if (bs->stop)
4362             {
4363               if (bs->print)
4364                 this_action = BPSTAT_WHAT_STOP_NOISY;
4365               else
4366                 this_action = BPSTAT_WHAT_STOP_SILENT;
4367             }
4368           else
4369             this_action = BPSTAT_WHAT_SINGLE;
4370           break;
4371         case bp_watchpoint:
4372         case bp_hardware_watchpoint:
4373         case bp_read_watchpoint:
4374         case bp_access_watchpoint:
4375           if (bs->stop)
4376             {
4377               if (bs->print)
4378                 this_action = BPSTAT_WHAT_STOP_NOISY;
4379               else
4380                 this_action = BPSTAT_WHAT_STOP_SILENT;
4381             }
4382           else
4383             {
4384               /* There was a watchpoint, but we're not stopping.
4385                  This requires no further action.  */
4386             }
4387           break;
4388         case bp_longjmp:
4389         case bp_exception:
4390           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
4391           retval.is_longjmp = bptype == bp_longjmp;
4392           break;
4393         case bp_longjmp_resume:
4394         case bp_exception_resume:
4395           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
4396           retval.is_longjmp = bptype == bp_longjmp_resume;
4397           break;
4398         case bp_step_resume:
4399           if (bs->stop)
4400             this_action = BPSTAT_WHAT_STEP_RESUME;
4401           else
4402             {
4403               /* It is for the wrong frame.  */
4404               this_action = BPSTAT_WHAT_SINGLE;
4405             }
4406           break;
4407         case bp_hp_step_resume:
4408           if (bs->stop)
4409             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
4410           else
4411             {
4412               /* It is for the wrong frame.  */
4413               this_action = BPSTAT_WHAT_SINGLE;
4414             }
4415           break;
4416         case bp_watchpoint_scope:
4417         case bp_thread_event:
4418         case bp_overlay_event:
4419         case bp_longjmp_master:
4420         case bp_std_terminate_master:
4421         case bp_exception_master:
4422           this_action = BPSTAT_WHAT_SINGLE;
4423           break;
4424         case bp_catchpoint:
4425           if (bs->stop)
4426             {
4427               if (bs->print)
4428                 this_action = BPSTAT_WHAT_STOP_NOISY;
4429               else
4430                 this_action = BPSTAT_WHAT_STOP_SILENT;
4431             }
4432           else
4433             {
4434               /* There was a catchpoint, but we're not stopping.
4435                  This requires no further action.  */
4436             }
4437           break;
4438         case bp_jit_event:
4439           jit_event = 1;
4440           this_action = BPSTAT_WHAT_SINGLE;
4441           break;
4442         case bp_call_dummy:
4443           /* Make sure the action is stop (silent or noisy),
4444              so infrun.c pops the dummy frame.  */
4445           retval.call_dummy = STOP_STACK_DUMMY;
4446           this_action = BPSTAT_WHAT_STOP_SILENT;
4447           break;
4448         case bp_std_terminate:
4449           /* Make sure the action is stop (silent or noisy),
4450              so infrun.c pops the dummy frame.  */
4451           retval.call_dummy = STOP_STD_TERMINATE;
4452           this_action = BPSTAT_WHAT_STOP_SILENT;
4453           break;
4454         case bp_tracepoint:
4455         case bp_fast_tracepoint:
4456         case bp_static_tracepoint:
4457           /* Tracepoint hits should not be reported back to GDB, and
4458              if one got through somehow, it should have been filtered
4459              out already.  */
4460           internal_error (__FILE__, __LINE__,
4461                           _("bpstat_what: tracepoint encountered"));
4462           break;
4463         case bp_gnu_ifunc_resolver:
4464           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
4465           this_action = BPSTAT_WHAT_SINGLE;
4466           break;
4467         case bp_gnu_ifunc_resolver_return:
4468           /* The breakpoint will be removed, execution will restart from the
4469              PC of the former breakpoint.  */
4470           this_action = BPSTAT_WHAT_KEEP_CHECKING;
4471           break;
4472         default:
4473           internal_error (__FILE__, __LINE__,
4474                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
4475         }
4476
4477       retval.main_action = max (retval.main_action, this_action);
4478     }
4479
4480   /* These operations may affect the bs->breakpoint_at state so they are
4481      delayed after MAIN_ACTION is decided above.  */
4482
4483   if (shlib_event)
4484     {
4485       if (debug_infrun)
4486         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_shlib_event\n");
4487
4488       /* Check for any newly added shared libraries if we're supposed
4489          to be adding them automatically.  */
4490
4491       /* Switch terminal for any messages produced by
4492          breakpoint_re_set.  */
4493       target_terminal_ours_for_output ();
4494
4495 #ifdef SOLIB_ADD
4496       SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
4497 #else
4498       solib_add (NULL, 0, &current_target, auto_solib_add);
4499 #endif
4500
4501       target_terminal_inferior ();
4502     }
4503
4504   if (jit_event)
4505     {
4506       if (debug_infrun)
4507         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
4508
4509       handle_jit_event ();
4510     }
4511
4512   for (bs = bs_head; bs != NULL; bs = bs->next)
4513     {
4514       struct breakpoint *b = bs->breakpoint_at;
4515
4516       if (b == NULL)
4517         continue;
4518       switch (b->type)
4519         {
4520         case bp_gnu_ifunc_resolver:
4521           gnu_ifunc_resolver_stop (b);
4522           break;
4523         case bp_gnu_ifunc_resolver_return:
4524           gnu_ifunc_resolver_return_stop (b);
4525           break;
4526         }
4527     }
4528
4529   return retval;
4530 }
4531
4532 /* Nonzero if we should step constantly (e.g. watchpoints on machines
4533    without hardware support).  This isn't related to a specific bpstat,
4534    just to things like whether watchpoints are set.  */
4535
4536 int
4537 bpstat_should_step (void)
4538 {
4539   struct breakpoint *b;
4540
4541   ALL_BREAKPOINTS (b)
4542     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
4543       return 1;
4544   return 0;
4545 }
4546
4547 int
4548 bpstat_causes_stop (bpstat bs)
4549 {
4550   for (; bs != NULL; bs = bs->next)
4551     if (bs->stop)
4552       return 1;
4553
4554   return 0;
4555 }
4556
4557 \f
4558
4559 /* Compute a string of spaces suitable to indent the next line
4560    so it starts at the position corresponding to the table column
4561    named COL_NAME in the currently active table of UIOUT.  */
4562
4563 static char *
4564 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
4565 {
4566   static char wrap_indent[80];
4567   int i, total_width, width, align;
4568   char *text;
4569
4570   total_width = 0;
4571   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
4572     {
4573       if (strcmp (text, col_name) == 0)
4574         {
4575           gdb_assert (total_width < sizeof wrap_indent);
4576           memset (wrap_indent, ' ', total_width);
4577           wrap_indent[total_width] = 0;
4578
4579           return wrap_indent;
4580         }
4581
4582       total_width += width + 1;
4583     }
4584
4585   return NULL;
4586 }
4587
4588 /* Print the LOC location out of the list of B->LOC locations.  */
4589
4590 static void
4591 print_breakpoint_location (struct breakpoint *b,
4592                            struct bp_location *loc)
4593 {
4594   struct ui_out *uiout = current_uiout;
4595   struct cleanup *old_chain = save_current_program_space ();
4596
4597   if (loc != NULL && loc->shlib_disabled)
4598     loc = NULL;
4599
4600   if (loc != NULL)
4601     set_current_program_space (loc->pspace);
4602
4603   if (b->display_canonical)
4604     ui_out_field_string (uiout, "what", b->addr_string);
4605   else if (loc && loc->source_file)
4606     {
4607       struct symbol *sym 
4608         = find_pc_sect_function (loc->address, loc->section);
4609       if (sym)
4610         {
4611           ui_out_text (uiout, "in ");
4612           ui_out_field_string (uiout, "func",
4613                                SYMBOL_PRINT_NAME (sym));
4614           ui_out_text (uiout, " ");
4615           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
4616           ui_out_text (uiout, "at ");
4617         }
4618       ui_out_field_string (uiout, "file", loc->source_file);
4619       ui_out_text (uiout, ":");
4620       
4621       if (ui_out_is_mi_like_p (uiout))
4622         {
4623           struct symtab_and_line sal = find_pc_line (loc->address, 0);
4624           char *fullname = symtab_to_fullname (sal.symtab);
4625           
4626           if (fullname)
4627             ui_out_field_string (uiout, "fullname", fullname);
4628         }
4629       
4630       ui_out_field_int (uiout, "line", loc->line_number);
4631     }
4632   else if (loc)
4633     {
4634       struct ui_stream *stb = ui_out_stream_new (uiout);
4635       struct cleanup *stb_chain = make_cleanup_ui_out_stream_delete (stb);
4636
4637       print_address_symbolic (loc->gdbarch, loc->address, stb->stream,
4638                               demangle, "");
4639       ui_out_field_stream (uiout, "at", stb);
4640
4641       do_cleanups (stb_chain);
4642     }
4643   else
4644     ui_out_field_string (uiout, "pending", b->addr_string);
4645
4646   do_cleanups (old_chain);
4647 }
4648
4649 static const char *
4650 bptype_string (enum bptype type)
4651 {
4652   struct ep_type_description
4653     {
4654       enum bptype type;
4655       char *description;
4656     };
4657   static struct ep_type_description bptypes[] =
4658   {
4659     {bp_none, "?deleted?"},
4660     {bp_breakpoint, "breakpoint"},
4661     {bp_hardware_breakpoint, "hw breakpoint"},
4662     {bp_until, "until"},
4663     {bp_finish, "finish"},
4664     {bp_watchpoint, "watchpoint"},
4665     {bp_hardware_watchpoint, "hw watchpoint"},
4666     {bp_read_watchpoint, "read watchpoint"},
4667     {bp_access_watchpoint, "acc watchpoint"},
4668     {bp_longjmp, "longjmp"},
4669     {bp_longjmp_resume, "longjmp resume"},
4670     {bp_exception, "exception"},
4671     {bp_exception_resume, "exception resume"},
4672     {bp_step_resume, "step resume"},
4673     {bp_hp_step_resume, "high-priority step resume"},
4674     {bp_watchpoint_scope, "watchpoint scope"},
4675     {bp_call_dummy, "call dummy"},
4676     {bp_std_terminate, "std::terminate"},
4677     {bp_shlib_event, "shlib events"},
4678     {bp_thread_event, "thread events"},
4679     {bp_overlay_event, "overlay events"},
4680     {bp_longjmp_master, "longjmp master"},
4681     {bp_std_terminate_master, "std::terminate master"},
4682     {bp_exception_master, "exception master"},
4683     {bp_catchpoint, "catchpoint"},
4684     {bp_tracepoint, "tracepoint"},
4685     {bp_fast_tracepoint, "fast tracepoint"},
4686     {bp_static_tracepoint, "static tracepoint"},
4687     {bp_jit_event, "jit events"},
4688     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
4689     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
4690   };
4691
4692   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
4693       || ((int) type != bptypes[(int) type].type))
4694     internal_error (__FILE__, __LINE__,
4695                     _("bptypes table does not describe type #%d."),
4696                     (int) type);
4697
4698   return bptypes[(int) type].description;
4699 }
4700
4701 /* Print B to gdb_stdout.  */
4702
4703 static void
4704 print_one_breakpoint_location (struct breakpoint *b,
4705                                struct bp_location *loc,
4706                                int loc_number,
4707                                struct bp_location **last_loc,
4708                                int allflag)
4709 {
4710   struct command_line *l;
4711   static char bpenables[] = "nynny";
4712
4713   struct ui_out *uiout = current_uiout;
4714   int header_of_multiple = 0;
4715   int part_of_multiple = (loc != NULL);
4716   struct value_print_options opts;
4717
4718   get_user_print_options (&opts);
4719
4720   gdb_assert (!loc || loc_number != 0);
4721   /* See comment in print_one_breakpoint concerning treatment of
4722      breakpoints with single disabled location.  */
4723   if (loc == NULL 
4724       && (b->loc != NULL 
4725           && (b->loc->next != NULL || !b->loc->enabled)))
4726     header_of_multiple = 1;
4727   if (loc == NULL)
4728     loc = b->loc;
4729
4730   annotate_record ();
4731
4732   /* 1 */
4733   annotate_field (0);
4734   if (part_of_multiple)
4735     {
4736       char *formatted;
4737       formatted = xstrprintf ("%d.%d", b->number, loc_number);
4738       ui_out_field_string (uiout, "number", formatted);
4739       xfree (formatted);
4740     }
4741   else
4742     {
4743       ui_out_field_int (uiout, "number", b->number);
4744     }
4745
4746   /* 2 */
4747   annotate_field (1);
4748   if (part_of_multiple)
4749     ui_out_field_skip (uiout, "type");
4750   else
4751     ui_out_field_string (uiout, "type", bptype_string (b->type));
4752
4753   /* 3 */
4754   annotate_field (2);
4755   if (part_of_multiple)
4756     ui_out_field_skip (uiout, "disp");
4757   else
4758     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
4759
4760
4761   /* 4 */
4762   annotate_field (3);
4763   if (part_of_multiple)
4764     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
4765   else
4766     ui_out_field_fmt (uiout, "enabled", "%c", 
4767                       bpenables[(int) b->enable_state]);
4768   ui_out_spaces (uiout, 2);
4769
4770   
4771   /* 5 and 6 */
4772   if (b->ops != NULL && b->ops->print_one != NULL)
4773     {
4774       /* Although the print_one can possibly print all locations,
4775          calling it here is not likely to get any nice result.  So,
4776          make sure there's just one location.  */
4777       gdb_assert (b->loc == NULL || b->loc->next == NULL);
4778       b->ops->print_one (b, last_loc);
4779     }
4780   else
4781     switch (b->type)
4782       {
4783       case bp_none:
4784         internal_error (__FILE__, __LINE__,
4785                         _("print_one_breakpoint: bp_none encountered\n"));
4786         break;
4787
4788       case bp_watchpoint:
4789       case bp_hardware_watchpoint:
4790       case bp_read_watchpoint:
4791       case bp_access_watchpoint:
4792         {
4793           struct watchpoint *w = (struct watchpoint *) b;
4794
4795           /* Field 4, the address, is omitted (which makes the columns
4796              not line up too nicely with the headers, but the effect
4797              is relatively readable).  */
4798           if (opts.addressprint)
4799             ui_out_field_skip (uiout, "addr");
4800           annotate_field (5);
4801           ui_out_field_string (uiout, "what", w->exp_string);
4802         }
4803         break;
4804
4805       case bp_breakpoint:
4806       case bp_hardware_breakpoint:
4807       case bp_until:
4808       case bp_finish:
4809       case bp_longjmp:
4810       case bp_longjmp_resume:
4811       case bp_exception:
4812       case bp_exception_resume:
4813       case bp_step_resume:
4814       case bp_hp_step_resume:
4815       case bp_watchpoint_scope:
4816       case bp_call_dummy:
4817       case bp_std_terminate:
4818       case bp_shlib_event:
4819       case bp_thread_event:
4820       case bp_overlay_event:
4821       case bp_longjmp_master:
4822       case bp_std_terminate_master:
4823       case bp_exception_master:
4824       case bp_tracepoint:
4825       case bp_fast_tracepoint:
4826       case bp_static_tracepoint:
4827       case bp_jit_event:
4828       case bp_gnu_ifunc_resolver:
4829       case bp_gnu_ifunc_resolver_return:
4830         if (opts.addressprint)
4831           {
4832             annotate_field (4);
4833             if (header_of_multiple)
4834               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
4835             else if (b->loc == NULL || loc->shlib_disabled)
4836               ui_out_field_string (uiout, "addr", "<PENDING>");
4837             else
4838               ui_out_field_core_addr (uiout, "addr",
4839                                       loc->gdbarch, loc->address);
4840           }
4841         annotate_field (5);
4842         if (!header_of_multiple)
4843           print_breakpoint_location (b, loc);
4844         if (b->loc)
4845           *last_loc = b->loc;
4846         break;
4847       }
4848
4849
4850   /* For backward compatibility, don't display inferiors unless there
4851      are several.  */
4852   if (loc != NULL
4853       && !header_of_multiple
4854       && (allflag
4855           || (!gdbarch_has_global_breakpoints (target_gdbarch)
4856               && (number_of_program_spaces () > 1
4857                   || number_of_inferiors () > 1)
4858               /* LOC is for existing B, it cannot be in
4859                  moribund_locations and thus having NULL OWNER.  */
4860               && loc->owner->type != bp_catchpoint)))
4861     {
4862       struct inferior *inf;
4863       int first = 1;
4864
4865       for (inf = inferior_list; inf != NULL; inf = inf->next)
4866         {
4867           if (inf->pspace == loc->pspace)
4868             {
4869               if (first)
4870                 {
4871                   first = 0;
4872                   ui_out_text (uiout, " inf ");
4873                 }
4874               else
4875                 ui_out_text (uiout, ", ");
4876               ui_out_text (uiout, plongest (inf->num));
4877             }
4878         }
4879     }
4880
4881   if (!part_of_multiple)
4882     {
4883       if (b->thread != -1)
4884         {
4885           /* FIXME: This seems to be redundant and lost here; see the
4886              "stop only in" line a little further down.  */
4887           ui_out_text (uiout, " thread ");
4888           ui_out_field_int (uiout, "thread", b->thread);
4889         }
4890       else if (b->task != 0)
4891         {
4892           ui_out_text (uiout, " task ");
4893           ui_out_field_int (uiout, "task", b->task);
4894         }
4895     }
4896
4897   ui_out_text (uiout, "\n");
4898
4899   if (!part_of_multiple)
4900     b->ops->print_one_detail (b, uiout);
4901
4902   if (part_of_multiple && frame_id_p (b->frame_id))
4903     {
4904       annotate_field (6);
4905       ui_out_text (uiout, "\tstop only in stack frame at ");
4906       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
4907          the frame ID.  */
4908       ui_out_field_core_addr (uiout, "frame",
4909                               b->gdbarch, b->frame_id.stack_addr);
4910       ui_out_text (uiout, "\n");
4911     }
4912   
4913   if (!part_of_multiple && b->cond_string)
4914     {
4915       annotate_field (7);
4916       if (is_tracepoint (b))
4917         ui_out_text (uiout, "\ttrace only if ");
4918       else
4919         ui_out_text (uiout, "\tstop only if ");
4920       ui_out_field_string (uiout, "cond", b->cond_string);
4921       ui_out_text (uiout, "\n");
4922     }
4923
4924   if (!part_of_multiple && b->thread != -1)
4925     {
4926       /* FIXME should make an annotation for this.  */
4927       ui_out_text (uiout, "\tstop only in thread ");
4928       ui_out_field_int (uiout, "thread", b->thread);
4929       ui_out_text (uiout, "\n");
4930     }
4931   
4932   if (!part_of_multiple && b->hit_count)
4933     {
4934       /* FIXME should make an annotation for this.  */
4935       if (ep_is_catchpoint (b))
4936         ui_out_text (uiout, "\tcatchpoint");
4937       else if (is_tracepoint (b))
4938         ui_out_text (uiout, "\ttracepoint");
4939       else
4940         ui_out_text (uiout, "\tbreakpoint");
4941       ui_out_text (uiout, " already hit ");
4942       ui_out_field_int (uiout, "times", b->hit_count);
4943       if (b->hit_count == 1)
4944         ui_out_text (uiout, " time\n");
4945       else
4946         ui_out_text (uiout, " times\n");
4947     }
4948   
4949   /* Output the count also if it is zero, but only if this is mi.
4950      FIXME: Should have a better test for this.  */
4951   if (ui_out_is_mi_like_p (uiout))
4952     if (!part_of_multiple && b->hit_count == 0)
4953       ui_out_field_int (uiout, "times", b->hit_count);
4954
4955   if (!part_of_multiple && b->ignore_count)
4956     {
4957       annotate_field (8);
4958       ui_out_text (uiout, "\tignore next ");
4959       ui_out_field_int (uiout, "ignore", b->ignore_count);
4960       ui_out_text (uiout, " hits\n");
4961     }
4962
4963   if (!part_of_multiple && is_tracepoint (b))
4964     {
4965       struct tracepoint *tp = (struct tracepoint *) b;
4966
4967       if (tp->traceframe_usage)
4968         {
4969           ui_out_text (uiout, "\ttrace buffer usage ");
4970           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
4971           ui_out_text (uiout, " bytes\n");
4972         }
4973     }
4974   
4975   l = b->commands ? b->commands->commands : NULL;
4976   if (!part_of_multiple && l)
4977     {
4978       struct cleanup *script_chain;
4979
4980       annotate_field (9);
4981       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
4982       print_command_lines (uiout, l, 4);
4983       do_cleanups (script_chain);
4984     }
4985
4986   if (is_tracepoint (b))
4987     {
4988       struct tracepoint *t = (struct tracepoint *) b;
4989
4990       if (!part_of_multiple && t->pass_count)
4991         {
4992           annotate_field (10);
4993           ui_out_text (uiout, "\tpass count ");
4994           ui_out_field_int (uiout, "pass", t->pass_count);
4995           ui_out_text (uiout, " \n");
4996         }
4997     }
4998
4999   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
5000     {
5001       if (is_watchpoint (b))
5002         {
5003           struct watchpoint *w = (struct watchpoint *) b;
5004
5005           ui_out_field_string (uiout, "original-location", w->exp_string);
5006         }
5007       else if (b->addr_string)
5008         ui_out_field_string (uiout, "original-location", b->addr_string);
5009     }
5010 }
5011
5012 static void
5013 print_one_breakpoint (struct breakpoint *b,
5014                       struct bp_location **last_loc, 
5015                       int allflag)
5016 {
5017   struct cleanup *bkpt_chain;
5018   struct ui_out *uiout = current_uiout;
5019
5020   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
5021
5022   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
5023   do_cleanups (bkpt_chain);
5024
5025   /* If this breakpoint has custom print function,
5026      it's already printed.  Otherwise, print individual
5027      locations, if any.  */
5028   if (b->ops == NULL || b->ops->print_one == NULL)
5029     {
5030       /* If breakpoint has a single location that is disabled, we
5031          print it as if it had several locations, since otherwise it's
5032          hard to represent "breakpoint enabled, location disabled"
5033          situation.
5034
5035          Note that while hardware watchpoints have several locations
5036          internally, that's not a property exposed to user.  */
5037       if (b->loc 
5038           && !is_hardware_watchpoint (b)
5039           && (b->loc->next || !b->loc->enabled))
5040         {
5041           struct bp_location *loc;
5042           int n = 1;
5043
5044           for (loc = b->loc; loc; loc = loc->next, ++n)
5045             {
5046               struct cleanup *inner2 =
5047                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
5048               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
5049               do_cleanups (inner2);
5050             }
5051         }
5052     }
5053 }
5054
5055 static int
5056 breakpoint_address_bits (struct breakpoint *b)
5057 {
5058   int print_address_bits = 0;
5059   struct bp_location *loc;
5060
5061   for (loc = b->loc; loc; loc = loc->next)
5062     {
5063       int addr_bit;
5064
5065       /* Software watchpoints that aren't watching memory don't have
5066          an address to print.  */
5067       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
5068         continue;
5069
5070       addr_bit = gdbarch_addr_bit (loc->gdbarch);
5071       if (addr_bit > print_address_bits)
5072         print_address_bits = addr_bit;
5073     }
5074
5075   return print_address_bits;
5076 }
5077
5078 struct captured_breakpoint_query_args
5079   {
5080     int bnum;
5081   };
5082
5083 static int
5084 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
5085 {
5086   struct captured_breakpoint_query_args *args = data;
5087   struct breakpoint *b;
5088   struct bp_location *dummy_loc = NULL;
5089
5090   ALL_BREAKPOINTS (b)
5091     {
5092       if (args->bnum == b->number)
5093         {
5094           print_one_breakpoint (b, &dummy_loc, 0);
5095           return GDB_RC_OK;
5096         }
5097     }
5098   return GDB_RC_NONE;
5099 }
5100
5101 enum gdb_rc
5102 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
5103                       char **error_message)
5104 {
5105   struct captured_breakpoint_query_args args;
5106
5107   args.bnum = bnum;
5108   /* For the moment we don't trust print_one_breakpoint() to not throw
5109      an error.  */
5110   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
5111                                  error_message, RETURN_MASK_ALL) < 0)
5112     return GDB_RC_FAIL;
5113   else
5114     return GDB_RC_OK;
5115 }
5116
5117 /* Return true if this breakpoint was set by the user, false if it is
5118    internal or momentary.  */
5119
5120 int
5121 user_breakpoint_p (struct breakpoint *b)
5122 {
5123   return b->number > 0;
5124 }
5125
5126 /* Print information on user settable breakpoint (watchpoint, etc)
5127    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
5128    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
5129    FILTER is non-NULL, call it on each breakpoint and only include the
5130    ones for which it returns non-zero.  Return the total number of
5131    breakpoints listed.  */
5132
5133 static int
5134 breakpoint_1 (char *args, int allflag, 
5135               int (*filter) (const struct breakpoint *))
5136 {
5137   struct breakpoint *b;
5138   struct bp_location *last_loc = NULL;
5139   int nr_printable_breakpoints;
5140   struct cleanup *bkpttbl_chain;
5141   struct value_print_options opts;
5142   int print_address_bits = 0;
5143   int print_type_col_width = 14;
5144   struct ui_out *uiout = current_uiout;
5145
5146   get_user_print_options (&opts);
5147
5148   /* Compute the number of rows in the table, as well as the size
5149      required for address fields.  */
5150   nr_printable_breakpoints = 0;
5151   ALL_BREAKPOINTS (b)
5152     {
5153       /* If we have a filter, only list the breakpoints it accepts.  */
5154       if (filter && !filter (b))
5155         continue;
5156
5157       /* If we have an "args" string, it is a list of breakpoints to 
5158          accept.  Skip the others.  */
5159       if (args != NULL && *args != '\0')
5160         {
5161           if (allflag && parse_and_eval_long (args) != b->number)
5162             continue;
5163           if (!allflag && !number_is_in_list (args, b->number))
5164             continue;
5165         }
5166
5167       if (allflag || user_breakpoint_p (b))
5168         {
5169           int addr_bit, type_len;
5170
5171           addr_bit = breakpoint_address_bits (b);
5172           if (addr_bit > print_address_bits)
5173             print_address_bits = addr_bit;
5174
5175           type_len = strlen (bptype_string (b->type));
5176           if (type_len > print_type_col_width)
5177             print_type_col_width = type_len;
5178
5179           nr_printable_breakpoints++;
5180         }
5181     }
5182
5183   if (opts.addressprint)
5184     bkpttbl_chain 
5185       = make_cleanup_ui_out_table_begin_end (uiout, 6,
5186                                              nr_printable_breakpoints,
5187                                              "BreakpointTable");
5188   else
5189     bkpttbl_chain 
5190       = make_cleanup_ui_out_table_begin_end (uiout, 5,
5191                                              nr_printable_breakpoints,
5192                                              "BreakpointTable");
5193
5194   if (nr_printable_breakpoints > 0)
5195     annotate_breakpoints_headers ();
5196   if (nr_printable_breakpoints > 0)
5197     annotate_field (0);
5198   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
5199   if (nr_printable_breakpoints > 0)
5200     annotate_field (1);
5201   ui_out_table_header (uiout, print_type_col_width, ui_left,
5202                        "type", "Type");                         /* 2 */
5203   if (nr_printable_breakpoints > 0)
5204     annotate_field (2);
5205   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
5206   if (nr_printable_breakpoints > 0)
5207     annotate_field (3);
5208   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
5209   if (opts.addressprint)
5210     {
5211       if (nr_printable_breakpoints > 0)
5212         annotate_field (4);
5213       if (print_address_bits <= 32)
5214         ui_out_table_header (uiout, 10, ui_left, 
5215                              "addr", "Address");                /* 5 */
5216       else
5217         ui_out_table_header (uiout, 18, ui_left, 
5218                              "addr", "Address");                /* 5 */
5219     }
5220   if (nr_printable_breakpoints > 0)
5221     annotate_field (5);
5222   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
5223   ui_out_table_body (uiout);
5224   if (nr_printable_breakpoints > 0)
5225     annotate_breakpoints_table ();
5226
5227   ALL_BREAKPOINTS (b)
5228     {
5229       QUIT;
5230       /* If we have a filter, only list the breakpoints it accepts.  */
5231       if (filter && !filter (b))
5232         continue;
5233
5234       /* If we have an "args" string, it is a list of breakpoints to 
5235          accept.  Skip the others.  */
5236
5237       if (args != NULL && *args != '\0')
5238         {
5239           if (allflag)  /* maintenance info breakpoint */
5240             {
5241               if (parse_and_eval_long (args) != b->number)
5242                 continue;
5243             }
5244           else          /* all others */
5245             {
5246               if (!number_is_in_list (args, b->number))
5247                 continue;
5248             }
5249         }
5250       /* We only print out user settable breakpoints unless the
5251          allflag is set.  */
5252       if (allflag || user_breakpoint_p (b))
5253         print_one_breakpoint (b, &last_loc, allflag);
5254     }
5255
5256   do_cleanups (bkpttbl_chain);
5257
5258   if (nr_printable_breakpoints == 0)
5259     {
5260       /* If there's a filter, let the caller decide how to report
5261          empty list.  */
5262       if (!filter)
5263         {
5264           if (args == NULL || *args == '\0')
5265             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
5266           else
5267             ui_out_message (uiout, 0, 
5268                             "No breakpoint or watchpoint matching '%s'.\n",
5269                             args);
5270         }
5271     }
5272   else
5273     {
5274       if (last_loc && !server_command)
5275         set_next_address (last_loc->gdbarch, last_loc->address);
5276     }
5277
5278   /* FIXME?  Should this be moved up so that it is only called when
5279      there have been breakpoints? */
5280   annotate_breakpoints_table_end ();
5281
5282   return nr_printable_breakpoints;
5283 }
5284
5285 /* Display the value of default-collect in a way that is generally
5286    compatible with the breakpoint list.  */
5287
5288 static void
5289 default_collect_info (void)
5290 {
5291   struct ui_out *uiout = current_uiout;
5292
5293   /* If it has no value (which is frequently the case), say nothing; a
5294      message like "No default-collect." gets in user's face when it's
5295      not wanted.  */
5296   if (!*default_collect)
5297     return;
5298
5299   /* The following phrase lines up nicely with per-tracepoint collect
5300      actions.  */
5301   ui_out_text (uiout, "default collect ");
5302   ui_out_field_string (uiout, "default-collect", default_collect);
5303   ui_out_text (uiout, " \n");
5304 }
5305   
5306 static void
5307 breakpoints_info (char *args, int from_tty)
5308 {
5309   breakpoint_1 (args, 0, NULL);
5310
5311   default_collect_info ();
5312 }
5313
5314 static void
5315 watchpoints_info (char *args, int from_tty)
5316 {
5317   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
5318   struct ui_out *uiout = current_uiout;
5319
5320   if (num_printed == 0)
5321     {
5322       if (args == NULL || *args == '\0')
5323         ui_out_message (uiout, 0, "No watchpoints.\n");
5324       else
5325         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
5326     }
5327 }
5328
5329 static void
5330 maintenance_info_breakpoints (char *args, int from_tty)
5331 {
5332   breakpoint_1 (args, 1, NULL);
5333
5334   default_collect_info ();
5335 }
5336
5337 static int
5338 breakpoint_has_pc (struct breakpoint *b,
5339                    struct program_space *pspace,
5340                    CORE_ADDR pc, struct obj_section *section)
5341 {
5342   struct bp_location *bl = b->loc;
5343
5344   for (; bl; bl = bl->next)
5345     {
5346       if (bl->pspace == pspace
5347           && bl->address == pc
5348           && (!overlay_debugging || bl->section == section))
5349         return 1;         
5350     }
5351   return 0;
5352 }
5353
5354 /* Print a message describing any user-breakpoints set at PC.  This
5355    concerns with logical breakpoints, so we match program spaces, not
5356    address spaces.  */
5357
5358 static void
5359 describe_other_breakpoints (struct gdbarch *gdbarch,
5360                             struct program_space *pspace, CORE_ADDR pc,
5361                             struct obj_section *section, int thread)
5362 {
5363   int others = 0;
5364   struct breakpoint *b;
5365
5366   ALL_BREAKPOINTS (b)
5367     others += (user_breakpoint_p (b)
5368                && breakpoint_has_pc (b, pspace, pc, section));
5369   if (others > 0)
5370     {
5371       if (others == 1)
5372         printf_filtered (_("Note: breakpoint "));
5373       else /* if (others == ???) */
5374         printf_filtered (_("Note: breakpoints "));
5375       ALL_BREAKPOINTS (b)
5376         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
5377           {
5378             others--;
5379             printf_filtered ("%d", b->number);
5380             if (b->thread == -1 && thread != -1)
5381               printf_filtered (" (all threads)");
5382             else if (b->thread != -1)
5383               printf_filtered (" (thread %d)", b->thread);
5384             printf_filtered ("%s%s ",
5385                              ((b->enable_state == bp_disabled
5386                                || b->enable_state == bp_call_disabled)
5387                               ? " (disabled)"
5388                               : b->enable_state == bp_permanent 
5389                               ? " (permanent)"
5390                               : ""),
5391                              (others > 1) ? "," 
5392                              : ((others == 1) ? " and" : ""));
5393           }
5394       printf_filtered (_("also set at pc "));
5395       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
5396       printf_filtered (".\n");
5397     }
5398 }
5399 \f
5400
5401 /* Return true iff it is meaningful to use the address member of
5402    BPT.  For some breakpoint types, the address member is irrelevant
5403    and it makes no sense to attempt to compare it to other addresses
5404    (or use it for any other purpose either).
5405
5406    More specifically, each of the following breakpoint types will
5407    always have a zero valued address and we don't want to mark
5408    breakpoints of any of these types to be a duplicate of an actual
5409    breakpoint at address zero:
5410
5411       bp_watchpoint
5412       bp_catchpoint
5413
5414 */
5415
5416 static int
5417 breakpoint_address_is_meaningful (struct breakpoint *bpt)
5418 {
5419   enum bptype type = bpt->type;
5420
5421   return (type != bp_watchpoint && type != bp_catchpoint);
5422 }
5423
5424 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
5425    true if LOC1 and LOC2 represent the same watchpoint location.  */
5426
5427 static int
5428 watchpoint_locations_match (struct bp_location *loc1, 
5429                             struct bp_location *loc2)
5430 {
5431   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
5432   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
5433
5434   /* Both of them must exist.  */
5435   gdb_assert (w1 != NULL);
5436   gdb_assert (w2 != NULL);
5437
5438   /* If the target can evaluate the condition expression in hardware,
5439      then we we need to insert both watchpoints even if they are at
5440      the same place.  Otherwise the watchpoint will only trigger when
5441      the condition of whichever watchpoint was inserted evaluates to
5442      true, not giving a chance for GDB to check the condition of the
5443      other watchpoint.  */
5444   if ((w1->cond_exp
5445        && target_can_accel_watchpoint_condition (loc1->address, 
5446                                                  loc1->length,
5447                                                  loc1->watchpoint_type,
5448                                                  w1->cond_exp))
5449       || (w2->cond_exp
5450           && target_can_accel_watchpoint_condition (loc2->address, 
5451                                                     loc2->length,
5452                                                     loc2->watchpoint_type,
5453                                                     w2->cond_exp)))
5454     return 0;
5455
5456   /* Note that this checks the owner's type, not the location's.  In
5457      case the target does not support read watchpoints, but does
5458      support access watchpoints, we'll have bp_read_watchpoint
5459      watchpoints with hw_access locations.  Those should be considered
5460      duplicates of hw_read locations.  The hw_read locations will
5461      become hw_access locations later.  */
5462   return (loc1->owner->type == loc2->owner->type
5463           && loc1->pspace->aspace == loc2->pspace->aspace
5464           && loc1->address == loc2->address
5465           && loc1->length == loc2->length);
5466 }
5467
5468 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
5469    same breakpoint location.  In most targets, this can only be true
5470    if ASPACE1 matches ASPACE2.  On targets that have global
5471    breakpoints, the address space doesn't really matter.  */
5472
5473 static int
5474 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
5475                           struct address_space *aspace2, CORE_ADDR addr2)
5476 {
5477   return ((gdbarch_has_global_breakpoints (target_gdbarch)
5478            || aspace1 == aspace2)
5479           && addr1 == addr2);
5480 }
5481
5482 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
5483    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
5484    matches ASPACE2.  On targets that have global breakpoints, the address
5485    space doesn't really matter.  */
5486
5487 static int
5488 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
5489                                 int len1, struct address_space *aspace2,
5490                                 CORE_ADDR addr2)
5491 {
5492   return ((gdbarch_has_global_breakpoints (target_gdbarch)
5493            || aspace1 == aspace2)
5494           && addr2 >= addr1 && addr2 < addr1 + len1);
5495 }
5496
5497 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
5498    a ranged breakpoint.  In most targets, a match happens only if ASPACE
5499    matches the breakpoint's address space.  On targets that have global
5500    breakpoints, the address space doesn't really matter.  */
5501
5502 static int
5503 breakpoint_location_address_match (struct bp_location *bl,
5504                                    struct address_space *aspace,
5505                                    CORE_ADDR addr)
5506 {
5507   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
5508                                     aspace, addr)
5509           || (bl->length
5510               && breakpoint_address_match_range (bl->pspace->aspace,
5511                                                  bl->address, bl->length,
5512                                                  aspace, addr)));
5513 }
5514
5515 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
5516    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
5517    true, otherwise returns false.  */
5518
5519 static int
5520 tracepoint_locations_match (struct bp_location *loc1,
5521                             struct bp_location *loc2)
5522 {
5523   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
5524     /* Since tracepoint locations are never duplicated with others', tracepoint
5525        locations at the same address of different tracepoints are regarded as
5526        different locations.  */
5527     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
5528   else
5529     return 0;
5530 }
5531
5532 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
5533    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
5534    represent the same location.  */
5535
5536 static int
5537 breakpoint_locations_match (struct bp_location *loc1, 
5538                             struct bp_location *loc2)
5539 {
5540   int hw_point1, hw_point2;
5541
5542   /* Both of them must not be in moribund_locations.  */
5543   gdb_assert (loc1->owner != NULL);
5544   gdb_assert (loc2->owner != NULL);
5545
5546   hw_point1 = is_hardware_watchpoint (loc1->owner);
5547   hw_point2 = is_hardware_watchpoint (loc2->owner);
5548
5549   if (hw_point1 != hw_point2)
5550     return 0;
5551   else if (hw_point1)
5552     return watchpoint_locations_match (loc1, loc2);
5553   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
5554     return tracepoint_locations_match (loc1, loc2);
5555   else
5556     /* We compare bp_location.length in order to cover ranged breakpoints.  */
5557     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
5558                                      loc2->pspace->aspace, loc2->address)
5559             && loc1->length == loc2->length);
5560 }
5561
5562 static void
5563 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
5564                                int bnum, int have_bnum)
5565 {
5566   /* The longest string possibly returned by hex_string_custom
5567      is 50 chars.  These must be at least that big for safety.  */
5568   char astr1[64];
5569   char astr2[64];
5570
5571   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
5572   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
5573   if (have_bnum)
5574     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
5575              bnum, astr1, astr2);
5576   else
5577     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
5578 }
5579
5580 /* Adjust a breakpoint's address to account for architectural
5581    constraints on breakpoint placement.  Return the adjusted address.
5582    Note: Very few targets require this kind of adjustment.  For most
5583    targets, this function is simply the identity function.  */
5584
5585 static CORE_ADDR
5586 adjust_breakpoint_address (struct gdbarch *gdbarch,
5587                            CORE_ADDR bpaddr, enum bptype bptype)
5588 {
5589   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
5590     {
5591       /* Very few targets need any kind of breakpoint adjustment.  */
5592       return bpaddr;
5593     }
5594   else if (bptype == bp_watchpoint
5595            || bptype == bp_hardware_watchpoint
5596            || bptype == bp_read_watchpoint
5597            || bptype == bp_access_watchpoint
5598            || bptype == bp_catchpoint)
5599     {
5600       /* Watchpoints and the various bp_catch_* eventpoints should not
5601          have their addresses modified.  */
5602       return bpaddr;
5603     }
5604   else
5605     {
5606       CORE_ADDR adjusted_bpaddr;
5607
5608       /* Some targets have architectural constraints on the placement
5609          of breakpoint instructions.  Obtain the adjusted address.  */
5610       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
5611
5612       /* An adjusted breakpoint address can significantly alter
5613          a user's expectations.  Print a warning if an adjustment
5614          is required.  */
5615       if (adjusted_bpaddr != bpaddr)
5616         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
5617
5618       return adjusted_bpaddr;
5619     }
5620 }
5621
5622 void
5623 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
5624                   struct breakpoint *owner)
5625 {
5626   memset (loc, 0, sizeof (*loc));
5627
5628   gdb_assert (ops != NULL);
5629
5630   loc->ops = ops;
5631   loc->owner = owner;
5632   loc->cond = NULL;
5633   loc->shlib_disabled = 0;
5634   loc->enabled = 1;
5635
5636   switch (owner->type)
5637     {
5638     case bp_breakpoint:
5639     case bp_until:
5640     case bp_finish:
5641     case bp_longjmp:
5642     case bp_longjmp_resume:
5643     case bp_exception:
5644     case bp_exception_resume:
5645     case bp_step_resume:
5646     case bp_hp_step_resume:
5647     case bp_watchpoint_scope:
5648     case bp_call_dummy:
5649     case bp_std_terminate:
5650     case bp_shlib_event:
5651     case bp_thread_event:
5652     case bp_overlay_event:
5653     case bp_jit_event:
5654     case bp_longjmp_master:
5655     case bp_std_terminate_master:
5656     case bp_exception_master:
5657     case bp_gnu_ifunc_resolver:
5658     case bp_gnu_ifunc_resolver_return:
5659       loc->loc_type = bp_loc_software_breakpoint;
5660       break;
5661     case bp_hardware_breakpoint:
5662       loc->loc_type = bp_loc_hardware_breakpoint;
5663       break;
5664     case bp_hardware_watchpoint:
5665     case bp_read_watchpoint:
5666     case bp_access_watchpoint:
5667       loc->loc_type = bp_loc_hardware_watchpoint;
5668       break;
5669     case bp_watchpoint:
5670     case bp_catchpoint:
5671     case bp_tracepoint:
5672     case bp_fast_tracepoint:
5673     case bp_static_tracepoint:
5674       loc->loc_type = bp_loc_other;
5675       break;
5676     default:
5677       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
5678     }
5679
5680   loc->refc = 1;
5681 }
5682
5683 /* Allocate a struct bp_location.  */
5684
5685 static struct bp_location *
5686 allocate_bp_location (struct breakpoint *bpt)
5687 {
5688   return bpt->ops->allocate_location (bpt);
5689 }
5690
5691 static void
5692 free_bp_location (struct bp_location *loc)
5693 {
5694   loc->ops->dtor (loc);
5695   xfree (loc);
5696 }
5697
5698 /* Increment reference count.  */
5699
5700 static void
5701 incref_bp_location (struct bp_location *bl)
5702 {
5703   ++bl->refc;
5704 }
5705
5706 /* Decrement reference count.  If the reference count reaches 0,
5707    destroy the bp_location.  Sets *BLP to NULL.  */
5708
5709 static void
5710 decref_bp_location (struct bp_location **blp)
5711 {
5712   gdb_assert ((*blp)->refc > 0);
5713
5714   if (--(*blp)->refc == 0)
5715     free_bp_location (*blp);
5716   *blp = NULL;
5717 }
5718
5719 /* Add breakpoint B at the end of the global breakpoint chain.  */
5720
5721 static void
5722 add_to_breakpoint_chain (struct breakpoint *b)
5723 {
5724   struct breakpoint *b1;
5725
5726   /* Add this breakpoint to the end of the chain so that a list of
5727      breakpoints will come out in order of increasing numbers.  */
5728
5729   b1 = breakpoint_chain;
5730   if (b1 == 0)
5731     breakpoint_chain = b;
5732   else
5733     {
5734       while (b1->next)
5735         b1 = b1->next;
5736       b1->next = b;
5737     }
5738 }
5739
5740 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
5741
5742 static void
5743 init_raw_breakpoint_without_location (struct breakpoint *b,
5744                                       struct gdbarch *gdbarch,
5745                                       enum bptype bptype,
5746                                       const struct breakpoint_ops *ops)
5747 {
5748   memset (b, 0, sizeof (*b));
5749
5750   gdb_assert (ops != NULL);
5751
5752   b->ops = ops;
5753   b->type = bptype;
5754   b->gdbarch = gdbarch;
5755   b->language = current_language->la_language;
5756   b->input_radix = input_radix;
5757   b->thread = -1;
5758   b->enable_state = bp_enabled;
5759   b->next = 0;
5760   b->silent = 0;
5761   b->ignore_count = 0;
5762   b->commands = NULL;
5763   b->frame_id = null_frame_id;
5764   b->condition_not_parsed = 0;
5765   b->py_bp_object = NULL;
5766   b->related_breakpoint = b;
5767 }
5768
5769 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
5770    that has type BPTYPE and has no locations as yet.  */
5771
5772 static struct breakpoint *
5773 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
5774                                      enum bptype bptype,
5775                                      const struct breakpoint_ops *ops)
5776 {
5777   struct breakpoint *b = XNEW (struct breakpoint);
5778
5779   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
5780   add_to_breakpoint_chain (b);
5781   return b;
5782 }
5783
5784 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
5785    resolutions should be made as the user specified the location explicitly
5786    enough.  */
5787
5788 static void
5789 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
5790 {
5791   gdb_assert (loc->owner != NULL);
5792
5793   if (loc->owner->type == bp_breakpoint
5794       || loc->owner->type == bp_hardware_breakpoint
5795       || is_tracepoint (loc->owner))
5796     {
5797       int is_gnu_ifunc;
5798
5799       find_pc_partial_function_gnu_ifunc (loc->address, &loc->function_name,
5800                                           NULL, NULL, &is_gnu_ifunc);
5801
5802       if (is_gnu_ifunc && !explicit_loc)
5803         {
5804           struct breakpoint *b = loc->owner;
5805
5806           gdb_assert (loc->pspace == current_program_space);
5807           if (gnu_ifunc_resolve_name (loc->function_name,
5808                                       &loc->requested_address))
5809             {
5810               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
5811               loc->address = adjust_breakpoint_address (loc->gdbarch,
5812                                                         loc->requested_address,
5813                                                         b->type);
5814             }
5815           else if (b->type == bp_breakpoint && b->loc == loc
5816                    && loc->next == NULL && b->related_breakpoint == b)
5817             {
5818               /* Create only the whole new breakpoint of this type but do not
5819                  mess more complicated breakpoints with multiple locations.  */
5820               b->type = bp_gnu_ifunc_resolver;
5821             }
5822         }
5823
5824       if (loc->function_name)
5825         loc->function_name = xstrdup (loc->function_name);
5826     }
5827 }
5828
5829 /* Attempt to determine architecture of location identified by SAL.  */
5830 struct gdbarch *
5831 get_sal_arch (struct symtab_and_line sal)
5832 {
5833   if (sal.section)
5834     return get_objfile_arch (sal.section->objfile);
5835   if (sal.symtab)
5836     return get_objfile_arch (sal.symtab->objfile);
5837
5838   return NULL;
5839 }
5840
5841 /* Low level routine for partially initializing a breakpoint of type
5842    BPTYPE.  The newly created breakpoint's address, section, source
5843    file name, and line number are provided by SAL.
5844
5845    It is expected that the caller will complete the initialization of
5846    the newly created breakpoint struct as well as output any status
5847    information regarding the creation of a new breakpoint.  */
5848
5849 static void
5850 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
5851                      struct symtab_and_line sal, enum bptype bptype,
5852                      const struct breakpoint_ops *ops)
5853 {
5854   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
5855
5856   add_location_to_breakpoint (b, &sal);
5857
5858   if (bptype != bp_catchpoint)
5859     gdb_assert (sal.pspace != NULL);
5860
5861   /* Store the program space that was used to set the breakpoint,
5862      except for ordinary breakpoints, which are independent of the
5863      program space.  */
5864   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
5865     b->pspace = sal.pspace;
5866
5867   breakpoints_changed ();
5868 }
5869
5870 /* set_raw_breakpoint is a low level routine for allocating and
5871    partially initializing a breakpoint of type BPTYPE.  The newly
5872    created breakpoint's address, section, source file name, and line
5873    number are provided by SAL.  The newly created and partially
5874    initialized breakpoint is added to the breakpoint chain and
5875    is also returned as the value of this function.
5876
5877    It is expected that the caller will complete the initialization of
5878    the newly created breakpoint struct as well as output any status
5879    information regarding the creation of a new breakpoint.  In
5880    particular, set_raw_breakpoint does NOT set the breakpoint
5881    number!  Care should be taken to not allow an error to occur
5882    prior to completing the initialization of the breakpoint.  If this
5883    should happen, a bogus breakpoint will be left on the chain.  */
5884
5885 struct breakpoint *
5886 set_raw_breakpoint (struct gdbarch *gdbarch,
5887                     struct symtab_and_line sal, enum bptype bptype,
5888                     const struct breakpoint_ops *ops)
5889 {
5890   struct breakpoint *b = XNEW (struct breakpoint);
5891
5892   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
5893   add_to_breakpoint_chain (b);
5894   return b;
5895 }
5896
5897
5898 /* Note that the breakpoint object B describes a permanent breakpoint
5899    instruction, hard-wired into the inferior's code.  */
5900 void
5901 make_breakpoint_permanent (struct breakpoint *b)
5902 {
5903   struct bp_location *bl;
5904
5905   b->enable_state = bp_permanent;
5906
5907   /* By definition, permanent breakpoints are already present in the
5908      code.  Mark all locations as inserted.  For now,
5909      make_breakpoint_permanent is called in just one place, so it's
5910      hard to say if it's reasonable to have permanent breakpoint with
5911      multiple locations or not, but it's easy to implement.  */
5912   for (bl = b->loc; bl; bl = bl->next)
5913     bl->inserted = 1;
5914 }
5915
5916 /* Call this routine when stepping and nexting to enable a breakpoint
5917    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
5918    initiated the operation.  */
5919
5920 void
5921 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
5922 {
5923   struct breakpoint *b, *b_tmp;
5924   int thread = tp->num;
5925
5926   /* To avoid having to rescan all objfile symbols at every step,
5927      we maintain a list of continually-inserted but always disabled
5928      longjmp "master" breakpoints.  Here, we simply create momentary
5929      clones of those and enable them for the requested thread.  */
5930   ALL_BREAKPOINTS_SAFE (b, b_tmp)
5931     if (b->pspace == current_program_space
5932         && (b->type == bp_longjmp_master
5933             || b->type == bp_exception_master))
5934       {
5935         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
5936         struct breakpoint *clone;
5937
5938         clone = momentary_breakpoint_from_master (b, type,
5939                                                   &momentary_breakpoint_ops);
5940         clone->thread = thread;
5941       }
5942
5943   tp->initiating_frame = frame;
5944 }
5945
5946 /* Delete all longjmp breakpoints from THREAD.  */
5947 void
5948 delete_longjmp_breakpoint (int thread)
5949 {
5950   struct breakpoint *b, *b_tmp;
5951
5952   ALL_BREAKPOINTS_SAFE (b, b_tmp)
5953     if (b->type == bp_longjmp || b->type == bp_exception)
5954       {
5955         if (b->thread == thread)
5956           delete_breakpoint (b);
5957       }
5958 }
5959
5960 void
5961 enable_overlay_breakpoints (void)
5962 {
5963   struct breakpoint *b;
5964
5965   ALL_BREAKPOINTS (b)
5966     if (b->type == bp_overlay_event)
5967     {
5968       b->enable_state = bp_enabled;
5969       update_global_location_list (1);
5970       overlay_events_enabled = 1;
5971     }
5972 }
5973
5974 void
5975 disable_overlay_breakpoints (void)
5976 {
5977   struct breakpoint *b;
5978
5979   ALL_BREAKPOINTS (b)
5980     if (b->type == bp_overlay_event)
5981     {
5982       b->enable_state = bp_disabled;
5983       update_global_location_list (0);
5984       overlay_events_enabled = 0;
5985     }
5986 }
5987
5988 /* Set an active std::terminate breakpoint for each std::terminate
5989    master breakpoint.  */
5990 void
5991 set_std_terminate_breakpoint (void)
5992 {
5993   struct breakpoint *b, *b_tmp;
5994
5995   ALL_BREAKPOINTS_SAFE (b, b_tmp)
5996     if (b->pspace == current_program_space
5997         && b->type == bp_std_terminate_master)
5998       {
5999         momentary_breakpoint_from_master (b, bp_std_terminate,
6000                                           &momentary_breakpoint_ops);
6001       }
6002 }
6003
6004 /* Delete all the std::terminate breakpoints.  */
6005 void
6006 delete_std_terminate_breakpoint (void)
6007 {
6008   struct breakpoint *b, *b_tmp;
6009
6010   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6011     if (b->type == bp_std_terminate)
6012       delete_breakpoint (b);
6013 }
6014
6015 struct breakpoint *
6016 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6017 {
6018   struct breakpoint *b;
6019
6020   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
6021                                   &internal_breakpoint_ops);
6022
6023   b->enable_state = bp_enabled;
6024   /* addr_string has to be used or breakpoint_re_set will delete me.  */
6025   b->addr_string
6026     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
6027
6028   update_global_location_list_nothrow (1);
6029
6030   return b;
6031 }
6032
6033 void
6034 remove_thread_event_breakpoints (void)
6035 {
6036   struct breakpoint *b, *b_tmp;
6037
6038   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6039     if (b->type == bp_thread_event
6040         && b->loc->pspace == current_program_space)
6041       delete_breakpoint (b);
6042 }
6043
6044 struct lang_and_radix
6045   {
6046     enum language lang;
6047     int radix;
6048   };
6049
6050 /* Create a breakpoint for JIT code registration and unregistration.  */
6051
6052 struct breakpoint *
6053 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6054 {
6055   struct breakpoint *b;
6056
6057   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
6058                                   &internal_breakpoint_ops);
6059   update_global_location_list_nothrow (1);
6060   return b;
6061 }
6062
6063 /* Remove JIT code registration and unregistration breakpoint(s).  */
6064
6065 void
6066 remove_jit_event_breakpoints (void)
6067 {
6068   struct breakpoint *b, *b_tmp;
6069
6070   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6071     if (b->type == bp_jit_event
6072         && b->loc->pspace == current_program_space)
6073       delete_breakpoint (b);
6074 }
6075
6076 void
6077 remove_solib_event_breakpoints (void)
6078 {
6079   struct breakpoint *b, *b_tmp;
6080
6081   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6082     if (b->type == bp_shlib_event
6083         && b->loc->pspace == current_program_space)
6084       delete_breakpoint (b);
6085 }
6086
6087 struct breakpoint *
6088 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6089 {
6090   struct breakpoint *b;
6091
6092   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
6093                                   &internal_breakpoint_ops);
6094   update_global_location_list_nothrow (1);
6095   return b;
6096 }
6097
6098 /* Disable any breakpoints that are on code in shared libraries.  Only
6099    apply to enabled breakpoints, disabled ones can just stay disabled.  */
6100
6101 void
6102 disable_breakpoints_in_shlibs (void)
6103 {
6104   struct bp_location *loc, **locp_tmp;
6105
6106   ALL_BP_LOCATIONS (loc, locp_tmp)
6107   {
6108     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6109     struct breakpoint *b = loc->owner;
6110
6111     /* We apply the check to all breakpoints, including disabled for
6112        those with loc->duplicate set.  This is so that when breakpoint
6113        becomes enabled, or the duplicate is removed, gdb will try to
6114        insert all breakpoints.  If we don't set shlib_disabled here,
6115        we'll try to insert those breakpoints and fail.  */
6116     if (((b->type == bp_breakpoint)
6117          || (b->type == bp_jit_event)
6118          || (b->type == bp_hardware_breakpoint)
6119          || (is_tracepoint (b)))
6120         && loc->pspace == current_program_space
6121         && !loc->shlib_disabled
6122 #ifdef PC_SOLIB
6123         && PC_SOLIB (loc->address)
6124 #else
6125         && solib_name_from_address (loc->pspace, loc->address)
6126 #endif
6127         )
6128       {
6129         loc->shlib_disabled = 1;
6130       }
6131   }
6132 }
6133
6134 /* Disable any breakpoints and tracepoints that are in an unloaded shared
6135    library.  Only apply to enabled breakpoints, disabled ones can just stay
6136    disabled.  */
6137
6138 static void
6139 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
6140 {
6141   struct bp_location *loc, **locp_tmp;
6142   int disabled_shlib_breaks = 0;
6143
6144   /* SunOS a.out shared libraries are always mapped, so do not
6145      disable breakpoints; they will only be reported as unloaded
6146      through clear_solib when GDB discards its shared library
6147      list.  See clear_solib for more information.  */
6148   if (exec_bfd != NULL
6149       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
6150     return;
6151
6152   ALL_BP_LOCATIONS (loc, locp_tmp)
6153   {
6154     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6155     struct breakpoint *b = loc->owner;
6156
6157     if (solib->pspace == loc->pspace
6158         && !loc->shlib_disabled
6159         && (((b->type == bp_breakpoint
6160               || b->type == bp_jit_event
6161               || b->type == bp_hardware_breakpoint)
6162              && (loc->loc_type == bp_loc_hardware_breakpoint
6163                  || loc->loc_type == bp_loc_software_breakpoint))
6164             || is_tracepoint (b))
6165         && solib_contains_address_p (solib, loc->address))
6166       {
6167         loc->shlib_disabled = 1;
6168         /* At this point, we cannot rely on remove_breakpoint
6169            succeeding so we must mark the breakpoint as not inserted
6170            to prevent future errors occurring in remove_breakpoints.  */
6171         loc->inserted = 0;
6172
6173         /* This may cause duplicate notifications for the same breakpoint.  */
6174         observer_notify_breakpoint_modified (b);
6175
6176         if (!disabled_shlib_breaks)
6177           {
6178             target_terminal_ours_for_output ();
6179             warning (_("Temporarily disabling breakpoints "
6180                        "for unloaded shared library \"%s\""),
6181                      solib->so_name);
6182           }
6183         disabled_shlib_breaks = 1;
6184       }
6185   }
6186 }
6187
6188 /* FORK & VFORK catchpoints.  */
6189
6190 /* An instance of this type is used to represent a fork or vfork
6191    catchpoint.  It includes a "struct breakpoint" as a kind of base
6192    class; users downcast to "struct breakpoint *" when needed.  A
6193    breakpoint is really of this type iff its ops pointer points to
6194    CATCH_FORK_BREAKPOINT_OPS.  */
6195
6196 struct fork_catchpoint
6197 {
6198   /* The base class.  */
6199   struct breakpoint base;
6200
6201   /* Process id of a child process whose forking triggered this
6202      catchpoint.  This field is only valid immediately after this
6203      catchpoint has triggered.  */
6204   ptid_t forked_inferior_pid;
6205 };
6206
6207 /* Implement the "insert" breakpoint_ops method for fork
6208    catchpoints.  */
6209
6210 static int
6211 insert_catch_fork (struct bp_location *bl)
6212 {
6213   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
6214 }
6215
6216 /* Implement the "remove" breakpoint_ops method for fork
6217    catchpoints.  */
6218
6219 static int
6220 remove_catch_fork (struct bp_location *bl)
6221 {
6222   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
6223 }
6224
6225 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
6226    catchpoints.  */
6227
6228 static int
6229 breakpoint_hit_catch_fork (const struct bp_location *bl,
6230                            struct address_space *aspace, CORE_ADDR bp_addr,
6231                            const struct target_waitstatus *ws)
6232 {
6233   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
6234
6235   return inferior_has_forked (inferior_ptid, &c->forked_inferior_pid);
6236 }
6237
6238 /* Implement the "print_it" breakpoint_ops method for fork
6239    catchpoints.  */
6240
6241 static enum print_stop_action
6242 print_it_catch_fork (bpstat bs)
6243 {
6244   struct ui_out *uiout = current_uiout;
6245   struct breakpoint *b = bs->breakpoint_at;
6246   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
6247
6248   annotate_catchpoint (b->number);
6249   if (b->disposition == disp_del)
6250     ui_out_text (uiout, "\nTemporary catchpoint ");
6251   else
6252     ui_out_text (uiout, "\nCatchpoint ");
6253   if (ui_out_is_mi_like_p (uiout))
6254     {
6255       ui_out_field_string (uiout, "reason",
6256                            async_reason_lookup (EXEC_ASYNC_FORK));
6257       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6258     }
6259   ui_out_field_int (uiout, "bkptno", b->number);
6260   ui_out_text (uiout, " (forked process ");
6261   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
6262   ui_out_text (uiout, "), ");
6263   return PRINT_SRC_AND_LOC;
6264 }
6265
6266 /* Implement the "print_one" breakpoint_ops method for fork
6267    catchpoints.  */
6268
6269 static void
6270 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
6271 {
6272   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
6273   struct value_print_options opts;
6274   struct ui_out *uiout = current_uiout;
6275
6276   get_user_print_options (&opts);
6277
6278   /* Field 4, the address, is omitted (which makes the columns not
6279      line up too nicely with the headers, but the effect is relatively
6280      readable).  */
6281   if (opts.addressprint)
6282     ui_out_field_skip (uiout, "addr");
6283   annotate_field (5);
6284   ui_out_text (uiout, "fork");
6285   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
6286     {
6287       ui_out_text (uiout, ", process ");
6288       ui_out_field_int (uiout, "what",
6289                         ptid_get_pid (c->forked_inferior_pid));
6290       ui_out_spaces (uiout, 1);
6291     }
6292 }
6293
6294 /* Implement the "print_mention" breakpoint_ops method for fork
6295    catchpoints.  */
6296
6297 static void
6298 print_mention_catch_fork (struct breakpoint *b)
6299 {
6300   printf_filtered (_("Catchpoint %d (fork)"), b->number);
6301 }
6302
6303 /* Implement the "print_recreate" breakpoint_ops method for fork
6304    catchpoints.  */
6305
6306 static void
6307 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
6308 {
6309   fprintf_unfiltered (fp, "catch fork");
6310   print_recreate_thread (b, fp);
6311 }
6312
6313 /* The breakpoint_ops structure to be used in fork catchpoints.  */
6314
6315 static struct breakpoint_ops catch_fork_breakpoint_ops;
6316
6317 /* Implement the "insert" breakpoint_ops method for vfork
6318    catchpoints.  */
6319
6320 static int
6321 insert_catch_vfork (struct bp_location *bl)
6322 {
6323   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
6324 }
6325
6326 /* Implement the "remove" breakpoint_ops method for vfork
6327    catchpoints.  */
6328
6329 static int
6330 remove_catch_vfork (struct bp_location *bl)
6331 {
6332   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
6333 }
6334
6335 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
6336    catchpoints.  */
6337
6338 static int
6339 breakpoint_hit_catch_vfork (const struct bp_location *bl,
6340                             struct address_space *aspace, CORE_ADDR bp_addr,
6341                             const struct target_waitstatus *ws)
6342 {
6343   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
6344
6345   return inferior_has_vforked (inferior_ptid, &c->forked_inferior_pid);
6346 }
6347
6348 /* Implement the "print_it" breakpoint_ops method for vfork
6349    catchpoints.  */
6350
6351 static enum print_stop_action
6352 print_it_catch_vfork (bpstat bs)
6353 {
6354   struct ui_out *uiout = current_uiout;
6355   struct breakpoint *b = bs->breakpoint_at;
6356   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
6357
6358   annotate_catchpoint (b->number);
6359   if (b->disposition == disp_del)
6360     ui_out_text (uiout, "\nTemporary catchpoint ");
6361   else
6362     ui_out_text (uiout, "\nCatchpoint ");
6363   if (ui_out_is_mi_like_p (uiout))
6364     {
6365       ui_out_field_string (uiout, "reason",
6366                            async_reason_lookup (EXEC_ASYNC_VFORK));
6367       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6368     }
6369   ui_out_field_int (uiout, "bkptno", b->number);
6370   ui_out_text (uiout, " (vforked process ");
6371   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
6372   ui_out_text (uiout, "), ");
6373   return PRINT_SRC_AND_LOC;
6374 }
6375
6376 /* Implement the "print_one" breakpoint_ops method for vfork
6377    catchpoints.  */
6378
6379 static void
6380 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
6381 {
6382   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
6383   struct value_print_options opts;
6384   struct ui_out *uiout = current_uiout;
6385
6386   get_user_print_options (&opts);
6387   /* Field 4, the address, is omitted (which makes the columns not
6388      line up too nicely with the headers, but the effect is relatively
6389      readable).  */
6390   if (opts.addressprint)
6391     ui_out_field_skip (uiout, "addr");
6392   annotate_field (5);
6393   ui_out_text (uiout, "vfork");
6394   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
6395     {
6396       ui_out_text (uiout, ", process ");
6397       ui_out_field_int (uiout, "what",
6398                         ptid_get_pid (c->forked_inferior_pid));
6399       ui_out_spaces (uiout, 1);
6400     }
6401 }
6402
6403 /* Implement the "print_mention" breakpoint_ops method for vfork
6404    catchpoints.  */
6405
6406 static void
6407 print_mention_catch_vfork (struct breakpoint *b)
6408 {
6409   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
6410 }
6411
6412 /* Implement the "print_recreate" breakpoint_ops method for vfork
6413    catchpoints.  */
6414
6415 static void
6416 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
6417 {
6418   fprintf_unfiltered (fp, "catch vfork");
6419   print_recreate_thread (b, fp);
6420 }
6421
6422 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
6423
6424 static struct breakpoint_ops catch_vfork_breakpoint_ops;
6425
6426 /* An instance of this type is used to represent a syscall catchpoint.
6427    It includes a "struct breakpoint" as a kind of base class; users
6428    downcast to "struct breakpoint *" when needed.  A breakpoint is
6429    really of this type iff its ops pointer points to
6430    CATCH_SYSCALL_BREAKPOINT_OPS.  */
6431
6432 struct syscall_catchpoint
6433 {
6434   /* The base class.  */
6435   struct breakpoint base;
6436
6437   /* Syscall numbers used for the 'catch syscall' feature.  If no
6438      syscall has been specified for filtering, its value is NULL.
6439      Otherwise, it holds a list of all syscalls to be caught.  The
6440      list elements are allocated with xmalloc.  */
6441   VEC(int) *syscalls_to_be_caught;
6442 };
6443
6444 /* Implement the "dtor" breakpoint_ops method for syscall
6445    catchpoints.  */
6446
6447 static void
6448 dtor_catch_syscall (struct breakpoint *b)
6449 {
6450   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
6451
6452   VEC_free (int, c->syscalls_to_be_caught);
6453
6454   base_breakpoint_ops.dtor (b);
6455 }
6456
6457 /* Implement the "insert" breakpoint_ops method for syscall
6458    catchpoints.  */
6459
6460 static int
6461 insert_catch_syscall (struct bp_location *bl)
6462 {
6463   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
6464   struct inferior *inf = current_inferior ();
6465
6466   ++inf->total_syscalls_count;
6467   if (!c->syscalls_to_be_caught)
6468     ++inf->any_syscall_count;
6469   else
6470     {
6471       int i, iter;
6472
6473       for (i = 0;
6474            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
6475            i++)
6476         {
6477           int elem;
6478
6479           if (iter >= VEC_length (int, inf->syscalls_counts))
6480             {
6481               int old_size = VEC_length (int, inf->syscalls_counts);
6482               uintptr_t vec_addr_offset
6483                 = old_size * ((uintptr_t) sizeof (int));
6484               uintptr_t vec_addr;
6485               VEC_safe_grow (int, inf->syscalls_counts, iter + 1);
6486               vec_addr = (uintptr_t) VEC_address (int, inf->syscalls_counts) +
6487                 vec_addr_offset;
6488               memset ((void *) vec_addr, 0,
6489                       (iter + 1 - old_size) * sizeof (int));
6490             }
6491           elem = VEC_index (int, inf->syscalls_counts, iter);
6492           VEC_replace (int, inf->syscalls_counts, iter, ++elem);
6493         }
6494     }
6495
6496   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
6497                                         inf->total_syscalls_count != 0,
6498                                         inf->any_syscall_count,
6499                                         VEC_length (int, inf->syscalls_counts),
6500                                         VEC_address (int, inf->syscalls_counts));
6501 }
6502
6503 /* Implement the "remove" breakpoint_ops method for syscall
6504    catchpoints.  */
6505
6506 static int
6507 remove_catch_syscall (struct bp_location *bl)
6508 {
6509   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
6510   struct inferior *inf = current_inferior ();
6511
6512   --inf->total_syscalls_count;
6513   if (!c->syscalls_to_be_caught)
6514     --inf->any_syscall_count;
6515   else
6516     {
6517       int i, iter;
6518
6519       for (i = 0;
6520            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
6521            i++)
6522         {
6523           int elem;
6524           if (iter >= VEC_length (int, inf->syscalls_counts))
6525             /* Shouldn't happen.  */
6526             continue;
6527           elem = VEC_index (int, inf->syscalls_counts, iter);
6528           VEC_replace (int, inf->syscalls_counts, iter, --elem);
6529         }
6530     }
6531
6532   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
6533                                         inf->total_syscalls_count != 0,
6534                                         inf->any_syscall_count,
6535                                         VEC_length (int, inf->syscalls_counts),
6536                                         VEC_address (int,
6537                                                      inf->syscalls_counts));
6538 }
6539
6540 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
6541    catchpoints.  */
6542
6543 static int
6544 breakpoint_hit_catch_syscall (const struct bp_location *bl,
6545                               struct address_space *aspace, CORE_ADDR bp_addr,
6546                               const struct target_waitstatus *ws)
6547 {
6548   /* We must check if we are catching specific syscalls in this
6549      breakpoint.  If we are, then we must guarantee that the called
6550      syscall is the same syscall we are catching.  */
6551   int syscall_number = 0;
6552   const struct syscall_catchpoint *c
6553     = (const struct syscall_catchpoint *) bl->owner;
6554
6555   if (!inferior_has_called_syscall (inferior_ptid, &syscall_number))
6556     return 0;
6557
6558   /* Now, checking if the syscall is the same.  */
6559   if (c->syscalls_to_be_caught)
6560     {
6561       int i, iter;
6562
6563       for (i = 0;
6564            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
6565            i++)
6566         if (syscall_number == iter)
6567           break;
6568       /* Not the same.  */
6569       if (!iter)
6570         return 0;
6571     }
6572
6573   return 1;
6574 }
6575
6576 /* Implement the "print_it" breakpoint_ops method for syscall
6577    catchpoints.  */
6578
6579 static enum print_stop_action
6580 print_it_catch_syscall (bpstat bs)
6581 {
6582   struct ui_out *uiout = current_uiout;
6583   struct breakpoint *b = bs->breakpoint_at;
6584   /* These are needed because we want to know in which state a
6585      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
6586      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
6587      must print "called syscall" or "returned from syscall".  */
6588   ptid_t ptid;
6589   struct target_waitstatus last;
6590   struct syscall s;
6591   char *syscall_id;
6592
6593   get_last_target_status (&ptid, &last);
6594
6595   get_syscall_by_number (last.value.syscall_number, &s);
6596
6597   annotate_catchpoint (b->number);
6598
6599   if (b->disposition == disp_del)
6600     ui_out_text (uiout, "\nTemporary catchpoint ");
6601   else
6602     ui_out_text (uiout, "\nCatchpoint ");
6603   if (ui_out_is_mi_like_p (uiout))
6604     {
6605       ui_out_field_string (uiout, "reason",
6606                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
6607                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
6608                                                 : EXEC_ASYNC_SYSCALL_RETURN));
6609       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6610     }
6611   ui_out_field_int (uiout, "bkptno", b->number);
6612
6613   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
6614     ui_out_text (uiout, " (call to syscall ");
6615   else
6616     ui_out_text (uiout, " (returned from syscall ");
6617
6618   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
6619     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
6620   if (s.name != NULL)
6621     ui_out_field_string (uiout, "syscall-name", s.name);
6622
6623   ui_out_text (uiout, "), ");
6624
6625   return PRINT_SRC_AND_LOC;
6626 }
6627
6628 /* Implement the "print_one" breakpoint_ops method for syscall
6629    catchpoints.  */
6630
6631 static void
6632 print_one_catch_syscall (struct breakpoint *b,
6633                          struct bp_location **last_loc)
6634 {
6635   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
6636   struct value_print_options opts;
6637   struct ui_out *uiout = current_uiout;
6638
6639   get_user_print_options (&opts);
6640   /* Field 4, the address, is omitted (which makes the columns not
6641      line up too nicely with the headers, but the effect is relatively
6642      readable).  */
6643   if (opts.addressprint)
6644     ui_out_field_skip (uiout, "addr");
6645   annotate_field (5);
6646
6647   if (c->syscalls_to_be_caught
6648       && VEC_length (int, c->syscalls_to_be_caught) > 1)
6649     ui_out_text (uiout, "syscalls \"");
6650   else
6651     ui_out_text (uiout, "syscall \"");
6652
6653   if (c->syscalls_to_be_caught)
6654     {
6655       int i, iter;
6656       char *text = xstrprintf ("%s", "");
6657
6658       for (i = 0;
6659            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
6660            i++)
6661         {
6662           char *x = text;
6663           struct syscall s;
6664           get_syscall_by_number (iter, &s);
6665
6666           if (s.name != NULL)
6667             text = xstrprintf ("%s%s, ", text, s.name);
6668           else
6669             text = xstrprintf ("%s%d, ", text, iter);
6670
6671           /* We have to xfree the last 'text' (now stored at 'x')
6672              because xstrprintf dynamically allocates new space for it
6673              on every call.  */
6674           xfree (x);
6675         }
6676       /* Remove the last comma.  */
6677       text[strlen (text) - 2] = '\0';
6678       ui_out_field_string (uiout, "what", text);
6679     }
6680   else
6681     ui_out_field_string (uiout, "what", "<any syscall>");
6682   ui_out_text (uiout, "\" ");
6683 }
6684
6685 /* Implement the "print_mention" breakpoint_ops method for syscall
6686    catchpoints.  */
6687
6688 static void
6689 print_mention_catch_syscall (struct breakpoint *b)
6690 {
6691   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
6692
6693   if (c->syscalls_to_be_caught)
6694     {
6695       int i, iter;
6696
6697       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
6698         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
6699       else
6700         printf_filtered (_("Catchpoint %d (syscall"), b->number);
6701
6702       for (i = 0;
6703            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
6704            i++)
6705         {
6706           struct syscall s;
6707           get_syscall_by_number (iter, &s);
6708
6709           if (s.name)
6710             printf_filtered (" '%s' [%d]", s.name, s.number);
6711           else
6712             printf_filtered (" %d", s.number);
6713         }
6714       printf_filtered (")");
6715     }
6716   else
6717     printf_filtered (_("Catchpoint %d (any syscall)"),
6718                      b->number);
6719 }
6720
6721 /* Implement the "print_recreate" breakpoint_ops method for syscall
6722    catchpoints.  */
6723
6724 static void
6725 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
6726 {
6727   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
6728
6729   fprintf_unfiltered (fp, "catch syscall");
6730
6731   if (c->syscalls_to_be_caught)
6732     {
6733       int i, iter;
6734
6735       for (i = 0;
6736            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
6737            i++)
6738         {
6739           struct syscall s;
6740
6741           get_syscall_by_number (iter, &s);
6742           if (s.name)
6743             fprintf_unfiltered (fp, " %s", s.name);
6744           else
6745             fprintf_unfiltered (fp, " %d", s.number);
6746         }
6747     }
6748   print_recreate_thread (b, fp);
6749 }
6750
6751 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
6752
6753 static struct breakpoint_ops catch_syscall_breakpoint_ops;
6754
6755 /* Returns non-zero if 'b' is a syscall catchpoint.  */
6756
6757 static int
6758 syscall_catchpoint_p (struct breakpoint *b)
6759 {
6760   return (b->ops == &catch_syscall_breakpoint_ops);
6761 }
6762
6763 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
6764    is non-zero, then make the breakpoint temporary.  If COND_STRING is
6765    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
6766    the breakpoint_ops structure associated to the catchpoint.  */
6767
6768 static void
6769 init_catchpoint (struct breakpoint *b,
6770                  struct gdbarch *gdbarch, int tempflag,
6771                  char *cond_string,
6772                  const struct breakpoint_ops *ops)
6773 {
6774   struct symtab_and_line sal;
6775
6776   init_sal (&sal);
6777   sal.pspace = current_program_space;
6778
6779   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
6780
6781   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
6782   b->disposition = tempflag ? disp_del : disp_donttouch;
6783 }
6784
6785 void
6786 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
6787 {
6788   add_to_breakpoint_chain (b);
6789   set_breakpoint_number (internal, b);
6790   if (!internal)
6791     mention (b);
6792   observer_notify_breakpoint_created (b);
6793
6794   if (update_gll)
6795     update_global_location_list (1);
6796 }
6797
6798 static void
6799 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
6800                                     int tempflag, char *cond_string,
6801                                     const struct breakpoint_ops *ops)
6802 {
6803   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
6804
6805   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
6806
6807   c->forked_inferior_pid = null_ptid;
6808
6809   install_breakpoint (0, &c->base, 1);
6810 }
6811
6812 /* Exec catchpoints.  */
6813
6814 /* An instance of this type is used to represent an exec catchpoint.
6815    It includes a "struct breakpoint" as a kind of base class; users
6816    downcast to "struct breakpoint *" when needed.  A breakpoint is
6817    really of this type iff its ops pointer points to
6818    CATCH_EXEC_BREAKPOINT_OPS.  */
6819
6820 struct exec_catchpoint
6821 {
6822   /* The base class.  */
6823   struct breakpoint base;
6824
6825   /* Filename of a program whose exec triggered this catchpoint.
6826      This field is only valid immediately after this catchpoint has
6827      triggered.  */
6828   char *exec_pathname;
6829 };
6830
6831 /* Implement the "dtor" breakpoint_ops method for exec
6832    catchpoints.  */
6833
6834 static void
6835 dtor_catch_exec (struct breakpoint *b)
6836 {
6837   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
6838
6839   xfree (c->exec_pathname);
6840
6841   base_breakpoint_ops.dtor (b);
6842 }
6843
6844 static int
6845 insert_catch_exec (struct bp_location *bl)
6846 {
6847   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
6848 }
6849
6850 static int
6851 remove_catch_exec (struct bp_location *bl)
6852 {
6853   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
6854 }
6855
6856 static int
6857 breakpoint_hit_catch_exec (const struct bp_location *bl,
6858                            struct address_space *aspace, CORE_ADDR bp_addr,
6859                            const struct target_waitstatus *ws)
6860 {
6861   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
6862
6863   return inferior_has_execd (inferior_ptid, &c->exec_pathname);
6864 }
6865
6866 static enum print_stop_action
6867 print_it_catch_exec (bpstat bs)
6868 {
6869   struct ui_out *uiout = current_uiout;
6870   struct breakpoint *b = bs->breakpoint_at;
6871   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
6872
6873   annotate_catchpoint (b->number);
6874   if (b->disposition == disp_del)
6875     ui_out_text (uiout, "\nTemporary catchpoint ");
6876   else
6877     ui_out_text (uiout, "\nCatchpoint ");
6878   if (ui_out_is_mi_like_p (uiout))
6879     {
6880       ui_out_field_string (uiout, "reason",
6881                            async_reason_lookup (EXEC_ASYNC_EXEC));
6882       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6883     }
6884   ui_out_field_int (uiout, "bkptno", b->number);
6885   ui_out_text (uiout, " (exec'd ");
6886   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
6887   ui_out_text (uiout, "), ");
6888
6889   return PRINT_SRC_AND_LOC;
6890 }
6891
6892 static void
6893 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
6894 {
6895   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
6896   struct value_print_options opts;
6897   struct ui_out *uiout = current_uiout;
6898
6899   get_user_print_options (&opts);
6900
6901   /* Field 4, the address, is omitted (which makes the columns
6902      not line up too nicely with the headers, but the effect
6903      is relatively readable).  */
6904   if (opts.addressprint)
6905     ui_out_field_skip (uiout, "addr");
6906   annotate_field (5);
6907   ui_out_text (uiout, "exec");
6908   if (c->exec_pathname != NULL)
6909     {
6910       ui_out_text (uiout, ", program \"");
6911       ui_out_field_string (uiout, "what", c->exec_pathname);
6912       ui_out_text (uiout, "\" ");
6913     }
6914 }
6915
6916 static void
6917 print_mention_catch_exec (struct breakpoint *b)
6918 {
6919   printf_filtered (_("Catchpoint %d (exec)"), b->number);
6920 }
6921
6922 /* Implement the "print_recreate" breakpoint_ops method for exec
6923    catchpoints.  */
6924
6925 static void
6926 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
6927 {
6928   fprintf_unfiltered (fp, "catch exec");
6929   print_recreate_thread (b, fp);
6930 }
6931
6932 static struct breakpoint_ops catch_exec_breakpoint_ops;
6933
6934 static void
6935 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
6936                                  const struct breakpoint_ops *ops)
6937 {
6938   struct syscall_catchpoint *c;
6939   struct gdbarch *gdbarch = get_current_arch ();
6940
6941   c = XNEW (struct syscall_catchpoint);
6942   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
6943   c->syscalls_to_be_caught = filter;
6944
6945   install_breakpoint (0, &c->base, 1);
6946 }
6947
6948 static int
6949 hw_breakpoint_used_count (void)
6950 {
6951   int i = 0;
6952   struct breakpoint *b;
6953   struct bp_location *bl;
6954
6955   ALL_BREAKPOINTS (b)
6956   {
6957     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
6958       for (bl = b->loc; bl; bl = bl->next)
6959         {
6960           /* Special types of hardware breakpoints may use more than
6961              one register.  */
6962           i += b->ops->resources_needed (bl);
6963         }
6964   }
6965
6966   return i;
6967 }
6968
6969 /* Returns the resources B would use if it were a hardware
6970    watchpoint.  */
6971
6972 static int
6973 hw_watchpoint_use_count (struct breakpoint *b)
6974 {
6975   int i = 0;
6976   struct bp_location *bl;
6977
6978   if (!breakpoint_enabled (b))
6979     return 0;
6980
6981   for (bl = b->loc; bl; bl = bl->next)
6982     {
6983       /* Special types of hardware watchpoints may use more than
6984          one register.  */
6985       i += b->ops->resources_needed (bl);
6986     }
6987
6988   return i;
6989 }
6990
6991 /* Returns the sum the used resources of all hardware watchpoints of
6992    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
6993    the sum of the used resources of all hardware watchpoints of other
6994    types _not_ TYPE.  */
6995
6996 static int
6997 hw_watchpoint_used_count_others (struct breakpoint *except,
6998                                  enum bptype type, int *other_type_used)
6999 {
7000   int i = 0;
7001   struct breakpoint *b;
7002
7003   *other_type_used = 0;
7004   ALL_BREAKPOINTS (b)
7005     {
7006       if (b == except)
7007         continue;
7008       if (!breakpoint_enabled (b))
7009         continue;
7010
7011       if (b->type == type)
7012         i += hw_watchpoint_use_count (b);
7013       else if (is_hardware_watchpoint (b))
7014         *other_type_used = 1;
7015     }
7016
7017   return i;
7018 }
7019
7020 void
7021 disable_watchpoints_before_interactive_call_start (void)
7022 {
7023   struct breakpoint *b;
7024
7025   ALL_BREAKPOINTS (b)
7026   {
7027     if (is_watchpoint (b) && breakpoint_enabled (b))
7028       {
7029         b->enable_state = bp_call_disabled;
7030         update_global_location_list (0);
7031       }
7032   }
7033 }
7034
7035 void
7036 enable_watchpoints_after_interactive_call_stop (void)
7037 {
7038   struct breakpoint *b;
7039
7040   ALL_BREAKPOINTS (b)
7041   {
7042     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
7043       {
7044         b->enable_state = bp_enabled;
7045         update_global_location_list (1);
7046       }
7047   }
7048 }
7049
7050 void
7051 disable_breakpoints_before_startup (void)
7052 {
7053   current_program_space->executing_startup = 1;
7054   update_global_location_list (0);
7055 }
7056
7057 void
7058 enable_breakpoints_after_startup (void)
7059 {
7060   current_program_space->executing_startup = 0;
7061   breakpoint_re_set ();
7062 }
7063
7064
7065 /* Set a breakpoint that will evaporate an end of command
7066    at address specified by SAL.
7067    Restrict it to frame FRAME if FRAME is nonzero.  */
7068
7069 struct breakpoint *
7070 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
7071                           struct frame_id frame_id, enum bptype type)
7072 {
7073   struct breakpoint *b;
7074
7075   /* If FRAME_ID is valid, it should be a real frame, not an inlined
7076      one.  */
7077   gdb_assert (!frame_id_inlined_p (frame_id));
7078
7079   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
7080   b->enable_state = bp_enabled;
7081   b->disposition = disp_donttouch;
7082   b->frame_id = frame_id;
7083
7084   /* If we're debugging a multi-threaded program, then we want
7085      momentary breakpoints to be active in only a single thread of
7086      control.  */
7087   if (in_thread_list (inferior_ptid))
7088     b->thread = pid_to_thread_id (inferior_ptid);
7089
7090   update_global_location_list_nothrow (1);
7091
7092   return b;
7093 }
7094
7095 /* Make a momentary breakpoint based on the master breakpoint ORIG.
7096    The new breakpoint will have type TYPE, and use OPS as it
7097    breakpoint_ops.  */
7098
7099 static struct breakpoint *
7100 momentary_breakpoint_from_master (struct breakpoint *orig,
7101                                   enum bptype type,
7102                                   const struct breakpoint_ops *ops)
7103 {
7104   struct breakpoint *copy;
7105
7106   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
7107   copy->loc = allocate_bp_location (copy);
7108   set_breakpoint_location_function (copy->loc, 1);
7109
7110   copy->loc->gdbarch = orig->loc->gdbarch;
7111   copy->loc->requested_address = orig->loc->requested_address;
7112   copy->loc->address = orig->loc->address;
7113   copy->loc->section = orig->loc->section;
7114   copy->loc->pspace = orig->loc->pspace;
7115
7116   if (orig->loc->source_file != NULL)
7117     copy->loc->source_file = xstrdup (orig->loc->source_file);
7118
7119   copy->loc->line_number = orig->loc->line_number;
7120   copy->frame_id = orig->frame_id;
7121   copy->thread = orig->thread;
7122   copy->pspace = orig->pspace;
7123
7124   copy->enable_state = bp_enabled;
7125   copy->disposition = disp_donttouch;
7126   copy->number = internal_breakpoint_number--;
7127
7128   update_global_location_list_nothrow (0);
7129   return copy;
7130 }
7131
7132 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
7133    ORIG is NULL.  */
7134
7135 struct breakpoint *
7136 clone_momentary_breakpoint (struct breakpoint *orig)
7137 {
7138   /* If there's nothing to clone, then return nothing.  */
7139   if (orig == NULL)
7140     return NULL;
7141
7142   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
7143 }
7144
7145 struct breakpoint *
7146 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
7147                                 enum bptype type)
7148 {
7149   struct symtab_and_line sal;
7150
7151   sal = find_pc_line (pc, 0);
7152   sal.pc = pc;
7153   sal.section = find_pc_overlay (pc);
7154   sal.explicit_pc = 1;
7155
7156   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
7157 }
7158 \f
7159
7160 /* Tell the user we have just set a breakpoint B.  */
7161
7162 static void
7163 mention (struct breakpoint *b)
7164 {
7165   b->ops->print_mention (b);
7166   if (ui_out_is_mi_like_p (current_uiout))
7167     return;
7168   printf_filtered ("\n");
7169 }
7170 \f
7171
7172 static struct bp_location *
7173 add_location_to_breakpoint (struct breakpoint *b,
7174                             const struct symtab_and_line *sal)
7175 {
7176   struct bp_location *loc, **tmp;
7177   CORE_ADDR adjusted_address;
7178   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
7179
7180   if (loc_gdbarch == NULL)
7181     loc_gdbarch = b->gdbarch;
7182
7183   /* Adjust the breakpoint's address prior to allocating a location.
7184      Once we call allocate_bp_location(), that mostly uninitialized
7185      location will be placed on the location chain.  Adjustment of the
7186      breakpoint may cause target_read_memory() to be called and we do
7187      not want its scan of the location chain to find a breakpoint and
7188      location that's only been partially initialized.  */
7189   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
7190                                                 sal->pc, b->type);
7191
7192   loc = allocate_bp_location (b);
7193   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
7194     ;
7195   *tmp = loc;
7196
7197   loc->requested_address = sal->pc;
7198   loc->address = adjusted_address;
7199   loc->pspace = sal->pspace;
7200   gdb_assert (loc->pspace != NULL);
7201   loc->section = sal->section;
7202   loc->gdbarch = loc_gdbarch;
7203
7204   if (sal->symtab != NULL)
7205     loc->source_file = xstrdup (sal->symtab->filename);
7206   loc->line_number = sal->line;
7207
7208   set_breakpoint_location_function (loc,
7209                                     sal->explicit_pc || sal->explicit_line);
7210   return loc;
7211 }
7212 \f
7213
7214 /* Return 1 if LOC is pointing to a permanent breakpoint, 
7215    return 0 otherwise.  */
7216
7217 static int
7218 bp_loc_is_permanent (struct bp_location *loc)
7219 {
7220   int len;
7221   CORE_ADDR addr;
7222   const gdb_byte *bpoint;
7223   gdb_byte *target_mem;
7224   struct cleanup *cleanup;
7225   int retval = 0;
7226
7227   gdb_assert (loc != NULL);
7228
7229   addr = loc->address;
7230   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
7231
7232   /* Software breakpoints unsupported?  */
7233   if (bpoint == NULL)
7234     return 0;
7235
7236   target_mem = alloca (len);
7237
7238   /* Enable the automatic memory restoration from breakpoints while
7239      we read the memory.  Otherwise we could say about our temporary
7240      breakpoints they are permanent.  */
7241   cleanup = save_current_space_and_thread ();
7242
7243   switch_to_program_space_and_thread (loc->pspace);
7244   make_show_memory_breakpoints_cleanup (0);
7245
7246   if (target_read_memory (loc->address, target_mem, len) == 0
7247       && memcmp (target_mem, bpoint, len) == 0)
7248     retval = 1;
7249
7250   do_cleanups (cleanup);
7251
7252   return retval;
7253 }
7254
7255
7256
7257 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
7258    as textual description of the location, and COND_STRING
7259    as condition expression.  */
7260
7261 static void
7262 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
7263                      struct symtabs_and_lines sals, char *addr_string,
7264                      char *filter, char *cond_string,
7265                      enum bptype type, enum bpdisp disposition,
7266                      int thread, int task, int ignore_count,
7267                      const struct breakpoint_ops *ops, int from_tty,
7268                      int enabled, int internal, int display_canonical)
7269 {
7270   int i;
7271
7272   if (type == bp_hardware_breakpoint)
7273     {
7274       int target_resources_ok;
7275
7276       i = hw_breakpoint_used_count ();
7277       target_resources_ok =
7278         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
7279                                             i + 1, 0);
7280       if (target_resources_ok == 0)
7281         error (_("No hardware breakpoint support in the target."));
7282       else if (target_resources_ok < 0)
7283         error (_("Hardware breakpoints used exceeds limit."));
7284     }
7285
7286   gdb_assert (sals.nelts > 0);
7287
7288   for (i = 0; i < sals.nelts; ++i)
7289     {
7290       struct symtab_and_line sal = sals.sals[i];
7291       struct bp_location *loc;
7292
7293       if (from_tty)
7294         {
7295           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
7296           if (!loc_gdbarch)
7297             loc_gdbarch = gdbarch;
7298
7299           describe_other_breakpoints (loc_gdbarch,
7300                                       sal.pspace, sal.pc, sal.section, thread);
7301         }
7302
7303       if (i == 0)
7304         {
7305           init_raw_breakpoint (b, gdbarch, sal, type, ops);
7306           b->thread = thread;
7307           b->task = task;
7308   
7309           b->cond_string = cond_string;
7310           b->ignore_count = ignore_count;
7311           b->enable_state = enabled ? bp_enabled : bp_disabled;
7312           b->disposition = disposition;
7313
7314           if (type == bp_static_tracepoint)
7315             {
7316               struct tracepoint *t = (struct tracepoint *) b;
7317               struct static_tracepoint_marker marker;
7318
7319               if (strace_marker_p (b))
7320                 {
7321                   /* We already know the marker exists, otherwise, we
7322                      wouldn't see a sal for it.  */
7323                   char *p = &addr_string[3];
7324                   char *endp;
7325                   char *marker_str;
7326
7327                   p = skip_spaces (p);
7328
7329                   endp = skip_to_space (p);
7330
7331                   marker_str = savestring (p, endp - p);
7332                   t->static_trace_marker_id = marker_str;
7333
7334                   printf_filtered (_("Probed static tracepoint "
7335                                      "marker \"%s\"\n"),
7336                                    t->static_trace_marker_id);
7337                 }
7338               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
7339                 {
7340                   t->static_trace_marker_id = xstrdup (marker.str_id);
7341                   release_static_tracepoint_marker (&marker);
7342
7343                   printf_filtered (_("Probed static tracepoint "
7344                                      "marker \"%s\"\n"),
7345                                    t->static_trace_marker_id);
7346                 }
7347               else
7348                 warning (_("Couldn't determine the static "
7349                            "tracepoint marker to probe"));
7350             }
7351
7352           loc = b->loc;
7353         }
7354       else
7355         {
7356           loc = add_location_to_breakpoint (b, &sal);
7357         }
7358
7359       if (bp_loc_is_permanent (loc))
7360         make_breakpoint_permanent (b);
7361
7362       if (b->cond_string)
7363         {
7364           char *arg = b->cond_string;
7365           loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
7366           if (*arg)
7367               error (_("Garbage %s follows condition"), arg);
7368         }
7369     }   
7370
7371   b->display_canonical = display_canonical;
7372   if (addr_string)
7373     b->addr_string = addr_string;
7374   else
7375     /* addr_string has to be used or breakpoint_re_set will delete
7376        me.  */
7377     b->addr_string
7378       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7379   b->filter = filter;
7380 }
7381
7382 static void
7383 create_breakpoint_sal (struct gdbarch *gdbarch,
7384                        struct symtabs_and_lines sals, char *addr_string,
7385                        char *filter, char *cond_string,
7386                        enum bptype type, enum bpdisp disposition,
7387                        int thread, int task, int ignore_count,
7388                        const struct breakpoint_ops *ops, int from_tty,
7389                        int enabled, int internal, int display_canonical)
7390 {
7391   struct breakpoint *b;
7392   struct cleanup *old_chain;
7393
7394   if (is_tracepoint_type (type))
7395     {
7396       struct tracepoint *t;
7397
7398       t = XCNEW (struct tracepoint);
7399       b = &t->base;
7400     }
7401   else
7402     b = XNEW (struct breakpoint);
7403
7404   old_chain = make_cleanup (xfree, b);
7405
7406   init_breakpoint_sal (b, gdbarch,
7407                        sals, addr_string,
7408                        filter, cond_string,
7409                        type, disposition,
7410                        thread, task, ignore_count,
7411                        ops, from_tty,
7412                        enabled, internal, display_canonical);
7413   discard_cleanups (old_chain);
7414
7415   install_breakpoint (internal, b, 0);
7416 }
7417
7418 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
7419    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
7420    value.  COND_STRING, if not NULL, specified the condition to be
7421    used for all breakpoints.  Essentially the only case where
7422    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
7423    function.  In that case, it's still not possible to specify
7424    separate conditions for different overloaded functions, so
7425    we take just a single condition string.
7426    
7427    NOTE: If the function succeeds, the caller is expected to cleanup
7428    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
7429    array contents).  If the function fails (error() is called), the
7430    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
7431    COND and SALS arrays and each of those arrays contents.  */
7432
7433 static void
7434 create_breakpoints_sal (struct gdbarch *gdbarch,
7435                         struct linespec_result *canonical,
7436                         char *cond_string,
7437                         enum bptype type, enum bpdisp disposition,
7438                         int thread, int task, int ignore_count,
7439                         const struct breakpoint_ops *ops, int from_tty,
7440                         int enabled, int internal)
7441 {
7442   int i;
7443   struct linespec_sals *lsal;
7444
7445   if (canonical->pre_expanded)
7446     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
7447
7448   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
7449     {
7450       /* Note that 'addr_string' can be NULL in the case of a plain
7451          'break', without arguments.  */
7452       char *addr_string = (canonical->addr_string
7453                            ? xstrdup (canonical->addr_string)
7454                            : NULL);
7455       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
7456       struct cleanup *inner = make_cleanup (xfree, addr_string);
7457
7458       make_cleanup (xfree, filter_string);
7459       create_breakpoint_sal (gdbarch, lsal->sals,
7460                              addr_string,
7461                              filter_string,
7462                              cond_string, type, disposition,
7463                              thread, task, ignore_count, ops,
7464                              from_tty, enabled, internal,
7465                              canonical->special_display);
7466       discard_cleanups (inner);
7467     }
7468 }
7469
7470 /* Parse ADDRESS which is assumed to be a SAL specification possibly
7471    followed by conditionals.  On return, SALS contains an array of SAL
7472    addresses found.  ADDR_STRING contains a vector of (canonical)
7473    address strings.  ADDRESS points to the end of the SAL.
7474
7475    The array and the line spec strings are allocated on the heap, it is
7476    the caller's responsibility to free them.  */
7477
7478 static void
7479 parse_breakpoint_sals (char **address,
7480                        struct linespec_result *canonical)
7481 {
7482   char *addr_start = *address;
7483
7484   /* If no arg given, or if first arg is 'if ', use the default
7485      breakpoint.  */
7486   if ((*address) == NULL
7487       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
7488     {
7489       /* The last displayed codepoint, if it's valid, is our default breakpoint
7490          address.  */
7491       if (last_displayed_sal_is_valid ())
7492         {
7493           struct linespec_sals lsal;
7494           struct symtab_and_line sal;
7495
7496           init_sal (&sal);              /* Initialize to zeroes.  */
7497           lsal.sals.sals = (struct symtab_and_line *)
7498             xmalloc (sizeof (struct symtab_and_line));
7499
7500           /* Set sal's pspace, pc, symtab, and line to the values
7501              corresponding to the last call to print_frame_info.  */
7502           get_last_displayed_sal (&sal);
7503           sal.section = find_pc_overlay (sal.pc);
7504
7505           /* "break" without arguments is equivalent to "break *PC"
7506              where PC is the last displayed codepoint's address.  So
7507              make sure to set sal.explicit_pc to prevent GDB from
7508              trying to expand the list of sals to include all other
7509              instances with the same symtab and line.  */
7510           sal.explicit_pc = 1;
7511
7512           lsal.sals.sals[0] = sal;
7513           lsal.sals.nelts = 1;
7514           lsal.canonical = NULL;
7515
7516           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
7517         }
7518       else
7519         error (_("No default breakpoint address now."));
7520     }
7521   else
7522     {
7523       /* Force almost all breakpoints to be in terms of the
7524          current_source_symtab (which is decode_line_1's default).
7525          This should produce the results we want almost all of the
7526          time while leaving default_breakpoint_* alone.  */
7527       if (last_displayed_sal_is_valid ())
7528         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
7529                           get_last_displayed_symtab (),
7530                           get_last_displayed_line (),
7531                           canonical, NULL, NULL);
7532       else
7533         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
7534                           (struct symtab *) NULL, 0,
7535                           canonical, NULL, NULL);
7536     }
7537 }
7538
7539
7540 /* Convert each SAL into a real PC.  Verify that the PC can be
7541    inserted as a breakpoint.  If it can't throw an error.  */
7542
7543 static void
7544 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
7545 {    
7546   int i;
7547
7548   for (i = 0; i < sals->nelts; i++)
7549     resolve_sal_pc (&sals->sals[i]);
7550 }
7551
7552 /* Fast tracepoints may have restrictions on valid locations.  For
7553    instance, a fast tracepoint using a jump instead of a trap will
7554    likely have to overwrite more bytes than a trap would, and so can
7555    only be placed where the instruction is longer than the jump, or a
7556    multi-instruction sequence does not have a jump into the middle of
7557    it, etc.  */
7558
7559 static void
7560 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
7561                             struct symtabs_and_lines *sals)
7562 {
7563   int i, rslt;
7564   struct symtab_and_line *sal;
7565   char *msg;
7566   struct cleanup *old_chain;
7567
7568   for (i = 0; i < sals->nelts; i++)
7569     {
7570       struct gdbarch *sarch;
7571
7572       sal = &sals->sals[i];
7573
7574       sarch = get_sal_arch (*sal);
7575       /* We fall back to GDBARCH if there is no architecture
7576          associated with SAL.  */
7577       if (sarch == NULL)
7578         sarch = gdbarch;
7579       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
7580                                                NULL, &msg);
7581       old_chain = make_cleanup (xfree, msg);
7582
7583       if (!rslt)
7584         error (_("May not have a fast tracepoint at 0x%s%s"),
7585                paddress (sarch, sal->pc), (msg ? msg : ""));
7586
7587       do_cleanups (old_chain);
7588     }
7589 }
7590
7591 /* Given TOK, a string specification of condition and thread, as
7592    accepted by the 'break' command, extract the condition
7593    string and thread number and set *COND_STRING and *THREAD.
7594    PC identifies the context at which the condition should be parsed.
7595    If no condition is found, *COND_STRING is set to NULL.
7596    If no thread is found, *THREAD is set to -1.  */
7597 static void 
7598 find_condition_and_thread (char *tok, CORE_ADDR pc, 
7599                            char **cond_string, int *thread, int *task)
7600 {
7601   *cond_string = NULL;
7602   *thread = -1;
7603   while (tok && *tok)
7604     {
7605       char *end_tok;
7606       int toklen;
7607       char *cond_start = NULL;
7608       char *cond_end = NULL;
7609
7610       tok = skip_spaces (tok);
7611       
7612       end_tok = skip_to_space (tok);
7613       
7614       toklen = end_tok - tok;
7615       
7616       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
7617         {
7618           struct expression *expr;
7619
7620           tok = cond_start = end_tok + 1;
7621           expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
7622           xfree (expr);
7623           cond_end = tok;
7624           *cond_string = savestring (cond_start, 
7625                                      cond_end - cond_start);
7626         }
7627       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
7628         {
7629           char *tmptok;
7630           
7631           tok = end_tok + 1;
7632           tmptok = tok;
7633           *thread = strtol (tok, &tok, 0);
7634           if (tok == tmptok)
7635             error (_("Junk after thread keyword."));
7636           if (!valid_thread_id (*thread))
7637             error (_("Unknown thread %d."), *thread);
7638         }
7639       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
7640         {
7641           char *tmptok;
7642
7643           tok = end_tok + 1;
7644           tmptok = tok;
7645           *task = strtol (tok, &tok, 0);
7646           if (tok == tmptok)
7647             error (_("Junk after task keyword."));
7648           if (!valid_task_id (*task))
7649             error (_("Unknown task %d."), *task);
7650         }
7651       else
7652         error (_("Junk at end of arguments."));
7653     }
7654 }
7655
7656 /* Decode a static tracepoint marker spec.  */
7657
7658 static struct symtabs_and_lines
7659 decode_static_tracepoint_spec (char **arg_p)
7660 {
7661   VEC(static_tracepoint_marker_p) *markers = NULL;
7662   struct symtabs_and_lines sals;
7663   struct symtab_and_line sal;
7664   struct symbol *sym;
7665   struct cleanup *old_chain;
7666   char *p = &(*arg_p)[3];
7667   char *endp;
7668   char *marker_str;
7669   int i;
7670
7671   p = skip_spaces (p);
7672
7673   endp = skip_to_space (p);
7674
7675   marker_str = savestring (p, endp - p);
7676   old_chain = make_cleanup (xfree, marker_str);
7677
7678   markers = target_static_tracepoint_markers_by_strid (marker_str);
7679   if (VEC_empty(static_tracepoint_marker_p, markers))
7680     error (_("No known static tracepoint marker named %s"), marker_str);
7681
7682   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
7683   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
7684
7685   for (i = 0; i < sals.nelts; i++)
7686     {
7687       struct static_tracepoint_marker *marker;
7688
7689       marker = VEC_index (static_tracepoint_marker_p, markers, i);
7690
7691       init_sal (&sals.sals[i]);
7692
7693       sals.sals[i] = find_pc_line (marker->address, 0);
7694       sals.sals[i].pc = marker->address;
7695
7696       release_static_tracepoint_marker (marker);
7697     }
7698
7699   do_cleanups (old_chain);
7700
7701   *arg_p = endp;
7702   return sals;
7703 }
7704
7705 /* Set a breakpoint.  This function is shared between CLI and MI
7706    functions for setting a breakpoint.  This function has two major
7707    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
7708    parameter.  If non-zero, the function will parse arg, extracting
7709    breakpoint location, address and thread.  Otherwise, ARG is just
7710    the location of breakpoint, with condition and thread specified by
7711    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
7712    the breakpoint number will be allocated from the internal
7713    breakpoint count.  Returns true if any breakpoint was created;
7714    false otherwise.  */
7715
7716 int
7717 create_breakpoint (struct gdbarch *gdbarch,
7718                    char *arg, char *cond_string, int thread,
7719                    int parse_condition_and_thread,
7720                    int tempflag, enum bptype type_wanted,
7721                    int ignore_count,
7722                    enum auto_boolean pending_break_support,
7723                    const struct breakpoint_ops *ops,
7724                    int from_tty, int enabled, int internal)
7725 {
7726   volatile struct gdb_exception e;
7727   char *copy_arg = NULL;
7728   char *addr_start = arg;
7729   struct linespec_result canonical;
7730   struct cleanup *old_chain;
7731   struct cleanup *bkpt_chain = NULL;
7732   int i;
7733   int pending = 0;
7734   int task = 0;
7735   int prev_bkpt_count = breakpoint_count;
7736
7737   gdb_assert (ops != NULL);
7738
7739   init_linespec_result (&canonical);
7740
7741   TRY_CATCH (e, RETURN_MASK_ALL)
7742     {
7743       ops->create_sals_from_address (&arg, &canonical, type_wanted,
7744                                      addr_start, &copy_arg);
7745     }
7746
7747   /* If caller is interested in rc value from parse, set value.  */
7748   switch (e.reason)
7749     {
7750     case GDB_NO_ERROR:
7751       if (VEC_empty (linespec_sals, canonical.sals))
7752         return 0;
7753       break;
7754     case RETURN_ERROR:
7755       switch (e.error)
7756         {
7757         case NOT_FOUND_ERROR:
7758
7759           /* If pending breakpoint support is turned off, throw
7760              error.  */
7761
7762           if (pending_break_support == AUTO_BOOLEAN_FALSE)
7763             throw_exception (e);
7764
7765           exception_print (gdb_stderr, e);
7766
7767           /* If pending breakpoint support is auto query and the user
7768              selects no, then simply return the error code.  */
7769           if (pending_break_support == AUTO_BOOLEAN_AUTO
7770               && !nquery (_("Make %s pending on future shared library load? "),
7771                           bptype_string (type_wanted)))
7772             return 0;
7773
7774           /* At this point, either the user was queried about setting
7775              a pending breakpoint and selected yes, or pending
7776              breakpoint behavior is on and thus a pending breakpoint
7777              is defaulted on behalf of the user.  */
7778           {
7779             struct linespec_sals lsal;
7780
7781             copy_arg = xstrdup (addr_start);
7782             lsal.canonical = xstrdup (copy_arg);
7783             lsal.sals.nelts = 1;
7784             lsal.sals.sals = XNEW (struct symtab_and_line);
7785             init_sal (&lsal.sals.sals[0]);
7786             pending = 1;
7787             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
7788           }
7789           break;
7790         default:
7791           throw_exception (e);
7792         }
7793       break;
7794     default:
7795       throw_exception (e);
7796     }
7797
7798   /* Create a chain of things that always need to be cleaned up.  */
7799   old_chain = make_cleanup_destroy_linespec_result (&canonical);
7800
7801   /* ----------------------------- SNIP -----------------------------
7802      Anything added to the cleanup chain beyond this point is assumed
7803      to be part of a breakpoint.  If the breakpoint create succeeds
7804      then the memory is not reclaimed.  */
7805   bkpt_chain = make_cleanup (null_cleanup, 0);
7806
7807   /* Resolve all line numbers to PC's and verify that the addresses
7808      are ok for the target.  */
7809   if (!pending)
7810     {
7811       int ix;
7812       struct linespec_sals *iter;
7813
7814       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
7815         breakpoint_sals_to_pc (&iter->sals);
7816     }
7817
7818   /* Fast tracepoints may have additional restrictions on location.  */
7819   if (!pending && type_wanted == bp_fast_tracepoint)
7820     {
7821       int ix;
7822       struct linespec_sals *iter;
7823
7824       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
7825         check_fast_tracepoint_sals (gdbarch, &iter->sals);
7826     }
7827
7828   /* Verify that condition can be parsed, before setting any
7829      breakpoints.  Allocate a separate condition expression for each
7830      breakpoint.  */
7831   if (!pending)
7832     {
7833       struct linespec_sals *lsal;
7834
7835       lsal = VEC_index (linespec_sals, canonical.sals, 0);
7836
7837       if (parse_condition_and_thread)
7838         {
7839             /* Here we only parse 'arg' to separate condition
7840                from thread number, so parsing in context of first
7841                sal is OK.  When setting the breakpoint we'll 
7842                re-parse it in context of each sal.  */
7843             cond_string = NULL;
7844             thread = -1;
7845             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
7846                                        &thread, &task);
7847             if (cond_string)
7848                 make_cleanup (xfree, cond_string);
7849         }
7850       else
7851         {
7852             /* Create a private copy of condition string.  */
7853             if (cond_string)
7854             {
7855                 cond_string = xstrdup (cond_string);
7856                 make_cleanup (xfree, cond_string);
7857             }
7858         }
7859
7860       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
7861                                    cond_string, type_wanted,
7862                                    tempflag ? disp_del : disp_donttouch,
7863                                    thread, task, ignore_count, ops,
7864                                    from_tty, enabled, internal);
7865     }
7866   else
7867     {
7868       struct breakpoint *b;
7869
7870       make_cleanup (xfree, copy_arg);
7871
7872       if (is_tracepoint_type (type_wanted))
7873         {
7874           struct tracepoint *t;
7875
7876           t = XCNEW (struct tracepoint);
7877           b = &t->base;
7878         }
7879       else
7880         b = XNEW (struct breakpoint);
7881
7882       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
7883
7884       b->addr_string = copy_arg;
7885       b->cond_string = NULL;
7886       b->ignore_count = ignore_count;
7887       b->disposition = tempflag ? disp_del : disp_donttouch;
7888       b->condition_not_parsed = 1;
7889       b->enable_state = enabled ? bp_enabled : bp_disabled;
7890       if ((type_wanted != bp_breakpoint
7891            && type_wanted != bp_hardware_breakpoint) || thread != -1)
7892         b->pspace = current_program_space;
7893
7894       install_breakpoint (internal, b, 0);
7895     }
7896   
7897   if (VEC_length (linespec_sals, canonical.sals) > 1)
7898     {
7899       warning (_("Multiple breakpoints were set.\nUse the "
7900                  "\"delete\" command to delete unwanted breakpoints."));
7901       prev_breakpoint_count = prev_bkpt_count;
7902     }
7903
7904   /* That's it.  Discard the cleanups for data inserted into the
7905      breakpoint.  */
7906   discard_cleanups (bkpt_chain);
7907   /* But cleanup everything else.  */
7908   do_cleanups (old_chain);
7909
7910   /* error call may happen here - have BKPT_CHAIN already discarded.  */
7911   update_global_location_list (1);
7912
7913   return 1;
7914 }
7915
7916 /* Set a breakpoint.
7917    ARG is a string describing breakpoint address,
7918    condition, and thread.
7919    FLAG specifies if a breakpoint is hardware on,
7920    and if breakpoint is temporary, using BP_HARDWARE_FLAG
7921    and BP_TEMPFLAG.  */
7922
7923 static void
7924 break_command_1 (char *arg, int flag, int from_tty)
7925 {
7926   int tempflag = flag & BP_TEMPFLAG;
7927   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
7928                              ? bp_hardware_breakpoint
7929                              : bp_breakpoint);
7930
7931   create_breakpoint (get_current_arch (),
7932                      arg,
7933                      NULL, 0, 1 /* parse arg */,
7934                      tempflag, type_wanted,
7935                      0 /* Ignore count */,
7936                      pending_break_support,
7937                      &bkpt_breakpoint_ops,
7938                      from_tty,
7939                      1 /* enabled */,
7940                      0 /* internal */);
7941 }
7942
7943 /* Helper function for break_command_1 and disassemble_command.  */
7944
7945 void
7946 resolve_sal_pc (struct symtab_and_line *sal)
7947 {
7948   CORE_ADDR pc;
7949
7950   if (sal->pc == 0 && sal->symtab != NULL)
7951     {
7952       if (!find_line_pc (sal->symtab, sal->line, &pc))
7953         error (_("No line %d in file \"%s\"."),
7954                sal->line, sal->symtab->filename);
7955       sal->pc = pc;
7956
7957       /* If this SAL corresponds to a breakpoint inserted using a line
7958          number, then skip the function prologue if necessary.  */
7959       if (sal->explicit_line)
7960         skip_prologue_sal (sal);
7961     }
7962
7963   if (sal->section == 0 && sal->symtab != NULL)
7964     {
7965       struct blockvector *bv;
7966       struct block *b;
7967       struct symbol *sym;
7968
7969       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
7970       if (bv != NULL)
7971         {
7972           sym = block_linkage_function (b);
7973           if (sym != NULL)
7974             {
7975               fixup_symbol_section (sym, sal->symtab->objfile);
7976               sal->section = SYMBOL_OBJ_SECTION (sym);
7977             }
7978           else
7979             {
7980               /* It really is worthwhile to have the section, so we'll
7981                  just have to look harder. This case can be executed
7982                  if we have line numbers but no functions (as can
7983                  happen in assembly source).  */
7984
7985               struct minimal_symbol *msym;
7986               struct cleanup *old_chain = save_current_space_and_thread ();
7987
7988               switch_to_program_space_and_thread (sal->pspace);
7989
7990               msym = lookup_minimal_symbol_by_pc (sal->pc);
7991               if (msym)
7992                 sal->section = SYMBOL_OBJ_SECTION (msym);
7993
7994               do_cleanups (old_chain);
7995             }
7996         }
7997     }
7998 }
7999
8000 void
8001 break_command (char *arg, int from_tty)
8002 {
8003   break_command_1 (arg, 0, from_tty);
8004 }
8005
8006 void
8007 tbreak_command (char *arg, int from_tty)
8008 {
8009   break_command_1 (arg, BP_TEMPFLAG, from_tty);
8010 }
8011
8012 static void
8013 hbreak_command (char *arg, int from_tty)
8014 {
8015   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
8016 }
8017
8018 static void
8019 thbreak_command (char *arg, int from_tty)
8020 {
8021   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
8022 }
8023
8024 static void
8025 stop_command (char *arg, int from_tty)
8026 {
8027   printf_filtered (_("Specify the type of breakpoint to set.\n\
8028 Usage: stop in <function | address>\n\
8029        stop at <line>\n"));
8030 }
8031
8032 static void
8033 stopin_command (char *arg, int from_tty)
8034 {
8035   int badInput = 0;
8036
8037   if (arg == (char *) NULL)
8038     badInput = 1;
8039   else if (*arg != '*')
8040     {
8041       char *argptr = arg;
8042       int hasColon = 0;
8043
8044       /* Look for a ':'.  If this is a line number specification, then
8045          say it is bad, otherwise, it should be an address or
8046          function/method name.  */
8047       while (*argptr && !hasColon)
8048         {
8049           hasColon = (*argptr == ':');
8050           argptr++;
8051         }
8052
8053       if (hasColon)
8054         badInput = (*argptr != ':');    /* Not a class::method */
8055       else
8056         badInput = isdigit (*arg);      /* a simple line number */
8057     }
8058
8059   if (badInput)
8060     printf_filtered (_("Usage: stop in <function | address>\n"));
8061   else
8062     break_command_1 (arg, 0, from_tty);
8063 }
8064
8065 static void
8066 stopat_command (char *arg, int from_tty)
8067 {
8068   int badInput = 0;
8069
8070   if (arg == (char *) NULL || *arg == '*')      /* no line number */
8071     badInput = 1;
8072   else
8073     {
8074       char *argptr = arg;
8075       int hasColon = 0;
8076
8077       /* Look for a ':'.  If there is a '::' then get out, otherwise
8078          it is probably a line number.  */
8079       while (*argptr && !hasColon)
8080         {
8081           hasColon = (*argptr == ':');
8082           argptr++;
8083         }
8084
8085       if (hasColon)
8086         badInput = (*argptr == ':');    /* we have class::method */
8087       else
8088         badInput = !isdigit (*arg);     /* not a line number */
8089     }
8090
8091   if (badInput)
8092     printf_filtered (_("Usage: stop at <line>\n"));
8093   else
8094     break_command_1 (arg, 0, from_tty);
8095 }
8096
8097 /* Implement the "breakpoint_hit" breakpoint_ops method for
8098    ranged breakpoints.  */
8099
8100 static int
8101 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
8102                                   struct address_space *aspace,
8103                                   CORE_ADDR bp_addr,
8104                                   const struct target_waitstatus *ws)
8105 {
8106   if (ws->kind != TARGET_WAITKIND_STOPPED
8107       || ws->value.sig != TARGET_SIGNAL_TRAP)
8108     return 0;
8109
8110   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
8111                                          bl->length, aspace, bp_addr);
8112 }
8113
8114 /* Implement the "resources_needed" breakpoint_ops method for
8115    ranged breakpoints.  */
8116
8117 static int
8118 resources_needed_ranged_breakpoint (const struct bp_location *bl)
8119 {
8120   return target_ranged_break_num_registers ();
8121 }
8122
8123 /* Implement the "print_it" breakpoint_ops method for
8124    ranged breakpoints.  */
8125
8126 static enum print_stop_action
8127 print_it_ranged_breakpoint (bpstat bs)
8128 {
8129   struct breakpoint *b = bs->breakpoint_at;
8130   struct bp_location *bl = b->loc;
8131   struct ui_out *uiout = current_uiout;
8132
8133   gdb_assert (b->type == bp_hardware_breakpoint);
8134
8135   /* Ranged breakpoints have only one location.  */
8136   gdb_assert (bl && bl->next == NULL);
8137
8138   annotate_breakpoint (b->number);
8139   if (b->disposition == disp_del)
8140     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
8141   else
8142     ui_out_text (uiout, "\nRanged breakpoint ");
8143   if (ui_out_is_mi_like_p (uiout))
8144     {
8145       ui_out_field_string (uiout, "reason",
8146                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
8147       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8148     }
8149   ui_out_field_int (uiout, "bkptno", b->number);
8150   ui_out_text (uiout, ", ");
8151
8152   return PRINT_SRC_AND_LOC;
8153 }
8154
8155 /* Implement the "print_one" breakpoint_ops method for
8156    ranged breakpoints.  */
8157
8158 static void
8159 print_one_ranged_breakpoint (struct breakpoint *b,
8160                              struct bp_location **last_loc)
8161 {
8162   struct bp_location *bl = b->loc;
8163   struct value_print_options opts;
8164   struct ui_out *uiout = current_uiout;
8165
8166   /* Ranged breakpoints have only one location.  */
8167   gdb_assert (bl && bl->next == NULL);
8168
8169   get_user_print_options (&opts);
8170
8171   if (opts.addressprint)
8172     /* We don't print the address range here, it will be printed later
8173        by print_one_detail_ranged_breakpoint.  */
8174     ui_out_field_skip (uiout, "addr");
8175   annotate_field (5);
8176   print_breakpoint_location (b, bl);
8177   *last_loc = bl;
8178 }
8179
8180 /* Implement the "print_one_detail" breakpoint_ops method for
8181    ranged breakpoints.  */
8182
8183 static void
8184 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
8185                                     struct ui_out *uiout)
8186 {
8187   CORE_ADDR address_start, address_end;
8188   struct bp_location *bl = b->loc;
8189   struct ui_stream *stb = ui_out_stream_new (uiout);
8190   struct cleanup *cleanup = make_cleanup_ui_out_stream_delete (stb);
8191
8192   gdb_assert (bl);
8193
8194   address_start = bl->address;
8195   address_end = address_start + bl->length - 1;
8196
8197   ui_out_text (uiout, "\taddress range: ");
8198   fprintf_unfiltered (stb->stream, "[%s, %s]",
8199                       print_core_address (bl->gdbarch, address_start),
8200                       print_core_address (bl->gdbarch, address_end));
8201   ui_out_field_stream (uiout, "addr", stb);
8202   ui_out_text (uiout, "\n");
8203
8204   do_cleanups (cleanup);
8205 }
8206
8207 /* Implement the "print_mention" breakpoint_ops method for
8208    ranged breakpoints.  */
8209
8210 static void
8211 print_mention_ranged_breakpoint (struct breakpoint *b)
8212 {
8213   struct bp_location *bl = b->loc;
8214   struct ui_out *uiout = current_uiout;
8215
8216   gdb_assert (bl);
8217   gdb_assert (b->type == bp_hardware_breakpoint);
8218
8219   if (ui_out_is_mi_like_p (uiout))
8220     return;
8221
8222   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
8223                    b->number, paddress (bl->gdbarch, bl->address),
8224                    paddress (bl->gdbarch, bl->address + bl->length - 1));
8225 }
8226
8227 /* Implement the "print_recreate" breakpoint_ops method for
8228    ranged breakpoints.  */
8229
8230 static void
8231 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
8232 {
8233   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
8234                       b->addr_string_range_end);
8235   print_recreate_thread (b, fp);
8236 }
8237
8238 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
8239
8240 static struct breakpoint_ops ranged_breakpoint_ops;
8241
8242 /* Find the address where the end of the breakpoint range should be
8243    placed, given the SAL of the end of the range.  This is so that if
8244    the user provides a line number, the end of the range is set to the
8245    last instruction of the given line.  */
8246
8247 static CORE_ADDR
8248 find_breakpoint_range_end (struct symtab_and_line sal)
8249 {
8250   CORE_ADDR end;
8251
8252   /* If the user provided a PC value, use it.  Otherwise,
8253      find the address of the end of the given location.  */
8254   if (sal.explicit_pc)
8255     end = sal.pc;
8256   else
8257     {
8258       int ret;
8259       CORE_ADDR start;
8260
8261       ret = find_line_pc_range (sal, &start, &end);
8262       if (!ret)
8263         error (_("Could not find location of the end of the range."));
8264
8265       /* find_line_pc_range returns the start of the next line.  */
8266       end--;
8267     }
8268
8269   return end;
8270 }
8271
8272 /* Implement the "break-range" CLI command.  */
8273
8274 static void
8275 break_range_command (char *arg, int from_tty)
8276 {
8277   char *arg_start, *addr_string_start, *addr_string_end;
8278   struct linespec_result canonical_start, canonical_end;
8279   int bp_count, can_use_bp, length;
8280   CORE_ADDR end;
8281   struct breakpoint *b;
8282   struct symtab_and_line sal_start, sal_end;
8283   struct cleanup *cleanup_bkpt;
8284   struct linespec_sals *lsal_start, *lsal_end;
8285
8286   /* We don't support software ranged breakpoints.  */
8287   if (target_ranged_break_num_registers () < 0)
8288     error (_("This target does not support hardware ranged breakpoints."));
8289
8290   bp_count = hw_breakpoint_used_count ();
8291   bp_count += target_ranged_break_num_registers ();
8292   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8293                                                    bp_count, 0);
8294   if (can_use_bp < 0)
8295     error (_("Hardware breakpoints used exceeds limit."));
8296
8297   arg = skip_spaces (arg);
8298   if (arg == NULL || arg[0] == '\0')
8299     error(_("No address range specified."));
8300
8301   init_linespec_result (&canonical_start);
8302
8303   arg_start = arg;
8304   parse_breakpoint_sals (&arg, &canonical_start);
8305
8306   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
8307
8308   if (arg[0] != ',')
8309     error (_("Too few arguments."));
8310   else if (VEC_empty (linespec_sals, canonical_start.sals))
8311     error (_("Could not find location of the beginning of the range."));
8312
8313   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
8314
8315   if (VEC_length (linespec_sals, canonical_start.sals) > 1
8316       || lsal_start->sals.nelts != 1)
8317     error (_("Cannot create a ranged breakpoint with multiple locations."));
8318
8319   sal_start = lsal_start->sals.sals[0];
8320   addr_string_start = savestring (arg_start, arg - arg_start);
8321   make_cleanup (xfree, addr_string_start);
8322
8323   arg++;        /* Skip the comma.  */
8324   arg = skip_spaces (arg);
8325
8326   /* Parse the end location.  */
8327
8328   init_linespec_result (&canonical_end);
8329   arg_start = arg;
8330
8331   /* We call decode_line_full directly here instead of using
8332      parse_breakpoint_sals because we need to specify the start location's
8333      symtab and line as the default symtab and line for the end of the
8334      range.  This makes it possible to have ranges like "foo.c:27, +14",
8335      where +14 means 14 lines from the start location.  */
8336   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
8337                     sal_start.symtab, sal_start.line,
8338                     &canonical_end, NULL, NULL);
8339
8340   make_cleanup_destroy_linespec_result (&canonical_end);
8341
8342   if (VEC_empty (linespec_sals, canonical_end.sals))
8343     error (_("Could not find location of the end of the range."));
8344
8345   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
8346   if (VEC_length (linespec_sals, canonical_end.sals) > 1
8347       || lsal_end->sals.nelts != 1)
8348     error (_("Cannot create a ranged breakpoint with multiple locations."));
8349
8350   sal_end = lsal_end->sals.sals[0];
8351   addr_string_end = savestring (arg_start, arg - arg_start);
8352   make_cleanup (xfree, addr_string_end);
8353
8354   end = find_breakpoint_range_end (sal_end);
8355   if (sal_start.pc > end)
8356     error (_("Invalid address range, end precedes start."));
8357
8358   length = end - sal_start.pc + 1;
8359   if (length < 0)
8360     /* Length overflowed.  */
8361     error (_("Address range too large."));
8362   else if (length == 1)
8363     {
8364       /* This range is simple enough to be handled by
8365          the `hbreak' command.  */
8366       hbreak_command (addr_string_start, 1);
8367
8368       do_cleanups (cleanup_bkpt);
8369
8370       return;
8371     }
8372
8373   /* Now set up the breakpoint.  */
8374   b = set_raw_breakpoint (get_current_arch (), sal_start,
8375                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
8376   set_breakpoint_count (breakpoint_count + 1);
8377   b->number = breakpoint_count;
8378   b->disposition = disp_donttouch;
8379   b->addr_string = xstrdup (addr_string_start);
8380   b->addr_string_range_end = xstrdup (addr_string_end);
8381   b->loc->length = length;
8382
8383   do_cleanups (cleanup_bkpt);
8384
8385   mention (b);
8386   observer_notify_breakpoint_created (b);
8387   update_global_location_list (1);
8388 }
8389
8390 /*  Return non-zero if EXP is verified as constant.  Returned zero
8391     means EXP is variable.  Also the constant detection may fail for
8392     some constant expressions and in such case still falsely return
8393     zero.  */
8394 static int
8395 watchpoint_exp_is_const (const struct expression *exp)
8396 {
8397   int i = exp->nelts;
8398
8399   while (i > 0)
8400     {
8401       int oplenp, argsp;
8402
8403       /* We are only interested in the descriptor of each element.  */
8404       operator_length (exp, i, &oplenp, &argsp);
8405       i -= oplenp;
8406
8407       switch (exp->elts[i].opcode)
8408         {
8409         case BINOP_ADD:
8410         case BINOP_SUB:
8411         case BINOP_MUL:
8412         case BINOP_DIV:
8413         case BINOP_REM:
8414         case BINOP_MOD:
8415         case BINOP_LSH:
8416         case BINOP_RSH:
8417         case BINOP_LOGICAL_AND:
8418         case BINOP_LOGICAL_OR:
8419         case BINOP_BITWISE_AND:
8420         case BINOP_BITWISE_IOR:
8421         case BINOP_BITWISE_XOR:
8422         case BINOP_EQUAL:
8423         case BINOP_NOTEQUAL:
8424         case BINOP_LESS:
8425         case BINOP_GTR:
8426         case BINOP_LEQ:
8427         case BINOP_GEQ:
8428         case BINOP_REPEAT:
8429         case BINOP_COMMA:
8430         case BINOP_EXP:
8431         case BINOP_MIN:
8432         case BINOP_MAX:
8433         case BINOP_INTDIV:
8434         case BINOP_CONCAT:
8435         case BINOP_IN:
8436         case BINOP_RANGE:
8437         case TERNOP_COND:
8438         case TERNOP_SLICE:
8439         case TERNOP_SLICE_COUNT:
8440
8441         case OP_LONG:
8442         case OP_DOUBLE:
8443         case OP_DECFLOAT:
8444         case OP_LAST:
8445         case OP_COMPLEX:
8446         case OP_STRING:
8447         case OP_BITSTRING:
8448         case OP_ARRAY:
8449         case OP_TYPE:
8450         case OP_NAME:
8451         case OP_OBJC_NSSTRING:
8452
8453         case UNOP_NEG:
8454         case UNOP_LOGICAL_NOT:
8455         case UNOP_COMPLEMENT:
8456         case UNOP_ADDR:
8457         case UNOP_HIGH:
8458           /* Unary, binary and ternary operators: We have to check
8459              their operands.  If they are constant, then so is the
8460              result of that operation.  For instance, if A and B are
8461              determined to be constants, then so is "A + B".
8462
8463              UNOP_IND is one exception to the rule above, because the
8464              value of *ADDR is not necessarily a constant, even when
8465              ADDR is.  */
8466           break;
8467
8468         case OP_VAR_VALUE:
8469           /* Check whether the associated symbol is a constant.
8470
8471              We use SYMBOL_CLASS rather than TYPE_CONST because it's
8472              possible that a buggy compiler could mark a variable as
8473              constant even when it is not, and TYPE_CONST would return
8474              true in this case, while SYMBOL_CLASS wouldn't.
8475
8476              We also have to check for function symbols because they
8477              are always constant.  */
8478           {
8479             struct symbol *s = exp->elts[i + 2].symbol;
8480
8481             if (SYMBOL_CLASS (s) != LOC_BLOCK
8482                 && SYMBOL_CLASS (s) != LOC_CONST
8483                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
8484               return 0;
8485             break;
8486           }
8487
8488         /* The default action is to return 0 because we are using
8489            the optimistic approach here: If we don't know something,
8490            then it is not a constant.  */
8491         default:
8492           return 0;
8493         }
8494     }
8495
8496   return 1;
8497 }
8498
8499 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
8500
8501 static void
8502 dtor_watchpoint (struct breakpoint *self)
8503 {
8504   struct watchpoint *w = (struct watchpoint *) self;
8505
8506   xfree (w->cond_exp);
8507   xfree (w->exp);
8508   xfree (w->exp_string);
8509   xfree (w->exp_string_reparse);
8510   value_free (w->val);
8511
8512   base_breakpoint_ops.dtor (self);
8513 }
8514
8515 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
8516
8517 static void
8518 re_set_watchpoint (struct breakpoint *b)
8519 {
8520   struct watchpoint *w = (struct watchpoint *) b;
8521
8522   /* Watchpoint can be either on expression using entirely global
8523      variables, or it can be on local variables.
8524
8525      Watchpoints of the first kind are never auto-deleted, and even
8526      persist across program restarts.  Since they can use variables
8527      from shared libraries, we need to reparse expression as libraries
8528      are loaded and unloaded.
8529
8530      Watchpoints on local variables can also change meaning as result
8531      of solib event.  For example, if a watchpoint uses both a local
8532      and a global variables in expression, it's a local watchpoint,
8533      but unloading of a shared library will make the expression
8534      invalid.  This is not a very common use case, but we still
8535      re-evaluate expression, to avoid surprises to the user.
8536
8537      Note that for local watchpoints, we re-evaluate it only if
8538      watchpoints frame id is still valid.  If it's not, it means the
8539      watchpoint is out of scope and will be deleted soon.  In fact,
8540      I'm not sure we'll ever be called in this case.
8541
8542      If a local watchpoint's frame id is still valid, then
8543      w->exp_valid_block is likewise valid, and we can safely use it.
8544
8545      Don't do anything about disabled watchpoints, since they will be
8546      reevaluated again when enabled.  */
8547   update_watchpoint (w, 1 /* reparse */);
8548 }
8549
8550 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
8551
8552 static int
8553 insert_watchpoint (struct bp_location *bl)
8554 {
8555   struct watchpoint *w = (struct watchpoint *) bl->owner;
8556   int length = w->exact ? 1 : bl->length;
8557
8558   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
8559                                    w->cond_exp);
8560 }
8561
8562 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
8563
8564 static int
8565 remove_watchpoint (struct bp_location *bl)
8566 {
8567   struct watchpoint *w = (struct watchpoint *) bl->owner;
8568   int length = w->exact ? 1 : bl->length;
8569
8570   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
8571                                    w->cond_exp);
8572 }
8573
8574 static int
8575 breakpoint_hit_watchpoint (const struct bp_location *bl,
8576                            struct address_space *aspace, CORE_ADDR bp_addr,
8577                            const struct target_waitstatus *ws)
8578 {
8579   struct breakpoint *b = bl->owner;
8580   struct watchpoint *w = (struct watchpoint *) b;
8581
8582   /* Continuable hardware watchpoints are treated as non-existent if the
8583      reason we stopped wasn't a hardware watchpoint (we didn't stop on
8584      some data address).  Otherwise gdb won't stop on a break instruction
8585      in the code (not from a breakpoint) when a hardware watchpoint has
8586      been defined.  Also skip watchpoints which we know did not trigger
8587      (did not match the data address).  */
8588   if (is_hardware_watchpoint (b)
8589       && w->watchpoint_triggered == watch_triggered_no)
8590     return 0;
8591
8592   return 1;
8593 }
8594
8595 static void
8596 check_status_watchpoint (bpstat bs)
8597 {
8598   gdb_assert (is_watchpoint (bs->breakpoint_at));
8599
8600   bpstat_check_watchpoint (bs);
8601 }
8602
8603 /* Implement the "resources_needed" breakpoint_ops method for
8604    hardware watchpoints.  */
8605
8606 static int
8607 resources_needed_watchpoint (const struct bp_location *bl)
8608 {
8609   struct watchpoint *w = (struct watchpoint *) bl->owner;
8610   int length = w->exact? 1 : bl->length;
8611
8612   return target_region_ok_for_hw_watchpoint (bl->address, length);
8613 }
8614
8615 /* Implement the "works_in_software_mode" breakpoint_ops method for
8616    hardware watchpoints.  */
8617
8618 static int
8619 works_in_software_mode_watchpoint (const struct breakpoint *b)
8620 {
8621   /* Read and access watchpoints only work with hardware support.  */
8622   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
8623 }
8624
8625 static enum print_stop_action
8626 print_it_watchpoint (bpstat bs)
8627 {
8628   struct cleanup *old_chain;
8629   struct breakpoint *b;
8630   const struct bp_location *bl;
8631   struct ui_stream *stb;
8632   enum print_stop_action result;
8633   struct watchpoint *w;
8634   struct ui_out *uiout = current_uiout;
8635
8636   gdb_assert (bs->bp_location_at != NULL);
8637
8638   bl = bs->bp_location_at;
8639   b = bs->breakpoint_at;
8640   w = (struct watchpoint *) b;
8641
8642   stb = ui_out_stream_new (uiout);
8643   old_chain = make_cleanup_ui_out_stream_delete (stb);
8644
8645   switch (b->type)
8646     {
8647     case bp_watchpoint:
8648     case bp_hardware_watchpoint:
8649       annotate_watchpoint (b->number);
8650       if (ui_out_is_mi_like_p (uiout))
8651         ui_out_field_string
8652           (uiout, "reason",
8653            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
8654       mention (b);
8655       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
8656       ui_out_text (uiout, "\nOld value = ");
8657       watchpoint_value_print (bs->old_val, stb->stream);
8658       ui_out_field_stream (uiout, "old", stb);
8659       ui_out_text (uiout, "\nNew value = ");
8660       watchpoint_value_print (w->val, stb->stream);
8661       ui_out_field_stream (uiout, "new", stb);
8662       ui_out_text (uiout, "\n");
8663       /* More than one watchpoint may have been triggered.  */
8664       result = PRINT_UNKNOWN;
8665       break;
8666
8667     case bp_read_watchpoint:
8668       if (ui_out_is_mi_like_p (uiout))
8669         ui_out_field_string
8670           (uiout, "reason",
8671            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
8672       mention (b);
8673       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
8674       ui_out_text (uiout, "\nValue = ");
8675       watchpoint_value_print (w->val, stb->stream);
8676       ui_out_field_stream (uiout, "value", stb);
8677       ui_out_text (uiout, "\n");
8678       result = PRINT_UNKNOWN;
8679       break;
8680
8681     case bp_access_watchpoint:
8682       if (bs->old_val != NULL)
8683         {
8684           annotate_watchpoint (b->number);
8685           if (ui_out_is_mi_like_p (uiout))
8686             ui_out_field_string
8687               (uiout, "reason",
8688                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
8689           mention (b);
8690           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
8691           ui_out_text (uiout, "\nOld value = ");
8692           watchpoint_value_print (bs->old_val, stb->stream);
8693           ui_out_field_stream (uiout, "old", stb);
8694           ui_out_text (uiout, "\nNew value = ");
8695         }
8696       else
8697         {
8698           mention (b);
8699           if (ui_out_is_mi_like_p (uiout))
8700             ui_out_field_string
8701               (uiout, "reason",
8702                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
8703           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
8704           ui_out_text (uiout, "\nValue = ");
8705         }
8706       watchpoint_value_print (w->val, stb->stream);
8707       ui_out_field_stream (uiout, "new", stb);
8708       ui_out_text (uiout, "\n");
8709       result = PRINT_UNKNOWN;
8710       break;
8711     default:
8712       result = PRINT_UNKNOWN;
8713     }
8714
8715   do_cleanups (old_chain);
8716   return result;
8717 }
8718
8719 /* Implement the "print_mention" breakpoint_ops method for hardware
8720    watchpoints.  */
8721
8722 static void
8723 print_mention_watchpoint (struct breakpoint *b)
8724 {
8725   struct cleanup *ui_out_chain;
8726   struct watchpoint *w = (struct watchpoint *) b;
8727   struct ui_out *uiout = current_uiout;
8728
8729   switch (b->type)
8730     {
8731     case bp_watchpoint:
8732       ui_out_text (uiout, "Watchpoint ");
8733       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
8734       break;
8735     case bp_hardware_watchpoint:
8736       ui_out_text (uiout, "Hardware watchpoint ");
8737       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
8738       break;
8739     case bp_read_watchpoint:
8740       ui_out_text (uiout, "Hardware read watchpoint ");
8741       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
8742       break;
8743     case bp_access_watchpoint:
8744       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
8745       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
8746       break;
8747     default:
8748       internal_error (__FILE__, __LINE__,
8749                       _("Invalid hardware watchpoint type."));
8750     }
8751
8752   ui_out_field_int (uiout, "number", b->number);
8753   ui_out_text (uiout, ": ");
8754   ui_out_field_string (uiout, "exp", w->exp_string);
8755   do_cleanups (ui_out_chain);
8756 }
8757
8758 /* Implement the "print_recreate" breakpoint_ops method for
8759    watchpoints.  */
8760
8761 static void
8762 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
8763 {
8764   struct watchpoint *w = (struct watchpoint *) b;
8765
8766   switch (b->type)
8767     {
8768     case bp_watchpoint:
8769     case bp_hardware_watchpoint:
8770       fprintf_unfiltered (fp, "watch");
8771       break;
8772     case bp_read_watchpoint:
8773       fprintf_unfiltered (fp, "rwatch");
8774       break;
8775     case bp_access_watchpoint:
8776       fprintf_unfiltered (fp, "awatch");
8777       break;
8778     default:
8779       internal_error (__FILE__, __LINE__,
8780                       _("Invalid watchpoint type."));
8781     }
8782
8783   fprintf_unfiltered (fp, " %s", w->exp_string);
8784   print_recreate_thread (b, fp);
8785 }
8786
8787 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
8788
8789 static struct breakpoint_ops watchpoint_breakpoint_ops;
8790
8791 /* Implement the "insert" breakpoint_ops method for
8792    masked hardware watchpoints.  */
8793
8794 static int
8795 insert_masked_watchpoint (struct bp_location *bl)
8796 {
8797   struct watchpoint *w = (struct watchpoint *) bl->owner;
8798
8799   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
8800                                         bl->watchpoint_type);
8801 }
8802
8803 /* Implement the "remove" breakpoint_ops method for
8804    masked hardware watchpoints.  */
8805
8806 static int
8807 remove_masked_watchpoint (struct bp_location *bl)
8808 {
8809   struct watchpoint *w = (struct watchpoint *) bl->owner;
8810
8811   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
8812                                         bl->watchpoint_type);
8813 }
8814
8815 /* Implement the "resources_needed" breakpoint_ops method for
8816    masked hardware watchpoints.  */
8817
8818 static int
8819 resources_needed_masked_watchpoint (const struct bp_location *bl)
8820 {
8821   struct watchpoint *w = (struct watchpoint *) bl->owner;
8822
8823   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
8824 }
8825
8826 /* Implement the "works_in_software_mode" breakpoint_ops method for
8827    masked hardware watchpoints.  */
8828
8829 static int
8830 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
8831 {
8832   return 0;
8833 }
8834
8835 /* Implement the "print_it" breakpoint_ops method for
8836    masked hardware watchpoints.  */
8837
8838 static enum print_stop_action
8839 print_it_masked_watchpoint (bpstat bs)
8840 {
8841   struct breakpoint *b = bs->breakpoint_at;
8842   struct ui_out *uiout = current_uiout;
8843
8844   /* Masked watchpoints have only one location.  */
8845   gdb_assert (b->loc && b->loc->next == NULL);
8846
8847   switch (b->type)
8848     {
8849     case bp_hardware_watchpoint:
8850       annotate_watchpoint (b->number);
8851       if (ui_out_is_mi_like_p (uiout))
8852         ui_out_field_string
8853           (uiout, "reason",
8854            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
8855       break;
8856
8857     case bp_read_watchpoint:
8858       if (ui_out_is_mi_like_p (uiout))
8859         ui_out_field_string
8860           (uiout, "reason",
8861            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
8862       break;
8863
8864     case bp_access_watchpoint:
8865       if (ui_out_is_mi_like_p (uiout))
8866         ui_out_field_string
8867           (uiout, "reason",
8868            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
8869       break;
8870     default:
8871       internal_error (__FILE__, __LINE__,
8872                       _("Invalid hardware watchpoint type."));
8873     }
8874
8875   mention (b);
8876   ui_out_text (uiout, _("\n\
8877 Check the underlying instruction at PC for the memory\n\
8878 address and value which triggered this watchpoint.\n"));
8879   ui_out_text (uiout, "\n");
8880
8881   /* More than one watchpoint may have been triggered.  */
8882   return PRINT_UNKNOWN;
8883 }
8884
8885 /* Implement the "print_one_detail" breakpoint_ops method for
8886    masked hardware watchpoints.  */
8887
8888 static void
8889 print_one_detail_masked_watchpoint (const struct breakpoint *b,
8890                                     struct ui_out *uiout)
8891 {
8892   struct watchpoint *w = (struct watchpoint *) b;
8893
8894   /* Masked watchpoints have only one location.  */
8895   gdb_assert (b->loc && b->loc->next == NULL);
8896
8897   ui_out_text (uiout, "\tmask ");
8898   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
8899   ui_out_text (uiout, "\n");
8900 }
8901
8902 /* Implement the "print_mention" breakpoint_ops method for
8903    masked hardware watchpoints.  */
8904
8905 static void
8906 print_mention_masked_watchpoint (struct breakpoint *b)
8907 {
8908   struct watchpoint *w = (struct watchpoint *) b;
8909   struct ui_out *uiout = current_uiout;
8910   struct cleanup *ui_out_chain;
8911
8912   switch (b->type)
8913     {
8914     case bp_hardware_watchpoint:
8915       ui_out_text (uiout, "Masked hardware watchpoint ");
8916       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
8917       break;
8918     case bp_read_watchpoint:
8919       ui_out_text (uiout, "Masked hardware read watchpoint ");
8920       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
8921       break;
8922     case bp_access_watchpoint:
8923       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
8924       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
8925       break;
8926     default:
8927       internal_error (__FILE__, __LINE__,
8928                       _("Invalid hardware watchpoint type."));
8929     }
8930
8931   ui_out_field_int (uiout, "number", b->number);
8932   ui_out_text (uiout, ": ");
8933   ui_out_field_string (uiout, "exp", w->exp_string);
8934   do_cleanups (ui_out_chain);
8935 }
8936
8937 /* Implement the "print_recreate" breakpoint_ops method for
8938    masked hardware watchpoints.  */
8939
8940 static void
8941 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
8942 {
8943   struct watchpoint *w = (struct watchpoint *) b;
8944   char tmp[40];
8945
8946   switch (b->type)
8947     {
8948     case bp_hardware_watchpoint:
8949       fprintf_unfiltered (fp, "watch");
8950       break;
8951     case bp_read_watchpoint:
8952       fprintf_unfiltered (fp, "rwatch");
8953       break;
8954     case bp_access_watchpoint:
8955       fprintf_unfiltered (fp, "awatch");
8956       break;
8957     default:
8958       internal_error (__FILE__, __LINE__,
8959                       _("Invalid hardware watchpoint type."));
8960     }
8961
8962   sprintf_vma (tmp, w->hw_wp_mask);
8963   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
8964   print_recreate_thread (b, fp);
8965 }
8966
8967 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
8968
8969 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
8970
8971 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
8972
8973 static int
8974 is_masked_watchpoint (const struct breakpoint *b)
8975 {
8976   return b->ops == &masked_watchpoint_breakpoint_ops;
8977 }
8978
8979 /* accessflag:  hw_write:  watch write, 
8980                 hw_read:   watch read, 
8981                 hw_access: watch access (read or write) */
8982 static void
8983 watch_command_1 (char *arg, int accessflag, int from_tty,
8984                  int just_location, int internal)
8985 {
8986   volatile struct gdb_exception e;
8987   struct breakpoint *b, *scope_breakpoint = NULL;
8988   struct expression *exp;
8989   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
8990   struct value *val, *mark, *result;
8991   struct frame_info *frame;
8992   char *exp_start = NULL;
8993   char *exp_end = NULL;
8994   char *tok, *end_tok;
8995   int toklen = -1;
8996   char *cond_start = NULL;
8997   char *cond_end = NULL;
8998   enum bptype bp_type;
8999   int thread = -1;
9000   int pc = 0;
9001   /* Flag to indicate whether we are going to use masks for
9002      the hardware watchpoint.  */
9003   int use_mask = 0;
9004   CORE_ADDR mask = 0;
9005   struct watchpoint *w;
9006
9007   /* Make sure that we actually have parameters to parse.  */
9008   if (arg != NULL && arg[0] != '\0')
9009     {
9010       char *value_start;
9011
9012       /* Look for "parameter value" pairs at the end
9013          of the arguments string.  */
9014       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
9015         {
9016           /* Skip whitespace at the end of the argument list.  */
9017           while (tok > arg && (*tok == ' ' || *tok == '\t'))
9018             tok--;
9019
9020           /* Find the beginning of the last token.
9021              This is the value of the parameter.  */
9022           while (tok > arg && (*tok != ' ' && *tok != '\t'))
9023             tok--;
9024           value_start = tok + 1;
9025
9026           /* Skip whitespace.  */
9027           while (tok > arg && (*tok == ' ' || *tok == '\t'))
9028             tok--;
9029
9030           end_tok = tok;
9031
9032           /* Find the beginning of the second to last token.
9033              This is the parameter itself.  */
9034           while (tok > arg && (*tok != ' ' && *tok != '\t'))
9035             tok--;
9036           tok++;
9037           toklen = end_tok - tok + 1;
9038
9039           if (toklen == 6 && !strncmp (tok, "thread", 6))
9040             {
9041               /* At this point we've found a "thread" token, which means
9042                  the user is trying to set a watchpoint that triggers
9043                  only in a specific thread.  */
9044               char *endp;
9045
9046               if (thread != -1)
9047                 error(_("You can specify only one thread."));
9048
9049               /* Extract the thread ID from the next token.  */
9050               thread = strtol (value_start, &endp, 0);
9051
9052               /* Check if the user provided a valid numeric value for the
9053                  thread ID.  */
9054               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
9055                 error (_("Invalid thread ID specification %s."), value_start);
9056
9057               /* Check if the thread actually exists.  */
9058               if (!valid_thread_id (thread))
9059                 error (_("Unknown thread %d."), thread);
9060             }
9061           else if (toklen == 4 && !strncmp (tok, "mask", 4))
9062             {
9063               /* We've found a "mask" token, which means the user wants to
9064                  create a hardware watchpoint that is going to have the mask
9065                  facility.  */
9066               struct value *mask_value, *mark;
9067
9068               if (use_mask)
9069                 error(_("You can specify only one mask."));
9070
9071               use_mask = just_location = 1;
9072
9073               mark = value_mark ();
9074               mask_value = parse_to_comma_and_eval (&value_start);
9075               mask = value_as_address (mask_value);
9076               value_free_to_mark (mark);
9077             }
9078           else
9079             /* We didn't recognize what we found.  We should stop here.  */
9080             break;
9081
9082           /* Truncate the string and get rid of the "parameter value" pair before
9083              the arguments string is parsed by the parse_exp_1 function.  */
9084           *tok = '\0';
9085         }
9086     }
9087
9088   /* Parse the rest of the arguments.  */
9089   innermost_block = NULL;
9090   exp_start = arg;
9091   exp = parse_exp_1 (&arg, 0, 0);
9092   exp_end = arg;
9093   /* Remove trailing whitespace from the expression before saving it.
9094      This makes the eventual display of the expression string a bit
9095      prettier.  */
9096   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
9097     --exp_end;
9098
9099   /* Checking if the expression is not constant.  */
9100   if (watchpoint_exp_is_const (exp))
9101     {
9102       int len;
9103
9104       len = exp_end - exp_start;
9105       while (len > 0 && isspace (exp_start[len - 1]))
9106         len--;
9107       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
9108     }
9109
9110   exp_valid_block = innermost_block;
9111   mark = value_mark ();
9112   fetch_subexp_value (exp, &pc, &val, &result, NULL);
9113
9114   if (just_location)
9115     {
9116       int ret;
9117
9118       exp_valid_block = NULL;
9119       val = value_addr (result);
9120       release_value (val);
9121       value_free_to_mark (mark);
9122
9123       if (use_mask)
9124         {
9125           ret = target_masked_watch_num_registers (value_as_address (val),
9126                                                    mask);
9127           if (ret == -1)
9128             error (_("This target does not support masked watchpoints."));
9129           else if (ret == -2)
9130             error (_("Invalid mask or memory region."));
9131         }
9132     }
9133   else if (val != NULL)
9134     release_value (val);
9135
9136   tok = skip_spaces (arg);
9137   end_tok = skip_to_space (tok);
9138
9139   toklen = end_tok - tok;
9140   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9141     {
9142       struct expression *cond;
9143
9144       innermost_block = NULL;
9145       tok = cond_start = end_tok + 1;
9146       cond = parse_exp_1 (&tok, 0, 0);
9147
9148       /* The watchpoint expression may not be local, but the condition
9149          may still be.  E.g.: `watch global if local > 0'.  */
9150       cond_exp_valid_block = innermost_block;
9151
9152       xfree (cond);
9153       cond_end = tok;
9154     }
9155   if (*tok)
9156     error (_("Junk at end of command."));
9157
9158   if (accessflag == hw_read)
9159     bp_type = bp_read_watchpoint;
9160   else if (accessflag == hw_access)
9161     bp_type = bp_access_watchpoint;
9162   else
9163     bp_type = bp_hardware_watchpoint;
9164
9165   frame = block_innermost_frame (exp_valid_block);
9166
9167   /* If the expression is "local", then set up a "watchpoint scope"
9168      breakpoint at the point where we've left the scope of the watchpoint
9169      expression.  Create the scope breakpoint before the watchpoint, so
9170      that we will encounter it first in bpstat_stop_status.  */
9171   if (exp_valid_block && frame)
9172     {
9173       if (frame_id_p (frame_unwind_caller_id (frame)))
9174         {
9175           scope_breakpoint
9176             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
9177                                           frame_unwind_caller_pc (frame),
9178                                           bp_watchpoint_scope,
9179                                           &momentary_breakpoint_ops);
9180
9181           scope_breakpoint->enable_state = bp_enabled;
9182
9183           /* Automatically delete the breakpoint when it hits.  */
9184           scope_breakpoint->disposition = disp_del;
9185
9186           /* Only break in the proper frame (help with recursion).  */
9187           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
9188
9189           /* Set the address at which we will stop.  */
9190           scope_breakpoint->loc->gdbarch
9191             = frame_unwind_caller_arch (frame);
9192           scope_breakpoint->loc->requested_address
9193             = frame_unwind_caller_pc (frame);
9194           scope_breakpoint->loc->address
9195             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
9196                                          scope_breakpoint->loc->requested_address,
9197                                          scope_breakpoint->type);
9198         }
9199     }
9200
9201   /* Now set up the breakpoint.  */
9202
9203   w = XCNEW (struct watchpoint);
9204   b = &w->base;
9205   if (use_mask)
9206     init_raw_breakpoint_without_location (b, NULL, bp_type,
9207                                           &masked_watchpoint_breakpoint_ops);
9208   else
9209     init_raw_breakpoint_without_location (b, NULL, bp_type,
9210                                           &watchpoint_breakpoint_ops);
9211   b->thread = thread;
9212   b->disposition = disp_donttouch;
9213   b->pspace = current_program_space;
9214   w->exp = exp;
9215   w->exp_valid_block = exp_valid_block;
9216   w->cond_exp_valid_block = cond_exp_valid_block;
9217   if (just_location)
9218     {
9219       struct type *t = value_type (val);
9220       CORE_ADDR addr = value_as_address (val);
9221       char *name;
9222
9223       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
9224       name = type_to_string (t);
9225
9226       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
9227                                           core_addr_to_string (addr));
9228       xfree (name);
9229
9230       w->exp_string = xstrprintf ("-location %.*s",
9231                                   (int) (exp_end - exp_start), exp_start);
9232
9233       /* The above expression is in C.  */
9234       b->language = language_c;
9235     }
9236   else
9237     w->exp_string = savestring (exp_start, exp_end - exp_start);
9238
9239   if (use_mask)
9240     {
9241       w->hw_wp_mask = mask;
9242     }
9243   else
9244     {
9245       w->val = val;
9246       w->val_valid = 1;
9247     }
9248
9249   if (cond_start)
9250     b->cond_string = savestring (cond_start, cond_end - cond_start);
9251   else
9252     b->cond_string = 0;
9253
9254   if (frame)
9255     {
9256       w->watchpoint_frame = get_frame_id (frame);
9257       w->watchpoint_thread = inferior_ptid;
9258     }
9259   else
9260     {
9261       w->watchpoint_frame = null_frame_id;
9262       w->watchpoint_thread = null_ptid;
9263     }
9264
9265   if (scope_breakpoint != NULL)
9266     {
9267       /* The scope breakpoint is related to the watchpoint.  We will
9268          need to act on them together.  */
9269       b->related_breakpoint = scope_breakpoint;
9270       scope_breakpoint->related_breakpoint = b;
9271     }
9272
9273   if (!just_location)
9274     value_free_to_mark (mark);
9275
9276   TRY_CATCH (e, RETURN_MASK_ALL)
9277     {
9278       /* Finally update the new watchpoint.  This creates the locations
9279          that should be inserted.  */
9280       update_watchpoint (w, 1);
9281     }
9282   if (e.reason < 0)
9283     {
9284       delete_breakpoint (b);
9285       throw_exception (e);
9286     }
9287
9288   install_breakpoint (internal, b, 1);
9289 }
9290
9291 /* Return count of debug registers needed to watch the given expression.
9292    If the watchpoint cannot be handled in hardware return zero.  */
9293
9294 static int
9295 can_use_hardware_watchpoint (struct value *v)
9296 {
9297   int found_memory_cnt = 0;
9298   struct value *head = v;
9299
9300   /* Did the user specifically forbid us to use hardware watchpoints? */
9301   if (!can_use_hw_watchpoints)
9302     return 0;
9303
9304   /* Make sure that the value of the expression depends only upon
9305      memory contents, and values computed from them within GDB.  If we
9306      find any register references or function calls, we can't use a
9307      hardware watchpoint.
9308
9309      The idea here is that evaluating an expression generates a series
9310      of values, one holding the value of every subexpression.  (The
9311      expression a*b+c has five subexpressions: a, b, a*b, c, and
9312      a*b+c.)  GDB's values hold almost enough information to establish
9313      the criteria given above --- they identify memory lvalues,
9314      register lvalues, computed values, etcetera.  So we can evaluate
9315      the expression, and then scan the chain of values that leaves
9316      behind to decide whether we can detect any possible change to the
9317      expression's final value using only hardware watchpoints.
9318
9319      However, I don't think that the values returned by inferior
9320      function calls are special in any way.  So this function may not
9321      notice that an expression involving an inferior function call
9322      can't be watched with hardware watchpoints.  FIXME.  */
9323   for (; v; v = value_next (v))
9324     {
9325       if (VALUE_LVAL (v) == lval_memory)
9326         {
9327           if (v != head && value_lazy (v))
9328             /* A lazy memory lvalue in the chain is one that GDB never
9329                needed to fetch; we either just used its address (e.g.,
9330                `a' in `a.b') or we never needed it at all (e.g., `a'
9331                in `a,b').  This doesn't apply to HEAD; if that is
9332                lazy then it was not readable, but watch it anyway.  */
9333             ;
9334           else
9335             {
9336               /* Ahh, memory we actually used!  Check if we can cover
9337                  it with hardware watchpoints.  */
9338               struct type *vtype = check_typedef (value_type (v));
9339
9340               /* We only watch structs and arrays if user asked for it
9341                  explicitly, never if they just happen to appear in a
9342                  middle of some value chain.  */
9343               if (v == head
9344                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
9345                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
9346                 {
9347                   CORE_ADDR vaddr = value_address (v);
9348                   int len;
9349                   int num_regs;
9350
9351                   len = (target_exact_watchpoints
9352                          && is_scalar_type_recursive (vtype))?
9353                     1 : TYPE_LENGTH (value_type (v));
9354
9355                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
9356                   if (!num_regs)
9357                     return 0;
9358                   else
9359                     found_memory_cnt += num_regs;
9360                 }
9361             }
9362         }
9363       else if (VALUE_LVAL (v) != not_lval
9364                && deprecated_value_modifiable (v) == 0)
9365         return 0;       /* These are values from the history (e.g., $1).  */
9366       else if (VALUE_LVAL (v) == lval_register)
9367         return 0;       /* Cannot watch a register with a HW watchpoint.  */
9368     }
9369
9370   /* The expression itself looks suitable for using a hardware
9371      watchpoint, but give the target machine a chance to reject it.  */
9372   return found_memory_cnt;
9373 }
9374
9375 void
9376 watch_command_wrapper (char *arg, int from_tty, int internal)
9377 {
9378   watch_command_1 (arg, hw_write, from_tty, 0, internal);
9379 }
9380
9381 /* A helper function that looks for an argument at the start of a
9382    string.  The argument must also either be at the end of the string,
9383    or be followed by whitespace.  Returns 1 if it finds the argument,
9384    0 otherwise.  If the argument is found, it updates *STR.  */
9385
9386 static int
9387 check_for_argument (char **str, char *arg, int arg_len)
9388 {
9389   if (strncmp (*str, arg, arg_len) == 0
9390       && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len])))
9391     {
9392       *str += arg_len;
9393       return 1;
9394     }
9395   return 0;
9396 }
9397
9398 /* A helper function that looks for the "-location" argument and then
9399    calls watch_command_1.  */
9400
9401 static void
9402 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
9403 {
9404   int just_location = 0;
9405
9406   if (arg
9407       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
9408           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
9409     {
9410       arg = skip_spaces (arg);
9411       just_location = 1;
9412     }
9413
9414   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
9415 }
9416
9417 static void
9418 watch_command (char *arg, int from_tty)
9419 {
9420   watch_maybe_just_location (arg, hw_write, from_tty);
9421 }
9422
9423 void
9424 rwatch_command_wrapper (char *arg, int from_tty, int internal)
9425 {
9426   watch_command_1 (arg, hw_read, from_tty, 0, internal);
9427 }
9428
9429 static void
9430 rwatch_command (char *arg, int from_tty)
9431 {
9432   watch_maybe_just_location (arg, hw_read, from_tty);
9433 }
9434
9435 void
9436 awatch_command_wrapper (char *arg, int from_tty, int internal)
9437 {
9438   watch_command_1 (arg, hw_access, from_tty, 0, internal);
9439 }
9440
9441 static void
9442 awatch_command (char *arg, int from_tty)
9443 {
9444   watch_maybe_just_location (arg, hw_access, from_tty);
9445 }
9446 \f
9447
9448 /* Helper routines for the until_command routine in infcmd.c.  Here
9449    because it uses the mechanisms of breakpoints.  */
9450
9451 struct until_break_command_continuation_args
9452 {
9453   struct breakpoint *breakpoint;
9454   struct breakpoint *breakpoint2;
9455   int thread_num;
9456 };
9457
9458 /* This function is called by fetch_inferior_event via the
9459    cmd_continuation pointer, to complete the until command.  It takes
9460    care of cleaning up the temporary breakpoints set up by the until
9461    command.  */
9462 static void
9463 until_break_command_continuation (void *arg, int err)
9464 {
9465   struct until_break_command_continuation_args *a = arg;
9466
9467   delete_breakpoint (a->breakpoint);
9468   if (a->breakpoint2)
9469     delete_breakpoint (a->breakpoint2);
9470   delete_longjmp_breakpoint (a->thread_num);
9471 }
9472
9473 void
9474 until_break_command (char *arg, int from_tty, int anywhere)
9475 {
9476   struct symtabs_and_lines sals;
9477   struct symtab_and_line sal;
9478   struct frame_info *frame = get_selected_frame (NULL);
9479   struct breakpoint *breakpoint;
9480   struct breakpoint *breakpoint2 = NULL;
9481   struct cleanup *old_chain;
9482   int thread;
9483   struct thread_info *tp;
9484
9485   clear_proceed_status ();
9486
9487   /* Set a breakpoint where the user wants it and at return from
9488      this function.  */
9489
9490   if (last_displayed_sal_is_valid ())
9491     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
9492                           get_last_displayed_symtab (),
9493                           get_last_displayed_line ());
9494   else
9495     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
9496                           (struct symtab *) NULL, 0);
9497
9498   if (sals.nelts != 1)
9499     error (_("Couldn't get information on specified line."));
9500
9501   sal = sals.sals[0];
9502   xfree (sals.sals);    /* malloc'd, so freed.  */
9503
9504   if (*arg)
9505     error (_("Junk at end of arguments."));
9506
9507   resolve_sal_pc (&sal);
9508
9509   if (anywhere)
9510     /* If the user told us to continue until a specified location,
9511        we don't specify a frame at which we need to stop.  */
9512     breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
9513                                            null_frame_id, bp_until);
9514   else
9515     /* Otherwise, specify the selected frame, because we want to stop
9516        only at the very same frame.  */
9517     breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
9518                                            get_stack_frame_id (frame),
9519                                            bp_until);
9520
9521   old_chain = make_cleanup_delete_breakpoint (breakpoint);
9522
9523   tp = inferior_thread ();
9524   thread = tp->num;
9525
9526   /* Keep within the current frame, or in frames called by the current
9527      one.  */
9528
9529   if (frame_id_p (frame_unwind_caller_id (frame)))
9530     {
9531       sal = find_pc_line (frame_unwind_caller_pc (frame), 0);
9532       sal.pc = frame_unwind_caller_pc (frame);
9533       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
9534                                               sal,
9535                                               frame_unwind_caller_id (frame),
9536                                               bp_until);
9537       make_cleanup_delete_breakpoint (breakpoint2);
9538
9539       set_longjmp_breakpoint (tp, frame_unwind_caller_id (frame));
9540       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
9541     }
9542
9543   proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
9544
9545   /* If we are running asynchronously, and proceed call above has
9546      actually managed to start the target, arrange for breakpoints to
9547      be deleted when the target stops.  Otherwise, we're already
9548      stopped and delete breakpoints via cleanup chain.  */
9549
9550   if (target_can_async_p () && is_running (inferior_ptid))
9551     {
9552       struct until_break_command_continuation_args *args;
9553       args = xmalloc (sizeof (*args));
9554
9555       args->breakpoint = breakpoint;
9556       args->breakpoint2 = breakpoint2;
9557       args->thread_num = thread;
9558
9559       discard_cleanups (old_chain);
9560       add_continuation (inferior_thread (),
9561                         until_break_command_continuation, args,
9562                         xfree);
9563     }
9564   else
9565     do_cleanups (old_chain);
9566 }
9567
9568 /* This function attempts to parse an optional "if <cond>" clause
9569    from the arg string.  If one is not found, it returns NULL.
9570
9571    Else, it returns a pointer to the condition string.  (It does not
9572    attempt to evaluate the string against a particular block.)  And,
9573    it updates arg to point to the first character following the parsed
9574    if clause in the arg string.  */
9575
9576 static char *
9577 ep_parse_optional_if_clause (char **arg)
9578 {
9579   char *cond_string;
9580
9581   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
9582     return NULL;
9583
9584   /* Skip the "if" keyword.  */
9585   (*arg) += 2;
9586
9587   /* Skip any extra leading whitespace, and record the start of the
9588      condition string.  */
9589   *arg = skip_spaces (*arg);
9590   cond_string = *arg;
9591
9592   /* Assume that the condition occupies the remainder of the arg
9593      string.  */
9594   (*arg) += strlen (cond_string);
9595
9596   return cond_string;
9597 }
9598
9599 /* Commands to deal with catching events, such as signals, exceptions,
9600    process start/exit, etc.  */
9601
9602 typedef enum
9603 {
9604   catch_fork_temporary, catch_vfork_temporary,
9605   catch_fork_permanent, catch_vfork_permanent
9606 }
9607 catch_fork_kind;
9608
9609 static void
9610 catch_fork_command_1 (char *arg, int from_tty, 
9611                       struct cmd_list_element *command)
9612 {
9613   struct gdbarch *gdbarch = get_current_arch ();
9614   char *cond_string = NULL;
9615   catch_fork_kind fork_kind;
9616   int tempflag;
9617
9618   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
9619   tempflag = (fork_kind == catch_fork_temporary
9620               || fork_kind == catch_vfork_temporary);
9621
9622   if (!arg)
9623     arg = "";
9624   arg = skip_spaces (arg);
9625
9626   /* The allowed syntax is:
9627      catch [v]fork
9628      catch [v]fork if <cond>
9629
9630      First, check if there's an if clause.  */
9631   cond_string = ep_parse_optional_if_clause (&arg);
9632
9633   if ((*arg != '\0') && !isspace (*arg))
9634     error (_("Junk at end of arguments."));
9635
9636   /* If this target supports it, create a fork or vfork catchpoint
9637      and enable reporting of such events.  */
9638   switch (fork_kind)
9639     {
9640     case catch_fork_temporary:
9641     case catch_fork_permanent:
9642       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
9643                                           &catch_fork_breakpoint_ops);
9644       break;
9645     case catch_vfork_temporary:
9646     case catch_vfork_permanent:
9647       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
9648                                           &catch_vfork_breakpoint_ops);
9649       break;
9650     default:
9651       error (_("unsupported or unknown fork kind; cannot catch it"));
9652       break;
9653     }
9654 }
9655
9656 static void
9657 catch_exec_command_1 (char *arg, int from_tty, 
9658                       struct cmd_list_element *command)
9659 {
9660   struct exec_catchpoint *c;
9661   struct gdbarch *gdbarch = get_current_arch ();
9662   int tempflag;
9663   char *cond_string = NULL;
9664
9665   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9666
9667   if (!arg)
9668     arg = "";
9669   arg = skip_spaces (arg);
9670
9671   /* The allowed syntax is:
9672      catch exec
9673      catch exec if <cond>
9674
9675      First, check if there's an if clause.  */
9676   cond_string = ep_parse_optional_if_clause (&arg);
9677
9678   if ((*arg != '\0') && !isspace (*arg))
9679     error (_("Junk at end of arguments."));
9680
9681   c = XNEW (struct exec_catchpoint);
9682   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
9683                    &catch_exec_breakpoint_ops);
9684   c->exec_pathname = NULL;
9685
9686   install_breakpoint (0, &c->base, 1);
9687 }
9688
9689 static enum print_stop_action
9690 print_it_exception_catchpoint (bpstat bs)
9691 {
9692   struct ui_out *uiout = current_uiout;
9693   struct breakpoint *b = bs->breakpoint_at;
9694   int bp_temp, bp_throw;
9695
9696   annotate_catchpoint (b->number);
9697
9698   bp_throw = strstr (b->addr_string, "throw") != NULL;
9699   if (b->loc->address != b->loc->requested_address)
9700     breakpoint_adjustment_warning (b->loc->requested_address,
9701                                    b->loc->address,
9702                                    b->number, 1);
9703   bp_temp = b->disposition == disp_del;
9704   ui_out_text (uiout, 
9705                bp_temp ? "Temporary catchpoint "
9706                        : "Catchpoint ");
9707   if (!ui_out_is_mi_like_p (uiout))
9708     ui_out_field_int (uiout, "bkptno", b->number);
9709   ui_out_text (uiout,
9710                bp_throw ? " (exception thrown), "
9711                         : " (exception caught), ");
9712   if (ui_out_is_mi_like_p (uiout))
9713     {
9714       ui_out_field_string (uiout, "reason", 
9715                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9716       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9717       ui_out_field_int (uiout, "bkptno", b->number);
9718     }
9719   return PRINT_SRC_AND_LOC;
9720 }
9721
9722 static void
9723 print_one_exception_catchpoint (struct breakpoint *b, 
9724                                 struct bp_location **last_loc)
9725 {
9726   struct value_print_options opts;
9727   struct ui_out *uiout = current_uiout;
9728
9729   get_user_print_options (&opts);
9730   if (opts.addressprint)
9731     {
9732       annotate_field (4);
9733       if (b->loc == NULL || b->loc->shlib_disabled)
9734         ui_out_field_string (uiout, "addr", "<PENDING>");
9735       else
9736         ui_out_field_core_addr (uiout, "addr",
9737                                 b->loc->gdbarch, b->loc->address);
9738     }
9739   annotate_field (5);
9740   if (b->loc)
9741     *last_loc = b->loc;
9742   if (strstr (b->addr_string, "throw") != NULL)
9743     ui_out_field_string (uiout, "what", "exception throw");
9744   else
9745     ui_out_field_string (uiout, "what", "exception catch");
9746 }
9747
9748 static void
9749 print_mention_exception_catchpoint (struct breakpoint *b)
9750 {
9751   struct ui_out *uiout = current_uiout;
9752   int bp_temp;
9753   int bp_throw;
9754
9755   bp_temp = b->disposition == disp_del;
9756   bp_throw = strstr (b->addr_string, "throw") != NULL;
9757   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
9758                               : _("Catchpoint "));
9759   ui_out_field_int (uiout, "bkptno", b->number);
9760   ui_out_text (uiout, bp_throw ? _(" (throw)")
9761                                : _(" (catch)"));
9762 }
9763
9764 /* Implement the "print_recreate" breakpoint_ops method for throw and
9765    catch catchpoints.  */
9766
9767 static void
9768 print_recreate_exception_catchpoint (struct breakpoint *b, 
9769                                      struct ui_file *fp)
9770 {
9771   int bp_temp;
9772   int bp_throw;
9773
9774   bp_temp = b->disposition == disp_del;
9775   bp_throw = strstr (b->addr_string, "throw") != NULL;
9776   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
9777   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
9778   print_recreate_thread (b, fp);
9779 }
9780
9781 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
9782
9783 static int
9784 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
9785                           enum exception_event_kind ex_event, int from_tty)
9786 {
9787   char *trigger_func_name;
9788  
9789   if (ex_event == EX_EVENT_CATCH)
9790     trigger_func_name = "__cxa_begin_catch";
9791   else
9792     trigger_func_name = "__cxa_throw";
9793
9794   create_breakpoint (get_current_arch (),
9795                      trigger_func_name, cond_string, -1,
9796                      0 /* condition and thread are valid.  */,
9797                      tempflag, bp_breakpoint,
9798                      0,
9799                      AUTO_BOOLEAN_TRUE /* pending */,
9800                      &gnu_v3_exception_catchpoint_ops, from_tty,
9801                      1 /* enabled */,
9802                      0 /* internal */);
9803
9804   return 1;
9805 }
9806
9807 /* Deal with "catch catch" and "catch throw" commands.  */
9808
9809 static void
9810 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
9811                            int tempflag, int from_tty)
9812 {
9813   char *cond_string = NULL;
9814
9815   if (!arg)
9816     arg = "";
9817   arg = skip_spaces (arg);
9818
9819   cond_string = ep_parse_optional_if_clause (&arg);
9820
9821   if ((*arg != '\0') && !isspace (*arg))
9822     error (_("Junk at end of arguments."));
9823
9824   if (ex_event != EX_EVENT_THROW
9825       && ex_event != EX_EVENT_CATCH)
9826     error (_("Unsupported or unknown exception event; cannot catch it"));
9827
9828   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
9829     return;
9830
9831   warning (_("Unsupported with this platform/compiler combination."));
9832 }
9833
9834 /* Implementation of "catch catch" command.  */
9835
9836 static void
9837 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
9838 {
9839   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9840
9841   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
9842 }
9843
9844 /* Implementation of "catch throw" command.  */
9845
9846 static void
9847 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
9848 {
9849   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9850
9851   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
9852 }
9853
9854 void
9855 init_ada_exception_breakpoint (struct breakpoint *b,
9856                                struct gdbarch *gdbarch,
9857                                struct symtab_and_line sal,
9858                                char *addr_string,
9859                                const struct breakpoint_ops *ops,
9860                                int tempflag,
9861                                int from_tty)
9862 {
9863   if (from_tty)
9864     {
9865       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9866       if (!loc_gdbarch)
9867         loc_gdbarch = gdbarch;
9868
9869       describe_other_breakpoints (loc_gdbarch,
9870                                   sal.pspace, sal.pc, sal.section, -1);
9871       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
9872          version for exception catchpoints, because two catchpoints
9873          used for different exception names will use the same address.
9874          In this case, a "breakpoint ... also set at..." warning is
9875          unproductive.  Besides, the warning phrasing is also a bit
9876          inappropriate, we should use the word catchpoint, and tell
9877          the user what type of catchpoint it is.  The above is good
9878          enough for now, though.  */
9879     }
9880
9881   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
9882
9883   b->enable_state = bp_enabled;
9884   b->disposition = tempflag ? disp_del : disp_donttouch;
9885   b->addr_string = addr_string;
9886   b->language = language_ada;
9887 }
9888
9889 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
9890    filter list, or NULL if no filtering is required.  */
9891 static VEC(int) *
9892 catch_syscall_split_args (char *arg)
9893 {
9894   VEC(int) *result = NULL;
9895   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
9896
9897   while (*arg != '\0')
9898     {
9899       int i, syscall_number;
9900       char *endptr;
9901       char cur_name[128];
9902       struct syscall s;
9903
9904       /* Skip whitespace.  */
9905       while (isspace (*arg))
9906         arg++;
9907
9908       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
9909         cur_name[i] = arg[i];
9910       cur_name[i] = '\0';
9911       arg += i;
9912
9913       /* Check if the user provided a syscall name or a number.  */
9914       syscall_number = (int) strtol (cur_name, &endptr, 0);
9915       if (*endptr == '\0')
9916         get_syscall_by_number (syscall_number, &s);
9917       else
9918         {
9919           /* We have a name.  Let's check if it's valid and convert it
9920              to a number.  */
9921           get_syscall_by_name (cur_name, &s);
9922
9923           if (s.number == UNKNOWN_SYSCALL)
9924             /* Here we have to issue an error instead of a warning,
9925                because GDB cannot do anything useful if there's no
9926                syscall number to be caught.  */
9927             error (_("Unknown syscall name '%s'."), cur_name);
9928         }
9929
9930       /* Ok, it's valid.  */
9931       VEC_safe_push (int, result, s.number);
9932     }
9933
9934   discard_cleanups (cleanup);
9935   return result;
9936 }
9937
9938 /* Implement the "catch syscall" command.  */
9939
9940 static void
9941 catch_syscall_command_1 (char *arg, int from_tty, 
9942                          struct cmd_list_element *command)
9943 {
9944   int tempflag;
9945   VEC(int) *filter;
9946   struct syscall s;
9947   struct gdbarch *gdbarch = get_current_arch ();
9948
9949   /* Checking if the feature if supported.  */
9950   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
9951     error (_("The feature 'catch syscall' is not supported on \
9952 this architecture yet."));
9953
9954   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9955
9956   arg = skip_spaces (arg);
9957
9958   /* We need to do this first "dummy" translation in order
9959      to get the syscall XML file loaded or, most important,
9960      to display a warning to the user if there's no XML file
9961      for his/her architecture.  */
9962   get_syscall_by_number (0, &s);
9963
9964   /* The allowed syntax is:
9965      catch syscall
9966      catch syscall <name | number> [<name | number> ... <name | number>]
9967
9968      Let's check if there's a syscall name.  */
9969
9970   if (arg != NULL)
9971     filter = catch_syscall_split_args (arg);
9972   else
9973     filter = NULL;
9974
9975   create_syscall_event_catchpoint (tempflag, filter,
9976                                    &catch_syscall_breakpoint_ops);
9977 }
9978
9979 static void
9980 catch_command (char *arg, int from_tty)
9981 {
9982   error (_("Catch requires an event name."));
9983 }
9984 \f
9985
9986 static void
9987 tcatch_command (char *arg, int from_tty)
9988 {
9989   error (_("Catch requires an event name."));
9990 }
9991
9992 /* A qsort comparison function that sorts breakpoints in order.  */
9993
9994 static int
9995 compare_breakpoints (const void *a, const void *b)
9996 {
9997   const breakpoint_p *ba = a;
9998   uintptr_t ua = (uintptr_t) *ba;
9999   const breakpoint_p *bb = b;
10000   uintptr_t ub = (uintptr_t) *bb;
10001
10002   if ((*ba)->number < (*bb)->number)
10003     return -1;
10004   else if ((*ba)->number > (*bb)->number)
10005     return 1;
10006
10007   /* Now sort by address, in case we see, e..g, two breakpoints with
10008      the number 0.  */
10009   if (ua < ub)
10010     return -1;
10011   return ub > ub ? 1 : 0;
10012 }
10013
10014 /* Delete breakpoints by address or line.  */
10015
10016 static void
10017 clear_command (char *arg, int from_tty)
10018 {
10019   struct breakpoint *b, *prev;
10020   VEC(breakpoint_p) *found = 0;
10021   int ix;
10022   int default_match;
10023   struct symtabs_and_lines sals;
10024   struct symtab_and_line sal;
10025   int i;
10026   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
10027
10028   if (arg)
10029     {
10030       sals = decode_line_spec (arg, (DECODE_LINE_FUNFIRSTLINE
10031                                      | DECODE_LINE_LIST_MODE));
10032       default_match = 0;
10033     }
10034   else
10035     {
10036       sals.sals = (struct symtab_and_line *)
10037         xmalloc (sizeof (struct symtab_and_line));
10038       make_cleanup (xfree, sals.sals);
10039       init_sal (&sal);          /* Initialize to zeroes.  */
10040
10041       /* Set sal's line, symtab, pc, and pspace to the values
10042          corresponding to the last call to print_frame_info.  If the
10043          codepoint is not valid, this will set all the fields to 0.  */
10044       get_last_displayed_sal (&sal);
10045       if (sal.symtab == 0)
10046         error (_("No source file specified."));
10047
10048       sals.sals[0] = sal;
10049       sals.nelts = 1;
10050
10051       default_match = 1;
10052     }
10053
10054   /* We don't call resolve_sal_pc here.  That's not as bad as it
10055      seems, because all existing breakpoints typically have both
10056      file/line and pc set.  So, if clear is given file/line, we can
10057      match this to existing breakpoint without obtaining pc at all.
10058
10059      We only support clearing given the address explicitly 
10060      present in breakpoint table.  Say, we've set breakpoint 
10061      at file:line.  There were several PC values for that file:line,
10062      due to optimization, all in one block.
10063
10064      We've picked one PC value.  If "clear" is issued with another
10065      PC corresponding to the same file:line, the breakpoint won't
10066      be cleared.  We probably can still clear the breakpoint, but 
10067      since the other PC value is never presented to user, user
10068      can only find it by guessing, and it does not seem important
10069      to support that.  */
10070
10071   /* For each line spec given, delete bps which correspond to it.  Do
10072      it in two passes, solely to preserve the current behavior that
10073      from_tty is forced true if we delete more than one
10074      breakpoint.  */
10075
10076   found = NULL;
10077   make_cleanup (VEC_cleanup (breakpoint_p), &found);
10078   for (i = 0; i < sals.nelts; i++)
10079     {
10080       int is_abs, sal_name_len;
10081
10082       /* If exact pc given, clear bpts at that pc.
10083          If line given (pc == 0), clear all bpts on specified line.
10084          If defaulting, clear all bpts on default line
10085          or at default pc.
10086
10087          defaulting    sal.pc != 0    tests to do
10088
10089          0              1             pc
10090          1              1             pc _and_ line
10091          0              0             line
10092          1              0             <can't happen> */
10093
10094       sal = sals.sals[i];
10095       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
10096       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
10097
10098       /* Find all matching breakpoints and add them to 'found'.  */
10099       ALL_BREAKPOINTS (b)
10100         {
10101           int match = 0;
10102           /* Are we going to delete b?  */
10103           if (b->type != bp_none && !is_watchpoint (b))
10104             {
10105               struct bp_location *loc = b->loc;
10106               for (; loc; loc = loc->next)
10107                 {
10108                   /* If the user specified file:line, don't allow a PC
10109                      match.  This matches historical gdb behavior.  */
10110                   int pc_match = (!sal.explicit_line
10111                                   && sal.pc
10112                                   && (loc->pspace == sal.pspace)
10113                                   && (loc->address == sal.pc)
10114                                   && (!section_is_overlay (loc->section)
10115                                       || loc->section == sal.section));
10116                   int line_match = 0;
10117
10118                   if ((default_match || sal.explicit_line)
10119                       && loc->source_file != NULL
10120                       && sal.symtab != NULL
10121                       && sal.pspace == loc->pspace
10122                       && loc->line_number == sal.line)
10123                     {
10124                       if (filename_cmp (loc->source_file,
10125                                         sal.symtab->filename) == 0)
10126                         line_match = 1;
10127                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
10128                                && compare_filenames_for_search (loc->source_file,
10129                                                                 sal.symtab->filename,
10130                                                                 sal_name_len))
10131                         line_match = 1;
10132                     }
10133
10134                   if (pc_match || line_match)
10135                     {
10136                       match = 1;
10137                       break;
10138                     }
10139                 }
10140             }
10141
10142           if (match)
10143             VEC_safe_push(breakpoint_p, found, b);
10144         }
10145     }
10146
10147   /* Now go thru the 'found' chain and delete them.  */
10148   if (VEC_empty(breakpoint_p, found))
10149     {
10150       if (arg)
10151         error (_("No breakpoint at %s."), arg);
10152       else
10153         error (_("No breakpoint at this line."));
10154     }
10155
10156   /* Remove duplicates from the vec.  */
10157   qsort (VEC_address (breakpoint_p, found),
10158          VEC_length (breakpoint_p, found),
10159          sizeof (breakpoint_p),
10160          compare_breakpoints);
10161   prev = VEC_index (breakpoint_p, found, 0);
10162   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
10163     {
10164       if (b == prev)
10165         {
10166           VEC_ordered_remove (breakpoint_p, found, ix);
10167           --ix;
10168         }
10169     }
10170
10171   if (VEC_length(breakpoint_p, found) > 1)
10172     from_tty = 1;       /* Always report if deleted more than one.  */
10173   if (from_tty)
10174     {
10175       if (VEC_length(breakpoint_p, found) == 1)
10176         printf_unfiltered (_("Deleted breakpoint "));
10177       else
10178         printf_unfiltered (_("Deleted breakpoints "));
10179     }
10180   breakpoints_changed ();
10181
10182   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
10183     {
10184       if (from_tty)
10185         printf_unfiltered ("%d ", b->number);
10186       delete_breakpoint (b);
10187     }
10188   if (from_tty)
10189     putchar_unfiltered ('\n');
10190
10191   do_cleanups (cleanups);
10192 }
10193 \f
10194 /* Delete breakpoint in BS if they are `delete' breakpoints and
10195    all breakpoints that are marked for deletion, whether hit or not.
10196    This is called after any breakpoint is hit, or after errors.  */
10197
10198 void
10199 breakpoint_auto_delete (bpstat bs)
10200 {
10201   struct breakpoint *b, *b_tmp;
10202
10203   for (; bs; bs = bs->next)
10204     if (bs->breakpoint_at
10205         && bs->breakpoint_at->disposition == disp_del
10206         && bs->stop)
10207       delete_breakpoint (bs->breakpoint_at);
10208
10209   ALL_BREAKPOINTS_SAFE (b, b_tmp)
10210   {
10211     if (b->disposition == disp_del_at_next_stop)
10212       delete_breakpoint (b);
10213   }
10214 }
10215
10216 /* A comparison function for bp_location AP and BP being interfaced to
10217    qsort.  Sort elements primarily by their ADDRESS (no matter what
10218    does breakpoint_address_is_meaningful say for its OWNER),
10219    secondarily by ordering first bp_permanent OWNERed elements and
10220    terciarily just ensuring the array is sorted stable way despite
10221    qsort being an unstable algorithm.  */
10222
10223 static int
10224 bp_location_compare (const void *ap, const void *bp)
10225 {
10226   struct bp_location *a = *(void **) ap;
10227   struct bp_location *b = *(void **) bp;
10228   /* A and B come from existing breakpoints having non-NULL OWNER.  */
10229   int a_perm = a->owner->enable_state == bp_permanent;
10230   int b_perm = b->owner->enable_state == bp_permanent;
10231
10232   if (a->address != b->address)
10233     return (a->address > b->address) - (a->address < b->address);
10234
10235   /* Sort permanent breakpoints first.  */
10236   if (a_perm != b_perm)
10237     return (a_perm < b_perm) - (a_perm > b_perm);
10238
10239   /* Make the user-visible order stable across GDB runs.  Locations of
10240      the same breakpoint can be sorted in arbitrary order.  */
10241
10242   if (a->owner->number != b->owner->number)
10243     return (a->owner->number > b->owner->number)
10244            - (a->owner->number < b->owner->number);
10245
10246   return (a > b) - (a < b);
10247 }
10248
10249 /* Set bp_location_placed_address_before_address_max and
10250    bp_location_shadow_len_after_address_max according to the current
10251    content of the bp_location array.  */
10252
10253 static void
10254 bp_location_target_extensions_update (void)
10255 {
10256   struct bp_location *bl, **blp_tmp;
10257
10258   bp_location_placed_address_before_address_max = 0;
10259   bp_location_shadow_len_after_address_max = 0;
10260
10261   ALL_BP_LOCATIONS (bl, blp_tmp)
10262     {
10263       CORE_ADDR start, end, addr;
10264
10265       if (!bp_location_has_shadow (bl))
10266         continue;
10267
10268       start = bl->target_info.placed_address;
10269       end = start + bl->target_info.shadow_len;
10270
10271       gdb_assert (bl->address >= start);
10272       addr = bl->address - start;
10273       if (addr > bp_location_placed_address_before_address_max)
10274         bp_location_placed_address_before_address_max = addr;
10275
10276       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
10277
10278       gdb_assert (bl->address < end);
10279       addr = end - bl->address;
10280       if (addr > bp_location_shadow_len_after_address_max)
10281         bp_location_shadow_len_after_address_max = addr;
10282     }
10283 }
10284
10285 /* Download tracepoint locations if they haven't been.  */
10286
10287 static void
10288 download_tracepoint_locations (void)
10289 {
10290   struct bp_location *bl, **blp_tmp;
10291   struct cleanup *old_chain;
10292
10293   if (!target_can_download_tracepoint ())
10294     return;
10295
10296   old_chain = save_current_space_and_thread ();
10297
10298   ALL_BP_LOCATIONS (bl, blp_tmp)
10299     {
10300       struct tracepoint *t;
10301
10302       if (!is_tracepoint (bl->owner))
10303         continue;
10304
10305       if ((bl->owner->type == bp_fast_tracepoint
10306            ? !may_insert_fast_tracepoints
10307            : !may_insert_tracepoints))
10308         continue;
10309
10310       /* In tracepoint, locations are _never_ duplicated, so
10311          should_be_inserted is equivalent to
10312          unduplicated_should_be_inserted.  */
10313       if (!should_be_inserted (bl) || bl->inserted)
10314         continue;
10315
10316       switch_to_program_space_and_thread (bl->pspace);
10317
10318       target_download_tracepoint (bl);
10319
10320       bl->inserted = 1;
10321       t = (struct tracepoint *) bl->owner;
10322       t->number_on_target = bl->owner->number;
10323     }
10324
10325   do_cleanups (old_chain);
10326 }
10327
10328 /* Swap the insertion/duplication state between two locations.  */
10329
10330 static void
10331 swap_insertion (struct bp_location *left, struct bp_location *right)
10332 {
10333   const int left_inserted = left->inserted;
10334   const int left_duplicate = left->duplicate;
10335   const struct bp_target_info left_target_info = left->target_info;
10336
10337   /* Locations of tracepoints can never be duplicated.  */
10338   if (is_tracepoint (left->owner))
10339     gdb_assert (!left->duplicate);
10340   if (is_tracepoint (right->owner))
10341     gdb_assert (!right->duplicate);
10342
10343   left->inserted = right->inserted;
10344   left->duplicate = right->duplicate;
10345   left->target_info = right->target_info;
10346   right->inserted = left_inserted;
10347   right->duplicate = left_duplicate;
10348   right->target_info = left_target_info;
10349 }
10350
10351 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
10352    into the inferior, only remove already-inserted locations that no
10353    longer should be inserted.  Functions that delete a breakpoint or
10354    breakpoints should pass false, so that deleting a breakpoint
10355    doesn't have the side effect of inserting the locations of other
10356    breakpoints that are marked not-inserted, but should_be_inserted
10357    returns true on them.
10358
10359    This behaviour is useful is situations close to tear-down -- e.g.,
10360    after an exec, while the target still has execution, but breakpoint
10361    shadows of the previous executable image should *NOT* be restored
10362    to the new image; or before detaching, where the target still has
10363    execution and wants to delete breakpoints from GDB's lists, and all
10364    breakpoints had already been removed from the inferior.  */
10365
10366 static void
10367 update_global_location_list (int should_insert)
10368 {
10369   struct breakpoint *b;
10370   struct bp_location **locp, *loc;
10371   struct cleanup *cleanups;
10372
10373   /* Used in the duplicates detection below.  When iterating over all
10374      bp_locations, points to the first bp_location of a given address.
10375      Breakpoints and watchpoints of different types are never
10376      duplicates of each other.  Keep one pointer for each type of
10377      breakpoint/watchpoint, so we only need to loop over all locations
10378      once.  */
10379   struct bp_location *bp_loc_first;  /* breakpoint */
10380   struct bp_location *wp_loc_first;  /* hardware watchpoint */
10381   struct bp_location *awp_loc_first; /* access watchpoint */
10382   struct bp_location *rwp_loc_first; /* read watchpoint */
10383
10384   /* Saved former bp_location array which we compare against the newly
10385      built bp_location from the current state of ALL_BREAKPOINTS.  */
10386   struct bp_location **old_location, **old_locp;
10387   unsigned old_location_count;
10388
10389   old_location = bp_location;
10390   old_location_count = bp_location_count;
10391   bp_location = NULL;
10392   bp_location_count = 0;
10393   cleanups = make_cleanup (xfree, old_location);
10394
10395   ALL_BREAKPOINTS (b)
10396     for (loc = b->loc; loc; loc = loc->next)
10397       bp_location_count++;
10398
10399   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
10400   locp = bp_location;
10401   ALL_BREAKPOINTS (b)
10402     for (loc = b->loc; loc; loc = loc->next)
10403       *locp++ = loc;
10404   qsort (bp_location, bp_location_count, sizeof (*bp_location),
10405          bp_location_compare);
10406
10407   bp_location_target_extensions_update ();
10408
10409   /* Identify bp_location instances that are no longer present in the
10410      new list, and therefore should be freed.  Note that it's not
10411      necessary that those locations should be removed from inferior --
10412      if there's another location at the same address (previously
10413      marked as duplicate), we don't need to remove/insert the
10414      location.
10415      
10416      LOCP is kept in sync with OLD_LOCP, each pointing to the current
10417      and former bp_location array state respectively.  */
10418
10419   locp = bp_location;
10420   for (old_locp = old_location; old_locp < old_location + old_location_count;
10421        old_locp++)
10422     {
10423       struct bp_location *old_loc = *old_locp;
10424       struct bp_location **loc2p;
10425
10426       /* Tells if 'old_loc' is found among the new locations.  If
10427          not, we have to free it.  */
10428       int found_object = 0;
10429       /* Tells if the location should remain inserted in the target.  */
10430       int keep_in_target = 0;
10431       int removed = 0;
10432
10433       /* Skip LOCP entries which will definitely never be needed.
10434          Stop either at or being the one matching OLD_LOC.  */
10435       while (locp < bp_location + bp_location_count
10436              && (*locp)->address < old_loc->address)
10437         locp++;
10438
10439       for (loc2p = locp;
10440            (loc2p < bp_location + bp_location_count
10441             && (*loc2p)->address == old_loc->address);
10442            loc2p++)
10443         {
10444           if (*loc2p == old_loc)
10445             {
10446               found_object = 1;
10447               break;
10448             }
10449         }
10450
10451       /* If this location is no longer present, and inserted, look if
10452          there's maybe a new location at the same address.  If so,
10453          mark that one inserted, and don't remove this one.  This is
10454          needed so that we don't have a time window where a breakpoint
10455          at certain location is not inserted.  */
10456
10457       if (old_loc->inserted)
10458         {
10459           /* If the location is inserted now, we might have to remove
10460              it.  */
10461
10462           if (found_object && should_be_inserted (old_loc))
10463             {
10464               /* The location is still present in the location list,
10465                  and still should be inserted.  Don't do anything.  */
10466               keep_in_target = 1;
10467             }
10468           else
10469             {
10470               /* The location is either no longer present, or got
10471                  disabled.  See if there's another location at the
10472                  same address, in which case we don't need to remove
10473                  this one from the target.  */
10474
10475               /* OLD_LOC comes from existing struct breakpoint.  */
10476               if (breakpoint_address_is_meaningful (old_loc->owner))
10477                 {
10478                   for (loc2p = locp;
10479                        (loc2p < bp_location + bp_location_count
10480                         && (*loc2p)->address == old_loc->address);
10481                        loc2p++)
10482                     {
10483                       struct bp_location *loc2 = *loc2p;
10484
10485                       if (breakpoint_locations_match (loc2, old_loc))
10486                         {
10487                           /* Read watchpoint locations are switched to
10488                              access watchpoints, if the former are not
10489                              supported, but the latter are.  */
10490                           if (is_hardware_watchpoint (old_loc->owner))
10491                             {
10492                               gdb_assert (is_hardware_watchpoint (loc2->owner));
10493                               loc2->watchpoint_type = old_loc->watchpoint_type;
10494                             }
10495
10496                           /* loc2 is a duplicated location. We need to check
10497                              if it should be inserted in case it will be
10498                              unduplicated.  */
10499                           if (loc2 != old_loc
10500                               && unduplicated_should_be_inserted (loc2))
10501                             {
10502                               swap_insertion (old_loc, loc2);
10503                               keep_in_target = 1;
10504                               break;
10505                             }
10506                         }
10507                     }
10508                 }
10509             }
10510
10511           if (!keep_in_target)
10512             {
10513               if (remove_breakpoint (old_loc, mark_uninserted))
10514                 {
10515                   /* This is just about all we can do.  We could keep
10516                      this location on the global list, and try to
10517                      remove it next time, but there's no particular
10518                      reason why we will succeed next time.
10519                      
10520                      Note that at this point, old_loc->owner is still
10521                      valid, as delete_breakpoint frees the breakpoint
10522                      only after calling us.  */
10523                   printf_filtered (_("warning: Error removing "
10524                                      "breakpoint %d\n"), 
10525                                    old_loc->owner->number);
10526                 }
10527               removed = 1;
10528             }
10529         }
10530
10531       if (!found_object)
10532         {
10533           if (removed && non_stop
10534               && breakpoint_address_is_meaningful (old_loc->owner)
10535               && !is_hardware_watchpoint (old_loc->owner))
10536             {
10537               /* This location was removed from the target.  In
10538                  non-stop mode, a race condition is possible where
10539                  we've removed a breakpoint, but stop events for that
10540                  breakpoint are already queued and will arrive later.
10541                  We apply an heuristic to be able to distinguish such
10542                  SIGTRAPs from other random SIGTRAPs: we keep this
10543                  breakpoint location for a bit, and will retire it
10544                  after we see some number of events.  The theory here
10545                  is that reporting of events should, "on the average",
10546                  be fair, so after a while we'll see events from all
10547                  threads that have anything of interest, and no longer
10548                  need to keep this breakpoint location around.  We
10549                  don't hold locations forever so to reduce chances of
10550                  mistaking a non-breakpoint SIGTRAP for a breakpoint
10551                  SIGTRAP.
10552
10553                  The heuristic failing can be disastrous on
10554                  decr_pc_after_break targets.
10555
10556                  On decr_pc_after_break targets, like e.g., x86-linux,
10557                  if we fail to recognize a late breakpoint SIGTRAP,
10558                  because events_till_retirement has reached 0 too
10559                  soon, we'll fail to do the PC adjustment, and report
10560                  a random SIGTRAP to the user.  When the user resumes
10561                  the inferior, it will most likely immediately crash
10562                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
10563                  corrupted, because of being resumed e.g., in the
10564                  middle of a multi-byte instruction, or skipped a
10565                  one-byte instruction.  This was actually seen happen
10566                  on native x86-linux, and should be less rare on
10567                  targets that do not support new thread events, like
10568                  remote, due to the heuristic depending on
10569                  thread_count.
10570
10571                  Mistaking a random SIGTRAP for a breakpoint trap
10572                  causes similar symptoms (PC adjustment applied when
10573                  it shouldn't), but then again, playing with SIGTRAPs
10574                  behind the debugger's back is asking for trouble.
10575
10576                  Since hardware watchpoint traps are always
10577                  distinguishable from other traps, so we don't need to
10578                  apply keep hardware watchpoint moribund locations
10579                  around.  We simply always ignore hardware watchpoint
10580                  traps we can no longer explain.  */
10581
10582               old_loc->events_till_retirement = 3 * (thread_count () + 1);
10583               old_loc->owner = NULL;
10584
10585               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
10586             }
10587           else
10588             {
10589               old_loc->owner = NULL;
10590               decref_bp_location (&old_loc);
10591             }
10592         }
10593     }
10594
10595   /* Rescan breakpoints at the same address and section, marking the
10596      first one as "first" and any others as "duplicates".  This is so
10597      that the bpt instruction is only inserted once.  If we have a
10598      permanent breakpoint at the same place as BPT, make that one the
10599      official one, and the rest as duplicates.  Permanent breakpoints
10600      are sorted first for the same address.
10601
10602      Do the same for hardware watchpoints, but also considering the
10603      watchpoint's type (regular/access/read) and length.  */
10604
10605   bp_loc_first = NULL;
10606   wp_loc_first = NULL;
10607   awp_loc_first = NULL;
10608   rwp_loc_first = NULL;
10609   ALL_BP_LOCATIONS (loc, locp)
10610     {
10611       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
10612          non-NULL.  */
10613       struct bp_location **loc_first_p;
10614       b = loc->owner;
10615
10616       if (!should_be_inserted (loc)
10617           || !breakpoint_address_is_meaningful (b)
10618           /* Don't detect duplicate for tracepoint locations because they are
10619            never duplicated.  See the comments in field `duplicate' of
10620            `struct bp_location'.  */
10621           || is_tracepoint (b))
10622         continue;
10623
10624       /* Permanent breakpoint should always be inserted.  */
10625       if (b->enable_state == bp_permanent && ! loc->inserted)
10626         internal_error (__FILE__, __LINE__,
10627                         _("allegedly permanent breakpoint is not "
10628                         "actually inserted"));
10629
10630       if (b->type == bp_hardware_watchpoint)
10631         loc_first_p = &wp_loc_first;
10632       else if (b->type == bp_read_watchpoint)
10633         loc_first_p = &rwp_loc_first;
10634       else if (b->type == bp_access_watchpoint)
10635         loc_first_p = &awp_loc_first;
10636       else
10637         loc_first_p = &bp_loc_first;
10638
10639       if (*loc_first_p == NULL
10640           || (overlay_debugging && loc->section != (*loc_first_p)->section)
10641           || !breakpoint_locations_match (loc, *loc_first_p))
10642         {
10643           *loc_first_p = loc;
10644           loc->duplicate = 0;
10645           continue;
10646         }
10647
10648
10649       /* This and the above ensure the invariant that the first location
10650          is not duplicated, and is the inserted one.
10651          All following are marked as duplicated, and are not inserted.  */
10652       if (loc->inserted)
10653         swap_insertion (loc, *loc_first_p);
10654       loc->duplicate = 1;
10655
10656       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
10657           && b->enable_state != bp_permanent)
10658         internal_error (__FILE__, __LINE__,
10659                         _("another breakpoint was inserted on top of "
10660                         "a permanent breakpoint"));
10661     }
10662
10663   if (breakpoints_always_inserted_mode () && should_insert
10664       && (have_live_inferiors ()
10665           || (gdbarch_has_global_breakpoints (target_gdbarch))))
10666     insert_breakpoint_locations ();
10667
10668   if (should_insert)
10669     download_tracepoint_locations ();
10670
10671   do_cleanups (cleanups);
10672 }
10673
10674 void
10675 breakpoint_retire_moribund (void)
10676 {
10677   struct bp_location *loc;
10678   int ix;
10679
10680   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
10681     if (--(loc->events_till_retirement) == 0)
10682       {
10683         decref_bp_location (&loc);
10684         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
10685         --ix;
10686       }
10687 }
10688
10689 static void
10690 update_global_location_list_nothrow (int inserting)
10691 {
10692   volatile struct gdb_exception e;
10693
10694   TRY_CATCH (e, RETURN_MASK_ERROR)
10695     update_global_location_list (inserting);
10696 }
10697
10698 /* Clear BKP from a BPS.  */
10699
10700 static void
10701 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
10702 {
10703   bpstat bs;
10704
10705   for (bs = bps; bs; bs = bs->next)
10706     if (bs->breakpoint_at == bpt)
10707       {
10708         bs->breakpoint_at = NULL;
10709         bs->old_val = NULL;
10710         /* bs->commands will be freed later.  */
10711       }
10712 }
10713
10714 /* Callback for iterate_over_threads.  */
10715 static int
10716 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
10717 {
10718   struct breakpoint *bpt = data;
10719
10720   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
10721   return 0;
10722 }
10723
10724 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
10725    callbacks.  */
10726
10727 static void
10728 say_where (struct breakpoint *b)
10729 {
10730   struct ui_out *uiout = current_uiout;
10731   struct value_print_options opts;
10732
10733   get_user_print_options (&opts);
10734
10735   /* i18n: cagney/2005-02-11: Below needs to be merged into a
10736      single string.  */
10737   if (b->loc == NULL)
10738     {
10739       printf_filtered (_(" (%s) pending."), b->addr_string);
10740     }
10741   else
10742     {
10743       if (opts.addressprint || b->loc->source_file == NULL)
10744         {
10745           printf_filtered (" at ");
10746           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
10747                           gdb_stdout);
10748         }
10749       if (b->loc->source_file)
10750         {
10751           /* If there is a single location, we can print the location
10752              more nicely.  */
10753           if (b->loc->next == NULL)
10754             printf_filtered (": file %s, line %d.",
10755                              b->loc->source_file, b->loc->line_number);
10756           else
10757             /* This is not ideal, but each location may have a
10758                different file name, and this at least reflects the
10759                real situation somewhat.  */
10760             printf_filtered (": %s.", b->addr_string);
10761         }
10762
10763       if (b->loc->next)
10764         {
10765           struct bp_location *loc = b->loc;
10766           int n = 0;
10767           for (; loc; loc = loc->next)
10768             ++n;
10769           printf_filtered (" (%d locations)", n);
10770         }
10771     }
10772 }
10773
10774 /* Default bp_location_ops methods.  */
10775
10776 static void
10777 bp_location_dtor (struct bp_location *self)
10778 {
10779   xfree (self->cond);
10780   xfree (self->function_name);
10781   xfree (self->source_file);
10782 }
10783
10784 static const struct bp_location_ops bp_location_ops =
10785 {
10786   bp_location_dtor
10787 };
10788
10789 /* Default breakpoint_ops methods all breakpoint_ops ultimately
10790    inherit from.  */
10791
10792 static void
10793 base_breakpoint_dtor (struct breakpoint *self)
10794 {
10795   decref_counted_command_line (&self->commands);
10796   xfree (self->cond_string);
10797   xfree (self->addr_string);
10798   xfree (self->filter);
10799   xfree (self->addr_string_range_end);
10800 }
10801
10802 static struct bp_location *
10803 base_breakpoint_allocate_location (struct breakpoint *self)
10804 {
10805   struct bp_location *loc;
10806
10807   loc = XNEW (struct bp_location);
10808   init_bp_location (loc, &bp_location_ops, self);
10809   return loc;
10810 }
10811
10812 static void
10813 base_breakpoint_re_set (struct breakpoint *b)
10814 {
10815   /* Nothing to re-set. */
10816 }
10817
10818 #define internal_error_pure_virtual_called() \
10819   gdb_assert_not_reached ("pure virtual function called")
10820
10821 static int
10822 base_breakpoint_insert_location (struct bp_location *bl)
10823 {
10824   internal_error_pure_virtual_called ();
10825 }
10826
10827 static int
10828 base_breakpoint_remove_location (struct bp_location *bl)
10829 {
10830   internal_error_pure_virtual_called ();
10831 }
10832
10833 static int
10834 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
10835                                 struct address_space *aspace,
10836                                 CORE_ADDR bp_addr,
10837                                 const struct target_waitstatus *ws)
10838 {
10839   internal_error_pure_virtual_called ();
10840 }
10841
10842 static void
10843 base_breakpoint_check_status (bpstat bs)
10844 {
10845   /* Always stop.   */
10846 }
10847
10848 /* A "works_in_software_mode" breakpoint_ops method that just internal
10849    errors.  */
10850
10851 static int
10852 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
10853 {
10854   internal_error_pure_virtual_called ();
10855 }
10856
10857 /* A "resources_needed" breakpoint_ops method that just internal
10858    errors.  */
10859
10860 static int
10861 base_breakpoint_resources_needed (const struct bp_location *bl)
10862 {
10863   internal_error_pure_virtual_called ();
10864 }
10865
10866 static enum print_stop_action
10867 base_breakpoint_print_it (bpstat bs)
10868 {
10869   internal_error_pure_virtual_called ();
10870 }
10871
10872 static void
10873 base_breakpoint_print_one_detail (const struct breakpoint *self,
10874                                   struct ui_out *uiout)
10875 {
10876   /* nothing */
10877 }
10878
10879 static void
10880 base_breakpoint_print_mention (struct breakpoint *b)
10881 {
10882   internal_error_pure_virtual_called ();
10883 }
10884
10885 static void
10886 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
10887 {
10888   internal_error_pure_virtual_called ();
10889 }
10890
10891 static void
10892 base_breakpoint_create_sals_from_address (char **arg,
10893                                           struct linespec_result *canonical,
10894                                           enum bptype type_wanted,
10895                                           char *addr_start,
10896                                           char **copy_arg)
10897 {
10898   internal_error_pure_virtual_called ();
10899 }
10900
10901 static void
10902 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
10903                                         struct linespec_result *c,
10904                                         struct linespec_sals *lsal,
10905                                         char *cond_string,
10906                                         enum bptype type_wanted,
10907                                         enum bpdisp disposition,
10908                                         int thread,
10909                                         int task, int ignore_count,
10910                                         const struct breakpoint_ops *o,
10911                                         int from_tty, int enabled,
10912                                         int internal)
10913 {
10914   internal_error_pure_virtual_called ();
10915 }
10916
10917 static void
10918 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
10919                                  struct symtabs_and_lines *sals)
10920 {
10921   internal_error_pure_virtual_called ();
10922 }
10923
10924 static struct breakpoint_ops base_breakpoint_ops =
10925 {
10926   base_breakpoint_dtor,
10927   base_breakpoint_allocate_location,
10928   base_breakpoint_re_set,
10929   base_breakpoint_insert_location,
10930   base_breakpoint_remove_location,
10931   base_breakpoint_breakpoint_hit,
10932   base_breakpoint_check_status,
10933   base_breakpoint_resources_needed,
10934   base_breakpoint_works_in_software_mode,
10935   base_breakpoint_print_it,
10936   NULL,
10937   base_breakpoint_print_one_detail,
10938   base_breakpoint_print_mention,
10939   base_breakpoint_print_recreate,
10940   base_breakpoint_create_sals_from_address,
10941   base_breakpoint_create_breakpoints_sal,
10942   base_breakpoint_decode_linespec,
10943 };
10944
10945 /* Default breakpoint_ops methods.  */
10946
10947 static void
10948 bkpt_re_set (struct breakpoint *b)
10949 {
10950   /* FIXME: is this still reachable?  */
10951   if (b->addr_string == NULL)
10952     {
10953       /* Anything without a string can't be re-set.  */
10954       delete_breakpoint (b);
10955       return;
10956     }
10957
10958   breakpoint_re_set_default (b);
10959 }
10960
10961 static int
10962 bkpt_insert_location (struct bp_location *bl)
10963 {
10964   if (bl->loc_type == bp_loc_hardware_breakpoint)
10965     return target_insert_hw_breakpoint (bl->gdbarch,
10966                                         &bl->target_info);
10967   else
10968     return target_insert_breakpoint (bl->gdbarch,
10969                                      &bl->target_info);
10970 }
10971
10972 static int
10973 bkpt_remove_location (struct bp_location *bl)
10974 {
10975   if (bl->loc_type == bp_loc_hardware_breakpoint)
10976     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
10977   else
10978     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
10979 }
10980
10981 static int
10982 bkpt_breakpoint_hit (const struct bp_location *bl,
10983                      struct address_space *aspace, CORE_ADDR bp_addr,
10984                      const struct target_waitstatus *ws)
10985 {
10986   struct breakpoint *b = bl->owner;
10987
10988   if (ws->kind != TARGET_WAITKIND_STOPPED
10989       || ws->value.sig != TARGET_SIGNAL_TRAP)
10990     return 0;
10991
10992   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
10993                                  aspace, bp_addr))
10994     return 0;
10995
10996   if (overlay_debugging         /* unmapped overlay section */
10997       && section_is_overlay (bl->section)
10998       && !section_is_mapped (bl->section))
10999     return 0;
11000
11001   return 1;
11002 }
11003
11004 static int
11005 bkpt_resources_needed (const struct bp_location *bl)
11006 {
11007   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
11008
11009   return 1;
11010 }
11011
11012 static enum print_stop_action
11013 bkpt_print_it (bpstat bs)
11014 {
11015   struct breakpoint *b;
11016   const struct bp_location *bl;
11017   int bp_temp;
11018   struct ui_out *uiout = current_uiout;
11019
11020   gdb_assert (bs->bp_location_at != NULL);
11021
11022   bl = bs->bp_location_at;
11023   b = bs->breakpoint_at;
11024
11025   bp_temp = b->disposition == disp_del;
11026   if (bl->address != bl->requested_address)
11027     breakpoint_adjustment_warning (bl->requested_address,
11028                                    bl->address,
11029                                    b->number, 1);
11030   annotate_breakpoint (b->number);
11031   if (bp_temp)
11032     ui_out_text (uiout, "\nTemporary breakpoint ");
11033   else
11034     ui_out_text (uiout, "\nBreakpoint ");
11035   if (ui_out_is_mi_like_p (uiout))
11036     {
11037       ui_out_field_string (uiout, "reason",
11038                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11039       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11040     }
11041   ui_out_field_int (uiout, "bkptno", b->number);
11042   ui_out_text (uiout, ", ");
11043
11044   return PRINT_SRC_AND_LOC;
11045 }
11046
11047 static void
11048 bkpt_print_mention (struct breakpoint *b)
11049 {
11050   if (ui_out_is_mi_like_p (current_uiout))
11051     return;
11052
11053   switch (b->type)
11054     {
11055     case bp_breakpoint:
11056     case bp_gnu_ifunc_resolver:
11057       if (b->disposition == disp_del)
11058         printf_filtered (_("Temporary breakpoint"));
11059       else
11060         printf_filtered (_("Breakpoint"));
11061       printf_filtered (_(" %d"), b->number);
11062       if (b->type == bp_gnu_ifunc_resolver)
11063         printf_filtered (_(" at gnu-indirect-function resolver"));
11064       break;
11065     case bp_hardware_breakpoint:
11066       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
11067       break;
11068     }
11069
11070   say_where (b);
11071 }
11072
11073 static void
11074 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
11075 {
11076   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
11077     fprintf_unfiltered (fp, "tbreak");
11078   else if (tp->type == bp_breakpoint)
11079     fprintf_unfiltered (fp, "break");
11080   else if (tp->type == bp_hardware_breakpoint
11081            && tp->disposition == disp_del)
11082     fprintf_unfiltered (fp, "thbreak");
11083   else if (tp->type == bp_hardware_breakpoint)
11084     fprintf_unfiltered (fp, "hbreak");
11085   else
11086     internal_error (__FILE__, __LINE__,
11087                     _("unhandled breakpoint type %d"), (int) tp->type);
11088
11089   fprintf_unfiltered (fp, " %s", tp->addr_string);
11090   print_recreate_thread (tp, fp);
11091 }
11092
11093 static void
11094 bkpt_create_sals_from_address (char **arg,
11095                                struct linespec_result *canonical,
11096                                enum bptype type_wanted,
11097                                char *addr_start, char **copy_arg)
11098 {
11099   create_sals_from_address_default (arg, canonical, type_wanted,
11100                                     addr_start, copy_arg);
11101 }
11102
11103 static void
11104 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
11105                              struct linespec_result *canonical,
11106                              struct linespec_sals *lsal,
11107                              char *cond_string,
11108                              enum bptype type_wanted,
11109                              enum bpdisp disposition,
11110                              int thread,
11111                              int task, int ignore_count,
11112                              const struct breakpoint_ops *ops,
11113                              int from_tty, int enabled,
11114                              int internal)
11115 {
11116   create_breakpoints_sal_default (gdbarch, canonical, lsal,
11117                                   cond_string, type_wanted,
11118                                   disposition, thread, task,
11119                                   ignore_count, ops, from_tty,
11120                                   enabled, internal);
11121 }
11122
11123 static void
11124 bkpt_decode_linespec (struct breakpoint *b, char **s,
11125                       struct symtabs_and_lines *sals)
11126 {
11127   decode_linespec_default (b, s, sals);
11128 }
11129
11130 /* Virtual table for internal breakpoints.  */
11131
11132 static void
11133 internal_bkpt_re_set (struct breakpoint *b)
11134 {
11135   switch (b->type)
11136     {
11137       /* Delete overlay event and longjmp master breakpoints; they
11138          will be reset later by breakpoint_re_set.  */
11139     case bp_overlay_event:
11140     case bp_longjmp_master:
11141     case bp_std_terminate_master:
11142     case bp_exception_master:
11143       delete_breakpoint (b);
11144       break;
11145
11146       /* This breakpoint is special, it's set up when the inferior
11147          starts and we really don't want to touch it.  */
11148     case bp_shlib_event:
11149
11150       /* Like bp_shlib_event, this breakpoint type is special.  Once
11151          it is set up, we do not want to touch it.  */
11152     case bp_thread_event:
11153       break;
11154     }
11155 }
11156
11157 static void
11158 internal_bkpt_check_status (bpstat bs)
11159 {
11160   if (bs->breakpoint_at->type == bp_shlib_event)
11161     {
11162       /* If requested, stop when the dynamic linker notifies GDB of
11163          events.  This allows the user to get control and place
11164          breakpoints in initializer routines for dynamically loaded
11165          objects (among other things).  */
11166       bs->stop = stop_on_solib_events;
11167       bs->print = stop_on_solib_events;
11168     }
11169   else
11170     bs->stop = 0;
11171 }
11172
11173 static enum print_stop_action
11174 internal_bkpt_print_it (bpstat bs)
11175 {
11176   struct ui_out *uiout = current_uiout;
11177   struct breakpoint *b;
11178
11179   b = bs->breakpoint_at;
11180
11181   switch (b->type)
11182     {
11183     case bp_shlib_event:
11184       /* Did we stop because the user set the stop_on_solib_events
11185          variable?  (If so, we report this as a generic, "Stopped due
11186          to shlib event" message.) */
11187       ui_out_text (uiout, _("Stopped due to shared library event\n"));
11188       if (ui_out_is_mi_like_p (uiout))
11189         ui_out_field_string (uiout, "reason",
11190                              async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
11191       break;
11192
11193     case bp_thread_event:
11194       /* Not sure how we will get here.
11195          GDB should not stop for these breakpoints.  */
11196       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
11197       break;
11198
11199     case bp_overlay_event:
11200       /* By analogy with the thread event, GDB should not stop for these.  */
11201       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
11202       break;
11203
11204     case bp_longjmp_master:
11205       /* These should never be enabled.  */
11206       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
11207       break;
11208
11209     case bp_std_terminate_master:
11210       /* These should never be enabled.  */
11211       printf_filtered (_("std::terminate Master Breakpoint: "
11212                          "gdb should not stop!\n"));
11213       break;
11214
11215     case bp_exception_master:
11216       /* These should never be enabled.  */
11217       printf_filtered (_("Exception Master Breakpoint: "
11218                          "gdb should not stop!\n"));
11219       break;
11220     }
11221
11222   return PRINT_NOTHING;
11223 }
11224
11225 static void
11226 internal_bkpt_print_mention (struct breakpoint *b)
11227 {
11228   /* Nothing to mention.  These breakpoints are internal.  */
11229 }
11230
11231 /* Virtual table for momentary breakpoints  */
11232
11233 static void
11234 momentary_bkpt_re_set (struct breakpoint *b)
11235 {
11236   /* Keep temporary breakpoints, which can be encountered when we step
11237      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
11238      Otherwise these should have been blown away via the cleanup chain
11239      or by breakpoint_init_inferior when we rerun the executable.  */
11240 }
11241
11242 static void
11243 momentary_bkpt_check_status (bpstat bs)
11244 {
11245   /* Nothing.  The point of these breakpoints is causing a stop.  */
11246 }
11247
11248 static enum print_stop_action
11249 momentary_bkpt_print_it (bpstat bs)
11250 {
11251   struct ui_out *uiout = current_uiout;
11252
11253   if (ui_out_is_mi_like_p (uiout))
11254     {
11255       struct breakpoint *b = bs->breakpoint_at;
11256
11257       switch (b->type)
11258         {
11259         case bp_finish:
11260           ui_out_field_string
11261             (uiout, "reason",
11262              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
11263           break;
11264
11265         case bp_until:
11266           ui_out_field_string
11267             (uiout, "reason",
11268              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
11269           break;
11270         }
11271     }
11272
11273   return PRINT_UNKNOWN;
11274 }
11275
11276 static void
11277 momentary_bkpt_print_mention (struct breakpoint *b)
11278 {
11279   /* Nothing to mention.  These breakpoints are internal.  */
11280 }
11281
11282 /* The breakpoint_ops structure to be used in tracepoints.  */
11283
11284 static void
11285 tracepoint_re_set (struct breakpoint *b)
11286 {
11287   breakpoint_re_set_default (b);
11288 }
11289
11290 static int
11291 tracepoint_breakpoint_hit (const struct bp_location *bl,
11292                            struct address_space *aspace, CORE_ADDR bp_addr,
11293                            const struct target_waitstatus *ws)
11294 {
11295   /* By definition, the inferior does not report stops at
11296      tracepoints.  */
11297   return 0;
11298 }
11299
11300 static void
11301 tracepoint_print_one_detail (const struct breakpoint *self,
11302                              struct ui_out *uiout)
11303 {
11304   struct tracepoint *tp = (struct tracepoint *) self;
11305   if (tp->static_trace_marker_id)
11306     {
11307       gdb_assert (self->type == bp_static_tracepoint);
11308
11309       ui_out_text (uiout, "\tmarker id is ");
11310       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
11311                            tp->static_trace_marker_id);
11312       ui_out_text (uiout, "\n");
11313     }
11314 }
11315
11316 static void
11317 tracepoint_print_mention (struct breakpoint *b)
11318 {
11319   if (ui_out_is_mi_like_p (current_uiout))
11320     return;
11321
11322   switch (b->type)
11323     {
11324     case bp_tracepoint:
11325       printf_filtered (_("Tracepoint"));
11326       printf_filtered (_(" %d"), b->number);
11327       break;
11328     case bp_fast_tracepoint:
11329       printf_filtered (_("Fast tracepoint"));
11330       printf_filtered (_(" %d"), b->number);
11331       break;
11332     case bp_static_tracepoint:
11333       printf_filtered (_("Static tracepoint"));
11334       printf_filtered (_(" %d"), b->number);
11335       break;
11336     default:
11337       internal_error (__FILE__, __LINE__,
11338                       _("unhandled tracepoint type %d"), (int) b->type);
11339     }
11340
11341   say_where (b);
11342 }
11343
11344 static void
11345 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
11346 {
11347   struct tracepoint *tp = (struct tracepoint *) self;
11348
11349   if (self->type == bp_fast_tracepoint)
11350     fprintf_unfiltered (fp, "ftrace");
11351   if (self->type == bp_static_tracepoint)
11352     fprintf_unfiltered (fp, "strace");
11353   else if (self->type == bp_tracepoint)
11354     fprintf_unfiltered (fp, "trace");
11355   else
11356     internal_error (__FILE__, __LINE__,
11357                     _("unhandled tracepoint type %d"), (int) self->type);
11358
11359   fprintf_unfiltered (fp, " %s", self->addr_string);
11360   print_recreate_thread (self, fp);
11361
11362   if (tp->pass_count)
11363     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
11364 }
11365
11366 static void
11367 tracepoint_create_sals_from_address (char **arg,
11368                                      struct linespec_result *canonical,
11369                                      enum bptype type_wanted,
11370                                      char *addr_start, char **copy_arg)
11371 {
11372   create_sals_from_address_default (arg, canonical, type_wanted,
11373                                     addr_start, copy_arg);
11374 }
11375
11376 static void
11377 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
11378                                    struct linespec_result *canonical,
11379                                    struct linespec_sals *lsal,
11380                                    char *cond_string,
11381                                    enum bptype type_wanted,
11382                                    enum bpdisp disposition,
11383                                    int thread,
11384                                    int task, int ignore_count,
11385                                    const struct breakpoint_ops *ops,
11386                                    int from_tty, int enabled,
11387                                    int internal)
11388 {
11389   create_breakpoints_sal_default (gdbarch, canonical, lsal,
11390                                   cond_string, type_wanted,
11391                                   disposition, thread, task,
11392                                   ignore_count, ops, from_tty,
11393                                   enabled, internal);
11394 }
11395
11396 static void
11397 tracepoint_decode_linespec (struct breakpoint *b, char **s,
11398                             struct symtabs_and_lines *sals)
11399 {
11400   decode_linespec_default (b, s, sals);
11401 }
11402
11403 struct breakpoint_ops tracepoint_breakpoint_ops;
11404
11405 /* The breakpoint_ops structure to be used on static tracepoints with
11406    markers (`-m').  */
11407
11408 static void
11409 strace_marker_create_sals_from_address (char **arg,
11410                                         struct linespec_result *canonical,
11411                                         enum bptype type_wanted,
11412                                         char *addr_start, char **copy_arg)
11413 {
11414   struct linespec_sals lsal;
11415
11416   lsal.sals = decode_static_tracepoint_spec (arg);
11417
11418   *copy_arg = savestring (addr_start, *arg - addr_start);
11419
11420   canonical->addr_string = xstrdup (*copy_arg);
11421   lsal.canonical = xstrdup (*copy_arg);
11422   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
11423 }
11424
11425 static void
11426 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
11427                                       struct linespec_result *canonical,
11428                                       struct linespec_sals *lsal,
11429                                       char *cond_string,
11430                                       enum bptype type_wanted,
11431                                       enum bpdisp disposition,
11432                                       int thread,
11433                                       int task, int ignore_count,
11434                                       const struct breakpoint_ops *ops,
11435                                       int from_tty, int enabled,
11436                                       int internal)
11437 {
11438   int i;
11439
11440   /* If the user is creating a static tracepoint by marker id
11441      (strace -m MARKER_ID), then store the sals index, so that
11442      breakpoint_re_set can try to match up which of the newly
11443      found markers corresponds to this one, and, don't try to
11444      expand multiple locations for each sal, given than SALS
11445      already should contain all sals for MARKER_ID.  */
11446
11447   for (i = 0; i < lsal->sals.nelts; ++i)
11448     {
11449       struct symtabs_and_lines expanded;
11450       struct tracepoint *tp;
11451       struct cleanup *old_chain;
11452       char *addr_string;
11453
11454       expanded.nelts = 1;
11455       expanded.sals = &lsal->sals.sals[i];
11456
11457       addr_string = xstrdup (canonical->addr_string);
11458       old_chain = make_cleanup (xfree, addr_string);
11459
11460       tp = XCNEW (struct tracepoint);
11461       init_breakpoint_sal (&tp->base, gdbarch, expanded,
11462                            addr_string, NULL,
11463                            cond_string, type_wanted, disposition,
11464                            thread, task, ignore_count, ops,
11465                            from_tty, enabled, internal,
11466                            canonical->special_display);
11467       /* Given that its possible to have multiple markers with
11468          the same string id, if the user is creating a static
11469          tracepoint by marker id ("strace -m MARKER_ID"), then
11470          store the sals index, so that breakpoint_re_set can
11471          try to match up which of the newly found markers
11472          corresponds to this one  */
11473       tp->static_trace_marker_id_idx = i;
11474
11475       install_breakpoint (internal, &tp->base, 0);
11476
11477       discard_cleanups (old_chain);
11478     }
11479 }
11480
11481 static void
11482 strace_marker_decode_linespec (struct breakpoint *b, char **s,
11483                                struct symtabs_and_lines *sals)
11484 {
11485   struct tracepoint *tp = (struct tracepoint *) b;
11486
11487   *sals = decode_static_tracepoint_spec (s);
11488   if (sals->nelts > tp->static_trace_marker_id_idx)
11489     {
11490       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
11491       sals->nelts = 1;
11492     }
11493   else
11494     error (_("marker %s not found"), tp->static_trace_marker_id);
11495 }
11496
11497 static struct breakpoint_ops strace_marker_breakpoint_ops;
11498
11499 static int
11500 strace_marker_p (struct breakpoint *b)
11501 {
11502   return b->ops == &strace_marker_breakpoint_ops;
11503 }
11504
11505 /* Delete a breakpoint and clean up all traces of it in the data
11506    structures.  */
11507
11508 void
11509 delete_breakpoint (struct breakpoint *bpt)
11510 {
11511   struct breakpoint *b;
11512
11513   gdb_assert (bpt != NULL);
11514
11515   /* Has this bp already been deleted?  This can happen because
11516      multiple lists can hold pointers to bp's.  bpstat lists are
11517      especial culprits.
11518
11519      One example of this happening is a watchpoint's scope bp.  When
11520      the scope bp triggers, we notice that the watchpoint is out of
11521      scope, and delete it.  We also delete its scope bp.  But the
11522      scope bp is marked "auto-deleting", and is already on a bpstat.
11523      That bpstat is then checked for auto-deleting bp's, which are
11524      deleted.
11525
11526      A real solution to this problem might involve reference counts in
11527      bp's, and/or giving them pointers back to their referencing
11528      bpstat's, and teaching delete_breakpoint to only free a bp's
11529      storage when no more references were extent.  A cheaper bandaid
11530      was chosen.  */
11531   if (bpt->type == bp_none)
11532     return;
11533
11534   /* At least avoid this stale reference until the reference counting
11535      of breakpoints gets resolved.  */
11536   if (bpt->related_breakpoint != bpt)
11537     {
11538       struct breakpoint *related;
11539       struct watchpoint *w;
11540
11541       if (bpt->type == bp_watchpoint_scope)
11542         w = (struct watchpoint *) bpt->related_breakpoint;
11543       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
11544         w = (struct watchpoint *) bpt;
11545       else
11546         w = NULL;
11547       if (w != NULL)
11548         watchpoint_del_at_next_stop (w);
11549
11550       /* Unlink bpt from the bpt->related_breakpoint ring.  */
11551       for (related = bpt; related->related_breakpoint != bpt;
11552            related = related->related_breakpoint);
11553       related->related_breakpoint = bpt->related_breakpoint;
11554       bpt->related_breakpoint = bpt;
11555     }
11556
11557   /* watch_command_1 creates a watchpoint but only sets its number if
11558      update_watchpoint succeeds in creating its bp_locations.  If there's
11559      a problem in that process, we'll be asked to delete the half-created
11560      watchpoint.  In that case, don't announce the deletion.  */
11561   if (bpt->number)
11562     observer_notify_breakpoint_deleted (bpt);
11563
11564   if (breakpoint_chain == bpt)
11565     breakpoint_chain = bpt->next;
11566
11567   ALL_BREAKPOINTS (b)
11568     if (b->next == bpt)
11569     {
11570       b->next = bpt->next;
11571       break;
11572     }
11573
11574   /* Be sure no bpstat's are pointing at the breakpoint after it's
11575      been freed.  */
11576   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
11577      in all threads for now.  Note that we cannot just remove bpstats
11578      pointing at bpt from the stop_bpstat list entirely, as breakpoint
11579      commands are associated with the bpstat; if we remove it here,
11580      then the later call to bpstat_do_actions (&stop_bpstat); in
11581      event-top.c won't do anything, and temporary breakpoints with
11582      commands won't work.  */
11583
11584   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
11585
11586   /* Now that breakpoint is removed from breakpoint list, update the
11587      global location list.  This will remove locations that used to
11588      belong to this breakpoint.  Do this before freeing the breakpoint
11589      itself, since remove_breakpoint looks at location's owner.  It
11590      might be better design to have location completely
11591      self-contained, but it's not the case now.  */
11592   update_global_location_list (0);
11593
11594   bpt->ops->dtor (bpt);
11595   /* On the chance that someone will soon try again to delete this
11596      same bp, we mark it as deleted before freeing its storage.  */
11597   bpt->type = bp_none;
11598   xfree (bpt);
11599 }
11600
11601 static void
11602 do_delete_breakpoint_cleanup (void *b)
11603 {
11604   delete_breakpoint (b);
11605 }
11606
11607 struct cleanup *
11608 make_cleanup_delete_breakpoint (struct breakpoint *b)
11609 {
11610   return make_cleanup (do_delete_breakpoint_cleanup, b);
11611 }
11612
11613 /* Iterator function to call a user-provided callback function once
11614    for each of B and its related breakpoints.  */
11615
11616 static void
11617 iterate_over_related_breakpoints (struct breakpoint *b,
11618                                   void (*function) (struct breakpoint *,
11619                                                     void *),
11620                                   void *data)
11621 {
11622   struct breakpoint *related;
11623
11624   related = b;
11625   do
11626     {
11627       struct breakpoint *next;
11628
11629       /* FUNCTION may delete RELATED.  */
11630       next = related->related_breakpoint;
11631
11632       if (next == related)
11633         {
11634           /* RELATED is the last ring entry.  */
11635           function (related, data);
11636
11637           /* FUNCTION may have deleted it, so we'd never reach back to
11638              B.  There's nothing left to do anyway, so just break
11639              out.  */
11640           break;
11641         }
11642       else
11643         function (related, data);
11644
11645       related = next;
11646     }
11647   while (related != b);
11648 }
11649
11650 static void
11651 do_delete_breakpoint (struct breakpoint *b, void *ignore)
11652 {
11653   delete_breakpoint (b);
11654 }
11655
11656 /* A callback for map_breakpoint_numbers that calls
11657    delete_breakpoint.  */
11658
11659 static void
11660 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
11661 {
11662   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
11663 }
11664
11665 void
11666 delete_command (char *arg, int from_tty)
11667 {
11668   struct breakpoint *b, *b_tmp;
11669
11670   dont_repeat ();
11671
11672   if (arg == 0)
11673     {
11674       int breaks_to_delete = 0;
11675
11676       /* Delete all breakpoints if no argument.  Do not delete
11677          internal breakpoints, these have to be deleted with an
11678          explicit breakpoint number argument.  */
11679       ALL_BREAKPOINTS (b)
11680         if (user_breakpoint_p (b))
11681           {
11682             breaks_to_delete = 1;
11683             break;
11684           }
11685
11686       /* Ask user only if there are some breakpoints to delete.  */
11687       if (!from_tty
11688           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
11689         {
11690           ALL_BREAKPOINTS_SAFE (b, b_tmp)
11691             if (user_breakpoint_p (b))
11692               delete_breakpoint (b);
11693         }
11694     }
11695   else
11696     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
11697 }
11698
11699 static int
11700 all_locations_are_pending (struct bp_location *loc)
11701 {
11702   for (; loc; loc = loc->next)
11703     if (!loc->shlib_disabled
11704         && !loc->pspace->executing_startup)
11705       return 0;
11706   return 1;
11707 }
11708
11709 /* Subroutine of update_breakpoint_locations to simplify it.
11710    Return non-zero if multiple fns in list LOC have the same name.
11711    Null names are ignored.  */
11712
11713 static int
11714 ambiguous_names_p (struct bp_location *loc)
11715 {
11716   struct bp_location *l;
11717   htab_t htab = htab_create_alloc (13, htab_hash_string,
11718                                    (int (*) (const void *, 
11719                                              const void *)) streq,
11720                                    NULL, xcalloc, xfree);
11721
11722   for (l = loc; l != NULL; l = l->next)
11723     {
11724       const char **slot;
11725       const char *name = l->function_name;
11726
11727       /* Allow for some names to be NULL, ignore them.  */
11728       if (name == NULL)
11729         continue;
11730
11731       slot = (const char **) htab_find_slot (htab, (const void *) name,
11732                                              INSERT);
11733       /* NOTE: We can assume slot != NULL here because xcalloc never
11734          returns NULL.  */
11735       if (*slot != NULL)
11736         {
11737           htab_delete (htab);
11738           return 1;
11739         }
11740       *slot = name;
11741     }
11742
11743   htab_delete (htab);
11744   return 0;
11745 }
11746
11747 /* When symbols change, it probably means the sources changed as well,
11748    and it might mean the static tracepoint markers are no longer at
11749    the same address or line numbers they used to be at last we
11750    checked.  Losing your static tracepoints whenever you rebuild is
11751    undesirable.  This function tries to resync/rematch gdb static
11752    tracepoints with the markers on the target, for static tracepoints
11753    that have not been set by marker id.  Static tracepoint that have
11754    been set by marker id are reset by marker id in breakpoint_re_set.
11755    The heuristic is:
11756
11757    1) For a tracepoint set at a specific address, look for a marker at
11758    the old PC.  If one is found there, assume to be the same marker.
11759    If the name / string id of the marker found is different from the
11760    previous known name, assume that means the user renamed the marker
11761    in the sources, and output a warning.
11762
11763    2) For a tracepoint set at a given line number, look for a marker
11764    at the new address of the old line number.  If one is found there,
11765    assume to be the same marker.  If the name / string id of the
11766    marker found is different from the previous known name, assume that
11767    means the user renamed the marker in the sources, and output a
11768    warning.
11769
11770    3) If a marker is no longer found at the same address or line, it
11771    may mean the marker no longer exists.  But it may also just mean
11772    the code changed a bit.  Maybe the user added a few lines of code
11773    that made the marker move up or down (in line number terms).  Ask
11774    the target for info about the marker with the string id as we knew
11775    it.  If found, update line number and address in the matching
11776    static tracepoint.  This will get confused if there's more than one
11777    marker with the same ID (possible in UST, although unadvised
11778    precisely because it confuses tools).  */
11779
11780 static struct symtab_and_line
11781 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
11782 {
11783   struct tracepoint *tp = (struct tracepoint *) b;
11784   struct static_tracepoint_marker marker;
11785   CORE_ADDR pc;
11786   int i;
11787
11788   pc = sal.pc;
11789   if (sal.line)
11790     find_line_pc (sal.symtab, sal.line, &pc);
11791
11792   if (target_static_tracepoint_marker_at (pc, &marker))
11793     {
11794       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
11795         warning (_("static tracepoint %d changed probed marker from %s to %s"),
11796                  b->number,
11797                  tp->static_trace_marker_id, marker.str_id);
11798
11799       xfree (tp->static_trace_marker_id);
11800       tp->static_trace_marker_id = xstrdup (marker.str_id);
11801       release_static_tracepoint_marker (&marker);
11802
11803       return sal;
11804     }
11805
11806   /* Old marker wasn't found on target at lineno.  Try looking it up
11807      by string ID.  */
11808   if (!sal.explicit_pc
11809       && sal.line != 0
11810       && sal.symtab != NULL
11811       && tp->static_trace_marker_id != NULL)
11812     {
11813       VEC(static_tracepoint_marker_p) *markers;
11814
11815       markers
11816         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
11817
11818       if (!VEC_empty(static_tracepoint_marker_p, markers))
11819         {
11820           struct symtab_and_line sal2;
11821           struct symbol *sym;
11822           struct static_tracepoint_marker *tpmarker;
11823           struct ui_out *uiout = current_uiout;
11824
11825           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
11826
11827           xfree (tp->static_trace_marker_id);
11828           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
11829
11830           warning (_("marker for static tracepoint %d (%s) not "
11831                      "found at previous line number"),
11832                    b->number, tp->static_trace_marker_id);
11833
11834           init_sal (&sal2);
11835
11836           sal2.pc = tpmarker->address;
11837
11838           sal2 = find_pc_line (tpmarker->address, 0);
11839           sym = find_pc_sect_function (tpmarker->address, NULL);
11840           ui_out_text (uiout, "Now in ");
11841           if (sym)
11842             {
11843               ui_out_field_string (uiout, "func",
11844                                    SYMBOL_PRINT_NAME (sym));
11845               ui_out_text (uiout, " at ");
11846             }
11847           ui_out_field_string (uiout, "file", sal2.symtab->filename);
11848           ui_out_text (uiout, ":");
11849
11850           if (ui_out_is_mi_like_p (uiout))
11851             {
11852               char *fullname = symtab_to_fullname (sal2.symtab);
11853
11854               if (fullname)
11855                 ui_out_field_string (uiout, "fullname", fullname);
11856             }
11857
11858           ui_out_field_int (uiout, "line", sal2.line);
11859           ui_out_text (uiout, "\n");
11860
11861           b->loc->line_number = sal2.line;
11862
11863           xfree (b->loc->source_file);
11864           if (sym)
11865             b->loc->source_file = xstrdup (sal2.symtab->filename);
11866           else
11867             b->loc->source_file = NULL;
11868
11869           xfree (b->addr_string);
11870           b->addr_string = xstrprintf ("%s:%d",
11871                                        sal2.symtab->filename,
11872                                        b->loc->line_number);
11873
11874           /* Might be nice to check if function changed, and warn if
11875              so.  */
11876
11877           release_static_tracepoint_marker (tpmarker);
11878         }
11879     }
11880   return sal;
11881 }
11882
11883 /* Returns 1 iff locations A and B are sufficiently same that
11884    we don't need to report breakpoint as changed.  */
11885
11886 static int
11887 locations_are_equal (struct bp_location *a, struct bp_location *b)
11888 {
11889   while (a && b)
11890     {
11891       if (a->address != b->address)
11892         return 0;
11893
11894       if (a->shlib_disabled != b->shlib_disabled)
11895         return 0;
11896
11897       if (a->enabled != b->enabled)
11898         return 0;
11899
11900       a = a->next;
11901       b = b->next;
11902     }
11903
11904   if ((a == NULL) != (b == NULL))
11905     return 0;
11906
11907   return 1;
11908 }
11909
11910 /* Create new breakpoint locations for B (a hardware or software breakpoint)
11911    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
11912    a ranged breakpoint.  */
11913
11914 void
11915 update_breakpoint_locations (struct breakpoint *b,
11916                              struct symtabs_and_lines sals,
11917                              struct symtabs_and_lines sals_end)
11918 {
11919   int i;
11920   struct bp_location *existing_locations = b->loc;
11921
11922   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
11923     {
11924       /* Ranged breakpoints have only one start location and one end
11925          location.  */
11926       b->enable_state = bp_disabled;
11927       update_global_location_list (1);
11928       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
11929                            "multiple locations found\n"),
11930                          b->number);
11931       return;
11932     }
11933
11934   /* If there's no new locations, and all existing locations are
11935      pending, don't do anything.  This optimizes the common case where
11936      all locations are in the same shared library, that was unloaded.
11937      We'd like to retain the location, so that when the library is
11938      loaded again, we don't loose the enabled/disabled status of the
11939      individual locations.  */
11940   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
11941     return;
11942
11943   b->loc = NULL;
11944
11945   for (i = 0; i < sals.nelts; ++i)
11946     {
11947       struct bp_location *new_loc;
11948
11949       switch_to_program_space_and_thread (sals.sals[i].pspace);
11950
11951       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
11952
11953       /* Reparse conditions, they might contain references to the
11954          old symtab.  */
11955       if (b->cond_string != NULL)
11956         {
11957           char *s;
11958           volatile struct gdb_exception e;
11959
11960           s = b->cond_string;
11961           TRY_CATCH (e, RETURN_MASK_ERROR)
11962             {
11963               new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 
11964                                            0);
11965             }
11966           if (e.reason < 0)
11967             {
11968               warning (_("failed to reevaluate condition "
11969                          "for breakpoint %d: %s"), 
11970                        b->number, e.message);
11971               new_loc->enabled = 0;
11972             }
11973         }
11974
11975       if (sals_end.nelts)
11976         {
11977           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
11978
11979           new_loc->length = end - sals.sals[0].pc + 1;
11980         }
11981     }
11982
11983   /* Update locations of permanent breakpoints.  */
11984   if (b->enable_state == bp_permanent)
11985     make_breakpoint_permanent (b);
11986
11987   /* If possible, carry over 'disable' status from existing
11988      breakpoints.  */
11989   {
11990     struct bp_location *e = existing_locations;
11991     /* If there are multiple breakpoints with the same function name,
11992        e.g. for inline functions, comparing function names won't work.
11993        Instead compare pc addresses; this is just a heuristic as things
11994        may have moved, but in practice it gives the correct answer
11995        often enough until a better solution is found.  */
11996     int have_ambiguous_names = ambiguous_names_p (b->loc);
11997
11998     for (; e; e = e->next)
11999       {
12000         if (!e->enabled && e->function_name)
12001           {
12002             struct bp_location *l = b->loc;
12003             if (have_ambiguous_names)
12004               {
12005                 for (; l; l = l->next)
12006                   if (breakpoint_locations_match (e, l))
12007                     {
12008                       l->enabled = 0;
12009                       break;
12010                     }
12011               }
12012             else
12013               {
12014                 for (; l; l = l->next)
12015                   if (l->function_name
12016                       && strcmp (e->function_name, l->function_name) == 0)
12017                     {
12018                       l->enabled = 0;
12019                       break;
12020                     }
12021               }
12022           }
12023       }
12024   }
12025
12026   if (!locations_are_equal (existing_locations, b->loc))
12027     observer_notify_breakpoint_modified (b);
12028
12029   update_global_location_list (1);
12030 }
12031
12032 /* Find the SaL locations corresponding to the given ADDR_STRING.
12033    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
12034
12035 static struct symtabs_and_lines
12036 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
12037 {
12038   char *s;
12039   struct symtabs_and_lines sals = {0};
12040   volatile struct gdb_exception e;
12041
12042   gdb_assert (b->ops != NULL);
12043   s = addr_string;
12044
12045   TRY_CATCH (e, RETURN_MASK_ERROR)
12046     {
12047       b->ops->decode_linespec (b, &s, &sals);
12048     }
12049   if (e.reason < 0)
12050     {
12051       int not_found_and_ok = 0;
12052       /* For pending breakpoints, it's expected that parsing will
12053          fail until the right shared library is loaded.  User has
12054          already told to create pending breakpoints and don't need
12055          extra messages.  If breakpoint is in bp_shlib_disabled
12056          state, then user already saw the message about that
12057          breakpoint being disabled, and don't want to see more
12058          errors.  */
12059       if (e.error == NOT_FOUND_ERROR
12060           && (b->condition_not_parsed 
12061               || (b->loc && b->loc->shlib_disabled)
12062               || (b->loc && b->loc->pspace->executing_startup)
12063               || b->enable_state == bp_disabled))
12064         not_found_and_ok = 1;
12065
12066       if (!not_found_and_ok)
12067         {
12068           /* We surely don't want to warn about the same breakpoint
12069              10 times.  One solution, implemented here, is disable
12070              the breakpoint on error.  Another solution would be to
12071              have separate 'warning emitted' flag.  Since this
12072              happens only when a binary has changed, I don't know
12073              which approach is better.  */
12074           b->enable_state = bp_disabled;
12075           throw_exception (e);
12076         }
12077     }
12078
12079   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
12080     {
12081       int i;
12082
12083       for (i = 0; i < sals.nelts; ++i)
12084         resolve_sal_pc (&sals.sals[i]);
12085       if (b->condition_not_parsed && s && s[0])
12086         {
12087           char *cond_string = 0;
12088           int thread = -1;
12089           int task = 0;
12090
12091           find_condition_and_thread (s, sals.sals[0].pc,
12092                                      &cond_string, &thread, &task);
12093           if (cond_string)
12094             b->cond_string = cond_string;
12095           b->thread = thread;
12096           b->task = task;
12097           b->condition_not_parsed = 0;
12098         }
12099
12100       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
12101         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
12102
12103       *found = 1;
12104     }
12105   else
12106     *found = 0;
12107
12108   return sals;
12109 }
12110
12111 /* The default re_set method, for typical hardware or software
12112    breakpoints.  Reevaluate the breakpoint and recreate its
12113    locations.  */
12114
12115 static void
12116 breakpoint_re_set_default (struct breakpoint *b)
12117 {
12118   int found;
12119   struct symtabs_and_lines sals, sals_end;
12120   struct symtabs_and_lines expanded = {0};
12121   struct symtabs_and_lines expanded_end = {0};
12122
12123   sals = addr_string_to_sals (b, b->addr_string, &found);
12124   if (found)
12125     {
12126       make_cleanup (xfree, sals.sals);
12127       expanded = sals;
12128     }
12129
12130   if (b->addr_string_range_end)
12131     {
12132       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
12133       if (found)
12134         {
12135           make_cleanup (xfree, sals_end.sals);
12136           expanded_end = sals_end;
12137         }
12138     }
12139
12140   update_breakpoint_locations (b, expanded, expanded_end);
12141 }
12142
12143 /* Default method for creating SALs from an address string.  It basically
12144    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
12145
12146 static void
12147 create_sals_from_address_default (char **arg,
12148                                   struct linespec_result *canonical,
12149                                   enum bptype type_wanted,
12150                                   char *addr_start, char **copy_arg)
12151 {
12152   parse_breakpoint_sals (arg, canonical);
12153 }
12154
12155 /* Call create_breakpoints_sal for the given arguments.  This is the default
12156    function for the `create_breakpoints_sal' method of
12157    breakpoint_ops.  */
12158
12159 static void
12160 create_breakpoints_sal_default (struct gdbarch *gdbarch,
12161                                 struct linespec_result *canonical,
12162                                 struct linespec_sals *lsal,
12163                                 char *cond_string,
12164                                 enum bptype type_wanted,
12165                                 enum bpdisp disposition,
12166                                 int thread,
12167                                 int task, int ignore_count,
12168                                 const struct breakpoint_ops *ops,
12169                                 int from_tty, int enabled,
12170                                 int internal)
12171 {
12172   create_breakpoints_sal (gdbarch, canonical, cond_string,
12173                           type_wanted, disposition,
12174                           thread, task, ignore_count, ops, from_tty,
12175                           enabled, internal);
12176 }
12177
12178 /* Decode the line represented by S by calling decode_line_full.  This is the
12179    default function for the `decode_linespec' method of breakpoint_ops.  */
12180
12181 static void
12182 decode_linespec_default (struct breakpoint *b, char **s,
12183                          struct symtabs_and_lines *sals)
12184 {
12185   struct linespec_result canonical;
12186
12187   init_linespec_result (&canonical);
12188   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
12189                     (struct symtab *) NULL, 0,
12190                     &canonical, multiple_symbols_all,
12191                     b->filter);
12192
12193   /* We should get 0 or 1 resulting SALs.  */
12194   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
12195
12196   if (VEC_length (linespec_sals, canonical.sals) > 0)
12197     {
12198       struct linespec_sals *lsal;
12199
12200       lsal = VEC_index (linespec_sals, canonical.sals, 0);
12201       *sals = lsal->sals;
12202       /* Arrange it so the destructor does not free the
12203          contents.  */
12204       lsal->sals.sals = NULL;
12205     }
12206
12207   destroy_linespec_result (&canonical);
12208 }
12209
12210 /* Prepare the global context for a re-set of breakpoint B.  */
12211
12212 static struct cleanup *
12213 prepare_re_set_context (struct breakpoint *b)
12214 {
12215   struct cleanup *cleanups;
12216
12217   input_radix = b->input_radix;
12218   cleanups = save_current_space_and_thread ();
12219   if (b->pspace != NULL)
12220     switch_to_program_space_and_thread (b->pspace);
12221   set_language (b->language);
12222
12223   return cleanups;
12224 }
12225
12226 /* Reset a breakpoint given it's struct breakpoint * BINT.
12227    The value we return ends up being the return value from catch_errors.
12228    Unused in this case.  */
12229
12230 static int
12231 breakpoint_re_set_one (void *bint)
12232 {
12233   /* Get past catch_errs.  */
12234   struct breakpoint *b = (struct breakpoint *) bint;
12235   struct cleanup *cleanups;
12236
12237   cleanups = prepare_re_set_context (b);
12238   b->ops->re_set (b);
12239   do_cleanups (cleanups);
12240   return 0;
12241 }
12242
12243 /* Re-set all breakpoints after symbols have been re-loaded.  */
12244 void
12245 breakpoint_re_set (void)
12246 {
12247   struct breakpoint *b, *b_tmp;
12248   enum language save_language;
12249   int save_input_radix;
12250   struct cleanup *old_chain;
12251
12252   save_language = current_language->la_language;
12253   save_input_radix = input_radix;
12254   old_chain = save_current_program_space ();
12255
12256   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12257   {
12258     /* Format possible error msg.  */
12259     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
12260                                 b->number);
12261     struct cleanup *cleanups = make_cleanup (xfree, message);
12262     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
12263     do_cleanups (cleanups);
12264   }
12265   set_language (save_language);
12266   input_radix = save_input_radix;
12267
12268   jit_breakpoint_re_set ();
12269
12270   do_cleanups (old_chain);
12271
12272   create_overlay_event_breakpoint ();
12273   create_longjmp_master_breakpoint ();
12274   create_std_terminate_master_breakpoint ();
12275   create_exception_master_breakpoint ();
12276
12277   /* While we're at it, reset the skip list too.  */
12278   skip_re_set ();
12279 }
12280 \f
12281 /* Reset the thread number of this breakpoint:
12282
12283    - If the breakpoint is for all threads, leave it as-is.
12284    - Else, reset it to the current thread for inferior_ptid.  */
12285 void
12286 breakpoint_re_set_thread (struct breakpoint *b)
12287 {
12288   if (b->thread != -1)
12289     {
12290       if (in_thread_list (inferior_ptid))
12291         b->thread = pid_to_thread_id (inferior_ptid);
12292
12293       /* We're being called after following a fork.  The new fork is
12294          selected as current, and unless this was a vfork will have a
12295          different program space from the original thread.  Reset that
12296          as well.  */
12297       b->loc->pspace = current_program_space;
12298     }
12299 }
12300
12301 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
12302    If from_tty is nonzero, it prints a message to that effect,
12303    which ends with a period (no newline).  */
12304
12305 void
12306 set_ignore_count (int bptnum, int count, int from_tty)
12307 {
12308   struct breakpoint *b;
12309
12310   if (count < 0)
12311     count = 0;
12312
12313   ALL_BREAKPOINTS (b)
12314     if (b->number == bptnum)
12315     {
12316       if (is_tracepoint (b))
12317         {
12318           if (from_tty && count != 0)
12319             printf_filtered (_("Ignore count ignored for tracepoint %d."),
12320                              bptnum);
12321           return;
12322         }
12323       
12324       b->ignore_count = count;
12325       if (from_tty)
12326         {
12327           if (count == 0)
12328             printf_filtered (_("Will stop next time "
12329                                "breakpoint %d is reached."),
12330                              bptnum);
12331           else if (count == 1)
12332             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
12333                              bptnum);
12334           else
12335             printf_filtered (_("Will ignore next %d "
12336                                "crossings of breakpoint %d."),
12337                              count, bptnum);
12338         }
12339       breakpoints_changed ();
12340       observer_notify_breakpoint_modified (b);
12341       return;
12342     }
12343
12344   error (_("No breakpoint number %d."), bptnum);
12345 }
12346
12347 /* Command to set ignore-count of breakpoint N to COUNT.  */
12348
12349 static void
12350 ignore_command (char *args, int from_tty)
12351 {
12352   char *p = args;
12353   int num;
12354
12355   if (p == 0)
12356     error_no_arg (_("a breakpoint number"));
12357
12358   num = get_number (&p);
12359   if (num == 0)
12360     error (_("bad breakpoint number: '%s'"), args);
12361   if (*p == 0)
12362     error (_("Second argument (specified ignore-count) is missing."));
12363
12364   set_ignore_count (num,
12365                     longest_to_int (value_as_long (parse_and_eval (p))),
12366                     from_tty);
12367   if (from_tty)
12368     printf_filtered ("\n");
12369 }
12370 \f
12371 /* Call FUNCTION on each of the breakpoints
12372    whose numbers are given in ARGS.  */
12373
12374 static void
12375 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
12376                                                       void *),
12377                         void *data)
12378 {
12379   int num;
12380   struct breakpoint *b, *tmp;
12381   int match;
12382   struct get_number_or_range_state state;
12383
12384   if (args == 0)
12385     error_no_arg (_("one or more breakpoint numbers"));
12386
12387   init_number_or_range (&state, args);
12388
12389   while (!state.finished)
12390     {
12391       char *p = state.string;
12392
12393       match = 0;
12394
12395       num = get_number_or_range (&state);
12396       if (num == 0)
12397         {
12398           warning (_("bad breakpoint number at or near '%s'"), p);
12399         }
12400       else
12401         {
12402           ALL_BREAKPOINTS_SAFE (b, tmp)
12403             if (b->number == num)
12404               {
12405                 match = 1;
12406                 function (b, data);
12407                 break;
12408               }
12409           if (match == 0)
12410             printf_unfiltered (_("No breakpoint number %d.\n"), num);
12411         }
12412     }
12413 }
12414
12415 static struct bp_location *
12416 find_location_by_number (char *number)
12417 {
12418   char *dot = strchr (number, '.');
12419   char *p1;
12420   int bp_num;
12421   int loc_num;
12422   struct breakpoint *b;
12423   struct bp_location *loc;  
12424
12425   *dot = '\0';
12426
12427   p1 = number;
12428   bp_num = get_number (&p1);
12429   if (bp_num == 0)
12430     error (_("Bad breakpoint number '%s'"), number);
12431
12432   ALL_BREAKPOINTS (b)
12433     if (b->number == bp_num)
12434       {
12435         break;
12436       }
12437
12438   if (!b || b->number != bp_num)
12439     error (_("Bad breakpoint number '%s'"), number);
12440   
12441   p1 = dot+1;
12442   loc_num = get_number (&p1);
12443   if (loc_num == 0)
12444     error (_("Bad breakpoint location number '%s'"), number);
12445
12446   --loc_num;
12447   loc = b->loc;
12448   for (;loc_num && loc; --loc_num, loc = loc->next)
12449     ;
12450   if (!loc)
12451     error (_("Bad breakpoint location number '%s'"), dot+1);
12452     
12453   return loc;  
12454 }
12455
12456
12457 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
12458    If from_tty is nonzero, it prints a message to that effect,
12459    which ends with a period (no newline).  */
12460
12461 void
12462 disable_breakpoint (struct breakpoint *bpt)
12463 {
12464   /* Never disable a watchpoint scope breakpoint; we want to
12465      hit them when we leave scope so we can delete both the
12466      watchpoint and its scope breakpoint at that time.  */
12467   if (bpt->type == bp_watchpoint_scope)
12468     return;
12469
12470   /* You can't disable permanent breakpoints.  */
12471   if (bpt->enable_state == bp_permanent)
12472     return;
12473
12474   bpt->enable_state = bp_disabled;
12475
12476   if (target_supports_enable_disable_tracepoint ()
12477       && current_trace_status ()->running && is_tracepoint (bpt))
12478     {
12479       struct bp_location *location;
12480      
12481       for (location = bpt->loc; location; location = location->next)
12482         target_disable_tracepoint (location);
12483     }
12484
12485   update_global_location_list (0);
12486
12487   observer_notify_breakpoint_modified (bpt);
12488 }
12489
12490 /* A callback for iterate_over_related_breakpoints.  */
12491
12492 static void
12493 do_disable_breakpoint (struct breakpoint *b, void *ignore)
12494 {
12495   disable_breakpoint (b);
12496 }
12497
12498 /* A callback for map_breakpoint_numbers that calls
12499    disable_breakpoint.  */
12500
12501 static void
12502 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
12503 {
12504   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
12505 }
12506
12507 static void
12508 disable_command (char *args, int from_tty)
12509 {
12510   if (args == 0)
12511     {
12512       struct breakpoint *bpt;
12513
12514       ALL_BREAKPOINTS (bpt)
12515         if (user_breakpoint_p (bpt))
12516           disable_breakpoint (bpt);
12517     }
12518   else if (strchr (args, '.'))
12519     {
12520       struct bp_location *loc = find_location_by_number (args);
12521       if (loc)
12522         {
12523           loc->enabled = 0;
12524           if (target_supports_enable_disable_tracepoint ()
12525               && current_trace_status ()->running && loc->owner
12526               && is_tracepoint (loc->owner))
12527             target_disable_tracepoint (loc);
12528         }
12529       update_global_location_list (0);
12530     }
12531   else
12532     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
12533 }
12534
12535 static void
12536 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition)
12537 {
12538   int target_resources_ok;
12539
12540   if (bpt->type == bp_hardware_breakpoint)
12541     {
12542       int i;
12543       i = hw_breakpoint_used_count ();
12544       target_resources_ok = 
12545         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
12546                                             i + 1, 0);
12547       if (target_resources_ok == 0)
12548         error (_("No hardware breakpoint support in the target."));
12549       else if (target_resources_ok < 0)
12550         error (_("Hardware breakpoints used exceeds limit."));
12551     }
12552
12553   if (is_watchpoint (bpt))
12554     {
12555       /* Initialize it just to avoid a GCC false warning.  */
12556       enum enable_state orig_enable_state = 0;
12557       volatile struct gdb_exception e;
12558
12559       TRY_CATCH (e, RETURN_MASK_ALL)
12560         {
12561           struct watchpoint *w = (struct watchpoint *) bpt;
12562
12563           orig_enable_state = bpt->enable_state;
12564           bpt->enable_state = bp_enabled;
12565           update_watchpoint (w, 1 /* reparse */);
12566         }
12567       if (e.reason < 0)
12568         {
12569           bpt->enable_state = orig_enable_state;
12570           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
12571                              bpt->number);
12572           return;
12573         }
12574     }
12575
12576   if (bpt->enable_state != bp_permanent)
12577     bpt->enable_state = bp_enabled;
12578
12579   if (target_supports_enable_disable_tracepoint ()
12580       && current_trace_status ()->running && is_tracepoint (bpt))
12581     {
12582       struct bp_location *location;
12583
12584       for (location = bpt->loc; location; location = location->next)
12585         target_enable_tracepoint (location);
12586     }
12587
12588   bpt->disposition = disposition;
12589   update_global_location_list (1);
12590   breakpoints_changed ();
12591   
12592   observer_notify_breakpoint_modified (bpt);
12593 }
12594
12595
12596 void
12597 enable_breakpoint (struct breakpoint *bpt)
12598 {
12599   enable_breakpoint_disp (bpt, bpt->disposition);
12600 }
12601
12602 static void
12603 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
12604 {
12605   enable_breakpoint (bpt);
12606 }
12607
12608 /* A callback for map_breakpoint_numbers that calls
12609    enable_breakpoint.  */
12610
12611 static void
12612 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
12613 {
12614   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
12615 }
12616
12617 /* The enable command enables the specified breakpoints (or all defined
12618    breakpoints) so they once again become (or continue to be) effective
12619    in stopping the inferior.  */
12620
12621 static void
12622 enable_command (char *args, int from_tty)
12623 {
12624   if (args == 0)
12625     {
12626       struct breakpoint *bpt;
12627
12628       ALL_BREAKPOINTS (bpt)
12629         if (user_breakpoint_p (bpt))
12630           enable_breakpoint (bpt);
12631     }
12632   else if (strchr (args, '.'))
12633     {
12634       struct bp_location *loc = find_location_by_number (args);
12635       if (loc)
12636         {
12637           loc->enabled = 1;
12638           if (target_supports_enable_disable_tracepoint ()
12639               && current_trace_status ()->running && loc->owner
12640               && is_tracepoint (loc->owner))
12641             target_enable_tracepoint (loc);
12642         }
12643       update_global_location_list (1);
12644     }
12645   else
12646     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
12647 }
12648
12649 static void
12650 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
12651 {
12652   enum bpdisp disp = *(enum bpdisp *) arg;
12653
12654   enable_breakpoint_disp (bpt, disp);
12655 }
12656
12657 static void
12658 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
12659 {
12660   enum bpdisp disp = disp_disable;
12661
12662   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
12663 }
12664
12665 static void
12666 enable_once_command (char *args, int from_tty)
12667 {
12668   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
12669 }
12670
12671 static void
12672 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
12673 {
12674   enum bpdisp disp = disp_del;
12675
12676   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
12677 }
12678
12679 static void
12680 enable_delete_command (char *args, int from_tty)
12681 {
12682   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
12683 }
12684 \f
12685 static void
12686 set_breakpoint_cmd (char *args, int from_tty)
12687 {
12688 }
12689
12690 static void
12691 show_breakpoint_cmd (char *args, int from_tty)
12692 {
12693 }
12694
12695 /* Invalidate last known value of any hardware watchpoint if
12696    the memory which that value represents has been written to by
12697    GDB itself.  */
12698
12699 static void
12700 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
12701                                       const bfd_byte *data)
12702 {
12703   struct breakpoint *bp;
12704
12705   ALL_BREAKPOINTS (bp)
12706     if (bp->enable_state == bp_enabled
12707         && bp->type == bp_hardware_watchpoint)
12708       {
12709         struct watchpoint *wp = (struct watchpoint *) bp;
12710
12711         if (wp->val_valid && wp->val)
12712           {
12713             struct bp_location *loc;
12714
12715             for (loc = bp->loc; loc != NULL; loc = loc->next)
12716               if (loc->loc_type == bp_loc_hardware_watchpoint
12717                   && loc->address + loc->length > addr
12718                   && addr + len > loc->address)
12719                 {
12720                   value_free (wp->val);
12721                   wp->val = NULL;
12722                   wp->val_valid = 0;
12723                 }
12724           }
12725       }
12726 }
12727
12728 /* Use the last displayed codepoint's values, or nothing
12729    if they aren't valid.  */
12730
12731 struct symtabs_and_lines
12732 decode_line_spec_1 (char *string, int flags)
12733 {
12734   struct symtabs_and_lines sals;
12735
12736   if (string == 0)
12737     error (_("Empty line specification."));
12738   if (last_displayed_sal_is_valid ())
12739     sals = decode_line_1 (&string, flags,
12740                           get_last_displayed_symtab (),
12741                           get_last_displayed_line ());
12742   else
12743     sals = decode_line_1 (&string, flags, (struct symtab *) NULL, 0);
12744   if (*string)
12745     error (_("Junk at end of line specification: %s"), string);
12746   return sals;
12747 }
12748
12749 /* Create and insert a raw software breakpoint at PC.  Return an
12750    identifier, which should be used to remove the breakpoint later.
12751    In general, places which call this should be using something on the
12752    breakpoint chain instead; this function should be eliminated
12753    someday.  */
12754
12755 void *
12756 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
12757                                   struct address_space *aspace, CORE_ADDR pc)
12758 {
12759   struct bp_target_info *bp_tgt;
12760
12761   bp_tgt = XZALLOC (struct bp_target_info);
12762
12763   bp_tgt->placed_address_space = aspace;
12764   bp_tgt->placed_address = pc;
12765
12766   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
12767     {
12768       /* Could not insert the breakpoint.  */
12769       xfree (bp_tgt);
12770       return NULL;
12771     }
12772
12773   return bp_tgt;
12774 }
12775
12776 /* Remove a breakpoint BP inserted by
12777    deprecated_insert_raw_breakpoint.  */
12778
12779 int
12780 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
12781 {
12782   struct bp_target_info *bp_tgt = bp;
12783   int ret;
12784
12785   ret = target_remove_breakpoint (gdbarch, bp_tgt);
12786   xfree (bp_tgt);
12787
12788   return ret;
12789 }
12790
12791 /* One (or perhaps two) breakpoints used for software single
12792    stepping.  */
12793
12794 static void *single_step_breakpoints[2];
12795 static struct gdbarch *single_step_gdbarch[2];
12796
12797 /* Create and insert a breakpoint for software single step.  */
12798
12799 void
12800 insert_single_step_breakpoint (struct gdbarch *gdbarch,
12801                                struct address_space *aspace, 
12802                                CORE_ADDR next_pc)
12803 {
12804   void **bpt_p;
12805
12806   if (single_step_breakpoints[0] == NULL)
12807     {
12808       bpt_p = &single_step_breakpoints[0];
12809       single_step_gdbarch[0] = gdbarch;
12810     }
12811   else
12812     {
12813       gdb_assert (single_step_breakpoints[1] == NULL);
12814       bpt_p = &single_step_breakpoints[1];
12815       single_step_gdbarch[1] = gdbarch;
12816     }
12817
12818   /* NOTE drow/2006-04-11: A future improvement to this function would
12819      be to only create the breakpoints once, and actually put them on
12820      the breakpoint chain.  That would let us use set_raw_breakpoint.
12821      We could adjust the addresses each time they were needed.  Doing
12822      this requires corresponding changes elsewhere where single step
12823      breakpoints are handled, however.  So, for now, we use this.  */
12824
12825   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
12826   if (*bpt_p == NULL)
12827     error (_("Could not insert single-step breakpoint at %s"),
12828              paddress (gdbarch, next_pc));
12829 }
12830
12831 /* Check if the breakpoints used for software single stepping
12832    were inserted or not.  */
12833
12834 int
12835 single_step_breakpoints_inserted (void)
12836 {
12837   return (single_step_breakpoints[0] != NULL
12838           || single_step_breakpoints[1] != NULL);
12839 }
12840
12841 /* Remove and delete any breakpoints used for software single step.  */
12842
12843 void
12844 remove_single_step_breakpoints (void)
12845 {
12846   gdb_assert (single_step_breakpoints[0] != NULL);
12847
12848   /* See insert_single_step_breakpoint for more about this deprecated
12849      call.  */
12850   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
12851                                     single_step_breakpoints[0]);
12852   single_step_gdbarch[0] = NULL;
12853   single_step_breakpoints[0] = NULL;
12854
12855   if (single_step_breakpoints[1] != NULL)
12856     {
12857       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
12858                                         single_step_breakpoints[1]);
12859       single_step_gdbarch[1] = NULL;
12860       single_step_breakpoints[1] = NULL;
12861     }
12862 }
12863
12864 /* Delete software single step breakpoints without removing them from
12865    the inferior.  This is intended to be used if the inferior's address
12866    space where they were inserted is already gone, e.g. after exit or
12867    exec.  */
12868
12869 void
12870 cancel_single_step_breakpoints (void)
12871 {
12872   int i;
12873
12874   for (i = 0; i < 2; i++)
12875     if (single_step_breakpoints[i])
12876       {
12877         xfree (single_step_breakpoints[i]);
12878         single_step_breakpoints[i] = NULL;
12879         single_step_gdbarch[i] = NULL;
12880       }
12881 }
12882
12883 /* Detach software single-step breakpoints from INFERIOR_PTID without
12884    removing them.  */
12885
12886 static void
12887 detach_single_step_breakpoints (void)
12888 {
12889   int i;
12890
12891   for (i = 0; i < 2; i++)
12892     if (single_step_breakpoints[i])
12893       target_remove_breakpoint (single_step_gdbarch[i],
12894                                 single_step_breakpoints[i]);
12895 }
12896
12897 /* Check whether a software single-step breakpoint is inserted at
12898    PC.  */
12899
12900 static int
12901 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
12902                                         CORE_ADDR pc)
12903 {
12904   int i;
12905
12906   for (i = 0; i < 2; i++)
12907     {
12908       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
12909       if (bp_tgt
12910           && breakpoint_address_match (bp_tgt->placed_address_space,
12911                                        bp_tgt->placed_address,
12912                                        aspace, pc))
12913         return 1;
12914     }
12915
12916   return 0;
12917 }
12918
12919 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
12920    non-zero otherwise.  */
12921 static int
12922 is_syscall_catchpoint_enabled (struct breakpoint *bp)
12923 {
12924   if (syscall_catchpoint_p (bp)
12925       && bp->enable_state != bp_disabled
12926       && bp->enable_state != bp_call_disabled)
12927     return 1;
12928   else
12929     return 0;
12930 }
12931
12932 int
12933 catch_syscall_enabled (void)
12934 {
12935   struct inferior *inf = current_inferior ();
12936
12937   return inf->total_syscalls_count != 0;
12938 }
12939
12940 int
12941 catching_syscall_number (int syscall_number)
12942 {
12943   struct breakpoint *bp;
12944
12945   ALL_BREAKPOINTS (bp)
12946     if (is_syscall_catchpoint_enabled (bp))
12947       {
12948         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
12949
12950         if (c->syscalls_to_be_caught)
12951           {
12952             int i, iter;
12953             for (i = 0;
12954                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
12955                  i++)
12956               if (syscall_number == iter)
12957                 return 1;
12958           }
12959         else
12960           return 1;
12961       }
12962
12963   return 0;
12964 }
12965
12966 /* Complete syscall names.  Used by "catch syscall".  */
12967 static char **
12968 catch_syscall_completer (struct cmd_list_element *cmd,
12969                          char *text, char *word)
12970 {
12971   const char **list = get_syscall_names ();
12972   char **retlist
12973     = (list == NULL) ? NULL : complete_on_enum (list, text, word);
12974
12975   xfree (list);
12976   return retlist;
12977 }
12978
12979 /* Tracepoint-specific operations.  */
12980
12981 /* Set tracepoint count to NUM.  */
12982 static void
12983 set_tracepoint_count (int num)
12984 {
12985   tracepoint_count = num;
12986   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
12987 }
12988
12989 void
12990 trace_command (char *arg, int from_tty)
12991 {
12992   if (create_breakpoint (get_current_arch (),
12993                          arg,
12994                          NULL, 0, 1 /* parse arg */,
12995                          0 /* tempflag */,
12996                          bp_tracepoint /* type_wanted */,
12997                          0 /* Ignore count */,
12998                          pending_break_support,
12999                          &tracepoint_breakpoint_ops,
13000                          from_tty,
13001                          1 /* enabled */,
13002                          0 /* internal */))
13003     set_tracepoint_count (breakpoint_count);
13004 }
13005
13006 void
13007 ftrace_command (char *arg, int from_tty)
13008 {
13009   if (create_breakpoint (get_current_arch (),
13010                          arg,
13011                          NULL, 0, 1 /* parse arg */,
13012                          0 /* tempflag */,
13013                          bp_fast_tracepoint /* type_wanted */,
13014                          0 /* Ignore count */,
13015                          pending_break_support,
13016                          &tracepoint_breakpoint_ops,
13017                          from_tty,
13018                          1 /* enabled */,
13019                          0 /* internal */))
13020     set_tracepoint_count (breakpoint_count);
13021 }
13022
13023 /* strace command implementation.  Creates a static tracepoint.  */
13024
13025 void
13026 strace_command (char *arg, int from_tty)
13027 {
13028   struct breakpoint_ops *ops;
13029
13030   /* Decide if we are dealing with a static tracepoint marker (`-m'),
13031      or with a normal static tracepoint.  */
13032   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
13033     ops = &strace_marker_breakpoint_ops;
13034   else
13035     ops = &tracepoint_breakpoint_ops;
13036
13037   if (create_breakpoint (get_current_arch (),
13038                          arg,
13039                          NULL, 0, 1 /* parse arg */,
13040                          0 /* tempflag */,
13041                          bp_static_tracepoint /* type_wanted */,
13042                          0 /* Ignore count */,
13043                          pending_break_support,
13044                          ops,
13045                          from_tty,
13046                          1 /* enabled */,
13047                          0 /* internal */))
13048     set_tracepoint_count (breakpoint_count);
13049 }
13050
13051 /* Set up a fake reader function that gets command lines from a linked
13052    list that was acquired during tracepoint uploading.  */
13053
13054 static struct uploaded_tp *this_utp;
13055 static int next_cmd;
13056
13057 static char *
13058 read_uploaded_action (void)
13059 {
13060   char *rslt;
13061
13062   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
13063
13064   next_cmd++;
13065
13066   return rslt;
13067 }
13068
13069 /* Given information about a tracepoint as recorded on a target (which
13070    can be either a live system or a trace file), attempt to create an
13071    equivalent GDB tracepoint.  This is not a reliable process, since
13072    the target does not necessarily have all the information used when
13073    the tracepoint was originally defined.  */
13074   
13075 struct tracepoint *
13076 create_tracepoint_from_upload (struct uploaded_tp *utp)
13077 {
13078   char *addr_str, small_buf[100];
13079   struct tracepoint *tp;
13080
13081   if (utp->at_string)
13082     addr_str = utp->at_string;
13083   else
13084     {
13085       /* In the absence of a source location, fall back to raw
13086          address.  Since there is no way to confirm that the address
13087          means the same thing as when the trace was started, warn the
13088          user.  */
13089       warning (_("Uploaded tracepoint %d has no "
13090                  "source location, using raw address"),
13091                utp->number);
13092       sprintf (small_buf, "*%s", hex_string (utp->addr));
13093       addr_str = small_buf;
13094     }
13095
13096   /* There's not much we can do with a sequence of bytecodes.  */
13097   if (utp->cond && !utp->cond_string)
13098     warning (_("Uploaded tracepoint %d condition "
13099                "has no source form, ignoring it"),
13100              utp->number);
13101
13102   if (!create_breakpoint (get_current_arch (),
13103                           addr_str,
13104                           utp->cond_string, -1, 0 /* parse cond/thread */,
13105                           0 /* tempflag */,
13106                           utp->type /* type_wanted */,
13107                           0 /* Ignore count */,
13108                           pending_break_support,
13109                           &tracepoint_breakpoint_ops,
13110                           0 /* from_tty */,
13111                           utp->enabled /* enabled */,
13112                           0 /* internal */))
13113     return NULL;
13114
13115   set_tracepoint_count (breakpoint_count);
13116   
13117   /* Get the tracepoint we just created.  */
13118   tp = get_tracepoint (tracepoint_count);
13119   gdb_assert (tp != NULL);
13120
13121   if (utp->pass > 0)
13122     {
13123       sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
13124
13125       trace_pass_command (small_buf, 0);
13126     }
13127
13128   /* If we have uploaded versions of the original commands, set up a
13129      special-purpose "reader" function and call the usual command line
13130      reader, then pass the result to the breakpoint command-setting
13131      function.  */
13132   if (!VEC_empty (char_ptr, utp->cmd_strings))
13133     {
13134       struct command_line *cmd_list;
13135
13136       this_utp = utp;
13137       next_cmd = 0;
13138
13139       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
13140
13141       breakpoint_set_commands (&tp->base, cmd_list);
13142     }
13143   else if (!VEC_empty (char_ptr, utp->actions)
13144            || !VEC_empty (char_ptr, utp->step_actions))
13145     warning (_("Uploaded tracepoint %d actions "
13146                "have no source form, ignoring them"),
13147              utp->number);
13148
13149   /* Copy any status information that might be available.  */
13150   tp->base.hit_count = utp->hit_count;
13151   tp->traceframe_usage = utp->traceframe_usage;
13152
13153   return tp;
13154 }
13155   
13156 /* Print information on tracepoint number TPNUM_EXP, or all if
13157    omitted.  */
13158
13159 static void
13160 tracepoints_info (char *args, int from_tty)
13161 {
13162   struct ui_out *uiout = current_uiout;
13163   int num_printed;
13164
13165   num_printed = breakpoint_1 (args, 0, is_tracepoint);
13166
13167   if (num_printed == 0)
13168     {
13169       if (args == NULL || *args == '\0')
13170         ui_out_message (uiout, 0, "No tracepoints.\n");
13171       else
13172         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
13173     }
13174
13175   default_collect_info ();
13176 }
13177
13178 /* The 'enable trace' command enables tracepoints.
13179    Not supported by all targets.  */
13180 static void
13181 enable_trace_command (char *args, int from_tty)
13182 {
13183   enable_command (args, from_tty);
13184 }
13185
13186 /* The 'disable trace' command disables tracepoints.
13187    Not supported by all targets.  */
13188 static void
13189 disable_trace_command (char *args, int from_tty)
13190 {
13191   disable_command (args, from_tty);
13192 }
13193
13194 /* Remove a tracepoint (or all if no argument).  */
13195 static void
13196 delete_trace_command (char *arg, int from_tty)
13197 {
13198   struct breakpoint *b, *b_tmp;
13199
13200   dont_repeat ();
13201
13202   if (arg == 0)
13203     {
13204       int breaks_to_delete = 0;
13205
13206       /* Delete all breakpoints if no argument.
13207          Do not delete internal or call-dummy breakpoints, these
13208          have to be deleted with an explicit breakpoint number 
13209          argument.  */
13210       ALL_TRACEPOINTS (b)
13211         if (is_tracepoint (b) && user_breakpoint_p (b))
13212           {
13213             breaks_to_delete = 1;
13214             break;
13215           }
13216
13217       /* Ask user only if there are some breakpoints to delete.  */
13218       if (!from_tty
13219           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
13220         {
13221           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13222             if (is_tracepoint (b) && user_breakpoint_p (b))
13223               delete_breakpoint (b);
13224         }
13225     }
13226   else
13227     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13228 }
13229
13230 /* Helper function for trace_pass_command.  */
13231
13232 static void
13233 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
13234 {
13235   tp->pass_count = count;
13236   observer_notify_tracepoint_modified (tp->base.number);
13237   if (from_tty)
13238     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
13239                      tp->base.number, count);
13240 }
13241
13242 /* Set passcount for tracepoint.
13243
13244    First command argument is passcount, second is tracepoint number.
13245    If tracepoint number omitted, apply to most recently defined.
13246    Also accepts special argument "all".  */
13247
13248 static void
13249 trace_pass_command (char *args, int from_tty)
13250 {
13251   struct tracepoint *t1;
13252   unsigned int count;
13253
13254   if (args == 0 || *args == 0)
13255     error (_("passcount command requires an "
13256              "argument (count + optional TP num)"));
13257
13258   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
13259
13260   while (*args && isspace ((int) *args))
13261     args++;
13262
13263   if (*args && strncasecmp (args, "all", 3) == 0)
13264     {
13265       struct breakpoint *b;
13266
13267       args += 3;                        /* Skip special argument "all".  */
13268       if (*args)
13269         error (_("Junk at end of arguments."));
13270
13271       ALL_TRACEPOINTS (b)
13272       {
13273         t1 = (struct tracepoint *) b;
13274         trace_pass_set_count (t1, count, from_tty);
13275       }
13276     }
13277   else if (*args == '\0')
13278     {
13279       t1 = get_tracepoint_by_number (&args, NULL, 1);
13280       if (t1)
13281         trace_pass_set_count (t1, count, from_tty);
13282     }
13283   else
13284     {
13285       struct get_number_or_range_state state;
13286
13287       init_number_or_range (&state, args);
13288       while (!state.finished)
13289         {
13290           t1 = get_tracepoint_by_number (&args, &state, 1);
13291           if (t1)
13292             trace_pass_set_count (t1, count, from_tty);
13293         }
13294     }
13295 }
13296
13297 struct tracepoint *
13298 get_tracepoint (int num)
13299 {
13300   struct breakpoint *t;
13301
13302   ALL_TRACEPOINTS (t)
13303     if (t->number == num)
13304       return (struct tracepoint *) t;
13305
13306   return NULL;
13307 }
13308
13309 /* Find the tracepoint with the given target-side number (which may be
13310    different from the tracepoint number after disconnecting and
13311    reconnecting).  */
13312
13313 struct tracepoint *
13314 get_tracepoint_by_number_on_target (int num)
13315 {
13316   struct breakpoint *b;
13317
13318   ALL_TRACEPOINTS (b)
13319     {
13320       struct tracepoint *t = (struct tracepoint *) b;
13321
13322       if (t->number_on_target == num)
13323         return t;
13324     }
13325
13326   return NULL;
13327 }
13328
13329 /* Utility: parse a tracepoint number and look it up in the list.
13330    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
13331    If OPTIONAL_P is true, then if the argument is missing, the most
13332    recent tracepoint (tracepoint_count) is returned.  */
13333 struct tracepoint *
13334 get_tracepoint_by_number (char **arg,
13335                           struct get_number_or_range_state *state,
13336                           int optional_p)
13337 {
13338   extern int tracepoint_count;
13339   struct breakpoint *t;
13340   int tpnum;
13341   char *instring = arg == NULL ? NULL : *arg;
13342
13343   if (state)
13344     {
13345       gdb_assert (!state->finished);
13346       tpnum = get_number_or_range (state);
13347     }
13348   else if (arg == NULL || *arg == NULL || ! **arg)
13349     {
13350       if (optional_p)
13351         tpnum = tracepoint_count;
13352       else
13353         error_no_arg (_("tracepoint number"));
13354     }
13355   else
13356     tpnum = get_number (arg);
13357
13358   if (tpnum <= 0)
13359     {
13360       if (instring && *instring)
13361         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
13362                          instring);
13363       else
13364         printf_filtered (_("Tracepoint argument missing "
13365                            "and no previous tracepoint\n"));
13366       return NULL;
13367     }
13368
13369   ALL_TRACEPOINTS (t)
13370     if (t->number == tpnum)
13371     {
13372       return (struct tracepoint *) t;
13373     }
13374
13375   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
13376   return NULL;
13377 }
13378
13379 void
13380 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
13381 {
13382   if (b->thread != -1)
13383     fprintf_unfiltered (fp, " thread %d", b->thread);
13384
13385   if (b->task != 0)
13386     fprintf_unfiltered (fp, " task %d", b->task);
13387
13388   fprintf_unfiltered (fp, "\n");
13389 }
13390
13391 /* Save information on user settable breakpoints (watchpoints, etc) to
13392    a new script file named FILENAME.  If FILTER is non-NULL, call it
13393    on each breakpoint and only include the ones for which it returns
13394    non-zero.  */
13395
13396 static void
13397 save_breakpoints (char *filename, int from_tty,
13398                   int (*filter) (const struct breakpoint *))
13399 {
13400   struct breakpoint *tp;
13401   int any = 0;
13402   char *pathname;
13403   struct cleanup *cleanup;
13404   struct ui_file *fp;
13405   int extra_trace_bits = 0;
13406
13407   if (filename == 0 || *filename == 0)
13408     error (_("Argument required (file name in which to save)"));
13409
13410   /* See if we have anything to save.  */
13411   ALL_BREAKPOINTS (tp)
13412   {
13413     /* Skip internal and momentary breakpoints.  */
13414     if (!user_breakpoint_p (tp))
13415       continue;
13416
13417     /* If we have a filter, only save the breakpoints it accepts.  */
13418     if (filter && !filter (tp))
13419       continue;
13420
13421     any = 1;
13422
13423     if (is_tracepoint (tp))
13424       {
13425         extra_trace_bits = 1;
13426
13427         /* We can stop searching.  */
13428         break;
13429       }
13430   }
13431
13432   if (!any)
13433     {
13434       warning (_("Nothing to save."));
13435       return;
13436     }
13437
13438   pathname = tilde_expand (filename);
13439   cleanup = make_cleanup (xfree, pathname);
13440   fp = gdb_fopen (pathname, "w");
13441   if (!fp)
13442     error (_("Unable to open file '%s' for saving (%s)"),
13443            filename, safe_strerror (errno));
13444   make_cleanup_ui_file_delete (fp);
13445
13446   if (extra_trace_bits)
13447     save_trace_state_variables (fp);
13448
13449   ALL_BREAKPOINTS (tp)
13450   {
13451     /* Skip internal and momentary breakpoints.  */
13452     if (!user_breakpoint_p (tp))
13453       continue;
13454
13455     /* If we have a filter, only save the breakpoints it accepts.  */
13456     if (filter && !filter (tp))
13457       continue;
13458
13459     tp->ops->print_recreate (tp, fp);
13460
13461     /* Note, we can't rely on tp->number for anything, as we can't
13462        assume the recreated breakpoint numbers will match.  Use $bpnum
13463        instead.  */
13464
13465     if (tp->cond_string)
13466       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
13467
13468     if (tp->ignore_count)
13469       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
13470
13471     if (tp->commands)
13472       {
13473         volatile struct gdb_exception ex;       
13474
13475         fprintf_unfiltered (fp, "  commands\n");
13476         
13477         ui_out_redirect (current_uiout, fp);
13478         TRY_CATCH (ex, RETURN_MASK_ALL)
13479           {
13480             print_command_lines (current_uiout, tp->commands->commands, 2);
13481           }
13482         ui_out_redirect (current_uiout, NULL);
13483
13484         if (ex.reason < 0)
13485           throw_exception (ex);
13486
13487         fprintf_unfiltered (fp, "  end\n");
13488       }
13489
13490     if (tp->enable_state == bp_disabled)
13491       fprintf_unfiltered (fp, "disable\n");
13492
13493     /* If this is a multi-location breakpoint, check if the locations
13494        should be individually disabled.  Watchpoint locations are
13495        special, and not user visible.  */
13496     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
13497       {
13498         struct bp_location *loc;
13499         int n = 1;
13500
13501         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
13502           if (!loc->enabled)
13503             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
13504       }
13505   }
13506
13507   if (extra_trace_bits && *default_collect)
13508     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
13509
13510   do_cleanups (cleanup);
13511   if (from_tty)
13512     printf_filtered (_("Saved to file '%s'.\n"), filename);
13513 }
13514
13515 /* The `save breakpoints' command.  */
13516
13517 static void
13518 save_breakpoints_command (char *args, int from_tty)
13519 {
13520   save_breakpoints (args, from_tty, NULL);
13521 }
13522
13523 /* The `save tracepoints' command.  */
13524
13525 static void
13526 save_tracepoints_command (char *args, int from_tty)
13527 {
13528   save_breakpoints (args, from_tty, is_tracepoint);
13529 }
13530
13531 /* Create a vector of all tracepoints.  */
13532
13533 VEC(breakpoint_p) *
13534 all_tracepoints (void)
13535 {
13536   VEC(breakpoint_p) *tp_vec = 0;
13537   struct breakpoint *tp;
13538
13539   ALL_TRACEPOINTS (tp)
13540   {
13541     VEC_safe_push (breakpoint_p, tp_vec, tp);
13542   }
13543
13544   return tp_vec;
13545 }
13546
13547 \f
13548 /* This help string is used for the break, hbreak, tbreak and thbreak
13549    commands.  It is defined as a macro to prevent duplication.
13550    COMMAND should be a string constant containing the name of the
13551    command.  */
13552 #define BREAK_ARGS_HELP(command) \
13553 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
13554 LOCATION may be a line number, function name, or \"*\" and an address.\n\
13555 If a line number is specified, break at start of code for that line.\n\
13556 If a function is specified, break at start of code for that function.\n\
13557 If an address is specified, break at that exact address.\n\
13558 With no LOCATION, uses current execution address of the selected\n\
13559 stack frame.  This is useful for breaking on return to a stack frame.\n\
13560 \n\
13561 THREADNUM is the number from \"info threads\".\n\
13562 CONDITION is a boolean expression.\n\
13563 \n\
13564 Multiple breakpoints at one place are permitted, and useful if their\n\
13565 conditions are different.\n\
13566 \n\
13567 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
13568
13569 /* List of subcommands for "catch".  */
13570 static struct cmd_list_element *catch_cmdlist;
13571
13572 /* List of subcommands for "tcatch".  */
13573 static struct cmd_list_element *tcatch_cmdlist;
13574
13575 void
13576 add_catch_command (char *name, char *docstring,
13577                    void (*sfunc) (char *args, int from_tty,
13578                                   struct cmd_list_element *command),
13579                    char **(*completer) (struct cmd_list_element *cmd,
13580                                          char *text, char *word),
13581                    void *user_data_catch,
13582                    void *user_data_tcatch)
13583 {
13584   struct cmd_list_element *command;
13585
13586   command = add_cmd (name, class_breakpoint, NULL, docstring,
13587                      &catch_cmdlist);
13588   set_cmd_sfunc (command, sfunc);
13589   set_cmd_context (command, user_data_catch);
13590   set_cmd_completer (command, completer);
13591
13592   command = add_cmd (name, class_breakpoint, NULL, docstring,
13593                      &tcatch_cmdlist);
13594   set_cmd_sfunc (command, sfunc);
13595   set_cmd_context (command, user_data_tcatch);
13596   set_cmd_completer (command, completer);
13597 }
13598
13599 static void
13600 clear_syscall_counts (struct inferior *inf)
13601 {
13602   inf->total_syscalls_count = 0;
13603   inf->any_syscall_count = 0;
13604   VEC_free (int, inf->syscalls_counts);
13605 }
13606
13607 static void
13608 save_command (char *arg, int from_tty)
13609 {
13610   printf_unfiltered (_("\"save\" must be followed by "
13611                        "the name of a save subcommand.\n"));
13612   help_list (save_cmdlist, "save ", -1, gdb_stdout);
13613 }
13614
13615 struct breakpoint *
13616 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
13617                           void *data)
13618 {
13619   struct breakpoint *b, *b_tmp;
13620
13621   ALL_BREAKPOINTS_SAFE (b, b_tmp)
13622     {
13623       if ((*callback) (b, data))
13624         return b;
13625     }
13626
13627   return NULL;
13628 }
13629
13630 /* Zero if any of the breakpoint's locations could be a location where
13631    functions have been inlined, nonzero otherwise.  */
13632
13633 static int
13634 is_non_inline_function (struct breakpoint *b)
13635 {
13636   /* The shared library event breakpoint is set on the address of a
13637      non-inline function.  */
13638   if (b->type == bp_shlib_event)
13639     return 1;
13640
13641   return 0;
13642 }
13643
13644 /* Nonzero if the specified PC cannot be a location where functions
13645    have been inlined.  */
13646
13647 int
13648 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
13649                            const struct target_waitstatus *ws)
13650 {
13651   struct breakpoint *b;
13652   struct bp_location *bl;
13653
13654   ALL_BREAKPOINTS (b)
13655     {
13656       if (!is_non_inline_function (b))
13657         continue;
13658
13659       for (bl = b->loc; bl != NULL; bl = bl->next)
13660         {
13661           if (!bl->shlib_disabled
13662               && bpstat_check_location (bl, aspace, pc, ws))
13663             return 1;
13664         }
13665     }
13666
13667   return 0;
13668 }
13669
13670 void
13671 initialize_breakpoint_ops (void)
13672 {
13673   static int initialized = 0;
13674
13675   struct breakpoint_ops *ops;
13676
13677   if (initialized)
13678     return;
13679   initialized = 1;
13680
13681   /* The breakpoint_ops structure to be inherit by all kinds of
13682      breakpoints (real breakpoints, i.e., user "break" breakpoints,
13683      internal and momentary breakpoints, etc.).  */
13684   ops = &bkpt_base_breakpoint_ops;
13685   *ops = base_breakpoint_ops;
13686   ops->re_set = bkpt_re_set;
13687   ops->insert_location = bkpt_insert_location;
13688   ops->remove_location = bkpt_remove_location;
13689   ops->breakpoint_hit = bkpt_breakpoint_hit;
13690   ops->create_sals_from_address = bkpt_create_sals_from_address;
13691   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
13692   ops->decode_linespec = bkpt_decode_linespec;
13693
13694   /* The breakpoint_ops structure to be used in regular breakpoints.  */
13695   ops = &bkpt_breakpoint_ops;
13696   *ops = bkpt_base_breakpoint_ops;
13697   ops->re_set = bkpt_re_set;
13698   ops->resources_needed = bkpt_resources_needed;
13699   ops->print_it = bkpt_print_it;
13700   ops->print_mention = bkpt_print_mention;
13701   ops->print_recreate = bkpt_print_recreate;
13702
13703   /* Ranged breakpoints.  */
13704   ops = &ranged_breakpoint_ops;
13705   *ops = bkpt_breakpoint_ops;
13706   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
13707   ops->resources_needed = resources_needed_ranged_breakpoint;
13708   ops->print_it = print_it_ranged_breakpoint;
13709   ops->print_one = print_one_ranged_breakpoint;
13710   ops->print_one_detail = print_one_detail_ranged_breakpoint;
13711   ops->print_mention = print_mention_ranged_breakpoint;
13712   ops->print_recreate = print_recreate_ranged_breakpoint;
13713
13714   /* Internal breakpoints.  */
13715   ops = &internal_breakpoint_ops;
13716   *ops = bkpt_base_breakpoint_ops;
13717   ops->re_set = internal_bkpt_re_set;
13718   ops->check_status = internal_bkpt_check_status;
13719   ops->print_it = internal_bkpt_print_it;
13720   ops->print_mention = internal_bkpt_print_mention;
13721
13722   /* Momentary breakpoints.  */
13723   ops = &momentary_breakpoint_ops;
13724   *ops = bkpt_base_breakpoint_ops;
13725   ops->re_set = momentary_bkpt_re_set;
13726   ops->check_status = momentary_bkpt_check_status;
13727   ops->print_it = momentary_bkpt_print_it;
13728   ops->print_mention = momentary_bkpt_print_mention;
13729
13730   /* GNU v3 exception catchpoints.  */
13731   ops = &gnu_v3_exception_catchpoint_ops;
13732   *ops = bkpt_breakpoint_ops;
13733   ops->print_it = print_it_exception_catchpoint;
13734   ops->print_one = print_one_exception_catchpoint;
13735   ops->print_mention = print_mention_exception_catchpoint;
13736   ops->print_recreate = print_recreate_exception_catchpoint;
13737
13738   /* Watchpoints.  */
13739   ops = &watchpoint_breakpoint_ops;
13740   *ops = base_breakpoint_ops;
13741   ops->dtor = dtor_watchpoint;
13742   ops->re_set = re_set_watchpoint;
13743   ops->insert_location = insert_watchpoint;
13744   ops->remove_location = remove_watchpoint;
13745   ops->breakpoint_hit = breakpoint_hit_watchpoint;
13746   ops->check_status = check_status_watchpoint;
13747   ops->resources_needed = resources_needed_watchpoint;
13748   ops->works_in_software_mode = works_in_software_mode_watchpoint;
13749   ops->print_it = print_it_watchpoint;
13750   ops->print_mention = print_mention_watchpoint;
13751   ops->print_recreate = print_recreate_watchpoint;
13752
13753   /* Masked watchpoints.  */
13754   ops = &masked_watchpoint_breakpoint_ops;
13755   *ops = watchpoint_breakpoint_ops;
13756   ops->insert_location = insert_masked_watchpoint;
13757   ops->remove_location = remove_masked_watchpoint;
13758   ops->resources_needed = resources_needed_masked_watchpoint;
13759   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
13760   ops->print_it = print_it_masked_watchpoint;
13761   ops->print_one_detail = print_one_detail_masked_watchpoint;
13762   ops->print_mention = print_mention_masked_watchpoint;
13763   ops->print_recreate = print_recreate_masked_watchpoint;
13764
13765   /* Tracepoints.  */
13766   ops = &tracepoint_breakpoint_ops;
13767   *ops = base_breakpoint_ops;
13768   ops->re_set = tracepoint_re_set;
13769   ops->breakpoint_hit = tracepoint_breakpoint_hit;
13770   ops->print_one_detail = tracepoint_print_one_detail;
13771   ops->print_mention = tracepoint_print_mention;
13772   ops->print_recreate = tracepoint_print_recreate;
13773   ops->create_sals_from_address = tracepoint_create_sals_from_address;
13774   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
13775   ops->decode_linespec = tracepoint_decode_linespec;
13776
13777   /* Static tracepoints with marker (`-m').  */
13778   ops = &strace_marker_breakpoint_ops;
13779   *ops = tracepoint_breakpoint_ops;
13780   ops->create_sals_from_address = strace_marker_create_sals_from_address;
13781   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
13782   ops->decode_linespec = strace_marker_decode_linespec;
13783
13784   /* Fork catchpoints.  */
13785   ops = &catch_fork_breakpoint_ops;
13786   *ops = base_breakpoint_ops;
13787   ops->insert_location = insert_catch_fork;
13788   ops->remove_location = remove_catch_fork;
13789   ops->breakpoint_hit = breakpoint_hit_catch_fork;
13790   ops->print_it = print_it_catch_fork;
13791   ops->print_one = print_one_catch_fork;
13792   ops->print_mention = print_mention_catch_fork;
13793   ops->print_recreate = print_recreate_catch_fork;
13794
13795   /* Vfork catchpoints.  */
13796   ops = &catch_vfork_breakpoint_ops;
13797   *ops = base_breakpoint_ops;
13798   ops->insert_location = insert_catch_vfork;
13799   ops->remove_location = remove_catch_vfork;
13800   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
13801   ops->print_it = print_it_catch_vfork;
13802   ops->print_one = print_one_catch_vfork;
13803   ops->print_mention = print_mention_catch_vfork;
13804   ops->print_recreate = print_recreate_catch_vfork;
13805
13806   /* Exec catchpoints.  */
13807   ops = &catch_exec_breakpoint_ops;
13808   *ops = base_breakpoint_ops;
13809   ops->dtor = dtor_catch_exec;
13810   ops->insert_location = insert_catch_exec;
13811   ops->remove_location = remove_catch_exec;
13812   ops->breakpoint_hit = breakpoint_hit_catch_exec;
13813   ops->print_it = print_it_catch_exec;
13814   ops->print_one = print_one_catch_exec;
13815   ops->print_mention = print_mention_catch_exec;
13816   ops->print_recreate = print_recreate_catch_exec;
13817
13818   /* Syscall catchpoints.  */
13819   ops = &catch_syscall_breakpoint_ops;
13820   *ops = base_breakpoint_ops;
13821   ops->dtor = dtor_catch_syscall;
13822   ops->insert_location = insert_catch_syscall;
13823   ops->remove_location = remove_catch_syscall;
13824   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
13825   ops->print_it = print_it_catch_syscall;
13826   ops->print_one = print_one_catch_syscall;
13827   ops->print_mention = print_mention_catch_syscall;
13828   ops->print_recreate = print_recreate_catch_syscall;
13829 }
13830
13831 void
13832 _initialize_breakpoint (void)
13833 {
13834   struct cmd_list_element *c;
13835
13836   initialize_breakpoint_ops ();
13837
13838   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
13839   observer_attach_inferior_exit (clear_syscall_counts);
13840   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
13841
13842   breakpoint_objfile_key = register_objfile_data ();
13843
13844   breakpoint_chain = 0;
13845   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
13846      before a breakpoint is set.  */
13847   breakpoint_count = 0;
13848
13849   tracepoint_count = 0;
13850
13851   add_com ("ignore", class_breakpoint, ignore_command, _("\
13852 Set ignore-count of breakpoint number N to COUNT.\n\
13853 Usage is `ignore N COUNT'."));
13854   if (xdb_commands)
13855     add_com_alias ("bc", "ignore", class_breakpoint, 1);
13856
13857   add_com ("commands", class_breakpoint, commands_command, _("\
13858 Set commands to be executed when a breakpoint is hit.\n\
13859 Give breakpoint number as argument after \"commands\".\n\
13860 With no argument, the targeted breakpoint is the last one set.\n\
13861 The commands themselves follow starting on the next line.\n\
13862 Type a line containing \"end\" to indicate the end of them.\n\
13863 Give \"silent\" as the first line to make the breakpoint silent;\n\
13864 then no output is printed when it is hit, except what the commands print."));
13865
13866   add_com ("condition", class_breakpoint, condition_command, _("\
13867 Specify breakpoint number N to break only if COND is true.\n\
13868 Usage is `condition N COND', where N is an integer and COND is an\n\
13869 expression to be evaluated whenever breakpoint N is reached."));
13870
13871   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
13872 Set a temporary breakpoint.\n\
13873 Like \"break\" except the breakpoint is only temporary,\n\
13874 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
13875 by using \"enable delete\" on the breakpoint number.\n\
13876 \n"
13877 BREAK_ARGS_HELP ("tbreak")));
13878   set_cmd_completer (c, location_completer);
13879
13880   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
13881 Set a hardware assisted breakpoint.\n\
13882 Like \"break\" except the breakpoint requires hardware support,\n\
13883 some target hardware may not have this support.\n\
13884 \n"
13885 BREAK_ARGS_HELP ("hbreak")));
13886   set_cmd_completer (c, location_completer);
13887
13888   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
13889 Set a temporary hardware assisted breakpoint.\n\
13890 Like \"hbreak\" except the breakpoint is only temporary,\n\
13891 so it will be deleted when hit.\n\
13892 \n"
13893 BREAK_ARGS_HELP ("thbreak")));
13894   set_cmd_completer (c, location_completer);
13895
13896   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
13897 Enable some breakpoints.\n\
13898 Give breakpoint numbers (separated by spaces) as arguments.\n\
13899 With no subcommand, breakpoints are enabled until you command otherwise.\n\
13900 This is used to cancel the effect of the \"disable\" command.\n\
13901 With a subcommand you can enable temporarily."),
13902                   &enablelist, "enable ", 1, &cmdlist);
13903   if (xdb_commands)
13904     add_com ("ab", class_breakpoint, enable_command, _("\
13905 Enable some breakpoints.\n\
13906 Give breakpoint numbers (separated by spaces) as arguments.\n\
13907 With no subcommand, breakpoints are enabled until you command otherwise.\n\
13908 This is used to cancel the effect of the \"disable\" command.\n\
13909 With a subcommand you can enable temporarily."));
13910
13911   add_com_alias ("en", "enable", class_breakpoint, 1);
13912
13913   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
13914 Enable some breakpoints.\n\
13915 Give breakpoint numbers (separated by spaces) as arguments.\n\
13916 This is used to cancel the effect of the \"disable\" command.\n\
13917 May be abbreviated to simply \"enable\".\n"),
13918                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
13919
13920   add_cmd ("once", no_class, enable_once_command, _("\
13921 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
13922 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
13923            &enablebreaklist);
13924
13925   add_cmd ("delete", no_class, enable_delete_command, _("\
13926 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
13927 If a breakpoint is hit while enabled in this fashion, it is deleted."),
13928            &enablebreaklist);
13929
13930   add_cmd ("delete", no_class, enable_delete_command, _("\
13931 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
13932 If a breakpoint is hit while enabled in this fashion, it is deleted."),
13933            &enablelist);
13934
13935   add_cmd ("once", no_class, enable_once_command, _("\
13936 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
13937 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
13938            &enablelist);
13939
13940   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
13941 Disable some breakpoints.\n\
13942 Arguments are breakpoint numbers with spaces in between.\n\
13943 To disable all breakpoints, give no argument.\n\
13944 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
13945                   &disablelist, "disable ", 1, &cmdlist);
13946   add_com_alias ("dis", "disable", class_breakpoint, 1);
13947   add_com_alias ("disa", "disable", class_breakpoint, 1);
13948   if (xdb_commands)
13949     add_com ("sb", class_breakpoint, disable_command, _("\
13950 Disable some breakpoints.\n\
13951 Arguments are breakpoint numbers with spaces in between.\n\
13952 To disable all breakpoints, give no argument.\n\
13953 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
13954
13955   add_cmd ("breakpoints", class_alias, disable_command, _("\
13956 Disable some breakpoints.\n\
13957 Arguments are breakpoint numbers with spaces in between.\n\
13958 To disable all breakpoints, give no argument.\n\
13959 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
13960 This command may be abbreviated \"disable\"."),
13961            &disablelist);
13962
13963   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
13964 Delete some breakpoints or auto-display expressions.\n\
13965 Arguments are breakpoint numbers with spaces in between.\n\
13966 To delete all breakpoints, give no argument.\n\
13967 \n\
13968 Also a prefix command for deletion of other GDB objects.\n\
13969 The \"unset\" command is also an alias for \"delete\"."),
13970                   &deletelist, "delete ", 1, &cmdlist);
13971   add_com_alias ("d", "delete", class_breakpoint, 1);
13972   add_com_alias ("del", "delete", class_breakpoint, 1);
13973   if (xdb_commands)
13974     add_com ("db", class_breakpoint, delete_command, _("\
13975 Delete some breakpoints.\n\
13976 Arguments are breakpoint numbers with spaces in between.\n\
13977 To delete all breakpoints, give no argument.\n"));
13978
13979   add_cmd ("breakpoints", class_alias, delete_command, _("\
13980 Delete some breakpoints or auto-display expressions.\n\
13981 Arguments are breakpoint numbers with spaces in between.\n\
13982 To delete all breakpoints, give no argument.\n\
13983 This command may be abbreviated \"delete\"."),
13984            &deletelist);
13985
13986   add_com ("clear", class_breakpoint, clear_command, _("\
13987 Clear breakpoint at specified line or function.\n\
13988 Argument may be line number, function name, or \"*\" and an address.\n\
13989 If line number is specified, all breakpoints in that line are cleared.\n\
13990 If function is specified, breakpoints at beginning of function are cleared.\n\
13991 If an address is specified, breakpoints at that address are cleared.\n\
13992 \n\
13993 With no argument, clears all breakpoints in the line that the selected frame\n\
13994 is executing in.\n\
13995 \n\
13996 See also the \"delete\" command which clears breakpoints by number."));
13997   add_com_alias ("cl", "clear", class_breakpoint, 1);
13998
13999   c = add_com ("break", class_breakpoint, break_command, _("\
14000 Set breakpoint at specified line or function.\n"
14001 BREAK_ARGS_HELP ("break")));
14002   set_cmd_completer (c, location_completer);
14003
14004   add_com_alias ("b", "break", class_run, 1);
14005   add_com_alias ("br", "break", class_run, 1);
14006   add_com_alias ("bre", "break", class_run, 1);
14007   add_com_alias ("brea", "break", class_run, 1);
14008
14009   if (xdb_commands)
14010    add_com_alias ("ba", "break", class_breakpoint, 1);
14011
14012   if (dbx_commands)
14013     {
14014       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
14015 Break in function/address or break at a line in the current file."),
14016                              &stoplist, "stop ", 1, &cmdlist);
14017       add_cmd ("in", class_breakpoint, stopin_command,
14018                _("Break in function or address."), &stoplist);
14019       add_cmd ("at", class_breakpoint, stopat_command,
14020                _("Break at a line in the current file."), &stoplist);
14021       add_com ("status", class_info, breakpoints_info, _("\
14022 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
14023 The \"Type\" column indicates one of:\n\
14024 \tbreakpoint     - normal breakpoint\n\
14025 \twatchpoint     - watchpoint\n\
14026 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
14027 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
14028 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
14029 address and file/line number respectively.\n\
14030 \n\
14031 Convenience variable \"$_\" and default examine address for \"x\"\n\
14032 are set to the address of the last breakpoint listed unless the command\n\
14033 is prefixed with \"server \".\n\n\
14034 Convenience variable \"$bpnum\" contains the number of the last\n\
14035 breakpoint set."));
14036     }
14037
14038   add_info ("breakpoints", breakpoints_info, _("\
14039 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
14040 The \"Type\" column indicates one of:\n\
14041 \tbreakpoint     - normal breakpoint\n\
14042 \twatchpoint     - watchpoint\n\
14043 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
14044 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
14045 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
14046 address and file/line number respectively.\n\
14047 \n\
14048 Convenience variable \"$_\" and default examine address for \"x\"\n\
14049 are set to the address of the last breakpoint listed unless the command\n\
14050 is prefixed with \"server \".\n\n\
14051 Convenience variable \"$bpnum\" contains the number of the last\n\
14052 breakpoint set."));
14053
14054   add_info_alias ("b", "breakpoints", 1);
14055
14056   if (xdb_commands)
14057     add_com ("lb", class_breakpoint, breakpoints_info, _("\
14058 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
14059 The \"Type\" column indicates one of:\n\
14060 \tbreakpoint     - normal breakpoint\n\
14061 \twatchpoint     - watchpoint\n\
14062 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
14063 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
14064 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
14065 address and file/line number respectively.\n\
14066 \n\
14067 Convenience variable \"$_\" and default examine address for \"x\"\n\
14068 are set to the address of the last breakpoint listed unless the command\n\
14069 is prefixed with \"server \".\n\n\
14070 Convenience variable \"$bpnum\" contains the number of the last\n\
14071 breakpoint set."));
14072
14073   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
14074 Status of all breakpoints, or breakpoint number NUMBER.\n\
14075 The \"Type\" column indicates one of:\n\
14076 \tbreakpoint     - normal breakpoint\n\
14077 \twatchpoint     - watchpoint\n\
14078 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
14079 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
14080 \tuntil          - internal breakpoint used by the \"until\" command\n\
14081 \tfinish         - internal breakpoint used by the \"finish\" command\n\
14082 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
14083 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
14084 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
14085 address and file/line number respectively.\n\
14086 \n\
14087 Convenience variable \"$_\" and default examine address for \"x\"\n\
14088 are set to the address of the last breakpoint listed unless the command\n\
14089 is prefixed with \"server \".\n\n\
14090 Convenience variable \"$bpnum\" contains the number of the last\n\
14091 breakpoint set."),
14092            &maintenanceinfolist);
14093
14094   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
14095 Set catchpoints to catch events."),
14096                   &catch_cmdlist, "catch ",
14097                   0/*allow-unknown*/, &cmdlist);
14098
14099   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
14100 Set temporary catchpoints to catch events."),
14101                   &tcatch_cmdlist, "tcatch ",
14102                   0/*allow-unknown*/, &cmdlist);
14103
14104   /* Add catch and tcatch sub-commands.  */
14105   add_catch_command ("catch", _("\
14106 Catch an exception, when caught."),
14107                      catch_catch_command,
14108                      NULL,
14109                      CATCH_PERMANENT,
14110                      CATCH_TEMPORARY);
14111   add_catch_command ("throw", _("\
14112 Catch an exception, when thrown."),
14113                      catch_throw_command,
14114                      NULL,
14115                      CATCH_PERMANENT,
14116                      CATCH_TEMPORARY);
14117   add_catch_command ("fork", _("Catch calls to fork."),
14118                      catch_fork_command_1,
14119                      NULL,
14120                      (void *) (uintptr_t) catch_fork_permanent,
14121                      (void *) (uintptr_t) catch_fork_temporary);
14122   add_catch_command ("vfork", _("Catch calls to vfork."),
14123                      catch_fork_command_1,
14124                      NULL,
14125                      (void *) (uintptr_t) catch_vfork_permanent,
14126                      (void *) (uintptr_t) catch_vfork_temporary);
14127   add_catch_command ("exec", _("Catch calls to exec."),
14128                      catch_exec_command_1,
14129                      NULL,
14130                      CATCH_PERMANENT,
14131                      CATCH_TEMPORARY);
14132   add_catch_command ("syscall", _("\
14133 Catch system calls by their names and/or numbers.\n\
14134 Arguments say which system calls to catch.  If no arguments\n\
14135 are given, every system call will be caught.\n\
14136 Arguments, if given, should be one or more system call names\n\
14137 (if your system supports that), or system call numbers."),
14138                      catch_syscall_command_1,
14139                      catch_syscall_completer,
14140                      CATCH_PERMANENT,
14141                      CATCH_TEMPORARY);
14142
14143   c = add_com ("watch", class_breakpoint, watch_command, _("\
14144 Set a watchpoint for an expression.\n\
14145 Usage: watch [-l|-location] EXPRESSION\n\
14146 A watchpoint stops execution of your program whenever the value of\n\
14147 an expression changes.\n\
14148 If -l or -location is given, this evaluates EXPRESSION and watches\n\
14149 the memory to which it refers."));
14150   set_cmd_completer (c, expression_completer);
14151
14152   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
14153 Set a read watchpoint for an expression.\n\
14154 Usage: rwatch [-l|-location] EXPRESSION\n\
14155 A watchpoint stops execution of your program whenever the value of\n\
14156 an expression is read.\n\
14157 If -l or -location is given, this evaluates EXPRESSION and watches\n\
14158 the memory to which it refers."));
14159   set_cmd_completer (c, expression_completer);
14160
14161   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
14162 Set a watchpoint for an expression.\n\
14163 Usage: awatch [-l|-location] EXPRESSION\n\
14164 A watchpoint stops execution of your program whenever the value of\n\
14165 an expression is either read or written.\n\
14166 If -l or -location is given, this evaluates EXPRESSION and watches\n\
14167 the memory to which it refers."));
14168   set_cmd_completer (c, expression_completer);
14169
14170   add_info ("watchpoints", watchpoints_info, _("\
14171 Status of specified watchpoints (all watchpoints if no argument)."));
14172
14173   /* XXX: cagney/2005-02-23: This should be a boolean, and should
14174      respond to changes - contrary to the description.  */
14175   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
14176                             &can_use_hw_watchpoints, _("\
14177 Set debugger's willingness to use watchpoint hardware."), _("\
14178 Show debugger's willingness to use watchpoint hardware."), _("\
14179 If zero, gdb will not use hardware for new watchpoints, even if\n\
14180 such is available.  (However, any hardware watchpoints that were\n\
14181 created before setting this to nonzero, will continue to use watchpoint\n\
14182 hardware.)"),
14183                             NULL,
14184                             show_can_use_hw_watchpoints,
14185                             &setlist, &showlist);
14186
14187   can_use_hw_watchpoints = 1;
14188
14189   /* Tracepoint manipulation commands.  */
14190
14191   c = add_com ("trace", class_breakpoint, trace_command, _("\
14192 Set a tracepoint at specified line or function.\n\
14193 \n"
14194 BREAK_ARGS_HELP ("trace") "\n\
14195 Do \"help tracepoints\" for info on other tracepoint commands."));
14196   set_cmd_completer (c, location_completer);
14197
14198   add_com_alias ("tp", "trace", class_alias, 0);
14199   add_com_alias ("tr", "trace", class_alias, 1);
14200   add_com_alias ("tra", "trace", class_alias, 1);
14201   add_com_alias ("trac", "trace", class_alias, 1);
14202
14203   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
14204 Set a fast tracepoint at specified line or function.\n\
14205 \n"
14206 BREAK_ARGS_HELP ("ftrace") "\n\
14207 Do \"help tracepoints\" for info on other tracepoint commands."));
14208   set_cmd_completer (c, location_completer);
14209
14210   c = add_com ("strace", class_breakpoint, strace_command, _("\
14211 Set a static tracepoint at specified line, function or marker.\n\
14212 \n\
14213 strace [LOCATION] [if CONDITION]\n\
14214 LOCATION may be a line number, function name, \"*\" and an address,\n\
14215 or -m MARKER_ID.\n\
14216 If a line number is specified, probe the marker at start of code\n\
14217 for that line.  If a function is specified, probe the marker at start\n\
14218 of code for that function.  If an address is specified, probe the marker\n\
14219 at that exact address.  If a marker id is specified, probe the marker\n\
14220 with that name.  With no LOCATION, uses current execution address of\n\
14221 the selected stack frame.\n\
14222 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
14223 This collects arbitrary user data passed in the probe point call to the\n\
14224 tracing library.  You can inspect it when analyzing the trace buffer,\n\
14225 by printing the $_sdata variable like any other convenience variable.\n\
14226 \n\
14227 CONDITION is a boolean expression.\n\
14228 \n\
14229 Multiple tracepoints at one place are permitted, and useful if their\n\
14230 conditions are different.\n\
14231 \n\
14232 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
14233 Do \"help tracepoints\" for info on other tracepoint commands."));
14234   set_cmd_completer (c, location_completer);
14235
14236   add_info ("tracepoints", tracepoints_info, _("\
14237 Status of specified tracepoints (all tracepoints if no argument).\n\
14238 Convenience variable \"$tpnum\" contains the number of the\n\
14239 last tracepoint set."));
14240
14241   add_info_alias ("tp", "tracepoints", 1);
14242
14243   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
14244 Delete specified tracepoints.\n\
14245 Arguments are tracepoint numbers, separated by spaces.\n\
14246 No argument means delete all tracepoints."),
14247            &deletelist);
14248
14249   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
14250 Disable specified tracepoints.\n\
14251 Arguments are tracepoint numbers, separated by spaces.\n\
14252 No argument means disable all tracepoints."),
14253            &disablelist);
14254   deprecate_cmd (c, "disable");
14255
14256   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
14257 Enable specified tracepoints.\n\
14258 Arguments are tracepoint numbers, separated by spaces.\n\
14259 No argument means enable all tracepoints."),
14260            &enablelist);
14261   deprecate_cmd (c, "enable");
14262
14263   add_com ("passcount", class_trace, trace_pass_command, _("\
14264 Set the passcount for a tracepoint.\n\
14265 The trace will end when the tracepoint has been passed 'count' times.\n\
14266 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
14267 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
14268
14269   add_prefix_cmd ("save", class_breakpoint, save_command,
14270                   _("Save breakpoint definitions as a script."),
14271                   &save_cmdlist, "save ",
14272                   0/*allow-unknown*/, &cmdlist);
14273
14274   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
14275 Save current breakpoint definitions as a script.\n\
14276 This includes all types of breakpoints (breakpoints, watchpoints,\n\
14277 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
14278 session to restore them."),
14279                &save_cmdlist);
14280   set_cmd_completer (c, filename_completer);
14281
14282   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
14283 Save current tracepoint definitions as a script.\n\
14284 Use the 'source' command in another debug session to restore them."),
14285                &save_cmdlist);
14286   set_cmd_completer (c, filename_completer);
14287
14288   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
14289   deprecate_cmd (c, "save tracepoints");
14290
14291   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
14292 Breakpoint specific settings\n\
14293 Configure various breakpoint-specific variables such as\n\
14294 pending breakpoint behavior"),
14295                   &breakpoint_set_cmdlist, "set breakpoint ",
14296                   0/*allow-unknown*/, &setlist);
14297   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
14298 Breakpoint specific settings\n\
14299 Configure various breakpoint-specific variables such as\n\
14300 pending breakpoint behavior"),
14301                   &breakpoint_show_cmdlist, "show breakpoint ",
14302                   0/*allow-unknown*/, &showlist);
14303
14304   add_setshow_auto_boolean_cmd ("pending", no_class,
14305                                 &pending_break_support, _("\
14306 Set debugger's behavior regarding pending breakpoints."), _("\
14307 Show debugger's behavior regarding pending breakpoints."), _("\
14308 If on, an unrecognized breakpoint location will cause gdb to create a\n\
14309 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
14310 an error.  If auto, an unrecognized breakpoint location results in a\n\
14311 user-query to see if a pending breakpoint should be created."),
14312                                 NULL,
14313                                 show_pending_break_support,
14314                                 &breakpoint_set_cmdlist,
14315                                 &breakpoint_show_cmdlist);
14316
14317   pending_break_support = AUTO_BOOLEAN_AUTO;
14318
14319   add_setshow_boolean_cmd ("auto-hw", no_class,
14320                            &automatic_hardware_breakpoints, _("\
14321 Set automatic usage of hardware breakpoints."), _("\
14322 Show automatic usage of hardware breakpoints."), _("\
14323 If set, the debugger will automatically use hardware breakpoints for\n\
14324 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
14325 a warning will be emitted for such breakpoints."),
14326                            NULL,
14327                            show_automatic_hardware_breakpoints,
14328                            &breakpoint_set_cmdlist,
14329                            &breakpoint_show_cmdlist);
14330
14331   add_setshow_enum_cmd ("always-inserted", class_support,
14332                         always_inserted_enums, &always_inserted_mode, _("\
14333 Set mode for inserting breakpoints."), _("\
14334 Show mode for inserting breakpoints."), _("\
14335 When this mode is off, breakpoints are inserted in inferior when it is\n\
14336 resumed, and removed when execution stops.  When this mode is on,\n\
14337 breakpoints are inserted immediately and removed only when the user\n\
14338 deletes the breakpoint.  When this mode is auto (which is the default),\n\
14339 the behaviour depends on the non-stop setting (see help set non-stop).\n\
14340 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
14341 behaves as if always-inserted mode is on; if gdb is controlling the\n\
14342 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
14343                            NULL,
14344                            &show_always_inserted_mode,
14345                            &breakpoint_set_cmdlist,
14346                            &breakpoint_show_cmdlist);
14347
14348   add_com ("break-range", class_breakpoint, break_range_command, _("\
14349 Set a breakpoint for an address range.\n\
14350 break-range START-LOCATION, END-LOCATION\n\
14351 where START-LOCATION and END-LOCATION can be one of the following:\n\
14352   LINENUM, for that line in the current file,\n\
14353   FILE:LINENUM, for that line in that file,\n\
14354   +OFFSET, for that number of lines after the current line\n\
14355            or the start of the range\n\
14356   FUNCTION, for the first line in that function,\n\
14357   FILE:FUNCTION, to distinguish among like-named static functions.\n\
14358   *ADDRESS, for the instruction at that address.\n\
14359 \n\
14360 The breakpoint will stop execution of the inferior whenever it executes\n\
14361 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
14362 range (including START-LOCATION and END-LOCATION)."));
14363
14364   automatic_hardware_breakpoints = 1;
14365
14366   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
14367 }